/*
 * Armada IDP Intelligence — Django admin theme (Jazzmin reskin)
 *
 * Reskins Jazzmin's AdminLTE4/Bootstrap5 base to the Armada IDP dark/teal
 * design system (.claude/ui/skill.md). Loaded after adminlte.min.css,
 * the (default/no-op) bootswatch theme, and jazzmin/css/main.css — see
 * admin/base.html — so these overrides win the cascade.
 *
 * Strategy: Bootstrap 5.3 bakes literal hex into *some* component-local
 * custom properties (e.g. .btn-primary's --bs-btn-bg) rather than
 * referencing --bs-primary at the point of use, so a handful of
 * components need direct overrides in addition to the root-level tokens.
 */

@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap');

/* ── Armada design tokens ──────────────────────────────────────────── */
:root {
  --armada-bg: #06161B;
  --armada-mid: #0b1d23;
  --armada-fore: #192a30;
  --armada-border: #2a3d45;
  --armada-border-faint: rgba(42, 61, 69, 0.6);

  --armada-text-primary: #e6f0f3;
  --armada-text-secondary: rgba(230, 240, 243, 0.45);
  --armada-text-dim: rgba(230, 240, 243, 0.35);

  --armada-brand: #20C7C7;
  --armada-success: #34D399;
  --armada-warning: #FBBF24;
  --armada-danger: #F87171;
  --armada-info: #60A5FA;
  --armada-purple: #8b5cf6;

  --armada-font: 'Inter', 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
}

/* ── Core surface & text variables (cascades into cards/forms/tables) ─ */
:root,
[data-bs-theme="dark"] {
  --bs-body-bg: var(--armada-bg);
  --bs-body-bg-rgb: 6, 22, 27;
  --bs-body-color: var(--armada-text-primary);
  --bs-body-color-rgb: 230, 240, 243;
  --bs-body-font-family: var(--armada-font);
  --bs-emphasis-color: var(--armada-text-primary);
  --bs-secondary-color: var(--armada-text-secondary);
  --bs-secondary-bg: var(--armada-mid);
  --bs-secondary-bg-rgb: 11, 29, 35;
  --bs-tertiary-color: var(--armada-text-dim);
  --bs-tertiary-bg: var(--armada-fore);
  --bs-tertiary-bg-rgb: 25, 42, 48;
  --bs-border-color: var(--armada-border);
  --bs-border-color-translucent: var(--armada-border-faint);
  --bs-link-color: var(--armada-brand);
  --bs-link-color-rgb: 32, 199, 199;
  --bs-link-hover-color: var(--armada-brand);
  --bs-heading-color: var(--armada-text-primary);

  /* Base theme colors + rgb companions (drives .text-bg-*, spinners, form validation icons) */
  --bs-primary: var(--armada-brand);
  --bs-primary-rgb: 32, 199, 199;
  --bs-success: var(--armada-success);
  --bs-success-rgb: 52, 211, 153;
  --bs-warning: var(--armada-warning);
  --bs-warning-rgb: 251, 191, 36;
  --bs-danger: var(--armada-danger);
  --bs-danger-rgb: 248, 113, 113;
  --bs-info: var(--armada-info);
  --bs-info-rgb: 96, 165, 250;

  /* Subtle/emphasis/border-subtle triplets — same recipe as the badge
     system below, used by Bootstrap's alerts, callouts, and .text-bg-*-subtle */
  --bs-primary-text-emphasis: var(--armada-brand);
  --bs-primary-bg-subtle: rgba(32, 199, 199, 0.12);
  --bs-primary-border-subtle: rgba(32, 199, 199, 0.30);
  --bs-success-text-emphasis: var(--armada-success);
  --bs-success-bg-subtle: rgba(52, 211, 153, 0.12);
  --bs-success-border-subtle: rgba(52, 211, 153, 0.25);
  --bs-warning-text-emphasis: var(--armada-warning);
  --bs-warning-bg-subtle: rgba(251, 191, 36, 0.12);
  --bs-warning-border-subtle: rgba(251, 191, 36, 0.25);
  --bs-danger-text-emphasis: var(--armada-danger);
  --bs-danger-bg-subtle: rgba(248, 113, 113, 0.12);
  --bs-danger-border-subtle: rgba(248, 113, 113, 0.25);
  --bs-info-text-emphasis: var(--armada-info);
  --bs-info-bg-subtle: rgba(96, 165, 250, 0.12);
  --bs-info-border-subtle: rgba(96, 165, 250, 0.25);
}

html, body {
  background-color: var(--armada-bg) !important;
  font-family: var(--armada-font);
}
/* jazzmin's <body> carries the .bg-body-tertiary utility class, whose
   rgba(var(--bs-tertiary-bg-rgb), ...) resolves to a muddy grey — a class
   selector beats the plain `body` rule above even with !important, so
   this needs the extra element+class specificity to actually win. */
body.bg-body-tertiary {
  background-color: var(--armada-bg) !important;
}

/* ── Cards & panels ─────────────────────────────────────────────────── */
.card {
  --bs-card-bg: var(--armada-mid);
  --bs-card-border-color: var(--armada-border);
  --bs-card-cap-bg: rgba(230, 240, 243, 0.03);
  --bs-card-cap-color: var(--armada-text-secondary);
  border-radius: 12px;
  transition: border-color 0.15s ease;
}
.card:hover {
  border-color: rgba(32, 199, 199, 0.25);
}
.small-box, .info-box {
  background: var(--armada-mid) !important;
  border: 1px solid var(--armada-border);
  border-radius: 12px;
}

/* ── App header (top navbar) ───────────────────────────────────────── */
.app-header {
  background-color: var(--armada-mid) !important;
  border-bottom: 1px solid var(--armada-border);
}
.app-header .nav-link {
  color: var(--armada-text-secondary);
  transition: color 0.15s ease;
}
.app-header .nav-link:hover, .app-header .nav-link:focus {
  color: var(--armada-text-primary);
}
.brand-link {
  color: var(--armada-text-primary) !important;
  font-weight: 600;
}
/* Icon-only sidebar brand — no site name text next to the logo */
.brand-text {
  display: none !important;
}

/* ── Sidebar ────────────────────────────────────────────────────────── */
.app-sidebar {
  --lte-sidebar-hover-bg: var(--armada-fore);
  --lte-sidebar-hover-color: var(--armada-text-primary);
  --lte-sidebar-color: var(--armada-text-secondary);
  --lte-sidebar-active-color: var(--armada-text-primary);
  --lte-sidebar-menu-active-bg: rgba(32, 199, 199, 0.15);
  --lte-sidebar-menu-active-color: var(--armada-brand);
  --lte-sidebar-submenu-bg: transparent;
  --lte-sidebar-submenu-color: var(--armada-text-secondary);
  --lte-sidebar-submenu-hover-bg: var(--armada-fore);
  --lte-sidebar-submenu-hover-color: var(--armada-text-primary);
  --lte-sidebar-submenu-active-bg: rgba(32, 199, 199, 0.12);
  --lte-sidebar-submenu-active-color: var(--armada-brand);
  --lte-sidebar-header-color: var(--armada-text-dim);
  background-color: var(--armada-mid) !important;
  border-right: 1px solid var(--armada-border);
}
.app-sidebar .nav-link {
  border-radius: 8px;
  margin: 1px 8px;
  transition: background-color 0.15s ease, color 0.15s ease;
}
.app-sidebar .nav-header {
  color: var(--armada-text-dim);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.app-sidebar .nav-icon {
  opacity: 0.75;
}
.app-sidebar .nav-link.active .nav-icon {
  opacity: 1;
}

/* ── Buttons — component-local vars, must be set directly ─────────────
   (Bootstrap bakes literal colors into .btn-* rather than var(--bs-primary)) */
.btn {
  border-radius: 8px;
  font-weight: 600;
  transition: filter 0.15s ease, background-color 0.15s ease, border-color 0.15s ease;
}
.btn-primary {
  --bs-btn-color: var(--armada-bg);
  --bs-btn-bg: var(--armada-brand);
  --bs-btn-border-color: var(--armada-brand);
  --bs-btn-hover-color: var(--armada-bg);
  --bs-btn-hover-bg: #35d4d4;
  --bs-btn-hover-border-color: #35d4d4;
  --bs-btn-active-color: var(--armada-bg);
  --bs-btn-active-bg: #1ab3b3;
  --bs-btn-active-border-color: #1ab3b3;
  --bs-btn-disabled-bg: var(--armada-brand);
  --bs-btn-disabled-border-color: var(--armada-brand);
}
.btn-success {
  --bs-btn-color: #06161B;
  --bs-btn-bg: var(--armada-success);
  --bs-btn-border-color: var(--armada-success);
  --bs-btn-hover-color: #06161B;
  --bs-btn-hover-bg: #4ade9f;
  --bs-btn-hover-border-color: #4ade9f;
  --bs-btn-active-color: #06161B;
  --bs-btn-active-bg: #26b382;
  --bs-btn-active-border-color: #26b382;
}
.btn-warning {
  --bs-btn-color: #06161B;
  --bs-btn-bg: var(--armada-warning);
  --bs-btn-border-color: var(--armada-warning);
  --bs-btn-hover-color: #06161B;
  --bs-btn-hover-bg: #fcc94f;
  --bs-btn-hover-border-color: #fcc94f;
  --bs-btn-active-color: #06161B;
  --bs-btn-active-bg: #e0a80f;
  --bs-btn-active-border-color: #e0a80f;
}
.btn-danger {
  --bs-btn-color: #06161B;
  --bs-btn-bg: var(--armada-danger);
  --bs-btn-border-color: var(--armada-danger);
  --bs-btn-hover-color: #06161B;
  --bs-btn-hover-bg: #f99a9a;
  --bs-btn-hover-border-color: #f99a9a;
  --bs-btn-active-color: #06161B;
  --bs-btn-active-bg: #f45252;
  --bs-btn-active-border-color: #f45252;
}
.btn-info {
  --bs-btn-color: #06161B;
  --bs-btn-bg: var(--armada-info);
  --bs-btn-border-color: var(--armada-info);
  --bs-btn-hover-color: #06161B;
  --bs-btn-hover-bg: #7fb5fb;
  --bs-btn-hover-border-color: #7fb5fb;
}
.btn-secondary, .btn-outline-secondary {
  --bs-btn-color: var(--armada-text-primary);
  --bs-btn-bg: var(--armada-fore);
  --bs-btn-border-color: var(--armada-border);
  --bs-btn-hover-color: var(--armada-text-primary);
  --bs-btn-hover-bg: #223640;
  --bs-btn-hover-border-color: rgba(32, 199, 199, 0.3);
}
.btn:hover { filter: brightness(1.03); }
.btn:disabled, .btn.disabled { opacity: 0.4; }

/* ── Forms ──────────────────────────────────────────────────────────── */
/* jazzmin only swaps <select> for select2 (see widgets.py) — plain text
   inputs/textareas keep Django admin's native vTextField/vLargeTextField
   classes (or no class at all, e.g. the password fields), not
   .form-control. Give them the same bootstrap-style treatment directly. */
.form-control, .form-select,
.vTextField, .vLargeTextField, .vIntegerField, .vBigIntegerField, .vURLField,
.vEmailField, .vUUIDField, .vDateField, .vTimeField, .vForeignKeyRawIdAdminField,
input[type="text"], input[type="password"], input[type="email"], input[type="number"],
input[type="url"], input[type="search"], input[type="tel"], textarea, textarea.vLargeTextField {
  background-color: var(--armada-fore);
  border: 1px solid var(--armada-border);
  border-radius: 8px;
  color: var(--armada-text-primary);
  padding: 7px 12px;
  font-size: 13px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.form-control:focus, .form-select:focus,
.vTextField:focus, .vLargeTextField:focus, .vIntegerField:focus, .vBigIntegerField:focus,
.vURLField:focus, .vEmailField:focus, .vUUIDField:focus, .vDateField:focus, .vTimeField:focus,
input[type="text"]:focus, input[type="password"]:focus, input[type="email"]:focus,
input[type="number"]:focus, input[type="url"]:focus, input[type="search"]:focus,
input[type="tel"]:focus, textarea:focus {
  background-color: var(--armada-fore);
  color: var(--armada-text-primary);
  border-color: var(--armada-brand);
  outline: none;
  box-shadow: 0 0 0 0.2rem rgba(32, 199, 199, 0.25);
}
.form-control::placeholder, textarea::placeholder, input::placeholder {
  color: var(--armada-text-dim);
}
.help, .helptext, p.help {
  color: var(--armada-text-dim);
  font-size: 11px;
}
.errorlist {
  color: var(--armada-danger);
  font-size: 12px;
}
.errornote, .errorlist { border-color: var(--armada-danger); }
label, .form-label {
  color: var(--armada-text-secondary);
  font-size: 12px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.input-group-text {
  background-color: var(--armada-fore);
  border-color: var(--armada-border);
  color: var(--armada-text-secondary);
}
/* jazzmin ships the classic select2 theme (select2-container--default),
   not the bootstrap5 variant */
.select2-container--default .select2-selection--single,
.select2-container--default .select2-selection--multiple {
  background-color: var(--armada-fore) !important;
  border-color: var(--armada-border) !important;
  color: var(--armada-text-primary) !important;
}
.select2-container--default .select2-selection--single .select2-selection__rendered,
.select2-container--default .select2-selection--single .select2-selection__arrow b {
  color: var(--armada-text-primary) !important;
}
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--focus .select2-selection--multiple {
  border-color: var(--armada-brand) !important;
  box-shadow: 0 0 0 0.2rem rgba(32, 199, 199, 0.25);
}
.select2-container--default .select2-selection--multiple .select2-selection__choice {
  background-color: rgba(32, 199, 199, 0.15) !important;
  border: 1px solid rgba(32, 199, 199, 0.3) !important;
  color: var(--armada-brand) !important;
  border-radius: 6px !important;
}
.select2-container--default .select2-results__option--highlighted[aria-selected] {
  background-color: var(--armada-brand) !important;
  color: var(--armada-bg) !important;
}
.select2-dropdown {
  background-color: var(--armada-mid) !important;
  border-color: var(--armada-border) !important;
}
.select2-search__field {
  background-color: var(--armada-fore) !important;
  color: var(--armada-text-primary) !important;
}
/* Consistent sizing/shape to match .form-control — select2's default is
   a slightly different height/radius than everything else, which is
   part of why the filter dropdowns read as "off" next to plain buttons */
.select2-container {
  min-width: 160px;
}
.select2-container--default .select2-selection--single {
  height: 34px !important;
  border-radius: 8px !important;
  display: flex;
  align-items: center;
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
  padding-left: 12px;
  line-height: 32px !important;
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
  height: 32px !important;
}
.select2-results__option {
  border-radius: 6px;
  margin: 1px 4px;
  padding: 6px 10px !important;
}
.select2-search--dropdown {
  padding: 8px;
}
.select2-search--dropdown .select2-search__field {
  border: 1px solid var(--armada-border) !important;
  border-radius: 6px;
  padding: 5px 8px;
}

/* ── Changelist filter bar (list_filter selects, jazzmin's search-filter
   feature) — flex row with consistent spacing/alignment ──────────────── */
#change-list-filters {
  background-color: var(--armada-mid);
  border: 1px solid var(--armada-border);
  border-radius: 10px;
  padding: 12px !important;
}
#change-list-filters .form-group {
  margin-bottom: 0;
}
#change-list-filters .form-group label {
  display: none; /* the <option value=""> placeholder already names the field */
}
#changelist-search {
  gap: 10px !important;
}
#changelist-search .button, #changelist-search input[type="submit"] {
  border-radius: 8px;
  background-color: var(--armada-fore);
  border: 1px solid var(--armada-border);
  color: var(--armada-text-primary);
}
#changelist-search .button:hover {
  border-color: rgba(32, 199, 199, 0.3);
}

/* ── Bulk-actions dropdown above the changelist table ──────────────────── */
.change-list-actions .form-control {
  min-width: 200px;
}
.change-list-actions button, .change-list-actions .button {
  border-radius: 8px;
}

/* ── Tables ─────────────────────────────────────────────────────────── */
.table {
  --bs-table-color: var(--armada-text-primary);
  --bs-table-bg: transparent;
  --bs-table-border-color: var(--armada-border);
  --bs-table-striped-bg: var(--armada-fore);
  --bs-table-hover-bg: rgba(255, 255, 255, 0.03);
}
.table thead th {
  color: var(--armada-text-secondary);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-bottom-color: var(--armada-border);
}

/* ── Links, breadcrumbs, pagination ─────────────────────────────────── */
a { color: var(--armada-brand); }
a:hover { color: #35d4d4; }
.breadcrumb-item a { color: var(--armada-text-secondary); }
.breadcrumb-item.active { color: var(--armada-text-primary); }
.page-link {
  background-color: var(--armada-mid);
  border-color: var(--armada-border);
  color: var(--armada-text-secondary);
}
.page-item.active .page-link {
  background-color: var(--armada-brand);
  border-color: var(--armada-brand);
  color: var(--armada-bg);
}

/* ── Django's own changelist table (#result_list) — more specific than
   .table above, so it wins for the actual admin list view ────────────── */
#result_list {
  background-color: transparent;
  color: var(--armada-text-primary);
  border: 1px solid var(--armada-border);
}
#result_list thead th {
  background-color: var(--armada-mid);
  color: var(--armada-text-secondary);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-bottom: 1px solid var(--armada-border);
  padding: 10px 15px;
}
#result_list tbody tr {
  background-color: transparent;
  border-bottom: 1px solid var(--armada-border-faint);
  transition: background-color 0.15s ease;
}
#result_list tbody tr.even { background-color: rgba(255, 255, 255, 0.015); }
#result_list tbody tr:hover { background-color: rgba(32, 199, 199, 0.06); }
#result_list tbody td, #result_list tbody th {
  color: var(--armada-text-primary);
  padding: 8px 15px;
}
#result_list tbody th a, #result_list tbody td a { color: var(--armada-brand); }

/* ── Sidebar brand link / logo — icon only, no brand text ─────────────── */
#jazzy-logo {
  border-bottom: 1px solid var(--armada-border);
  padding-bottom: 12px;
  justify-content: center;
}
#jazzy-logo .brand-image {
  border-radius: 0 !important;
  max-height: 34px;
  width: auto;
  margin-right: 0;
}

/* ── Logged-in user panel — removed from sidebar entirely; the username
   is injected next to the profile icon in the top navbar instead, see
   admin-theme.js */
.user-panel {
  display: none !important;
}

/* ── Profile icon (top-right navbar) — username label injected by JS ──── */
.navbar-user-label {
  color: var(--armada-text-secondary);
  font-size: 13px;
  font-weight: 600;
  margin-right: 6px;
  white-space: nowrap;
}
li.nav-item.dropdown > a.nav-link.btn {
  display: flex;
  align-items: center;
  gap: 4px;
}

/* ── Footer ─────────────────────────────────────────────────────────────── */
.app-footer {
  background-color: var(--armada-mid);
  border-top: 1px solid var(--armada-border);
  color: var(--armada-text-dim);
  font-size: 12px;
}
/* "Jazzmin version 3.0.5" — no setting to remove it, hide via CSS */
.app-footer .float-end {
  display: none !important;
}

/* ── Change-form tabs (horizontal_tabs changeform_format) ─────────────── */
.nav-tabs {
  border-bottom: 1px solid var(--armada-border);
}
.nav-tabs .nav-link {
  color: var(--armada-text-secondary);
  border: none;
  border-bottom: 2px solid transparent;
  border-radius: 0;
  font-weight: 600;
  transition: color 0.15s ease, border-color 0.15s ease;
}
.nav-tabs .nav-link:hover {
  color: var(--armada-text-primary);
  border-bottom-color: var(--armada-border);
}
.nav-tabs .nav-link.active {
  background: transparent;
  color: var(--armada-brand);
  border-bottom-color: var(--armada-brand);
}

/* ── Horizontal filter widget (ManyToMany fields) ──────────────────────── */
.selector-available-title, .selector-selected-title, .selector-filter {
  background-color: var(--armada-fore);
  color: var(--armada-text-secondary);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 8px 12px;
  border-radius: 6px 6px 0 0;
}
.selector-available-title .helptext, .selector-selected-title .helptext {
  color: var(--armada-text-dim);
  font-size: 10px;
  text-transform: none;
  letter-spacing: normal;
}
.selector-chosen select, .selector-available select {
  background-color: var(--armada-fore);
  border-color: var(--armada-border);
  color: var(--armada-text-primary);
}

/* ── Object history timeline ───────────────────────────────────────────── */
.timeline .timeline-item {
  background-color: var(--armada-mid);
  color: var(--armada-text-primary);
  border: 1px solid var(--armada-border);
  border-radius: 8px;
}
.timeline .timeline-item .time { color: var(--armada-text-dim); }
.timeline .timeline-item a { color: var(--armada-brand); }
.timeline .timeline-item .timeline-header {
  border-bottom: 1px solid var(--armada-border);
  color: var(--armada-text-primary);
}

/* ── Change-view action buttons (History, Save, Delete row) ───────────── */
.object-tools .btn, .submit-row .btn {
  border-radius: 8px;
  font-weight: 600;
}

/* ── Callouts / alerts (already recolored via --bs-*-subtle above) ───── */
.callout { border-radius: 8px; }

/* ── Login page ─────────────────────────────────────────────────────── */
.login-page {
  background-color: var(--armada-bg) !important;
}
.login-box .card {
  border-radius: 16px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.4);
}
.login-box .brand-image, .login-logo img {
  max-height: 40px;
  width: auto;
}
.login-box-msg {
  color: var(--armada-text-secondary);
  font-size: 13px;
}

/* ── Scrollbars (Chromium) — subtle, dark-native ──────────────────────── */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background-color: var(--armada-border);
  border-radius: 6px;
}
::-webkit-scrollbar-thumb:hover { background-color: rgba(32, 199, 199, 0.35); }

/* ── Dashboard small-box / recent actions polish ──────────────────────── */
.small-box .icon { opacity: 0.25; }
#recent-actions-module li, .content .card { transition: border-color 0.15s ease; }
#recent-actions-module li:hover { color: var(--armada-brand); }

/* ── Interactive polish — subtle, specific-property transitions only
   (no "transition: all", no bouncy/exciting motion — enterprise tool
   opened dozens of times a day, calm over exciting) ────────────────────── */
.app-content { animation: armada-fade-in 0.15s ease-out; }
@keyframes armada-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
.card {
  transition: border-color 0.15s ease, transform 0.15s ease, box-shadow 0.15s ease;
}
.card:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);
}
.dropdown-menu {
  background-color: var(--armada-mid);
  border: 1px solid var(--armada-border);
  border-radius: 10px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
  padding: 6px;
  min-width: 220px;
  animation: armada-fade-in 0.1s ease-out;
}
.dropdown-item {
  color: var(--armada-text-secondary);
  border-radius: 6px;
  padding: 8px 12px;
  font-size: 13px;
  transition: background-color 0.1s ease, color 0.1s ease;
}
.dropdown-item:hover, .dropdown-item:focus {
  background-color: var(--armada-fore);
  color: var(--armada-text-primary);
}
.dropdown-item i {
  width: 16px;
  opacity: 0.8;
  text-align: center;
}
.dropdown-header {
  color: var(--armada-text-dim);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 6px 12px;
}
.dropdown-divider {
  border-top: 1px solid var(--armada-border);
  margin: 4px 0;
}
.dropdown-footer {
  color: var(--armada-brand) !important;
  font-weight: 600;
  text-align: center;
}
.dropdown-toggle::after {
  vertical-align: middle;
}
li.nav-item.dropdown > a.nav-link.btn {
  border-radius: 8px;
  padding: 6px 10px;
  transition: background-color 0.15s ease;
}
li.nav-item.dropdown > a.nav-link.btn:hover {
  background-color: var(--armada-fore);
}

/* ── Focus visibility (accessibility, matches brand focus-ring rule) ──── */
a:focus-visible, button:focus-visible, .nav-link:focus-visible {
  outline: 2px solid var(--armada-brand);
  outline-offset: 2px;
}
.sidebar-brand{
  margin:10px !important
}

/* ── Custom admin dashboard (templates/admin/index.html) ───────────────── */
.armada-dashboard {
  margin-bottom: 24px;
}
.armada-kpi {
  border-left: 4px solid var(--armada-border);
}
.armada-kpi-brand { border-left-color: var(--armada-brand); }
.armada-kpi-success { border-left-color: var(--armada-success); }
.armada-kpi-info { border-left-color: var(--armada-info); }
.armada-kpi-danger { border-left-color: var(--armada-danger); }
.armada-kpi-value {
  font-size: 28px;
  font-weight: 700;
  color: var(--armada-text-primary);
  line-height: 1.2;
}
.armada-kpi-label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  color: var(--armada-text-secondary);
  margin-top: 4px;
}
.armada-section-card .card-header {
  border-bottom: 1px solid var(--armada-border);
}
.armada-section-card .card-header h5 {
  color: var(--armada-text-primary);
  font-size: 15px;
}
.armada-stat-list {
  list-style: none;
  margin: 16px 0 0;
  padding: 0;
  border-top: 1px solid var(--armada-border-faint);
}
.armada-stat-list li {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 8px 0;
  border-bottom: 1px solid var(--armada-border-faint);
  font-size: 13px;
}
.armada-stat-list li span { color: var(--armada-text-secondary); }
.armada-stat-list li b { color: var(--armada-text-primary); font-weight: 700; }

.armada-empty {
  text-align: center;
  padding: 32px 12px;
}
.armada-empty i {
  font-size: 40px;
  color: var(--armada-text-secondary);
  opacity: 0.25;
  margin-bottom: 12px;
  display: block;
}
.armada-empty p {
  font-size: 14px;
  color: var(--armada-text-secondary);
  margin: 0 0 4px;
}
.armada-empty span {
  font-size: 12px;
  color: var(--armada-text-dim);
}

.armada-recent-table thead th {
  background-color: var(--armada-mid);
  color: var(--armada-text-secondary);
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  border-bottom: 1px solid var(--armada-border);
}
.armada-recent-table tbody td {
  color: var(--armada-text-primary);
  font-size: 13px;
  border-bottom: 1px solid var(--armada-border-faint);
}

.armada-status-pill {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 20px;
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
.armada-status-healthy {
  background: rgba(52, 211, 153, 0.12); color: #34D399; border: 1px solid rgba(52, 211, 153, 0.25);
}
.armada-status-degraded {
  background: rgba(251, 191, 36, 0.12); color: #FBBF24; border: 1px solid rgba(251, 191, 36, 0.25);
}
.armada-status-critical {
  background: rgba(248, 113, 113, 0.12); color: #F87171; border: 1px solid rgba(248, 113, 113, 0.25);
}
.armada-status-unknown {
  background: rgba(230, 240, 243, 0.08); color: var(--armada-text-secondary); border: 1px solid var(--armada-border);
}