/* tater-app.css — TATER Security app styles, extracted from TATER.html (#772 monolith modularization). Loaded by TATER.html before tater-themes.css; keep that order. */
:root {
  --bg:       #0e1117;
  --surface:  #161b25;
  --raised:   #1e2535;
  --border:   #2a3347;
  --border2:  #374159;
  --text:     #f5f8ff;
  --sub:      #aabdd0;
  --pass:     #2dcc71;  --pass-bg:   #0d2b1c;
  --fail:     #e84040;  --fail-bg:   #2b0d0d;
  --warn:     #f0a500;  --warn-bg:   #2b2000;
  --manual:   #f0a500;  --manual-bg: #2b2000;
  --info:     #3b9eff;  --info-bg:   #0d1e35;
  --accent:   #3b9eff;
  --menu-highlight: #3b9eff;
  --risk:     #b060e0;  --risk-bg:   #1e0d2b;
  --predicted-pass: #0d9488;  --predicted-pass-bg: #0a2b29;
  --predicted-fail: #ec4899;  --predicted-fail-bg: #2b0d1a;
  --detail-bg:#0a0d14;
  --danger:   #e84040;  --danger-bg: #2b0d0d;
  --success:  #2dcc71;  --success-bg:#0d2b1c;
  --card:     #161b25;
  --hover:    rgba(255,255,255,.06);
  --bg2:      #121720;
  --mono: 'IBM Plex Mono', monospace;
  --sans: 'IBM Plex Sans', sans-serif;
  /* #1681: tokens the shared primitives below depend on. Values copied verbatim
     from tater-shared.css (:52 --radius, :31 --text-muted, :47-50 priority
     colors) so the ported .pill/.empty rules resolve exactly as they do in
     ops/manage/my/insights. --radius was already referenced by the ported .kpi
     family (:1218-1219) with nothing defining it. */
  --radius: 8px;
  --text-muted: #6e7681;
  --critical: #ef4444;
  --high: #f59e0b;
  --normal: #3b9eff;
  --low: #94a3b8;
  /* Modern design tokens (v2026.04.25b) */
  --radius-sm: 4px;
  --radius-md: 6px;
  --radius-lg: 10px;
  --radius-xl: 14px;
  --radius-pill: 999px;
  --shadow-xs: 0 1px 2px rgba(0,0,0,.18);
  --shadow-sm: 0 2px 4px rgba(0,0,0,.22), 0 1px 2px rgba(0,0,0,.14);
  --shadow-md: 0 4px 12px rgba(0,0,0,.28), 0 2px 4px rgba(0,0,0,.16);
  --shadow-lg: 0 12px 32px rgba(0,0,0,.36), 0 4px 8px rgba(0,0,0,.20);
  --shadow-xl: 0 24px 60px rgba(0,0,0,.45), 0 8px 16px rgba(0,0,0,.24);
  --ease: cubic-bezier(.4, 0, .2, 1);
  --ease-out: cubic-bezier(.16, 1, .3, 1);
  --t-fast: 120ms;
  --t-base: 180ms;
  --t-slow: 280ms;
  --focus-ring: 0 0 0 2px var(--bg), 0 0 0 4px color-mix(in srgb, var(--accent) 70%, transparent);
}
/* Light mode */
[data-theme="light"] {
  --bg:       #f8f9fa;
  --surface:  #ffffff;
  --raised:   #f1f3f5;
  --border:   #e2e8f0;
  --border2:  #cbd5e1;
  --text:     #111827;
  --sub:      #6b7280;
  --detail-bg:#f9fafb;
  --pass:     #16803c;  --pass-bg:   #f0fdf4;
  --fail:     #b91c1c;  --fail-bg:   #fff1f1;
  --warn:     #92600a;  --warn-bg:   #fffbeb;
  --manual:   #92600a;  --manual-bg: #fffbeb;
  --info:     #1d4ed8;  --info-bg:   #eff6ff;
  --accent:   #1d4ed8;
  /* #1681: light-mode counterparts, from tater-shared.css:71 / :87-90. */
  --text-muted: #9ca3af;
  --critical: #b91c1c;
  --high:     #b45309;
  --normal:   #1d4ed8;
  --low:      #475569;
  --risk:     #6d28d9;  --risk-bg:   #f5f3ff;
  --predicted-pass: #0d9488;  --predicted-pass-bg: #f0fdfa;
  --predicted-fail: #be185d;  --predicted-fail-bg: #fdf2f8;
  --danger:   #b91c1c;  --danger-bg: #fff1f1;
  --success:  #16803c;  --success-bg:#f0fdf4;
  --card:     #ffffff;
  --hover:    rgba(0,0,0,.04);
  --bg2:      #f1f3f5;
  /* Dark sidebar in light mode */
  --sidebar-bg:     #1e2a3a;
  --sidebar-surface: #263348;
  --sidebar-border:  #334466;
  --sidebar-text:    #c8d0e0;
  --sidebar-sub:     #7a8aa0;
  --sidebar-active:  #3b9eff;
  --sidebar-hover:   #2a3a52;
  --menu-highlight:  #3b9eff;
}
[data-theme="light"] .badge-pass   { border-color: #a8d4b8; }
[data-theme="light"] .badge-fail   { border-color: #e8b0b0; }
[data-theme="light"] .badge-manual { border-color: #e0cc90; }
[data-theme="light"] .badge-override { border-color: #a0c4e8; }
[data-theme="light"] .badge-risk   { border-color: #c8b0e0; }
[data-theme="light"] .badge-pass-partial { border-color: #a8d4b8; }
[data-theme="light"] .badge-predicted-pass { border-color: #7accc8; }
[data-theme="light"] .badge-predicted-fail { border-color: #e8a0c0; }
[data-theme="light"] tr:hover td   { background: rgba(0,0,0,.03); }
[data-theme="light"] .detail-inner { background: var(--detail-bg); }
[data-theme="light"] .modal-backdrop, [data-theme="light"] .modal-overlay { background: rgba(0,0,0,.55); }
[data-theme="light"] .toast { background: var(--surface); box-shadow: 0 2px 12px rgba(0,0,0,.12); }
/* Light mode: dark sidebar + brand */
[data-theme="light"] .sidebar { background: var(--sidebar-bg); border-right-color: var(--sidebar-border); }
[data-theme="light"] .brand { color: var(--sidebar-sub); border-bottom-color: var(--sidebar-border); }
[data-theme="light"] .brand strong { color: var(--sidebar-active); }
[data-theme="light"] .nav-item { color: var(--sidebar-sub); }
[data-theme="light"] .nav-item:hover { background: var(--sidebar-hover); color: var(--sidebar-text); }
[data-theme="light"] .nav-item.active { background: var(--sidebar-hover); color: var(--menu-highlight); border-left-color: var(--menu-highlight); }
[data-theme="light"] .nav-badge { background: var(--sidebar-border); color: var(--sidebar-sub); }
[data-theme="light"] .sidebar-footer { color: var(--sidebar-sub); border-top-color: var(--sidebar-border); }
/* Light mode: topbar contrast */
[data-theme="light"] .topbar { background: #fff; border-bottom: 1px solid var(--border); box-shadow: 0 1px 3px rgba(0,0,0,.06); }
[data-theme="light"] .topbar .btn-ghost { color: #374151; }
[data-theme="light"] .topbar .btn-ghost:hover { background: rgba(0,0,0,.06); color: #111827; }
[data-theme="light"] #theme-toggle { color: #374151 !important; }
[data-theme="light"] .topbar-title { color: #111827; }
[data-theme="light"] #user-avatar { background: var(--accent); color: #fff; }
/* Light mode: nav group headers - handled by nav-rail CSS block below */
[data-theme="light"] .nav-group-header { color: var(--sidebar-sub); }
/* Light mode: filter/input fields */
[data-theme="light"] .input, [data-theme="light"] input[type="text"], [data-theme="light"] input[type="search"],
[data-theme="light"] select, [data-theme="light"] textarea { background: #fff; border-color: var(--border2); color: var(--text); }
[data-theme="light"] .msel-display, [data-theme="light"] .msel-dropdown { background: #fff; border-color: var(--border2); }
[data-theme="light"] .msel-opt:hover { background: #f1f5f9; }
[data-theme="light"] .msel-opt.msel-sel { background: rgba(29,78,216,.06); }
/* Light mode: metric cards */
[data-theme="light"] .metric-card { background: #fff; border-color: var(--border); box-shadow: 0 1px 3px rgba(0,0,0,.06); }
[data-theme="light"] .metric-card::before { background: linear-gradient(135deg, rgba(0,0,0,.015) 0%, transparent 60%); }
/* Light mode: topbar tasks badge visibility */
[data-theme="light"] #topbar-tasks-badge { background: var(--fail); }
/* Light mode: content cards with subtle shadow */
[data-theme="light"] .settings-card { box-shadow: 0 1px 3px rgba(0,0,0,.06); }
[data-theme="light"] .stat-card { box-shadow: 0 1px 3px rgba(0,0,0,.06); }
[data-theme="light"] .trend-card { box-shadow: 0 1px 3px rgba(0,0,0,.06); }
[data-theme="light"] .ctrl-table-wrap { box-shadow: 0 1px 3px rgba(0,0,0,.06); }
/* Light mode: login screen */
[data-theme="light"] .login-screen { background: radial-gradient(ellipse at 30% 20%, rgba(29,78,216,.05) 0%, transparent 50%), radial-gradient(ellipse at 70% 80%, rgba(22,128,60,.04) 0%, transparent 50%), var(--bg); }
[data-theme="light"] .login-card { box-shadow: 0 8px 32px rgba(0,0,0,.1), 0 0 0 1px rgba(43,108,176,.08); }
/* Light mode: tables */
[data-theme="light"] .ctrl-table-wrap { background: #fff; }
[data-theme="light"] .rpt-table th { color: var(--sub); }
[data-theme="light"] tbody tr:nth-child(even) td { background: rgba(0,0,0,.02); }
[data-theme="light"] tr:hover td { background: rgba(0,0,0,.04); }
/* Light mode: override cards, filter bar */
[data-theme="light"] .override-card { box-shadow: 0 1px 3px rgba(0,0,0,.06); border-color: var(--border); }
[data-theme="light"] .filter-bar { background: #fff; border: 1px solid var(--border); box-shadow: 0 1px 3px rgba(0,0,0,.04); }
/* Light mode: stronger dropdown contrast */
[data-theme="light"] .topbar-dropdown { background: #fff; border-color: #e2e8f0; box-shadow: 0 8px 24px rgba(0,0,0,.14); }
[data-theme="light"] .tools-menu-item { color: #111827; }
/* Light mode: table headers with stronger bg */
[data-theme="light"] table th { background: #f1f5f9 !important; color: #374151 !important; border-bottom-color: #cbd5e1; }
[data-theme="light"] .data-table th { background: #f1f5f9; color: #374151; }
/* Light mode: section headers */
[data-theme="light"] .section-hdr h2, [data-theme="light"] h3 { color: #111827; }
/* Light mode: page titles and labels stronger */
[data-theme="light"] .detail-label { color: #3a4a60; }
[data-theme="light"] .badge { border-width: 1px; }
/* Light mode: theme toggle button - always visible */
[data-theme="light"] #theme-toggle { background: #f0f4fa; border-color: #9aa5b5 !important; color: #1e2a3a !important; }
[data-theme="light"] #theme-toggle:hover { background: #e0e8f4; }
/* Light mode: raised surfaces need stronger shadow for depth */
[data-theme="light"] .modal-inner, [data-theme="light"] .modal-content { box-shadow: 0 8px 32px rgba(0,0,0,.14); border: 1px solid var(--border2); }
/* Light mode: empty state text */
[data-theme="light"] .empty-state h3 { color: #2c3a4a; }
[data-theme="light"] .empty-state p { color: #5e6e82; }
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { height: 100%; background: var(--bg); }
/* Subtle dark-grey → black gradient on body for default theme depth.
   Theme overrides (data-user-theme) set their own backgrounds and win. */
body { min-height: 100%; background: linear-gradient(180deg, #1a1f28 0%, #0f1115 50%, #07090d 100%); background-attachment: fixed; color: var(--text); font-family: var(--sans); font-size: 16.8px; }
/* Light mode needs its own canvas — the dark gradient above has no var() to
   invert. No !important: tater-themes.css data-user-theme skins load later
   and must keep winning via cascade order. */
[data-theme="light"] body { background: linear-gradient(180deg, #ffffff 0%, #f8f9fa 50%, #eef1f4 100%); background-attachment: fixed; }

/* Layout */
.shell { display: flex; height: 100vh; overflow: hidden; }
.sidebar { width: 220px; min-width: 220px; background: var(--surface); border-right: 1px solid var(--border); display: flex; flex-direction: column; }
.main { flex: 1; display: flex; flex-direction: column; overflow: visible; }
.topbar { height: 52px; background: var(--surface); border-bottom: 1px solid var(--border); display: flex; align-items: center; padding: 0 20px; gap: 8px; flex-shrink: 0; overflow: visible; position: relative; z-index: 100; }
.content { flex: 1; overflow-y: auto; padding: 24px; min-height: 0; }

/* Sidebar */
.brand { padding: 14px 16px 12px; border-bottom: 1px solid var(--border); font-family: var(--mono); font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; color: var(--sub); }
.nav { padding: 8px 0; flex: 1; overflow-y: auto; }
.nav-item { display: flex; align-items: center; padding: 7px 16px; cursor: pointer; font-size: .8rem; font-weight: 400; color: var(--sub); transition: color .12s, background .12s; border-left: 2px solid transparent; user-select: none; }
.nav-item:hover { background: var(--raised); color: var(--text); }
.nav-item.active { background: var(--raised); color: var(--menu-highlight); border-left-color: var(--menu-highlight); font-weight: 500; }
.ni { width:14px;height:14px;flex-shrink:0;margin-right:7px;opacity:.65; }
.nav-item:hover .ni, .nav-item.active .ni { opacity:1; }
.nav-icon { display: none; }
.nav-badge { margin-left: auto; font-family: var(--mono); font-size: .68rem; background: var(--border2); color: var(--sub); padding: 1px 6px; border-radius: 10px; }
.sidebar-footer { padding: 12px 16px; border-top: 1px solid var(--border); font-family: var(--mono); font-size: .65rem; color: var(--sub); line-height: 1.7; }
.sidebar-footer span { display: block; }

/* ── Nav Rail ─────────────────────────────────────────────────────────────── */
.sidebar { flex-direction: row !important; width: 244px; min-width: 244px; }
.nav-rail { width: 52px; min-width: 52px; display: flex; flex-direction: column; align-items: center; background: var(--bg); border-right: 1px solid var(--border); padding: 6px 0 8px; gap: 1px; flex-shrink: 0; overflow-y: auto; overflow-x: visible; scrollbar-width: none; }
.nav-rail::-webkit-scrollbar { display: none; }
.nav-rail-brand { width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; margin-bottom: 2px; flex-shrink: 0; }
.nav-rail-logo { height: 28px; width: auto; max-width: 28px; object-fit: contain; border-radius: 6px; }
.nav-rail-divider { width: 28px; height: 1px; background: var(--border); margin: 3px 0; flex-shrink: 0; }
.nav-rail-spacer { flex: 1; min-height: 8px; }
.nav-rail-item { width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; border-radius: 8px; cursor: pointer; color: var(--sub); transition: background .12s, color .12s; flex-shrink: 0; position: relative; }
.nav-rail-item svg { width: 18px; height: 18px; }
.nav-rail-item:hover { background: var(--raised); color: var(--text); }
.nav-rail-item.active { background: color-mix(in srgb, var(--accent) 15%, transparent); color: var(--accent); }
/* Rail tooltips are JS-driven (fixed-pos div) - ::after can't escape overflow:auto scroll container */
.nav-rail-tip { position: fixed; background: var(--surface); border: 1px solid var(--border); border-radius: 6px; padding: 5px 10px; font-size: .72rem; white-space: nowrap; color: var(--text); pointer-events: none; opacity: 0; transition: opacity .12s; z-index: 9000; box-shadow: 0 4px 12px rgba(0,0,0,.28); transform: translateY(-50%); }
.rail-badge { position: absolute; top: 1px; right: 1px; min-width: 14px; height: 14px; border-radius: 7px; background: var(--fail); color: #fff; font-size: .58rem; font-family: var(--mono); display: flex; align-items: center; justify-content: center; padding: 0 3px; line-height: 1; pointer-events: none; }
/* ── Nav Panel ─────────────────────────────────────────────────────────────── */
.nav-panel { flex: 1; display: flex; flex-direction: column; overflow: hidden; min-width: 0; }
.nav-panel .nav { flex: 1; overflow-y: auto; }
.nav-panel .nav-group-items .nav-item .ni { display: none !important; }
.nav-panel .nav-group-items .nav-item { padding-left: 22px; }
/* ── Group headers: icon + text + chevron ─────────────────────────────────── */
.ng-icon { width: 15px; height: 15px; flex-shrink: 0; opacity: .7; }
.nav-group-chevron { width: 11px; height: 11px; margin-left: auto; flex-shrink: 0; opacity: .4; transition: transform .2s ease, opacity .15s; }
.nav-group.open .nav-group-chevron, .nav-group.active .nav-group-chevron { transform: rotate(90deg); opacity: .8; }
.nav-group.open .nav-group-header, .nav-group.active .nav-group-header { color: var(--text); }
.nav-group:hover .ng-icon, .nav-group.open .ng-icon, .nav-group.active .ng-icon { opacity: 1; }
/* Light mode rail */
[data-theme="light"] .nav-rail { background: color-mix(in srgb, var(--sidebar-bg) 95%, black); border-right-color: var(--sidebar-border); }
[data-theme="light"] .nav-rail-item { color: var(--sidebar-sub); }
[data-theme="light"] .nav-rail-item:hover { background: var(--sidebar-hover); color: var(--sidebar-text); }
[data-theme="light"] .nav-rail-item.active { background: color-mix(in srgb, var(--sidebar-active) 20%, transparent); color: var(--sidebar-active); }
[data-theme="light"] .nav-rail-item::after { background: var(--sidebar-bg); border-color: var(--sidebar-border); color: var(--sidebar-text); }
[data-theme="light"] .nav-panel { background: var(--sidebar-bg); }
[data-theme="light"] .nav-group-header { color: var(--sidebar-sub); }
[data-theme="light"] .nav-group.open .nav-group-header, [data-theme="light"] .nav-group.active .nav-group-header { color: var(--sidebar-text); }
/* Mobile: show full sidebar */
@media (max-width: 768px) { .sidebar { width: 280px !important; min-width: 280px !important; } }

/* ═════════════════════════════════════════════════════════════════════
   v3 SIDEBAR SCHEMA - 4 stacked rows + 2-column body. Replaces v2 grid.
   ═════════════════════════════════════════════════════════════════════ */
.shell[data-nav-v3] { display: flex !important; flex-direction: row !important; height: 100vh; overflow: hidden; }
.shell[data-nav-v3] .sidebar {
  display: flex !important; flex-direction: column !important;
  width: 264px !important; min-width: 264px !important;
  background: var(--surface);
  border-right: 1px solid var(--border);
  overflow: hidden; flex-shrink: 0;
}
.shell[data-nav-v3] .sb-row { border-bottom: 1px solid var(--border); padding: 8px 12px; flex-shrink: 0; }
.shell[data-nav-v3] .sb-brand-row { display: flex; align-items: center; gap: 10px; padding: 10px 12px; }
.shell[data-nav-v3] .sb-brand-row img { width: 30px; height: 30px; object-fit: contain; flex-shrink: 0; cursor: pointer; border-radius: 4px; }
.shell[data-nav-v3] .sb-brand-name { font-family: var(--mono); font-weight: 700; font-size: .82rem; letter-spacing: .1em; text-transform: uppercase; line-height: 1.05; color: var(--text); }
.shell[data-nav-v3] .sb-brand-name small { display: block; font-size: .55rem; font-weight: 500; color: var(--sub); letter-spacing: .12em; text-transform: uppercase; margin-top: 2px; }
.shell[data-nav-v3] .sb-org-row { display: flex; align-items: center; gap: 8px; min-height: 38px; }
.shell[data-nav-v3] .sb-org-logo { width: 22px; height: 22px; border-radius: 4px; object-fit: contain; flex-shrink: 0; background: var(--raised); padding: 2px; }
.shell[data-nav-v3] .sb-org-name { font-size: .76rem; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--text); flex: 1; min-width: 0; }
.shell[data-nav-v3] .sb-apps-row { display: flex; gap: 4px; padding: 6px 12px; }
.shell[data-nav-v3] .sb-app-btn {
  flex: 1; height: 30px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 5px; cursor: pointer; padding: 0;
  background: var(--raised); color: var(--sub); border: 1px solid var(--border);
  transition: color .15s, border-color .15s, background .15s;
  text-decoration: none;  /* app-switcher entries are <a> anchors (current-tab default + middle/right-click) */
}
.shell[data-nav-v3] .sb-app-btn svg { width: 15px; height: 15px; }
.shell[data-nav-v3] .sb-app-btn:hover { color: var(--text); border-color: var(--accent); background: var(--surface); }
.shell[data-nav-v3] .sb-app-btn.active {
  background: color-mix(in srgb, var(--accent) 18%, transparent);
  color: var(--accent); border-color: var(--accent); cursor: default;
  box-shadow: inset 0 0 0 1px var(--accent);
}
.shell[data-nav-v3] .sb-search-row { padding: 6px 12px 8px; }
.shell[data-nav-v3] .sb-search {
  display: flex; align-items: center; gap: 6px;
  padding: 5px 10px; background: var(--raised);
  border: 1px solid var(--border); border-radius: 5px;
}
.shell[data-nav-v3] .sb-search:focus-within { border-color: var(--accent); }
.shell[data-nav-v3] .sb-search svg { width: 13px; height: 13px; color: var(--sub); flex-shrink: 0; }
.shell[data-nav-v3] .sb-search input { flex: 1; background: transparent; border: none; color: var(--text); font-size: .76rem; outline: none; font-family: inherit; min-width: 0; }
.shell[data-nav-v3] .sb-body { flex: 1; display: flex; overflow: hidden; min-height: 0; }
.shell[data-nav-v3] .nav-rail {
  flex-direction: column !important;
  flex-shrink: 0;
}
.shell[data-nav-v3] .nav-rail-item.fav { color: var(--manual, #f0a500); }
.shell[data-nav-v3] .nav-panel { flex: 1; overflow-y: auto; min-width: 0; }
/* Module pane shows only the active group. Group headers are hidden - the rail
   icon serves as the module identity. Direct items (Overview, My Dashboard,
   Calendar) above the groups always remain visible. */
.shell[data-nav-v3] .nav-panel .nav-group-header { display: none; }
.shell[data-nav-v3] .nav-panel .nav-group:not(.open):not(.active) > .nav-group-items { display: none; }
.shell[data-nav-v3] .nav-panel .nav-group.open > .nav-group-items,
.shell[data-nav-v3] .nav-panel .nav-group.active > .nav-group-items { display: block; }
.shell[data-nav-v3] .nav-panel .nav-group-items .nav-item { padding-left: 14px; }
.shell[data-nav-v3] .nav-panel .nav-group-items .nav-item .ni { display: inline-block !important; }
.shell[data-nav-v3] .main { flex: 1; display: flex; flex-direction: column; overflow: hidden; min-width: 0; }

/* Mobile: slide-in sidebar */
.shell[data-nav-v3] .sb-mobile-backdrop { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.5); z-index: 90; }
@media (max-width: 768px) {
  .shell[data-nav-v3] .sidebar {
    position: fixed; top: 0; left: 0; bottom: 0;
    width: 282px !important; min-width: 282px !important;
    transform: translateX(-100%);
    transition: transform .25s ease;
    z-index: 100;
    box-shadow: 4px 0 24px rgba(0,0,0,.3);
  }
  .shell[data-nav-v3] .sidebar.open { transform: translateX(0); }
  .shell[data-nav-v3] .sb-mobile-backdrop.open { display: block; }
}

/* ═════════════════════════════════════════════════════════════════════
   V2 NAV: Topbar spans both columns. Rail + module-scoped panel below.
   Only the active module's items show in the panel (no group headers).
   ═════════════════════════════════════════════════════════════════════ */
.shell[data-nav-v2] {
  display: grid;
  grid-template-columns: 52px 192px 1fr;
  grid-template-rows: 52px 1fr;
  grid-template-areas:
    "topbar topbar topbar"
    "rail   panel  main";
  height: 100vh;
  overflow: hidden;
}
/* Sidebar wrapper becomes transparent - rail and panel are direct grid children */
.shell[data-nav-v2] .sidebar { display: contents; }
.shell[data-nav-v2] .nav-rail { grid-area: rail; width: 52px; min-width: 52px; border-right: 1px solid var(--border); }
.shell[data-nav-v2] .nav-panel { grid-area: panel; border-right: 1px solid var(--border); background: var(--surface); }
.shell[data-nav-v2] .topbar { grid-area: topbar; border-bottom: 1px solid var(--border); padding: 0 16px 0 12px; }
.shell[data-nav-v2] .main { grid-area: main; overflow: hidden; display: flex; flex-direction: column; }
/* In v2, the app-switcher + brand + search live in the topbar (not in nav-panel). */
.shell[data-nav-v2] .nav-panel .app-switcher,
.shell[data-nav-v2] .nav-panel .brand,
.shell[data-nav-v2] .nav-panel #sidebar-search-wrap {
  display: none !important;
}
/* Module pane shows only the active group. Group headers are hidden - the rail
   icon serves as the module identity. Direct items (Overview, My Dashboard,
   Calendar) above the groups always remain visible. */
.shell[data-nav-v2] .nav-panel .nav-group-header { display: none; }
.shell[data-nav-v2] .nav-panel .nav-group:not(.open):not(.active) > .nav-group-items { display: none; }
.shell[data-nav-v2] .nav-panel .nav-group.open > .nav-group-items,
.shell[data-nav-v2] .nav-panel .nav-group.active > .nav-group-items { display: block; }
/* Slim padding adjustments inside the panel since the group container vanishes */
.shell[data-nav-v2] .nav-panel .nav-group-items .nav-item { padding-left: 14px; }
.shell[data-nav-v2] .nav-panel .nav-group-items .nav-item .ni { display: inline-block !important; }
/* Module name banner at top of panel (rendered by JS into #v2-module-banner) */
.v2-module-banner {
  padding: 14px 14px 10px;
  font-family: var(--mono);
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--accent);
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  gap: 8px;
}
.v2-module-banner svg { width: 14px; height: 14px; flex-shrink: 0; }
/* Topbar v2 additions: brand block + app-switcher + search field */
.shell[data-nav-v2] .topbar-brand {
  display: flex; align-items: center; gap: 10px;
  padding-right: 14px; margin-right: 10px;
  border-right: 1px solid var(--border);
  height: 100%;
  flex-shrink: 0;
}
.shell[data-nav-v2] .topbar-brand img { width: 28px; height: 28px; flex-shrink: 0; cursor: pointer; }
.shell[data-nav-v2] .topbar-brand-text {
  font-family: var(--mono); font-weight: 700; font-size: .82rem;
  letter-spacing: .12em; text-transform: uppercase; color: var(--text);
  line-height: 1.05;
}
.shell[data-nav-v2] .topbar-brand-text small {
  display: block; font-size: .55rem; font-weight: 500;
  color: var(--sub); letter-spacing: .12em; text-transform: uppercase;
  margin-top: 2px;
}
.shell[data-nav-v2] .topbar-search-v2 {
  flex: 1;
  max-width: 460px;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 12px;
  height: 32px;
  background: var(--raised);
  border: 1px solid var(--border);
  border-radius: 8px;
  flex-shrink: 1;
  min-width: 100px;
}
.shell[data-nav-v2] .topbar-search-v2:focus-within { border-color: var(--accent); }
.shell[data-nav-v2] .topbar-search-v2 input {
  flex: 1; background: transparent; border: none; color: var(--text);
  font-size: .82rem; outline: none; font-family: inherit;
}
.shell[data-nav-v2] .topbar-search-v2 svg { width: 14px; height: 14px; color: var(--sub); flex-shrink: 0; }
/* App-switcher in topbar - re-style from the panel version */
.shell[data-nav-v2] .topbar .app-switcher {
  display: flex; gap: 4px; flex-shrink: 0; align-items: center;
  padding: 0; border: none; margin-right: 10px;
}
.shell[data-nav-v2] .topbar .app-switcher .as-btn {
  width: 32px; height: 32px; padding: 0;
  display: flex; align-items: center; justify-content: center;
  border-radius: 6px; cursor: pointer; flex-shrink: 0;
  background: var(--raised); color: var(--sub); border: 1px solid var(--border);
  transition: color .15s, border-color .15s, background .15s;
}
.shell[data-nav-v2] .topbar .app-switcher .as-btn svg { width: 16px; height: 16px; }
.shell[data-nav-v2] .topbar .app-switcher .as-btn:hover { color: var(--text); border-color: var(--accent); background: var(--surface); }
.shell[data-nav-v2] .topbar .app-switcher .as-btn.active {
  background: color-mix(in srgb, var(--accent) 18%, transparent);
  color: var(--accent); border-color: var(--accent); cursor: default;
  box-shadow: inset 0 0 0 1px var(--accent);
}
/* Hide legacy hamburger + mobile-nav overlay when v2 (rail handles mobile) */
@media (min-width: 769px) {
  .shell[data-nav-v2] .hamburger { display: none; }
}
@media (max-width: 768px) {
  .shell[data-nav-v2] {
    grid-template-columns: 52px 0 1fr;
    grid-template-rows: 52px 1fr;
  }
  .shell[data-nav-v2] .nav-panel {
    position: fixed; top: 52px; left: 52px; bottom: 0; width: 240px;
    z-index: 50; transform: translateX(-110%); transition: transform .25s ease;
  }
  .shell[data-nav-v2] .nav-panel.open { transform: translateX(0); box-shadow: 4px 0 16px rgba(0,0,0,.25); }
  .shell[data-nav-v2] .topbar-brand { padding-right: 8px; margin-right: 6px; }
  .shell[data-nav-v2] .topbar-brand small { display: none; }
  .shell[data-nav-v2] .topbar-search-v2 { max-width: 180px; }
}

/* v3 Phase 4: collapse the legacy verbose dashboard widgets behind a toggle. */
.dash-collapsed-v3 { display: none !important; }
/* Collapsible module-grouped sections inside the detailed view. */
.dash-section { margin-bottom: 12px; border: 1px solid var(--border); border-radius: 6px; background: var(--surface); overflow: hidden; }
.dash-section > summary { cursor: pointer; list-style: none; padding: 10px 14px; display: flex; align-items: center; gap: 10px; user-select: none; transition: background .15s; }
.dash-section > summary::-webkit-details-marker { display: none; }
.dash-section > summary::before { content: '▸'; font-size: .6rem; color: var(--sub); transition: transform .15s; display: inline-block; flex-shrink: 0; }
.dash-section[open] > summary::before { transform: rotate(90deg); }
.dash-section > summary:hover { background: var(--raised); }
.dash-section[open] > summary { background: var(--raised); border-bottom: 1px solid var(--border); }
.dash-section-title { font-family: var(--mono); font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; font-weight: 600; color: var(--text); }
.dash-section-meta { margin-left: auto; font-family: var(--mono); font-size: .62rem; color: var(--sub); }
.dash-section-body { padding: 14px; }

/* ═════ Module dashboards ═════ */
.mod-dash { padding: 0; max-width: 1400px; }
.mod-dash-hdr { margin-bottom: 18px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.mod-dash-hdr h1 { font-size: 1.5rem; font-weight: 700; margin: 0 0 4px; font-family: var(--mono); letter-spacing: -.01em; display:flex; align-items:center; gap:10px; }
.mod-dash-hdr h1 svg { width: 22px; height: 22px; color: var(--accent); }
.mod-dash-hdr p { margin: 0; color: var(--sub); font-size: .88rem; line-height: 1.5; max-width: 760px; }
.mod-dash-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; margin-bottom: 18px; }
.mod-dash-kpi { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 12px 14px; cursor: pointer; transition: border-color .15s, transform .15s; }
.mod-dash-kpi:hover { border-color: var(--accent); transform: translateY(-1px); }
.mod-dash-kpi-label { font-size: .62rem; text-transform: uppercase; letter-spacing: .06em; color: var(--sub); font-weight: 600; }
.mod-dash-kpi-value { font-size: 1.45rem; font-weight: 700; margin-top: 4px; color: var(--text); }
.mod-dash-kpi.fail .mod-dash-kpi-value { color: var(--fail); }
.mod-dash-kpi.pass .mod-dash-kpi-value { color: var(--pass); }
.mod-dash-kpi.warn .mod-dash-kpi-value { color: var(--manual); }
.mod-dash-section-title { font-family: var(--mono); font-size: .66rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: var(--sub); margin: 0 0 10px; }
.mod-dash-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.mod-dash-card { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 16px; cursor: pointer; transition: border-color .15s, transform .15s, box-shadow .15s; display: flex; flex-direction: column; gap: 6px; }
.mod-dash-card:hover { border-color: var(--accent); transform: translateY(-2px); box-shadow: 0 6px 16px rgba(0,0,0,.18); }
.mod-dash-card-icon { width: 26px; height: 26px; color: var(--accent); margin-bottom: 2px; }
.mod-dash-card-title { font-size: .92rem; font-weight: 600; color: var(--text); }
.mod-dash-card-desc { color: var(--sub); font-size: .78rem; line-height: 1.45; flex: 1; }
.mod-dash-card-meta { margin-top: 4px; font-family: var(--mono); font-size: .62rem; color: var(--accent); letter-spacing: .04em; text-transform: uppercase; }
.mod-dash-cols { display: grid; grid-template-columns: 1.4fr 1fr; gap: 14px; margin-top: 18px; }
@media (max-width: 900px) { .mod-dash-cols { grid-template-columns: 1fr; } }
.mod-dash-panel { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 14px 16px; }
.mod-dash-panel h3 { margin: 0 0 10px; font-size: .92rem; font-weight: 600; display: flex; align-items: center; gap: 8px; }
.mod-dash-recent { list-style: none; padding: 0; margin: 0; }
.mod-dash-recent li { padding: 8px 0; border-bottom: 1px solid var(--border); display: flex; align-items: center; gap: 10px; cursor: pointer; transition: color .15s; }
.mod-dash-recent li:last-child { border-bottom: none; }
.mod-dash-recent li:hover { color: var(--accent); }
.mod-dash-recent .rt { flex: 1; font-size: .82rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.mod-dash-recent .rs { font-size: .68rem; color: var(--sub); }
.mod-dash-empty { padding: 20px; text-align: center; color: var(--sub); font-size: .82rem; }

/* Pagination */
.pagination-bar { display:flex; align-items:center; justify-content:center; gap:8px; padding:12px 0; font-family:var(--mono); font-size:.72rem; color:var(--sub); }
.pagination-bar button { padding:4px 10px; border-radius:4px; }
.pagination-bar .pg-current { color:var(--info); font-weight:600; }

/* Bulk action bar */
.bulk-action-bar { display:flex; align-items:center; gap:12px; padding:8px 16px; background:var(--info-bg); border:1px solid var(--info); border-radius:6px; margin-bottom:8px; font-size:.78rem; }
.bulk-action-bar .bulk-count { font-weight:600; color:var(--info); }
.bulk-action-bar .btn { font-size:.72rem; padding:4px 12px; }
/* Archived row styling */
tr.archived-row td { opacity:.5; }
tr.archived-row td:first-child { opacity:1; }
.badge-archived { font-size:.6rem; background:var(--raised); color:var(--sub); border:1px solid var(--border); padding:1px 6px; border-radius:3px; margin-left:6px; }

/* MSP Onboarding Wizard Steps */
.msp-step { flex:1; text-align:center; padding:8px 4px; font-size:.72rem; color:var(--sub); background:var(--raised); border-radius:4px; font-weight:500; }
.msp-step.active { background:var(--info-bg); color:var(--info); border:1px solid var(--info); }
.msp-step.done { background:var(--pass-bg); color:var(--pass); }
.msp-step span { display:inline-block; width:18px; height:18px; line-height:18px; border-radius:50%; background:var(--border); color:var(--text); font-size:.65rem; font-weight:700; text-align:center; margin-right:4px; }
.msp-step.active span { background:var(--info); color:#fff; }
.msp-step.done span { background:var(--pass); color:#fff; }
/* Integration cards */
.intg-card { background:var(--surface); border:1px solid var(--border); border-radius:3px; padding:16px; cursor:pointer; transition:border-color .2s; }
.intg-card:hover { border-color:var(--info); }
.intg-card-icon { font-size:1.6rem; width:40px; height:40px; display:flex; align-items:center; justify-content:center; background:var(--raised); border-radius:4px; }
.intg-card-status { font-size:.68rem; font-weight:600; padding:2px 8px; border-radius:10px; }
.intg-card-status.connected { background:var(--pass-bg); color:var(--pass); border:1px solid var(--pass); }
.intg-card-status.available { background:var(--raised); color:var(--sub); border:1px solid var(--border); }
/* Azure resource health badges */
.azr-healthy { color:var(--pass); }
.azr-unhealthy { color:var(--fail); }
/* SuperAdmin-only elements */
body:not(.is-super-admin) .sa-only { display: none !important; }
.badge-custom { background:var(--info); color:#fff; font-size:.58rem; padding:1px 6px; border-radius:var(--radius-sm); text-transform:uppercase; letter-spacing:.05em; margin-left:6px; }

/* Topbar */
.topbar-logo { height: 28px; width: auto; object-fit: contain; display: none; }
.topbar-title { font-family: var(--mono); font-size: .72rem; color: var(--sub); font-weight: 500; letter-spacing: .04em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; flex-shrink: 2; min-width: 0; }
.topbar-meta  { font-family: var(--mono); font-size: .68rem; color: var(--sub); margin-left: 4px; }
.topbar-actions { margin-left: auto; display: flex; gap: 8px; align-items: center; overflow: visible; position: relative; }
/* Topbar hamburger overflow (injected by tater-themes.js) - hidden on desktop, shown ≤720px */
.topbar-hamburger-btn { display: none; background: transparent; border: 1px solid var(--border); color: var(--sub); width: 32px; height: 32px; border-radius: 6px; cursor: pointer; align-items: center; justify-content: center; flex-shrink: 0; transition: color .15s ease, border-color .15s ease; }
.topbar-hamburger-btn:hover { color: var(--accent); border-color: var(--accent); }
.topbar-hamburger-btn svg { width: 16px; height: 16px; }
.topbar-overflow-popover { display: none; position: absolute; top: calc(100% + 8px); right: 0; background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 8px; box-shadow: 0 8px 24px rgba(0,0,0,.4); z-index: 200; flex-direction: column; gap: 6px; min-width: 180px; }
.topbar-actions.show-overflow .topbar-overflow-popover { display: flex; }
.topbar-overflow-popover .topbar-icon-btn, .topbar-overflow-popover .theme-toggle-btn, .topbar-overflow-popover .tater-theme-picker-btn { width: 100% !important; height: 36px !important; justify-content: flex-start !important; padding: 0 12px !important; gap: 10px; }
.topbar-overflow-popover .topbar-icon-btn::after, .topbar-overflow-popover .theme-toggle-btn::after, .topbar-overflow-popover .tater-theme-picker-btn::after { content: attr(title); font-size: .82rem; color: var(--text); white-space: nowrap; }

/* Buttons */
.btn { font-family: var(--sans); font-size: .75rem; font-weight: 500; padding: .3rem .8rem; border-radius: var(--radius-md); cursor: pointer; transition: background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), box-shadow var(--t-fast) var(--ease); border: 1px solid; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
.btn:focus-visible { outline: none; box-shadow: var(--focus-ring); }
.btn-ghost   { background: transparent; border-color: var(--border2); color: var(--sub); }
.btn-ghost:hover   { border-color: var(--info); color: var(--info); background: var(--info-bg); }
.btn-primary { background: var(--info-bg); border-color: var(--info); color: var(--info); }
.btn-primary:hover { background: var(--info); color: #fff; }
.btn-danger  { background: var(--fail-bg); border-color: var(--fail); color: var(--fail); }
.btn-danger:hover  { background: var(--fail); color: #fff; }

/* Badges */
.badge { font-family: var(--mono); font-size: .68rem; font-weight: 600; letter-spacing: .06em; padding: .15rem .45rem; border-radius: var(--radius-sm); text-transform: uppercase; white-space: nowrap; display: inline-flex; align-items: center; gap: 4px; }
.badge-pass     { background: var(--pass-bg);   color: var(--pass);   border: 1px solid #1a5c35; }
.badge-fail     { background: var(--fail-bg);   color: var(--fail);   border: 1px solid #5c1a1a; }
.badge-manual   { background: var(--manual-bg); color: var(--manual); border: 1px solid #5c3a00; }
.badge-override { background: var(--info-bg);   color: var(--info);   border: 1px solid #1a3d5c; }
.badge-risk     { background: var(--risk-bg);   color: var(--risk);   border: 1px solid #3d1a5c; }
.badge-pass-partial { background: color-mix(in srgb, var(--pass) 20%, var(--manual-bg)); color: var(--pass); border: 1px solid #2a5c35; }
.badge-skip     { background: var(--raised);    color: var(--sub);    border: 1px solid var(--border2); }
.badge-predicted-pass { background: var(--predicted-pass-bg); color: var(--predicted-pass); border: 1px solid #0a4a44; }
.badge-predicted-fail { background: var(--predicted-fail-bg); color: var(--predicted-fail); border: 1px solid #5c0d30; }
/* #1325: licensing-aware Not Applicable — out-of-scope, dashed neutral badge. */
.badge-not-applicable { background: var(--raised); color: var(--sub); border: 1px dashed var(--border2); }

/* Drift Alerts (#98) */
.drift-alert-banner { background:var(--fail-bg); border:1px solid var(--fail); border-radius:8px; padding:10px 16px; margin-bottom:14px; }
.drift-alert-banner summary { cursor:pointer; font-weight:600; font-size:.78rem; color:var(--fail); }
.drift-alert-row { display:flex; gap:12px; align-items:center; padding:4px 0; font-size:.74rem; border-bottom:1px solid rgba(232,64,64,.15); }
.drift-alert-row:last-child { border-bottom:none; }
.drift-badge-count { background:var(--fail); color:#fff; font-size:.6rem; font-weight:700; padding:1px 6px; border-radius:10px; margin-left:4px; }

/* Risk Score (#103) */
.risk-score-badge { display:inline-block; font-family:var(--mono); font-size:.68rem; font-weight:700; padding:.1rem .4rem; border-radius:var(--radius-sm); min-width:28px; text-align:center; }
.risk-score-green { background:rgba(45,204,113,.15); color:var(--pass); border:1px solid var(--pass); }
.risk-score-yellow { background:rgba(240,165,0,.15); color:var(--manual); border:1px solid var(--manual); }
.risk-score-red { background:rgba(232,64,64,.15); color:var(--fail); border:1px solid var(--fail); }

/* SLA Tracking (#102) */
.sla-badge { font-family:var(--mono); font-size:.6rem; font-weight:600; padding:1px 6px; border-radius:var(--radius-sm); white-space:nowrap; }
.sla-within { background:var(--pass-bg); color:var(--pass); border:1px solid #1a5c35; }
.sla-warning { background:var(--warn-bg); color:var(--warn); border:1px solid #5c3a00; }
.sla-breach { background:var(--fail-bg); color:var(--fail); border:1px solid #5c1a1a; }

/* Compliance Widget (#97) */
.widget-mode .shell { display:flex; justify-content:center; align-items:center; height:100vh; background:var(--bg); }
.widget-mode .sidebar, .widget-mode .topbar { display:none !important; }
.widget-container { background:var(--surface); border:1px solid var(--border); border-radius:12px; padding:24px; max-width:420px; width:100%; text-align:center; }
.widget-score-ring { position:relative; width:120px; height:120px; margin:0 auto 16px; }
.widget-fw-bar { display:flex; align-items:center; gap:8px; margin:4px 0; font-size:.74rem; }
.widget-fw-bar .bar-track { flex:1; height:6px; }

/* MITRE badges (#100) */
.mitre-chip { display:inline-block; font-size:.62rem; font-weight:600; padding:1px 6px; border-radius:var(--radius-sm); background:var(--info-bg); color:var(--info); border:1px solid var(--info); margin:1px 2px; white-space:nowrap; cursor:help; }

/* EPSS badge (#101) */
.epss-badge { display:inline-block; font-family:var(--mono); font-size:.64rem; font-weight:600; padding:1px 6px; border-radius:3px; white-space:nowrap; margin-left:4px; }
.epss-green { background:rgba(45,204,113,.15); color:var(--pass); border:1px solid var(--pass); }
.epss-yellow { background:rgba(250,204,21,.15); color:#fde047; border:1px solid #fde04788; }
.epss-orange { background:rgba(240,165,0,.15); color:var(--warn); border:1px solid var(--warn); }
.epss-red { background:rgba(232,64,64,.15); color:var(--fail); border:1px solid var(--fail); }
.epss-bar { display:inline-block; height:6px; border-radius:3px; vertical-align:middle; margin-left:4px; }
.epss-pct-tip { font-size:.6rem; color:var(--sub); margin-left:2px; }

/* Stat cards */
.stat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(155px, 1fr)); gap: 12px; margin-bottom: 24px; }
.stat-card { background: var(--surface); border: 1px solid var(--border); border-top: 2px solid var(--border); border-radius: var(--radius-md); padding: 16px; position: relative; overflow: hidden; box-shadow: var(--shadow-xs); transition: box-shadow var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease); }
.stat-card:hover { box-shadow: var(--shadow-sm); }
.stat-card.pass        { border-top-color: var(--pass); }
.stat-card.fail        { border-top-color: var(--fail); }
.stat-card.manual      { border-top-color: var(--manual); }
.stat-card.not-scanned { border-top-color: var(--sub); }
.stat-card.total  { border-top-color: var(--info); }
.stat-card.risk   { border-top-color: var(--risk); }
.stat-card.predicted-pass { border-top-color: var(--predicted-pass); }
.stat-card.predicted-fail { border-top-color: var(--predicted-fail); }
.stat-num { font-family: var(--mono); font-size: 1.5rem; font-weight: 600; line-height: 1; margin-bottom: 4px; }
.stat-card.pass .stat-num        { color: var(--pass); }
.stat-card.fail .stat-num        { color: var(--fail); }
.stat-card.manual .stat-num      { color: var(--manual); }
.stat-card.not-scanned .stat-num { color: var(--sub); }
.stat-card.total .stat-num  { color: var(--info); }
.stat-card.risk .stat-num   { color: var(--risk); }
.stat-card.predicted-pass .stat-num { color: var(--predicted-pass); }
.stat-card.predicted-fail .stat-num { color: var(--predicted-fail); }
.stat-label { font-size: .7rem; text-transform: uppercase; letter-spacing: .1em; color: var(--sub); font-weight: 600; }
.stat-sub   { font-family: var(--mono); font-size: .68rem; color: var(--sub); margin-top: 4px; }

/* Section headers */
.section-hdr { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.section-hdr h2 { font-family: var(--mono); font-size: .8rem; font-weight: 600; text-transform: uppercase; letter-spacing: .1em; color: var(--text); white-space: nowrap; }
.section-hdr .line { flex: 1; height: 1px; background: var(--border); }

/* Trend chart */
.trend-card { background: var(--surface); border: 1px solid var(--border); border-radius: 3px; padding: 16px; margin-bottom: 24px; }
.trend-hdr { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; flex-wrap: wrap; gap: 8px; }
.trend-title { font-family: var(--mono); font-size: .75rem; font-weight: 600; text-transform: uppercase; letter-spacing: .1em; color: var(--sub); }
.trend-legend { display: flex; gap: 16px; }
.trend-legend-item { display: flex; align-items: center; gap: 5px; font-size: .7rem; color: var(--sub); }
.trend-legend-dot { width: 8px; height: 8px; border-radius: 50%; }
#trendChart, #priorityTrendChart { width: 100%; height: 220px; display: block; cursor: crosshair; }
#trendChartTooltip, #priorityTrendChartTooltip { position:absolute;display:none;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:8px 12px;font-size:.72rem;font-family:var(--mono);pointer-events:none;z-index:100;box-shadow:0 4px 12px rgba(0,0,0,.3);white-space:nowrap; }

/* App bars */
.app-bars { display: grid; grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); gap: 10px; margin-bottom: 24px; }
.app-bar-card { background: var(--surface); border: 1px solid var(--border); border-radius: 3px; padding: 12px; }
.app-bar-hdr { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.app-bar-name { font-size: .78rem; font-weight: 600; }
.app-bar-counts { font-family: var(--mono); font-size: .7rem; color: var(--sub); }
.bar-track { height: 6px; background: var(--border); border-radius: 3px; overflow: hidden; display: flex; }
.bar-seg { height: 100%; transition: width .4s ease; }
.bar-pass { background: var(--pass); }
.bar-fail { background: var(--fail); }
.bar-manual { background: var(--manual); }
.bar-not-scanned { background: var(--sub); opacity: .4; }
.bar-predicted-pass { background: var(--predicted-pass); opacity: .75; }
.bar-predicted-fail { background: var(--predicted-fail); opacity: .75; }

/* ── Community & Gamification ──────────────────────────────────────────── */
.xp-bar-wrap { background: var(--border); border-radius: 9999px; height: 8px; overflow: hidden; }
.xp-bar-fill { height: 100%; border-radius: 9999px; background: linear-gradient(90deg, var(--accent), #7c3aed); transition: width .4s; }
.level-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 9999px; font-size: .72rem; font-weight: 700; background: var(--accent); color: #fff; }
.ach-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 10px; }
.ach-card { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 14px; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; transition: border-color .15s; }
.ach-card.earned { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent)22; }
.ach-card.secret:not(.earned) { opacity: .45; filter: grayscale(1); }
.ach-icon { font-size: 2rem; line-height: 1; }
.ach-name { font-size: .78rem; font-weight: 600; }
.ach-desc { font-size: .7rem; color: var(--sub); }
.ach-xp { font-size: .68rem; color: var(--accent); font-weight: 700; }
.ach-earned-at { font-size: .65rem; color: var(--pass); margin-top: 2px; }
.ach-progress { width: 100%; margin-top: 4px; }
.lb-podium { display: flex; justify-content: center; align-items: flex-end; gap: 10px; margin: 16px 0; }
.lb-podium-item { display: flex; flex-direction: column; align-items: center; gap: 4px; }
.lb-podium-avatar { width: 48px; height: 48px; border-radius: 50%; background: var(--card); border: 2px solid var(--border); display: flex; align-items: center; justify-content: center; font-size: 1.4rem; overflow: hidden; }
.lb-podium-avatar img { width: 100%; height: 100%; object-fit: cover; }
.lb-podium-pedestal { width: 70px; background: var(--border); border-radius: 4px 4px 0 0; display: flex; align-items: center; justify-content: center; font-weight: 800; font-size: .85rem; color: var(--sub); }
.lb-podium-item:nth-child(1) .lb-podium-pedestal { height: 54px; background: #fbbf2455; color: #d97706; }
.lb-podium-item:nth-child(2) .lb-podium-pedestal { height: 40px; background: #9ca3af44; color: #6b7280; }
.lb-podium-item:nth-child(3) .lb-podium-pedestal { height: 30px; background: #cd7f3244; color: #92400e; }
.lb-entry { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 8px; transition: background .1s; }
.lb-entry:hover { background: var(--hover); }
.lb-entry.is-me { background: var(--accent)11; border: 1px solid var(--accent)33; }
.lb-rank { font-size: .8rem; font-weight: 700; color: var(--sub); width: 24px; text-align: center; }
.lb-avatar { width: 32px; height: 32px; border-radius: 50%; background: var(--card); border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; font-size: .9rem; overflow: hidden; flex-shrink: 0; }
.lb-avatar img { width: 100%; height: 100%; object-fit: cover; }
.lb-name { flex: 1; font-size: .85rem; }
.lb-xp-tag { font-size: .75rem; color: var(--accent); font-weight: 600; }
.profile-avatar-lg { width: 80px; height: 80px; border-radius: 50%; border: 2px solid var(--accent); display: flex; align-items: center; justify-content: center; font-size: 2.5rem; overflow: hidden; cursor: pointer; position: relative; background: var(--card); }
.profile-avatar-lg:hover::after { content: '✎'; position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: #00000088; color: #fff; font-size: 1.5rem; }
.profile-avatar-lg img { width: 100%; height: 100%; object-fit: cover; }
.toast-achievement { position: fixed; bottom: 24px; right: 24px; z-index: 9999; background: var(--card); border: 1px solid var(--accent); border-radius: 12px; padding: 14px 18px; display: flex; align-items: center; gap: 12px; box-shadow: 0 8px 24px #0004; min-width: 240px; animation: toast-in .3s ease; }
@keyframes toast-in { from { opacity:0; transform:translateY(10px); } to { opacity:1; transform:translateY(0); } }
.toast-ach-icon { font-size: 2rem; }
.color-swatch-row { display: flex; gap: 6px; flex-wrap: wrap; }
.color-swatch { width: 24px; height: 24px; border-radius: 50%; cursor: pointer; border: 2px solid transparent; transition: border-color .15s; }
.color-swatch.selected { border-color: var(--text); }

/* Controls table */
.filter-bar { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; align-items: center; }
.filter-bar input, .filter-bar select { background: var(--surface); border: 1px solid var(--border2); color: var(--text); padding: .35rem .6rem; border-radius: 4px; font-size: .78rem; font-family: var(--sans); outline: none; transition: border-color .15s; }
.filter-bar input:focus, .filter-bar select:focus { border-color: var(--info); }
.filter-bar input { flex: 1; min-width: 180px; }
.filter-bar select option { background: var(--surface); }
.filter-count { font-family: var(--mono); font-size: .7rem; color: var(--sub); white-space: nowrap; }
.ctrl-table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: 3px; }
table { width: 100%; border-collapse: collapse; font-size: .8rem; }
thead tr { background: var(--raised); }
th { text-align: left; padding: 8px 10px; font-family: var(--mono); font-size: .68rem; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; color: var(--sub); border-bottom: 1px solid var(--border); white-space: nowrap; cursor: pointer; user-select: none; }
th:hover { color: var(--text); }
th.sorted { color: var(--info); }
td { padding: 8px 10px; border-bottom: 1px solid var(--border); vertical-align: middle; }
tbody tr:last-child td { border-bottom: none; }
tbody tr:nth-child(even) td { background: rgba(255,255,255,.025); }
tr:hover td { background: rgba(255,255,255,.06); }
/* Role badges */
.role-badge { display:inline-block; padding:2px 8px; border-radius:4px; font-size:.7rem; font-weight:600; }
.role-badge-superadmin { background:var(--fail-bg, rgba(220,38,38,.12)); color:var(--fail); }
.role-badge-orgadmin { background:var(--info-bg, rgba(59,130,246,.12)); color:var(--info); }
.role-badge-admin { background:var(--info-bg, rgba(59,130,246,.12)); color:var(--info); }
.role-badge-auditor { background:var(--warn-bg, rgba(234,179,8,.12)); color:var(--warn); }
.role-badge-viewer { background:var(--raised); color:var(--sub); }
.role-badge-member { background:var(--raised); color:var(--sub); }
tr.row-fail   > td:first-child { border-left: 3px solid var(--fail); }
tr.row-pass   > td:first-child { border-left: 3px solid transparent; }
tr.row-manual > td:first-child { border-left: 3px solid transparent; }
tr.row-override > td:first-child { border-left: 3px solid var(--info); }
tr.row-risk   > td:first-child { border-left: 3px solid var(--risk); }
.td-ctrl { font-family: var(--mono); font-size: .75rem; white-space: nowrap; color: var(--info); cursor: pointer; }
.td-ctrl:hover { text-decoration: underline; }
.td-title { max-width: 280px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; cursor: pointer; }
.td-title:hover { color: var(--info); }
.td-fw { font-size: .7rem; color: var(--sub); white-space: nowrap; }
.app-tag { display: inline-block; font-size: .68rem; font-weight: 600; padding: .1rem .35rem; border-radius: 3px; background: var(--raised); color: var(--sub); white-space: nowrap; }
.link-btn { font-size: .68rem; padding: .12rem .38rem; border-radius: 3px; text-decoration: none; border: 1px solid var(--border2); color: var(--sub); cursor: pointer; background: transparent; font-family: var(--sans); transition: all .12s; display: inline-block; margin-right: 3px; }
.link-btn:hover { border-color: var(--info); color: var(--info); background: var(--info-bg); }
.link-btn.doc { border-color: #2a4a38; color: #3a8c5a; }
.link-btn.doc:hover { background: #0d2b1a; border-color: var(--pass); color: var(--pass); }

/* Detail row */
.detail-row td { padding: 0; border-bottom: 1px solid var(--border); }
.detail-inner { padding: 16px 20px; background: var(--detail-bg); display: grid; grid-template-columns: 1fr 1fr; gap: 20px; font-size: .78rem; }
@media (max-width: 800px) { .detail-inner { grid-template-columns: 1fr; } }
.detail-label { font-family: var(--mono); font-size: .65rem; text-transform: uppercase; letter-spacing: .1em; color: var(--sub); margin-bottom: 4px; }
.detail-value { color: var(--text); line-height: 1.5; white-space: pre-wrap; word-break: break-word; }
.detail-value.code { font-family: var(--mono); font-size: .72rem; background: var(--bg); padding: 8px; border-radius: 4px; border: 1px solid var(--border); max-height: 160px; overflow-y: auto; }
.detail-section { margin-bottom: 14px; }
.history-timeline { display: flex; flex-direction: column; gap: 6px; }
.hist-item { display: flex; align-items: center; gap: 8px; font-family: var(--mono); font-size: .7rem; color: var(--sub); }
.hist-dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.hist-dot.pass   { background: var(--pass); }
/* Item detail page + comments */
.itemdetail-header { margin-bottom:24px; }
.itemdetail-header h2 { font-size:1.4rem; margin:0 0 4px; }
.itemdetail-header .subtitle { color:var(--sub); font-size:.82rem; font-family:var(--mono); }
.itemdetail-back { display:inline-flex; align-items:center; gap:4px; color:var(--accent); font-size:.78rem; cursor:pointer; background:none; border:none; padding:4px 0; margin-bottom:12px; }
.itemdetail-back:hover { text-decoration:underline; }
.itemdetail-meta { display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.itemdetail-tag { display:inline-block; padding:2px 8px; border-radius:4px; font-size:.68rem; font-weight:600; background:var(--raised); border:1px solid var(--border); color:var(--sub); }
.itemdetail-tag.clickable { cursor:pointer; }
.itemdetail-tag.clickable:hover { border-color:var(--accent); color:var(--accent); }
.comments-section { margin-top:32px; border-top:1px solid var(--border); padding-top:24px; }
.comments-header { font-family:var(--mono); font-size:.7rem; text-transform:uppercase; letter-spacing:.1em; color:var(--sub); margin-bottom:16px; }
.comment-card { background:var(--raised); border:1px solid var(--border); border-radius:3px; padding:14px 16px; margin-bottom:10px; }
.comment-meta { display:flex; align-items:center; justify-content:space-between; margin-bottom:6px; }
.comment-avatar { width:28px; height:28px; border-radius:50%; object-fit:cover; flex-shrink:0; }
.comment-avatar-initials { width:28px; height:28px; border-radius:50%; background:var(--info-bg); border:1.5px solid var(--info); display:flex; align-items:center; justify-content:center; font-weight:700; font-size:.65rem; color:var(--info); flex-shrink:0; }
.comment-author { font-weight:600; font-size:.78rem; color:var(--text); }
.comment-time { font-size:.68rem; color:var(--sub); margin-left:8px; }
.comment-edited { font-size:.62rem; color:var(--sub); font-style:italic; }
.comment-body { font-size:.82rem; color:var(--text); line-height:1.55; white-space:pre-wrap; word-break:break-word; }
.comment-actions { display:flex; gap:6px; }
.comment-actions button { background:none; border:none; font-size:.68rem; color:var(--sub); cursor:pointer; padding:2px 4px; }
.comment-actions button:hover { color:var(--accent); }
.comment-reply-btn { font-size:.68rem; color:var(--sub); cursor:pointer; background:none; border:none; padding:2px 6px; }
.comment-reply-btn:hover { color:var(--info); }
.comment-replies { margin-left:28px; border-left:2px solid var(--border); padding-left:12px; }
.comment-replies .comment-card { background:var(--surface, var(--raised)); padding:10px 12px; margin-bottom:6px; }
.inline-reply-form { margin-left:28px; margin-top:6px; margin-bottom:10px; padding-left:12px; border-left:2px solid var(--border); }
.comment-form { margin-top:16px; }
.comment-form textarea { width:100%; min-height:72px; padding:10px 12px; border:1px solid var(--border); border-radius:6px; background:var(--bg); color:var(--text); font-family:inherit; font-size:.82rem; resize:vertical; }
.comment-form textarea:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 2px rgba(59,158,255,.15); }
.comment-form-actions { display:flex; justify-content:flex-end; margin-top:8px; gap:8px; }
.comment-empty { color:var(--sub); font-size:.82rem; font-style:italic; margin-bottom:16px; }
.hist-dot.fail   { background: var(--fail); }
.hist-dot.manual { background: var(--manual); }
.hist-dot.override { background: var(--info); }
.hist-label-scan { color: var(--text); }
.hist-label-ov   { color: var(--info); }

/* Scans view */
.scan-list { display: flex; flex-direction: column; gap: 8px; }
.scan-card { background: var(--surface); border: 1px solid var(--border); border-radius: 3px; padding: 14px 16px; display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.scan-card.latest { border-color: var(--info); }
.scan-ts { font-family: var(--mono); font-size: .78rem; color: var(--info); min-width: 150px; }
.scan-meta { flex: 1; font-size: .78rem; color: var(--sub); min-width: 180px; }
.scan-meta strong { color: var(--text); }
.scan-stats { display: flex; gap: 12px; font-family: var(--mono); font-size: .72rem; }
.ss-pass   { color: var(--pass); }
.ss-fail   { color: var(--fail); }
.ss-manual { color: var(--manual); }

/* Upload zone */
.upload-zone { border: 2px dashed var(--border2); border-radius: 4px; padding: 32px; text-align: center; cursor: pointer; transition: all .2s; margin-bottom: 20px; }
.upload-zone:hover, .upload-zone.drag { border-color: var(--info); background: var(--info-bg); }
.upload-icon { font-size: 2rem; margin-bottom: 8px; }
.upload-text { font-size: .82rem; color: var(--sub); line-height: 1.6; }
.upload-text strong { color: var(--info); }
#fileInput { display: none; }

/* Overrides view */
.override-list { display: flex; flex-direction: column; gap: 8px; }
.override-card { background: var(--surface); border: 1px solid var(--border); border-radius: 3px; padding: 12px 14px; display: grid; grid-template-columns: 160px 1fr auto; gap: 12px; align-items: start; }
.override-card.risk { border-color: rgba(176,96,224,.35); }
.override-ctrl { font-family: var(--mono); font-size: .75rem; color: var(--info); word-break: break-all; }
.override-sub  { font-family: var(--mono); font-size: .68rem; color: var(--sub); margin-top: 2px; }
.override-title { font-size: .8rem; color: var(--text); }
.override-note  { font-size: .75rem; color: var(--sub); margin-top: 3px; }
.override-meta  { font-family: var(--mono); font-size: .68rem; color: var(--sub); text-align: right; line-height: 1.8; }

/* Modal */
.modal-backdrop { position: fixed; inset: 0; background: rgba(0,0,0,.82); z-index: 1000; display: flex; align-items: center; justify-content: center; opacity: 0; pointer-events: none; transition: opacity .2s; }
.modal-backdrop.open { opacity: 1; pointer-events: all; }
.modal { background: var(--surface); border: 1px solid var(--border2); border-radius: 4px; padding: 24px; width: 520px; max-width: calc(100vw - 40px); max-height: calc(100vh - 60px); overflow-y: auto; transform: translateY(10px); transition: transform .2s; }
.modal-backdrop.open .modal { transform: none; }
.modal-title { font-family: var(--mono); font-size: .85rem; font-weight: 600; color: var(--text); margin-bottom: 4px; }
.modal-sub { font-size: .75rem; color: var(--sub); margin-bottom: 18px; }
/* .modal-box/.modal-header/.modal-body: an older header+body+footer modal
   layout (30+ call sites — vendor/contract/rating/RFP modals, remediation
   guidance, and others) that never got styling when the CSS was extracted
   out of TATER.html's inline <style> (#772). Without these, the box has no
   background/border/padding — it renders as unstyled, transparent content
   floating over the (correctly-styled) .modal-backdrop overlay. Same visual
   treatment as .modal, restructured as a fixed header + scrolling body so
   long forms don't push the close button off-screen. */
.modal-box { background: var(--surface); border: 1px solid var(--border2); border-radius: 4px; width: 520px; max-width: calc(100vw - 40px); max-height: calc(100vh - 60px); overflow: hidden; display: flex; flex-direction: column; transform: translateY(10px); transition: transform .2s; }
.modal-backdrop.open .modal-box { transform: none; }
.modal-header { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--border); flex-shrink: 0; }
.modal-header h3 { margin: 0; font-family: var(--mono); font-size: .85rem; font-weight: 600; color: var(--text); }
.modal-body { padding: 20px; overflow-y: auto; }
.form-row { margin-bottom: 12px; }
.form-label { display: block; font-size: .72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; color: var(--sub); margin-bottom: 5px; }
.form-input, .form-select, .form-textarea { width: 100%; background: var(--raised); border: 1px solid var(--border2); color: var(--text); padding: .5rem .7rem; border-radius: 4px; font-size: .8rem; font-family: var(--sans); outline: none; transition: border-color .15s, box-shadow .15s; }
.form-input:focus, .form-select:focus, .form-textarea:focus { border-color: var(--info); }
.form-textarea { resize: vertical; min-height: 72px; }
.form-row.check { display: flex; align-items: center; gap: 8px; }
.form-row.check label { font-size: .8rem; color: var(--text); cursor: pointer; }
.multi-select-wrap { position: relative; }
.multi-select-toggle { cursor: pointer; user-select: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.multi-select-dropdown { display: none; position: absolute; top: 100%; left: 0; right: 0; background: var(--raised); border: 1px solid var(--border2); border-radius: 4px; max-height: 180px; overflow-y: auto; z-index: 100; box-shadow: 0 4px 12px rgba(0,0,0,.25); }
.multi-select-wrap.open .multi-select-dropdown { display: block; }
.multi-select-dropdown label { display: flex; align-items: center; gap: 8px; padding: 6px 10px; font-size: .78rem; cursor: pointer; color: var(--text); }
.multi-select-dropdown label:hover { background: var(--bg2); }
.multi-select-dropdown input[type="checkbox"] { accent-color: var(--info); }
.modal-actions { display: flex; gap: 8px; margin-top: 18px; justify-content: flex-end; align-items: center; }
.modal-actions .left { margin-right: auto; }
.grp-color-swatch { width:24px;height:24px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:border-color .15s; }
.grp-color-swatch:hover { border-color: var(--text); }
.grp-color-swatch.selected { border-color: var(--text); box-shadow: 0 0 0 2px var(--bg), 0 0 0 4px var(--text); }
.grp-badge { display:inline-flex;align-items:center;gap:3px;padding:1px 8px;border-radius:3px;font-size:.65rem;font-weight:600;color:#fff;white-space:nowrap; }
.fp-grid { width:100%;border-collapse:collapse;font-size:.75rem; }
.fp-grid th, .fp-grid td { padding:6px 10px;border:1px solid var(--border);text-align:center; }
.fp-grid th { background:var(--surface);font-weight:600;font-size:.68rem;text-transform:uppercase;letter-spacing:.05em; }
.fp-grid td:first-child, .fp-grid th:first-child { text-align:left;white-space:nowrap; }
.fp-grid tr.fp-cat-row td { background:var(--raised);font-weight:600;font-size:.7rem;color:var(--sub);text-transform:uppercase;letter-spacing:.08em;padding:8px 10px; }
.fp-grid input[type="checkbox"] { width:16px;height:16px;cursor:pointer; }
.fp-grid input[type="checkbox"]:disabled { opacity:.4;cursor:not-allowed; }
.grp-member-row { display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:4px;font-size:.78rem; }
.grp-member-row:hover { background:var(--surface); }
.grp-member-row input[type="checkbox"] { flex-shrink:0; }

/* Pills / badges — #1681: promoted from tater-shared.css:457-468. TATER.html is
   the one app that does not link tater-shared.css, so `class="pill"` (including
   everything window.taterStatusPill emits) rendered as bare text here while the
   same markup was a rounded chip in ops/manage/my/insights. Copied verbatim;
   keep in sync with tater-shared.css. Same precedent as .empty-state (#1620). */
.pill { display: inline-block; font-size: .62rem; padding: 2px 8px; border-radius: 999px; font-weight: 600; }
.pill-critical { background: rgba(239, 68, 68, .18); color: var(--critical); }
.pill-high { background: rgba(245, 158, 11, .18); color: var(--high); }
.pill-normal { background: rgba(59, 158, 255, .18); color: var(--normal); }
.pill-low { background: rgba(148, 163, 184, .18); color: var(--low); }
.pill-Open { background: rgba(59, 158, 255, .18); color: var(--info); }
/* #1212 — Planned (parked/backlog): muted violet, distinct from Open/OnHold. */
.pill-Planned { background: rgba(139, 122, 220, .18); color: #a99cf0; }
.pill-InProgress { background: rgba(245, 158, 11, .18); color: var(--warn); }
.pill-OnHold { background: rgba(148, 163, 184, .18); color: var(--low); }
.pill-Closed { background: rgba(63, 185, 80, .18); color: var(--pass); }
.pill-Cancelled { background: rgba(110, 118, 129, .18); color: var(--text-muted); }

/* Loading + empty states — #1681: promoted from tater-shared.css:547-548, same
   reason as .pill above. Copied verbatim; keep in sync. */
.loader { padding: 40px; text-align: center; color: var(--sub); }
.empty { padding: 40px; text-align: center; color: var(--sub); border: 1px dashed var(--border); border-radius: var(--radius); }

/* Empty state */
.empty-state { text-align: center; padding: 60px 20px; color: var(--sub); }
.empty-icon { font-size: 3rem; margin-bottom: 12px; opacity: .4; }
.empty-state h3 { font-family: var(--mono); font-size: .85rem; margin-bottom: 8px; color: var(--text); }
.empty-state p { font-size: .8rem; max-width: 380px; margin: 0 auto 20px; line-height: 1.6; }

/* Status badges - used by POAM/RMF/SSP/policies/milestones row pills */
.status-badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: .68rem;
  font-weight: 600;
  font-family: var(--mono);
  letter-spacing: .02em;
  white-space: nowrap;
  border: 1px solid transparent;
  background: var(--raised);
  color: var(--text);
}
.status-badge.status-open,
.status-badge.status-fail,
.status-badge.status-overdue,
.status-badge.status-rejected,
.status-badge.status-denied,
.status-badge.status-expired      { background: rgba(232,64,64,.12);  color: var(--fail); border-color: rgba(232,64,64,.3); }
.status-badge.status-in-progress,
.status-badge.status-under-review,
.status-badge.status-pending,
.status-badge.status-pending-verification,
.status-badge.status-on-hold,
.status-badge.status-draft        { background: rgba(240,165,0,.12);  color: var(--manual, #f0a500); border-color: rgba(240,165,0,.3); }
.status-badge.status-completed,
.status-badge.status-resolved,
.status-badge.status-closed,
.status-badge.status-approved,
.status-badge.status-active,
.status-badge.status-authorized,
.status-badge.status-pass         { background: rgba(45,204,113,.12); color: var(--pass);   border-color: rgba(45,204,113,.3); }
.status-badge.status-risk-accepted,
.status-badge.status-accepted,
.status-badge.status-not-applicable,
.status-badge.status-false-positive,
.status-badge.status-archived,
.status-badge.status-withdrawn    { background: rgba(120,128,140,.15); color: var(--sub);  border-color: rgba(120,128,140,.3); }
.status-badge.status-info         { background: rgba(59,158,255,.12); color: var(--accent); border-color: rgba(59,158,255,.3); }

/* Toast */
.toast-container { position: fixed; bottom: 20px; right: 20px; z-index: 99999; display: flex; flex-direction: column; gap: 8px; pointer-events: none; }
.toast { background: var(--raised); border: 1px solid var(--border2); border-radius: 6px; padding: 10px 16px; font-size: .8rem; color: var(--text); animation: toastIn .2s ease; }
.toast.success { border-color: var(--pass); }
.toast.error   { border-color: var(--fail); }
@keyframes toastIn { from { opacity:0; transform: translateY(6px); } to { opacity:1; transform: none; } }
@keyframes org-spin { to { transform: rotate(360deg); } }
/* Enhanced toast items */
.toast-item { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 12px 14px; box-shadow: 0 4px 16px rgba(0,0,0,.2); transition: opacity .25s, transform .25s; overflow: hidden; pointer-events: all; }
.toast-info    { border-left: 3px solid var(--info);  }
.toast-success { border-left: 3px solid var(--pass);  color: var(--pass); }
.toast-error   { border-left: 3px solid var(--fail);  color: var(--fail); }
.toast-warning { border-left: 3px solid #f59e0b;       color: #f59e0b; }
.toast-item .toast-msg { color: var(--text); }
@keyframes toast-progress { from { width: 100%; } to { width: 0%; } }
/* Button loading state */
.btn-loading { position: relative; cursor: not-allowed !important; opacity: .75; }
.btn-loading::after { content: ''; display: inline-block; width: 10px; height: 10px; border: 2px solid currentColor; border-right-color: transparent; border-radius: 50%; animation: btn-spin .6s linear infinite; margin-left: 8px; vertical-align: middle; }
@keyframes btn-spin { to { transform: rotate(360deg); } }
/* Form field inline errors */
.form-input.has-error, .form-select.has-error, .form-textarea.has-error { border-color: var(--fail) !important; box-shadow: 0 0 0 2px rgba(239,68,68,.12); }
.field-error { color: var(--fail); font-size: .7rem; margin-top: 3px; display: block; }
.form-input:focus-visible, .form-select:focus-visible, .form-textarea:focus-visible { outline: none; box-shadow: 0 0 0 2px rgba(59,158,255,.35); }
/* Sort direction indicators */
th[data-sort] { cursor: pointer; user-select: none; white-space: nowrap; }
th[data-sort]:hover { color: var(--info); }
th[data-sort].sort-asc::after  { content: ' ▲'; font-size: .7em; opacity: .8; }
th[data-sort].sort-desc::after { content: ' ▼'; font-size: .7em; opacity: .8; }
th[data-sort].sort-active { color: var(--info); }
/* Loading skeleton */
.skeleton { background: linear-gradient(90deg, var(--raised) 25%, var(--border) 50%, var(--raised) 75%); background-size: 200% 100%; animation: skeleton-shimmer 1.4s ease-in-out infinite; border-radius: 4px; }
@keyframes skeleton-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } }
.skeleton-row td { padding: 10px 12px; }
.skeleton-cell { height: 14px; border-radius: 3px; }
/* Page toolbar */
.page-toolbar { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; flex-wrap: wrap; gap: 12px; }
.page-toolbar-left h2 { margin: 0 0 2px; font-size: 1.05rem; font-weight: 700; }
.page-toolbar-left p  { margin: 0; font-size: .75rem; color: var(--sub); }
.page-toolbar-right   { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

/* Modal overlay (fw, std, csv modals) */
.modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,.82); z-index: 1000; display: flex; align-items: center; justify-content: center; opacity: 0; pointer-events: none; transition: opacity .2s; }
.modal-overlay.open { opacity: 1; pointer-events: all; }
.modal-overlay .modal { transform: translateY(10px); transition: transform .2s; }
.modal-overlay.open .modal { transform: none; }
.modal-hdr { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px; border-bottom: 1px solid var(--border); }
.modal-hdr span { font-family: var(--mono); font-size: .85rem; font-weight: 600; color: var(--text); }
.modal-close { background: none; border: none; color: var(--sub); font-size: 1rem; cursor: pointer; padding: 4px 8px; border-radius: 4px; }
.modal-close:hover { background: var(--raised); color: var(--text); }
.modal-footer { display: flex; gap: 8px; padding: 14px 20px; border-top: 1px solid var(--border); justify-content: flex-end; }
.modal-footer .btn-danger { margin-right: auto; }
/* ── Searchable multi-select component ───────────────────────────────────── */
.msel{position:relative}
.msel-display{display:flex;flex-wrap:wrap;gap:4px;align-items:center;padding:5px 8px;border:1px solid var(--border);border-radius:6px;background:var(--raised);min-height:36px;cursor:text;transition:border-color .15s,box-shadow .15s}
.msel-display:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px rgba(59,158,255,.15)}
.msel-chip{display:inline-flex;align-items:center;gap:3px;padding:2px 8px 2px 6px;background:rgba(59,158,255,.12);border:1px solid var(--accent,#3b9eff);border-radius:12px;font-size:.72rem;color:var(--text);white-space:nowrap;max-width:220px}
.msel-chip>span:first-child{overflow:hidden;text-overflow:ellipsis}
.msel-chip-x{cursor:pointer;font-size:.9rem;line-height:1;color:var(--sub);margin-left:2px;flex-shrink:0}
.msel-chip-x:hover{color:var(--danger)}
.msel-input{border:none;background:none;outline:none;color:var(--text);font-size:.82rem;min-width:90px;flex:1;padding:2px 4px;font-family:inherit}
.msel-dropdown{position:absolute;left:0;right:0;top:calc(100% + 3px);z-index:9999;background:var(--raised);border:1px solid var(--border);border-radius:6px;box-shadow:0 4px 20px rgba(0,0,0,.28);max-height:210px;overflow-y:auto;display:none}
.msel-dropdown.open{display:block}
.msel-opt{display:flex;align-items:center;gap:8px;padding:7px 10px;font-size:.82rem;cursor:pointer}
.msel-opt:hover{background:var(--hover)}
.msel-opt.msel-sel{background:rgba(59,158,255,.07)}
.msel-chk{width:14px;height:14px;border:1.5px solid var(--border2);border-radius:3px;display:flex;align-items:center;justify-content:center;font-size:9px;flex-shrink:0}
.msel-opt.msel-sel .msel-chk{background:var(--accent,#3b9eff);border-color:var(--accent,#3b9eff);color:#fff}
.msel-opt-body{min-width:0;flex:1}
.msel-opt-lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msel-opt-sub{font-size:.7rem;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msel-empty{padding:10px 12px;font-size:.8rem;color:var(--sub);text-align:center}
.msel-more{padding:5px 12px;font-size:.73rem;color:var(--sub);text-align:center;border-top:1px solid var(--border)}
[data-theme="light"] .msel-chip{background:rgba(29,78,216,.1);border-color:#1d4ed8}
.catalog-form .form-row { margin-bottom: 12px; }
.catalog-form .form-label { display: block; font-size: .72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .08em; color: var(--sub); margin-bottom: 5px; }
.form-row-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.logo-preview { width: 56px; height: 56px; background: var(--raised); border: 1px solid var(--border); border-radius: 6px; display: flex; align-items: center; justify-content: center; overflow: hidden; cursor: pointer; }
.logo-preview img { width: 100%; height: 100%; object-fit: contain; }
.color-row { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.color-swatch { width: 28px; height: 28px; border-radius: 50%; cursor: pointer; border: 2px solid transparent; transition: border-color .15s, transform .1s; }
.color-swatch:hover { transform: scale(1.12); }
.color-swatch.active { border-color: var(--text); box-shadow: 0 0 0 2px var(--bg); }

/* Utility */
.hidden { display: none !important; }
.page { display: none; }
.page.active { display: block; }
::-webkit-scrollbar { width: 5px; height: 5px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: var(--border2); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: var(--sub); }

/* ── Tab bar / tab button (was unstyled - relied on browser defaults, ──
   ── which rendered as white pills in dark mode). Modern dark-aware. ── */
.tab-bar {
  display: flex; flex-wrap: wrap; gap: 4px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 0;
}
.tab-btn {
  font-family: var(--sans);
  font-size: .78rem;
  font-weight: 500;
  background: transparent;
  border: 1px solid transparent;
  color: var(--sub);
  padding: 7px 14px;
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
  cursor: pointer;
  transition: color var(--t-fast) var(--ease), background var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
  display: inline-flex; align-items: center; gap: 6px;
  white-space: nowrap;
  margin-bottom: -1px;
}
.tab-btn:hover {
  color: var(--text);
  background: var(--raised);
}
.tab-btn.active {
  color: var(--accent);
  border-color: var(--border);
  border-bottom-color: var(--surface);
  background: var(--surface);
  font-weight: 600;
}
.tab-btn:focus-visible {
  outline: none;
  box-shadow: var(--focus-ring);
}
/* Standalone (non-tab-bar) usage - e.g. config docs tag chips: render as pills. */
*:not(.tab-bar) > .tab-btn {
  border-radius: var(--radius-pill);
  border: 1px solid var(--border);
  margin-bottom: 0;
  font-family: var(--mono);
  font-size: .68rem;
  text-transform: lowercase;
  letter-spacing: .04em;
  padding: 4px 11px;
}
*:not(.tab-bar) > .tab-btn.active {
  background: var(--info-bg);
  border-color: var(--info);
  color: var(--info);
}

/* ── Modern polish 2026-04: a11y focus fallback + reduced-motion ── */
a:focus-visible, button:focus-visible, [role="button"]:focus-visible,
[tabindex]:focus-visible, summary:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ── Report styles ── */
.report-preview { background: var(--surface); border: 1px solid var(--border); border-radius: 6px; padding: 24px; }
.rpt-section { margin-bottom: 28px; }
.rpt-section h2 { font-size: 1rem; font-weight: 700; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 1px solid var(--border); }
.rpt-kpi-row { display: flex; gap: 16px; flex-wrap: wrap; margin-bottom: 16px; }
.rpt-kpi { background: var(--raised); border: 1px solid var(--border); border-radius: 6px; padding: 14px 20px; text-align: center; min-width: 100px; }
.rpt-kpi-num { font-size: 1.8rem; font-weight: 700; line-height: 1; }
.rpt-kpi-label { font-size: .72rem; color: var(--sub); margin-top: 4px; }
.rpt-table { width: 100%; border-collapse: collapse; font-size: .78rem; }
.rpt-table th { text-align: left; padding: 6px 10px; border-bottom: 2px solid var(--border2); color: var(--sub); font-family: var(--mono); font-size: .65rem; text-transform: uppercase; letter-spacing: .06em; }
.rpt-table td { padding: 7px 10px; border-bottom: 1px solid var(--border); vertical-align: top; }
#apps-table td { padding: 4px 8px; vertical-align: middle; }
#apps-table th { padding: 5px 8px; }
#apps-table td:first-child { text-align: center; vertical-align: middle; }
.rpt-table tr:hover td { background: var(--raised); }
.rpt-bar-row { display: flex; align-items: center; gap: 10px; margin: 5px 0; font-size: .78rem; }
.rpt-bar-track { flex: 1; height: 10px; background: var(--raised); border-radius: 3px; overflow: hidden; }
.rpt-bar-fill { height: 100%; border-radius: 3px; transition: width .3s; }

/* ── People page ── */
.person-card { display: flex; align-items: center; gap: 10px; padding: 8px 10px; background: var(--raised); border: 1px solid var(--border); border-radius: 5px; margin-bottom: 6px; }
.person-avatar { width: 32px; height: 32px; border-radius: 50%; background: var(--info-bg); border: 1.5px solid var(--info); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: .8rem; color: var(--info); flex-shrink: 0; }
.person-name { font-weight: 600; font-size: .82rem; }
.person-meta { font-size: .7rem; color: var(--sub); }
.role-badge { display: inline-block; font-size: .6rem; font-weight: 700; padding: .1rem .3rem; border-radius: 3px; background: var(--raised); border: 1px solid var(--border2); color: var(--sub); margin-left: 4px; }

/* ── Print styles ── */
@media print {
  .sidebar, .topbar, .filter-bar, .btn, .nav-item, .toast-container { display: none !important; }
  .main { margin: 0 !important; padding: 0 !important; }
  .content { padding: 0 !important; }
  .report-preview { border: none !important; padding: 0 !important; box-shadow: none !important; background: white !important; color: black !important; }
  .rpt-table th, .rpt-table td { color: black !important; border-color: #ccc !important; }
  .rpt-kpi { border: 1px solid #ccc !important; background: white !important; }
  .badge { border: 1px solid #999 !important; }
  body { background: white !important; }
  .page { display: none !important; }
  #page-reports { display: block !important; }
}
.active-filter { border-color: var(--info) !important; color: var(--info) !important; background: var(--info-bg) !important; }
#catalog-table th { cursor: pointer; }
#catalog-table th:hover { color: var(--text); }

/* Light mode toggle transition */
*, *::before, *::after { transition: background-color .15s, border-color .15s, color .1s; }

/* Apps/Standards page grid cards */
.settings-card { background: var(--surface); border: 1px solid var(--border); border-radius: 3px; padding: 16px; }
.settings-card:hover { border-color: var(--border2); }

/* Agent settings page */
.agent-kpi-row { display: flex; gap: 14px; flex-wrap: wrap; margin-bottom: 16px; }
.agent-kpi { background: var(--raised); border: 1px solid var(--border); border-radius: 3px; padding: 14px 18px; min-width: 140px; flex: 1; }
.agent-kpi-num { font-size: 1.6rem; font-weight: 700; line-height: 1; font-family: var(--mono); }
.agent-kpi-label { font-size: .68rem; color: var(--sub); margin-top: 4px; font-family: var(--mono); text-transform: uppercase; letter-spacing: .06em; }
.agent-cmd-block { background: var(--bg); border: 1px solid var(--border); border-radius: 6px; padding: 12px 14px; font-family: var(--mono); font-size: .72rem; line-height: 1.7; overflow-x: auto; white-space: pre-wrap; word-break: break-all; position: relative; color: var(--text); }
.agent-cmd-block .cmd-comment { color: var(--sub); }
.agent-cmd-block .cmd-param { color: var(--info); }
.agent-cmd-copy { position: absolute; top: 6px; right: 6px; background: var(--surface); border: 1px solid var(--border2); border-radius: 4px; padding: 3px 8px; font-size: .62rem; cursor: pointer; color: var(--sub); font-family: var(--mono); }
.agent-cmd-copy:hover { color: var(--text); border-color: var(--info); }

/* Runbook wizard steps */
.wizard-steps { display: flex; gap: 0; margin-bottom: 20px; border-bottom: 2px solid var(--border); }
.wizard-step { display: flex; align-items: center; gap: 6px; padding: 10px 16px; font-size: .75rem; font-family: var(--mono); color: var(--sub); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all .15s; user-select: none; }
.wizard-step:hover { color: var(--text); }
.wizard-step.active { color: var(--info); border-bottom-color: var(--info); }
.wizard-step.completed { color: var(--pass); }
.wizard-step-num { width: 22px; height: 22px; border-radius: 50%; border: 1.5px solid var(--border2); display: flex; align-items: center; justify-content: center; font-size: .65rem; font-weight: 700; flex-shrink: 0; }
.wizard-step.active .wizard-step-num { border-color: var(--info); background: var(--info-bg); color: var(--info); }
.wizard-step.completed .wizard-step-num { border-color: var(--pass); background: var(--pass-bg); color: var(--pass); }
.wizard-panel { display: none; }
.wizard-panel.active { display: block; }
.wizard-checklist { list-style: none; padding: 0; margin: 0; }
.wizard-checklist li { display: flex; align-items: flex-start; gap: 8px; padding: 8px 0; border-bottom: 1px solid var(--border); font-size: .78rem; }
.wizard-checklist li:last-child { border-bottom: none; }
.wizard-check { color: var(--pass); font-size: .9rem; flex-shrink: 0; margin-top: 1px; }
.wizard-resource-row { display: grid; grid-template-columns: 180px 1fr; gap: 8px; align-items: center; margin-bottom: 8px; }
.wizard-resource-row label { font-size: .75rem; font-weight: 600; }
.wizard-resource-row input { font-size: .75rem; font-family: var(--mono); padding: 6px 10px; background: var(--bg); border: 1px solid var(--border); border-radius: 4px; color: var(--text); }
.wizard-resource-row input:focus { outline: none; border-color: var(--info); }
@media (max-width: 768px) {
  .agent-kpi-row { flex-direction: column; }
  .wizard-steps { flex-wrap: wrap; }
  .wizard-resource-row { grid-template-columns: 1fr; }
}

/* Standard coverage bar */
.std-cover-bar { height: 4px; background: var(--raised); border-radius: 2px; overflow: hidden; }
.std-cover-fill { height: 100%; border-radius: 2px; }

/* Framework org filter pills */
#fwmgr-org-pills .btn { border-radius: 3px; }

/* CSV drop zone hover */
#csv-drop-zone:hover { border-color: var(--info); background: var(--info-bg); }

/* Scrollable standard detail modal */
#std-detail-modal .modal { display: flex; flex-direction: column; }

/* App page compliance mini-bar */
.app-comply-bar { height: 5px; background: var(--raised); border-radius: 3px; overflow: hidden; margin: 4px 0; }

/* Group-by header row */
tr[data-group-id] td { background: var(--raised) !important; border-top: 2px solid var(--border2); }

/* Sidebar nav section labels (legacy) */
.nav-section-label { font-family: var(--mono); font-size: .58rem; text-transform: uppercase; letter-spacing: .12em; color: var(--sub); padding: 12px 16px 4px; }
/* Collapsible nav groups */
.nav-group { }
.nav-group-header { display: flex; align-items: center; gap: 8px; padding: 8px 14px 7px; cursor: pointer; user-select: none; font-size: .78rem; font-weight: 500; color: var(--sub); transition: color .15s, background .12s; border-left: 2px solid transparent; }
.nav-group-header:hover { background: var(--raised); color: var(--text); }
.nav-chevron { display: none; }
/* Items hidden by default; revealed on click (.open) OR when group is active */
.nav-group-items { max-height: 0; overflow: hidden; opacity: 0; pointer-events: none; transition: max-height .3s ease, opacity .15s ease; }
.nav-group.open .nav-group-items, .nav-group.active .nav-group-items { max-height: 2000px; opacity: 1; pointer-events: auto; }
/* Chevron indicator on group headers */
.nav-group-header { position: relative; }
.nav-group-header::after { display: none; }
.nav-group.open .nav-group-header::after, .nav-group.active .nav-group-header::after { display: none; }
/* When sidebar search is active, expand all visible groups. display:block
   !important is required to beat the nav-v3 collapse rule
   (.shell[data-nav-v3] .nav-panel .nav-group:not(.open):not(.active) >
   .nav-group-items { display:none }) so matches in other modules surface (#1473).
   filterNavItems hides non-matching items/groups via inline styles. */
.sidebar.searching .nav-group-items { display: block !important; max-height: 2000px !important; opacity: 1 !important; pointer-events: auto !important; }
/* While searching, show group headers too so users see which module a match
   belongs to (headers are otherwise hidden under nav-v3). */
.shell[data-nav-v3] .sidebar.searching .nav-panel .nav-group-header { display: flex !important; }
#sidebar-search { width:100%;font-size:.72rem;padding:5px 8px 5px 26px;border-radius:4px;border:1px solid var(--border);background:var(--raised);color:var(--text);outline:none;box-sizing:border-box; }
#sidebar-search:focus { border-color:var(--accent); }
#sidebar-search-wrap { position:relative;padding:6px 10px 2px; }
#sidebar-search-wrap::before { content:'⌕';position:absolute;left:18px;top:50%;transform:translateY(-50%);font-size:.8rem;color:var(--sub);pointer-events:none; }

/* ── Category Hub (#163) ── */
.hub-header { display:flex; align-items:center; gap:16px; padding:24px 0 20px; border-bottom:1px solid var(--border); margin-bottom:20px; }
.hub-title-icon { font-size:2rem; width:48px; text-align:center; opacity:.7; }
.hub-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:12px; }
.hub-card { display:flex; align-items:flex-start; gap:12px; padding:14px 16px; background:var(--surface); border:1px solid var(--border); border-radius:8px; cursor:pointer; transition:border-color .15s, background .15s, transform .1s; }
.hub-card:hover { border-color:var(--accent); background:color-mix(in srgb, var(--accent) 6%, var(--surface)); transform:translateY(-1px); }
.hub-card-icon { font-size:1.2rem; opacity:.6; margin-top:2px; min-width:20px; text-align:center; }
.hub-card-title { font-weight:600; font-size:.82rem; margin-bottom:3px; }
.hub-card-desc { font-size:.72rem; color:var(--sub); line-height:1.4; }
/* ═════ Canonical KPI tiles (parity with tater-shared.css) ═════
   tater-app.css (TATER.html + hub.html) previously defined NONE of the canonical
   .kpi family — TATER uses its own prefixed schemes (.rpt-kpi-*, .mod-dash-kpi-*)
   and hub uses .hub-kpi-chip-scoped classes. That meant the shared taterKpiCard()
   builder would render unstyled here. These mirror tater-shared.css exactly so the
   builder looks identical in every app. Purely additive: no existing TATER/hub
   markup uses these bare class names.
   NOTE: deliberately NOT defining bare .kpi-lbl / .kpi-val — hub scopes those
   under .hub-kpi-chip, and a bare rule would leak styles (e.g. font-weight) onto
   the hub chips. taterKpiCard emits .kpi-label/.kpi-value, never .kpi-lbl. */
.kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 10px; margin-bottom: 14px; }
.kpi { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; }
.kpi-card { background: var(--card); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; }
.kpi-label { font-size: .62rem; text-transform: uppercase; letter-spacing: .06em; color: var(--sub); font-weight: 600; }
.kpi-value { font-size: 1.5rem; font-weight: 700; margin-top: 4px; }
.kpi-icon { font-size: 1.1rem; line-height: 1; }
@media (max-width: 768px) {
  .kpis { grid-template-columns: repeat(2, 1fr) !important; gap: 8px !important; }
  .kpi, .kpi-card { padding: 10px !important; }
  .kpi-value { font-size: 1.4rem !important; }
  .kpi-label { font-size: .6rem !important; }
}

/* Hub KPI band */
.hub-kpi-bar { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:20px; }
.hub-kpi-chip { display:flex; flex-direction:column; align-items:center; padding:10px 18px; background:var(--surface); border:1px solid var(--border); border-radius:8px; min-width:78px; cursor:default; transition:border-color .15s; }
.hub-kpi-chip:hover { border-color:var(--accent); }
.hub-kpi-chip .kpi-val { font-size:1.35rem; font-weight:700; font-family:var(--mono); line-height:1.1; }
.hub-kpi-chip .kpi-lbl { font-size:.62rem; color:var(--sub); text-transform:uppercase; letter-spacing:.05em; margin-top:3px; white-space:nowrap; }
.hub-kpi-chip.kpi-pass { border-color:rgba(34,197,94,.35); } .hub-kpi-chip.kpi-pass .kpi-val { color:var(--pass); }
.hub-kpi-chip.kpi-fail { border-color:rgba(239,68,68,.35); } .hub-kpi-chip.kpi-fail .kpi-val { color:var(--fail); }
.hub-kpi-chip.kpi-warn { border-color:rgba(234,179,8,.35); } .hub-kpi-chip.kpi-warn .kpi-val { color:#eab308; }
.hub-kpi-chip.kpi-accent { border-color:rgba(59,158,255,.35); } .hub-kpi-chip.kpi-accent .kpi-val { color:var(--accent); }
.hub-kpi-skeleton { background:var(--surface); border:1px solid var(--border); border-radius:8px; width:90px; height:62px; animation:skeleton-pulse 1.4s ease-in-out infinite; }
@keyframes skeleton-pulse { 0%,100%{opacity:.4} 50%{opacity:.9} }

/* ── Login Screen ── */
.login-screen {
  position: fixed; inset: 0; z-index: 500;
  background: radial-gradient(ellipse at 30% 20%, rgba(59,158,255,.08) 0%, transparent 50%),
              radial-gradient(ellipse at 70% 80%, rgba(45,204,113,.05) 0%, transparent 50%),
              var(--bg);
  display: flex; align-items: center; justify-content: center;
  transition: opacity .3s;
}
.login-screen.hidden { opacity: 0; pointer-events: none; }
.login-card {
  background: var(--surface); border: 1px solid var(--border2);
  border-radius: 16px; padding: 52px 44px; text-align: center;
  max-width: 440px; width: calc(100% - 40px);
  box-shadow: 0 12px 48px rgba(0,0,0,.5), 0 0 0 1px rgba(59,158,255,.06);
}
.login-shield {
  width: 88px; height: 88px; margin: 0 auto 24px;
  display: flex; align-items: center; justify-content: center;
  filter: drop-shadow(0 0 20px rgba(59,158,255,.2));
}
.login-shield img { width: 100%; height: 100%; object-fit: contain; }
.login-title {
  font-family: var(--mono); font-size: 2rem; font-weight: 700;
  color: #ffffff; letter-spacing: .12em; margin-bottom: 6px;
}
.login-title span { color: #ffffff; }
.login-tagline {
  font-family: var(--mono); font-size: .66rem; color: var(--sub);
  letter-spacing: .12em; text-transform: uppercase; margin-bottom: 32px;
}
.login-btn {
  display: inline-flex; align-items: center; gap: 10px;
  background: linear-gradient(135deg, #3b9eff 0%, #2b7fd4 100%); color: #fff; border: none;
  padding: 14px 28px; border-radius: 8px; font-size: .9rem;
  font-weight: 600; font-family: var(--sans); cursor: pointer;
  transition: all .2s; width: 100%;
  justify-content: center;
  box-shadow: 0 2px 12px rgba(59,158,255,.25);
}
.login-btn:hover { background: linear-gradient(135deg, #4da8ff 0%, #3b9eff 100%); transform: translateY(-1px); box-shadow: 0 6px 24px rgba(59,158,255,.35); }
.login-btn:active { transform: none; box-shadow: 0 2px 8px rgba(59,158,255,.2); }
.login-btn-password { background: linear-gradient(135deg, var(--success) 0%, #1fa855 100%); box-shadow: 0 2px 12px rgba(45,204,113,.2); margin-top: 4px; }
.login-btn-password:hover { background: linear-gradient(135deg, #36d87a 0%, var(--success) 100%); box-shadow: 0 6px 24px rgba(45,204,113,.3); }
.login-input {
  width: 100%; padding: 12px 14px; border-radius: 8px; border: 1px solid var(--border2);
  background: var(--bg); color: var(--text); font-size: .85rem; font-family: var(--sans);
  margin-bottom: 8px; box-sizing: border-box; outline: none; transition: border-color .2s, box-shadow .2s;
}
.login-input:focus { border-color: var(--info); box-shadow: 0 0 0 3px rgba(59,158,255,.15); }
.login-input::placeholder { color: var(--muted); }
.login-divider { display: flex; align-items: center; gap: 12px; color: var(--muted); }
.login-divider::before, .login-divider::after { content: ''; flex: 1; height: 1px; background: var(--border); }
.login-btn svg { width: 20px; height: 20px; }
.login-divider {
  display: flex; align-items: center; gap: 12px;
  margin: 20px 0; color: var(--sub); font-size: .72rem;
}
.login-divider::before, .login-divider::after {
  content: ''; flex: 1; height: 1px; background: var(--border);
}
.login-offline-btn {
  background: transparent; border: 1px solid var(--border2);
  color: var(--sub); padding: 12px 20px; border-radius: 8px;
  font-size: .78rem; font-family: var(--sans); cursor: pointer;
  transition: all .15s; width: 100%;
}
.login-offline-btn:hover { border-color: var(--text); color: var(--text); background: rgba(255,255,255,.03); }
.login-error {
  margin-top: 16px; font-size: .75rem; color: var(--fail);
  display: none;
}
.login-footer {
  margin-top: 28px; font-size: .6rem; color: var(--border2);
  font-family: var(--mono); letter-spacing: .08em;
}
.login-dev-tools { display: none; }
.login-sim-row { display: flex; gap: 8px; }
.login-sim-btn {
  flex: 1; padding: 8px 4px; border-radius: 6px; font-size: .7rem;
  font-family: var(--mono); cursor: pointer; transition: all .15s;
  border: 1px solid var(--border); background: transparent; color: var(--sub);
}
.login-sim-btn:hover { color: var(--text); border-color: var(--text); }
.sim-viewer:hover { border-color: var(--sub); color: var(--sub); background: rgba(160,160,160,.08); }
.sim-admin:hover { border-color: var(--pass); color: var(--pass); background: rgba(45,204,113,.08); }
.sim-sa:hover { border-color: var(--info); color: var(--info); background: rgba(59,158,255,.08); }

/* User info in topbar */
.user-info {
  display: flex; align-items: center; gap: 8px;
  font-size: .75rem; color: var(--sub);
  padding-left: 8px; border-left: 1px solid var(--border);
  flex-shrink: 0; margin-left: 4px;
}
.topbar-icon-btn {
  width: 32px; height: 32px; min-width: 32px; min-height: 32px;
  padding: 0; display: flex; align-items: center; justify-content: center;
  border-radius: 6px; flex-shrink: 0; font-size: 1rem;
}
.user-avatar {
  width: 32px; height: 32px; min-width: 32px; min-height: 32px;
  border-radius: 50%; overflow: hidden;
  background: var(--info-bg); border: 1.5px solid var(--info);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: .7rem; color: var(--info); flex-shrink: 0;
}
.user-name { font-weight: 600; color: var(--text); white-space: nowrap; }
.user-signout {
  background: none; border: none; color: var(--sub); font-size: .68rem;
  cursor: pointer; padding: 2px 4px; border-radius: 3px;
  font-family: var(--sans); transition: color .15s;
}
.user-signout:hover { color: var(--fail); }
/* Dropdown menu items - reused by tools, profile, org menus */
.topbar-dropdown { display:none;position:absolute;top:calc(100% + 4px);right:0;min-width:200px;background:var(--raised);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.25);z-index:9999;padding:6px 0; }
.topbar-dropdown.open { display:block; }
.tools-menu-item { padding:8px 14px;font-size:.78rem;cursor:pointer;color:var(--text);white-space:nowrap;display:flex;align-items:center;gap:8px; }
.tools-menu-item:hover { background:var(--info-bg);color:var(--info); }
.tools-menu-item.danger { color:var(--fail); }
.tools-menu-item.danger:hover { background:rgba(231,76,60,.1);color:var(--fail); }
@media (max-width: 768px) {
  .login-card { padding: 32px 24px; }
  .login-title { font-size: 1.2rem; }
  .user-name { display: none; }
  .user-info { padding-left: 4px; border: none; }
}

/* ── Hamburger button (hidden on desktop) ── */
.hamburger { display: none; background: none; border: none; color: var(--text); font-size: 1.4rem; cursor: pointer; padding: 4px 8px; border-radius: 4px; flex-shrink: 0; line-height: 1; }
.hamburger:hover { background: var(--raised); }

/* ── Mobile sidebar overlay ── */
.sidebar-overlay { display: none; position: fixed; inset: 0; background: rgba(0,0,0,.6); z-index: 49; }
.sidebar-overlay.open { display: block; }

/* ══════════════════════════════════════════════════════════
   MOBILE RESPONSIVE - Tablet (≤960px)
   ══════════════════════════════════════════════════════════ */
@media (max-width: 960px) {
  .stat-grid { grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 8px; }
  .app-bars { grid-template-columns: 1fr; }
  .override-card { grid-template-columns: 1fr; }
  .override-meta { text-align: left; }
  .form-row-2 { grid-template-columns: 1fr; }
  .rpt-kpi-row { justify-content: center; }
}

/* ══════════════════════════════════════════════════════════
   MOBILE RESPONSIVE - Phone (≤768px)
   ══════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  /* Show hamburger, hide sidebar */
  .hamburger { display: block; }

  .sidebar {
    position: fixed;
    top: 0; left: 0; bottom: 0;
    z-index: 50;
    transform: translateX(-100%);
    transition: transform .25s ease;
    width: 260px;
    min-width: 260px;
    box-shadow: none;
  }
  .sidebar.open {
    transform: translateX(0);
    box-shadow: 4px 0 24px rgba(0,0,0,.5);
  }

  .shell { flex-direction: column; }
  .main { width: 100%; min-height: 0; overflow: hidden; }
  .content { -webkit-overflow-scrolling: touch; overflow-y: auto; }

  /* Topbar - wrap, hide redundant elements */
  .topbar { flex-wrap: wrap; height: auto; min-height: 48px; padding: 6px 12px; gap: 6px; }
  .topbar-logo { display: none !important; }
  .topbar-company { display: none !important; }
  .topbar-title { font-size: .68rem; max-width: 100px; }
  .topbar-meta { display: none; }
  #impersonate-selector { display: none !important; }
  .topbar-actions { gap: 4px; }
  .topbar-actions .btn { font-size: .68rem; padding: .25rem .5rem; }
  /* Hide less important topbar buttons on mobile (older rule); the
     hamburger handles cleaner overflow for new icon buttons. */
  .topbar-actions .btn:not(#theme-toggle):not(:first-of-type) { display: none; }
  .topbar-actions .btn#theme-toggle { order: -1; }
  .topbar-actions > .topbar-hamburger-btn { display: inline-flex; }
  #org-selector-btn { max-width: 140px; font-size: .72rem; padding: 4px 8px; }
  #org-role-badge { font-size: .7rem; }

  /* Content padding */
  .content { padding: 14px; }

  /* Stat grid */
  .stat-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; margin-bottom: 16px; }
  .stat-num { font-size: 1.4rem; }
  .stat-card { padding: 12px; }

  /* Dashboard flex layout → stack */
  #dash-data > div[style*="display:flex"] { flex-direction: column !important; }

  /* Trend chart */
  .trend-card { padding: 12px; margin-bottom: 16px; }
  .trend-hdr { flex-direction: column; align-items: flex-start; gap: 6px; }

  /* App bars grid */
  .app-bars { grid-template-columns: 1fr; gap: 8px; margin-bottom: 16px; }

  /* Filter bar - stack vertically on mobile */
  .filter-bar { flex-direction: column; gap: 6px; }
  .filter-bar input { width: 100%; min-width: 0; }
  .filter-bar select { width: 100%; min-width: 0; flex: none; }
  .filter-bar > div[style*="margin-left:auto"] { margin-left: 0 !important; width: 100%; display: flex; gap: 6px; }
  .filter-bar > div[style*="margin-left:auto"] .btn { flex: 1; }
  #page-reports .filter-bar select { max-width: none !important; }

  /* Table: hide less important columns on small screens */
  .ctrl-table-wrap { margin: 0 -14px; border-radius: 0; border-left: none; border-right: none; -webkit-overflow-scrolling: touch; }
  table { font-size: .75rem; }
  th, td { padding: 7px 8px; }
  td .badge { font-size: .58rem; padding: 1px 5px; }
  .td-title { max-width: 160px; }
  .td-fw { display: none; }
  th:nth-child(5), td:nth-child(5) { display: none; } /* Hide Framework column */

  /* Detail row */
  .detail-inner { grid-template-columns: 1fr; padding: 12px 14px; gap: 12px; }
  .detail-inner pre { font-size: .65rem; max-height: 100px; overflow: auto; }
  .detail-inner img { max-width: 100%; height: auto; }

  /* Scan cards */
  .scan-card { flex-direction: column; align-items: flex-start; gap: 8px; padding: 12px; }
  .scan-stats { flex-wrap: wrap; gap: 8px; }

  /* Override cards */
  .override-card { grid-template-columns: 1fr; gap: 6px; padding: 10px 12px; }
  .override-meta { text-align: left; display: flex; gap: 12px; flex-wrap: wrap; }

  /* Upload zone */
  .upload-zone { padding: 20px 16px; }
  .upload-icon { font-size: 1.5rem; }

  /* Modal */
  .modal { width: calc(100vw - 24px); max-height: calc(100vh - 40px); padding: 18px; }
  .modal-title { font-size: .8rem; }

  /* Empty state */
  .empty-state { padding: 40px 16px; }
  .empty-icon { font-size: 2rem; }
  .empty-state h3 { font-size: .8rem; }

  /* Reports */
  .rpt-kpi { padding: 10px 14px; min-width: 80px; }
  .rpt-kpi-num { font-size: 1.3rem; }
  .report-preview { padding: 14px; }
  .rpt-section h2 { font-size: .82rem; flex-wrap: wrap; }

  /* People cards */
  .person-card { padding: 8px; gap: 8px; }

  /* Section headers & page-level */
  .section-hdr h2 { font-size: .72rem; }
  .page > .section-hdr { flex-direction: column; align-items: flex-start; gap: 6px; }
  .page > .section-hdr .btn { width: 100%; }
  .pagination { flex-wrap: wrap; justify-content: center; gap: 4px; }
  .pagination .btn { padding: .25rem .4rem; font-size: .68rem; }

  /* Settings cards */
  .settings-card { padding: 12px; }
  /* Device management grid → stack on mobile */
  #devicemgmt-card > div[style*="grid-template-columns"] { grid-template-columns: 1fr !important; }
  /* Trust Center editor → stack on mobile */
  #tc-editor-grid { grid-template-columns: 1fr !important; }
}

/* ══════════════════════════════════════════════════════════
   MOBILE RESPONSIVE - Small phone (≤480px)
   ══════════════════════════════════════════════════════════ */
/* ── Org selector styling ── */
#org-selector-btn { transition: border-color .2s; background: var(--raised) !important; color: var(--text) !important; }
#org-selector-btn:hover { border-color: var(--accent) !important; }
[data-theme="light"] #org-selector-btn { background: #fff !important; color: #2c3347 !important; border-color: var(--info) !important; }

@media (max-width: 480px) {
  .stat-grid { grid-template-columns: repeat(2, 1fr); gap: 6px; }
  .stat-num { font-size: 1.2rem; }
  .stat-label { font-size: .58rem; }
  .stat-card { padding: 10px; }

  /* Hide all topbar action buttons except theme toggle */
  .topbar-actions .btn:not(#theme-toggle) { display: none; }
  #org-selector-btn { max-width: 120px; font-size: .72rem; padding: 4px 6px; }

  .topbar-title { font-size: .66rem; max-width: 80px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

  .content { padding: 10px; }

  table { font-size: .7rem; }
  th, td { padding: 5px 6px; }
  .td-title { max-width: 120px; }

  /* Hide more table columns */
  th:nth-child(4), td:nth-child(4) { display: none; } /* Hide Application column */

  /* Modals - near full-screen on small phones */
  .modal { width: calc(100vw - 12px); max-height: calc(100vh - 20px); padding: 12px; border-radius: 6px; }
  .form-row { margin-bottom: 8px; }
  .modal-actions { flex-direction: column; gap: 6px; }
  .modal-actions .btn { width: 100%; }
  .form-input, .form-select, .form-textarea { font-size: .75rem; padding: .4rem .5rem; }

  /* Login - portrait-friendly */
  .login-card { padding: 28px 16px; }
  .login-btn { width: 100%; justify-content: center; padding: 12px 20px; }
  .login-shield { width: 44px; height: 44px; }

  /* Dashboard */
  .trend-card canvas { max-height: 180px; }

  .scan-ts { font-size: .72rem; min-width: auto; }
  .scan-meta { font-size: .72rem; min-width: auto; }
}

/* ══════════════════════════════════════════════════════════
   FAVORITES DROPDOWN
   ══════════════════════════════════════════════════════════ */
.fav-star { color: var(--sub); cursor: pointer; transition: color .15s, transform .15s; }
.fav-star:hover { color: #f59e0b; transform: scale(1.15); }
.fav-star.active { color: #f59e0b; }
#fav-dropdown { display:none;position:absolute;top:100%;right:0;min-width:220px;max-width:280px;background:var(--raised);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.35);z-index:9999;padding:6px 0;max-height:360px;overflow-y:auto; }
#fav-dropdown .fav-item { display:flex;align-items:center;gap:8px;padding:7px 14px;font-size:.78rem;color:var(--text);cursor:pointer;transition:background .12s; }
#fav-dropdown .fav-item:hover { background:var(--surface); }
#fav-dropdown .fav-item .fav-rm { margin-left:auto;opacity:0;color:var(--sub);font-size:.7rem;transition:opacity .12s; }
#fav-dropdown .fav-item:hover .fav-rm { opacity:1; }
#fav-dropdown .fav-empty { padding:16px;text-align:center;font-size:.72rem;color:var(--sub); }
#fav-dropdown .fav-hdr { padding:6px 14px;font-size:.62rem;text-transform:uppercase;letter-spacing:.08em;color:var(--sub);font-family:var(--mono);border-bottom:1px solid var(--border);margin-bottom:2px; }

/* ══════════════════════════════════════════════════════════
   WIDGET DASHBOARD
   ══════════════════════════════════════════════════════════ */
.wd-grid { display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-bottom:16px; }
.wd-widget { background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:14px 16px;position:relative;min-height:120px;transition:box-shadow .15s,border-color .15s; }
.wd-widget:hover { border-color:var(--accent);box-shadow:0 2px 12px rgba(0,0,0,.15); }
.wd-widget-hdr { display:flex;align-items:center;gap:8px;margin-bottom:10px;cursor:grab;user-select:none; }
.wd-widget-hdr .wd-grip { color:var(--sub);opacity:.4;font-size:.8rem;cursor:grab; }
.wd-widget-hdr .wd-title { font-size:.72rem;font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--sub);flex:1; }
.wd-widget-hdr .wd-close { background:none;border:none;color:var(--sub);cursor:pointer;font-size:.72rem;opacity:.5;padding:2px 4px;border-radius:3px;transition:all .12s; }
.wd-widget-hdr .wd-close:hover { opacity:1;background:var(--fail-bg);color:var(--fail); }
.wd-widget.dragging { opacity:.5;border:2px dashed var(--accent); }
.wd-widget.drag-over { border-color:var(--accent);box-shadow:0 0 0 2px var(--accent); }
.wd-add-btn { background:var(--surface);border:2px dashed var(--border);border-radius:8px;min-height:120px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--sub);font-size:.78rem;gap:6px;transition:all .15s; }
.wd-add-btn:hover { border-color:var(--accent);color:var(--accent); }
#wd-picker { display:none;position:fixed;inset:0;z-index:120;background:rgba(0,0,0,.75); }
#wd-picker-inner { max-width:560px;margin:60px auto;background:var(--raised);border:1px solid var(--border);border-radius:12px;padding:24px;max-height:70vh;overflow-y:auto; }
#wd-picker .wd-pick-card { display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:6px;cursor:pointer;margin-bottom:6px;transition:all .12s; }
#wd-picker .wd-pick-card:hover { border-color:var(--accent);background:var(--surface); }
#wd-picker .wd-pick-card.already { opacity:.4;pointer-events:none; }
#wd-picker .wd-pick-icon { font-size:1.1rem;width:28px;text-align:center; }
#wd-picker .wd-pick-name { font-size:.78rem;font-weight:600; }
#wd-picker .wd-pick-desc { font-size:.68rem;color:var(--sub); }

/* ══════════════════════════════════════════════════════════
   ENHANCED MOBILE - Dashboard + Widget + Tables
   ══════════════════════════════════════════════════════════ */
@media (max-width: 768px) {
  .wd-grid { grid-template-columns: 1fr; gap: 10px; }
  .wd-widget { min-height: 90px; padding: 12px; }
  #mydash-cols { grid-template-columns: 1fr !important; }
  #fav-dropdown { position: fixed; left: 8px; right: 8px; top: 52px; min-width: 0; max-width: none; }
  .ctrl-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
  #dash-quick-actions { padding: 8px 10px; gap: 4px; }
  #dash-quick-actions .btn { font-size: .65rem; padding: .2rem .4rem; }
  .metric-card { padding: 10px 12px; }
  .metric-value { font-size: 1.3rem; }
  div[style*="grid-template-columns: repeat(auto-fit"] { grid-template-columns: 1fr !important; }
  .section-hdr { flex-wrap: wrap; gap: 6px; }
  .section-hdr .btn { font-size: .68rem; }

  /* TABLES → card layout (matches tater-shared.css for sister apps) */
  table.tbl, table.table, .tbl-wrapper > table { border: none !important; }
  table.tbl thead, table.table thead { display: none; }
  table.tbl, table.tbl tbody, table.tbl tr, table.tbl td,
  table.table, table.table tbody, table.table tr, table.table td { display: block; width: 100%; }
  table.tbl tr, table.table tr {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 8px;
    margin-bottom: 8px;
    padding: 10px 12px;
  }
  table.tbl td, table.table td {
    padding: 4px 0 !important;
    border: none !important;
    font-size: .82rem;
  }
  table.tbl td:first-child, table.table td:first-child { font-weight: 600; color: var(--text); padding-top: 0 !important; font-size: .9rem; }
  table.tbl td::before, table.table td::before {
    content: attr(data-label);
    display: block;
    font-size: .58rem;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--sub);
    margin-bottom: 1px;
  }
  /* #779: tables rendered by tater-views.js emit <td> without data-label, so the
     rule above would paint an empty label block on every cell (stray gap in the
     mobile card layout). Suppress it where there is nothing to label. */
  table.tbl td:not([data-label])::before, table.table td:not([data-label])::before { display: none; }

  /* Modals → full-screen */
  .modal { max-width: 100% !important; width: 100% !important; height: 100vh; max-height: 100vh; margin: 0 !important; border-radius: 0 !important; }
  .modal-body { padding: 12px 14px !important; -webkit-overflow-scrolling: touch; overflow-y: auto; }
  .modal-actions { padding: 10px 14px !important; flex-wrap: wrap; gap: 6px; position: sticky; bottom: 0; background: var(--surface); border-top: 1px solid var(--border); z-index: 5; }
  .modal-actions .btn { flex: 1 1 auto; min-height: 40px; }

  /* Forms - stack 2/3-col grids vertically; bigger tap targets, 16px font to prevent iOS zoom */
  .form-row, .form-row-2, .form-row-3 { grid-template-columns: 1fr !important; gap: 10px !important; }
  .form-input, .form-select, .form-control,
  input[type="text"]:not(#org-selector-btn):not(.topbar-org-selector),
  input[type="email"], input[type="number"], input[type="date"], textarea, select { font-size: 16px !important; min-height: 40px; }
  textarea { min-height: 80px; }

  /* Buttons - Apple HIG ≥44px tap targets where space allows */
  .btn { min-height: 40px; padding: 8px 14px; }
  .btn-sm { min-height: 32px; padding: 6px 10px; font-size: .76rem; }

  /* Filter bars stack on mobile */
  .filter-bar { flex-direction: column; gap: 8px !important; }
  .filter-bar > * { width: 100% !important; }
}
@media (max-width: 480px) {
  .wd-grid { grid-template-columns: 1fr; }
  .wd-widget-hdr .wd-title { font-size: .65rem; }
  #dash-data > div:first-child { flex-direction: column !important; }
  #stat-grid { flex: none !important; }
  .trend-card { min-width: 0 !important; }
  #fav-dropdown { left: 4px; right: 4px; }
  #wd-picker-inner { margin: 20px 8px; padding: 16px; }
}

/* ─── Unified Controls V2 ──────────────────────────────────────────────────── */
.uc-domain-chip {
  display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:3px;
  font-size:.72rem;font-weight:600;cursor:pointer;border:1px solid var(--border);
  background:var(--surface);color:var(--sub);transition:all .15s;user-select:none;
}
.uc-domain-chip.active { background:var(--accent);color:#fff;border-color:var(--accent); }
.uc-domain-chip .uc-chip-count { font-weight:400;opacity:.8; }

.uc-fw-chip {
  display:inline-flex;align-items:center;padding:3px 8px;border-radius:3px;
  font-size:.66rem;font-weight:500;cursor:pointer;border:1px solid var(--border);
  background:var(--surface);color:var(--sub);transition:all .15s;user-select:none;
}
.uc-fw-chip.active { background:var(--info);color:#fff;border-color:var(--info); }

.uc-domain-section { margin-bottom:16px; }
.uc-domain-header {
  display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:3px;
  background:var(--surface);border:1px solid var(--border);cursor:pointer;user-select:none;
  margin-bottom:6px;
}
.uc-domain-header:hover { border-color:var(--accent); }
.uc-domain-header .uc-domain-label { font-weight:700;font-size:.82rem; }
.uc-domain-header .uc-domain-stats { font-size:.72rem;color:var(--sub);margin-left:auto; }
.uc-domain-header .uc-chevron { font-size:.7rem;color:var(--sub);transition:transform .2s; }
.uc-domain-section.collapsed .uc-domain-body { display:none; }
.uc-domain-section.collapsed .uc-chevron { transform:rotate(-90deg); }

.uc-control-table { width:100%;border-collapse:collapse; }
.uc-control-table th { text-align:left;font-size:.68rem;font-weight:600;color:var(--sub);padding:6px 10px;border-bottom:1px solid var(--border); }
.uc-control-table td { padding:7px 10px;font-size:.78rem;border-bottom:1px solid var(--border);vertical-align:middle; }
.uc-control-table tr:hover td { background:color-mix(in srgb, var(--accent) 4%, transparent); }
.uc-control-table tr.uc-control-row { cursor:pointer; }
.uc-control-table tr.uc-control-row.active { background:color-mix(in srgb, var(--accent) 12%, var(--bg));border-left:3px solid var(--accent); }

.uc-risk-badge { display:inline-block;padding:2px 7px;border-radius:4px;font-size:.66rem;font-weight:600; }
.uc-risk-badge.critical { background:var(--fail-bg);color:var(--fail);border:1px solid var(--fail);text-transform:uppercase;letter-spacing:.04em; }
.uc-risk-badge.high { background:#e67e22;color:#fff; }
.uc-risk-badge.medium { background:#f39c12;color:#fff; }
.uc-risk-badge.low { background:var(--success);color:#fff; }

.uc-variation-detail { background:var(--raised); }
.uc-variation-detail td { padding:5px 10px;font-size:.74rem; }

/* [Item 118] Slide-out detail panel */
.ucv2-slideout-backdrop { position:fixed;inset:0;background:rgba(0,0,0,.85);z-index:899;display:none; }
.ucv2-slideout { position:fixed;background:var(--surface);border:1px solid var(--border);box-shadow:0 -4px 24px rgba(0,0,0,.6);z-index:900;overflow:hidden;display:flex;flex-direction:column;transition:transform .2s ease;backdrop-filter:none;opacity:1; }
.ucv2-slideout.bottom { left:0;right:0;bottom:0;height:45vh;max-height:55vh;border-radius:6px 6px 0 0; }
.ucv2-slideout.right { top:0;right:0;bottom:0;width:45vw;max-width:600px;min-width:340px;border-radius:6px 0 0 6px; }
.ucv2-slideout-header { display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border);background:var(--raised);flex-shrink:0; }
.ucv2-slideout-body { flex:1;overflow-y:auto;overflow-x:hidden;padding:14px 18px;background:var(--surface);word-break:break-word; }
/* Variations table inside the slideout: do NOT use table-layout:fixed -
   when the slideout is narrow the browser shrinks each column to ~100px,
   then the inherited `word-break: break-word` from .ucv2-slideout-body
   wraps text at every character boundary (TIER renders as T/I/E/R
   stacked). Let columns size naturally and allow horizontal scroll. */
.ucv2-slideout.right .uc-control-table-wrap { overflow-x:auto;max-width:100%; }
.ucv2-slideout.right .uc-control-table { width:100%;table-layout:auto;min-width:560px; }
.ucv2-slideout.right .uc-control-table td,.ucv2-slideout.right .uc-control-table th {
  white-space:normal;
  word-break:normal;
  overflow-wrap:break-word;
}
.ucv2-slideout.right .detail-section table { max-width:100%;display:block;overflow-x:auto; }
.uc-variation-name { font-weight:600;font-size:.74rem; }
.uc-threshold-pill {
  display:inline-block;padding:1px 6px;border-radius:3px;font-size:.62rem;font-weight:500;
  background:color-mix(in srgb, var(--info) 15%, transparent);color:var(--info);
}
.uc-fw-badge {
  display:inline-block;padding:1px 6px;border-radius:3px;font-size:.6rem;font-weight:500;
  background:color-mix(in srgb, var(--sub) 12%, transparent);color:var(--sub);margin:1px 2px;
}
.uc-verdict-badge {
  display:inline-block;padding:2px 8px;border-radius:4px;font-size:.68rem;font-weight:600;
}
.uc-verdict-badge.uc-pass { background:color-mix(in srgb, var(--success) 15%, transparent);color:var(--success); }
.uc-verdict-badge.uc-fail { background:color-mix(in srgb, var(--danger) 15%, transparent);color:var(--danger); }
.uc-verdict-badge.uc-na { background:color-mix(in srgb, var(--sub) 10%, transparent);color:var(--sub); }
.uc-verdict-badge.uc-error { background:color-mix(in srgb, var(--warning) 15%, transparent);color:var(--warning); }
.uc-platform-tags { display:inline-flex;gap:3px;flex-wrap:wrap; }
.uc-platform-tag { font-size:.6rem;padding:1px 5px;border-radius:3px;background:color-mix(in srgb, var(--accent) 10%, transparent);color:var(--accent); }

/* Domain color accents */
.uc-domain-header[data-domain="IAM"] { border-left:3px solid #3498db; }
.uc-domain-header[data-domain="DATA"] { border-left:3px solid #2ecc71; }
.uc-domain-header[data-domain="NET"] { border-left:3px solid #e74c3c; }
.uc-domain-header[data-domain="LOG"] { border-left:3px solid #9b59b6; }
.uc-domain-header[data-domain="END"] { border-left:3px solid #f39c12; }
.uc-domain-header[data-domain="APP"] { border-left:3px solid #1abc9c; }
.uc-domain-header[data-domain="GOV"] { border-left:3px solid #e67e22; }

/* Policy Template Browser */
.tmpl-browser-modal { width: 900px; max-width: calc(100vw - 40px); max-height: 90vh; }
.tmpl-vars-modal { width: 700px; max-width: calc(100vw - 40px); max-height: 90vh; }
.tmpl-card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; max-height: 55vh; overflow-y: auto; padding: 2px; }
.tmpl-card { background: var(--raised); border: 1px solid var(--border); border-radius: 8px; padding: 16px; cursor: default; transition: border-color .15s, box-shadow .15s; display: flex; flex-direction: column; }
.tmpl-card:hover { border-color: var(--info); box-shadow: 0 2px 12px rgba(59,158,255,.12); }
.tmpl-card-title { font-family: var(--mono); font-size: .8rem; font-weight: 600; color: var(--text); margin-bottom: 6px; }
.tmpl-card-desc { font-size: .72rem; color: var(--sub); margin-bottom: 10px; flex: 1; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.tmpl-card-meta { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; }
.tmpl-badge { font-size: .62rem; padding: 2px 7px; border-radius: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.tmpl-badge-cat { background: var(--info-bg); color: var(--info); }
.tmpl-badge-basic { background: var(--pass-bg); color: var(--pass); }
.tmpl-badge-advanced { background: var(--info-bg); color: var(--info); }
.tmpl-badge-recommended { background: var(--warn-bg); color: var(--warn); font-size: .58rem; padding: 2px 7px; border-radius: 3px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; border: 1px solid var(--warn); }
.tmpl-card-icon { width: 36px; height: 36px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 1.1rem; margin-bottom: 0; flex-shrink: 0; }
.tmpl-difficulty-dots { display: flex; gap: 3px; align-items: center; }
.tmpl-difficulty-dot { width: 7px; height: 7px; border-radius: 50%; }
.tmpl-difficulty-dot.filled { opacity: 1; }
/* #1681: renamed from `.empty` — the shared `.empty` block primitive is now
   defined in this sheet, and a bare `empty` token on the dot would drag in its
   40px padding + dashed border. */
.tmpl-difficulty-dot.hollow { opacity: .25; }
.tmpl-card-header { display: flex; gap: 10px; align-items: flex-start; margin-bottom: 6px; }
.tmpl-card-header-text { flex: 1; min-width: 0; }
.policy-org-selector { margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.policy-org-selector .form-label { font-weight: 600; }
.policy-org-preview { display: flex; align-items: center; gap: 10px; margin-top: 6px; padding: 8px 10px; background: var(--detail-bg); border-radius: 6px; font-size: .75rem; }
.policy-org-preview img { height: 24px; max-width: 80px; object-fit: contain; }
.policy-org-preview .org-accent-swatch { width: 14px; height: 14px; border-radius: 3px; border: 1px solid var(--border); }
.tmpl-fw-pills { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 10px; }
.tmpl-fw-pill { font-size: .58rem; padding: 1px 6px; border-radius: 3px; background: var(--border); color: var(--sub); font-family: var(--mono); }
.tmpl-card-actions { margin-top: auto; }
.tmpl-card-actions .btn { width: 100%; justify-content: center; }
/* Template variable form */
.tmpl-var-group { margin-bottom: 16px; }
.tmpl-var-group-title { font-family: var(--mono); font-size: .72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--info); margin-bottom: 8px; padding-bottom: 4px; border-bottom: 1px solid var(--border); }
.tmpl-preview-panel { margin-top: 12px; padding: 16px; background: var(--detail-bg); border: 1px solid var(--border); border-radius: 6px; max-height: 300px; overflow-y: auto; }
.tmpl-preview-panel h1 { font-size: 1.1rem; font-weight: 700; margin: 12px 0 6px; color: var(--text); }
.tmpl-preview-panel h2 { font-size: .95rem; font-weight: 600; margin: 10px 0 5px; color: var(--text); }
.tmpl-preview-panel h3 { font-size: .85rem; font-weight: 600; margin: 8px 0 4px; color: var(--text); }
.tmpl-preview-panel p { margin: 4px 0; }
.tmpl-preview-panel ul, .tmpl-preview-panel ol { margin: 4px 0 4px 20px; }
.tmpl-preview-panel li { margin: 2px 0; }
.tmpl-preview-panel strong { font-weight: 700; }
/* GFM Markdown rendering (used by _simpleMarkdownToHtml everywhere) */
.md-table-wrap { overflow-x: auto; margin: 8px 0 12px; }
.md-table { border-collapse: collapse; width: 100%; font-size: .82rem; }
.md-table th { background: var(--raised); color: var(--text); font-weight: 600; text-align: left; padding: 6px 12px; border: 1px solid var(--border); white-space: nowrap; }
.md-table td { padding: 5px 12px; border: 1px solid var(--border); color: var(--text); vertical-align: top; }
.md-table tr:nth-child(even) td { background: rgba(255,255,255,.025); }
.md-pre { background: var(--raised); border: 1px solid var(--border); border-radius: 6px; padding: 10px 14px; overflow-x: auto; margin: 8px 0; font-family: var(--mono); font-size: .78rem; color: var(--text); white-space: pre; line-height: 1.5; }
code.md-code-inline { background: var(--raised); border: 1px solid var(--border); border-radius: 3px; padding: 1px 5px; font-family: var(--mono); font-size: .85em; color: var(--accent); }
.md-hr { border: none; border-top: 1px solid var(--border); margin: 12px 0; }
.md-blockquote { border-left: 3px solid var(--border); margin: 6px 0; padding: 4px 12px; color: var(--sub); font-style: italic; }
.md-task-list { list-style: none; padding-left: 4px; }
.md-task-item { display: flex; align-items: flex-start; gap: 6px; padding: 2px 0; }
.md-task-item input[type="checkbox"] { margin-top: 3px; flex-shrink: 0; accent-color: var(--accent); }
/* Markdown body container - paragraphs, headings, links inside rendered MD */
.md-body { color: var(--text); }
.md-body p { margin: 0 0 8px; line-height: 1.6; }
.md-body h1, .md-body h2, .md-body h3, .md-body h4, .md-body h5, .md-body h6 {
  color: var(--text); margin: 14px 0 6px; line-height: 1.3;
}
.md-body h1 { font-size: 1.2rem; border-bottom: 1px solid var(--border); padding-bottom: 4px; }
.md-body h2 { font-size: 1.05rem; }
.md-body h3 { font-size: .95rem; }
.md-body h4 { font-size: .85rem; }
.md-body ul, .md-body ol { margin: 4px 0 8px; padding-left: 22px; }
.md-body li { margin: 2px 0; line-height: 1.55; }
.md-body strong { font-weight: 700; color: var(--text); }
.md-body em { font-style: italic; }
/* Links inside rendered markdown - use accent color so they stand out
   against dark backgrounds. Was previously unstyled, falling through to the
   browser default dark-blue (#0000ee) which is unreadable on black. */
.md-body a {
  color: var(--accent);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
  transition: color .15s, text-decoration-color .15s;
}
.md-body a:hover { color: var(--info); text-decoration-thickness: 2px; }
.md-body a:visited { color: var(--accent); opacity: .85; }
[data-theme="light"] .md-body a { color: var(--info); }
[data-theme="light"] .md-body a:hover { color: var(--accent); }
[data-theme="light"] .md-body a:visited { color: var(--info); opacity: .8; }
@media (max-width: 700px) {
  .tmpl-card-grid { grid-template-columns: 1fr; }
  .tmpl-browser-modal { padding: 16px; }
}
/* Endpoint Security */
.ep-severity-badge { display:inline-block;padding:1px 8px;border-radius:10px;font-size:.65rem;font-weight:600;text-transform:uppercase; }
.ep-severity-Critical { background:#dc2626;color:#fff; }
.ep-severity-High { background:#f97316;color:#fff; }
.ep-severity-Medium { background:#eab308;color:#000; }
.ep-severity-Low { background:#3b82f6;color:#fff; }
.ep-severity-Informational { background:#6b7280;color:#fff; }
.ep-health-Active,.ep-health-compliant { color:#4ade80; }
.ep-health-Inactive,.ep-health-noncompliant { color:#f87171; }
.ep-health-unknown { color:#9ca3af; }
.ep-kev-flag { display:inline-flex;align-items:center;gap:4px;background:#dc262633;color:#fca5a5;padding:2px 8px;border-radius:10px;font-size:.65rem;font-weight:600; }
.ep-ransomware-flag { background:#7c2d1233;color:#fbbf24; }

/* ══ Enterprise Polish ══════════════════════════════════════════════════════ */
/* Font rendering */
html, body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

/* Primary action button - gradient + glow ring on hover */
.btn-primary:hover {
  background: linear-gradient(135deg, #4aaeff 0%, #2878d8 100%) !important;
  color: #fff !important;
  box-shadow: 0 0 0 3px rgba(59,158,255,.18), 0 4px 14px rgba(59,158,255,.28);
}
/* Ghost button hover - glow ring */
.btn-ghost:hover {
  box-shadow: 0 0 0 2px rgba(59,158,255,.15);
}

/* Stat cards - lift + accent-tinted glow on hover */
.stat-card { transition: border-color .2s, box-shadow .2s, transform .2s; }
.stat-card:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0,0,0,.3); }
.stat-card.pass:hover   { box-shadow: 0 0 0 1px rgba(45,204,113,.2), 0 8px 24px rgba(0,0,0,.3); }
.stat-card.fail:hover   { box-shadow: 0 0 0 1px rgba(232,64,64,.2), 0 8px 24px rgba(0,0,0,.3); }
.stat-card.total:hover  { box-shadow: 0 0 0 1px rgba(59,158,255,.2), 0 8px 24px rgba(0,0,0,.3); }
.stat-card.manual:hover { box-shadow: 0 0 0 1px rgba(240,165,0,.2), 0 8px 24px rgba(0,0,0,.3); }

/* Settings cards - blue glow on hover */
.settings-card { transition: border-color .22s, box-shadow .22s; }
.settings-card:hover {
  border-color: rgba(59,158,255,.35);
  box-shadow: 0 0 0 1px rgba(59,158,255,.1), 0 8px 28px rgba(0,0,0,.28);
}

/* ── Metric cards (KPI stat panels used throughout the app) ────────────────── */
.metric-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-left: 3px solid var(--border2);
  border-radius: 6px;
  padding: 14px 16px;
  position: relative;
  overflow: hidden;
  transition: border-color .2s, box-shadow .2s, transform .18s;
}
.metric-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,.03) 0%, transparent 60%);
  pointer-events: none;
}
.metric-card:hover {
  border-color: rgba(59,158,255,.35);
  box-shadow: 0 0 0 1px rgba(59,158,255,.1), 0 6px 20px rgba(0,0,0,.25);
  transform: translateY(-1px);
}
.metric-label {
  font-size: .67rem;
  text-transform: uppercase;
  letter-spacing: .09em;
  color: var(--sub);
  font-weight: 600;
  margin-bottom: 8px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  display: flex;
  align-items: center;
  gap: 5px;
}
.metric-value {
  font-family: var(--mono);
  font-size: 1.7rem;
  font-weight: 700;
  line-height: 1;
  color: var(--text);
  letter-spacing: -.02em;
}
.metric-sub {
  font-size: .67rem;
  color: var(--sub);
  margin-top: 5px;
  font-family: var(--mono);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* Color-coded left-border variants */
.metric-card.mc-pass  { border-left-color: var(--pass); }
.metric-card.mc-fail  { border-left-color: var(--fail); }
.metric-card.mc-warn  { border-left-color: var(--manual); }
.metric-card.mc-info  { border-left-color: var(--info); }
.metric-card.mc-risk  { border-left-color: #f97316; }
.metric-card.mc-total { border-left-color: var(--accent); }
.metric-card.mc-pass  .metric-value { color: var(--pass); }
.metric-card.mc-fail  .metric-value { color: var(--fail); }
.metric-card.mc-warn  .metric-value { color: var(--manual); }
.metric-card.mc-info  .metric-value { color: var(--info); }
.metric-card.mc-risk  .metric-value { color: #f97316; }
.metric-card.mc-total .metric-value { color: var(--accent); }
.trend-card, .app-bar-card { transition: border-color .2s, box-shadow .2s; }
.trend-card:hover, .app-bar-card:hover { border-color: rgba(59,158,255,.25); }

/* Integration cards */
.intg-card { transition: border-color .2s, box-shadow .2s; }
.intg-card:hover { box-shadow: 0 0 0 1px rgba(59,158,255,.15), 0 8px 24px rgba(0,0,0,.28); }

/* Input / select focus - glow ring */
.filter-bar input:focus, .filter-bar select:focus,
input[type="text"]:focus, input[type="search"]:focus, input[type="email"]:focus,
input[type="password"]:focus, textarea:focus, select:focus {
  box-shadow: 0 0 0 2px rgba(59,158,255,.2);
  outline: none;
}

/* Nav item active - inner glow behind left border */
.nav-item.active {
  box-shadow: inset 6px 0 10px rgba(59,158,255,.07);
}

/* Topbar - removed backdrop-filter blur; causes GPU repaint artifacts on macOS Chromium.
   The topbar already has an opaque background via var(--surface), so the blur was invisible. */

/* Modal inner highlight */
.modal-inner, .modal-content {
  box-shadow: 0 1px 0 rgba(255,255,255,.05) inset, 0 24px 64px rgba(0,0,0,.55);
}

/* Login card - blue halo */
.login-card {
  box-shadow: 0 0 0 1px rgba(59,158,255,.1), 0 24px 64px rgba(0,0,0,.55),
              0 1px 0 rgba(255,255,255,.06) inset;
}

/* Letter-spacing - page section headers */
.section-hdr h2 { letter-spacing: .06em; }

/* Table rows - smoother hover transition */
tbody tr { transition: background .1s; }

/* Override/risk-accept cards */
.override-card { transition: border-color .2s, box-shadow .2s; }
.override-card:hover {
  border-color: rgba(59,158,255,.3);
  box-shadow: 0 0 0 1px rgba(59,158,255,.08), 0 6px 20px rgba(0,0,0,.25);
}
/* ══ End Enterprise Polish ══════════════════════════════════════════════════ */

/* ADO #1236 — canonical page-title (was ~63 drifted inline h2 styles) */
.page-title { font-size: 1.1rem; font-weight: 700; margin: 0 0 4px; }
