/* ============================================================
   TRINITY HOSPITAL OPERATIONS — Design Tokens
   Shared between clinical/ and platform/ shells
   ============================================================ */

:root {
  /* Background scale */
  --bg-base:       #060e1e;
  --bg-surface:    #0b1829;
  --bg-card:       #0f172a;
  --bg-input:      #0a1628;
  --bg-hover:      rgba(37,99,235,.07);
  --bg-active:     rgba(37,140,255,.14);

  /* Borders */
  --border-faint:  rgba(125,211,252,.08);
  --border-mid:    #1e293b;
  --border-blue:   #1e3a5f;
  --border-accent: #2563eb;

  /* Text */
  --text-primary:  #f1f5f9;
  --text-body:     #e2e8f0;
  --text-muted:    #94a3b8;
  /* Phase 51A Section J — bumped for WCAG AA on --bg-base #060e1e.
     Was --text-dim #64748b (4.05:1, under AA) / --text-faint #475569
     (2.54:1, fail). Now 5.51:1 and 4.94:1; order preserved (faint < dim). */
  --text-dim:      #7c8aa0;
  --text-faint:    #748296;

  /* Brand */
  --accent:        #2563eb;
  --accent-light:  #60a5fa;
  --accent-pale:   #93c5fd;

  /* Semantic */
  --red:           #ef4444;
  --red-bg:        #7f1d1d;
  --red-border:    #ef4444;
  --red-text:      #fca5a5;
  --amber:         #f59e0b;
  --amber-bg:      #451a03;
  --amber-border:  #d97706;
  --amber-text:    #fbbf24;
  --green:         #22c55e;
  --green-bg:      #14532d;
  --green-border:  #16a34a;
  --green-text:    #86efac;
  --orange:        #fb923c;
  --orange-bg:     #431407;
  --orange-border: #ea580c;
  --purple:        #a78bfa;
  --teal:          #0f766e;
  --blue-muted:    #334155;

  /* Layout */
  --sidebar-width: 220px;             /* default clinical width; JS overrides per shell */
  --header-height: 84px;
  --radius-sm:     4px;
  --radius-md:     8px;
  --radius-lg:     12px;

  /* v6 — interface / text scale (set by JS via inline style on <html>) */
  --app-text-scale:       1;
  --app-interface-scale:  1;
  --root-font-size:       16px;

  /* Density tokens — JS sets these via inline style; fallback values here */
  --row-h:         44px;      /* table row height */
  --cell-pad-y:    10px;
  --cell-pad-x:    13px;
  --gap:           12px;
  --card-pad:      16px;
  --table-row-padding: 10px;
  --table-cell-pad-x:  13px;
  --card-padding:      16px;
  --control-height:    34px;
  --si-pad-y:      11px;
  --si-pad-x:      12px;
  --si-gap:        12px;
  --si-icon:       18px;
  --si-label:      14px;

  /* Type scale */
  --font-base:     14px;
  --font-table:    13px;
  --font-pill:     11.5px;
  --font-sub:      12px;
  --font-small:    11.5px;
  --font-large:    16px;

  /* v6 — card-contrast tokens (JS sets per-prefs) */
  --card-contrast-bg:     rgba(255,255,255,.04);
  --card-contrast-border: rgba(125,211,252,.10);
  --card-contrast-shadow: 0 1px 2px rgba(0,0,0,.18), 0 4px 12px rgba(0,0,0,.45);

  /* Shadows */
  --shadow-pop:    0 8px 32px rgba(0,0,0,.6);
  --shadow-modal:  0 16px 48px rgba(0,0,0,.7);

  /* Typography */
  --font-sans:     'Segoe UI', system-ui, -apple-system, sans-serif;
  --font-mono:     'SF Mono', 'Fira Code', monospace;
}

/* Root font-size honors --root-font-size set by JS so rem-anchored
   children scale via text+interface scale prefs. */
html { font-size: var(--root-font-size, 16px); }

/* ────────────────────────────────────────────────────────────
   DENSITY VARIANTS — applied to <html class="density-*">
   shared-state.js toggles these classes via applyPrefs().
──────────────────────────────────────────────────────────── */
html.density-compact {
  --row-h:      26px;
  --cell-pad-y: 5px;
  --cell-pad-x: 10px;
  --gap:        7px;
  --card-pad:   10px;
  --si-pad-y:   6px;
  --si-pad-x:   10px;
  --si-gap:     8px;
  --si-icon:    14px;
  --si-label:   11.5px;
}
html.density-standard {
  /* uses :root defaults */
}
html.density-comfortable {
  --row-h:      38px;
  --cell-pad-y: 12px;
  --cell-pad-x: 14px;
  --gap:        14px;
  --card-pad:   18px;
  --si-pad-y:   12px;
  --si-pad-x:   14px;
  --si-gap:     12px;
  --si-icon:    18px;
  --si-label:   13.5px;
}

/* ────────────────────────────────────────────────────────────
   TEXT-SIZE VARIANTS — applied to <html class="text-*">
──────────────────────────────────────────────────────────── */
html.text-small {
  --font-base:  12px;
  --font-table: 11px;
  --font-pill:  9.5px;
  --font-sub:   10px;
  --si-label:   11.5px;
}
html.text-standard {
  /* uses :root defaults */
}
html.text-large {
  --font-base:  15px;
  --font-table: 13.5px;
  --font-pill:  12px;
  --font-sub:   12.5px;
  --si-label:   14px;
}

html, body { font-size: var(--font-base); }
table th, table td { font-size: var(--font-table); }

/* ────────────────────────────────────────────────────────────
   LIGHT THEME — html.theme-light overrides the dark defaults.
   Spec says "readable even if not perfect"; this flips the
   chrome (bg, surfaces, borders, text scale) cleanly. Inline
   styles in the shells retain their dark colors — acceptable.
──────────────────────────────────────────────────────────── */
html.theme-light {
  /* ── Surface scale ── tinted blues, not flat white */
  --bg-base:       #eef2f8;   /* page bg — soft off-white with cool tint */
  --bg-surface:    #f5f8fc;   /* sidebar / chrome */
  --bg-card:       #ffffff;   /* cards, modals, popovers */
  --bg-input:      #ffffff;
  --bg-hover:      rgba(37,99,235,.06);
  --bg-active:     rgba(37,99,235,.12);

  /* ── Borders ── strong enough to define cards, soft enough to feel premium */
  --border-faint:  rgba(15,23,42,.06);
  --border-mid:    #cbd5e1;
  --border-blue:   #93b4dc;
  --border-accent: #1d4ed8;

  /* ── Text ── ramped for AA contrast on the surface tiers above */
  --text-primary:  #0f172a;   /* h1/h2 / page titles */
  --text-body:     #1e293b;   /* default body / table cells */
  --text-muted:    #475569;   /* subtitles, secondary */
  --text-dim:      #475569;   /* Phase 51B: WCAG-AA on light(#eef2f8) + emerald(#d7e7e0) — was #64748b (4.24, fail) */
  --text-faint:    #566173;   /* Phase 51B: AA on light(5.57) + emerald(4.89) — was #94a3b8 (2.28, fail) */

  /* ── Brand ── deeper blues that survive on white */
  --accent:        #1d4ed8;
  --accent-light:  #2563eb;
  --accent-pale:   #1e40af;

  /* ── Shadows ── soft, premium-feeling */
  --shadow-pop:    0 6px 20px rgba(15,23,42,.10), 0 1px 3px rgba(15,23,42,.06);
  --shadow-modal:  0 18px 50px rgba(15,23,42,.20), 0 2px 6px rgba(15,23,42,.08);
}
/* ────────────────────────────────────────────────────────────
   LIGHT MODE — COMPREHENSIVE REFINEMENT (v4)
   The shells contain hundreds of inline styles like
     style="color:#cbd5e1" / "color:#64748b" / "background:#0a1628"
   that override our CSS-variable theming. Without remapping these,
   light mode looks washed-out: muted labels go invisible on white,
   blue links wash out, card chrome stays dark.
   Rather than rewrite every render function, we target the most
   common inline color signatures with attribute-selector overrides
   under html.theme-light only. Dark mode is unaffected.
──────────────────────────────────────────────────────────── */

/* ── Body / chrome / scrollbar ── */
html.theme-light body { background:var(--bg-base); color:var(--text-body); }
html.theme-light ::-webkit-scrollbar-thumb       { background:#cbd5e1; }
html.theme-light ::-webkit-scrollbar-thumb:hover { background:#94a3b8; }

/* ── Inline-color remaps (the heavy lifters) ── */
/* Dark text-dim (#64748b) → keep dim but readable on white */
html.theme-light [style*="color:#64748b"] { color:#475569 !important; }
/* Dark text-muted (#94a3b8) → step up to slate-500 */
html.theme-light [style*="color:#94a3b8"] { color:#64748b !important; }
/* Dark text-body (#cbd5e1) → slate-800 */
html.theme-light [style*="color:#cbd5e1"] { color:#1e293b !important; }
/* Dark text-body (#e2e8f0) → slate-900 */
html.theme-light [style*="color:#e2e8f0"] { color:#0f172a !important; }
/* Dark text-faint (#475569) → slate-500 */
html.theme-light [style*="color:#475569"] { color:#64748b !important; }
html.theme-light [style*="color:#f1f5f9"] { color:#0f172a !important; }
/* Placeholder dark gray → slate-400 */
html.theme-light [style*="color:#334155"] { color:#94a3b8 !important; }
/* Light-blue link/accent (#60a5fa) → blue-600 (carries on white) */
html.theme-light [style*="color:#60a5fa"] { color:#1d4ed8 !important; }
/* Pale tint (#7dd3fc / #e0f2fe) → blue-700 */
html.theme-light [style*="color:#7dd3fc"] { color:#1e40af !important; }
html.theme-light [style*="color:#e0f2fe"] { color:#1e40af !important; }
/* Brighter blue stays mostly readable but a touch darker on white */
html.theme-light [style*="color:#0ea5e9"] { color:#0369a1 !important; }
/* Status-color text — make sure they remain distinct on white */
html.theme-light [style*="color:#86efac"] { color:#15803d !important; }
html.theme-light [style*="color:#22c55e"] { color:#15803d !important; }
html.theme-light [style*="color:#fbbf24"] { color:#b45309 !important; }
html.theme-light [style*="color:#fca5a5"] { color:#b91c1c !important; }
html.theme-light [style*="color:#fb923c"] { color:#c2410c !important; }

/* Phase 64.3 — authenticated WCAG sweep findings (clinical impact card).
   These accent hexes are used as 22px metric values / pill text directly on
   the white card surface, where the dark-mode hue fails AA in light/emerald.
   Darkened to their 700-shade so they clear 4.5:1 on white; dark theme is
   untouched (theme-light only), emerald inherits these via theme-light. */
html.theme-light [style*="color:#f59e0b"] { color:#b45309 !important; } /* amber -> amber-700  (was 2.15:1) */
html.theme-light [style*="color:#a78bfa"] { color:#6d28d9 !important; } /* violet -> violet-700 (was 2.72:1) */
/* Teal ext-links (.ext-link uses --accent-light #14b8a6) read at ~2.3:1 on the
   light/slate surface; emerald already had .ext-link.u-clk — give light the
   same teal-700 so both match. */
html.theme-light .ext-link { color:#0f766e !important; }

/* Phase 51C — tokens that slipped through and rendered light-on-white in
   the case-reasoning / actionability panels ("Why This Case Exists" +
   "Clinical Reasoning"). These were the faint amber rationale, the bold
   rule IDs / SLA dates / context keys (.u-c* helper classes), and the
   dark snapshot/policy pill backgrounds. */
/* Amber accents — severity rationale, severity reason, trigger summary */
html.theme-light [style*="color:#fcd34d"] { color:#b45309 !important; }
/* Indigo accent — policy_re_evaluation snapshot reason */
html.theme-light [style*="color:#a5b4fc"] { color:#4338ca !important; }
/* Dark pill backgrounds inside reasoning cards → light amber / green */
html.theme-light [style*="background:#451a03"] { background:#fef3c7 !important; }
html.theme-light [style*="background:#022c22"] { background:#dcfce7 !important; }
/* Phase 64.3 — the "LIVE" pill (color:#22c55e on background:#052e16). The
   text is darkened to green-700 by the #22c55e remap above, but its dark-green
   pill bg was never remapped, leaving green-on-dark-green (2.97:1) in
   light/emerald. Lift the pill to light-green so the darkened text clears AA. */
html.theme-light [style*="background:#052e16"] { background:#dcfce7 !important; }
/* The .u-c1..4 helper classes (ui-system.css) are hardcoded for dark mode
   and carry !important, so the attribute remaps above cannot reach them.
   Re-point them to readable slate values on white. */
html.theme-light .u-c1 { color:#1e293b !important; }
html.theme-light .u-c2 { color:#475569 !important; }
html.theme-light .u-c3 { color:#0f172a !important; }
html.theme-light .u-c4 { color:#64748b !important; }

/* Inline backgrounds that paint dark surfaces — flip to light */
html.theme-light [style*="background:#0a1628"] { background:#f1f5f9 !important; }
html.theme-light [style*="background:#0f172a"] { background:#f1f5f9 !important; }
html.theme-light [style*="background:#1e293b"] { background:#e2e8f0 !important; }
html.theme-light [style*="background:#0d1e38"] { background:#ffffff !important; }
html.theme-light [style*="background:#0f1f35"] { background:#f1f5f9 !important; }
html.theme-light [style*="background:#091324"] { background:#eef2f8 !important; }
html.theme-light [style*="background:#1e3a5f"] { background:#dbeafe !important; }
html.theme-light [style*="background:#374151"] { background:#cbd5e1 !important; }
/* Phase 51B — dark inline backgrounds that were NEVER remapped, so controls
   went dark-on-dark (invisible) in light + emerald. #0b1220 alone = 44 uses
   (e.g. the escalation Sort presets). Applies to emerald too (co-applied
   theme-light). */
html.theme-light [style*="background:#0b1220"] { background:#f1f5f9 !important; }
html.theme-light [style*="background:#0d1424"] { background:#f1f5f9 !important; }
html.theme-light [style*="background:#0a1428"] { background:#f1f5f9 !important; }
html.theme-light [style*="background:#020617"] { background:#eef2f8 !important; }
html.theme-light [style*="background:#0d1b30"] { background:#ffffff !important; }
html.theme-light [style*="background:#3f3f46"] { background:#e2e8f0 !important; }
html.theme-light [style*="background:#0e2138"] { background:#dbeafe !important; }

/* Border colors used inline */
html.theme-light [style*="border:1px solid #1e3a5f"]      { border-color:#cbd5e1 !important; }
html.theme-light [style*="border:1px solid #1a304f"]      { border-color:#cbd5e1 !important; }
html.theme-light [style*="border:1px solid #1e293b"]      { border-color:#cbd5e1 !important; }
html.theme-light [style*="border:1px solid #334155"]      { border-color:#cbd5e1 !important; }
html.theme-light [style*="border-bottom:1px solid #0a1628"]{ border-bottom-color:#e2e8f0 !important; }

/* ── Cards / panels ── give them definition on the soft bg */
html.theme-light .card,
html.theme-light .status-panel,
html.theme-light .card-btn,
html.theme-light .metric-card,
html.theme-light .page > div[style*="background:var(--bg-card)"] {
  background:var(--bg-card) !important;
  border:1px solid var(--border-mid) !important;
  box-shadow:0 1px 2px rgba(15,23,42,.04), 0 2px 6px rgba(15,23,42,.04);
}
html.theme-light .card-btn:hover { box-shadow:0 2px 4px rgba(15,23,42,.06), 0 4px 12px rgba(29,78,216,.10); border-color:var(--border-blue) !important; }

/* ── Sidebar ── distinct surface, strong active state ── */
html.theme-light #sidebar {
  background:#e8effb !important;
  border-right:1px solid #cbd5e1 !important;
}
html.theme-light .si               { color:var(--text-body); }
html.theme-light .si .si-lbl       { color:#334155; }
html.theme-light .si:hover         { background:rgba(37,99,235,.08); }
html.theme-light .si:hover .si-lbl { color:var(--text-primary); }
html.theme-light .si.on            { background:#dbeafe !important; border-left-color:var(--accent) !important; }
html.theme-light .si.on .si-lbl    { color:var(--accent) !important; font-weight:600; }
html.theme-light .si.on svg        { color:var(--accent) !important; stroke:currentColor !important; }
/* NOTE: do NOT set stroke here — SVGs use stroke="currentColor" so the
   per-icon `color:` rules in the COLORFUL SIDEBAR ICONS block (below)
   can paint each nav icon its own brand hue in light mode too. */
html.theme-light .si-section       { color:#475569 !important; font-weight:700; }
html.theme-light .si-badge         { background:var(--red); color:#fff; }

/* ── Header ── light chrome ── */
html.theme-light #app-header,
html.theme-light .hdr,
html.theme-light header {
  background:#ffffff !important;
  border-bottom:1px solid #cbd5e1 !important;
  color:var(--text-body);
}
html.theme-light .hdr-icon svg,
html.theme-light .hdr svg        { stroke:#475569; }
html.theme-light .hdr-icon:hover svg { stroke:var(--accent); }
html.theme-light .hdr-search    { background:#f1f5f9 !important; border-color:#cbd5e1 !important; }
html.theme-light .hdr-search input { color:var(--text-body); }
html.theme-light .hdr-search input::placeholder { color:#94a3b8; }
html.theme-light .hdr-kbd       { background:#e2e8f0; color:#475569; border-color:#cbd5e1; }

/* ── Tables ── headers darker, rows readable, borders subtle ── */
html.theme-light .tbl-wrap { border-color:var(--border-mid); border-radius:var(--radius-md); overflow:hidden; }
html.theme-light .tbl-wrap table       { background:#ffffff; }
html.theme-light .tbl-wrap table th    { background:#eef2f8 !important; color:#334155 !important; font-weight:600; border-bottom:1px solid #cbd5e1 !important; }
html.theme-light .tbl-wrap table th.sortable:hover { background:#dbeafe !important; color:var(--accent) !important; }
html.theme-light .tbl-wrap table td    { color:var(--text-body); border-bottom:1px solid #e2e8f0 !important; }
html.theme-light .tbl-wrap table tr:hover td { background:rgba(37,99,235,.04) !important; }
html.theme-light .tr-click:hover       { cursor:pointer; }

/* ── Info-card tables (tables inside .card, not .tbl-wrap) ──
   Bare label/value pairs on the case-detail page etc.
   Goal: readable, lightly tinted, no heavy horizontal rules. */
html.theme-light .card > table        { background:transparent; }
html.theme-light .card > table td     { border:0 !important; padding:6px 0 !important; }
html.theme-light .card > table tr     { border:0 !important; }
html.theme-light .card > table tr + tr td { border-top:1px dashed #eef2f8 !important; }
html.theme-light .card > table tr:hover td { background:rgba(37,99,235,.035); }
html.theme-light .card > table td:first-child {
  color:#475569 !important; font-weight:500; letter-spacing:.1px;
}
html.theme-light .card > table td:first-child::before {
  content:''; display:inline-block; width:3px; height:10px; vertical-align:-1px;
  margin-right:8px; border-radius:2px;
  background:linear-gradient(180deg,#60a5fa,#2563eb);
  opacity:.55;
}

/* ── Filter / search bar ── */
html.theme-light .tc-bar     { background:#f8fafc !important; border-bottom:1px solid #cbd5e1; }
html.theme-light .tc-search  { background:#ffffff !important; border:1px solid #cbd5e1 !important; }
html.theme-light .tc-search input { color:var(--text-body); }
html.theme-light .tc-search input::placeholder { color:#94a3b8; }
html.theme-light .tc-btn     { background:#ffffff !important; color:var(--text-body) !important; border:1px solid #cbd5e1 !important; }
html.theme-light .tc-btn:hover { background:#f1f5f9 !important; border-color:var(--accent) !important; color:var(--accent) !important; }
html.theme-light select.tc-btn option { background:#ffffff; color:var(--text-body); }

/* ── Chips ── */
html.theme-light .chip-bar   { background:#f8fafc !important; border-bottom:1px solid #cbd5e1; }
html.theme-light .chip       { background:#dbeafe; color:#1d4ed8; }
html.theme-light .chip-x     { color:#1d4ed8; }
html.theme-light .clear-chips { color:#dc2626; }
html.theme-light .empty-state { color:#64748b; }

/* ── Forms ── */
html.theme-light input,
html.theme-light textarea,
html.theme-light select { background:#ffffff !important; color:var(--text-body) !important; border:1px solid #cbd5e1; }
html.theme-light input::placeholder,
html.theme-light textarea::placeholder { color:#94a3b8 !important; }
html.theme-light .form-input { background:#ffffff !important; color:var(--text-body) !important; }

/* ── Buttons ── */
html.theme-light .btn { color:#0f172a; }
html.theme-light .btn-cancel { background:#ffffff !important; color:#334155 !important; border:1px solid #cbd5e1 !important; }
html.theme-light .btn-cancel:hover { background:#f1f5f9 !important; }
html.theme-light .btn-ghost  { background:transparent !important; color:#475569 !important; border:1px solid #cbd5e1 !important; }
html.theme-light .btn-ghost:hover { background:#f1f5f9 !important; }
html.theme-light .btn-primary { background:var(--accent) !important; color:#fff !important; border:1px solid var(--accent) !important; }
html.theme-light .btn-primary:hover { background:#1e40af !important; }
html.theme-light .btn-success { background:#15803d !important; color:#fff !important; border:1px solid #15803d !important; }
html.theme-light .btn-danger  { background:#dc2626 !important; color:#fff !important; border:1px solid #dc2626 !important; }

/* ── Pills (status indicators) — keep distinct on white ── */
/* Base .pill / .role-chip hardcode a dark slate bg (#1e293b) + slate text in
   the shell <style> blocks. Those are class-based, so the [style*=] inline
   remappers above can't reach them — without this rule a bare pill renders as
   a dark blob in light/emerald. Mirror the neutral .pill-grey treatment. */
html.theme-light .pill,
html.theme-light .role-chip   { background:#f1f5f9 !important; color:#475569 !important; border:1px solid #e2e8f0 !important; }
html.theme-light .pill-green  { background:#dcfce7 !important; color:#15803d !important; border:1px solid #86efac !important; }
html.theme-light .pill-amber  { background:#fef3c7 !important; color:#b45309 !important; border:1px solid #fcd34d !important; }
html.theme-light .pill-red    { background:#fee2e2 !important; color:#b91c1c !important; border:1px solid #fca5a5 !important; }
html.theme-light .pill-blue   { background:#dbeafe !important; color:#1d4ed8 !important; border:1px solid #93c5fd !important; }
html.theme-light .pill-grey   { background:#f1f5f9 !important; color:#475569 !important; border:1px solid #cbd5e1 !important; }

/* ── Badges ── */
html.theme-light .badge-ok       { background:#dcfce7 !important; color:#15803d !important; border:1px solid #86efac !important; }
html.theme-light .badge-warn     { background:#fef3c7 !important; color:#b45309 !important; border:1px solid #fcd34d !important; }
html.theme-light .badge-err      { background:#fee2e2 !important; color:#b91c1c !important; border:1px solid #fca5a5 !important; }
html.theme-light .badge-esc      { background:#ffedd5 !important; color:#c2410c !important; border:1px solid #fdba74 !important; }
html.theme-light .badge-blue     { background:#dbeafe !important; color:#1d4ed8 !important; border:1px solid #93c5fd !important; }
html.theme-light .badge-hi       { background:#fee2e2 !important; color:#b91c1c !important; border:1px solid #fca5a5 !important; }
html.theme-light .badge-inactive { background:#f1f5f9 !important; color:#64748b !important; border:1px solid #cbd5e1 !important; }

/* ── Popovers, modals, message bubbles ── */
html.theme-light .pop            { background:#ffffff !important; color:var(--text-body); border:1px solid #cbd5e1 !important; box-shadow:var(--shadow-pop); }
html.theme-light .pop-hdr        { color:var(--text-primary); border-bottom-color:#e2e8f0 !important; background:#f8fafc; }
html.theme-light .pop-item       { color:var(--text-body) !important; border-bottom:1px solid #e2e8f0 !important; }
html.theme-light .pop-item:last-child { border-bottom:none !important; }
html.theme-light .pop-item:hover { background:rgba(37,99,235,.06) !important; }
html.theme-light .pop-link       { color:var(--accent) !important; border-top-color:#e2e8f0 !important; }
html.theme-light .modal-backdrop { background:rgba(15,23,42,.45); }
html.theme-light .modal          { background:#ffffff !important; color:var(--text-body); border:1px solid #cbd5e1 !important; box-shadow:var(--shadow-modal); }
html.theme-light .modal-title    { color:var(--text-primary); }
html.theme-light .modal-sub      { color:var(--text-muted); }
html.theme-light .bubble.in      { background:#eef2f7 !important; color:var(--text-primary) !important; }
html.theme-light .bubble.out     { background:var(--accent) !important; color:#fff; }
html.theme-light .bubble.out .bubble-text,
html.theme-light .bubble.out .bubble-from { color:#fff !important; }
html.theme-light .bubble-text    { color:var(--text-primary); }
html.theme-light .bubble-from    { color:var(--text-muted); }

/* ── Login screen ── */
html.theme-light #login-screen { background:#f1f5f9 !important; }
html.theme-light #login-brand  { background:#1e3a8a !important; color:#fff; }
html.theme-light .login-card,
html.theme-light .login-shell  { background:#ffffff !important; border:1px solid #cbd5e1 !important; }
html.theme-light .login-role   { background:#ffffff !important; border:1px solid #cbd5e1 !important; }
html.theme-light .login-role:hover { border-color:var(--accent) !important; background:#f1f5f9 !important; }
html.theme-light .login-title  { color:var(--text-primary); }
html.theme-light .login-foot   { color:var(--text-muted); }
html.theme-light .login-foot a { color:var(--accent); }

/* ── Class-based muted text that has no inline color (so the
   [style*="color:#cbd5e1"] / [style*="color:#94a3b8"] remaps above
   don't catch them). These are defined on dark mode for dark cards
   and wash out on white. Force them to readable slate in light mode. */
html.theme-light .tl-text      { color:var(--text-body) !important; }
html.theme-light .tl-time      { color:var(--text-muted) !important; font-weight:500; }
html.theme-light .bubble-ts    { color:var(--text-muted) !important; }
html.theme-light .msg-empty    { color:var(--text-muted) !important; }
html.theme-light .tab-btn      { color:var(--text-muted); }
html.theme-light .tab-btn.on   { color:var(--accent) !important; }
html.theme-light .tab-btn:hover{ color:var(--text-primary); }
html.theme-light .form-input,
html.theme-light .form-select  { color:var(--text-body) !important; background:#ffffff !important; border-color:#cbd5e1 !important; }
html.theme-light .nm-sub,
html.theme-light .msg-quick-sub,
html.theme-light .msg-thread-sub { color:var(--text-muted) !important; }
html.theme-light .status-panel { color:var(--text-body) !important; }

/* ── Page title and breadcrumb ── */
html.theme-light .page-title   { color:var(--text-primary); }
html.theme-light .page-sub     { color:var(--text-muted); }
html.theme-light .breadcrumb   { color:var(--accent); }
html.theme-light .breadcrumb:hover { color:#1e40af; }

/* ── Metric cards ── extra-strong number contrast ── */
html.theme-light .metric-card,
html.theme-light .card-btn        { background:#ffffff !important; border:1px solid #cbd5e1 !important; }
html.theme-light .metric-val,
html.theme-light .card-btn .metric-val { color:var(--text-primary); font-weight:700; }
html.theme-light .metric-label    { color:var(--text-muted); }
html.theme-light .metric-sub      { color:var(--text-dim); }

/* ── Toast (light variant) ── */
html.theme-light .toast-b { background:#1d4ed8; color:#fff; }
html.theme-light .toast-g { background:#15803d; color:#fff; }

/* ── Tab bar / tab buttons ── */
html.theme-light .tab-bar,
html.theme-light .tab-row { border-bottom:1px solid #cbd5e1; background:#f8fafc; }
html.theme-light .tab-btn { color:#475569; background:transparent; }
html.theme-light .tab-btn.on { color:var(--accent); border-bottom:2px solid var(--accent); background:#ffffff; }
html.theme-light .tab-btn:hover { color:var(--accent); background:#f1f5f9; }

/* ── Settings modal options ── */
html.theme-light .settings-opt { background:#ffffff !important; color:var(--text-body) !important; border:1px solid #cbd5e1 !important; }
html.theme-light .settings-opt:hover { border-color:var(--accent) !important; background:#f8fafc !important; }
html.theme-light .settings-opt.on { background:#dbeafe !important; color:#1d4ed8 !important; border-color:var(--accent) !important; font-weight:600; }

/* ── Assistant (assist.js injects its own dark-mode styles; override here) ── */
html.theme-light #assist-launcher { background:var(--accent) !important; color:#fff !important; box-shadow:0 6px 18px rgba(29,78,216,.30); }
html.theme-light #assist-launcher:hover { background:#1e40af !important; }
html.theme-light #assist-panel { background:#ffffff !important; border:1px solid #cbd5e1 !important; color:var(--text-body); box-shadow:var(--shadow-pop); }
html.theme-light .assist-hdr { background:#f8fafc !important; border-bottom:1px solid #e2e8f0 !important; }
html.theme-light .assist-title { color:var(--text-primary) !important; }
html.theme-light .assist-sub { color:var(--text-muted) !important; }
html.theme-light .assist-x { color:#64748b !important; }
html.theme-light .assist-x:hover { color:#0f172a !important; }
html.theme-light .assist-context { color:var(--text-muted) !important; }
html.theme-light .assist-sug { background:#f8fafc !important; border:1px solid #cbd5e1 !important; color:var(--text-body) !important; }
html.theme-light .assist-sug:hover { background:#dbeafe !important; border-color:var(--accent) !important; }
html.theme-light .assist-reply { background:#f8fafc !important; border:1px solid #cbd5e1 !important; color:var(--text-body) !important; }
html.theme-light .assist-foot { background:#f1f5f9 !important; border-top:1px solid #e2e8f0 !important; }
html.theme-light .assist-foot-btn { background:#ffffff !important; border:1px solid #cbd5e1 !important; color:#475569 !important; }
html.theme-light .assist-foot-btn:hover { border-color:var(--accent) !important; color:var(--accent) !important; }
html.theme-light .assist-foot-note { color:#94a3b8 !important; }

/* ── Help drawer ── */
html.theme-light #assist-help-back { background:rgba(15,23,42,.45) !important; }
html.theme-light #assist-help { background:#ffffff !important; border-left:1px solid #cbd5e1 !important; color:var(--text-body); }
html.theme-light .assist-help-hdr { border-bottom:1px solid #e2e8f0 !important; }
html.theme-light .assist-help-title { color:var(--text-primary) !important; }
html.theme-light .assist-help-sub { color:var(--text-muted) !important; }
html.theme-light .assist-help-body { color:var(--text-body) !important; }
html.theme-light .assist-help-sec h4 { color:#475569 !important; }
html.theme-light .assist-help-next { background:#dbeafe !important; border:1px solid #93c5fd !important; border-left:3px solid var(--accent) !important; color:var(--text-primary) !important; }

/* ── Page help icon (the "?" next to titles) ── */
html.theme-light .assist-help-icon { background:#f1f5f9 !important; border:1px solid #cbd5e1 !important; color:#475569 !important; }
html.theme-light .assist-help-icon:hover { background:#dbeafe !important; border-color:var(--accent) !important; color:var(--accent) !important; }

/* ── Tooltip — assist.js's injected CSS uses dark bg; override in light mode ── */
html.theme-light [data-tip]:hover::after { background:#0f172a !important; color:#f1f5f9 !important; border:1px solid #334155 !important; }
html.theme-light [data-tip]:hover::before { border-top-color:#0f172a !important; }

/* ── Banner alerts ── light versions ── */
html.theme-light .banner-warn { background:#fef3c7 !important; border:1px solid #fcd34d !important; color:#92400e !important; }
html.theme-light .banner-err  { background:#fee2e2 !important; border:1px solid #fca5a5 !important; color:#991b1b !important; }



/* ── Utility classes shared by both shells ── */

/* Badges */
.badge            { display:inline-flex; align-items:center; gap:3px; font-size:10px; padding:2px 8px; border-radius:var(--radius-sm); }
.badge-ok         { background:var(--green-bg);  color:var(--green-text);  border:1px solid var(--green-border); }
.badge-warn       { background:var(--amber-bg);  color:var(--amber-text);  border:1px solid var(--amber-border); }
.badge-err        { background:var(--red-bg);    color:var(--red-text);    border:1px solid var(--red-border); }
.badge-esc        { background:var(--orange-bg); color:var(--orange);      border:1px solid var(--orange-border); }
.badge-blue       { background:#1e3a5f;          color:#7dd3fc;            border:1px solid #2563eb; }
.badge-hi         { background:var(--red-bg);    color:var(--red-text);    border:1px solid var(--red-border); }
.badge-inactive   { background:#1e293b;          color:var(--text-faint);  border:1px solid #334155; }

/* Cards */
.card             { background:var(--bg-card); border:1px solid var(--border-mid); border-radius:var(--radius-md); padding:14px; }
.card-btn         { background:var(--bg-card); border:1px solid var(--border-mid); border-radius:var(--radius-md); padding:14px; cursor:pointer; transition:border-color .15s, background .15s; }
.card-btn:hover   { border-color:var(--border-accent); background:var(--bg-hover); }

/* Buttons */
.btn              { border:none; border-radius:var(--radius-sm); padding:7px 14px; font-size:11px; cursor:pointer; font-weight:500; font-family:var(--font-sans); }
.btn-primary      { background:var(--accent);    color:#fff; }
.btn-primary:hover{ background:#1d4ed8; }
.btn-success      { background:#15803d;          color:#fff; }
.btn-danger       { background:var(--red);       color:#fff; }
.btn-cancel       { background:#1e293b; border:1px solid #334155; color:var(--text-muted); }
.btn-cancel:hover { background:#263445; }
.btn-ghost        { background:var(--bg-card); border:1px solid var(--border-mid); color:var(--text-muted); }
.btn-ghost:hover  { background:#1e293b; }

/* Tables */
.tbl-wrap         { overflow-x:auto; }
table             { width:100%; border-collapse:collapse; font-size:12px; }
thead tr          { background:#0a1628; position:sticky; top:0; z-index:1; }
th                { padding:9px 14px; text-align:left; color:var(--text-muted); font-weight:600; white-space:nowrap; user-select:none; border-bottom:1px solid var(--border-mid); }
th.sortable       { cursor:pointer; }
th.sortable:hover { color:var(--accent-light); }
td                { padding:10px 14px; vertical-align:middle; color:var(--text-body); }
tbody tr:nth-child(even) td { background:rgba(148,163,184,.045); }
html.theme-light tbody tr:nth-child(even) td { background:rgba(15,23,42,.035); }
.tbl-wrap tbody tr { border-top:1px solid #0a1628; }
html.theme-light .tbl-wrap tbody tr { border-top:1px solid #e5e9f0; }
tr.tr-click       { cursor:pointer; }
tr.tr-click:hover td { background:rgba(37,99,235,.07); }

/* Forms */
.form-group       { margin-bottom:12px; }
.form-label       { color:var(--text-muted); font-size:10px; margin-bottom:5px; display:block; }
.form-input       { background:var(--bg-input); border:1px solid var(--border-blue); border-radius:var(--radius-sm); color:#cbd5e1; font-size:11px; padding:7px 10px; width:100%; font-family:var(--font-sans); }
.form-input:focus { border-color:var(--accent); outline:none; }
.form-select      { background:var(--bg-input); border:1px solid var(--border-blue); border-radius:var(--radius-sm); color:#cbd5e1; font-size:11px; padding:7px 10px; width:100%; font-family:var(--font-sans); }
.form-error       { color:var(--red); font-size:10px; margin-top:4px; display:none; }
textarea.form-input { resize:vertical; min-height:72px; }

/* Tabs */
.tab-bar          { display:flex; border-bottom:1px solid var(--border-mid); gap:0; }
.tab-btn          { padding:8px 14px; font-size:11px; cursor:pointer; color:var(--text-faint); border:none; border-bottom:2px solid transparent; background:none; font-family:var(--font-sans); white-space:nowrap; }
.tab-btn:hover    { color:var(--text-muted); }
.tab-btn.on       { color:var(--accent-light); border-bottom-color:var(--accent); }
.tab-panel        { display:none; }
.tab-panel.on     { display:block; }

/* TC (table control) bar */
.tc-bar           { display:flex; align-items:center; gap:7px; padding:8px 14px; border-bottom:1px solid var(--border-mid); flex-wrap:wrap; background:#0a1628; }
/* Phase 51A: one search-bar standard — 32px tall, 8px radius, accent focus
   ring. Shared by table search (.tc-search) and conversation search (.msg-search). */
.tc-search { flex:1; min-width:150px; max-width:280px; background:#0f1f35; border:1px solid #1a304f; border-radius:8px; height:32px; display:flex; align-items:center; gap:6px; padding:0 10px; position:relative; transition:border-color .15s, box-shadow .15s; }
.tc-search input  { background:none; border:none; outline:none; color:#cbd5e1; font-size:11.5px; flex:1; width:100%; font-family:var(--font-sans); }
.tc-search input::placeholder { color:#475569; }
.tc-search:focus-within { border-color:var(--accent); box-shadow:0 0 0 3px rgba(37,99,235,.16); }
.msg-search { background:#0f1f35; border:1px solid #1a304f; border-radius:8px; height:32px; width:100%; padding:0 10px; color:#cbd5e1; font-size:11.5px; outline:none; font-family:var(--font-sans); transition:border-color .15s, box-shadow .15s; }
.msg-search::placeholder { color:#475569; }
.msg-search:focus { border-color:var(--accent); box-shadow:0 0 0 3px rgba(37,99,235,.16); }
/* Phase 51A: sort/filter controls were dark-on-dark and unreadable. Brighter
   text + stronger border + a clear caret so the active sort field is legible. */
.tc-btn           { background:var(--bg-card); border:1px solid var(--border-strong, #334155); border-radius:8px; padding:6px 11px; color:#cbd5e1; font-size:11px; cursor:pointer; white-space:nowrap; font-family:var(--font-sans); position:relative; height:32px; }
.tc-btn:hover     { background:#1e293b; border-color:var(--accent); }
select.tc-btn     { padding-right:20px; appearance:none; -webkit-appearance:none; background-image:linear-gradient(45deg, transparent 50%, #cbd5e1 50%), linear-gradient(135deg, #cbd5e1 50%, transparent 50%); background-position: calc(100% - 12px) 55%, calc(100% - 7px) 55%; background-size: 5px 5px, 5px 5px; background-repeat: no-repeat; }
select.tc-btn option { background:var(--bg-card); color:var(--text-body); }

/* Chip bar */
.chip-bar         { display:none; padding:5px 14px; gap:6px; flex-wrap:wrap; align-items:center; background:var(--bg-base); border-bottom:1px solid var(--border-mid); }
.chip-bar.on      { display:flex; }
.chip             { background:#1e3a5f; color:#7dd3fc; font-size:10px; padding:3px 8px; border-radius:10px; display:inline-flex; align-items:center; gap:4px; }
.chip-x           { cursor:pointer; opacity:.7; font-size:11px; line-height:1; }
.chip-x:hover     { opacity:1; }
.clear-chips      { color:var(--red); font-size:10px; cursor:pointer; margin-left:4px; }
.empty-state      { padding:28px; text-align:center; color:var(--text-faint); font-size:11px; }

/* Sidebar items — density/text variant aware */
.si               { padding:var(--si-pad-y) var(--si-pad-x); display:flex; align-items:center; gap:var(--si-gap); cursor:pointer; border-left:3px solid transparent; transition:background .12s; }
.si:hover         { background:var(--bg-hover); }
.si.on            { background:var(--bg-active); border-left-color:var(--accent); }
.si.on .si-lbl    { color:var(--accent-pale) !important; font-weight:600; }
.si.on svg        { color:var(--accent-light) !important; stroke:currentColor !important; }
.si svg           { width:var(--si-icon); height:var(--si-icon); flex-shrink:0; }
.si-lbl           { color:var(--text-body); font-size:var(--si-label); flex:1; line-height:1.25; }
.si-badge         { background:var(--red); color:#fff; font-size:9px; padding:1px 6px; border-radius:9px; font-weight:700; }
.si-section       { padding:14px 12px 6px; color:var(--text-faint); font-size:10px; letter-spacing:1.4px; text-transform:uppercase; font-weight:600; }

/* Popovers */
.pop              { position:fixed; background:#0d1e38; border:1px solid var(--border-blue); border-radius:var(--radius-md); z-index:500; box-shadow:var(--shadow-pop); }
.pop-hdr          { padding:9px 14px; color:var(--text-body); font-size:12px; font-weight:500; border-bottom:1px solid var(--border-mid); display:flex; align-items:center; justify-content:space-between; }
.pop-item         { padding:9px 14px; color:#cbd5e1; font-size:11px; cursor:pointer; display:flex; align-items:flex-start; gap:8px; border-bottom:1px solid #0f172a; }
.pop-item:last-child { border-bottom:none; }
.pop-item:hover   { background:rgba(37,140,255,.12); }
.pop-link         { padding:7px 14px; border-top:1px solid var(--border-mid); color:var(--accent-light); font-size:10.5px; cursor:pointer; display:block; }
.pop-link:hover   { color:var(--accent-pale); }

/* ── Phase 53B — Notification & message center ──────────────────────────
   The dropdowns were 290–340px with no internal scroll bound, so real
   notification bodies overflowed the container and a 49-row feed could not
   be scrolled. Widen them, cap height, and give the row list its own scroll
   area with a sticky header that stays pinned while the body scrolls. The
   header background is set per-theme so content doesn't bleed under it.
   Element IDs span both shells: clinical (#notif-list, #pop-msgs/#msg-pop-list)
   and platform (#pop-notif-body, #pop-msg/#pop-msg-body). */
#pop-notif        { width:440px !important; max-width:calc(100vw - 24px) !important; }
#pop-msgs, #pop-msg { width:520px !important; max-width:calc(100vw - 24px) !important; }
#pop-notif .pop-hdr, #pop-msgs .pop-hdr, #pop-msg .pop-hdr {
  position:sticky; top:0; z-index:4; background:#0d1e38;
}
#notif-list, #msg-pop-list, #pop-notif-body, #pop-msg-body {
  max-height:min(70vh, 560px); overflow-y:auto; overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch;
}
/* No row may push text outside the drawer. */
#pop-notif .pop-item, #pop-msgs .pop-item, #pop-msg .pop-item,
#pop-notif-body .pop-item, #pop-msg-body .pop-item { overflow-wrap:anywhere; word-break:break-word; }
/* "View all messages →" footer stays reachable at the bottom of the scroll. */
#pop-msgs .pop-link { position:sticky; bottom:0; z-index:4; background:#0d1e38; }
html.theme-light #pop-notif .pop-hdr,
html.theme-light #pop-msgs .pop-hdr,
html.theme-light #pop-msg .pop-hdr { background:#f8fafc; }
html.theme-light #pop-msgs .pop-link { background:#ffffff; }

/* ════════════════════════════════════════════════════════════════════
   Notification Center (Phase 82) — shared bell dropdown, both shells.
   Rendered by shared/notif-center.js into #notif-list (clinical) and
   #pop-notif-body (platform). One look across the whole system.
   ════════════════════════════════════════════════════════════════════ */
#pop-notif { padding:0; }
/* The renderer owns its own sticky head + scroll area, so the container
   itself must not clip or double-scroll. */
#pop-notif #notif-list, #pop-notif #pop-notif-body { overflow:visible; max-height:none; }
.nc-head {
  position:sticky; top:0; z-index:4; display:flex; align-items:center;
  justify-content:space-between; gap:10px; padding:13px 16px;
  background:#0d1e38; border-bottom:1px solid var(--border-mid);
  border-radius:var(--radius-md) var(--radius-md) 0 0;
}
.nc-title { font-size:14px; font-weight:700; color:var(--text-body); letter-spacing:-.01em; }
.nc-count { color:var(--text-muted); font-weight:600; font-size:13px; }
.nc-head-actions { display:flex; align-items:center; gap:10px; flex-shrink:0; }
.nc-markall { background:none; border:none; padding:0; cursor:pointer;
  color:var(--accent-light); font-size:11px; font-weight:500; }
.nc-markall:hover { color:var(--accent-pale); }
.nc-close { background:none; border:none; padding:2px; cursor:pointer; line-height:1;
  color:var(--text-muted); font-size:14px; border-radius:6px; }
.nc-close:hover { color:var(--text-body); background:rgba(148,163,184,.14); }
.nc-scroll { max-height:min(64vh, 520px); overflow-y:auto; overscroll-behavior:contain;
  -webkit-overflow-scrolling:touch; }
.nc-group-head { display:flex; align-items:center; justify-content:space-between;
  padding:11px 16px 4px; }
.nc-group-head span { font-size:10px; font-weight:700; letter-spacing:.06em;
  text-transform:uppercase; color:var(--text-muted); }
.nc-viewall { background:none; border:none; padding:0; cursor:pointer;
  color:var(--accent-light); font-size:11px; font-weight:500; }
.nc-viewall:hover { color:var(--accent-pale); }
/* Phase 89 — activity-center rows. A severity-coloured left bar, a type chip,
   a strong title, a ref+party meta line, an action-state line, and one inline
   action button. High-contrast: titles use --text-body, never grey-on-grey. */
.nc-item { position:relative; display:flex; align-items:stretch; gap:0; padding:11px 16px 11px 18px;
  cursor:pointer; border-bottom:1px solid rgba(148,163,184,.10); }
.nc-item:hover { background:rgba(37,140,255,.10); }
.nc-item.nc-read { opacity:.62; }
.nc-bar { position:absolute; left:0; top:8px; bottom:8px; width:3px; border-radius:3px;
  background:var(--nc-sev, #64748b); }
.nc-item.nc-read .nc-bar { background:#94a3b8; }
.nc-main { flex:1; min-width:0; }
.nc-top { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:3px; }
.nc-type { font-size:10px; font-weight:700; letter-spacing:.04em; text-transform:uppercase;
  color:var(--nc-c, #64748b);
  background:color-mix(in srgb, var(--nc-c, #64748b) 15%, transparent);
  padding:2px 7px; border-radius:999px; white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis; max-width:72%; }
.nc-line { font-size:12.5px; color:var(--text-body); line-height:1.35; font-weight:600;
  overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.nc-item.nc-read .nc-line { font-weight:500; }
.nc-sub { font-size:11px; color:var(--text-muted); margin-top:3px; display:flex; align-items:center;
  gap:6px; flex-wrap:wrap; }
.nc-ref { font-family:var(--font-mono, ui-monospace, monospace); font-weight:600; color:var(--text-dim);
  letter-spacing:.01em; }
.nc-party { color:var(--text-muted); }
.nc-dot { color:var(--text-faint); }
.nc-state { font-size:11px; font-weight:600; margin-top:4px; line-height:1.3; }
.nc-time { flex-shrink:0; font-size:10.5px; font-weight:600; color:var(--text-muted); white-space:nowrap; }
.nc-acts { display:flex; gap:8px; margin-top:8px; }
.nc-act { font-size:11px; font-weight:600; padding:4px 12px; border-radius:6px; cursor:pointer;
  color:var(--accent-light); background:color-mix(in srgb, var(--accent-light, #258cff) 14%, transparent);
  border:1px solid color-mix(in srgb, var(--accent-light, #258cff) 34%, transparent); }
.nc-act:hover { background:color-mix(in srgb, var(--accent-light, #258cff) 24%, transparent); }
.nc-act-ghost { color:var(--text-muted); background:transparent; border-color:var(--border-mid); }
.nc-act-ghost:hover { color:var(--text-body); background:rgba(148,163,184,.12); }
.nc-empty { padding:30px 18px; text-align:center; color:var(--text-muted); font-size:12px; }
.nc-empty-ico { font-size:24px; margin-bottom:6px; }
.nc-empty-sub { font-size:10.5px; color:var(--text-faint); margin-top:4px; line-height:1.5; }
.nc-foot { position:sticky; bottom:0; z-index:4; display:flex; align-items:center;
  justify-content:center; padding:10px 16px; background:#0d1e38;
  border-top:1px solid var(--border-mid);
  border-radius:0 0 var(--radius-md) var(--radius-md); }
.nc-foot .nc-markall { font-size:11px; font-weight:600; }
/* Light + emerald themes inherit tokens; only the opaque panel chrome needs
   pinning so the sticky head/foot don't show the page through them. */
html.theme-light .nc-head, html.theme-light .nc-foot { background:#ffffff; }
html.theme-light .nc-ava-dot { box-shadow:0 0 0 2px #ffffff; }
html.theme-emerald .nc-head, html.theme-emerald .nc-foot { background:var(--surface-elev, #0d1e38); }

/* ── Notification workspace (Phase 90) — full-page operational inbox ──────
   Reuses the .nc-* activity-center rows; adds page chrome + a segmented
   filter bar across Trinity's semantic dimensions (severity band + category). */
.nw-wrap { max-width:900px; margin:0 auto; padding:4px 2px 40px; }
.nw-head { display:flex; align-items:flex-start; justify-content:space-between; gap:16px;
  margin-bottom:16px; }
.nw-h1 { font-size:20px; font-weight:700; color:var(--text-primary); letter-spacing:-.02em; }
.nw-sub { font-size:12px; color:var(--text-muted); margin-top:3px; max-width:560px; line-height:1.5; }
.nw-head-acts { flex-shrink:0; }
.nw-head-acts .btn, .btn.btn-sm { padding:7px 14px; font-size:12px; font-weight:600; }
.nw-filters { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.nw-pill { display:inline-flex; align-items:center; gap:6px; font-size:11.5px; font-weight:600;
  padding:6px 12px; border-radius:999px; cursor:pointer; white-space:nowrap;
  border:1px solid var(--border-mid); background:transparent; color:var(--text-muted); }
.nw-pill:hover { border-color:var(--border-accent); color:var(--text-body); }
.nw-pill.on { border-color:var(--accent); background:rgba(37,99,235,.16); color:var(--accent-light); }
.nw-pdot { width:8px; height:8px; border-radius:50%; flex-shrink:0; }
.nw-pcount { font-size:10.5px; font-weight:700; opacity:.7; }
.nw-pill.on .nw-pcount { opacity:1; }
.nw-feed { border:1px solid var(--border-mid); border-radius:var(--radius-md); overflow:hidden;
  background:var(--bg-card); }
.nw-feed .nc-item:last-child { border-bottom:none; }
.nw-feed .nc-group-head { padding:12px 16px 6px; }

/* Modals */
.modal-backdrop   { position:fixed; inset:0; background:rgba(0,0,0,.65); z-index:600; display:none; align-items:flex-start; justify-content:center; padding-top:60px; }
.modal-backdrop.on{ display:flex; }
.modal            { background:#0d1e38; border:1px solid var(--border-blue); border-radius:var(--radius-lg); padding:22px; width:360px; max-height:85vh; overflow-y:auto; box-shadow:var(--shadow-modal); }
.modal.wide       { width:520px; }
.modal-title      { color:var(--text-primary); font-size:13px; font-weight:600; margin-bottom:10px; }
.modal-sub        { color:var(--text-dim); font-size:11px; margin-bottom:12px; line-height:1.6; }
.modal-footer     { display:flex; gap:8px; margin-top:14px; }
.modal-footer .btn{ flex:1; padding:9px; }

/* Toast */
.toast            { position:fixed; bottom:20px; left:50%; transform:translateX(-50%); font-size:11px; padding:9px 20px; border-radius:var(--radius-sm); z-index:700; pointer-events:none; opacity:0; transition:opacity .2s; white-space:nowrap; max-width:90vw; font-family:var(--font-sans); }
.toast.on         { opacity:1; }
.toast-g          { background:#15803d; color:#fff; }
.toast-b          { background:#1d4ed8; color:#fff; }
.toast-r          { background:var(--red); color:#fff; }
.toast-y          { background:#b45309; color:#fff; }

/* Timeline */
.timeline         { display:flex; flex-direction:column; gap:10px; }
.tl-item          { display:flex; gap:10px; align-items:flex-start; }
.tl-dot           { width:8px; height:8px; border-radius:50%; margin-top:3px; flex-shrink:0; }
.tl-time          { color:var(--text-faint); font-size:10px; white-space:nowrap; }
.tl-text          { color:#cbd5e1; font-size:11px; line-height:1.5; }

/* Message bubbles */
.bubble-wrap      { display:flex; gap:8px; align-items:flex-start; }
.bubble-wrap.right{ justify-content:flex-end; }
.bubble-av        { width:24px; height:24px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:8px; font-weight:700; color:#fff; flex-shrink:0; }
.bubble           { border-radius:6px; padding:8px 10px; max-width:300px; }
.bubble.in        { background:#1e293b; }
/* Phase 53C — deep-link flash: when a notification or message-preview row is
   clicked, the thread opens and the target (latest) message pulses so the
   operator's eye lands on the message that generated the alert. */
.bubble.flash     { animation:msg-flash 1.8s ease; }
@keyframes msg-flash {
  0%,100% { box-shadow:0 0 0 0 rgba(37,99,235,0); }
  18%     { box-shadow:0 0 0 3px rgba(37,99,235,.6); }
  65%     { box-shadow:0 0 0 3px rgba(37,99,235,.35); }
}
@media (prefers-reduced-motion:reduce){ .bubble.flash{ animation-duration:0s; } }
.bubble-from      { color:var(--text-muted); font-size:10px; margin-bottom:3px; }
.bubble-text      { font-size:11px; color:var(--text-primary); }
.bubble.out .bubble-text { color:#fff; }

/* Breadcrumb */
.breadcrumb       { display:inline-flex; align-items:center; gap:4px; color:var(--accent-light); font-size:11px; cursor:pointer; }
.breadcrumb:hover { color:var(--accent-pale); }

/* Status page (IntOps stubs) */
.status-panel     { background:var(--bg-card); border:1px solid var(--border-mid); border-radius:var(--radius-md); padding:20px; color:var(--text-dim); font-size:12px; line-height:1.8; }

/* Density-aware table cell rules. Shells render most rows inline and many
   set their own colors via style="", but cell padding cascades cleanly. */
.tbl-wrap table td,
.tbl-wrap table th { padding:var(--cell-pad-y) var(--cell-pad-x); }
.tbl-wrap table th { font-size:var(--font-sub); }

/* Page padding follows density */
.page             { padding:calc(var(--card-pad) + 6px) calc(var(--card-pad) + 8px); }

/* Light-mode targeted overrides for table chrome — comprehensive set lives
   in the LIGHT MODE — COMPREHENSIVE REFINEMENT block higher up. */

/* Scrollbar */
::-webkit-scrollbar       { width:5px; height:5px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:#1e293b; border-radius:3px; }
::-webkit-scrollbar-thumb:hover { background:#334155; }

/* Responsive */
@media (max-width:900px) {
  .grid-4 { grid-template-columns:1fr 1fr !important; }
  .grid-3 { grid-template-columns:1fr 1fr !important; }
}

/* ════════════════════════════════════════════════════════════
   MOBILE LAYOUT SYSTEM (Phase 34C)
   Single responsive system shared by both shells. Drawer nav +
   header compaction + safe-area insets kick in ≤960px so every
   phone viewport (portrait + landscape, incl. Pro Max 932px) is
   covered. Desktop (≥961px) is untouched.
   ──────────────────────────────────────────────────────────── */

/* Hamburger toggle + nav overlay are injected by mobile-nav.js.
   Hidden on desktop; shown only inside the drawer breakpoint. */
.nav-toggle { display:none; }
#nav-overlay { display:none; }

@media (max-width:960px) {
  /* 0 — never let anything scroll the page sideways */
  html, body { overflow-x:hidden; max-width:100vw; }

  /* 1 — hamburger appears, sits first in the header */
  .nav-toggle {
    display:flex; align-items:center; justify-content:center;
    width:40px; height:40px; min-width:40px; flex-shrink:0; order:-1;
    margin-right:2px; padding:0;
    background:transparent; border:1px solid var(--border-blue,#1e3a5f);
    border-radius:8px; color:var(--text-dim,#94a3b8); cursor:pointer;
  }
  .nav-toggle:active { background:rgba(125,211,252,.10); }
  .nav-toggle svg { width:20px; height:20px; }

  /* 2 — sidebar becomes an off-canvas drawer (labels stay readable) */
  #sidebar {
    position:fixed !important;
    left:0; top:var(--header-height);
    height:calc(100dvh - var(--header-height));
    width:min(286px,82vw) !important;
    transform:translateX(-100%);
    transition:transform .24s ease;
    z-index:540;
    box-shadow:2px 0 26px rgba(0,0,0,.55);
    align-items:stretch !important;
  }
  body.nav-open #sidebar { transform:translateX(0); }
  /* restore full labels/sections inside the drawer (beats the desktop hide) */
  #sidebar .si-lbl, #sidebar .si-section { display:flex !important; }
  #sidebar .si { min-height:44px; }

  /* 3 — dimmed backdrop behind the open drawer */
  #nav-overlay {
    position:fixed; inset:var(--header-height) 0 0 0;
    background:rgba(0,0,0,.5); z-index:520; display:none;
  }
  body.nav-open #nav-overlay { display:block; }

  /* 4 — header compaction: shrink brand, drop inline search */
  #shell-header { padding:0 12px !important; gap:8px !important; }
  #shell-header { padding-left:max(12px, env(safe-area-inset-left)) !important;
                  padding-right:max(12px, env(safe-area-inset-right)) !important; }
  .hdr-logo, .brand { gap:8px !important; margin-right:2px !important; }
  .hdr-logo-box, .brand-mark { width:40px !important; height:40px !important; }
  .hdr-logo-box span[data-trinity-logo],
  .hdr-logo-box span[data-trinity-logo] svg,
  .hdr-logo-box span[data-trinity-logo] img { width:30px !important; height:30px !important; }
  .hdr-logo-name, .brand-txt { font-size:16px !important; letter-spacing:1.5px !important; }
  .hdr-logo-sub, .brand-shell { font-size:9px !important; letter-spacing:1px !important; }
  /* #shell-header prefix lifts specificity to (1,2,0) so this beats the
     later `.hdr-search.hdr-search-v2 { display:flex !important }` rule
     (0,2,0) in the v2 search-chrome block — without it the 320px-min-width
     search bar blows the header past the viewport on every phone. */
  #shell-header .hdr-search,
  #shell-header .hdr-search-v2,
  #shell-header .hdr-search.hdr-search-v2 { display:none !important; }
  /* env pill: keep the dot, hide the verbose label text */
  #hdr-env-label { display:none !important; }
  .hdr-env { padding:5px 7px !important; }
  /* profile: keep the avatar, hide the name/role text */
  #hdr-name, #hdr-role, .hdr-name, .hdr-role { display:none !important; }
  .hdr-av-row { margin-left:2px !important; padding:4px !important; }
  /* header icons stay tappable */
  .hdr-icon { min-width:32px; min-height:32px; }

  /* 5 — content + cards collapse to one column */
  .grid-4, .grid-3, .grid-2, .grid-big, .grid-3-1,
  .detail-grid, .ops-grid-2 { grid-template-columns:1fr !important; }
  .page, #page-area { padding:14px 12px !important; }

  /* 6 — wide tables scroll inside their own container, not the page.
     mobile-nav.js wraps bare <table>s in .table-scroll. */
  .table-scroll { max-width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch; }
  .page table { max-width:100%; }
  /* Tab strips scroll inside themselves instead of widening the page. */
  .tab-bar, .tab-row, .msg-tab-row { overflow-x:auto; flex-wrap:nowrap; -webkit-overflow-scrolling:touch; }
  .tab-bar::-webkit-scrollbar, .tab-row::-webkit-scrollbar, .msg-tab-row::-webkit-scrollbar { height:0; }

  /* 7 — modals never exceed the viewport */
  .modal { min-width:0 !important;
           max-width:calc(100vw - 24px) !important;
           width:calc(100vw - 24px) !important;
           max-height:88dvh !important; }
  .modal.wide { width:calc(100vw - 24px) !important; }
  .modal-backdrop { padding-top:40px !important; }

  /* 8 — messaging + popovers fit */
  .msg-sidebar { width:140px !important; }
  .pop { max-width:calc(100vw - 16px) !important; }

  /* 9 — assistant drawer fits the phone */
  #assist-panel { right:12px !important; left:12px !important;
                  width:auto !important; max-height:70dvh !important;
                  bottom:calc(78px + env(safe-area-inset-bottom)) !important; }
  #assist-launcher { right:14px !important;
                     bottom:calc(14px + env(safe-area-inset-bottom)) !important; }
  #assist-help { width:100vw !important; max-width:100vw !important; }

  /* 10 — tap targets + safe-area breathing room at the page bottom */
  .btn, .tc-btn, button { min-height:40px; }
  #page-area { padding-bottom:max(14px, env(safe-area-inset-bottom)) !important; }
}

/* Phones (portrait, ≤640px): tighten brand text a touch more */
@media (max-width:640px) {
  /* Drop the wordmark text entirely on phones. The brand block (box +
     "TRINITY" + "CLINICAL/PLATFORM OPERATIONS") runs ~264px — with the
     hamburger, three header icons and the avatar there isn't room for it
     on a 375px screen. Keep the recognisable logo-mark box; the shell
     name already lives in the page itself. */
  .hdr-logo-name, .brand-txt,
  .hdr-logo-sub, .brand-shell { display:none !important; }
  .grid-4, .grid-3, .grid-2 { grid-template-columns:1fr !important; }
  /* Shed the non-essential platform header chrome so the row fits a 375px
     phone without clipping the avatar. Notifications, messages and the
     profile avatar stay; env/theme/settings are reachable elsewhere. */
  #shell-header { gap:6px !important; }
  #hdr-env, #hdr-theme-btn, #hdr-gear { display:none !important; }

  /* Login hero: the brand block uses desktop-sized inline fonts (104px logo,
     60px wordmark, 48px headline) that overflow a phone. Scale them down.
     Selectors are scoped to #login-screen and key off the inline font-size
     so they work on both shells without touching the markup. */
  #login-screen [data-trinity-logo],
  #login-screen [data-trinity-logo] svg,
  #login-screen [data-trinity-logo] img { width:56px !important; height:56px !important; }
  #login-screen [style*="font-size:60px"] { font-size:34px !important; letter-spacing:4px !important; }
  #login-screen [style*="font-size:48px"] { font-size:26px !important; }
  #login-screen [style*="font-size:16px"] { font-size:14px !important; }
  #login-screen .login-brand-sub { letter-spacing:2.5px !important; font-size:11px !important; }

  /* Phase 34D — login card must fit within 100vw with no horizontal clip,
     even on notched phones (landscape safe-area insets). Tighten the
     desktop 34px/36px padding and honour the inset so the "Username" label
     and form controls are never cut off on the left. box-sizing is already
     border-box globally; form controls are width:100% so they reflow. */
  #login-form-area {
    padding:22px 18px 20px !important;
    padding-inline:max(16px, env(safe-area-inset-left))
                   max(16px, env(safe-area-inset-right)) !important;
    max-width:100vw !important;
  }
}

/* ════════════════════════════════════════════════════════════
   MOBILE NAV + PROFILE-MENU FIXES (Phase 34C — iPhone Safari)
   Three field-reported iOS Safari defects:
   1. Tapping the dimmed area outside the drawer didn't close it.
      iOS only dispatches `click` on a non-interactive element when
      it (or an ancestor) carries `cursor:pointer` — the overlay had
      none, so the tap was swallowed. Give it a pointer cursor.
   2. The profile menu ran past the bottom of the visual viewport, so
      the Sign-out row at its foot couldn't be scrolled to on a 375×667
      screen. Bound every popover (and the profile card specifically)
      to the viewport height with internal touch scrolling.
   3. Lock the page behind an open drawer; the lock releases the moment
      `nav-open` is removed (overlay tap / nav item / Escape / resize).
   ──────────────────────────────────────────────────────────── */
@media (max-width:960px) {
  /* 1 — overlay is tappable on iOS Safari */
  #nav-overlay { cursor:pointer; }

  /* 3 — scroll-lock the page behind the drawer (auto-releases on close) */
  body.nav-open { overflow:hidden; }

  /* 2 — every popover fits the visual viewport and scrolls internally */
  .pop {
    max-height:calc(100dvh - var(--header-height) - 14px - env(safe-area-inset-bottom)) !important;
    overflow-y:auto; -webkit-overflow-scrolling:touch;
  }
  /* 2 — profile menu: anchor under the header, clamp to viewport width +
     height, and let the Sign-out foot scroll into reach. overflow-x stays
     hidden so the rounded hero corners are preserved. */
  #pop-profile, .pop-profile-card {
    top:calc(var(--header-height) + 4px) !important;
    right:max(8px, env(safe-area-inset-right)) !important;
    width:min(320px, calc(100vw - 16px)) !important;
    max-height:calc(100dvh - var(--header-height) - 12px - env(safe-area-inset-bottom)) !important;
    overflow-y:auto; overflow-x:hidden; -webkit-overflow-scrolling:touch;
  }
}

/* ════════════════════════════════════════════════════════════
   v5 MESSAGING CHROME — shared between Clinical and Platform
   ════════════════════════════════════════════════════════════ */
.msg-sidebar-hdr {
  padding:10px 12px;
  border-bottom:1px solid var(--border-mid);
  background:var(--bg-card);
  display:flex; align-items:center; justify-content:space-between; gap:8px;
  flex-shrink:0;
}
.msg-sidebar-title { color:var(--text-primary); font-size:12.5px; font-weight:600; }
.msg-link { color:var(--accent-light); font-size:10.5px; cursor:pointer; }
.msg-link:hover { color:var(--accent); }
.msg-new-btn {
  background:var(--accent); color:#fff; border:none; border-radius:5px;
  padding:5px 10px; font-size:10.5px; font-weight:600; cursor:pointer;
  font-family:inherit;
}
.msg-new-btn:hover { background:#1e40af; }

.msg-quick-actions { padding:10px 12px; border-bottom:1px solid var(--border-faint); }
.msg-quick {
  display:flex; align-items:center; gap:10px;
  padding:8px 10px; background:rgba(37,99,235,.08);
  border:1px solid rgba(37,99,235,.20);
  border-radius:6px; cursor:pointer; transition:background .12s;
}
.msg-quick:hover { background:rgba(37,99,235,.16); }
.msg-quick-icon {
  width:28px; height:28px; border-radius:50%;
  background:var(--accent); color:#fff;
  display:flex; align-items:center; justify-content:center;
  font-size:10px; font-weight:700; flex-shrink:0;
}
.msg-quick-label { color:var(--text-body); font-size:11px; font-weight:600; }
.msg-quick-sub   { color:var(--text-dim);  font-size:9.5px; margin-top:1px; }

.msg-tab-row {
  display:flex; gap:0; padding:0 6px;
  border-bottom:1px solid var(--border-mid);
  background:var(--bg-card);
  flex-shrink:0; overflow-x:auto;
}
.msg-tab {
  background:transparent; border:none; border-bottom:2px solid transparent;
  color:var(--text-dim); font-size:11px; font-weight:500;
  padding:8px 10px; cursor:pointer; font-family:inherit;
  white-space:nowrap;
}
.msg-tab:hover { color:var(--text-body); }
.msg-tab.on    { color:var(--accent-light); border-bottom-color:var(--accent); }

.msg-search-wrap {
  padding:8px 10px; border-bottom:1px solid var(--border-faint);
  flex-shrink:0;
}
.msg-search {
  width:100%; box-sizing:border-box;
  background:var(--bg-input); border:1px solid var(--border-mid);
  color:var(--text-body); font-size:11px; font-family:inherit;
  padding:6px 10px; border-radius:5px; outline:none;
}
.msg-search:focus { border-color:var(--accent); }
.msg-search::placeholder { color:var(--text-faint); }

.msg-convlist { flex:1; overflow-y:auto; }
.msg-conv-item {
  padding:10px 12px; cursor:pointer;
  border-bottom:1px solid var(--border-faint);
  transition:background .1s;
}
.msg-conv-item:hover { background:var(--bg-hover); }
.msg-conv-item.on    { background:var(--bg-active); }
.msg-conv-av {
  width:30px; height:30px; border-radius:50%;
  color:#fff; display:flex; align-items:center; justify-content:center;
  font-size:10px; font-weight:700; flex-shrink:0;
}
.msg-conv-row { display:flex; align-items:baseline; justify-content:space-between; gap:4px; }
.msg-conv-name { color:var(--text-body); font-size:11.5px; }
.msg-conv-name.unread { color:var(--text-primary); font-weight:600; }
.msg-conv-preview {
  color:var(--text-dim); font-size:10.5px; margin-top:1px;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.msg-unread-dot {
  width:7px; height:7px; background:var(--accent);
  border-radius:50%; flex-shrink:0; display:inline-block;
}
.msg-conv-tags { display:flex; flex-wrap:wrap; gap:4px; margin-top:5px; }
.msg-conv-tag {
  display:inline-flex; align-items:center;
  font-size:9.5px; font-weight:600;
  padding:1px 7px; border-radius:9px;
  letter-spacing:.2px;
}
.msg-tag-support  { background:rgba(34,197,94,.14);  color:#22c55e; border:1px solid rgba(34,197,94,.30); }
.msg-tag-vendor   { background:rgba(168,85,247,.14); color:#a78bfa; border:1px solid rgba(168,85,247,.30); }
.msg-tag-internal { background:rgba(14,165,233,.14); color:#7dd3fc; border:1px solid rgba(14,165,233,.30); }
.msg-tag-case     { background:rgba(37,99,235,.14);  color:#60a5fa; border:1px solid rgba(37,99,235,.30); font-family:var(--font-mono); }

.msg-thread-area {
  flex:1; display:flex; flex-direction:column; min-width:0; min-height:0;
}
.msg-thread-hdr {
  padding:12px 16px; border-bottom:1px solid var(--border-mid);
  display:flex; align-items:center; gap:12px; flex-shrink:0;
  background:var(--bg-card);
}
.msg-thread-name { color:var(--text-primary); font-size:13px; font-weight:600; }
.msg-thread-sub  { color:var(--text-dim);     font-size:11px; margin-top:1px; }
.msg-thread-badges { display:flex; flex-wrap:wrap; gap:5px; }
.msg-thread {
  flex:1; overflow-y:auto; padding:16px 18px;
  display:flex; flex-direction:column; gap:11px;
}
.msg-empty { padding:24px; text-align:center; color:var(--text-faint); font-size:11px; }
.bubble-ts { color:var(--text-faint); font-size:9.5px; font-weight:400; }

.msg-compose-bar {
  padding:10px 14px; border-top:1px solid var(--border-mid);
  display:flex; gap:8px; align-items:flex-end; flex-shrink:0;
  background:var(--bg-card);
}
.msg-compose-bar textarea {
  flex:1; min-height:36px; max-height:120px;
  background:var(--bg-input); border:1px solid var(--border-mid);
  color:var(--text-body); font-size:12px; font-family:inherit;
  padding:8px 10px; border-radius:5px; resize:vertical; outline:none;
}
.msg-compose-bar textarea:focus { border-color:var(--accent); }
.msg-compose-bar button {
  background:var(--accent); color:#fff; border:none;
  padding:8px 16px; border-radius:5px; cursor:pointer;
  font-size:12px; font-weight:600; font-family:inherit;
}
.msg-compose-bar button:hover { background:#1e40af; }
.msg-err {
  color:var(--red); font-size:10.5px;
  padding:0 14px 8px; display:none;
}

/* ─── New Message modal ─── */
.nm-search-input {
  width:100%; box-sizing:border-box;
  background:var(--bg-input); border:1px solid var(--border-mid);
  color:var(--text-body); font-size:12px; font-family:inherit;
  padding:9px 12px; border-radius:6px; outline:none;
}
.nm-search-input:focus { border-color:var(--accent); }
.nm-results { max-height:380px; overflow-y:auto; }
.nm-section-hdr {
  color:var(--text-muted); font-size:10px; font-weight:700;
  text-transform:uppercase; letter-spacing:.7px;
  padding:8px 4px 6px;
}
.nm-row {
  display:flex; align-items:center; gap:11px;
  padding:9px 8px; border-radius:5px; cursor:pointer;
  transition:background .12s;
}
.nm-row:hover { background:var(--bg-hover); }
.nm-row-blocked { cursor:not-allowed; opacity:.65; }
.nm-row-blocked:hover { background:transparent; }
.nm-av {
  width:30px; height:30px; border-radius:50%;
  color:#fff; display:flex; align-items:center; justify-content:center;
  font-size:10px; font-weight:700; flex-shrink:0;
}
.nm-meta { flex:1; min-width:0; }
.nm-name { color:var(--text-body); font-size:12px; font-weight:500; }
.nm-sub  { color:var(--text-dim);  font-size:10.5px; margin-top:1px; }
.nm-blocked-tag {
  background:rgba(239,68,68,.14); color:#fca5a5;
  border:1px solid rgba(239,68,68,.30);
  font-size:9.5px; font-weight:600;
  padding:2px 8px; border-radius:9px;
}
.nm-blocked-banner {
  background:rgba(245,158,11,.10); color:var(--amber-text);
  border:1px solid rgba(245,158,11,.30);
  font-size:11px; padding:8px 12px; border-radius:5px;
  margin:12px 0 4px;
}

/* ─── Light-mode adjustments for messaging chrome ─── */
html.theme-light .msg-sidebar-hdr,
html.theme-light .msg-tab-row,
html.theme-light .msg-thread-hdr,
html.theme-light .msg-compose-bar { background:#ffffff !important; border-color:#cbd5e1 !important; }
html.theme-light .msg-quick { background:rgba(37,99,235,.06); border-color:rgba(37,99,235,.20); }
html.theme-light .msg-quick:hover { background:rgba(37,99,235,.12); }
html.theme-light .msg-conv-item { border-bottom-color:#e2e8f0 !important; }
html.theme-light .msg-conv-item:hover { background:#f1f5f9 !important; }
html.theme-light .msg-conv-item.on { background:#dbeafe !important; }
html.theme-light .msg-tag-support  { background:#dcfce7 !important; color:#15803d !important; border-color:#86efac !important; }
html.theme-light .msg-tag-vendor   { background:#ede9fe !important; color:#6d28d9 !important; border-color:#c4b5fd !important; }
html.theme-light .msg-tag-internal { background:#e0f2fe !important; color:#0369a1 !important; border-color:#7dd3fc !important; }
html.theme-light .msg-tag-case     { background:#dbeafe !important; color:#1d4ed8 !important; border-color:#93c5fd !important; }
html.theme-light .nm-row:hover { background:#f1f5f9 !important; }
html.theme-light .nm-blocked-banner { background:#fef3c7 !important; color:#92400e !important; border-color:#fcd34d !important; }
html.theme-light .nm-blocked-tag { background:#fee2e2 !important; color:#b91c1c !important; border-color:#fca5a5 !important; }

/* ════════════════════════════════════════════════════════════
   v6 — GLOBAL VISIBILITY UPGRADE + SETTINGS DRAWER
   ════════════════════════════════════════════════════════════ */

/* Body uses the dynamic root font; cascading children read --font-base */
body { font-size: var(--font-base) !important; }

/* Sidebar: a touch taller rows + bolder labels everywhere */
.si               { padding:var(--si-pad-y) var(--si-pad-x); display:flex; align-items:center; gap:var(--si-gap); cursor:pointer; border-left:3px solid transparent; transition:background .12s; min-height:calc(var(--si-pad-y) * 2 + var(--si-icon)); }
.si .si-lbl       { font-size:var(--si-label); font-weight:500; line-height:1.25; }
.si.on .si-lbl    { font-weight:600; }
.si svg           { width:var(--si-icon); height:var(--si-icon); flex-shrink:0; }
.si-section       { font-size:calc(var(--si-label) * 0.78); font-weight:700; padding:14px 14px 6px; letter-spacing:1.2px; }

/* Cards apply the contrast surface */
.card,
.metric-card,
.card-btn,
.status-panel { background:var(--card-contrast-bg); border:1px solid var(--card-contrast-border); box-shadow:var(--card-contrast-shadow); padding:var(--card-padding); border-radius:var(--radius-md); }

/* Page padding follows interface scale */
.page { padding:calc(var(--card-padding) + 4px) calc(var(--card-padding) + 6px); }

/* Table rows scale via density */
.tbl-wrap table td,
.tbl-wrap table th { padding:var(--table-row-padding) var(--table-cell-pad-x); }
.tbl-wrap table th { font-size:var(--font-sub); font-weight:700; letter-spacing:.3px; }
.tbl-wrap table td { font-size:var(--font-table); }

/* High-contrast: nudge text toward maximum + tighten borders */
html.high-contrast {
  --text-primary:  #ffffff;
  --text-body:     #f1f5f9;
  --text-muted:    #cbd5e1;
  --text-dim:      #94a3b8;
  --border-faint:  rgba(125,211,252,.20);
  --border-mid:    #475569;
}
html.high-contrast.theme-light {
  --text-primary:  #000000;
  --text-body:     #0f172a;
  --text-muted:    #1e293b;
  --text-dim:      #334155;
  --border-faint:  rgba(15,23,42,.30);
  --border-mid:    #475569;
}

/* Reduce-motion: kill animations / transitions globally */
html.reduce-motion *,
html.reduce-motion *::before,
html.reduce-motion *::after {
  animation-duration: 0.001ms !important;
  animation-iteration-count: 1 !important;
  transition-duration: 0.001ms !important;
  scroll-behavior: auto !important;
}

/* ─────────── Settings DRAWER ─────────── */
.settings-back {
  position:fixed; inset:0;
  background:rgba(0,0,0,.45);
  z-index:700;
  opacity:0; pointer-events:none; transition:opacity .18s;
}
.settings-back.on { opacity:1; pointer-events:auto; }

.settings-drawer {
  position:fixed; top:0; right:0; bottom:0;
  width:min(520px, 96vw);
  background:var(--bg-card);
  border-left:1px solid var(--border-mid);
  box-shadow:-12px 0 40px rgba(0,0,0,.45);
  z-index:701;
  transform:translateX(100%);
  transition:transform .22s ease;
  display:flex; flex-direction:column;
  font-family:var(--font-sans);
}
.settings-drawer.on { transform:translateX(0); }

.settings-hdr {
  padding:18px 22px;
  border-bottom:1px solid var(--border-mid);
  display:flex; align-items:center; justify-content:space-between;
  background:var(--bg-card);
  flex-shrink:0;
}
.settings-title    { color:var(--text-primary); font-size:18px; font-weight:600; }
.settings-sub      { color:var(--text-dim);     font-size:12px; margin-top:2px; }
.settings-x {
  background:transparent; border:none;
  color:var(--text-dim); font-size:22px; line-height:1;
  cursor:pointer; padding:4px 10px; border-radius:6px;
}
.settings-x:hover { background:var(--bg-hover); color:var(--text-primary); }

.settings-tabs {
  padding:6px 10px;
  border-bottom:1px solid var(--border-mid);
  display:flex; gap:2px; overflow-x:auto; flex-shrink:0;
  background:var(--bg-surface);
}
.settings-tab {
  background:transparent; border:none;
  color:var(--text-muted); font-size:12.5px; font-weight:500;
  padding:9px 14px; border-radius:6px; cursor:pointer;
  font-family:inherit; white-space:nowrap; transition:background .12s, color .12s;
}
.settings-tab:hover { color:var(--text-primary); background:var(--bg-hover); }
.settings-tab.on    { color:#fff; background:var(--accent); }

.settings-body {
  flex:1; overflow-y:auto;
  padding:18px 22px;
}
.settings-section { margin-bottom:24px; }
.settings-section:last-child { margin-bottom:8px; }
.settings-section-title {
  color:var(--text-primary); font-size:14px; font-weight:600;
  margin-bottom:4px;
}
.settings-section-sub {
  color:var(--text-muted); font-size:12px; margin-bottom:14px; line-height:1.5;
}

.settings-row {
  display:flex; align-items:center; justify-content:space-between;
  gap:14px; padding:10px 0;
  border-bottom:1px solid var(--border-faint);
}
.settings-row:last-child { border-bottom:none; }
.settings-row-label {
  flex:1; min-width:0;
}
.settings-row-name  { color:var(--text-body);   font-size:13px; font-weight:500; }
.settings-row-help  { color:var(--text-dim);    font-size:11.5px; margin-top:2px; line-height:1.45; }
.settings-row-ctl   {
  flex-shrink:0; display:flex; align-items:center; gap:8px;
  min-width:140px; justify-content:flex-end;
}

/* Toggle (true/false) */
.toggle-switch {
  position:relative; width:38px; height:22px;
  background:#475569; border-radius:11px; cursor:pointer;
  transition:background .15s;
}
.toggle-switch.on { background:var(--accent); }
.toggle-switch::after {
  content:''; position:absolute;
  top:2px; left:2px;
  width:18px; height:18px;
  background:#fff; border-radius:50%;
  transition:left .15s;
  box-shadow:0 1px 3px rgba(0,0,0,.25);
}
.toggle-switch.on::after { left:18px; }

/* Slider container */
.slider-wrap { width:200px; display:flex; align-items:center; gap:10px; }
.slider-wrap input[type=range] {
  flex:1; -webkit-appearance:none; appearance:none;
  height:6px; background:var(--bg-input);
  border:1px solid var(--border-mid); border-radius:3px;
  outline:none; cursor:pointer;
}
.slider-wrap input[type=range]::-webkit-slider-thumb {
  -webkit-appearance:none; appearance:none;
  width:18px; height:18px; border-radius:50%;
  background:var(--accent); border:2px solid #fff;
  box-shadow:0 1px 4px rgba(0,0,0,.4);
  cursor:pointer;
}
.slider-wrap input[type=range]::-moz-range-thumb {
  width:18px; height:18px; border-radius:50%;
  background:var(--accent); border:2px solid #fff;
  box-shadow:0 1px 4px rgba(0,0,0,.4);
  cursor:pointer;
}
.slider-value {
  min-width:46px; text-align:right;
  color:var(--text-body); font-size:12px;
  font-variant-numeric:tabular-nums;
}

/* Segmented control */
.seg {
  display:inline-flex; gap:0;
  background:var(--bg-input); border:1px solid var(--border-mid);
  border-radius:6px; padding:2px; overflow:hidden;
}
.seg button {
  background:transparent; border:none; cursor:pointer;
  color:var(--text-muted); font-size:11.5px; font-weight:500;
  padding:6px 12px; border-radius:4px;
  font-family:inherit; transition:background .12s, color .12s;
}
.seg button:hover { color:var(--text-primary); }
.seg button.on    { background:var(--accent); color:#fff; font-weight:600; }

/* Select / input */
.settings-select,
.settings-input {
  background:var(--bg-input); border:1px solid var(--border-mid);
  color:var(--text-body); font-size:12.5px; font-family:inherit;
  padding:7px 10px; border-radius:5px; outline:none;
  min-width:120px;
}
.settings-select:focus,
.settings-input:focus  { border-color:var(--accent); }

/* Color swatches for accent */
.swatch-row { display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.swatch {
  width:30px; height:30px; border-radius:8px;
  cursor:pointer; border:2px solid transparent;
  transition:transform .12s, border-color .12s;
}
.swatch:hover { transform:scale(1.05); }
.swatch.on    { border-color:var(--text-primary); }
.swatch-blue    { background:#2563eb; }
.swatch-cyan    { background:#0891b2; }
.swatch-emerald { background:#059669; }
.swatch-violet  { background:#7c3aed; }
.swatch-rose    { background:#e11d48; }
.swatch-amber   { background:#d97706; }

/* Settings v10 — left rail + right pane shell */
.settings-drawer { width:min(880px, 96vw); }
.settings-shell {
  flex:1; display:flex; min-height:0;
}
.settings-rail {
  width:210px; flex-shrink:0;
  border-right:1px solid var(--border-mid);
  background:var(--bg-surface);
  padding:10px 8px;
  overflow-y:auto;
  display:flex; flex-direction:column; gap:1px;
}
.settings-rail-group {
  color:var(--text-faint, #64748b);
  font-size:9.5px; letter-spacing:0.6px; text-transform:uppercase;
  padding:12px 12px 4px;
}
.settings-rail-item {
  display:flex; align-items:center; gap:10px;
  padding:9px 12px; border-radius:6px;
  color:var(--text-muted); font-size:12.5px; font-weight:500;
  cursor:pointer; transition:background .12s, color .12s;
  user-select:none;
}
.settings-rail-item svg { flex-shrink:0; }
.settings-rail-item:hover { background:var(--bg-hover); color:var(--text-primary); }
.settings-rail-item.on { background:var(--accent); color:#fff; }
.settings-rail-item .ri-badge {
  margin-left:auto;
  background:rgba(148,163,184,0.2); color:var(--text-body);
  font-size:9.5px; font-weight:600; padding:1px 7px; border-radius:999px;
}
.settings-rail-item.on .ri-badge { background:rgba(255,255,255,0.25); color:#fff; }
.settings-pane {
  flex:1; overflow-y:auto;
  padding:22px 26px; min-width:0;
}
.settings-pane-header {
  display:flex; align-items:baseline; justify-content:space-between;
  gap:12px; margin-bottom:14px;
}
.settings-pane-title { color:var(--text-primary); font-size:16px; font-weight:600; }
.settings-pane-sub   { color:var(--text-muted); font-size:12px; margin-top:2px; line-height:1.5; }
.settings-card {
  background:var(--bg-input); border:1px solid var(--border-mid);
  border-radius:8px; padding:14px 16px; margin-bottom:12px;
}
.settings-card-title {
  color:var(--text-primary); font-size:12.5px; font-weight:600;
  margin-bottom:10px; display:flex; align-items:center; gap:8px;
}
.settings-pill {
  font-size:9.5px; letter-spacing:0.4px; text-transform:uppercase;
  padding:2px 8px; border-radius:999px;
  border:1px solid var(--border-mid); color:var(--text-muted);
  white-space:nowrap;
}
.settings-pill.role-provider   { color:#60a5fa; border-color:#60a5fa66; }
.settings-pill.role-supervisor { color:#a78bfa; border-color:#a78bfa66; }
.settings-pill.role-admin      { color:#22c55e; border-color:#22c55e66; }
.settings-pill.role-platadmin  { color:#f59e0b; border-color:#f59e0b66; }
.settings-pill.role-intops     { color:#0891b2; border-color:#0891b266; }
.settings-pill.warn { color:#f59e0b; border-color:#f59e0b66; }
.settings-pill.ok   { color:#22c55e; border-color:#22c55e66; }

html.theme-light .settings-rail { background:#f8fafc !important; border-right-color:#cbd5e1 !important; }
html.theme-light .settings-rail-item { color:#475569 !important; }
html.theme-light .settings-rail-item:hover { color:#0f172a !important; background:#eef2f7 !important; }
html.theme-light .settings-rail-item.on { color:#fff !important; background:var(--accent) !important; }
html.theme-light .settings-card { background:#ffffff !important; border-color:#cbd5e1 !important; }
html.theme-light .settings-pane-title { color:#0f172a !important; }
html.theme-light .settings-pane-sub   { color:#475569 !important; }

@media (max-width: 720px) {
  .settings-shell { flex-direction:column; }
  .settings-rail {
    width:auto; flex-direction:row;
    overflow-x:auto; overflow-y:hidden;
    border-right:none; border-bottom:1px solid var(--border-mid);
    padding:6px 8px;
  }
  .settings-rail-group { display:none; }
  .settings-rail-item { padding:7px 10px; white-space:nowrap; }
}

/* Settings buttons */
.settings-btn {
  background:var(--bg-input); border:1px solid var(--border-mid);
  color:var(--text-body); font-size:12px; font-weight:500;
  padding:8px 14px; border-radius:5px; cursor:pointer;
  font-family:inherit; transition:background .12s, border-color .12s;
}
.settings-btn:hover { border-color:var(--accent); color:var(--accent-light); }
.settings-btn.primary { background:var(--accent); color:#fff; border-color:var(--accent); }
.settings-btn.primary:hover { background:var(--accent-dark); }
.settings-btn.danger { color:#fca5a5; border-color:#7f1d1d; }
.settings-btn.danger:hover { background:#7f1d1d; color:#fff; }

/* About panel */
.about-row {
  display:flex; justify-content:space-between;
  padding:8px 0; border-bottom:1px solid var(--border-faint);
  font-size:12.5px;
}
.about-row:last-child { border-bottom:none; }
.about-row dt { color:var(--text-dim);   margin:0; }
.about-row dd { color:var(--text-body);  margin:0; font-family:var(--font-mono); font-size:11.5px; }

/* ─── Light-mode adjustments for the drawer + sliders + toggles ─── */
html.theme-light .settings-back   { background:rgba(15,23,42,.45) !important; }
html.theme-light .settings-drawer { background:#ffffff !important; border-left-color:#cbd5e1 !important; }
html.theme-light .settings-hdr    { background:#ffffff !important; border-bottom-color:#cbd5e1 !important; }
html.theme-light .settings-tabs   { background:#f8fafc !important; border-bottom-color:#cbd5e1 !important; }
html.theme-light .settings-tab    { color:#475569 !important; }
html.theme-light .settings-tab:hover { color:#0f172a !important; background:#eef2f7 !important; }
html.theme-light .settings-tab.on { color:#fff !important; background:var(--accent) !important; }
html.theme-light .settings-row    { border-bottom-color:#e2e8f0 !important; }
html.theme-light .toggle-switch   { background:#cbd5e1; }
html.theme-light .toggle-switch.on{ background:var(--accent); }
html.theme-light .slider-wrap input[type=range] { background:#e2e8f0; border-color:#cbd5e1; }
html.theme-light .slider-wrap input[type=range]::-webkit-slider-thumb { border-color:#fff; box-shadow:0 1px 4px rgba(15,23,42,.18); }
html.theme-light .slider-value { color:#0f172a; }
html.theme-light .seg          { background:#ffffff !important; border-color:#cbd5e1 !important; }
html.theme-light .seg button   { color:#475569 !important; }
html.theme-light .seg button:hover { color:#0f172a !important; }
html.theme-light .seg button.on    { background:var(--accent) !important; color:#fff !important; }
html.theme-light .settings-select,
html.theme-light .settings-input { background:#ffffff !important; color:#0f172a !important; border-color:#cbd5e1 !important; }
html.theme-light .settings-btn   { background:#ffffff !important; color:#0f172a !important; border-color:#cbd5e1 !important; }
html.theme-light .settings-btn:hover { border-color:var(--accent) !important; color:var(--accent) !important; background:#eef2f7 !important; }
html.theme-light .settings-btn.primary { background:var(--accent) !important; color:#fff !important; }
html.theme-light .settings-btn.danger  { color:#b91c1c !important; border-color:#fca5a5 !important; background:#fee2e2 !important; }
html.theme-light .settings-btn.danger:hover { background:#b91c1c !important; color:#fff !important; }
html.theme-light .swatch.on { border-color:#0f172a !important; }
html.theme-light .about-row { border-bottom-color:#e2e8f0 !important; }
html.theme-light .about-row dt { color:#475569 !important; }
html.theme-light .about-row dd { color:#0f172a !important; }
html.theme-light .settings-section-title { color:#0f172a !important; }
html.theme-light .settings-section-sub   { color:#475569 !important; }
html.theme-light .settings-row-name      { color:#0f172a !important; }
html.theme-light .settings-row-help      { color:#475569 !important; }
html.theme-light .settings-x { color:#475569 !important; }
html.theme-light .settings-x:hover { background:#eef2f7 !important; color:#0f172a !important; }

/* ════════════════════════════════════════════════════════════
   v8 devworkflow — footer build marker + diagnostics panel
   ════════════════════════════════════════════════════════════ */

/* Unobtrusive build marker — fixed bottom-left, muted, never blocks
   clicks (pointer-events:none). Lives inside #app so it is hidden on
   the login screen. Deliberately small so it does not recreate the
   floating-footer problem v6 removed. */
#build-marker {
  position: fixed;
  left: 8px;
  bottom: 6px;
  z-index: 50;
  font-family: var(--font-mono);
  font-size: 9.5px;
  letter-spacing: .2px;
  color: var(--text-faint);
  opacity: .55;
  pointer-events: none;
  user-select: none;
  white-space: nowrap;
}
html.theme-light #build-marker { color: #94a3b8; }

/* Diagnostics — reuses settings drawer chrome; these are the extras */
.diag-grid {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 6px 14px;
  font-size: 12px;
  margin-bottom: 16px;
}
.diag-grid dt { color: var(--text-dim); }
.diag-grid dd { color: var(--text-body); margin: 0; font-family: var(--font-mono); font-size: 11px; word-break: break-all; }
html.theme-light .diag-grid dt { color: #475569; }
html.theme-light .diag-grid dd { color: #0f172a; }

.diag-keylist {
  border: 1px solid var(--border-mid);
  border-radius: 6px;
  overflow: hidden;
  margin-bottom: 16px;
}
.diag-key-row {
  display: flex; justify-content: space-between; gap: 12px;
  padding: 6px 10px;
  font-family: var(--font-mono); font-size: 10.5px;
  border-bottom: 1px solid var(--border-faint);
}
.diag-key-row:last-child { border-bottom: none; }
.diag-key-row span:first-child { color: var(--text-body); }
.diag-key-row span:last-child  { color: var(--text-dim); flex-shrink: 0; }
html.theme-light .diag-key-row span:first-child { color: #0f172a; }
html.theme-light .diag-key-row span:last-child  { color: #475569; }

/* Validate Build result rows */
.diag-check-row {
  display: flex; align-items: center; gap: 9px;
  padding: 7px 0;
  border-bottom: 1px solid var(--border-faint);
  font-size: 12px;
}
.diag-check-row:last-child { border-bottom: none; }
.diag-check-badge {
  flex-shrink: 0;
  width: 18px; height: 18px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700;
}
.diag-check-badge.pass { background: rgba(34,197,94,.16);  color: #22c55e; }
.diag-check-badge.fail { background: rgba(239,68,68,.16);  color: #f87171; }
.diag-check-label { color: var(--text-body); flex: 1; }
.diag-check-detail { color: var(--text-dim); font-size: 11px; }
html.theme-light .diag-check-label  { color: #0f172a; }
html.theme-light .diag-check-detail { color: #475569; }
html.theme-light .diag-check-badge.pass { background:#dcfce7; color:#15803d; }
html.theme-light .diag-check-badge.fail { background:#fee2e2; color:#b91c1c; }

.diag-summary {
  margin-top: 12px; padding: 10px 12px;
  border-radius: 6px; font-size: 12px; font-weight: 600;
}
.diag-summary.pass { background: rgba(34,197,94,.12);  color: #4ade80; border: 1px solid rgba(34,197,94,.30); }
.diag-summary.fail { background: rgba(239,68,68,.12);  color: #f87171; border: 1px solid rgba(239,68,68,.30); }
html.theme-light .diag-summary.pass { background:#dcfce7; color:#15803d; border-color:#86efac; }
html.theme-light .diag-summary.fail { background:#fee2e2; color:#b91c1c; border-color:#fca5a5; }

.diag-mode-pill {
  display: inline-flex; align-items: center;
  font-size: 10px; font-weight: 700; letter-spacing: .5px;
  padding: 2px 8px; border-radius: 10px;
}
.diag-mode-pill.mock { background: rgba(245,158,11,.16); color: #fbbf24; border: 1px solid rgba(245,158,11,.32); }
.diag-mode-pill.backend { background: rgba(34,197,94,.16); color: #22c55e; border: 1px solid rgba(34,197,94,.32); }
html.theme-light .diag-mode-pill.mock    { background:#fef3c7; color:#92400e; border-color:#fcd34d; }
html.theme-light .diag-mode-pill.backend { background:#dcfce7; color:#15803d; border-color:#86efac; }

/* ════════════════════════════════════════════════════════════
   v8 devworkflow — mode-aware login surfaces
   ════════════════════════════════════════════════════════════ */

/* Login mode toggle — small segmented control on the login screen */
.login-mode-toggle {
  display: inline-flex;
  gap: 2px;
  background: rgba(15,30,60,.55);
  border: 1px solid rgba(125,211,252,.18);
  border-radius: 7px;
  padding: 3px;
}
.login-mode-toggle button {
  background: transparent;
  border: none;
  color: var(--text-dim);
  font-size: 11px;
  font-weight: 600;
  font-family: inherit;
  padding: 5px 12px;
  border-radius: 5px;
  cursor: pointer;
  transition: background .12s, color .12s;
}
.login-mode-toggle button:hover { color: var(--text-body); }
.login-mode-toggle button.on { background: var(--accent); color: #fff; }
html.theme-light .login-mode-toggle { background:#f1f5f9; border-color:#cbd5e1; }
html.theme-light .login-mode-toggle button { color:#475569; }
html.theme-light .login-mode-toggle button.on { background:var(--accent); color:#fff; }

/* Backend credential form on the login screen */
.login-cred-form { display: flex; flex-direction: column; gap: 12px; }
.login-cred-form label {
  display: block;
  color: var(--text-dim);
  font-size: 11px;
  font-weight: 600;
  margin-bottom: 5px;
  letter-spacing: .3px;
}
.login-cred-input {
  width: 100%;
  box-sizing: border-box;
  background: var(--bg-input, #0a1628);
  border: 1px solid var(--border-mid, #1e3a5f);
  color: var(--text-body, #cbd5e1);
  font-size: 13px;
  font-family: inherit;
  padding: 10px 12px;
  border-radius: 7px;
  outline: none;
}
.login-cred-input:focus { border-color: var(--accent); }
.login-cred-input::placeholder { color: var(--text-faint, #475569); }

.login-cred-submit {
  width: 100%;
  background: var(--accent);
  color: #fff;
  border: none;
  font-size: 13px;
  font-weight: 600;
  font-family: inherit;
  padding: 12px;
  border-radius: 7px;
  cursor: pointer;
  transition: background .12s, opacity .12s;
}
.login-cred-submit:hover { background: var(--accent-dark, #1d4ed8); }
.login-cred-submit:disabled { opacity: .5; cursor: not-allowed; }

/* API mode + base URL indicator block on the login screen */
.login-api-info {
  margin-top: 16px;
  padding: 10px 12px;
  border-radius: 7px;
  background: rgba(15,30,60,.45);
  border: 1px solid rgba(125,211,252,.14);
  font-size: 10.5px;
  line-height: 1.7;
}
html.theme-light .login-api-info { background:#f1f5f9; border-color:#cbd5e1; }
.login-api-info .row { display: flex; justify-content: space-between; gap: 12px; }
.login-api-info .k { color: var(--text-dim); }
.login-api-info .v { color: var(--text-body); font-family: var(--font-mono); }
.login-api-info a { color: var(--accent-light, #60a5fa); }

/* Backend-mode notice shown when auth wiring is not yet active */
.login-backend-notice {
  margin-top: 14px;
  padding: 9px 12px;
  border-radius: 7px;
  background: rgba(245,158,11,.10);
  border: 1px solid rgba(245,158,11,.30);
  color: var(--amber-text, #fbbf24);
  font-size: 10.5px;
  line-height: 1.6;
}
html.theme-light .login-backend-notice { background:#fef3c7; color:#92400e; border-color:#fcd34d; }

/* Live-mode warning banner — shown if a demo surface leaks into backend mode */
.login-mode-warning {
  margin: 12px 0;
  padding: 9px 12px;
  border-radius: 7px;
  background: rgba(239,68,68,.12);
  border: 1px solid rgba(239,68,68,.34);
  color: #f87171;
  font-size: 10.5px;
  line-height: 1.6;
  font-weight: 600;
}
html.theme-light .login-mode-warning { background:#fee2e2; color:#b91c1c; border-color:#fca5a5; }

/* Trinity logo: key out the white PNG background.
   Light surfaces (auth card, light theme): multiply blends white into the
   white card, leaving the cyan mark.
   Dark surfaces (dark shell header): invert turns white→black and the cyan
   into a warm tone; screen then drops the black. We re-tint back toward
   cyan with hue-rotate + saturate so brand color survives the round-trip. */
.trinity-mark-img {
  mix-blend-mode: multiply;
}
html:not(.theme-light) .trinity-mark-img,
[data-surface="dark"] .trinity-mark-img {
  mix-blend-mode: screen;
  filter: invert(1) hue-rotate(180deg) saturate(1.4)
          drop-shadow(0 8px 22px rgba(34,211,238,.35));
}

/* ============================================================
   LIGHT MODE — POLISH PASS v5 (depth, hover lift, refined chrome)
   Layered on top of v4 (the inline-style remapper). v5 adds:
   - True premium card depth with multi-layer shadows + hover lift
   - Buttons with subtle gradient + press feedback
   - Cleaner body background (slight tinted gradient on page bg)
   - Sidebar refinement: crisper white with accent bar
   - Form inputs with focus ring instead of just border color
   - Brand sub-text exemption (HOSPITAL OPERATIONS stays bright on dark hero)
============================================================ */

/* ── 1. Brand sub-text exemption ─────────────────────────────
   The dark navy login hero column stays dark in BOTH themes.
   v4 remapped #7dd3fc → #1e40af which becomes invisible on
   that column. Exempt anything inside #login-brand from the
   inline-color remapping. */
html.theme-light .login-brand-sub,
html.theme-light .login-brand-sub * { color:#a5f3fc !important; }
html.theme-light #login-brand [style*="color:#7dd3fc"],
html.theme-light #login-brand [style*="color:#e0f2fe"],
html.theme-light #login-brand [style*="color:#f0f9ff"] { color:inherit !important; }
html.theme-light #login-brand [style*="color:#7dd3fc"] { color:#7dd3fc !important; }
html.theme-light #login-brand [style*="color:#e0f2fe"] { color:#e0f2fe !important; }
html.theme-light #login-brand [style*="color:#f0f9ff"] { color:#f0f9ff !important; }
html.theme-light #login-brand [style*="color:#64748b"] { color:#94a3b8 !important; }
/* keep navy hero background even when v4 would flip nested dark bgs */
html.theme-light #login-brand,
html.theme-light #login-brand-col { background:#0d1f3c !important; }

/* ── 2. Body background — subtle vertical tint ─────────────── */
html.theme-light body {
  background:
    radial-gradient(ellipse at top, rgba(219,234,254,.45) 0%, transparent 60%),
    #f6f8fc !important;
  background-attachment: fixed;
}

/* ── 3. Cards — premium depth + interactive lift ───────────── */
html.theme-light .card,
html.theme-light .status-panel,
html.theme-light .metric-card,
html.theme-light .card-btn,
html.theme-light .page > div[style*="background:var(--bg-card)"] {
  background:#ffffff !important;
  border:1px solid rgba(15,23,42,.06) !important;
  border-radius:var(--radius-md);
  box-shadow:
    0 1px 0 rgba(15,23,42,.04),
    0 1px 3px rgba(15,23,42,.05),
    0 4px 14px rgba(15,23,42,.04) !important;
  transition: box-shadow .18s ease, border-color .18s ease, transform .18s ease;
}
html.theme-light .card-btn { cursor:pointer; }
html.theme-light .card-btn:hover {
  border-color:rgba(29,78,216,.25) !important;
  box-shadow:
    0 2px 4px rgba(15,23,42,.06),
    0 8px 24px rgba(29,78,216,.10),
    0 1px 0 rgba(29,78,216,.08) inset !important;
  transform: translateY(-1px);
}
html.theme-light .card-btn:active { transform: translateY(0); box-shadow:0 1px 3px rgba(15,23,42,.08) !important; }

/* metric numbers — sharper hierarchy */
html.theme-light .metric-val { color:#0f172a !important; font-weight:700; letter-spacing:-0.5px; }
html.theme-light .metric-label { color:#64748b !important; font-weight:500; letter-spacing:.3px; }

/* ── 4. Buttons — depth + press feedback ───────────────────── */
html.theme-light .btn {
  font-weight:600;
  letter-spacing:.2px;
  transition: background .15s, box-shadow .15s, transform .08s, border-color .15s;
}
html.theme-light .btn-primary {
  background: linear-gradient(180deg, #2563eb 0%, #1d4ed8 100%) !important;
  color:#fff !important;
  border:1px solid #1d4ed8 !important;
  box-shadow:
    0 1px 0 rgba(255,255,255,.18) inset,
    0 1px 2px rgba(15,23,42,.08),
    0 4px 10px rgba(29,78,216,.22) !important;
}
html.theme-light .btn-primary:hover {
  background: linear-gradient(180deg, #1d4ed8 0%, #1e40af 100%) !important;
  box-shadow:
    0 1px 0 rgba(255,255,255,.18) inset,
    0 2px 4px rgba(15,23,42,.10),
    0 8px 18px rgba(29,78,216,.32) !important;
  transform: translateY(-1px);
}
html.theme-light .btn-primary:active { transform: translateY(0); box-shadow:0 1px 2px rgba(15,23,42,.10) !important; }
html.theme-light .btn-success {
  background: linear-gradient(180deg, #16a34a 0%, #15803d 100%) !important;
  border:1px solid #15803d !important;
  box-shadow:0 1px 0 rgba(255,255,255,.18) inset, 0 4px 10px rgba(21,128,61,.22) !important;
}
html.theme-light .btn-danger {
  background: linear-gradient(180deg, #ef4444 0%, #dc2626 100%) !important;
  border:1px solid #dc2626 !important;
  box-shadow:0 1px 0 rgba(255,255,255,.18) inset, 0 4px 10px rgba(220,38,38,.22) !important;
}
html.theme-light .btn-cancel {
  background:#ffffff !important;
  color:#475569 !important;
  border:1px solid #cbd5e1 !important;
  box-shadow:0 1px 2px rgba(15,23,42,.04) !important;
}
html.theme-light .btn-cancel:hover {
  background:#f8fafc !important;
  border-color:#94a3b8 !important;
  color:#0f172a !important;
}
html.theme-light .btn-ghost {
  background:transparent !important;
  color:#475569 !important;
  border:1px solid rgba(15,23,42,.08) !important;
}
html.theme-light .btn-ghost:hover {
  background:#f1f5f9 !important;
  border-color:rgba(15,23,42,.14) !important;
  color:#0f172a !important;
}

/* ── 5. Forms — focus ring instead of color-swap ───────────── */
html.theme-light input,
html.theme-light textarea,
html.theme-light select,
html.theme-light .form-input {
  background:#ffffff !important;
  color:#0f172a !important;
  border:1px solid #cbd5e1 !important;
  border-radius:6px !important;
  transition: border-color .15s, box-shadow .15s;
}
html.theme-light input:focus,
html.theme-light textarea:focus,
html.theme-light select:focus,
html.theme-light .form-input:focus {
  border-color:#2563eb !important;
  box-shadow:0 0 0 3px rgba(37,99,235,.15) !important;
  outline:none !important;
}
html.theme-light .form-label { color:#475569 !important; font-weight:500; }

/* ── 6. Sidebar — crisper white, sharper accent ────────────── */
html.theme-light #sidebar {
  background:#ffffff !important;
  border-right:1px solid rgba(15,23,42,.06) !important;
  box-shadow: 1px 0 0 rgba(15,23,42,.02);
}
html.theme-light .si {
  color:#334155;
  margin: 1px 8px;
  border-radius:6px;
  border-left:3px solid transparent;
  transition: background .14s, color .14s;
}
html.theme-light .si:hover {
  background:#f1f5f9 !important;
  color:#0f172a;
}
html.theme-light .si.on {
  background:#eff4ff !important;
  border-left:3px solid #2563eb !important;
}
html.theme-light .si.on .si-lbl { color:#1d4ed8 !important; font-weight:600; }
html.theme-light .si.on svg     { color:#1d4ed8 !important; stroke:currentColor !important; }

/* ── 7. Header — subtle bottom shadow instead of harsh border ── */
html.theme-light #app-header,
html.theme-light .hdr,
html.theme-light header {
  background:#ffffff !important;
  border-bottom:1px solid rgba(15,23,42,.05) !important;
  box-shadow: 0 1px 0 rgba(15,23,42,.02), 0 2px 8px rgba(15,23,42,.025);
}
html.theme-light .hdr-search {
  background:#f6f8fc !important;
  border:1px solid rgba(15,23,42,.06) !important;
  border-radius:8px !important;
}
html.theme-light .hdr-search:focus-within {
  background:#ffffff !important;
  border-color:#2563eb !important;
  box-shadow:0 0 0 3px rgba(37,99,235,.12);
}
/* Phase 51B — the shell HEADER is dark in BOTH light and emerald, so the
   header search must be subtle-on-dark, not a stark white box (it was
   styled as a light-page element). #shell-header specificity (1,1,1) wins
   over the theme-light/.hdr-search-v2 white rules (0,2,0). */
html.theme-light #shell-header .hdr-search,
html.theme-light #shell-header .hdr-search.hdr-search-v2 {
  background:rgba(255,255,255,.10) !important;
  border:1px solid rgba(255,255,255,.18) !important;
  max-width:360px !important;
}
html.theme-light #shell-header .hdr-search input { color:#eaf2ff !important; }
html.theme-light #shell-header .hdr-search input::placeholder { color:rgba(234,242,255,.55) !important; }
html.theme-light #shell-header .hdr-search:focus-within {
  background:rgba(255,255,255,.16) !important;
  border-color:rgba(125,211,252,.55) !important;
  box-shadow:0 0 0 3px rgba(37,99,235,.20) !important;
}
/* The input inside is a .form-input → white bg in light/emerald, a white box
   inside the subtle field. Make it transparent so the field reads as one. */
html.theme-light #shell-header .hdr-search .form-input,
html.theme-light #shell-header .hdr-search input {
  background:transparent !important;
  border:none !important;
  box-shadow:none !important;
  color:#eaf2ff !important;
  min-height:0 !important;
}
html.theme-light #shell-header .hdr-search .form-input::placeholder,
html.theme-light #shell-header .hdr-search input::placeholder { color:rgba(234,242,255,.55) !important; }

/* ── 8. Tables — alternating row tint + sharper header ─────── */
html.theme-light .tbl-wrap {
  border-radius:8px;
  overflow:hidden;
  border:1px solid rgba(15,23,42,.06) !important;
  box-shadow:0 1px 3px rgba(15,23,42,.04);
}
html.theme-light .tbl-wrap table th {
  background:#f8fafc !important;
  color:#475569 !important;
  font-weight:600;
  letter-spacing:.3px;
  text-transform:uppercase;
  font-size:10.5px !important;
  border-bottom:1px solid rgba(15,23,42,.08) !important;
}
html.theme-light .tbl-wrap table td {
  color:#0f172a !important;
  border-bottom:1px solid rgba(15,23,42,.04) !important;
}
html.theme-light .tbl-wrap table tbody tr:nth-child(even) td { background:#fafbfd; }
html.theme-light .tbl-wrap table tbody tr:hover td { background:rgba(37,99,235,.06) !important; }

/* ── 9. Pills — slightly bolder, softer fills ──────────────── */
html.theme-light .pill-green,
html.theme-light .badge-ok    { background:#ecfdf5 !important; color:#047857 !important; border:1px solid #a7f3d0 !important; font-weight:600; }
html.theme-light .pill-amber,
html.theme-light .badge-warn  { background:#fffbeb !important; color:#a16207 !important; border:1px solid #fde68a !important; font-weight:600; }
html.theme-light .pill-red,
html.theme-light .badge-err   { background:#fef2f2 !important; color:#b91c1c !important; border:1px solid #fecaca !important; font-weight:600; }
html.theme-light .pill-blue,
html.theme-light .badge-blue  { background:#eff6ff !important; color:#1d4ed8 !important; border:1px solid #bfdbfe !important; font-weight:600; }
html.theme-light .pill-grey,
html.theme-light .badge-inactive { background:#f8fafc !important; color:#475569 !important; border:1px solid #e2e8f0 !important; }

/* ── 10. Modals / popovers — proper elevation ──────────────── */
html.theme-light .pop {
  background:#ffffff !important;
  border:1px solid rgba(15,23,42,.06) !important;
  border-radius:10px !important;
  box-shadow:
    0 4px 12px rgba(15,23,42,.06),
    0 12px 28px rgba(15,23,42,.10) !important;
}
html.theme-light .pop-hdr { background:#fafbfd !important; border-bottom:1px solid rgba(15,23,42,.06) !important; }
html.theme-light .modal-backdrop { background:rgba(15,23,42,.4); backdrop-filter: blur(2px); }
html.theme-light .modal {
  background:#ffffff !important;
  border:1px solid rgba(15,23,42,.08) !important;
  border-radius:12px !important;
  box-shadow:
    0 8px 16px rgba(15,23,42,.08),
    0 24px 60px rgba(15,23,42,.18) !important;
}

/* ── 11. Tab bar — subtle separator + animated underline ───── */
html.theme-light .tab-bar,
html.theme-light .tab-row {
  background:transparent;
  border-bottom:1px solid rgba(15,23,42,.06);
}
html.theme-light .tab-btn {
  color:#64748b;
  font-weight:500;
  transition: color .15s;
}
html.theme-light .tab-btn:hover { color:#0f172a; background:transparent; }
html.theme-light .tab-btn.on {
  color:#1d4ed8;
  border-bottom:2px solid #2563eb;
  background:transparent;
  font-weight:600;
}

/* ── 12. Demo-account tiles on the login form — keep them subtle in light mode ── */
html.theme-light #login-form-area,
html.theme-light #login-form-col {
  background:#ffffff !important;
}
html.theme-light #login-form-area [style*="background:#1e293b"],
html.theme-light #login-form-col [style*="background:#1e293b"] {
  background:#f8fafc !important;
  box-shadow:0 1px 2px rgba(15,23,42,.04);
  transition:transform .12s, box-shadow .15s, border-color .15s;
}
html.theme-light #login-form-area [style*="background:#1e293b"]:hover,
html.theme-light #login-form-col [style*="background:#1e293b"]:hover {
  background:#ffffff !important;
  box-shadow:0 4px 12px rgba(29,78,216,.12) !important;
  transform: translateY(-1px);
}

/* ── 13. Toggle switch in light mode ───────────────────────── */
html.theme-light .toggle { background:#cbd5e1; }
html.theme-light .toggle.on { background:#2563eb; }

/* ── 14. Tag-style chips in light mode ─────────────────────── */
html.theme-light .chip {
  background:#eff6ff !important;
  color:#1d4ed8 !important;
  border:1px solid #bfdbfe;
  font-weight:600;
}

/* ── 15. Scrollbar — slimmer + neutral ─────────────────────── */
html.theme-light ::-webkit-scrollbar       { width:10px; height:10px; }
html.theme-light ::-webkit-scrollbar-track { background:transparent; }
html.theme-light ::-webkit-scrollbar-thumb {
  background:#cbd5e1;
  border:2px solid #f6f8fc;
  border-radius:8px;
}
html.theme-light ::-webkit-scrollbar-thumb:hover { background:#94a3b8; }

/* ============================================================
   POLISH PASS v6 (both themes)
   - Hide the stray "clinical-platform-sync-v9-auth-phase-a" build tag
   - Center all modals (sign-out, etc.) instead of pinning to top
   - Taller header + larger header icons across both shells
   - Modern, refined search bars (header + table-control)
============================================================ */

/* ── 1. Hide build marker from chrome (still loggable via console) ── */
#build-marker { display:none !important; }

/* ── 2. Center modals on the screen, regardless of which theme is on ── */
.modal-backdrop {
  align-items:center !important;
  padding-top:0 !important;
}

/* ── 3. Taller header + larger icons ── */
:root { --header-height: 100px; }

/* Header logo box scales up with the taller header */
.hdr-logo-box {
  width:68px !important;
  height:68px !important;
  border-radius:14px !important;
}
.hdr-logo-box span[data-trinity-logo],
.hdr-logo-box span[data-trinity-logo] svg,
.hdr-logo-box span[data-trinity-logo] img {
  width:54px !important;
  height:54px !important;
}
.hdr-logo-name { font-size:24px !important; letter-spacing:3px !important; }
.hdr-logo-sub  { font-size:12px !important; letter-spacing:2.5px !important; }

/* Action icons (notifications, messages, etc.) */
.hdr-icon {
  width:42px !important;
  height:42px !important;
  border-radius:10px !important;
  padding:0 !important;
  transition: background .15s, color .15s, transform .12s;
}
.hdr-icon svg {
  width:22px !important;
  height:22px !important;
}
.hdr-icon:hover { background: rgba(125,211,252,.10); transform: translateY(-1px); }
html.theme-light .hdr-icon:hover { background: rgba(37,99,235,.08); }

/* Notification badges keep pace with bigger icons */
.hdr-badge,
.hdr-icon-badge {
  min-width:18px !important;
  height:18px !important;
  font-size:10px !important;
  border-radius:9px !important;
  top:-2px !important;
  right:-2px !important;
  border:2px solid #07101e;
}
html.theme-light .hdr-badge,
html.theme-light .hdr-icon-badge { border-color:#0a1322; }

/* Avatar in the header */
.hdr-av {
  width:38px !important;
  height:38px !important;
  font-size:13px !important;
}
.hdr-av-row { gap:10px !important; padding:6px 10px !important; border-radius:10px !important; }

/* ── 4. Modern search bars (header) ── */
.hdr-search {
  flex:1 !important;
  max-width:440px !important;
  height:44px !important;
  background: rgba(15,31,53,.55) !important;
  border:1px solid rgba(125,211,252,.12) !important;
  border-radius:12px !important;
  padding:0 14px !important;
  gap:10px !important;
  transition: background .15s, border-color .15s, box-shadow .15s;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.hdr-search:hover { background: rgba(15,31,53,.75) !important; border-color: rgba(125,211,252,.22) !important; }
.hdr-search:focus-within {
  background: rgba(15,31,53,.92) !important;
  border-color: #2563eb !important;
  box-shadow: 0 0 0 4px rgba(37,99,235,.18);
}
.hdr-search svg { width:16px !important; height:16px !important; stroke:#64748b !important; flex-shrink:0; }
.hdr-search input,
.hdr-search-ph {
  font-size:13px !important;
  color:#e2e8f0 !important;
}
.hdr-search input::placeholder { color:#475569 !important; }
.hdr-kbd {
  background: rgba(30,41,59,.7);
  border:1px solid rgba(125,211,252,.10);
  color:#94a3b8;
  padding:2px 8px;
  border-radius:5px;
  font-size:11px;
  font-family: var(--font-mono, ui-monospace, monospace);
}

html.theme-light .hdr-search {
  background:#f6f8fc !important;
  border:1px solid rgba(15,23,42,.08) !important;
}
html.theme-light .hdr-search:hover {
  background:#ffffff !important;
  border-color: rgba(15,23,42,.16) !important;
}
html.theme-light .hdr-search:focus-within {
  background:#ffffff !important;
  border-color:#2563eb !important;
  box-shadow: 0 0 0 4px rgba(37,99,235,.14);
}
html.theme-light .hdr-search svg { stroke:#94a3b8 !important; }
html.theme-light .hdr-search input,
html.theme-light .hdr-search-ph { color:#0f172a !important; }
html.theme-light .hdr-search input::placeholder { color:#94a3b8 !important; }
html.theme-light .hdr-kbd { background:#eef2f8; border-color:#cbd5e1; color:#475569; }

/* ── 4b. Modern search bars (in-page / table-control) ── */
.tc-search {
  height:38px !important;
  min-width:200px !important;
  max-width:340px !important;
  background: rgba(15,31,53,.55) !important;
  border:1px solid rgba(125,211,252,.10) !important;
  border-radius:10px !important;
  padding:0 12px !important;
  gap:8px !important;
  transition: background .15s, border-color .15s, box-shadow .15s;
}
.tc-search:hover { background: rgba(15,31,53,.75) !important; border-color: rgba(125,211,252,.20) !important; }
.tc-search:focus-within {
  background: rgba(15,31,53,.92) !important;
  border-color:#2563eb !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,.15);
}
.tc-search input { font-size:12px !important; color:#e2e8f0 !important; }
.tc-search input::placeholder { color:#475569 !important; }

html.theme-light .tc-search {
  background:#ffffff !important;
  border:1px solid rgba(15,23,42,.08) !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.03);
}
html.theme-light .tc-search:hover { border-color: rgba(15,23,42,.16) !important; }
html.theme-light .tc-search:focus-within {
  border-color:#2563eb !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,.14);
}
html.theme-light .tc-search input { color:#0f172a !important; }
html.theme-light .tc-search input::placeholder { color:#94a3b8 !important; }

/* ============================================================
   POLISH PASS v7 — SEARCH BARS REDO
   v6 used a transparent bg that blended into the dark header
   chrome. v7 uses a defined slate-on-navy contrast, pill shape,
   inner shadow, proper kbd badge, larger icon, stronger focus.
============================================================ */

/* ── Header search ── */
.hdr-search,
.hdr-search-wrap {
  flex:1 !important;
  max-width:520px !important;
  height:46px !important;
  background:#0a1830 !important;
  border:1px solid #1e3a5f !important;
  border-radius:23px !important;       /* full pill on 46px height */
  padding:0 18px !important;
  gap:12px !important;
  display:flex !important;
  align-items:center !important;
  cursor:text;
  position:relative;
  box-shadow:
    inset 0 1px 1px rgba(0,0,0,.30),
    inset 0 0 0 1px rgba(125,211,252,.04);
  transition: background .15s, border-color .15s, box-shadow .15s;
}
.hdr-search:hover {
  background:#0d1f3a !important;
  border-color:#2a4a73 !important;
}
.hdr-search:focus-within {
  background:#0f213e !important;
  border-color:#3b82f6 !important;
  box-shadow:
    inset 0 1px 1px rgba(0,0,0,.20),
    0 0 0 4px rgba(59,130,246,.18);
}
.hdr-search svg {
  width:18px !important;
  height:18px !important;
  stroke:#64748b !important;
  flex-shrink:0;
  transition: stroke .15s;
}
.hdr-search:focus-within svg { stroke:#93c5fd !important; }

.hdr-search input,
.hdr-search input[type="text"],
.hdr-search-ph {
  flex:1 !important;
  width:100% !important;
  background:transparent !important;
  border:none !important;
  outline:none !important;
  font-size:14px !important;
  font-weight:400 !important;
  letter-spacing:.1px;
  color:#e2e8f0 !important;
  font-family: var(--font-sans, system-ui, sans-serif);
  padding:0 !important;
  margin:0 !important;
  line-height:1.4 !important;
}
.hdr-search input::placeholder,
.hdr-search input[type="text"]::placeholder {
  color:#64748b !important;
  font-weight:400 !important;
}

/* Kbd shortcut badge — refined chip */
.hdr-kbd {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:30px;
  height:22px;
  padding:0 7px;
  background: rgba(255,255,255,.04);
  border:1px solid rgba(125,211,252,.14);
  border-radius:6px;
  font-size:11px;
  font-weight:600;
  letter-spacing:.5px;
  color:#94a3b8;
  font-family: var(--font-mono, ui-monospace, monospace);
  flex-shrink:0;
}

/* ── LIGHT MODE header search ── */
html.theme-light .hdr-search,
html.theme-light .hdr-search-wrap {
  background:#f1f5f9 !important;
  border:1px solid rgba(15,23,42,.10) !important;
  box-shadow:
    inset 0 1px 1px rgba(15,23,42,.04),
    0 1px 2px rgba(15,23,42,.02);
}
html.theme-light .hdr-search:hover {
  background:#e8eef6 !important;
  border-color: rgba(15,23,42,.18) !important;
}
html.theme-light .hdr-search:focus-within {
  background:#ffffff !important;
  border-color:#2563eb !important;
  box-shadow:
    inset 0 1px 1px rgba(15,23,42,.02),
    0 0 0 4px rgba(37,99,235,.16);
}
html.theme-light .hdr-search svg { stroke:#94a3b8 !important; }
html.theme-light .hdr-search:focus-within svg { stroke:#2563eb !important; }
html.theme-light .hdr-search input,
html.theme-light .hdr-search input[type="text"],
html.theme-light .hdr-search-ph { color:#0f172a !important; }
html.theme-light .hdr-search input::placeholder,
html.theme-light .hdr-search input[type="text"]::placeholder { color:#94a3b8 !important; }
html.theme-light .hdr-kbd {
  background:#ffffff;
  border:1px solid #cbd5e1;
  color:#475569;
}

/* ── Search dropdown anchored under the pill ── */
.search-dropdown {
  top: calc(100% + 6px) !important;
  border-radius:12px !important;
  border:1px solid rgba(125,211,252,.14) !important;
  box-shadow:
    0 4px 16px rgba(0,0,0,.40),
    0 16px 40px rgba(0,0,0,.30) !important;
  background:#0d1e38 !important;
}
.search-dd-item { padding:10px 14px !important; font-size:12px !important; }
html.theme-light .search-dropdown {
  background:#ffffff !important;
  border:1px solid rgba(15,23,42,.08) !important;
  box-shadow:
    0 4px 16px rgba(15,23,42,.06),
    0 16px 40px rgba(15,23,42,.12) !important;
}
html.theme-light .search-dd-item { color:#0f172a !important; border-bottom:1px solid rgba(15,23,42,.05) !important; }
html.theme-light .search-dd-item:hover { background: rgba(37,99,235,.06) !important; }

/* ── In-page table-control search — same language, smaller scale ── */
.tc-search {
  height:38px !important;
  min-width:220px !important;
  max-width:360px !important;
  background:#0a1830 !important;
  border:1px solid #1e3a5f !important;
  border-radius:19px !important;
  padding:0 14px !important;
  gap:10px !important;
  display:flex !important;
  align-items:center !important;
  box-shadow:
    inset 0 1px 1px rgba(0,0,0,.30),
    inset 0 0 0 1px rgba(125,211,252,.04);
  transition: background .15s, border-color .15s, box-shadow .15s;
}
.tc-search:hover { background:#0d1f3a !important; border-color:#2a4a73 !important; }
.tc-search:focus-within {
  background:#0f213e !important;
  border-color:#3b82f6 !important;
  box-shadow:
    inset 0 1px 1px rgba(0,0,0,.20),
    0 0 0 3px rgba(59,130,246,.16);
}
.tc-search svg { width:15px !important; height:15px !important; stroke:#64748b !important; flex-shrink:0; }
.tc-search:focus-within svg { stroke:#93c5fd !important; }
.tc-search input {
  background:transparent !important;
  border:none !important;
  outline:none !important;
  font-size:13px !important;
  color:#e2e8f0 !important;
  flex:1 !important;
  width:100% !important;
}
.tc-search input::placeholder { color:#64748b !important; }

html.theme-light .tc-search {
  background:#ffffff !important;
  border:1px solid rgba(15,23,42,.10) !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.03);
}
html.theme-light .tc-search:hover { border-color: rgba(15,23,42,.18) !important; background:#fafbfd !important; }
html.theme-light .tc-search:focus-within {
  border-color:#2563eb !important;
  background:#ffffff !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,.14);
}
html.theme-light .tc-search svg { stroke:#94a3b8 !important; }
html.theme-light .tc-search:focus-within svg { stroke:#2563eb !important; }
html.theme-light .tc-search input { color:#0f172a !important; }
html.theme-light .tc-search input::placeholder { color:#94a3b8 !important; }

/* ============================================================
   POLISH PASS v8
   - Premium sign-out modal (icon, user block, two-button row)
   - Custom user-avatar with photo upload (click to upload)
============================================================ */

/* ── Sign-out modal: premium layout ──────────────────────── */
.signout-modal {
  width: 420px !important;
  max-width: calc(100vw - 32px);
  padding: 32px 30px 26px !important;
  border-radius: 16px !important;
  text-align: center;
  background: linear-gradient(180deg, #0f213e 0%, #0a1830 100%) !important;
  border: 1px solid rgba(125,211,252,.10) !important;
  box-shadow:
    0 30px 80px rgba(0,0,0,.6),
    0 12px 30px rgba(0,0,0,.4) !important;
}
html.theme-light .signout-modal {
  background: #ffffff !important;
  border: 1px solid rgba(15,23,42,.08) !important;
  box-shadow:
    0 24px 60px rgba(15,23,42,.18),
    0 8px 16px rgba(15,23,42,.08) !important;
}
.signout-icon {
  width: 64px; height: 64px;
  margin: 0 auto 18px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: rgba(239,68,68,.10);
  color: #ef4444;
  border: 1px solid rgba(239,68,68,.20);
}
html.theme-light .signout-icon {
  background: rgba(239,68,68,.08);
  color: #dc2626;
  border-color: rgba(239,68,68,.18);
}
.signout-title {
  font-size: 19px;
  font-weight: 700;
  color: #f1f5f9;
  margin-bottom: 8px;
  letter-spacing: -.2px;
}
html.theme-light .signout-title { color: #0f172a; }
.signout-sub {
  font-size: 13px;
  line-height: 1.55;
  color: #94a3b8;
  margin-bottom: 22px;
  padding: 0 4px;
}
html.theme-light .signout-sub { color: #64748b; }
.signout-user {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 14px;
  background: rgba(125,211,252,.04);
  border: 1px solid rgba(125,211,252,.08);
  border-radius: 10px;
  margin-bottom: 22px;
  text-align: left;
}
html.theme-light .signout-user {
  background: #f6f8fc;
  border-color: rgba(15,23,42,.06);
}
.signout-avatar {
  width: 44px; height: 44px;
  border-radius: 50%;
  background: linear-gradient(135deg, #2563eb 0%, #1e40af 100%);
  background-size: cover;
  background-position: center;
  color: #fff;
  font-size: 15px;
  font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
  border: 2px solid rgba(255,255,255,.08);
}
.signout-meta { flex: 1; min-width: 0; }
.signout-name {
  font-size: 13px;
  font-weight: 600;
  color: #e2e8f0;
  margin-bottom: 2px;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
html.theme-light .signout-name { color: #0f172a; }
.signout-role {
  font-size: 11px;
  color: #94a3b8;
  letter-spacing: .2px;
}
html.theme-light .signout-role { color: #64748b; }
.signout-actions {
  display: flex;
  gap: 10px;
}
.signout-actions .btn { flex: 1; padding: 11px 16px !important; font-size: 13px !important; font-weight: 600 !important; border-radius: 9px !important; }
.signout-confirm {
  background: linear-gradient(180deg, #ef4444 0%, #dc2626 100%) !important;
  border: 1px solid #b91c1c !important;
  color: #fff !important;
  box-shadow:
    0 1px 0 rgba(255,255,255,.18) inset,
    0 4px 12px rgba(220,38,38,.30) !important;
  display: inline-flex; align-items: center; justify-content: center;
}
.signout-confirm:hover {
  background: linear-gradient(180deg, #dc2626 0%, #b91c1c 100%) !important;
  box-shadow:
    0 1px 0 rgba(255,255,255,.18) inset,
    0 6px 18px rgba(220,38,38,.42) !important;
  transform: translateY(-1px);
}
.signout-cancel {
  background: rgba(255,255,255,.04) !important;
  border: 1px solid rgba(125,211,252,.10) !important;
  color: #cbd5e1 !important;
}
.signout-cancel:hover {
  background: rgba(255,255,255,.07) !important;
  border-color: rgba(125,211,252,.18) !important;
  color: #f1f5f9 !important;
}
html.theme-light .signout-cancel {
  background: #ffffff !important;
  border: 1px solid #cbd5e1 !important;
  color: #475569 !important;
}
html.theme-light .signout-cancel:hover {
  background: #f8fafc !important;
  border-color: #94a3b8 !important;
  color: #0f172a !important;
}

/* ── Header avatar ─────────────────────────────────────────
   Click opens the profile menu (see frontend/tests/phase26-commitD-
   profile-avatar-isolation.spec.js). Photo changes live behind the
   explicit "Change photo" row in the dropdown — NOT here — so
   no camera-icon hover affordance is drawn on the header avatar. */
.hdr-av {
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  border: 2px solid rgba(255,255,255,.08);
  transition: border-color .15s, transform .12s;
}
.hdr-av:hover {
  border-color: rgba(125,211,252,.30);
}
.hdr-av.has-photo { background-color: transparent !important; }
.hdr-av.has-photo > * { display: none; }   /* hide initials when photo present */

/* ============================================================
   POLISH PASS v9 — SOPHISTICATED PROFILE POPOVER
============================================================ */
.pop-profile-card {
  padding: 0 !important;
  border-radius: 14px !important;
  overflow: hidden;
  background: linear-gradient(180deg, #0f213e 0%, #0a1830 100%) !important;
  border: 1px solid rgba(125,211,252,.10) !important;
  box-shadow:
    0 6px 18px rgba(0,0,0,.40),
    0 24px 60px rgba(0,0,0,.45) !important;
}
html.theme-light .pop-profile-card {
  background: #ffffff !important;
  border: 1px solid rgba(15,23,42,.08) !important;
  box-shadow:
    0 6px 18px rgba(15,23,42,.06),
    0 24px 60px rgba(15,23,42,.14) !important;
}

/* Hero strip with cover gradient + avatar overlapping it */
.pp-hero { position: relative; height: 84px; }
.pp-cover {
  position: absolute; inset: 0;
  background:
    radial-gradient(ellipse at 25% 50%, rgba(34,211,238,.30) 0%, transparent 60%),
    linear-gradient(135deg, #1e40af 0%, #0e7490 100%);
}
html.theme-light .pp-cover {
  background:
    radial-gradient(ellipse at 25% 50%, rgba(34,211,238,.40) 0%, transparent 60%),
    linear-gradient(135deg, #2563eb 0%, #06b6d4 100%);
}
.pp-avatar {
  position: absolute;
  left: 18px;
  bottom: -28px;
  width: 64px !important; height: 64px !important;
  font-size: 22px !important;
  border: 4px solid #0a1830 !important;
  background: linear-gradient(135deg, #2563eb 0%, #1e40af 100%);
  background-size: cover !important;
  background-position: center !important;
  background-repeat: no-repeat !important;
  cursor: pointer;
  box-shadow: 0 4px 12px rgba(0,0,0,.45);
  transition: transform .15s, box-shadow .15s;
}
.pp-avatar:hover { transform: scale(1.03); box-shadow: 0 6px 18px rgba(0,0,0,.55); }
html.theme-light .pp-avatar { border-color: #ffffff !important; box-shadow: 0 4px 12px rgba(15,23,42,.18); }
.pp-avatar.has-photo { background-color: transparent !important; color: transparent; }

.pp-identity {
  padding: 36px 18px 14px;
}
.pp-name {
  font-size: 16px;
  font-weight: 700;
  color: #f1f5f9;
  letter-spacing: -.1px;
}
html.theme-light .pp-name { color: #0f172a; }
.pp-role {
  font-size: 12px;
  color: #94a3b8;
  margin-top: 2px;
}
html.theme-light .pp-role { color: #64748b; }

.pp-meta {
  display: flex; gap: 6px; flex-wrap: wrap;
  margin-top: 10px;
}
.pp-pill {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .2px;
  padding: 3px 9px;
  border-radius: 99px;
  background: rgba(125,211,252,.08);
  color: #93c5fd;
  border: 1px solid rgba(125,211,252,.14);
}
html.theme-light .pp-pill {
  background: #eff6ff;
  color: #1d4ed8;
  border-color: #bfdbfe;
}
.pp-status-on { background: rgba(34,197,94,.10) !important; color: #4ade80 !important; border-color: rgba(34,197,94,.22) !important; }
html.theme-light .pp-status-on { background: #ecfdf5 !important; color: #047857 !important; border-color: #a7f3d0 !important; }
.pp-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: #22c55e;
  box-shadow: 0 0 8px rgba(34,197,94,.6);
}

.pp-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1px;
  background: rgba(125,211,252,.08);
  margin: 4px 18px 14px;
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid rgba(125,211,252,.10);
}
html.theme-light .pp-stats {
  background: rgba(15,23,42,.05);
  border-color: rgba(15,23,42,.06);
}
.pp-stat {
  padding: 10px 6px;
  text-align: center;
  background: #0a1830;
}
html.theme-light .pp-stat { background: #ffffff; }
.pp-stat-val {
  font-size: 17px;
  font-weight: 700;
  color: #f1f5f9;
  line-height: 1;
}
html.theme-light .pp-stat-val { color: #0f172a; }
.pp-stat-lbl {
  font-size: 9.5px;
  color: #64748b;
  letter-spacing: .3px;
  text-transform: uppercase;
  margin-top: 4px;
  font-weight: 600;
}

.pp-actions {
  padding: 6px 8px;
  border-top: 1px solid rgba(125,211,252,.06);
  display: flex;
  flex-direction: column;
  gap: 2px;
}
html.theme-light .pp-actions { border-top-color: rgba(15,23,42,.05); }
.pp-action {
  display: grid;
  grid-template-columns: 20px 1fr;
  column-gap: 12px;
  row-gap: 2px;
  align-items: center;
  padding: 10px 12px;
  cursor: pointer;
  border-radius: 8px;
  color: #cbd5e1;
  transition: background .12s, color .12s;
  min-height: 44px;
}
.pp-action > svg {
  grid-column: 1;
  grid-row: 1 / -1;
  align-self: center;
  justify-self: center;
  width: 18px;
  height: 18px;
  stroke: #94a3b8;
  transition: stroke .12s;
}
.pp-action-lbl {
  grid-column: 2;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: .1px;
  line-height: 1.25;
  color: inherit;
}
.pp-action-sub {
  grid-column: 2;
  font-size: 11px;
  color: #64748b;
  line-height: 1.3;
}
.pp-action:hover { background: rgba(125,211,252,.08); color: #f1f5f9; }
.pp-action:hover > svg { stroke: #93c5fd; }
html.theme-light .pp-action { color: #1e293b; }
html.theme-light .pp-action > svg { stroke: #475569; }
html.theme-light .pp-action:hover { background: #f1f5f9; color: #0f172a; }
html.theme-light .pp-action:hover > svg { stroke: #2563eb; }
html.theme-light .pp-action-sub { color: #94a3b8; }

.pp-foot {
  padding: 6px 8px 8px;
  border-top: 1px solid rgba(125,211,252,.06);
}
html.theme-light .pp-foot { border-top-color: rgba(15,23,42,.05); }
.pp-foot .pp-action { min-height: 40px; }
.pp-action-danger { color: #fca5a5; }
.pp-action-danger > svg { stroke: #fca5a5 !important; }
.pp-action-danger:hover { background: rgba(239,68,68,.12); color: #fecaca; }
.pp-action-danger:hover > svg { stroke: #fecaca !important; }
html.theme-light .pp-action-danger { color: #dc2626; }
html.theme-light .pp-action-danger > svg { stroke: #dc2626 !important; }
html.theme-light .pp-action-danger:hover { background: #fef2f2; color: #991b1b; }
html.theme-light .pp-action-danger:hover > svg { stroke: #991b1b !important; }

/* ============================================================
   POLISH PASS v10 — LIGHT-MODE SEARCH BAR FIX
   The shell header (#shell-header) stays dark navy in BOTH
   themes (see clinical/platform inline CSS). A pale light-mode
   search bar on a dark header looks awkward, so we force the
   header search to ALWAYS use the dark-mode treatment.
   In-page .tc-search (which sits on a light page bg) keeps
   its light-mode look, but we refine it here too.
============================================================ */

/* Force header search to dark-on-dark regardless of theme — the
   surrounding #shell-header is dark in both themes. */
html.theme-light .hdr-search,
html.theme-light .hdr-search-wrap {
  background:#0a1830 !important;
  border:1px solid #1e3a5f !important;
  box-shadow:
    inset 0 1px 1px rgba(0,0,0,.30),
    inset 0 0 0 1px rgba(125,211,252,.04) !important;
}
html.theme-light .hdr-search:hover {
  background:#0d1f3a !important;
  border-color:#2a4a73 !important;
}
html.theme-light .hdr-search:focus-within {
  background:#0f213e !important;
  border-color:#3b82f6 !important;
  box-shadow:
    inset 0 1px 1px rgba(0,0,0,.20),
    0 0 0 4px rgba(59,130,246,.22) !important;
}
html.theme-light .hdr-search svg { stroke:#64748b !important; }
html.theme-light .hdr-search:focus-within svg { stroke:#93c5fd !important; }
html.theme-light .hdr-search input,
html.theme-light .hdr-search input[type="text"],
html.theme-light .hdr-search-ph { color:#e2e8f0 !important; }
html.theme-light .hdr-search input::placeholder,
html.theme-light .hdr-search input[type="text"]::placeholder { color:#64748b !important; }
html.theme-light .hdr-kbd {
  background: rgba(255,255,255,.04) !important;
  border:1px solid rgba(125,211,252,.14) !important;
  color:#94a3b8 !important;
}

/* In-page table-control search — refine the light look. The page
   bg is light here, so cards and chrome should sit on subtle off-white
   with a hairline border + soft shadow on focus. */
html.theme-light .tc-search {
  background:#ffffff !important;
  border:1px solid rgba(15,23,42,.10) !important;
  border-radius:10px !important;
  box-shadow:
    0 1px 2px rgba(15,23,42,.04),
    0 0 0 1px rgba(15,23,42,.01) inset !important;
}
html.theme-light .tc-search:hover {
  background:#ffffff !important;
  border-color:#94a3b8 !important;
  box-shadow:
    0 1px 3px rgba(15,23,42,.06) !important;
}
html.theme-light .tc-search:focus-within {
  background:#ffffff !important;
  border-color:#2563eb !important;
  box-shadow:
    0 1px 2px rgba(15,23,42,.04),
    0 0 0 4px rgba(37,99,235,.14) !important;
}
html.theme-light .tc-search svg { stroke:#94a3b8 !important; }
html.theme-light .tc-search:focus-within svg { stroke:#2563eb !important; }
html.theme-light .tc-search input,
html.theme-light .tc-search input[type="text"] {
  color:#0f172a !important;
  font-weight:500 !important;
  background:transparent !important;
  border:0 !important;
  border-radius:0 !important;
  box-shadow:none !important;
  padding:0 !important;
  height:auto !important;
  outline:none !important;
}
html.theme-light .tc-search input:hover,
html.theme-light .tc-search input:focus,
html.theme-light .tc-search input:focus-visible {
  background:transparent !important;
  border:0 !important;
  box-shadow:none !important;
  outline:none !important;
}
html.theme-light .tc-search input::placeholder { color:#94a3b8 !important; font-weight:400 !important; }

/* Generic page form-input/select in light mode — match the same
   refined treatment (was using a flat border before). */
html.theme-light input:not([type="checkbox"]):not([type="radio"]),
html.theme-light textarea,
html.theme-light select,
html.theme-light .form-input,
html.theme-light .form-select {
  background:#ffffff !important;
  color:#0f172a !important;
  border:1px solid rgba(15,23,42,.10) !important;
  border-radius:8px !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.03) !important;
  transition: border-color .15s, box-shadow .15s !important;
}
html.theme-light input:not([type="checkbox"]):not([type="radio"]):hover,
html.theme-light textarea:hover,
html.theme-light select:hover,
html.theme-light .form-input:hover,
html.theme-light .form-select:hover {
  border-color:#94a3b8 !important;
}
html.theme-light input:not([type="checkbox"]):not([type="radio"]):focus,
html.theme-light textarea:focus,
html.theme-light select:focus,
html.theme-light .form-input:focus,
html.theme-light .form-select:focus {
  border-color:#2563eb !important;
  box-shadow:
    0 1px 2px rgba(15,23,42,.03),
    0 0 0 4px rgba(37,99,235,.14) !important;
  outline:none !important;
}

/* ════════════════════════════════════════════════════════
   COLORFUL SIDEBAR ICONS  (both themes)
   Each nav-icon gets its own brand-tinted color so the
   left rail reads as a vibrant index, not a mono list.
   Active state still wins via .si.on svg { stroke:accent }.
   ════════════════════════════════════════════════════════ */
/* Force stroke to follow currentColor so per-icon `color:` always wins,
   even when an older cached rule sets a literal stroke value. */
.si svg                                 { color:#64748b; stroke:currentColor !important; stroke-width:2.2 !important; transition:color .15s, transform .15s; }
.si:hover svg                           { transform:translateX(1px); }
.si svg[data-icon="grid"]               { color:#6366f1 !important; } /* indigo  — Home / Overview */
.si svg[data-icon="file"]               { color:#0ea5e9 !important; } /* sky     — Cases / Files */
.si svg[data-icon="msg"]                { color:#06b6d4 !important; } /* cyan    — Messages */
.si svg[data-icon="alert"]              { color:#f97316 !important; } /* orange  — Escalations / Failed */
.si svg[data-icon="check"]              { color:#22c55e !important; } /* green   — Approvals */
.si svg[data-icon="user"]               { color:#8b5cf6 !important; } /* violet  — Provider */
.si svg[data-icon="users"]              { color:#ec4899 !important; } /* pink    — Users */
.si svg[data-icon="shield"]             { color:#14b8a6 !important; } /* teal    — Policy */
.si svg[data-icon="globe"]              { color:#3b82f6 !important; } /* blue    — Orgs / Integrations */
.si svg[data-icon="chart"]              { color:#a855f7 !important; } /* purple  — Analytics / Usage */
.si svg[data-icon="deploy"]             { color:#f59e0b !important; } /* amber   — Deployments */
.si svg[data-icon="power"]              { color:#ef4444 !important; } /* red     — Env Controls */
.si svg[data-icon="plug"]               { color:#10b981 !important; } /* emerald — Integrations */
.si svg[data-icon="flow"]               { color:#6366f1 !important; } /* indigo  — Ingestion */
.si svg[data-icon="list"]               { color:#0891b2 !important; } /* deep cyan — Queue / DLQ */
.si svg[data-icon="cpu"]                { color:#7c3aed !important; } /* violet  — Workers */
.si svg[data-icon="key"]                { color:#eab308 !important; } /* yellow  — Credentials */
.si svg[data-icon="bolt"]               { color:#facc15 !important; } /* yellow  — Bolt */
.si svg[data-icon="gear"]               { color:#64748b !important; } /* slate   — Settings */
.si svg[data-icon="signout"]            { color:#94a3b8 !important; } /* mute    — Sign out */
/* Phase 78B-3 icons — high-severity alarm, hierarchy escalation, patient,
   provider. Without these the new glyphs fell back to the muted #64748b base
   and rendered colorless on dark/emerald. Fixed hues so they keep their colour
   in every theme, and stay visually distinct from each other. */
.si svg[data-icon="alarm"]              { color:#ef4444 !important; } /* red     — High-severity accountability alarm */
.si svg[data-icon="escalate"]           { color:#f59e0b !important; } /* amber   — Escalation hierarchy */
.si svg[data-icon="patient"]            { color:#ec4899 !important; } /* pink    — Patient entity */
.si svg[data-icon="provider"]           { color:#0ea5e9 !important; } /* sky     — Provider entity */
.si.on svg                              { color:var(--accent) !important; stroke:currentColor !important; }
/* Light mode keeps the same vivid hues — they read well on white. */

/* ════════════════════════════════════════════════════════
   LIGHT MODE — DEEP POLISH PASS
   Fix flat cards, dark inline rows, and add accent lift.
   ════════════════════════════════════════════════════════ */

/* --- Sidebar shell in light mode: subtle cool gradient,
       crisp right divider, and brand-tinted active rail --- */
html.theme-light #sidebar {
  background: linear-gradient(180deg,#f8fafc 0%, #eef2f8 100%) !important;
  border-right:1px solid #d8e0ec !important;
  box-shadow: inset -1px 0 0 rgba(15,23,42,.02);
}
html.theme-light .si {
  border-left:3px solid transparent;
  border-radius:6px;
  margin:1px 6px;
}
html.theme-light .si:hover {
  background:#ffffff !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.04), 0 2px 8px rgba(37,99,235,.06);
}
html.theme-light .si.on {
  background: linear-gradient(90deg, rgba(37,99,235,.12), rgba(37,99,235,.04)) !important;
  border-left-color:#1d4ed8 !important;
  box-shadow: inset 0 0 0 1px rgba(29,78,216,.10);
}

/* --- Cards: lift them off the page with shadow + crisp border --- */
html.theme-light .card,
html.theme-light .status-panel,
html.theme-light .metric-card,
html.theme-light .card-btn,
html.theme-light .page > div[style*="background:var(--bg-card)"] {
  background:#ffffff !important;
  border:1px solid #e2e8f0 !important;
  border-radius:10px !important;
  box-shadow:
    0 1px 2px rgba(15,23,42,.04),
    0 4px 12px rgba(15,23,42,.04) !important;
  transition: box-shadow .18s, border-color .18s, transform .18s;
}
html.theme-light .card:hover,
html.theme-light .metric-card:hover,
html.theme-light .card-btn:hover {
  border-color:#bfdbfe !important;
  box-shadow:
    0 2px 4px rgba(15,23,42,.06),
    0 8px 24px rgba(29,78,216,.10) !important;
}

/* Metric cards: tiny colored accent rail on the left so they pop */
html.theme-light .metric-card {
  position:relative;
  overflow:hidden;
}
html.theme-light .metric-card::before {
  content:'';
  position:absolute; left:0; top:0; bottom:0; width:3px;
  background: linear-gradient(180deg,#3b82f6,#22d3ee);
  opacity:.85;
}
html.theme-light .metric-card:nth-of-type(3n+2)::before { background: linear-gradient(180deg,#22c55e,#10b981); }
html.theme-light .metric-card:nth-of-type(3n+3)::before { background: linear-gradient(180deg,#f59e0b,#f97316); }
html.theme-light .metric-card .metric-val { color:#0f172a !important; }

/* --- Quick-action rows: they were hard-coded dark navy. --- */
html.theme-light .qa-row {
  background:#ffffff !important;
  border:1px solid #e2e8f0 !important;
  border-radius:8px !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.03);
  transition: border-color .15s, background .15s, transform .15s;
}
html.theme-light .qa-row:hover {
  background: linear-gradient(90deg,#eff6ff,#ffffff) !important;
  border-color:#93c5fd !important;
  transform: translateX(2px);
}
html.theme-light .qa-row span { color:#0f172a !important; }
html.theme-light .qa-row [style*="color:#475569"] { color:#1d4ed8 !important; font-weight:600 !important; }

/* --- Header bar: keep dark like the brand, but make icon buttons
       readable and add a subtle border. --- */
html.theme-light #shell-header,
html.theme-light #app-header,
html.theme-light .hdr,
html.theme-light header {
  background: linear-gradient(180deg,#0b1426 0%,#0a1322 100%) !important;
  border-bottom:1px solid rgba(125,211,252,.18) !important;
  color:#e2e8f0 !important;
}
html.theme-light .hdr-icon svg,
html.theme-light .hdr svg            { stroke:#cbd5e1 !important; }
html.theme-light .hdr-icon:hover svg { stroke:#22d3ee !important; }
html.theme-light .hdr-search        { background:rgba(255,255,255,.06) !important; border-color:rgba(125,211,252,.22) !important; }
html.theme-light .hdr-search input   { color:#e2e8f0 !important; }
html.theme-light .hdr-search input::placeholder { color:#94a3b8 !important; }

/* --- Page background: very subtle blue-tinted gradient instead of flat --- */
html.theme-light body,
html.theme-light #app-main,
html.theme-light .page {
  background: linear-gradient(180deg,#eef2f8 0%,#f5f8fc 100%) !important;
}

/* --- Buttons: a touch of gradient on primary, crisper outline on ghost --- */
html.theme-light .btn-primary {
  background: linear-gradient(180deg,#2563eb,#1d4ed8) !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.06), 0 4px 10px rgba(29,78,216,.20) !important;
}
html.theme-light .btn-primary:hover {
  background: linear-gradient(180deg,#1d4ed8,#1e40af) !important;
  box-shadow: 0 2px 4px rgba(15,23,42,.08), 0 6px 14px rgba(29,78,216,.28) !important;
}
html.theme-light .btn-success {
  background: linear-gradient(180deg,#16a34a,#15803d) !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.06), 0 4px 10px rgba(21,128,61,.18) !important;
}
html.theme-light .btn-danger {
  background: linear-gradient(180deg,#dc2626,#b91c1c) !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.06), 0 4px 10px rgba(220,38,38,.18) !important;
}

/* --- Generic "dark inline color" → readable on light card.
       Catches the many table cells with inline color:#cbd5e1. --- */
html.theme-light [style*="color:#cbd5e1"] { color:#0f172a !important; font-weight:500; }
html.theme-light [style*="color:#e2e8f0"] { color:#0f172a !important; }

/* --- Hard-coded dark backgrounds in CSS rules we can't easily reach
       (qa-row was one; cover the rest of the navy fills) --- */
html.theme-light .msg-compose-bar textarea { background:#ffffff !important; color:#0f172a !important; border-color:#cbd5e1 !important; }

/* --- Tab pills and chips: a hint of gradient --- */
html.theme-light .chip {
  background: linear-gradient(180deg,#eff6ff,#dbeafe) !important;
  border:1px solid #bfdbfe !important;
}
html.theme-light .pill-blue {
  background: linear-gradient(180deg,#eff6ff,#dbeafe) !important;
}
html.theme-light .pill-green {
  background: linear-gradient(180deg,#f0fdf4,#dcfce7) !important;
}
html.theme-light .pill-amber {
  background: linear-gradient(180deg,#fffbeb,#fef3c7) !important;
}
html.theme-light .pill-red {
  background: linear-gradient(180deg,#fef2f2,#fee2e2) !important;
}

/* --- Floating assist launcher with a richer glow --- */
html.theme-light #assist-launcher {
  background: linear-gradient(180deg,#2563eb,#1d4ed8) !important;
  box-shadow: 0 8px 22px rgba(29,78,216,.34), 0 2px 6px rgba(15,23,42,.10) !important;
}

/* ════════════════════════════════════════════════════════
   LIGHT MODE — LIVELY PASS
   The light theme had colorful sidebar icons but the rest
   of the surface (cards, header, metrics, panels) stayed
   white-on-white. This pass paints color into every other
   part of the system: header goes light + brand-blue, every
   card grows a 6-color top accent rail that cycles by
   position, metric values pick up the same hue, status
   panels get colored headers, and card-btn hovers tint
   toward the card's accent. Scoped to html.theme-light;
   dark mode is untouched.
   ════════════════════════════════════════════════════════ */

/* --- Header: ditch the dark navy in light mode. Replace with
       a bright, brand-blue gradient so the top of the app
       feels alive instead of mourning. --- */
html.theme-light #shell-header,
html.theme-light #app-header,
html.theme-light .hdr,
html.theme-light header {
  background: linear-gradient(90deg,#ffffff 0%,#eff6ff 55%,#dbeafe 100%) !important;
  border-bottom:1px solid #bfdbfe !important;
  color:#0f172a !important;
  box-shadow: 0 1px 0 rgba(29,78,216,.04), 0 2px 8px rgba(29,78,216,.05);
}
html.theme-light .hdr-icon svg,
html.theme-light .hdr svg            { stroke:#1d4ed8 !important; }
html.theme-light .hdr-icon:hover svg { stroke:#2563eb !important; }
html.theme-light .hdr-search        { background:#ffffff !important; border:1px solid #bfdbfe !important; }
html.theme-light .hdr-search input   { color:#0f172a !important; }
html.theme-light .hdr-search input::placeholder { color:#94a3b8 !important; }
html.theme-light .hdr-kbd            { background:#dbeafe !important; color:#1d4ed8 !important; border-color:#bfdbfe !important; }

/* --- Cycling palette for cards. Six hues, repeating, so the
       grid reads as a colored index rather than a white wall.
       Top rail is 3px; the card body stays white so text and
       contents remain crisp. --- */
html.theme-light .card,
html.theme-light .status-panel,
html.theme-light .card-btn {
  position:relative;
  overflow:hidden;
}
html.theme-light .card::before,
html.theme-light .status-panel::before,
html.theme-light .card-btn::before {
  content:'';
  position:absolute; left:0; right:0; top:0; height:3px;
  background: linear-gradient(90deg,#3b82f6,#22d3ee);
  opacity:.9;
}
html.theme-light .card:nth-of-type(6n+2)::before,
html.theme-light .status-panel:nth-of-type(6n+2)::before,
html.theme-light .card-btn:nth-of-type(6n+2)::before {
  background: linear-gradient(90deg,#22c55e,#10b981);
}
html.theme-light .card:nth-of-type(6n+3)::before,
html.theme-light .status-panel:nth-of-type(6n+3)::before,
html.theme-light .card-btn:nth-of-type(6n+3)::before {
  background: linear-gradient(90deg,#a855f7,#8b5cf6);
}
html.theme-light .card:nth-of-type(6n+4)::before,
html.theme-light .status-panel:nth-of-type(6n+4)::before,
html.theme-light .card-btn:nth-of-type(6n+4)::before {
  background: linear-gradient(90deg,#f59e0b,#f97316);
}
html.theme-light .card:nth-of-type(6n+5)::before,
html.theme-light .status-panel:nth-of-type(6n+5)::before,
html.theme-light .card-btn:nth-of-type(6n+5)::before {
  background: linear-gradient(90deg,#ec4899,#f43f5e);
}
html.theme-light .card:nth-of-type(6n+6)::before,
html.theme-light .status-panel:nth-of-type(6n+6)::before,
html.theme-light .card-btn:nth-of-type(6n+6)::before {
  background: linear-gradient(90deg,#14b8a6,#0ea5e9);
}

/* --- Metric cards: stronger color. Each card gets a tinted
       background wash + matching number color. The existing
       3-cycle left rail still wins; we add a top-right corner
       glow + colored value text. --- */
html.theme-light .metric-card {
  background: linear-gradient(135deg,#ffffff 0%,#eff6ff 100%) !important;
}
html.theme-light .metric-card:nth-of-type(3n+1) .metric-val { color:#1d4ed8 !important; }
html.theme-light .metric-card:nth-of-type(3n+2) {
  background: linear-gradient(135deg,#ffffff 0%,#f0fdf4 100%) !important;
}
html.theme-light .metric-card:nth-of-type(3n+2) .metric-val { color:#15803d !important; }
html.theme-light .metric-card:nth-of-type(3n+3) {
  background: linear-gradient(135deg,#ffffff 0%,#fff7ed 100%) !important;
}
html.theme-light .metric-card:nth-of-type(3n+3) .metric-val { color:#c2410c !important; }

/* --- Card-btn hovers: tint toward the card's own accent so
       hover feels intentional, not generic blue. Uses the same
       cycle as the top rail. --- */
html.theme-light .card-btn:nth-of-type(6n+2):hover { border-color:#86efac !important; box-shadow: 0 2px 4px rgba(15,23,42,.06), 0 8px 24px rgba(22,163,74,.14) !important; }
html.theme-light .card-btn:nth-of-type(6n+3):hover { border-color:#d8b4fe !important; box-shadow: 0 2px 4px rgba(15,23,42,.06), 0 8px 24px rgba(168,85,247,.14) !important; }
html.theme-light .card-btn:nth-of-type(6n+4):hover { border-color:#fdba74 !important; box-shadow: 0 2px 4px rgba(15,23,42,.06), 0 8px 24px rgba(245,158,11,.16) !important; }
html.theme-light .card-btn:nth-of-type(6n+5):hover { border-color:#fbcfe8 !important; box-shadow: 0 2px 4px rgba(15,23,42,.06), 0 8px 24px rgba(236,72,153,.16) !important; }
html.theme-light .card-btn:nth-of-type(6n+6):hover { border-color:#99f6e4 !important; box-shadow: 0 2px 4px rgba(15,23,42,.06), 0 8px 24px rgba(20,184,166,.14) !important; }

/* --- Page title: thin colored accent under the H1 so each
       page has a banner of color, like a section flag. --- */
html.theme-light .page-title {
  position:relative;
  padding-bottom:6px;
}
html.theme-light .page-title::after {
  content:'';
  position:absolute; left:0; bottom:0; width:48px; height:3px;
  background: linear-gradient(90deg,#2563eb,#22d3ee);
  border-radius:2px;
}

/* --- Section labels (.si-section + small caps headings):
       give them a brand-blue tint instead of pale grey. --- */
html.theme-light .si-section { color:#1d4ed8 !important; }

/* --- Tabs on row: active tab gets a colored pill background,
       not just a thin underline. --- */
html.theme-light .tab-btn.on {
  background: linear-gradient(180deg,#eff6ff,#dbeafe) !important;
  color:#1d4ed8 !important;
  border-bottom:2px solid #1d4ed8 !important;
  font-weight:600;
}

/* --- Tables: header row picks up a soft blue wash instead of
       flat grey, and the active sort arrow blue is bolder. --- */
html.theme-light .tbl-wrap table th {
  background: linear-gradient(180deg,#eff6ff,#dbeafe) !important;
  color:#1d4ed8 !important;
  border-bottom:1px solid #bfdbfe !important;
}

/* --- Quick-action rows: rotate accent borders by position
       so the list reads colorful. --- */
html.theme-light .qa-row:nth-of-type(6n+1) { border-left:3px solid #3b82f6 !important; }
html.theme-light .qa-row:nth-of-type(6n+2) { border-left:3px solid #22c55e !important; }
html.theme-light .qa-row:nth-of-type(6n+3) { border-left:3px solid #a855f7 !important; }
html.theme-light .qa-row:nth-of-type(6n+4) { border-left:3px solid #f59e0b !important; }
html.theme-light .qa-row:nth-of-type(6n+5) { border-left:3px solid #ec4899 !important; }
html.theme-light .qa-row:nth-of-type(6n+6) { border-left:3px solid #14b8a6 !important; }

/* --- Header wordmark: the lively gradient header turned the
       near-white "TRINITY" text invisible. Force a brand-blue
       wordmark + cyan subline so it reads on the pale gradient.
       Wins over the per-shell rules in clinical/index.html. --- */
html.theme-light .hdr-logo-name {
  color:#1d4ed8 !important;
  text-shadow: 0 1px 0 rgba(255,255,255,.6);
  font-weight:800 !important;
}
html.theme-light .hdr-logo-sub {
  color:#0891b2 !important;
  font-weight:700 !important;
}

/* Platform shell uses .brand-txt / .brand-shell instead of .hdr-logo-name.
   Same problem, same fix — force brand-blue + cyan so the wordmark reads
   on the lively-pass white→sky→blue header (and stays visible even if a
   stale stylesheet leaves the header dark). */
html.theme-light .brand-txt {
  color:#1d4ed8 !important;
  font-weight:800 !important;
  text-shadow:
    0 1px 0 rgba(255,255,255,.65),
    0 0 14px rgba(255,255,255,.45) !important;
  letter-spacing:1.5px !important;
}
html.theme-light .brand-shell {
  color:#0891b2 !important;
  font-weight:700 !important;
  text-shadow: 0 1px 0 rgba(255,255,255,.55) !important;
}

/* --- Header search: input fills the bar, dedicated Search button on the right --- */
.hdr-search { padding: 0 4px 0 12px !important; gap: 8px !important; }
.hdr-search input,
.hdr-search input[type="text"] {
  flex:1 1 auto !important;
  width:100% !important;
  min-width:0 !important;
  padding:0 !important;
  margin:0 !important;
  background:transparent !important;
  border:none !important;
  outline:none !important;
}
.hdr-search-btn {
  flex:0 0 auto;
  display:inline-flex; align-items:center; gap:6px;
  height:calc(100% - 8px);
  margin:4px 4px 4px 0;
  padding:0 12px;
  border:none; border-radius:8px;
  background: linear-gradient(135deg,#2563eb,#1d4ed8);
  color:#ffffff !important;
  font-size:12px; font-weight:700; letter-spacing:.01em;
  font-family:inherit;
  cursor:pointer;
  box-shadow: 0 1px 2px rgba(15,23,42,.18), inset 0 1px 0 rgba(255,255,255,.18);
  transition: background .12s, transform .06s, box-shadow .12s;
}
.hdr-search-btn:hover  { background: linear-gradient(135deg,#1d4ed8,#1e40af); box-shadow: 0 2px 6px rgba(37,99,235,.35), inset 0 1px 0 rgba(255,255,255,.18); }
.hdr-search-btn:active { transform: translateY(1px); }
.hdr-search-btn svg    { stroke:#ffffff !important; flex-shrink:0; }
.hdr-search-btn span   { line-height:1; }
html.theme-light .hdr-search-btn       { background: linear-gradient(135deg,#3b82f6,#1d4ed8); }
html.theme-light .hdr-search-btn:hover { background: linear-gradient(135deg,#2563eb,#1e40af); }
@media (max-width: 720px) {
  .hdr-search-btn span { display:none; }
  .hdr-search-btn { padding:0 10px; }
}

/* --- Header env selector: pale red text on pale-pink bg washed
       out against the light gradient header. Make each variant a
       solid, readable badge in light mode. --- */
html.theme-light .hdr-env {
  background:#ffffff !important;
  border:1px solid #cbd5e1 !important;
  color:#0f172a !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.08);
  font-weight:700;
}
html.theme-light .hdr-env.prod {
  background: linear-gradient(135deg,#ef4444,#b91c1c) !important;
  border-color:#991b1b !important;
  color:#ffffff !important;
}
html.theme-light .hdr-env.staging {
  background: linear-gradient(135deg,#f59e0b,#b45309) !important;
  border-color:#92400e !important;
  color:#ffffff !important;
}
html.theme-light .hdr-env.demo {
  background: linear-gradient(135deg,#3b82f6,#1d4ed8) !important;
  border-color:#1e40af !important;
  color:#ffffff !important;
}
html.theme-light .hdr-env .dot { background:#ffffff !important; box-shadow:0 0 0 2px rgba(255,255,255,.4); }
html.theme-light .hdr-env svg  { stroke:#ffffff !important; }

/* ============================================================
   SEARCH V2 — Salesforce-style: scope chip + inline magnifier
   Wins by being last in cascade. Reference: SF Lightning global search.
   ============================================================ */
.hdr-search.hdr-search-v2 {
  flex: 1 1 640px !important;
  max-width: 720px !important;
  min-width: 320px !important;
  height: 36px !important;
  padding: 0 !important;
  gap: 0 !important;
  background: rgba(15,23,42,.55) !important;
  border: 1.5px solid rgba(125,211,252,.25) !important;
  border-radius: 8px !important;
  display: flex !important;
  align-items: stretch !important;
  overflow: visible !important;
  transition: border-color .15s, box-shadow .15s, background .15s !important;
}
.hdr-search.hdr-search-v2:focus-within {
  border-color: #2563eb !important;
  background: rgba(15,23,42,.7) !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,.18) !important;
}

/* Scope chip (left) */
.hdr-search-scope {
  display: flex; align-items: center; gap: 6px;
  background: transparent;
  border: none;
  border-right: 1px solid rgba(125,211,252,.22);
  padding: 0 12px;
  height: 100%;
  color: #cbd5e1;
  font-size: 12px;
  font-weight: 500;
  cursor: pointer;
  border-radius: 8px 0 0 8px;
  white-space: nowrap;
  flex-shrink: 0;
}
.hdr-search-scope:hover { background: rgba(125,211,252,.08); }
.hdr-search-scope-label strong { color:#e2e8f0; font-weight: 700; margin-left: 2px; }
.hdr-search-scope-caret { stroke:#94a3b8; transition: transform .15s; }
.hdr-search-scope.open .hdr-search-scope-caret { transform: rotate(180deg); }

/* Inline magnifier */
.hdr-search.hdr-search-v2 .hdr-search-icon {
  display: flex; align-items: center; justify-content: center;
  padding: 0 8px 0 12px;
  color: #94a3b8;
  flex-shrink: 0;
}
.hdr-search.hdr-search-v2:focus-within .hdr-search-icon { color:#2563eb; }
.hdr-search.hdr-search-v2 .hdr-search-icon svg { stroke: currentColor !important; }

/* Input — fills the whole remaining bar */
.hdr-search.hdr-search-v2 input,
.hdr-search.hdr-search-v2 input[type="text"] {
  flex: 1 1 auto !important;
  width: 100% !important;
  height: 100% !important;
  background: transparent !important;
  border: none !important;
  outline: none !important;
  padding: 0 14px 0 0 !important;
  color: #e2e8f0 !important;
  font-size: 13px !important;
  font-family: var(--font-sans) !important;
  letter-spacing: .1px;
}
.hdr-search.hdr-search-v2 input::placeholder { color:#94a3b8 !important; opacity:1 !important; }

/* Hide the old right-side button anywhere it still renders */
.hdr-search.hdr-search-v2 .hdr-search-btn { display:none !important; }

/* Dropdown — anchor under the v2 bar */
.hdr-search.hdr-search-v2 .search-dropdown,
.hdr-search.hdr-search-v2 #search-dd {
  top: 40px !important;
  left: 0 !important;
  right: 0 !important;
  width: auto !important;
  border-radius: 10px !important;
  border: 1px solid rgba(125,211,252,.22) !important;
  box-shadow: 0 12px 32px rgba(0,0,0,.35) !important;
}

/* ----- Light mode ----- */
html.theme-light .hdr-search.hdr-search-v2 {
  background: #ffffff !important;
  border: 1.5px solid #c7d2fe !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.04) !important;
}
html.theme-light .hdr-search.hdr-search-v2:focus-within {
  border-color: #1d4ed8 !important;
  box-shadow: 0 0 0 3px rgba(29,78,216,.18) !important;
  background: #ffffff !important;
}
/* Phase 51B — scope chip sits on the DARK header too; match the field
   (subtle-on-dark) instead of a white gradient box. */
html.theme-light .hdr-search-scope {
  color: #eaf2ff;
  border-right: 1px solid rgba(255,255,255,.16);
  background: transparent;
}
html.theme-light .hdr-search-scope:hover { background: rgba(255,255,255,.08); }
html.theme-light .hdr-search-scope-label strong { color:#bfe6df; }
html.theme-light .hdr-search-scope-caret { stroke:rgba(234,242,255,.7); }
html.theme-light .hdr-search.hdr-search-v2 .hdr-search-icon { color:#64748b; }
html.theme-light .hdr-search.hdr-search-v2:focus-within .hdr-search-icon { color:#1d4ed8; }
html.theme-light .hdr-search.hdr-search-v2 input,
html.theme-light .hdr-search.hdr-search-v2 input[type="text"] { color:#0f172a !important; }
html.theme-light .hdr-search.hdr-search-v2 input::placeholder { color:#94a3b8 !important; }
html.theme-light .hdr-search.hdr-search-v2 .search-dropdown,
html.theme-light .hdr-search.hdr-search-v2 #search-dd {
  background:#ffffff !important;
  border:1px solid #e2e8f0 !important;
  box-shadow: 0 12px 32px rgba(15,23,42,.12) !important;
}

/* Narrow screens — hide scope label text, keep chip */
@media (max-width: 880px) {
  .hdr-search.hdr-search-v2 { flex-basis: 360px !important; min-width: 220px !important; }
  .hdr-search-scope-label { display:none; }
  .hdr-search-scope { padding: 0 8px; gap:4px; }
}

/* =========================================================
   UNIFIED SEARCH BARS — apply the SF/v2 look to every
   search input across the platform (table controls,
   conversation lists, new-message modal, etc.).
   ========================================================= */

/* ----- Table controls search (.tc-search) ----- */
.tc-search {
  height: 34px !important;
  max-width: 320px !important;
  min-width: 200px !important;
  border-radius: 10px !important;
  padding: 0 12px !important;
  gap: 8px !important;
  background: rgba(15,31,53,.55) !important;
  border: 1.5px solid rgba(125,211,252,.16) !important;
  transition: border-color .15s, box-shadow .15s, background .15s !important;
}
.tc-search:focus-within {
  border-color: #2563eb !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,.18) !important;
}
.tc-search svg {
  width: 15px !important; height: 15px !important;
  stroke: #94a3b8 !important;
  flex-shrink: 0;
  transition: stroke .15s;
}
.tc-search:focus-within svg { stroke: #2563eb !important; }
.tc-search input {
  flex: 1 1 auto !important;
  width: 100% !important;
  height: 100% !important;
  background: transparent !important;
  border: none !important;
  outline: none !important;
  padding: 0 !important;
  font-size: 12.5px !important;
  font-family: var(--font-sans) !important;
  letter-spacing: .1px;
}

html.theme-light .tc-search {
  background: #ffffff !important;
  border: 1.5px solid #c7d2fe !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.04) !important;
}
html.theme-light .tc-search:focus-within {
  border-color: #1d4ed8 !important;
  box-shadow: 0 0 0 3px rgba(29,78,216,.18) !important;
}
html.theme-light .tc-search svg { stroke: #94a3b8 !important; }
html.theme-light .tc-search:focus-within svg { stroke: #1d4ed8 !important; }
html.theme-light .tc-search input { color: #0f172a !important; }
html.theme-light .tc-search input::placeholder { color: #94a3b8 !important; }

/* ----- Conversation list search (.msg-search inside .msg-search-wrap) -----
   The input is bare (no icon element in markup), so we paint a magnifier
   as a background-image on the left and pad the text in. */
.msg-search-wrap { padding: 10px 12px !important; }
.msg-search {
  width: 100% !important;
  height: 36px !important;
  box-sizing: border-box !important;
  border-radius: 10px !important;
  padding: 0 12px 0 36px !important;
  font-size: 12.5px !important;
  background-color: rgba(15,31,53,.55) !important;
  border: 1.5px solid rgba(125,211,252,.16) !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.35-4.35'/></svg>") !important;
  background-repeat: no-repeat !important;
  background-position: 12px 50% !important;
  transition: border-color .15s, box-shadow .15s, background-color .15s !important;
}
.msg-search:focus {
  border-color: #2563eb !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,.18) !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%232563eb' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.35-4.35'/></svg>") !important;
}
html.theme-light .msg-search {
  background-color: #ffffff !important;
  border: 1.5px solid #c7d2fe !important;
  color: #0f172a !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.04) !important;
}
html.theme-light .msg-search:focus {
  border-color: #1d4ed8 !important;
  box-shadow: 0 0 0 3px rgba(29,78,216,.18) !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%231d4ed8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.35-4.35'/></svg>") !important;
}
html.theme-light .msg-search::placeholder { color: #94a3b8 !important; }

/* ----- New Message modal search (.nm-search-input) ----- */
.nm-search-input {
  width: 100% !important;
  height: 38px !important;
  box-sizing: border-box !important;
  border-radius: 10px !important;
  padding: 0 12px 0 38px !important;
  font-size: 13px !important;
  background-color: rgba(15,31,53,.55) !important;
  border: 1.5px solid rgba(125,211,252,.16) !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.35-4.35'/></svg>") !important;
  background-repeat: no-repeat !important;
  background-position: 12px 50% !important;
  transition: border-color .15s, box-shadow .15s, background-color .15s !important;
}
.nm-search-input:focus {
  border-color: #2563eb !important;
  box-shadow: 0 0 0 3px rgba(37,99,235,.18) !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%232563eb' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.35-4.35'/></svg>") !important;
}
html.theme-light .nm-search-input {
  background-color: #ffffff !important;
  border: 1.5px solid #c7d2fe !important;
  color: #0f172a !important;
  box-shadow: 0 1px 2px rgba(15,23,42,.04) !important;
}
html.theme-light .nm-search-input:focus {
  border-color: #1d4ed8 !important;
  box-shadow: 0 0 0 3px rgba(29,78,216,.18) !important;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%231d4ed8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.35-4.35'/></svg>") !important;
}
html.theme-light .nm-search-input::placeholder { color: #94a3b8 !important; }

/* ----- Catch-all: any bare <input type="search"> on the page ----- */
input[type="search"] {
  height: 36px;
  box-sizing: border-box;
  border-radius: 10px;
  padding: 0 12px 0 36px;
  font-size: 12.5px;
  font-family: var(--font-sans);
  background-color: rgba(15,31,53,.55);
  border: 1.5px solid rgba(125,211,252,.16);
  color: #e2e8f0;
  outline: none;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='15' height='15' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><path d='m21 21-4.35-4.35'/></svg>");
  background-repeat: no-repeat;
  background-position: 12px 50%;
  transition: border-color .15s, box-shadow .15s;
}
input[type="search"]:focus {
  border-color: #2563eb;
  box-shadow: 0 0 0 3px rgba(37,99,235,.18);
}
html.theme-light input[type="search"] {
  background-color: #ffffff;
  border: 1.5px solid #c7d2fe;
  color: #0f172a;
  box-shadow: 0 1px 2px rgba(15,23,42,.04);
}
html.theme-light input[type="search"]:focus {
  border-color: #1d4ed8;
  box-shadow: 0 0 0 3px rgba(29,78,216,.18);
}


/* ========== HIPAA compliance pill + modal ========== */
.hipaa-pill {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  background: rgba(11,22,46,.78);
  border: 1px solid rgba(125,211,252,.22);
  border-radius: 14px;
  padding: 14px 22px 14px 18px;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  align-self: flex-start;
  cursor: pointer;
  font: inherit;
  color: inherit;
  text-align: left;
  transition: transform .15s ease, border-color .15s ease, box-shadow .15s ease, background .15s ease;
  box-shadow: 0 4px 18px rgba(0,0,0,.25);
}
.hipaa-pill:hover {
  transform: translateY(-1px);
  border-color: rgba(125,211,252,.45);
  box-shadow: 0 8px 24px rgba(0,0,0,.32), 0 0 0 4px rgba(125,211,252,.08);
  background: rgba(15,30,60,.85);
}
.hipaa-pill:focus-visible {
  outline: none;
  border-color: #7dd3fc;
  box-shadow: 0 0 0 3px rgba(125,211,252,.35);
}
.hipaa-pill-ico {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  flex: 0 0 auto;
}
.hipaa-pill-txt { display: inline-flex; flex-direction: column; gap: 2px; }
.hipaa-pill-title {
  color: #f0f9ff;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .2px;
  line-height: 1.2;
}
.hipaa-pill-sub {
  color: #94a3b8;
  font-size: 11.5px;
  font-weight: 400;
  line-height: 1.3;
  letter-spacing: .1px;
}

/* Modal */
.hipaa-modal-backdrop {
  position: fixed;
  inset: 0;
  background: rgba(2,6,23,.72);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 10000;
  padding: 20px;
}
.hipaa-modal-backdrop.on { display: flex; }
.hipaa-modal {
  width: min(620px, 100%);
  max-height: 86vh;
  overflow-y: auto;
  background: linear-gradient(180deg,#0b1730 0%,#0a1428 100%);
  border: 1px solid rgba(125,211,252,.25);
  border-radius: 18px;
  box-shadow: 0 30px 80px rgba(0,0,0,.55);
  padding: 28px 30px 24px;
  color: #e2e8f0;
  position: relative;
  animation: hipaaPop .18s ease-out;
}
@keyframes hipaaPop { from { transform: scale(.96); opacity: 0; } to { transform: scale(1); opacity: 1; } }
.hipaa-modal-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 32px;
  height: 32px;
  border-radius: 8px;
  background: transparent;
  border: 1px solid rgba(148,163,184,.25);
  color: #cbd5e1;
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
}
.hipaa-modal-close:hover { background: rgba(148,163,184,.12); color:#fff; }
.hipaa-modal-head {
  display: flex;
  align-items: center;
  gap: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid rgba(125,211,252,.14);
  margin-bottom: 10px;
}
.hipaa-modal-ico {
  width: 44px; height: 44px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 12px;
  background: rgba(125,211,252,.10);
  border: 1px solid rgba(125,211,252,.28);
}
.hipaa-modal-title { color:#f0f9ff; font-size: 18px; font-weight: 700; letter-spacing:.2px; }
.hipaa-modal-tag   { color:#7dd3fc; font-size: 11.5px; font-weight: 600; letter-spacing: 1.2px; text-transform: uppercase; margin-top: 2px; }
.hipaa-modal h4 {
  color: #f1f5f9;
  font-size: 13px;
  font-weight: 700;
  margin: 14px 0 8px;
  letter-spacing:.4px;
  text-transform: uppercase;
}
.hipaa-modal ul { list-style: none; padding: 0; margin: 0; }
.hipaa-modal li {
  position: relative;
  padding: 8px 0 8px 24px;
  color: #cbd5e1;
  font-size: 13.5px;
  line-height: 1.55;
  border-bottom: 1px dashed rgba(148,163,184,.10);
}
.hipaa-modal li:last-child { border-bottom: none; }
.hipaa-modal li::before {
  content: "";
  position: absolute;
  left: 2px; top: 14px;
  width: 14px; height: 14px;
  border-radius: 50%;
  background:
    radial-gradient(circle at 35% 35%, #7dd3fc, #1d4ed8);
  box-shadow: 0 0 0 3px rgba(125,211,252,.10);
}
.hipaa-modal li b { color:#f0f9ff; font-weight: 600; }
.hipaa-modal-foot {
  margin-top: 20px;
  padding-top: 14px;
  border-top: 1px solid rgba(125,211,252,.14);
  color: #94a3b8;
  font-size: 11.5px;
  line-height: 1.5;
}
.hipaa-modal-foot a { color:#7dd3fc; text-decoration: none; }
.hipaa-modal-foot a:hover { text-decoration: underline; }

/* Light mode: keep the pill dark (it sits over the dark login art),
   but tone down the modal contrast for users opening it from a light page. */
html.theme-light .hipaa-modal {
  background: linear-gradient(180deg,#0b1730 0%,#0a1428 100%);
  color: #e2e8f0;
}

/* ════════════════════════════════════════════════════════════
   EMERALD — the system default theme ("MediCore" look)
   ────────────────────────────────────────────────────────────
   Emerald ships as a teal "skin" layered ON TOP of theme-light:
   shared-state.js puts BOTH `theme-light theme-emerald` on <html>,
   so every readability remap from the light block already applies.
   This block only adds what makes the mockup distinct:
     • soft mint surface scale
     • teal accent + dark-teal gradient sidebar with light nav text
     • white cards with a teal top-accent rail on metric tiles
     • softer corner radius
   It is appended last so it wins the cascade over the light block.
   Dark / Light / System themes are completely unaffected.
   ════════════════════════════════════════════════════════════ */
html.theme-emerald {
  /* ── Hue engine ──────────────────────────────────────────────
     The ENTIRE Emerald palette is derived from ONE hue so the user
     can recolor it (teal → blue → red → orange …) and every part —
     sidebar, header, accents, chips, canvas — retints in lockstep,
     keeping the same saturation/lightness so contrast (and therefore
     legibility) is preserved at every hue. shared-state.js writes
     `--em-h` inline from the `emeraldHue` pref; this 174 (teal) is the
     default fallback when JS hasn't run yet. ── */
  --em-h: 174;

  /* Derived palette — all anchored to --em-h */
  --em-accent:     hsl(var(--em-h) 84% 32%);   /* ≈ #0d9488 */
  --em-accent-l:   hsl(var(--em-h) 76% 41%);   /* ≈ #14b8a6 */
  --em-accent-d:   hsl(var(--em-h) 77% 26%);   /* ≈ #0f766e */
  --em-accent-br:  hsl(var(--em-h) 80% 65%);   /* bright ≈ #5eead4 */
  --em-side-1:     hsl(var(--em-h) 64% 14%);   /* sidebar/header top */
  --em-side-2:     hsl(var(--em-h) 56% 21%);
  --em-side-3:     hsl(var(--em-h) 47% 35%);   /* sidebar foot */
  --em-hdr-2:      hsl(var(--em-h) 60% 16%);   /* header bottom */
  --em-navtext:    hsl(var(--em-h) 45% 89%);   /* light nav text ≈ #d6efe9 */
  --em-navicon:    hsl(var(--em-h) 40% 76%);   /* resting nav icon ≈ #a9d8cf */
  --em-navicon-on: hsl(var(--em-h) 82% 72%);   /* active nav icon ≈ #7af0dd */
  --em-section:    hsl(var(--em-h) 30% 67%);   /* nav section label ≈ #8fcabf */
  --em-hdricon:    hsl(var(--em-h) 70% 94%);   /* header icons — bright mint-white for clear contrast on the dark-teal bar (was 45% 82% ≈ #bfe6df, read as faint grey) */
  --em-onbg:       hsl(var(--em-h) 70% 26%);   /* text on tint chips ≈ #0f766e */
  --em-canvas:     hsl(var(--em-h) 28% 87%);   /* page canvas ≈ #d7e7e0 */
  --em-surface:    hsl(var(--em-h) 28% 92%);   /* secondary chrome ≈ #e7f1ec */
  --em-tint:       hsl(var(--em-h) 47% 86%);   /* chip/pill fill ≈ #cdeee7 */
  --em-border:     hsl(var(--em-h) 20% 80%);   /* card borders ≈ #c2d7cf */
  --em-border-2:   hsl(var(--em-h) 24% 70%);   /* ≈ #9ccabf */

  /* Surface scale — warm mint instead of light's cool slate */
  --bg-base:    var(--em-canvas);   /* page canvas */
  --bg-surface: var(--em-surface);  /* secondary chrome */
  --bg-card:    #ffffff;            /* cards, modals, popovers */
  --bg-input:   #ffffff;
  --bg-hover:   hsl(var(--em-h) 80% 32% / .07);
  --bg-active:  hsl(var(--em-h) 80% 32% / .13);

  /* Borders — gently hue-tinted */
  --border-faint: hsl(var(--em-h) 70% 26% / .10);
  --border-mid:   var(--em-border);
  --border-blue:  var(--em-border-2);
  --border-accent:var(--em-accent);

  /* Brand — accent that survives on white. In Emerald these are driven by the
     hue (JS clears the inline accent hexes so this CSS wins), keeping buttons,
     rails, and the sidebar all on the same color. */
  --accent:       var(--em-accent);
  --accent-light: var(--em-accent-l);
  --accent-pale:  var(--em-accent-br);
  --accent-dark:  var(--em-accent-d);

  /* Softer, more rounded cards to match the mockup */
  --radius-md: 14px;
  --radius-lg: 18px;

  /* Premium soft shadow */
  --shadow-pop:   0 6px 22px rgba(13,80,72,.12), 0 1px 3px rgba(13,80,72,.07);
  --shadow-modal: 0 18px 50px rgba(13,80,72,.22), 0 2px 6px rgba(13,80,72,.10);
}

/* ── Page canvas ── */
html.theme-emerald body { background:var(--bg-base); }
html.theme-emerald ::-webkit-scrollbar-thumb       { background:hsl(var(--em-h) 25% 73%); }
html.theme-emerald ::-webkit-scrollbar-thumb:hover { background:hsl(var(--em-h) 30% 60%); }

/* ── Sidebar — the signature dark-teal gradient with light nav text ──
   Overrides the light theme's pale sidebar. */
html.theme-emerald #sidebar {
  background:linear-gradient(180deg,var(--em-side-1) 0%,var(--em-side-2) 46%,var(--em-side-3) 100%) !important;
  border-right:none !important;
  box-shadow:2px 0 18px rgba(13,59,56,.18);
}
html.theme-emerald .si               { color:var(--em-navtext); }
html.theme-emerald .si .si-lbl       { color:var(--em-navtext); }
/* !important is required here: the global "colorful sidebar icons"
   rules (.si svg[data-icon=…]) set vivid hues with !important and are
   unscoped, so on the dark-teal rail several (indigo/blue/slate) went
   near-invisible. These light, hue-matched overrides win them back and
   keep the icon legible at rest, on hover, and active. */
html.theme-emerald .si svg           { color:var(--em-navicon) !important; stroke:currentColor !important; }
/* Phase 51A: the blanket monochrome above read as "dead white outlines" with no
   hierarchy. Restore semantic colour for the high-signal icons using bright,
   dark-rail-legible hues; the rest stay calm teal so the rail still reads as one
   skin. (active state still wins via .si.on svg below.) */
html.theme-emerald .si:not(.on) svg[data-icon="alert"]  { color:#fbbf24 !important; } /* escalations — amber */
html.theme-emerald .si:not(.on) svg[data-icon="msg"]    { color:#7dd3fc !important; } /* messages — sky */
html.theme-emerald .si:not(.on) svg[data-icon="check"]  { color:#86efac !important; } /* approvals — green */
html.theme-emerald .si:not(.on) svg[data-icon="user"]   { color:#5eead4 !important; } /* provider — teal */
html.theme-emerald .si:not(.on) svg[data-icon="users"]  { color:#f0abfc !important; } /* users — pink */
html.theme-emerald .si:not(.on) svg[data-icon="chart"]  { color:#c4b5fd !important; } /* analytics — violet */
/* Phase 78B-3 icons must keep colour on the emerald rail too (they were
   washed to --em-navicon by the blanket rule above). Bright, dark-legible. */
html.theme-emerald .si:not(.on) svg[data-icon="alarm"]    { color:#fca5a5 !important; } /* alarm — red */
html.theme-emerald .si:not(.on) svg[data-icon="escalate"] { color:#fdba74 !important; } /* escalation — orange */
html.theme-emerald .si:not(.on) svg[data-icon="patient"]  { color:#f9a8d4 !important; } /* patient — pink */
html.theme-emerald .si:not(.on) svg[data-icon="provider"] { color:#93c5fd !important; } /* provider — blue */
/* !important on the hover background is required: the light theme (which
   Emerald layers on) sets `.si:hover{background:#f1f5f9 !important}`. Without
   !important here that pale fill wins on the dark rail while our label is
   forced white — white-on-near-white, i.e. the item vanishes on hover. */
html.theme-emerald .si:hover         { background:rgba(255,255,255,.12) !important; }
html.theme-emerald .si:hover .si-lbl { color:#ffffff !important; }
html.theme-emerald .si:hover svg     { color:#ffffff !important; }
html.theme-emerald .si.on            { background:rgba(255,255,255,.16) !important; border-left-color:var(--em-accent-br) !important; }
html.theme-emerald .si.on .si-lbl    { color:#ffffff !important; font-weight:600; }
html.theme-emerald .si.on svg        { color:var(--em-navicon-on) !important; stroke:currentColor !important; }
html.theme-emerald .si-section       { color:var(--em-section) !important; font-weight:700; }
html.theme-emerald .si-badge         { background:#f97316; color:#fff; }

/* ── Metric tiles — white card + teal top-accent rail (mockup metric cards) ── */
html.theme-emerald .card-btn,
html.theme-emerald .metric-card {
  background:#ffffff !important;
  border:1px solid var(--border-mid) !important;
  border-top:3px solid var(--accent) !important;
  border-radius:var(--radius-md) !important;
  box-shadow:0 1px 2px rgba(13,80,72,.05), 0 6px 16px rgba(13,80,72,.06);
}
html.theme-emerald .card-btn:hover,
html.theme-emerald .metric-card:hover {
  border-color:var(--border-mid) !important;
  border-top-color:var(--accent-light) !important;
  box-shadow:0 2px 4px rgba(13,80,72,.08), 0 10px 24px rgba(13,148,136,.14);
}

/* Plain panels / cards (no top rail — keep them clean white) */
html.theme-emerald .card,
html.theme-emerald .status-panel {
  background:#ffffff !important;
  border:1px solid var(--border-mid) !important;
  border-radius:var(--radius-md) !important;
  box-shadow:0 1px 2px rgba(13,80,72,.04), 0 4px 14px rgba(13,80,72,.05);
}

/* ── Tables / chips inside emerald — re-tint the light remaps to teal ── */
html.theme-emerald .tbl-wrap table th    { background:var(--em-surface) !important; color:var(--em-onbg) !important; border-bottom:1px solid var(--em-border) !important; }
html.theme-emerald .tbl-wrap table th.sortable:hover { background:var(--em-tint) !important; color:var(--accent) !important; }
html.theme-emerald .tbl-wrap table tr:hover td { background:hsl(var(--em-h) 80% 32% / .05) !important; }
html.theme-emerald .chip     { background:var(--em-tint); color:var(--em-onbg); }
html.theme-emerald .chip-x   { color:var(--em-onbg); }
html.theme-emerald .pill-blue { background:var(--em-tint) !important; color:var(--em-onbg) !important; border:1px solid var(--em-accent-br) !important; }

/* ── Buttons — teal primary ── */
html.theme-emerald .btn-primary { background:var(--accent) !important; border-color:var(--accent) !important; }
html.theme-emerald .btn-primary:hover { background:var(--em-accent-d) !important; }

/* ── Activity feed circular icons (used on the overview / mockup "Recent Activity") ── */
html.theme-emerald .feed-icon { background:var(--em-accent-d); color:#fff; }

/* ── Donut + rail widgets (defined in the shells, themed here) ── */
html.theme-emerald .donut-track { stroke:hsl(var(--em-h) 35% 90%); }
html.theme-emerald .rail-card   { background:#ffffff; border:1px solid var(--border-mid); }

/* ════════════════════════════════════════════════════════════════════════
   Phase 64.3 — Theme/Token contrast remediation (WCAG AA on solid surfaces)
   Targets defects proven by tests/phase643-theme-audit.mjs: colored text on
   SOLID light backgrounds (settings drawer, login form, light pills) that
   missed AA in light/emerald. Header/sidebar chrome (light text over dark
   gradients) was confirmed CORRECT and is intentionally left untouched.
   Emerald = .theme-light + .theme-emerald, so .theme-light rules cover both;
   emerald-only blocks fix the hue-engine teal that is too light on white.
   ════════════════════════════════════════════════════════════════════════ */

/* Role pills sit on the SOLID white settings drawer in light/emerald; their
   dark-theme brights (amber/violet/cyan/blue/green) failed AA on white.
   Give each an AA-dark text + faint tint + matching border. */
html.theme-light .settings-pill.role-provider   { color:#1d4ed8 !important; background:#eff4ff !important; border-color:#bfd3fe !important; }
html.theme-light .settings-pill.role-supervisor  { color:#6d28d9 !important; background:#f4effe !important; border-color:#ddd0fb !important; }
html.theme-light .settings-pill.role-admin       { color:#15803d !important; background:#ecfdf3 !important; border-color:#bbf7d0 !important; }
html.theme-light .settings-pill.role-platadmin   { color:#b45309 !important; background:#fff7ed !important; border-color:#fed7aa !important; }
html.theme-light .settings-pill.role-intops      { color:#0e7490 !important; background:#ecfeff !important; border-color:#bae6fd !important; }
html.theme-light .settings-pill.warn             { color:#b45309 !important; border-color:#fed7aa !important; }

/* Inline-styled status pills that kept their dark-theme inline hex in light
   mode (PLATFORM-WIDE = indigo-on-dark, READ-ONLY = slate just under AA). */
html.theme-light .ph26h-platwide-pill { background:#e0e7ff !important; color:#3730a3 !important; border-color:#c7d2fe !important; }
html.theme-light .ph26e-readonly-pill { color:#475569 !important; }

/* Login helper text used a near-white inline hex (#cbd5f5) that vanished on
   the light/emerald login form surface. */
html.theme-light [style*="color:#cbd5f5"] { color:#475569 !important; }

/* Emerald hue engine derives a teal accent that is too light for text on the
   white content/login surfaces. Darken accent-colored LINKS to teal-700 (AA on
   white). Buttons/chrome that sit on dark or tinted emerald surfaces keep the
   bright accent — this only retargets text links on light backgrounds. */
html.theme-emerald .ext-link,
html.theme-emerald a.ext-link,
html.theme-emerald .ext-link.u-clk            { color:#0f766e !important; }
html.theme-emerald a[href="../clinical/"],
html.theme-emerald .request-access a          { color:#0f766e !important; }
