:root {
  --app-bg: #f4f7fa;
  --app-surface: #ffffff;
  --app-surface-muted: #f8fafc;
  --app-surface-soft: #eef6f4;
  --app-border: #d9e2ec;
  --app-border-strong: #c4ceda;
  --app-text: #182230;
  --app-heading: #101828;
  --app-muted: #667085;
  --app-primary: #1d4ed8;
  --app-primary-dark: #1e40af;
  --app-primary-soft: #e8f0ff;
  --app-accent: #0f766e;
  --app-accent-soft: #e7f6f3;
  --app-warning-soft: #fff7ed;
  --app-danger-soft: #fef2f2;
  --app-shadow-sm: 0 1px 2px rgba(16, 24, 40, 0.05);
  --app-shadow-md: 0 10px 24px rgba(16, 24, 40, 0.08);
}

* { box-sizing: border-box; }
html { background: var(--app-bg); }

body.app-shell {
  min-height: 100vh;
  background: var(--app-bg);
  color: var(--app-text);
  font-size: 14px;
  line-height: 1.5;
  text-rendering: optimizeLegibility;
}

body.app-shell::before {
  content: "";
  position: fixed;
  inset: 0 0 auto 0;
  height: 280px;
  pointer-events: none;
  background: linear-gradient(180deg, #ffffff 0%, #eef3f8 100%);
  z-index: -1;
}

.app-navbar {
  background: rgba(255, 255, 255, 0.98);
  border-bottom: 1px solid var(--app-border);
  box-shadow: 0 4px 18px rgba(16, 24, 40, 0.06);
  backdrop-filter: blur(8px);
}

.app-navbar-inner {
  max-width: 1680px;
  margin-left: auto;
  margin-right: auto;
}

.navbar-brand {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  color: var(--app-heading);
  letter-spacing: 0;
}

.brand-mark {
  width: 32px;
  height: 32px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 8px;
  background: var(--app-primary);
  color: #ffffff;
  font-size: 13px;
  font-weight: 700;
  box-shadow: inset 0 -1px 0 rgba(255, 255, 255, .25);
}

.navbar .nav-link {
  border-radius: 7px;
  color: #344054;
  font-weight: 500;
  padding: .48rem .72rem;
}

.navbar .nav-link:hover,
.navbar .nav-link:focus {
  background: var(--app-primary-soft);
  color: var(--app-primary-dark);
}

.navbar .nav-link.active,
.navbar .nav-link.show {
  background: var(--app-primary-soft);
  color: var(--app-primary-dark);
  font-weight: 700;
}

.dropdown-menu {
  border-color: var(--app-border);
  border-radius: 8px;
  box-shadow: var(--app-shadow-md);
  padding: .4rem;
}

.dropdown-item {
  border-radius: 6px;
  color: #344054;
  font-weight: 500;
}

.dropdown-item:hover,
.dropdown-item:focus,
.dropdown-item.active {
  background: var(--app-primary-soft);
  color: var(--app-primary-dark);
}

main.container-fluid {
  max-width: 1680px;
  position: relative;
}

h1, h2, h3, h4, h5, h6 {
  color: var(--app-heading);
  letter-spacing: 0;
}

h1 { font-size: 1.75rem; font-weight: 700; }
h2, .h2 { font-size: 1.35rem; font-weight: 700; }
h3, .h3, h4, .h4, h5, .h5 { font-weight: 700; }

a { color: var(--app-primary); }
a:hover { color: var(--app-primary-dark); }

.card {
  border: 1px solid var(--app-border);
  border-radius: 8px;
  box-shadow: var(--app-shadow-sm);
  overflow: hidden;
}

.card-header,
.card-footer {
  background: var(--app-surface-muted);
  border-color: var(--app-border);
}

.card-header {
  color: var(--app-heading);
  font-weight: 700;
}

.card-body { background: var(--app-surface); }

.app-footer {
  background: #ffffff;
  border-color: var(--app-border) !important;
}

.shadow-sm { box-shadow: var(--app-shadow-sm) !important; }

.btn {
  border-radius: 7px;
  font-weight: 600;
}

.btn-primary {
  --bs-btn-bg: var(--app-primary);
  --bs-btn-border-color: var(--app-primary);
  --bs-btn-hover-bg: var(--app-primary-dark);
  --bs-btn-hover-border-color: var(--app-primary-dark);
  --bs-btn-focus-shadow-rgb: 29, 78, 216;
}

.btn-outline-primary {
  --bs-btn-color: var(--app-primary);
  --bs-btn-border-color: #b7c9f7;
  --bs-btn-hover-bg: var(--app-primary);
  --bs-btn-hover-border-color: var(--app-primary);
}

.btn-outline-secondary {
  --bs-btn-color: #475467;
  --bs-btn-border-color: var(--app-border-strong);
  --bs-btn-hover-bg: #344054;
  --bs-btn-hover-border-color: #344054;
}

.form-control,
.form-select,
.accordion-item,
.accordion-button {
  border-color: var(--app-border);
  border-radius: 7px;
}

.form-control,
.form-select {
  color: var(--app-text);
  background-color: #ffffff;
}

.form-control::placeholder { color: #98a2b3; }

.form-control:focus,
.form-select:focus {
  border-color: #8fb4ff;
  box-shadow: 0 0 0 .2rem rgba(29, 78, 216, 0.12);
}

.form-label {
  color: #475467;
  font-size: 12px;
  font-weight: 700;
  margin-bottom: .35rem;
}

.input-group-text {
  border-color: var(--app-border);
  background: var(--app-surface-muted);
  color: #475467;
  font-weight: 600;
}

.table-responsive {
  border-radius: 0 0 8px 8px;
}

.table {
  --bs-table-striped-bg: #f8fbff;
  --bs-table-hover-bg: #eef4ff;
  margin-bottom: 0;
}

.table > :not(caption) > * > * {
  padding: .72rem .78rem;
  border-color: var(--app-border);
  vertical-align: top;
}

.table-sm > :not(caption) > * > * {
  padding: .55rem .66rem;
}

.table th {
  background: #f1f5f9;
  color: #344054;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0;
  white-space: nowrap;
}

.table td { color: var(--app-text); }
.table a { font-weight: 700; text-decoration: none; }
.table a:hover { text-decoration: underline; }
.table .text-muted { font-weight: 500; }

.badge {
  border-radius: 999px;
  font-weight: 700;
  padding: .35em .6em;
}

.alert {
  border-radius: 8px;
  border-color: var(--app-border);
}

.alert-info {
  color: #164e63;
  background: #ecfeff;
  border-color: #bae6fd;
}

.alert-warning {
  color: #7c2d12;
  background: var(--app-warning-soft);
  border-color: #fed7aa;
}

.pagination {
  gap: 4px;
  flex-wrap: wrap;
}

.page-link {
  border-color: var(--app-border);
  border-radius: 7px;
  color: var(--app-primary);
  font-weight: 600;
}

.active > .page-link,
.page-link.active {
  background: var(--app-primary);
  border-color: var(--app-primary);
}

.list-group-item {
  border-color: var(--app-border);
}

.list-group-item-action:hover,
.list-group-item-action:focus {
  background: #f8fbff;
}

.clean-text {
  color: var(--app-heading);
  font-size: 15px;
  line-height: 1.7;
  white-space: normal;
}

.clean-text p { margin-bottom: .8rem; }
.clean-text p:last-child { margin-bottom: 0; }

.source-row {
  background: #fbfdff;
  border-color: var(--app-border) !important;
}

img.img-fluid.border {
  border-color: var(--app-border) !important;
  border-radius: 7px;
  background: #ffffff;
}

.text-muted { color: var(--app-muted) !important; }
.small, small { line-height: 1.45; }

.accordion-button:not(.collapsed) {
  color: var(--app-primary-dark);
  background: var(--app-primary-soft);
  box-shadow: inset 0 calc(-1 * var(--bs-accordion-border-width)) 0 var(--app-border);
}

.accordion-button:focus {
  border-color: #8fb4ff;
  box-shadow: 0 0 0 .2rem rgba(29, 78, 216, 0.12);
}

.card .display-6,
.card .fs-2,
.card .fs-3 {
  color: var(--app-heading);
  letter-spacing: 0;
}

.row.g-3 > [class*="col-"] > .card,
.row.g-4 > [class*="col-"] > .card {
  height: 100%;
}

@media (min-width: 992px) {
  .navbar-nav { gap: .2rem; }
}

@media (max-width: 768px) {
  main.container-fluid {
    padding-left: 1rem !important;
    padding-right: 1rem !important;
  }

  .app-navbar-inner {
    padding-left: 1rem !important;
    padding-right: 1rem !important;
  }

  .navbar-nav { padding-top: .5rem; }
  .card-body.d-flex { flex-direction: column; }
  .table { font-size: 13px; }
  h1 { font-size: 1.45rem; }
  h2, .h2 { font-size: 1.2rem; }
}


.app-breadcrumbs {
  color: var(--app-muted);
  font-size: 13px;
}
.app-breadcrumbs .breadcrumb { align-items: center; }
.app-breadcrumbs .breadcrumb-item + .breadcrumb-item::before { color: #98a2b3; }
.app-breadcrumbs a { color: #475467; text-decoration: none; font-weight: 600; }
.app-breadcrumbs a:hover { color: var(--app-primary); text-decoration: underline; }
.app-breadcrumbs .active { color: var(--app-muted); }
