/* ============================================================================
   SPIMACO PHARMA MARKET COMMAND CENTER — core design system
   Cinematic, executive, lawful-intelligence aesthetic. Authored from scratch.
   ============================================================================ */

/* ---------- Fonts (self-injected by core.js; @import fallback) ---------- */
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600;9..144,700&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap');

/* ============================== TOKENS ============================== */
:root{
  /* canvas */
  --bg:#070a10; --bg-2:#0a0e17; --bg-3:#0d1320;
  --panel:rgba(20,28,42,.62); --panel-2:rgba(15,22,34,.78); --panel-solid:#0e1422;
  --line:rgba(150,180,220,.12); --line-2:rgba(150,180,220,.07); --line-3:rgba(150,180,220,.22);

  /* ink */
  --ink:#eef3fb; --ink-2:#9fb0c6; --ink-3:#6b7c93; --ink-4:#475569;

  /* accents */
  --accent:#34d6c8; --accent-ink:#062523; --accent-soft:rgba(52,214,200,.14);
  --accent-2:#5b8cff; --accent-2-soft:rgba(91,140,255,.14);
  --gold:#d9b667; --gold-soft:rgba(217,182,103,.14);

  /* semantic / severity */
  --red:#ff5d72; --red-soft:rgba(255,93,114,.13);
  --amber:#ffbf4d; --amber-soft:rgba(255,191,77,.13);
  --green:#36d29a; --green-soft:rgba(54,210,154,.13);
  --inf:#b292ff; --inf-soft:rgba(178,146,255,.14);  /* strategic inference */

  /* type — Part 18: explicit Arabic-capable fallbacks appended after each webfont.
     Fraunces/JetBrains Mono/Georgia carry no Arabic glyphs, so an Arabic run inside
     a --serif/--mono context (e.g. .dossier-title, .kpi-val) would otherwise fall
     through to the browser's generic serif/monospace, which on Windows can be a
     low-quality or glyphless font. "Segoe UI" and Tahoma are Windows system fonts
     with full Arabic coverage; Arial is the common cross-platform Arabic fallback. */
  --serif:'Fraunces',Georgia,'Segoe UI',Tahoma,serif;
  --sans:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',Tahoma,Roboto,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,Menlo,Consolas,'Segoe UI',Tahoma,monospace;

  /* geometry */
  --r-xs:7px; --r-sm:10px; --r:14px; --r-lg:20px; --r-xl:28px;
  --rail-w:248px; --cmd-h:74px;
  --shadow:0 18px 50px -20px rgba(0,0,0,.7), 0 2px 8px -2px rgba(0,0,0,.5);
  --shadow-lg:0 40px 90px -30px rgba(0,0,0,.8);
  --glow:0 0 0 1px rgba(52,214,200,.25), 0 10px 40px -12px rgba(52,214,200,.35);
  --ease:cubic-bezier(.4,.14,.2,1);
}

/* ============================== RESET ============================== */
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:var(--sans); color:var(--ink); background:var(--bg);
  min-height:100vh; line-height:1.5; letter-spacing:.005em;
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;cursor:pointer;background:none;border:none}
svg.ic{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:1.7;
  stroke-linecap:round;stroke-linejoin:round;display:inline-block;flex:none}

/* ============================== BIDI ISOLATION (Part 18 — Arabic content first-class) ==============================
   The corpus legitimately contains verbatim Arabic content — NUPCO tender titles, SFDA circular
   titles — rendered inside an otherwise-English/LTR chrome (SR.esc'd straight into innerHTML across
   core.js srcChip/itemDossier/the Evidence Reader, and every room-*.js card/row/timeline/dossier
   text sink). Content stays verbatim (an item's title is never translated or altered); only its
   BIDI RENDERING needs to be correct.

   `unicode-bidi: plaintext` makes an element resolve its OWN paragraph base direction from its own
   text (Unicode Bidi Algorithm rules P2/P3) instead of inheriting the page's LTR base direction —
   so a title that is entirely Arabic reads right-to-left with correct glyph shaping and correct
   placement of any embedded Latin words/numbers (e.g. "INUPCO", "BiPAP"), while a title that is
   entirely English/Latin is completely unaffected (P2/P3 finds no strong-RTL character, so the
   resolved base direction is LTR — identical to today). It has no effect on elements holding no
   text, and no effect on display/box-model/flex/grid layout — it only changes bidi reordering of
   inline content, so it is safe to apply broadly as ONE central rule instead of touching every
   room's one-off title/label/body class (there are 90+ of them across room-*.js).
   DO NOT re-litigate per callsite — new room-specific text classes inherit this for free as long
   as they sit under .stage, .drawer-body, .overlay-body or .pal-list (every room mounts there). */
.stage, .drawer-body, .overlay-body, .pal-list{unicode-bidi:plaintext}
.stage *, .drawer-body *, .overlay-body *, .pal-list *{unicode-bidi:plaintext}
/* text-align should follow the resolved paragraph direction, not stay hard-left, so a
   fully-Arabic title/line visually reads flush-right like the rest of that RTL paragraph.
   (.dossier-row .v is deliberately excluded — it's a fixed right-aligned value column in a
   key/value layout, e.g. dates/scores, not a free-running text sink; its own rule stays put.) */
.room-title,.room-sub,.panel-title,.kpi-val,.row-title,.dossier-title,.dossier-block p,
.section-label,.src,.tag,.badge,.conf,.chip,.entity-chip,.empty-title,.empty-sub,
.coverage-gap,.inf-note span,.trust-list li span,.pal-lbl,.pal-ans-a{text-align:start}
/* truncation (-webkit-line-clamp / text-overflow:ellipsis / white-space:nowrap) keeps working:
   plaintext bidi only reorders characters within the resolved paragraph direction — it does not
   change which CSS box-overflow rules apply, and the ellipsis/clamp edge correctly follows
   whichever edge the resolved direction puts it on (trailing edge, LTR or RTL). No override needed. */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:rgba(150,180,220,.18);border-radius:20px;border:2px solid transparent;background-clip:padding-box}
::-webkit-scrollbar-thumb:hover{background:rgba(150,180,220,.3);background-clip:padding-box}
::selection{background:rgba(52,214,200,.28);color:#fff}

/* ============================== BACKDROP ============================== */
.theater{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden;max-width:100vw;
  background:
    radial-gradient(1200px 700px at 78% -10%, rgba(52,214,200,.10), transparent 60%),
    radial-gradient(1000px 800px at 8% 8%, rgba(91,140,255,.10), transparent 55%),
    linear-gradient(180deg,var(--bg) 0%, var(--bg-2) 48%, var(--bg) 100%);}
.theater-glow{position:absolute;border-radius:50%;filter:blur(80px);opacity:.5;mix-blend-mode:screen}
.theater-glow.g1{width:620px;height:620px;top:-180px;right:-120px;background:radial-gradient(circle,rgba(52,214,200,.5),transparent 70%);animation:drift 26s var(--ease) infinite alternate}
.theater-glow.g2{width:540px;height:540px;bottom:-200px;left:-140px;background:radial-gradient(circle,rgba(91,140,255,.45),transparent 70%);animation:drift 32s var(--ease) infinite alternate-reverse}
.theater-glow.g3{width:380px;height:380px;top:40%;left:55%;background:radial-gradient(circle,rgba(217,182,103,.22),transparent 70%);animation:drift 38s var(--ease) infinite alternate}
.theater-grid{position:absolute;inset:0;opacity:.5;
  background-image:linear-gradient(rgba(150,180,220,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(150,180,220,.05) 1px,transparent 1px);
  background-size:54px 54px;mask-image:radial-gradient(circle at 50% 30%,#000 30%,transparent 78%)}
.theater-scan{position:absolute;inset:0;opacity:.35;background:repeating-linear-gradient(0deg,transparent 0,transparent 2px,rgba(0,0,0,.18) 3px);animation:scan 8s linear infinite}
.theater-vignette{position:absolute;inset:0;background:radial-gradient(140% 120% at 50% 0%,transparent 55%,rgba(0,0,0,.5) 100%)}
@keyframes drift{to{transform:translate3d(40px,30px,0) scale(1.08)}}
@keyframes scan{to{background-position:0 220px}}

/* ============================== COMMAND BAR ============================== */
.cmd{position:sticky;top:0;z-index:60;height:var(--cmd-h);display:flex;align-items:center;gap:22px;
  padding:0 22px;backdrop-filter:blur(22px) saturate(140%);
  background:linear-gradient(180deg,rgba(10,15,24,.92),rgba(10,15,24,.72));
  border-bottom:1px solid var(--line)}
.cmd::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(52,214,200,.5),rgba(91,140,255,.4),transparent)}
.cmd-brand{display:flex;align-items:center;gap:13px;min-width:0;flex:0 1 auto}
.cmd-logo{flex:none;border-radius:9px;filter:drop-shadow(0 4px 12px rgba(0,0,0,.5))}
.cmd-titles{display:flex;flex-direction:column;min-width:0}
.cmd-name{font-weight:800;font-size:15px;letter-spacing:.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmd-name i{color:var(--accent);font-style:normal;margin:0 2px}
.cmd-sub{font-size:11px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:500}

.cmd-live{display:flex;align-items:center;gap:10px;margin-left:8px;padding:7px 14px;border-radius:var(--r-sm);
  background:rgba(52,214,200,.06);border:1px solid rgba(52,214,200,.18)}
.cmd-live-dot{color:var(--accent);display:grid;place-items:center;font-size:15px;position:relative}
.cmd-live-dot::after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;background:var(--accent);right:-3px;top:-1px;box-shadow:0 0 0 0 rgba(52,214,200,.7);animation:ping 2.4s var(--ease) infinite}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(52,214,200,.6)}70%,100%{box-shadow:0 0 0 9px rgba(52,214,200,0)}}
.cmd-live-text{display:flex;flex-direction:column;line-height:1.25}
.cmd-live-label{font-size:11px;font-weight:700;color:var(--accent);letter-spacing:.02em}
.cmd-live-meta{font-size:11px;color:var(--ink-2);font-variant-numeric:tabular-nums}

/* SHARED CONTAINMENT -- the command header is the SINGLE systemic cause of the
   legacy shell's horizontal overflow, proven causally: hiding .cmd-actions drops
   body overflow from 43->0 at 390px and 26->0 at 770px in every one of the 22
   registered rooms. .theater and ASIDE.drawer are position:fixed and cannot
   create scrollable width -- they merely stretch to it, which is why reading
   bounding boxes fingered them as culprits.

   A flex item's default min-width:auto refuses to shrink below its content's
   min-content size, so .cmd-actions pushed .cmd -- and with it the document --
   wider than the viewport. min-width:0 lets it shrink; overflow-x:auto keeps the
   remainder reachable INSIDE the header instead of spilling onto the document.
   Children stay flex:none so they are never squashed into illegibility, and
   nothing is hidden to achieve the fix: every control remains in the DOM, in tab
   order, and focus scrolls it into view. */
.cmd{min-width:0}
.cmd-actions{margin-left:auto;display:flex;align-items:center;gap:10px;
  min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;
  scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
.cmd-actions>*{flex:none;scroll-snap-align:end}
/* Visibly discoverable: a thin, styled scrollbar rather than an invisible one. */
.cmd-actions::-webkit-scrollbar{height:4px}
.cmd-actions::-webkit-scrollbar-thumb{background:var(--line-3);border-radius:2px}
.cmd-actions::-webkit-scrollbar-track{background:transparent}
.mode-switch{display:flex;background:rgba(8,12,20,.7);border:1px solid var(--line);border-radius:var(--r-sm);padding:3px;position:relative}
.mode-opt{display:flex;align-items:center;gap:7px;padding:7px 13px;border-radius:8px;font-size:12.5px;font-weight:700;color:var(--ink-3);transition:.25s var(--ease)}
.mode-opt .mode-dot{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.5;transition:.25s}
.mode-opt.is-on{color:var(--ink);background:linear-gradient(180deg,rgba(52,214,200,.18),rgba(52,214,200,.08));box-shadow:inset 0 0 0 1px rgba(52,214,200,.3)}
.mode-opt.is-on .mode-dot{opacity:1;background:var(--accent);box-shadow:0 0 8px var(--accent)}
.mode-opt[data-mode="demo"].is-on{background:linear-gradient(180deg,var(--inf-soft),rgba(178,146,255,.06));box-shadow:inset 0 0 0 1px rgba(178,146,255,.3)}
.mode-opt[data-mode="demo"].is-on .mode-dot{background:var(--inf);box-shadow:0 0 8px var(--inf)}

.cmd-btn{display:flex;align-items:center;gap:8px;padding:9px 15px;border-radius:var(--r-sm);font-size:12.5px;font-weight:700;
  background:linear-gradient(180deg,rgba(52,214,200,.18),rgba(52,214,200,.05));
  border:1px solid rgba(52,214,200,.32);color:#cdfdf6;transition:.2s var(--ease);white-space:nowrap}
.cmd-btn .ic{font-size:16px}
.cmd-btn:hover{transform:translateY(-1px);box-shadow:var(--glow)}
.cmd-btn.ghost{background:rgba(150,180,220,.05);border-color:var(--line);color:var(--ink-2)}
.cmd-btn.ghost:hover{color:var(--ink);border-color:var(--line-3);box-shadow:none}
.cmd-clock{display:flex;align-items:center;gap:7px;padding:8px 12px;border-radius:var(--r-sm);background:rgba(8,12,20,.6);border:1px solid var(--line);font-family:var(--mono);font-size:13px;font-weight:600;color:var(--ink-2)}
.cmd-clock .ic{font-size:15px;color:var(--ink-3)}

.icon-btn{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;color:var(--ink-2);border:1px solid var(--line);background:rgba(150,180,220,.04);font-size:17px;transition:.2s}
.icon-btn:hover{color:var(--ink);border-color:var(--line-3);background:rgba(150,180,220,.1)}

/* ============================== SHELL ============================== */
.shell{position:relative;z-index:10;display:grid;grid-template-columns:var(--rail-w) 1fr;min-height:calc(100vh - var(--cmd-h))}

/* ---- NAV RAIL ---- */
.rail{position:sticky;top:var(--cmd-h);align-self:start;height:calc(100vh - var(--cmd-h));
  display:flex;flex-direction:column;padding:18px 14px;gap:6px;overflow-y:auto;
  border-right:1px solid var(--line);background:linear-gradient(180deg,rgba(10,15,24,.5),rgba(10,15,24,.2))}
.rail-group{margin-top:14px;margin-bottom:4px;padding:0 10px;font-size:10px;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-4)}
.rail-group:first-child{margin-top:2px}
.rail-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:var(--r-sm);color:var(--ink-2);font-size:13.5px;font-weight:600;position:relative;transition:.18s var(--ease)}
.rail-item .ic{font-size:18px;color:var(--ink-3);transition:.18s;flex:none}
.rail-item .rail-label{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail-item .rail-count{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--ink-3);background:rgba(150,180,220,.08);padding:1px 7px;border-radius:20px}
.rail-item:hover{color:var(--ink);background:rgba(150,180,220,.06)}
.rail-item:hover .ic{color:var(--ink-2)}
.rail-item.is-active{color:var(--ink);background:linear-gradient(90deg,rgba(52,214,200,.16),rgba(52,214,200,.02))}
.rail-item.is-active .ic{color:var(--accent)}
.rail-item.is-active::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:3px;background:linear-gradient(180deg,var(--accent),var(--accent-2));box-shadow:0 0 12px var(--accent)}
.rail-item.is-pending{opacity:.5;cursor:default}
.rail-foot{margin-top:auto;padding-top:14px}
.rail-legal{display:flex;gap:9px;font-size:10.5px;line-height:1.45;color:var(--ink-4);padding:11px;border-radius:var(--r-sm);background:rgba(8,12,20,.4);border:1px solid var(--line-2)}
.rail-legal .ic{font-size:15px;color:var(--ink-3);flex:none;margin-top:1px}

/* ---- STAGE ---- */
.stage{position:relative;padding:26px 30px 60px;min-width:0;outline:none}
.stage-boot{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;min-height:60vh}
.boot-mark{filter:drop-shadow(0 8px 24px rgba(52,214,200,.4));animation:floaty 3s var(--ease) infinite alternate}
@keyframes floaty{to{transform:translateY(-8px)}}
.boot-bar{width:220px;height:4px;border-radius:4px;background:rgba(150,180,220,.12);overflow:hidden}
.boot-bar span{display:block;height:100%;width:40%;border-radius:4px;background:linear-gradient(90deg,var(--accent),var(--accent-2));animation:bootslide 1.2s var(--ease) infinite}
@keyframes bootslide{0%{transform:translateX(-120%)}100%{transform:translateX(320%)}}
.boot-text{font-size:13px;color:var(--ink-3);letter-spacing:.02em}

/* ============================== ROOM SCAFFOLD ============================== */
.room{animation:roomIn .5s var(--ease) both}
@keyframes roomIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.room-head{display:flex;align-items:flex-end;gap:18px;flex-wrap:wrap;margin-bottom:22px;padding-bottom:18px;border-bottom:1px solid var(--line)}
.room-head-main{min-width:0;flex:1}
.room-eyebrow{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
.room-eyebrow .ic{font-size:15px}
.room-title{font-family:var(--serif);font-size:30px;font-weight:600;line-height:1.05;letter-spacing:-.01em}
.room-sub{margin-top:8px;font-size:13.5px;color:var(--ink-2);max-width:80ch;line-height:1.55}
.room-tools{display:flex;align-items:center;gap:9px;flex-wrap:wrap}

/* ============================== PRIMITIVES (used by all rooms) ============================== */
/* grid */
.grid{display:grid;gap:18px}
.grid>*{min-width:0}  /* prevent min-content track blowout (grid items shrink below content) */
.cols-2{grid-template-columns:repeat(2,1fr)}
.cols-3{grid-template-columns:repeat(3,1fr)}
.cols-4{grid-template-columns:repeat(4,1fr)}
.cols-12{grid-template-columns:repeat(12,1fr)}
.span-4{grid-column:span 4}
.span-5{grid-column:span 5}.span-6{grid-column:span 6}.span-7{grid-column:span 7}
.span-8{grid-column:span 8}

/* panel */
.panel{position:relative;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-lg);
  backdrop-filter:blur(14px) saturate(120%);box-shadow:var(--shadow);overflow:hidden}
.panel::before{content:"";position:absolute;inset:0 0 auto;height:1px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.12),transparent);opacity:.7}
.panel-head{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line-2)}
.panel-head .ic{font-size:18px;color:var(--accent)}
.panel-title{font-size:14px;font-weight:800;letter-spacing:.01em}
.panel-title small{display:block;font-size:11px;font-weight:500;color:var(--ink-3);letter-spacing:0;margin-top:2px}
.panel-tools{margin-left:auto;display:flex;align-items:center;gap:8px}
.panel-body{padding:18px 20px}
.panel.accent{border-color:rgba(52,214,200,.3);box-shadow:var(--glow)}
.panel.flush .panel-body{padding:0}

/* KPI stat */
.kpi{position:relative;padding:18px 20px;border-radius:var(--r);background:var(--panel-2);border:1px solid var(--line);overflow:hidden}
.kpi-label{display:flex;align-items:center;gap:7px;font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3)}
.kpi-label .ic{font-size:14px}
.kpi-val{font-family:var(--serif);font-size:38px;font-weight:600;line-height:1;margin-top:10px;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.kpi-val small{font-size:16px;color:var(--ink-3);font-family:var(--sans);font-weight:600}
.kpi-foot{margin-top:9px;font-size:12px;color:var(--ink-2);display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.kpi-delta{font-size:11.5px;font-weight:700;font-variant-numeric:tabular-nums;display:inline-flex;align-items:center;gap:3px;padding:2px 7px;border-radius:20px;white-space:nowrap;flex-shrink:0}
.kpi-delta.up{color:var(--green);background:var(--green-soft)}
.kpi-delta.down{color:var(--red);background:var(--red-soft)}
.kpi-delta.flat{color:var(--ink-3);background:rgba(150,180,220,.08)}
.kpi.tone-red{border-color:rgba(255,93,114,.28)} .kpi.tone-red .kpi-val{color:#ffd0d6}
.kpi.tone-amber{border-color:rgba(255,191,77,.28)} .kpi.tone-amber .kpi-val{color:#ffe6b3}
.kpi.tone-green .kpi-val{color:#bff3df}
.kpi.tone-accent{border-color:rgba(52,214,200,.28)} .kpi.tone-accent .kpi-val{color:#bff3ee}

/* badges / tags */
.badge{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;padding:3px 9px;border-radius:20px;border:1px solid transparent;white-space:nowrap}
.sev-red{color:var(--red);background:var(--red-soft);border-color:rgba(255,93,114,.3)}
.sev-yellow{color:var(--amber);background:var(--amber-soft);border-color:rgba(255,191,77,.3)}
.sev-green{color:var(--green);background:var(--green-soft);border-color:rgba(54,210,154,.3)}
.tag{display:inline-flex;align-items:center;gap:5px;font-size:11px;font-weight:600;padding:3px 9px;border-radius:7px;background:rgba(150,180,220,.08);color:var(--ink-2);border:1px solid var(--line-2)}
.tag .ic{font-size:13px}
.tag-fact{color:var(--accent);background:var(--accent-soft);border-color:rgba(52,214,200,.28)}
.tag-inf{color:var(--inf);background:var(--inf-soft);border-color:rgba(178,146,255,.3)}
.tag-demo{color:var(--inf);background:var(--inf-soft);border-color:rgba(178,146,255,.32)}
.tag-live{color:var(--green);background:var(--green-soft);border-color:rgba(54,210,154,.3)}
.tag-gold{color:var(--gold);background:var(--gold-soft);border-color:rgba(217,182,103,.3)}

/* unified confidence chip (SR.confChip) — one language for the two dialects */
.conf{display:inline-flex;align-items:center;gap:5px;font-size:10.5px;font-weight:700;letter-spacing:.02em;padding:2px 8px;border-radius:20px;border:1px solid var(--line-2);background:rgba(150,180,220,.06);color:var(--ink-2);white-space:nowrap}
.conf .ic{font-size:12px}
.conf b{font-weight:800;font-variant-numeric:tabular-nums}
.conf-hi{color:var(--green);background:var(--green-soft);border-color:rgba(54,210,154,.32)}
.conf-mod{color:var(--gold);background:var(--gold-soft);border-color:rgba(217,182,103,.34)}
.conf-dir{color:var(--inf);background:var(--inf-soft);border-color:rgba(178,146,255,.3)}

.sev-dot{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block}
.sev-dot.RED{background:var(--red);box-shadow:0 0 8px var(--red)}
.sev-dot.YELLOW{background:var(--amber);box-shadow:0 0 8px var(--amber)}
.sev-dot.GREEN{background:var(--green);box-shadow:0 0 8px var(--green)}

/* inference disclosure banner */
.inf-note{display:flex;align-items:flex-start;gap:9px;font-size:11.5px;line-height:1.45;color:var(--inf);
  background:var(--inf-soft);border:1px solid rgba(178,146,255,.26);border-radius:var(--r-sm);padding:9px 12px}
.inf-note .ic{font-size:15px;flex:none;margin-top:1px}

/* source chip */
.src{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--ink-2);
  padding:4px 10px;border-radius:7px;background:rgba(91,140,255,.08);border:1px solid rgba(91,140,255,.2);transition:.18s}
.src .ic{font-size:13px;color:var(--accent-2)}
.src:hover{color:var(--ink);border-color:var(--accent-2);background:rgba(91,140,255,.16)}

/* meter / bar */
.meter{height:7px;border-radius:6px;background:rgba(150,180,220,.1);overflow:hidden}
.meter>span{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .9s var(--ease)}
.meter.red>span{background:linear-gradient(90deg,#ff8a78,var(--red))}
.meter.amber>span{background:linear-gradient(90deg,#ffd27a,var(--amber))}
.meter.green>span{background:linear-gradient(90deg,#7ee6bf,var(--green))}
.meter.inf>span{background:linear-gradient(90deg,#cdb6ff,var(--inf))}

/* list rows */
.rows{display:flex;flex-direction:column}
.row{display:flex;align-items:center;gap:13px;padding:13px 4px;border-bottom:1px solid var(--line-2);transition:.16s}
.row:last-child{border-bottom:none}
.row:hover{background:rgba(150,180,220,.04)}
.row-main{min-width:0;flex:1}
.row-title{font-size:13.5px;font-weight:600;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.row-meta{margin-top:5px;display:flex;align-items:center;gap:9px;flex-wrap:wrap;font-size:11.5px;color:var(--ink-3)}
.row-meta b{color:var(--ink-2);font-weight:600}

/* simple table */
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th{text-align:left;font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);padding:10px 12px;border-bottom:1px solid var(--line)}
.tbl td{padding:12px;border-bottom:1px solid var(--line-2);vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}
.tbl tbody tr{transition:.16s}
.tbl tbody tr:hover{background:rgba(150,180,220,.04)}
.tbl .num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}

/* chips / segmented */
.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:600;padding:6px 12px;border-radius:20px;
  background:rgba(150,180,220,.06);border:1px solid var(--line);color:var(--ink-2);transition:.18s;white-space:nowrap}
.chip .ic{font-size:14px}
.chip:hover{color:var(--ink);border-color:var(--line-3)}
.chip.is-on{color:var(--accent);background:var(--accent-soft);border-color:rgba(52,214,200,.32)}

/* empty / coverage gap states (honesty) */
.empty{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center;padding:38px 24px;color:var(--ink-3)}
.empty .ic{font-size:30px;color:var(--ink-4)}
.empty-title{font-size:14px;font-weight:700;color:var(--ink-2)}
.empty-sub{font-size:12.5px;max-width:46ch;line-height:1.5}
.coverage-gap{display:flex;align-items:flex-start;gap:11px;padding:14px 16px;border-radius:var(--r);
  background:repeating-linear-gradient(135deg,rgba(255,191,77,.05) 0 10px,transparent 10px 20px),var(--amber-soft);
  border:1px dashed rgba(255,191,77,.4);color:#ffe6b3;font-size:12.5px;line-height:1.5}
.coverage-gap .ic{font-size:18px;color:var(--amber);flex:none;margin-top:1px}
.coverage-gap b{color:#fff}

/* misc helpers */
.muted{color:var(--ink-3)} .dim{color:var(--ink-2)}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
.flex{display:flex} .ai-center{align-items:center} .jc-between{justify-content:space-between}
.gap-6{gap:6px}.gap-8{gap:8px}.gap-10{gap:10px}.gap-12{gap:12px}
.wrap{flex-wrap:wrap}
.mt-8{margin-top:8px}.mt-12{margin-top:12px}.mt-16{margin-top:16px}.mt-20{margin-top:20px}.mt-24{margin-top:24px}
.section-label{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin:26px 0 14px;display:flex;align-items:center;gap:9px}
.section-label .ic{font-size:15px;color:var(--accent)}
.section-label::after{content:"";flex:1;height:1px;background:var(--line)}
.linkish{color:var(--accent);font-weight:600;cursor:pointer}
.linkish:hover{text-decoration:underline}

/* count-up number animation hook */
.countup{font-variant-numeric:tabular-nums}

/* ============================== DRAWER ============================== */
.drawer{position:fixed;top:0;right:0;height:100vh;width:min(520px,94vw);z-index:90;
  background:linear-gradient(180deg,var(--bg-3),var(--bg-2));border-left:1px solid var(--line-3);
  box-shadow:var(--shadow-lg);transform:translateX(100%);transition:transform .4s var(--ease);
  display:flex;flex-direction:column}
.drawer.is-open{transform:none}
.drawer-head{display:flex;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid var(--line)}
.drawer-eyebrow{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--accent);flex:1}
.drawer-body{padding:22px;overflow-y:auto;flex:1}
.dossier-title{font-family:var(--serif);font-size:22px;font-weight:600;line-height:1.18;margin-bottom:12px}
.dossier-row{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--line-2);font-size:13px}
.dossier-row .k{color:var(--ink-3);font-weight:600} .dossier-row .v{color:var(--ink);text-align:right;font-weight:600}
.dossier-block{margin-top:18px}
.dossier-block h4{font-size:11px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:9px}
.dossier-block p{font-size:13px;line-height:1.6;color:var(--ink-2)}

/* ============================== OVERLAY (brief / board) ============================== */
.overlay{position:fixed;inset:0;z-index:100;display:none;align-items:flex-start;justify-content:center;padding:40px 20px;overflow-y:auto}
.overlay.is-open{display:flex;animation:fade .3s var(--ease)}
@keyframes fade{from{opacity:0}to{opacity:1}}
.overlay-card{width:min(1080px,100%);background:var(--panel-solid);border:1px solid var(--line-3);border-radius:var(--r-xl);
  box-shadow:var(--shadow-lg);overflow:hidden;animation:roomIn .4s var(--ease)}
.overlay-head{display:flex;align-items:center;gap:16px;padding:20px 26px;border-bottom:1px solid var(--line);
  background:linear-gradient(180deg,rgba(52,214,200,.06),transparent)}
.overlay-titles{flex:1;min-width:0}
.overlay-eyebrow{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--accent)}
.overlay-title{display:block;font-family:var(--serif);font-size:22px;font-weight:600;margin-top:3px}
.overlay-tools{display:flex;align-items:center;gap:10px}
.overlay-body{padding:26px;max-height:calc(100vh - 200px);overflow-y:auto}

/* scrim + toast */
.scrim{position:fixed;inset:0;z-index:80;background:rgba(4,7,12,.6);backdrop-filter:blur(3px);opacity:0;visibility:hidden;transition:.35s var(--ease)}
.scrim.is-on{opacity:1;visibility:visible}
.toast{position:fixed;bottom:26px;right:26px;left:auto;transform:translateY(20px);z-index:120;
  padding:12px 20px;border-radius:var(--r-sm);background:var(--panel-solid);border:1px solid var(--line-3);
  box-shadow:var(--shadow-lg);font-size:13px;font-weight:600;opacity:0;visibility:hidden;transition:.3s var(--ease);max-width:min(420px,90vw)}
.toast.is-on{opacity:1;visibility:visible;transform:translateY(0)}
.toast.ok{border-color:rgba(54,210,154,.4)} .toast.warn{border-color:rgba(255,191,77,.4)}

/* ============================== PRINT ============================== */
@media print{
  .theater,.cmd,.rail,.scrim,.toast,.overlay-tools{display:none!important}
  body{background:#fff;color:#111}
  .overlay{position:static;display:block;padding:0;overflow:visible}
  .overlay-card{box-shadow:none;border:none;width:100%}
  .overlay-body{max-height:none;overflow:visible}
  .panel{break-inside:avoid;border-color:#ccc;background:#fff;box-shadow:none}
  *{color:#111!important}
  /* Weekly Board Digest (Part 15-A): printing must show ONLY the digest artifact —
     the tab strip and the room-trust footer are dashboard chrome, not part of the
     printable document, so both are stripped here (the digest's own honesty note
     already prints inline via .wd-honesty). */
  .rmtabs,.room-trust{display:none!important}
  .shell{display:block}
  .stage{padding:0}
}

/* ============================== RESPONSIVE ============================== */
@media (max-width:1180px){
  :root{--rail-w:212px}
  .cols-4{grid-template-columns:repeat(2,1fr)}
  .cmd-sub{display:none}
}
@media (max-width:1024px){
  .cmd-live{display:none}
  /* On mobile the rail becomes a fixed flyout. On desktop .shell carries z-index:10,
     which creates a stacking context that TRAPS the rail inside a z-10 layer — below
     the body-level scrim (z-80). Raising the rail's own z-index does nothing while it
     is trapped, so real taps on menu items land on the scrim and close the menu
     ("navigation broken"). Dissolving the shell's stacking context here (z-index:auto)
     lets the fixed rail (z-85) escape to the root context and sit ABOVE the scrim
     (z-80); the in-flow stage stays below the scrim, so the backdrop still dims and
     still catches outside-taps to close. Drawer/overlay remain above (90/100). */
  .shell{grid-template-columns:1fr;z-index:auto}
  .rail{position:fixed;top:var(--cmd-h);left:0;z-index:85;width:264px;transform:translateX(-100%);transition:transform .35s var(--ease);background:var(--bg-2)}
  .rail.is-open{transform:none;box-shadow:var(--shadow-lg)}
  body.nav-open .scrim{opacity:1;visibility:visible}
  .stage{padding:20px 18px 50px}
}
@media (max-width:760px){
  .cols-2,.cols-3,.cols-4,.cols-12{grid-template-columns:1fr}
  [class*="span-"]{grid-column:auto}
  .cmd{gap:10px;padding:0 12px}
  .cmd-actions{gap:7px}
  /* .cmd-clock is LIVE DATA and is no longer hidden: it was concealed here only
     because the header could not contain itself, and the containment rule above
     now scrolls the action row instead of spilling onto the document. Button
     LABELS stay hidden at this width -- each button keeps its icon and its
     aria-label, so nothing becomes unreachable or unnamed, whereas a hidden
     clock removed a value the operator could not get anywhere else. */
  .cmd-btn span,.cmd-name{display:none}
  .room-title{font-size:24px}
  .mode-opt{padding:7px 9px}
  .toast{left:50%;right:auto;transform:translateX(-50%) translateY(20px)}
  .toast.is-on{transform:translateX(-50%) translateY(0)}
}
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001s!important;transition-duration:.08s!important}
}

/* ============================ CHART ARSENAL (Part 10) ============================ */
.chart{display:block;max-width:100%}
.chart-na{color:var(--ink-4);font-family:var(--mono);font-size:12px}
.chart-spark{vertical-align:middle}
.chart-trend{width:100%;height:auto}

/* momentum bars */
.cbars{display:flex;flex-direction:column;gap:10px}
.cbar-row{display:grid;grid-template-columns:minmax(84px,1.1fr) 3fr auto;align-items:center;gap:12px}
.cbar-row[role=button]{cursor:pointer;border-radius:8px;transition:.16s var(--ease)}
.cbar-row[role=button]:hover{background:rgba(150,180,220,.05)}
.cbar-label{font-size:12.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cbar-label span{display:block;font-size:10.5px;font-weight:500;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cbar-track{height:9px;border-radius:20px;background:rgba(150,180,220,.09);overflow:hidden}
.cbar-fill{height:100%;border-radius:20px;transform-origin:left center;animation:cbarGrow .85s var(--ease) both;
  box-shadow:0 0 12px -2px currentColor}
.cbar-val{font-size:13px;font-weight:700;color:var(--ink);min-width:34px;text-align:right}
@keyframes cbarGrow{from{transform:scaleX(0);opacity:.3}to{transform:scaleX(1);opacity:1}}

/* radial gauge */
.cgauge{position:relative;display:inline-grid;place-items:center}
.cgauge svg{display:block}
.cgauge-arc{animation:cgaugeIn 1s var(--ease) both}
@keyframes cgaugeIn{from{stroke-dasharray:0 9999}}
.cgauge-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.cgauge-c b{font-size:24px;font-weight:800;line-height:1;color:var(--ink)}
.cgauge-c span{font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-top:4px;max-width:80px}

/* donut */
.cdonut{position:relative;display:inline-grid;place-items:center}
.cdonut svg circle{transition:stroke-dasharray .8s var(--ease)}
.cdonut-c{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.cdonut-c b{font-size:26px;font-weight:800;color:var(--ink)}
.cdonut-c span{font-size:10px;font-weight:600;color:var(--ink-3);text-transform:uppercase;letter-spacing:.05em}
.cdonut-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:12px;justify-content:center}
.cdonut-legend span{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--ink-2)}
.cdonut-legend i{width:9px;height:9px;border-radius:3px;flex:none}
.cdonut-legend b{color:var(--ink);font-weight:700}

/* heat matrix */
.cmatrix{display:flex;flex-direction:column;gap:5px;overflow-x:auto}
.cmx-row{display:grid;grid-template-columns:var(--cmx-rl,120px) repeat(var(--cmx-n,4),1fr);gap:5px;align-items:stretch}
.cmx-head .cmx-ch{font-size:10px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);text-align:center;padding:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmx-rl{font-size:12px;font-weight:600;color:var(--ink-2);display:flex;align-items:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:6px}
.cmx-cell{min-height:34px;border-radius:7px;display:grid;place-items:center;color:#04121a;font-weight:800;transition:.16s var(--ease);animation:cmxIn .5s var(--ease) both}
.cmx-cell[role=button]{cursor:pointer}
.cmx-cell[role=button]:hover{transform:scale(1.06);z-index:2;box-shadow:0 6px 18px -6px rgba(0,0,0,.6)}
.cmx-cell .mono{font-size:12px}
@keyframes cmxIn{from{opacity:0;transform:scale(.8)}}
.chart-scatter{width:100%;height:auto;max-width:520px}
.cscatter-ax{fill:var(--ink-4);font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;font-family:var(--sans)}
.cscatter-dot circle{transition:.16s var(--ease);animation:cmxIn .5s var(--ease) both}
.cscatter-dot[data-go],.cscatter-dot.is-click{cursor:pointer}
.cscatter-dot[data-go]:hover circle,.cscatter-dot.is-click:hover circle{r:9;fill-opacity:1}
.cscatter-tag{fill:var(--ink-3);font-size:9px;font-family:var(--sans);font-weight:600;pointer-events:none}

/* event timeline */
.ctimeline{width:100%}
.ctl-track{position:relative;height:44px;margin:8px 0 2px}
.ctl-axis{position:absolute;left:0;right:0;top:50%;height:2px;margin-top:-1px;border-radius:2px;
  background:linear-gradient(90deg,var(--line-2),var(--line-3) 50%,var(--line-2))}
.ctl-dot{position:absolute;top:50%;width:11px;height:11px;margin:-5.5px 0 0 -5.5px;padding:0;border:0;
  border-radius:50%;background:var(--dot,var(--accent));box-shadow:0 0 0 3px var(--bg),0 0 10px -1px var(--dot,var(--accent));
  cursor:default;transition:transform .16s var(--ease),box-shadow .16s var(--ease);animation:cmxIn .5s var(--ease) both}
.ctl-dot.is-click{cursor:pointer}
.ctl-dot.is-click:hover{transform:scale(1.5);z-index:3;box-shadow:0 0 0 3px var(--bg),0 0 16px 0 var(--dot,var(--accent))}
.ctl-dot:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.ctl-ticks{position:relative;height:14px;margin-top:3px}
.ctl-tick{position:absolute;transform:translateX(-50%);font-family:var(--mono);font-size:9.5px;color:var(--ink-4);white-space:nowrap}
.ctl-tick:first-child{transform:none}
.ctl-tick:last-child{transform:translateX(-100%)}
.ctl-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:12px}
.ctl-legend span{display:flex;align-items:center;gap:7px;font-size:11.5px;color:var(--ink-2)}
.ctl-legend i{width:9px;height:9px;border-radius:50%;flex:none}
.ctl-now{position:absolute;top:-4px;bottom:-4px;width:0;border-left:1.5px dashed rgba(52,214,200,.55);z-index:1}
.ctl-now span{position:absolute;top:-16px;left:50%;transform:translateX(-50%);font-size:8.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--accent)}
/* entity drill-through chip (Entity Deep-Dossier) — clickable anywhere */
.entity-chip{font:inherit;cursor:pointer;display:inline;padding:0;margin:0;background:none;border:0;color:inherit;text-decoration:none;border-bottom:1px dotted rgba(52,214,200,.5);transition:.14s var(--ease)}
.entity-chip:hover{color:var(--accent);border-bottom-color:var(--accent)}
.entity-chip.pill{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);border-radius:20px;padding:3px 11px;font-size:11.5px;font-weight:700;color:var(--ink-2)}
.entity-chip.pill:hover{border-color:rgba(52,214,200,.5);color:var(--accent)}

/* tab-merge host (v3 Stage 4) */
.rmtabs{display:flex;gap:4px;flex-wrap:wrap;margin:0 0 18px;border-bottom:1px solid var(--line)}
.rmtab-btn{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:700;padding:10px 16px;border:0;background:none;
  color:var(--ink-3);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;transition:.15s var(--ease)}
.rmtab-btn .ic{width:15px;height:15px}
.rmtab-btn:hover{color:var(--ink-1)}
.rmtab-btn.is-on{color:var(--accent);border-bottom-color:var(--accent)}
/* a delegated sub-room hides its own room-head so it reads as a native tab panel */
.rmtab-panel>.subroom>.room-head,.rmtab-panel>.subroom .room-head:first-child{display:none}

/* signal constellation (fusion room) */
.chart-graph{width:100%;height:auto;display:block}
.cg-edge{transition:opacity .2s var(--ease)}
.cg-node circle{transition:.16s var(--ease);animation:cmxIn .5s var(--ease) both}
.cg-node.is-click{cursor:pointer}
.cg-node.is-click:hover circle{fill-opacity:1;stroke:#fff;stroke-width:1.5}
.cg-hub circle{filter:drop-shadow(0 0 6px rgba(0,0,0,.4))}
.cg-node:focus-visible circle{outline:2px solid var(--accent);outline-offset:2px}
.cg-label{fill:var(--ink-2);font-size:9px;font-family:var(--sans);font-weight:600;pointer-events:none;
  paint-order:stroke;stroke:rgba(6,10,16,.9);stroke-width:2.6px;stroke-linejoin:round}
.cg-hlabel{fill:#fff;font-size:11px;font-weight:800;letter-spacing:.01em;stroke-width:3.2px}

/* window radar (fusion room) */
.chart-radar{width:100%;height:auto;display:block;max-width:440px;margin:0 auto}
.cradar-ring{fill:var(--ink-4);font-size:8.5px;font-family:var(--mono);letter-spacing:.04em}
.cradar-sec{fill:var(--ink-3);font-size:9.5px;font-weight:700;font-family:var(--sans);letter-spacing:.03em;text-transform:uppercase}
.cradar-core{fill:var(--accent)}
.cradar-sweep path{fill:var(--accent);opacity:.07;transform-box:view-box;animation:cradarSweep 6s linear infinite}
@keyframes cradarSweep{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
.cradar-dot circle{transition:.16s var(--ease);animation:cmxIn .5s var(--ease) both}
.cradar-dot.is-click{cursor:pointer}
.cradar-dot.is-click:hover circle{fill-opacity:1;stroke:#fff;stroke-width:1.5}
.cradar-dot:focus-visible circle{outline:2px solid var(--accent);outline-offset:2px}

/* ============================ COMMAND PALETTE (Part 10) ============================ */
.cmd-search{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:var(--r-sm);
  background:rgba(8,12,20,.6);border:1px solid var(--line);color:var(--ink-3);font-size:12.5px;font-weight:600;transition:.2s var(--ease)}
.cmd-search:hover{color:var(--ink);border-color:var(--line-3);background:rgba(150,180,220,.08)}
.cmd-search .ic{font-size:15px}
.cmd-search kbd{font-family:var(--mono);font-size:10.5px;padding:2px 6px;border-radius:6px;background:rgba(150,180,220,.1);border:1px solid var(--line);color:var(--ink-2)}
.pal-wrap{position:fixed;inset:0;z-index:120;display:none}
.pal-wrap.is-open{display:block}
.pal-scrim{position:absolute;inset:0;background:rgba(4,7,12,.66);backdrop-filter:blur(6px) saturate(120%);animation:palFade .2s var(--ease)}
.pal{position:absolute;top:11vh;left:50%;transform:translateX(-50%);width:min(680px,92vw);
  background:linear-gradient(180deg,var(--panel-2),var(--panel-solid));border:1px solid var(--line-3);
  border-radius:var(--r-lg);box-shadow:var(--shadow-lg),0 0 0 1px rgba(52,214,200,.14);overflow:hidden;animation:palPop .22s var(--ease)}
@keyframes palFade{from{opacity:0}}
@keyframes palPop{from{opacity:0;transform:translateX(-50%) translateY(-10px) scale(.98)}}
.pal-in{display:flex;align-items:center;gap:12px;padding:16px 18px;border-bottom:1px solid var(--line)}
.pal-in-ic{color:var(--accent);font-size:19px;display:grid;place-items:center}
.pal-in input{flex:1;min-width:0;background:none;border:none;outline:none;color:var(--ink);font-family:var(--sans);font-size:16px;font-weight:500}
.pal-in input::placeholder{color:var(--ink-4)}
.pal-esc{font-family:var(--mono);font-size:10.5px;padding:3px 7px;border-radius:6px;background:rgba(150,180,220,.1);border:1px solid var(--line);color:var(--ink-3)}
.pal-list{max-height:min(46vh,420px);overflow-y:auto;padding:8px}
.pal-row{display:flex;align-items:center;gap:13px;padding:11px 13px;border-radius:var(--r-sm);cursor:pointer;transition:.12s var(--ease)}
.pal-row.is-sel{background:linear-gradient(90deg,rgba(52,214,200,.16),rgba(52,214,200,.04));box-shadow:inset 0 0 0 1px rgba(52,214,200,.28)}
.pal-row:hover{background:rgba(150,180,220,.06)}
.pal-ic{color:var(--ink-2);font-size:17px;display:grid;place-items:center;width:20px;flex:none}
.pal-row.is-sel .pal-ic{color:var(--accent)}
.pal-lbl{flex:1;min-width:0;font-size:13.5px;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pal-lbl b{color:var(--accent);font-weight:700}
.pal-hint{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-4);flex:none}
.pal-ask .pal-ic{color:var(--gold)}
.pal-none{padding:22px;text-align:center;color:var(--ink-3);font-size:13px}
.pal-ans-wrap:empty{display:none}
.pal-ans-wrap{padding:0 8px 8px}
.pal-ans-load{display:flex;align-items:center;gap:9px;padding:14px 16px;color:var(--ink-2);font-size:13px}
.pal-ans-load .ic{color:var(--accent);animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.pal-ans{padding:14px 16px;border-radius:var(--r-sm);background:rgba(52,214,200,.05);border:1px solid rgba(52,214,200,.16)}
.pal-ans-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.pal-ans-full{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;color:var(--accent)}
.pal-ans-a{font-size:14px;font-weight:600;color:var(--ink);line-height:1.5}
.pal-ans ul{margin:9px 0 0;padding-left:18px;font-size:12.5px;color:var(--ink-2);line-height:1.6}
.pal-ans-cite{margin-top:9px;font-size:11px;color:var(--ink-3)}
.pal-foot{display:flex;gap:18px;padding:11px 18px;border-top:1px solid var(--line);font-size:11px;color:var(--ink-4)}
.pal-foot span{display:flex;align-items:center;gap:5px}
.pal-foot .ic{font-size:13px}
@media (max-width:760px){.pal{top:6vh;width:94vw}.cmd-search span{display:none}}
