/* ============================================================
   Princess Insights v2 — Athena aesthetic (five-tab composite, m11)
   Monochrome (#0A0A0A on #FFFFFF) + single hot-pink accent (#FF0080).
   Square corners, hairline borders, Inter font-black display type.
   ============================================================ */
:root{
  --bg:#FFFFFF; --panel:#FFFFFF; --panel2:#F5F5F5; --line:#E6E6E6;
  --text:#0A0A0A; --muted:#737373; --faint:#A3A3A3;
  --accent:#FF0080; --accent-soft:rgba(255,0,128,.07);
  --pos:#0F7A52; --pos-bg:#E8F5EE; --neg:#E5004C; --neg-bg:#FEE7EE;
  --warn:#B25E00; --warn-bg:#FBEEDD; --neu:#D4D4D4; --radius:3px;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--text);
  font:15px/1.55 "Inter",-apple-system,"Segoe UI",Roboto,sans-serif;
  -webkit-font-smoothing:antialiased;font-feature-settings:"cv11","ss01";}

/* ============ shared chrome ============ */
header{position:sticky;top:0;z-index:30;display:flex;align-items:stretch;gap:20px;
  height:64px;padding:0 28px;background:rgba(255,255,255,.88);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.brand{font-size:19px;font-weight:900;letter-spacing:-1px;align-self:center;white-space:nowrap}
.brand span{color:var(--accent)}
.scopebox{display:flex;align-items:center;gap:8px;margin-left:6px}
.scopebox label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.4px;color:var(--muted)}
/* Every scope is brand-gated (backbone princess_only): say so rather than
   letting "All sources" imply unfiltered volume. Hover carries the detail. */
.scopebox .gatenote{font-size:10px;color:var(--faint);border:1px solid var(--line);border-radius:9px;padding:1px 6px;cursor:help;white-space:nowrap}
select,input,textarea{background:#fff;color:var(--text);border:1px solid var(--line);border-radius:var(--radius);
  padding:7px 10px;font-size:13px;font-family:inherit}
select:focus,input:focus,textarea:focus{outline:none;border-color:var(--text)}
nav#tabs{margin-left:auto;display:flex;gap:2px}
nav#tabs button{background:transparent;border:none;cursor:pointer;font-family:inherit;position:relative;
  padding:12px 14px 10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
nav#tabs button .tl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.3px;color:var(--muted)}
nav#tabs button .th{font-size:9px;color:var(--faint);letter-spacing:.4px}
nav#tabs button:hover .tl{color:var(--text)}
nav#tabs button.active .tl{color:var(--text)}
nav#tabs button.active::after{content:"";position:absolute;left:12px;right:12px;bottom:-1px;height:2px;background:var(--accent)}
.asof{font-size:11.5px;color:var(--muted);align-self:center;white-space:nowrap}
/* ---- the analysis-range control (header) ---- */
.rangebox{display:flex;align-items:center;gap:7px;margin-left:8px}
.rangebox label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.4px;color:var(--muted)}
.rangebox select{font-size:12px;padding:6px 8px}
.rangebox .rg-dates{display:inline-flex;align-items:center;gap:5px}
.rangebox .rg-dates.hidden{display:none}
.rangebox .rg-dates input{font-size:11.5px;padding:5px 6px;width:126px}
.rangebox .rg-dash{color:var(--faint);font-size:11px}
.rangebox .seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.rangebox .seg button{background:#fff;border:none;border-right:1px solid var(--line);color:var(--muted);
  cursor:pointer;font:700 10.5px/1 Inter,sans-serif;letter-spacing:.6px;padding:7px 9px}
.rangebox .seg button:last-child{border-right:none}
.rangebox .seg button.active{background:var(--text);color:#fff}

/* ---- requested-vs-served strip (design section 5) ---- */
.rstrip{display:flex;align-items:center;flex-wrap:wrap;gap:10px;
  padding:6px 28px;font-size:11.5px;color:var(--muted);background:var(--panel2);
  border-bottom:1px solid var(--line)}
.rstrip.hidden{display:none}
.rstrip .rs-lab{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:1.2px;color:var(--faint)}
.rstrip .rs-main{color:var(--text);font-weight:600}
.rstrip .rs-dates{color:var(--faint);font-weight:400}
.rstrip .rs-arrow{color:var(--faint)}
.rstrip .rs-note{color:var(--faint)}
.rstrip .rs-badge{font-size:9.5px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;
  color:var(--neg);border:1px solid var(--neg);border-radius:9px;padding:1px 7px}
.rstrip .rs-excl b{color:var(--text);font-weight:700}

/* ---- Phase 3: standing surfaces visibly disengage ---- */
/* The range control stays READABLE on Triage/Alarms/Emerging -- it is not
   removed, because vanishing chrome reads as a bug. It is greyed and inert
   so nobody believes those pages are narrowed. */
.rangebox.disengaged{opacity:.42;filter:grayscale(1);pointer-events:none}
.rdis{padding:5px 28px;font-size:11.5px;color:var(--muted);
  background:var(--panel2);border-bottom:1px solid var(--line)}
.rdis.hidden{display:none}
/* Per-section marker on a standing block inside a ranged page (the Briefing's
   alarm sections and its narrative). */
.standing-note{font-size:11px;color:var(--muted);background:var(--panel2);
  border-left:3px solid var(--line);padding:5px 10px;margin:0 0 10px;border-radius:2px}

.view{display:none}
.view.on{display:block}
.loading{color:var(--muted);padding:60px;text-align:center;font-size:13px;text-transform:uppercase;letter-spacing:1.2px}

/* generic pending / stub banner (backend endpoint not live yet) */
.pending-note{border:1px dashed var(--line);border-radius:var(--radius);padding:10px 14px;
  font-size:12px;color:var(--muted);background:var(--panel2)}
.pending-note b{color:var(--text)}

.agentblock{border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:var(--radius);
  padding:12px 16px;display:flex;gap:14px;align-items:baseline;background:#fff}
.agentblock .tag{font-size:9px;font-weight:800;letter-spacing:1px;color:var(--accent);border:1px solid var(--accent);
  padding:1px 5px;border-radius:2px;white-space:nowrap}
.agentblock p{font-size:13.5px;font-weight:600;margin:0}
.agentblock p em{font-style:normal;font-weight:400;color:var(--muted)}

.xlink{font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent);
  text-decoration:none;cursor:pointer;white-space:nowrap}
.xlink:hover{text-decoration:underline}
.xlink::after{content:" \2192"}

/* thin-sample marker (v1 pattern): small-n never reads as established fact */
.thin-chip{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:2px;font-size:11px;
  font-weight:500;color:var(--muted);border:1px solid var(--line);background:transparent;
  letter-spacing:.2px;white-space:nowrap;vertical-align:middle}
.chip-thin{opacity:.45}

/* sentiment chips (v1) */
.chip{display:inline-block;padding:2px 8px;border-radius:2px;font-size:10.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.5px;border:1px solid var(--line);background:#fff}
.s-pos{color:var(--pos);border-color:var(--pos);background:var(--pos-bg)}
.s-neg{color:var(--neg);border-color:var(--neg);background:var(--neg-bg)}
.s-neu{color:var(--muted)}
.st-rising{color:var(--accent);font-weight:700}
.st-falling{color:var(--muted)} .st-flat{color:var(--faint)} .st-cresting{color:var(--warn)}
.st-worsening{color:var(--neg);font-weight:700} .st-improving{color:var(--pos);font-weight:700}
.st-stable{color:var(--faint)} .st-turning_down{color:var(--warn)} .st-turning_up{color:var(--pos)}
.sev-severe{background:var(--neg-bg);color:var(--neg);border-color:var(--neg)}
.sev-moderate{background:var(--warn-bg);color:var(--warn);border-color:var(--warn)}
.alarmflag{color:var(--neg);font-weight:900}
.muted{color:var(--muted)} .faint{color:var(--faint)}

/* posts (raw list + drawer docs; v1) */
.post{padding:15px 0;border-bottom:1px solid var(--line)}
.post:last-child{border:none}
.post .top{display:flex;gap:8px;align-items:center;margin-bottom:6px;flex-wrap:wrap}
.post .summary{color:var(--text);font-size:14px}
.post a{color:var(--accent);text-decoration:none;font-size:12px;font-weight:600}
.post a:hover{text-decoration:underline}
.post .meta{color:var(--faint);font-size:11px;margin-top:6px;text-transform:uppercase;letter-spacing:.4px}
.src{font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.4px}
.pager{display:flex;gap:12px;align-items:center;margin-top:18px;color:var(--muted);font-size:13px}
.pager button{background:#fff;border:1px solid var(--line);color:var(--text);
  padding:8px 16px;border-radius:var(--radius);cursor:pointer;font-size:12px;font-weight:600}
.pager button:hover:not(:disabled){border-color:var(--text)}
.pager button:disabled{opacity:.4;cursor:default}

/* ============ shared investigation drawer (v1 anatomy: chart + agent note + synthesis + posts) ============ */
.scrim{position:fixed;inset:0;background:rgba(10,10,10,.35);z-index:50}
.drawer{position:fixed;top:0;right:0;width:min(580px,94vw);height:100vh;background:#fff;
  border-left:1px solid var(--line);z-index:55;display:flex;flex-direction:column;
  box-shadow:-16px 0 48px rgba(0,0,0,.12)}
.hidden{display:none}
.drawer-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;
  padding:22px 24px;border-bottom:1px solid var(--line)}
.dd-title{font-size:22px;font-weight:900;letter-spacing:-.6px;line-height:1.15}
.dd-badges{margin-top:12px;display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.badge{display:inline-block;padding:3px 9px;border-radius:2px;font-size:11px;margin-right:6px;
  background:var(--panel2);border:1px solid var(--line);color:var(--muted)}
#dd-close{background:transparent;border:none;color:var(--muted);font-size:20px;cursor:pointer;line-height:1}
#dd-close:hover{color:var(--text)}
.dd-chart-wrap{padding:18px 24px;border-bottom:1px solid var(--line);height:230px;flex:none}
.dd-docs{overflow-y:auto;padding:8px 24px 36px}
.dd-actions{display:flex;gap:16px;padding:10px 24px;border-bottom:1px solid var(--line);flex:none}
.synthesis{background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 16px;margin:12px 0 16px}
.syn-text{font-size:13.5px;line-height:1.5;color:var(--text)}
.syn-loading{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:1.2px}
.syn-roll{margin-top:11px;display:flex;flex-wrap:wrap;gap:6px}
.syn-roll-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;
  color:var(--muted);width:100%;margin-bottom:2px}
.syn-chip{font-size:11px;border:1px solid var(--line);border-radius:2px;padding:2px 8px;background:#fff}
.syn-chip b{font-variant-numeric:tabular-nums}
.syn-chip.neg{border-left:3px solid var(--neg)}
.syn-chip.pos{border-left:3px solid var(--pos)}
.syn-chip.mix{border-left:3px solid var(--faint)}
.agent-investigation{border:1px solid var(--line);border-left:2px solid var(--accent);
  border-radius:var(--radius);background:var(--panel2);padding:14px 16px;margin:12px 0 16px}
.ai-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--accent);margin-bottom:8px}
.ai-body{font-size:13.5px;line-height:1.5;color:var(--text)}
.ai-meta{font-size:11px;color:var(--muted);margin-top:10px;text-transform:uppercase;letter-spacing:.4px}
h2.page{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1.4px;color:var(--muted);margin:24px 0 8px}

/* ============ 1 BRIEFING ============ */
#v-briefing main{max-width:860px;margin:0 auto;padding:40px 32px 40px}
#v-briefing .kicker{display:flex;align-items:center;gap:12px;margin-bottom:18px}
#v-briefing .agent-chip{display:inline-block;font-size:10px;font-weight:700;letter-spacing:1.6px;
  text-transform:uppercase;color:var(--accent);border:1px solid var(--accent);border-radius:var(--radius);padding:3px 8px}
#v-briefing .kdate{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:1.4px;color:var(--muted)}
#v-briefing h1.headline{font-size:40px;font-weight:900;letter-spacing:-2.2px;line-height:1.08;margin:0 0 10px}
#v-briefing .deck{font-size:15px;color:var(--muted);margin:0 0 8px;max-width:640px}
#v-briefing .brief{border-left:2px solid var(--accent);padding-left:26px;margin-top:28px}
#v-briefing .brief p.lede{font-size:18px;line-height:1.65;margin:0 0 14px;max-width:660px}
#v-briefing .brief p.body-p{font-size:16px;line-height:1.7;margin:24px 0 14px;max-width:660px;color:#1a1a1a}
#v-briefing .exhibit{border:1px solid var(--line);border-radius:var(--radius);background:#fff;
  margin:22px 0 30px;padding:20px 22px 18px;max-width:760px}
#v-briefing .ex-label{display:flex;align-items:baseline;gap:12px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.6px;color:var(--muted);margin-bottom:4px}
#v-briefing .ex-label .xlink{margin-left:auto}
#v-briefing .ex-title{font-size:14px;font-weight:700;margin-bottom:14px}
#v-briefing .ex-cap{font-size:12px;color:var(--muted);margin-top:12px;line-height:1.5}
#v-briefing .bchips, #v-signal .bchips{display:flex;gap:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin-top:16px}
#v-briefing .bchip, #v-signal .bchip{flex:1;padding:14px 18px;border-right:1px solid var(--line)}
#v-briefing .bchip:last-child, #v-signal .bchip:last-child{border-right:none}
#v-briefing .bchip .v, #v-signal .bchip .v{font-size:23px;font-weight:900;letter-spacing:-1px;line-height:1.1}
#v-briefing .bchip .v.up, #v-signal .bchip .v.up{color:var(--pos)} #v-briefing .bchip .v.down, #v-signal .bchip .v.down{color:var(--neg)} #v-briefing .bchip .v.pink, #v-signal .bchip .v.pink{color:var(--accent)}
#v-briefing .bchip .l, #v-signal .bchip .l{font-size:10.5px;font-weight:600;text-transform:uppercase;letter-spacing:1.1px;color:var(--muted);margin-top:5px}
#v-briefing .mixbar{display:flex;height:26px;border-radius:var(--radius);overflow:hidden}
#v-briefing .mixbar div{height:100%;margin-right:2px}
#v-briefing .mixbar div:last-child{margin-right:0}
#v-briefing .mixleg{display:flex;flex-wrap:wrap;gap:14px;margin-top:10px;color:var(--muted);font-size:12px}
#v-briefing .dot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:6px}
#v-briefing .chart-wrap{position:relative;height:170px}
#v-briefing .quotes{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px}
#v-briefing .quote{border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;font-size:13.5px;line-height:1.55;color:#2a2a2a;background:var(--panel2)}
#v-briefing .quote .attr{display:block;margin-top:8px;font-size:11px;color:var(--muted)}
#v-briefing .quote.negq{border-left:3px solid var(--neg)}
#v-briefing .wins{display:grid;grid-template-columns:1fr 1fr;gap:14px}
#v-briefing .win{border:1px solid var(--line);border-left:3px solid var(--pos);border-radius:var(--radius);padding:14px 16px}
#v-briefing .win .wl{font-size:14px;font-weight:700}
#v-briefing .win .wm{font-size:11px;color:var(--muted);margin:3px 0 8px;text-transform:uppercase;letter-spacing:.8px;font-weight:600}
#v-briefing .win .wq{font-size:13px;line-height:1.5;color:#2a2a2a}
#v-briefing .divrow{border:1px solid var(--line);border-radius:var(--radius);margin-bottom:10px}
#v-briefing .divhead{display:flex;align-items:baseline;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line);background:var(--panel2)}
#v-briefing .divhead b{font-size:13px}
#v-briefing .divhead span{font-size:11px;color:var(--muted);margin-left:auto}
#v-briefing .divbar{display:flex;height:5px}
#v-briefing .divbar .p{background:var(--pos)} #v-briefing .divbar .g{width:2px;background:#fff} #v-briefing .divbar .n{background:var(--neg);flex:1}
#v-briefing .divbody{display:grid;grid-template-columns:1fr 1fr}
#v-briefing .divside{padding:12px 16px;font-size:12.5px;line-height:1.5;font-style:italic;color:#333}
#v-briefing .divside.r{border-left:1px solid var(--line)}
#v-briefing .divside .sl{font-size:9.5px;font-weight:700;letter-spacing:1.2px;text-transform:uppercase;font-style:normal;margin-bottom:6px}
#v-briefing .divside.l .sl{color:var(--pos)} #v-briefing .divside.r .sl{color:var(--neg)}

/* daily take strip (v1 pattern, restyled) */
.daily-take{display:flex;align-items:flex-start;gap:14px;border:1px solid var(--line);
  border-radius:var(--radius);padding:14px 18px;margin-bottom:20px;background:#fff}
.dt-label{flex:none;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:1.2px;
  color:var(--muted);white-space:nowrap;padding-top:3px}
.dt-text{flex:1;font-size:13.5px;line-height:1.5;color:var(--text)}
.dt-loading{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:1px}
.dt-refresh{flex:none;background:transparent;border:none;color:var(--faint);cursor:pointer;
  font-size:15px;line-height:1;padding:2px 4px;font-family:inherit}
.dt-refresh:hover{color:var(--accent)}

/* ============ 2 TRIAGE ============ */
#v-triage main{max-width:1280px;margin:0 auto;padding:26px 32px 60px;display:grid;grid-template-columns:300px 1fr;gap:36px}
#v-triage .queue h2{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.4px;color:var(--muted);margin:4px 0 12px}
#v-triage .t-filters{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}
#v-triage .t-filters button{background:#fff;border:1px solid var(--line);color:var(--muted);border-radius:var(--radius);
  padding:4px 8px;font:700 10px/1 Inter,sans-serif;text-transform:uppercase;letter-spacing:.6px;cursor:pointer}
#v-triage .t-filters button.active{background:var(--text);color:#fff;border-color:var(--text)}
#v-triage .qlist{border:1px solid var(--line);border-radius:var(--radius);max-height:560px;overflow-y:auto}
#v-triage .qitem{display:flex;align-items:center;gap:8px;padding:9px 12px;border-bottom:1px solid var(--line);cursor:pointer;font-size:12.5px}
#v-triage .qitem:last-child{border-bottom:none}
#v-triage .qitem:hover{background:var(--panel2)}
#v-triage .qitem .qdot{width:8px;height:8px;border-radius:50%;flex:none}
#v-triage .qitem .qdot.alarm{background:var(--neg)} #v-triage .qitem .qdot.win{background:var(--pos)} #v-triage .qitem .qdot.divisive{background:var(--faint)}
#v-triage .qitem .ql{flex:1;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
#v-triage .qitem .qs{font-size:10.5px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--muted);flex:none}
#v-triage .qitem.active{background:var(--accent-soft)}
#v-triage .qitem.active .ql{font-weight:700}
#v-triage .qitem.done .ql{color:var(--faint);text-decoration:line-through}
#v-triage .qitem .qst{font-size:9px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;flex:none}
#v-triage .qitem .qst.handled{color:var(--pos)} #v-triage .qitem .qst.not_this_brief{color:var(--faint)}
#v-triage .qitem .qst.follow_up{color:var(--warn)} #v-triage .qitem .qst.partial{color:var(--accent)}
#v-triage .qitem .qst.carried{color:var(--warn)}
#v-triage .t-overflow{font-size:11px;color:var(--faint);margin-top:10px;line-height:1.4;padding:0 2px}
#v-triage .deckhead{display:flex;align-items:center;gap:14px;margin-bottom:16px;flex-wrap:wrap}
#v-triage .deckhead-l{display:flex;flex-direction:column;gap:2px;min-width:0}
#v-triage .deckhead h1{font-size:29px;font-weight:900;letter-spacing:-1.4px;margin:0}
#v-triage .deckhead .sub{font-size:13px;color:var(--muted)}
#v-triage .t-focus{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
#v-triage .t-focus button{background:#fff;border:none;border-right:1px solid var(--line);color:var(--muted);
  padding:7px 12px;cursor:pointer;font:700 11px/1 Inter,sans-serif;text-transform:uppercase;letter-spacing:.7px}
#v-triage .t-focus button:last-child{border-right:none}
#v-triage .t-focus button.active{background:var(--text);color:#fff}
#v-triage .progress{margin-left:auto;display:flex;align-items:center;gap:12px}
#v-triage .ptext{font-size:12px;font-weight:600;color:var(--muted)} #v-triage .ptext b{color:var(--text)}
#v-triage .pbar{width:150px;height:4px;background:var(--panel2);border-radius:2px;overflow:hidden}
#v-triage .pbar div{height:100%;background:var(--accent);width:0%;transition:width .25s}
/* Deck is normal flow (not a fixed-height absolute stack). Peek cards were
   stacking under a fixed inset:0 frame so expanded evidence painted under
   the note/action chrome. Top card grows with content; page scrolls. */
#v-triage .deck{position:relative;min-height:280px}
#v-triage .tcard{position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:0 2px 8px rgba(0,0,0,.06);padding:22px 28px 20px;display:flex;flex-direction:column;
  gap:0;overflow:visible}
#v-triage .tcard.peek1,#v-triage .tcard.peek2{display:none}
#v-triage .tcard.top{z-index:2}
#v-triage .tcard.fly{opacity:0}
#v-triage .tcard.flyback{opacity:0}
#v-triage .kindline{display:flex;align-items:center;gap:8px;margin-bottom:10px;flex-wrap:wrap}
#v-triage .kindtag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.3px;color:var(--muted);
  border:1px solid var(--line);border-radius:2px;padding:3px 8px}
#v-triage .typetag{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:1.3px;border-radius:2px;padding:3px 9px;color:#fff}
#v-triage .typetag.alarm{background:var(--neg)} #v-triage .typetag.win{background:var(--pos)} #v-triage .typetag.divisive{background:var(--muted)}
#v-triage .chip-new{font-size:9.5px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;
  color:var(--accent);border:1px solid var(--accent);border-radius:2px;padding:2px 7px}
#v-triage .chip-carried{font-size:9.5px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;
  color:var(--warn);border:1px solid var(--warn);border-radius:2px;padding:2px 7px}
#v-triage .chip-partial{font-size:9.5px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;
  color:var(--accent);border:1px solid var(--accent);border-radius:2px;padding:2px 7px}
#v-triage .revstate{margin-left:auto;font-size:10px;font-weight:800;letter-spacing:1px;text-transform:uppercase}
#v-triage .revstate.handled{color:var(--pos)} #v-triage .revstate.not_this_brief{color:var(--faint)}
#v-triage .revstate.follow_up{color:var(--warn)} #v-triage .revstate.partial{color:var(--accent)}
#v-triage .revstate.open{color:var(--muted)}
#v-triage .tcard h2{font-size:15px;font-weight:700;margin:0 0 4px;color:var(--muted)}
#v-triage .verdict-h{font-size:20px;font-weight:900;letter-spacing:-1px;line-height:1.22;margin:0 0 8px}
#v-triage .agentcard{border-left:2px solid var(--accent);padding:10px 16px;background:var(--accent-soft);
  border-radius:0 var(--radius) var(--radius) 0;margin-bottom:12px}
#v-triage .agentcard .al{font-size:9.5px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:var(--accent);margin-bottom:4px}
#v-triage .agentcard p{margin:0;font-size:13px;line-height:1.5;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
#v-triage .stats{display:grid;grid-template-columns:repeat(5,1fr);border:1px solid var(--line);border-radius:var(--radius);
  overflow:hidden;margin-bottom:12px}
#v-triage .stat{padding:11px 15px;border-right:1px solid var(--line)}
#v-triage .stat:last-child{border-right:none}
#v-triage .stat .sv{font-size:19px;font-weight:900;letter-spacing:-.8px}
#v-triage .stat .sv.neg{color:var(--neg)} #v-triage .stat .sv.pos{color:var(--pos)}
#v-triage .stat .sl{font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:1.1px;color:var(--muted);margin-top:3px}
#v-triage .weekticks{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap;align-items:center}
#v-triage .weekticks .wtl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.1px;color:var(--muted);margin-right:4px}
#v-triage .wtick{font-size:10.5px;font-weight:600;border:1px solid var(--line);border-radius:2px;padding:3px 7px;color:var(--muted)}
#v-triage .wtick.idle{opacity:.45}
#v-triage .wtick.open{border-color:var(--text);color:var(--text)}
#v-triage .wtick.handled{background:rgba(15,122,82,.1);border-color:var(--pos);color:var(--pos)}
#v-triage .wtick.not_this_brief{background:var(--panel2);color:var(--faint)}
#v-triage .wtick.follow_up{background:rgba(196,140,0,.1);border-color:var(--warn);color:var(--warn)}
/* Evidence is in-flow (not flex:1 clipped). Long samples scroll inside
   .ev-depth so the note + action chrome never floats over quotes. */
#v-triage .evi{flex:none;min-height:0;margin-bottom:4px}
#v-triage .evi .el{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.4px;color:var(--muted);margin-bottom:8px;
  display:flex;align-items:center;gap:12px;flex-wrap:wrap}
#v-triage .evi .el .xlink{font-size:11px;letter-spacing:.3px;text-transform:none;font-weight:600}
#v-triage .equote{font-size:13px;color:#333;border-left:2px solid var(--line);padding:2px 0 2px 14px;margin-bottom:9px;font-style:italic;
  overflow-wrap:anywhere;word-break:break-word}
#v-triage .equote.p{border-left-color:var(--pos)} #v-triage .equote.n{border-left-color:var(--neg)}
#v-triage .equote .attr{display:block;font-style:normal;font-size:11px;color:var(--faint);margin-top:3px}
#v-triage .equote a.attr.qlink{text-decoration:none;cursor:pointer}
#v-triage .equote a.attr.qlink:hover{color:var(--accent);text-decoration:underline}
.equote .attr .qold,.quote .attr .qold{color:#b45309;font-weight:600}
#v-triage .ev-depth{border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;margin-bottom:12px;background:var(--panel2);
  max-height:min(360px, 42vh);overflow-y:auto;overscroll-behavior:contain}
#v-triage .ev-depth .ev-meta{font-size:11px;color:var(--muted);margin-bottom:8px}
#v-triage .ev-row{display:grid;grid-template-columns:72px minmax(0,1fr) 118px;gap:10px;padding:8px 0;border-top:1px solid var(--line);
  font-size:12.5px;align-items:start}
#v-triage .ev-row:first-of-type{border-top:none}
#v-triage .ev-row .ev-stratum{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.7px;color:var(--muted);padding-top:2px}
#v-triage .ev-row .ev-stratum.negative{color:var(--neg)} #v-triage .ev-row .ev-stratum.positive{color:var(--pos)}
#v-triage .ev-row .ev-body{color:var(--text);line-height:1.45;overflow-wrap:anywhere;word-break:break-word;min-width:0}
#v-triage .ev-row .ev-body a{color:var(--accent);text-decoration:none;font-weight:600;font-size:11px}
#v-triage .ev-row .ev-side{display:flex;flex-direction:column;align-items:flex-end;gap:5px;font-size:11px;color:var(--faint);text-align:right;min-width:0}
#v-triage .ev-date{font-variant-numeric:tabular-nums;color:var(--faint)}
#v-triage .ev-mood{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:4px}
#v-triage .ev-mood .chip{font-size:10px;padding:1px 6px}
/* Engagement: absolute tier (quiet→viral) + bar relative to sample max */
#v-triage .ev-eng{display:flex;flex-direction:column;align-items:flex-end;gap:3px;min-width:96px}
#v-triage .ev-eng-top{display:flex;align-items:baseline;gap:6px}
#v-triage .ev-eng-n{font-size:12px;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text)}
#v-triage .ev-eng-tier{font-size:9.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase}
#v-triage .ev-eng-bar{display:block;width:96px;height:3px;background:var(--line);border-radius:2px;overflow:hidden}
#v-triage .ev-eng-bar i{display:block;height:100%;background:var(--muted);border-radius:2px}
#v-triage .ev-eng.quiet .ev-eng-tier,#v-triage .ev-eng.quiet .ev-eng-n{color:var(--faint)}
#v-triage .ev-eng.quiet .ev-eng-bar i{background:var(--faint);opacity:.5}
#v-triage .ev-eng.modest .ev-eng-tier{color:var(--muted)}
#v-triage .ev-eng.modest .ev-eng-bar i{background:var(--muted)}
#v-triage .ev-eng.solid .ev-eng-tier{color:var(--text)}
#v-triage .ev-eng.solid .ev-eng-bar i{background:var(--text)}
#v-triage .ev-eng.hot .ev-eng-tier,#v-triage .ev-eng.hot .ev-eng-n{color:var(--warn)}
#v-triage .ev-eng.hot .ev-eng-bar i{background:var(--warn)}
#v-triage .ev-eng.viral .ev-eng-tier,#v-triage .ev-eng.viral .ev-eng-n{color:var(--accent)}
#v-triage .ev-eng.viral .ev-eng-bar i{background:var(--accent)}
/* Net-negative Reddit scores (downvoted) */
#v-triage .ev-eng.down-soft .ev-eng-tier,#v-triage .ev-eng.down-soft .ev-eng-n{color:var(--muted)}
#v-triage .ev-eng.down-soft .ev-eng-bar i{background:var(--muted)}
#v-triage .ev-eng.down .ev-eng-tier,#v-triage .ev-eng.down .ev-eng-n{color:var(--neg)}
#v-triage .ev-eng.down .ev-eng-bar i{background:var(--neg);opacity:.7}
#v-triage .ev-eng.buried .ev-eng-tier,#v-triage .ev-eng.buried .ev-eng-n{color:var(--neg)}
#v-triage .ev-eng.buried .ev-eng-bar i{background:var(--neg)}
#v-triage .ev-eng.buried-hard .ev-eng-tier,#v-triage .ev-eng.buried-hard .ev-eng-n{color:var(--neg);font-weight:900}
#v-triage .ev-eng.buried-hard .ev-eng-bar i{background:var(--neg)}
/* Action chrome: always below content, solid bg so nothing bleeds through */
#v-triage .t-actions{flex:none;margin-top:8px;padding-top:14px;border-top:1px solid var(--line);background:#fff;
  position:relative;z-index:1}
#v-triage .noterow{margin-top:0}
#v-triage .noterow textarea{width:100%;box-sizing:border-box;min-height:44px;max-height:90px;resize:vertical;font-size:12.5px;
  padding:8px 10px;line-height:1.4;font-family:inherit}
#v-triage .noterow .notemeta{display:flex;align-items:center;gap:10px;margin-top:4px;font-size:10.5px;color:var(--faint)}
#v-triage .noterow .notesave{background:#fff;border:1px solid var(--line);color:var(--muted);border-radius:var(--radius);
  padding:4px 10px;font:700 10px/1 Inter,sans-serif;text-transform:uppercase;letter-spacing:.8px;cursor:pointer}
#v-triage .noterow .notesave:hover{color:var(--accent);border-color:var(--accent)}
#v-triage .cardfoot{display:flex;gap:8px;margin-top:12px;align-items:center;flex-wrap:wrap}
#v-triage .cardfoot button{font:inherit;font-size:11.5px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;
  border-radius:var(--radius);padding:9px 14px;cursor:pointer}
#v-triage .btn-handled{background:var(--text);color:#fff;border:1px solid var(--text)}
#v-triage .btn-handled:hover{background:var(--pos);border-color:var(--pos)}
#v-triage .btn-notbrief{background:#fff;color:var(--muted);border:1px solid var(--line)}
#v-triage .btn-notbrief:hover{color:var(--text);border-color:var(--text)}
#v-triage .btn-follow{background:#fff;color:var(--warn);border:1px solid var(--line)}
#v-triage .btn-follow:hover{border-color:var(--warn)}
#v-triage .btn-unhandle{background:#fff;color:var(--text);border:1px solid var(--text)}
#v-triage .btn-unhandle:hover{background:var(--panel2);border-color:var(--text)}
#v-triage .btn-next{background:#fff;color:var(--muted);border:1px solid var(--line)}
#v-triage .btn-next:hover{color:var(--text);border-color:var(--text)}
#v-triage .cardfoot .links{margin-left:auto;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
#v-triage .apply-hint{font-size:11px;color:var(--faint);margin-top:8px;line-height:1.35}
#v-triage .alldone{display:none;flex-direction:column;align-items:center;justify-content:center;
  border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);padding:48px 24px;text-align:center;min-height:240px}
#v-triage .alldone .big{font-size:26px;font-weight:900;letter-spacing:-1px;color:var(--text);margin-bottom:6px}
/* Post-action undo toast — fixed, non-blocking, one action at a time */
#v-triage .t-undo-toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%);
  display:flex;align-items:center;gap:12px;z-index:80;
  background:var(--text);color:#fff;border-radius:var(--radius);
  padding:12px 14px 12px 16px;box-shadow:0 8px 28px rgba(0,0,0,.18);
  font-size:13px;font-weight:500;max-width:min(520px,92vw)}
#v-triage .t-undo-toast[hidden]{display:none !important}
#v-triage .t-undo-msg{flex:1;min-width:0;line-height:1.35}
#v-triage .t-undo-btn{background:#fff;color:var(--text);border:none;border-radius:var(--radius);
  padding:7px 12px;font:700 11px/1 Inter,sans-serif;text-transform:uppercase;letter-spacing:.7px;cursor:pointer;flex:none}
#v-triage .t-undo-btn:hover{background:var(--accent);color:#fff}
#v-triage .t-undo-btn:disabled{opacity:.45;cursor:default}
#v-triage .t-undo-x{background:transparent;border:none;color:rgba(255,255,255,.65);font-size:14px;
  cursor:pointer;padding:4px 6px;line-height:1;flex:none}
#v-triage .t-undo-x:hover{color:#fff}

/* ============ 3 TRENDS ============ */
#v-trends main{max-width:1300px;margin:0 auto;padding:26px 28px 40px}
#v-trends .page-title{font-size:28px;font-weight:900;letter-spacing:-1.4px;line-height:1.05;margin:0 0 4px}
#v-trends .page-sub{color:var(--muted);font-size:13px;max-width:820px;margin-bottom:16px}
#v-trends .winctrl{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;
  border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:10px 14px}
#v-trends .winctrl .wlab{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted)}
#v-trends .winctrl select,#v-trends .winctrl input{font-size:12px;padding:6px 8px}
#v-trends .winctrl .seg{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
#v-trends .winctrl .seg button{background:#fff;border:none;border-right:1px solid var(--line);color:var(--muted);
  padding:7px 14px;cursor:pointer;font:700 11px/1 Inter,sans-serif;text-transform:uppercase;letter-spacing:.8px}
#v-trends .winctrl .seg button:last-child{border-right:none}
#v-trends .winctrl .seg button.active{background:var(--text);color:#fff}
#v-trends .winctrl .wnote{margin-left:auto;font-size:11.5px;color:var(--faint)}
#v-trends .winctrl .wnote-l{font-size:12.5px;font-weight:600;color:var(--text)}
#v-trends .sumband{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;margin-bottom:20px;background:#fff}
#v-trends .sumcell{padding:14px 18px;border-right:1px solid var(--line)}
#v-trends .sumcell:last-child{border-right:none}
#v-trends .sumcell .v{font-size:22px;font-weight:900;letter-spacing:-1px}
#v-trends .sumcell .v.up{color:var(--pos)} #v-trends .sumcell .v.down{color:var(--neg)}
#v-trends .sumcell .l{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1.1px;color:var(--muted);margin-top:4px}
#v-trends .sumcell .d{font-size:11px;color:var(--faint);margin-top:3px}
/* "not comparable": the prior window is shorter in SERVED weeks, so no
   vs-prior number is printed at all -- this note stands in its place. */
.nc-note{font-style:italic;color:var(--faint)}
#v-trends h2{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:1.4px;color:var(--muted);
  margin:28px 0 10px;display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
#v-trends h2 .aread{font-weight:600;text-transform:none;letter-spacing:0;color:var(--text);font-size:11.5px}
#v-trends h2 .aread::before{content:"AGENT READ";color:var(--accent);font-weight:800;font-size:9px;letter-spacing:1px;
  margin-right:6px;border:1px solid var(--accent);padding:1px 4px;border-radius:2px}
#v-trends .riverwrap{border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 8px;position:relative}
#v-trends .rivertitle{display:flex;align-items:baseline;gap:12px;margin-bottom:4px;flex-wrap:wrap}
#v-trends .rivertitle b{font-size:14px;font-weight:800}
#v-trends .rivertitle span{font-size:11.5px;color:var(--muted)}
#v-trends .legend{display:flex;gap:16px;margin-left:auto;font-size:11.5px;color:var(--muted)}
#v-trends .legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
#v-trends #riverbox{position:relative;height:300px}
#v-trends .facets{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
#v-trends .facet{border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px 8px;background:#fff;cursor:pointer}
#v-trends .facet:hover{background:var(--panel2)}
#v-trends .fhead{display:flex;align-items:baseline;gap:8px;margin-bottom:4px}
#v-trends .fname{font-size:12px;font-weight:700}
#v-trends .fstat{margin-left:auto;font-size:10px;color:var(--muted)}
#v-trends .fchip{display:inline-block;font-size:9.5px;font-weight:700;padding:1px 5px;border-radius:2px}
#v-trends .fchip.pos{background:var(--pos-bg);color:var(--pos)} #v-trends .fchip.neg{background:var(--neg-bg);color:var(--neg)}
#v-trends .fchip.neu{background:var(--panel2);color:var(--muted)}
#v-trends .facet svg{display:block;width:100%}
#v-trends .axisrow{display:flex;justify-content:space-between;font-size:9px;color:var(--faint);margin-top:2px}
#v-trends table{width:100%;border-collapse:collapse;border:1px solid var(--line);font-size:11.5px;background:#fff}
#v-trends th{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--muted);text-align:left;
  padding:7px 10px;background:var(--panel2);border-bottom:1px solid var(--line)}
#v-trends th.r,#v-trends td.r{text-align:right}
#v-trends td{padding:6px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
#v-trends tbody tr{cursor:pointer}
#v-trends tbody tr:hover{background:var(--panel2)}
#v-trends tr:last-child td{border-bottom:none}
#v-trends td .sig{font-weight:700}
#v-trends td .kind{color:var(--faint);font-size:10px;margin-left:6px}
#v-trends .negbar{display:inline-block;width:74px;height:8px;background:var(--panel2);border-radius:2px;vertical-align:middle;position:relative;overflow:hidden}
#v-trends .negbar i{position:absolute;left:0;top:0;bottom:0;background:var(--neg);border-radius:2px}
#v-trends .negtxt{display:inline-block;width:34px;text-align:right;font-variant-numeric:tabular-nums;margin-left:6px;color:var(--muted)}
#v-trends .mvt{font-size:10.5px;font-weight:600}
#v-trends .mvt .up{color:var(--accent)} #v-trends .mvt .worse{color:var(--neg)} #v-trends .mvt .better{color:var(--pos)} #v-trends .mvt .flat{color:var(--muted);font-weight:400}
/* versus band */
#v-trends .vsband{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:18px 22px;margin-bottom:34px}
#v-trends .vslegend{display:flex;align-items:center;gap:18px;font-size:12px;color:var(--muted);margin-bottom:14px;flex-wrap:wrap}
#v-trends .vslegend .sw{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:-1px}
#v-trends .vscallout{font-size:11px;font-weight:700;letter-spacing:.4px;color:var(--accent);border:1px solid var(--accent);border-radius:2px;padding:4px 9px}
#v-trends .vsnote{font-size:11px;color:var(--faint);margin-left:auto}
#v-trends .vsrows{display:grid;gap:9px}
#v-trends .vsrow{display:grid;grid-template-columns:190px 44px 1fr 44px;gap:10px;align-items:center;cursor:pointer}
#v-trends .vsrow:hover .lbl{color:var(--accent)}
#v-trends .vsgut{position:relative;height:30px}
#v-trends .vsgut.l .vsval{right:2px}
#v-trends .vsgut.r .vsval{left:2px}
#v-trends .vsrow .lbl{font-size:12.5px;font-weight:700;text-align:right}
#v-trends .vsrow .n{font-size:11px;color:var(--faint);font-weight:400;display:block}
#v-trends .vstrack{position:relative;height:30px;background:var(--panel2);border-radius:2px}
#v-trends .vstrack .zero{position:absolute;left:50%;top:0;bottom:0;width:1px;background:#CFCFCF}
#v-trends .vsbar{position:absolute;height:10px;border-radius:2px}
#v-trends .vsbar.p{top:4px;background:#0A0A0A}
#v-trends .vsbar.c{bottom:4px;background:#A3A3A3}
#v-trends .vsval{position:absolute;font-size:10.5px;font-weight:600;color:var(--muted)}
#v-trends .vsval.p{top:1px}
#v-trends .vsval.c{bottom:1px}

/* ============ 4 EXPLORE ============ */
#v-explore main{max-width:1380px;margin:0 auto;padding:26px 28px 40px}
#v-explore .page-title{font-size:28px;font-weight:900;letter-spacing:-1.4px;margin:0 0 4px}
#v-explore .page-sub{color:var(--muted);font-size:13px;max-width:820px;margin-bottom:14px}
#v-explore .modeswitch{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin:14px 0 18px}
#v-explore .modeswitch button{background:#fff;border:none;padding:8px 18px;font:700 11px/1 Inter,sans-serif;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted);cursor:pointer;border-right:1px solid var(--line)}
#v-explore .modeswitch button:last-child{border-right:none}
#v-explore .modeswitch button.on{background:var(--text);color:#fff}
#v-explore .layout{display:grid;grid-template-columns:200px minmax(0,1fr) 330px;gap:14px;align-items:start;margin-top:6px}
#v-explore h2{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:1.3px;color:var(--muted);margin:0 0 10px}
#v-explore .movers{border:1px solid var(--line);border-radius:var(--radius)}
#v-explore .mv{padding:8px 12px;border-bottom:1px solid var(--line);cursor:pointer}
#v-explore .mv:last-child{border-bottom:none}
#v-explore .mv:hover{background:var(--panel2)}
#v-explore .mv b{display:block;font-size:12px;line-height:1.3}
#v-explore .mv span{font-size:10.5px;color:var(--muted)}
#v-explore .mv span.worse{color:var(--neg);font-weight:600}
#v-explore .mv span.better{color:var(--pos);font-weight:600}
#v-explore #map{position:relative;height:600px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff}
#v-explore .tile{position:absolute;overflow:hidden;cursor:pointer;border-radius:1px;transition:filter .1s}
#v-explore .tile:hover{filter:brightness(1.06) saturate(1.1);z-index:2}
#v-explore .tile.sel{outline:2px solid var(--text);z-index:3}
#v-explore .tile .tl{padding:4px 6px;font-weight:700;pointer-events:none;display:-webkit-box;-webkit-box-orient:vertical;
  overflow:hidden;text-overflow:ellipsis;word-break:break-word;line-height:1.25}
#v-explore .tile .tl small{display:block;font-weight:400;opacity:.75}
#v-explore .tile.alarm::after{content:"";position:absolute;inset:1px;border:2px solid var(--accent);border-radius:1px;pointer-events:none}
#v-explore .maplegend{display:flex;align-items:center;gap:12px;margin-top:10px;font-size:11px;color:var(--muted);flex-wrap:wrap}
#v-explore .grad{width:220px;height:10px;border-radius:2px;background:linear-gradient(90deg,#E5004C,#F4B8C6,#DBDBDB,#A5CDBB,#0F7A52)}
#v-explore .alarmkey{display:inline-block;width:12px;height:12px;border:2px solid var(--accent);border-radius:2px;vertical-align:-2px;margin-right:5px}
#v-explore .detail{border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px;min-height:600px}
#v-explore .detail .hint{color:var(--faint);font-size:12.5px;margin-top:8px}
#v-explore .detail h3{font-size:19px;font-weight:900;letter-spacing:-.5px;margin:2px 0 8px}
#v-explore .dstats{display:flex;border:1px solid var(--line);border-radius:var(--radius);margin:10px 0}
#v-explore .dstats div{flex:1;padding:9px 11px;border-right:1px solid var(--line)}
#v-explore .dstats div:last-child{border-right:none}
#v-explore .dstats .v{font-size:18px;font-weight:900;letter-spacing:-.5px}
#v-explore .dstats .l{font-size:9px;font-weight:600;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}
#v-explore .moodchip{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:2px;margin-bottom:6px}
#v-explore .alarmpill{display:inline-block;font-size:9.5px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:#fff;
  background:var(--accent);padding:2px 7px;border-radius:2px;margin-left:6px;vertical-align:2px}
#v-explore .detail p.sum{font-size:12.5px;margin:10px 0}
#v-explore .detail .verdict{border-left:3px solid var(--accent);padding:9px 13px;background:var(--panel2);border-radius:var(--radius);font-size:12.5px;margin:12px 0}
#v-explore .detail .verdict .tag{font-size:9px;font-weight:800;letter-spacing:1px;color:var(--accent);display:block;margin-bottom:5px}
#v-explore .detail .xlink{display:inline-block;margin-top:10px;margin-right:14px}
#v-explore .rawfilters{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
#v-explore .rawfilters input{width:260px}
#v-explore .rawcount{font-size:12px;color:var(--muted);margin-left:auto}
#v-explore .rawlist{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:0 18px}

/* ============ 5 VOICE ============ */
#v-voice main{max-width:1220px;margin:0 auto;padding:36px 32px 40px}
#v-voice h1{font-size:34px;font-weight:900;letter-spacing:-1.8px;line-height:1.05;margin:0 0 10px}
#v-voice h1 span{color:var(--accent)}
#v-voice .lede{font-size:14.5px;color:var(--muted);max-width:70ch;margin:0 0 20px}
#v-voice .vstats{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;margin:18px 0}
#v-voice .vstat{padding:16px 20px;border-right:1px solid var(--line)}
#v-voice .vstat:last-child{border-right:none}
#v-voice .vstat .v{font-size:28px;font-weight:900;letter-spacing:-1.2px}
#v-voice .vstat .l{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:1.1px;color:var(--muted);margin-top:4px}
#v-voice h2.sect{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1.6px;color:var(--muted);
  margin:44px 0 6px;display:flex;align-items:baseline;gap:12px}
#v-voice h2.sect::before{content:"";width:22px;height:2px;background:var(--text);align-self:center}
#v-voice h2.sect.love::before{background:var(--pos)}
#v-voice h2.sect.req::before{background:var(--warn)}
#v-voice h2.sect.asking::before{background:var(--accent)}
#v-voice h2.sect.echo::before{background:var(--muted)}
#v-voice .sectsub{font-size:13px;color:var(--muted);margin:0 0 18px;padding-left:34px}
#v-voice .qgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
/* Praise wall holds two different KINDS of card -- an aggregate topic (many
   posts behind one quote) and a single guest post. They used to look identical,
   which read a lone comment as though it carried a topic's weight. Divider +
   sub-heading separates them; .wbadge states the weight up front. */
#v-voice .subsect{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.4px;
  color:var(--muted);margin:26px 0 12px;padding-top:18px;border-top:1px solid var(--line);
  display:flex;align-items:baseline;gap:10px}
#v-voice .subsect:first-of-type{border-top:none;padding-top:0;margin-top:0}
#v-voice .subsect span{font-size:11px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--faint)}
#v-voice .qcard .wbadge{align-self:flex-start;font-size:10.5px;font-weight:700;letter-spacing:.3px;
  padding:3px 9px;border-radius:2px;margin-bottom:12px;background:var(--pos-bg);color:var(--pos)}
#v-voice .qcard .wbadge.one{background:var(--panel2);color:var(--faint)}
#v-voice .qcard{border:1px solid var(--line);border-radius:var(--radius);padding:20px 22px;display:flex;flex-direction:column;background:#fff;position:relative}
#v-voice .qcard::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px 0 0 3px}
#v-voice .qcard.pos::before{background:var(--pos)}
#v-voice .qcard.warn::before{background:var(--warn)}
#v-voice .qcard blockquote{margin:2px 0 12px;font-size:14.5px;font-weight:500;letter-spacing:-.2px;line-height:1.5;flex:1}
#v-voice .qcard.big blockquote{font-size:18px;font-weight:700;letter-spacing:-.5px}
#v-voice .qcard .attr{font-size:11.5px;color:var(--faint);margin-bottom:11px}
#v-voice .qcard .attr a{color:var(--accent);text-decoration:none;font-weight:600}
#v-voice .chips{display:flex;flex-wrap:wrap;gap:6px}
#v-voice .vchip{font-size:10.5px;font-weight:600;letter-spacing:.3px;padding:3px 9px;border-radius:2px;background:var(--panel2);color:var(--muted)}
#v-voice .vchip.pos{background:var(--pos-bg);color:var(--pos)}
#v-voice .vchip.neg{background:var(--neg-bg);color:var(--neg)}
#v-voice .vchip.warn{background:var(--warn-bg);color:var(--warn)}
#v-voice .vchip.acc{background:var(--accent-soft);color:var(--accent)}
#v-voice .asklist{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
#v-voice .ask{border:1px dashed var(--line);border-radius:var(--radius);padding:16px 18px}
#v-voice .ask .q{font-size:14px;font-weight:600;letter-spacing:-.2px;margin:0 0 10px}
#v-voice .ask .q::before{content:"Q. ";color:var(--accent);font-weight:900}
#v-voice .ask .q a{color:inherit;text-decoration:none}
#v-voice .ask .q a:hover{color:var(--accent)}
#v-voice .echolist{border:1px solid var(--line);border-radius:var(--radius)}
#v-voice .echorow{display:flex;align-items:center;gap:12px;padding:8px 14px;border-bottom:1px solid var(--line);font-size:12.5px;cursor:pointer}
#v-voice .echorow:hover{background:var(--panel2)}
#v-voice .echorow:last-child{border-bottom:none}

/* ============ Briefing v3 (2026-07-14 audit rebuild) ============ */
.win-banner{font-size:12.5px;color:var(--muted);border:1px solid var(--line);
  border-radius:var(--radius);padding:8px 14px;margin:14px 0 4px;background:var(--panel2)}
/* sticky timeline banner (mockups-banner #4) -- briefing only, rides under
   the 64px sticky header */
.win-sticky{position:sticky;top:64px;z-index:25;background:rgba(255,255,255,.94);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
  border-bottom:1px solid var(--line);padding:8px 0 6px;margin:10px 0 8px}
.alltime-chip{display:inline-block;font-size:9.5px;font-weight:700;letter-spacing:.6px;
  text-transform:uppercase;color:var(--muted);border:1px solid var(--line);
  border-radius:999px;padding:1px 8px;margin-left:6px;vertical-align:middle}
#v-briefing .bchip .sub, #v-signal .bchip .sub{font-size:10.5px;color:var(--muted);margin-top:2px}
#v-briefing .alarm-next .sl{font-size:10px;font-weight:700;text-transform:uppercase;
  letter-spacing:1px;color:var(--muted)}
#v-briefing .alarm-row{display:flex;justify-content:space-between;gap:12px;
  padding:7px 2px;border-bottom:1px solid var(--line);cursor:pointer;font-size:12.5px}
#v-briefing .alarm-row:hover{background:var(--panel2)}
#v-briefing .alarm-row span{color:var(--muted);white-space:nowrap}
.method-note{font-size:11.5px;color:var(--muted);border-top:1px solid var(--line);
  margin-top:28px;padding:14px 0 30px;max-width:680px;line-height:1.5}
.copy-report{margin-left:auto;background:none;border:1px solid var(--line);color:var(--muted);
  border-radius:var(--radius);padding:2px 9px;font-size:9.5px;font-weight:700;cursor:pointer;
  text-transform:uppercase;letter-spacing:.6px;font-family:inherit}
.copy-report:hover{color:var(--text);border-color:var(--text)}
.brief-lede{font-size:16px;line-height:1.5;margin:0 0 6px}
.syn-chip-active{outline:2px solid var(--text);outline-offset:1px}
.prev-brief{border-left:2px solid var(--line);padding-left:12px;margin-top:8px}
/* butterfly split display (mockup idea 2, adopted 2026-07-14) */
.bf-row{display:flex;align-items:center;gap:8px;margin:3px 0}
.bf-lab{width:82px;text-align:right;font-size:10.5px;color:var(--muted);flex-shrink:0}
.bf-track{flex:1;display:flex;height:16px;position:relative;min-width:160px}
.bf-track .mid{position:absolute;left:50%;top:-3px;bottom:-3px;width:1.5px;background:#BBB;z-index:2}
.bf-l,.bf-r{height:100%;position:absolute;top:0;box-sizing:border-box}
.bf-l{right:50%;border-radius:3px 0 0 3px}
.bf-r{left:50%;border-radius:0 3px 3px 0}
.bf-delta{width:130px;font-size:11px;font-weight:700;flex-shrink:0}
.bf-cap{font-size:10.5px;color:var(--muted);margin-top:6px}
.post .meta .fromcard{font-weight:700;color:var(--muted);letter-spacing:.4px;text-transform:uppercase;font-size:10px}
.post-focus{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px;
  transition:outline-color 1.2s;background:var(--accent-soft)}
/* what-moved small multiples (idea 9) */
#v-briefing .sm-grid{display:flex;gap:12px;flex-wrap:wrap}
#v-briefing .sm{flex:1;min-width:210px;max-width:300px;border:1px solid var(--line);
  border-radius:var(--radius);padding:12px 14px;cursor:pointer}
#v-briefing .sm:hover{border-color:var(--muted)}
#v-briefing .sm .wl{font-size:12.5px;font-weight:700}
#v-briefing .sm-delta{font-size:11px;color:var(--muted);margin-top:6px;line-height:1.45}
/* signal explorer (full-page drawer replacement) */
#v-signal main{max-width:1240px;margin:0 auto;padding:28px 32px}
.sig-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:22px}
.sig-actions{display:flex;gap:16px;align-items:center;white-space:nowrap;padding-top:8px}
.sig-grid{display:grid;grid-template-columns:400px 1fr;gap:32px;align-items:start}
.sig-rail .bchips{display:flex;gap:8px;margin-bottom:12px}
.ctlrow{display:flex;gap:14px;font-size:10.5px;color:var(--muted);margin:4px 2px 8px}
.ctlrow span{cursor:pointer;padding-bottom:2px}
.ctlrow span.on{color:var(--text);font-weight:700;border-bottom:2px solid var(--accent)}
.filters{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px;align-items:center}
.pill{font-size:11px;border:1px solid var(--line);border-radius:999px;padding:4px 12px;cursor:pointer;background:#fff;color:var(--muted)}
.pill.on{background:var(--text);color:#fff;border-color:var(--text);font-weight:600}
.pill:hover{border-color:var(--text);color:var(--text)}
.pill.on:hover{color:#fff}
@media(max-width:980px){.sig-grid{grid-template-columns:1fr}}
/* explorer prior-vs-now table (mockup 9) */
.twin{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;font-size:12px}
.twin .tr{display:grid;grid-template-columns:1.1fr 1fr 1.1fr .8fr;border-top:1px solid var(--line)}
.twin .tr:first-child{border-top:none;background:var(--panel2);font-weight:700}
.twin .td{padding:7px 10px;border-left:1px solid var(--line)}
.twin .td:first-child{border-left:none;color:var(--muted)}
.twin .chg{font-weight:700}
.twin .chg-n{color:var(--neg);font-weight:700}
.twin .chg-p{color:var(--pos);font-weight:700}
/* briefing window strip (mockups-window2 variant C) */
#v-briefing .win-strip{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:var(--radius)}
#v-briefing .win-strip .cell{flex:1;padding:12px 16px;border-right:1px solid var(--line);font-size:12.5px;line-height:1.5}
#v-briefing .win-strip .cell:last-child{border-right:none}
#v-briefing .win-strip b{font-size:17px;font-weight:900;letter-spacing:-.3px}
/* one all-history cell in a range-following row: say so under it */
#v-briefing .win-strip .cell-note{font-size:9.5px;color:var(--faint);margin-top:4px;letter-spacing:.2px}
#v-briefing .win-strip .up{color:var(--pos)} #v-briefing .win-strip .down{color:var(--neg)} #v-briefing .win-strip .pink{color:var(--accent)}
.mini-t{font-size:10.5px;color:var(--muted);border-collapse:collapse;margin-top:3px}
.mini-t td{padding:0 8px 0 0}
.mini-t td:first-child{color:var(--faint)}
#v-briefing .thinmix{display:flex;height:7px;border-radius:3px;overflow:hidden;margin-top:10px}
#v-briefing .thinmix i{height:100%}
@media(max-width:900px){#v-briefing .win-strip{flex-wrap:wrap}#v-briefing .win-strip .cell{min-width:45%}}
/* day-by-day timeline: wide ranges scroll INSIDE this box, never the page */
#v-briefing .db-scroll{overflow-x:auto;overflow-y:hidden;max-width:100%;
  scrollbar-width:thin;scrollbar-color:#D4D4D4 transparent}
#v-briefing .db-scroll::-webkit-scrollbar{height:8px}
#v-briefing .db-scroll::-webkit-scrollbar-track{background:transparent}
#v-briefing .db-scroll::-webkit-scrollbar-thumb{background:#D4D4D4;border-radius:4px}
/* pinned lane-label gutter: the plot scrolls under it, a soft edge keeps the
   labels legible over whatever slides past */
#v-briefing .db-fig{display:flex;align-items:flex-start}
#v-briefing .db-gutter{position:sticky;left:0;z-index:2;flex:0 0 auto;background:#fff}
#v-briefing .db-gutter::after{content:"";position:absolute;top:0;right:-12px;width:12px;height:100%;
  background:linear-gradient(to right,#fff,rgba(255,255,255,0));pointer-events:none}
/* day-by-day calendar (briefing) */
#v-briefing .db-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
#v-briefing .db-cal .dh{font-size:9px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;color:var(--faint);text-align:center}
#v-briefing .dc{border:1px solid var(--line);border-radius:4px;padding:6px 8px 22px;min-height:86px;font-size:10px;position:relative}
#v-briefing .dc.ing{border-style:dashed}
#v-briefing .dc.empty{border-style:dashed;background:#FCFCFC;color:var(--faint)}
/* Day-by-day: a week the scope could not SERVE is a hole in the record --
   hatched, never drawn as a zero (design section 5, the -70% ghost). */
#v-briefing .dc.empty.gap{
  background:repeating-linear-gradient(45deg,#FBFBFB,#FBFBFB 4px,#ECECEC 4px,#ECECEC 8px);
  border-style:solid;border-top:3px solid #D4D4D4;color:var(--faint)}
#v-briefing .dc .dd{font-size:10px;font-weight:800;color:var(--muted)}
#v-briefing .dc .dt2{font-size:10px;font-weight:700;line-height:1.3;margin-top:3px}
#v-briefing .dc .dm{font-size:9px;color:var(--faint);position:absolute;bottom:5px;left:8px}
#v-briefing .dc .dmood{position:absolute;top:7px;right:7px;width:8px;height:8px;border-radius:50%}
#v-briefing .dc .dtag{position:absolute;bottom:5px;right:7px;font-size:7.5px;font-weight:700;letter-spacing:.5px;color:var(--faint);text-transform:uppercase}
#v-briefing .dc .dtag-in{font-size:7.5px;font-weight:700;letter-spacing:.5px;color:var(--faint);text-transform:uppercase;margin-left:3px}
#v-voice .echorow b{flex:1}
#v-voice .echorow .eb{width:120px;height:8px;background:var(--panel2);border-radius:2px;overflow:hidden}
#v-voice .echorow .eb i{display:block;height:100%;background:var(--muted)}
#v-voice .echorow .en{width:40px;text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}

/* ============ Captain Analyst (ported from v1) ============ */
.ask-fab{position:fixed;bottom:24px;right:24px;z-index:45;height:56px;padding:0 26px;
  border:none;border-radius:999px;background:hsl(330,100%,55%);color:#fff;
  font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:1.2px;
  font-family:inherit;cursor:pointer;box-shadow:0 8px 24px rgba(255,26,140,.3);
  transition:transform .12s}
.ask-fab:hover{transform:translateY(-1px)}
.ask-fab.active{background:#0A0A0A}
.ask-panel{position:fixed;top:0;right:0;width:min(480px,94vw);height:100vh;background:#fff;
  border-left:1px solid var(--line);z-index:60;display:flex;flex-direction:column;
  box-shadow:-16px 0 48px rgba(0,0,0,.16)}
.ask-panel.hidden{display:none}
.ask-head{display:flex;justify-content:space-between;align-items:center;gap:12px;
  padding:18px 20px;border-bottom:1px solid var(--line)}
.ask-title{font-size:18px;font-weight:900;letter-spacing:-.5px}
.ask-head-actions{display:flex;align-items:center;gap:10px}
.ask-newbtn{background:#fff;border:1px solid var(--line);color:var(--muted);
  border-radius:var(--radius);padding:6px 12px;font-size:10.5px;font-weight:700;cursor:pointer;
  text-transform:uppercase;letter-spacing:.8px;font-family:inherit}
.ask-newbtn:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}
.ask-newbtn:disabled{opacity:.4;cursor:default}
.ask-newbtn.active{color:var(--accent);border-color:var(--accent)}
#ask-close{background:transparent;border:none;color:var(--muted);font-size:18px;cursor:pointer;line-height:1}
#ask-close:hover{color:var(--text)}
.ask-tabs{display:flex;border-bottom:1px solid var(--line);flex:none}
.ask-tabs button{flex:1;background:#fff;border:none;border-right:1px solid var(--line);
  padding:11px 0;cursor:pointer;font-family:inherit;position:relative;
  font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;
  color:var(--muted);transition:color .12s,background .12s}
.ask-tabs button:last-child{border-right:none}
.ask-tabs button:hover{color:var(--text);background:var(--panel2)}
.ask-tabs button.active{color:var(--text)}
.ask-tabs button.active::after{content:"";position:absolute;left:0;right:0;bottom:-1px;
  height:2px;background:var(--accent)}
.ask-body{flex:1;overflow-y:auto;padding:16px 20px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.ask-body::-webkit-scrollbar{width:8px}
.ask-body::-webkit-scrollbar-track{background:transparent}
.ask-body::-webkit-scrollbar-thumb{background:var(--line)}
.ask-body::-webkit-scrollbar-thumb:hover{background:var(--faint)}
.ask-empty{padding:28px 18px;color:var(--muted);font-size:13px;line-height:1.5;text-align:center}
.ask-empty p{margin:0 0 8px;max-width:320px;margin-left:auto;margin-right:auto}
.ask-empty p:last-child{margin-bottom:0}
.ask-empty-title{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:1.4px;
  color:var(--faint);margin-bottom:10px}
.ask-type{flex:none;display:inline-block;padding:2px 7px;border:1px solid var(--line);
  font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.9px;
  color:var(--muted);background:#fff;margin-top:2px}
.ask-type.report{color:var(--accent);border-color:var(--accent)}
.ask-view-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.ask-view-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted)}
.ask-hist-list,.ask-recipe-list{display:flex;flex-direction:column;gap:0;
  border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.ask-hist-row{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;
  padding:12px 14px;border-bottom:1px solid var(--line);cursor:pointer;background:#fff}
.ask-hist-row:last-child{border-bottom:none}
.ask-hist-row:hover{background:var(--panel2)}
.ask-hist-main{min-width:0;flex:1}
.ask-hist-title{font-size:13px;font-weight:700;color:var(--text);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ask-hist-meta{font-size:11px;color:var(--muted);margin-top:4px}
.ask-hist-del{color:var(--faint);font-size:12px;cursor:pointer;padding:2px 6px;flex:none}
.ask-hist-del:hover{color:var(--neg)}
.ask-hist-del.confirm{color:var(--neg);font-weight:700;text-transform:uppercase;font-size:10px}
.ask-recipe-row{padding:12px 14px;border-bottom:1px solid var(--line);background:#fff}
.ask-recipe-row:last-child{border-bottom:none}
.ask-recipe-row-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.ask-recipe-main{min-width:0;flex:1}
.ask-recipe-name{font-size:13px;font-weight:700;color:var(--text)}
.ask-recipe-desc{font-size:12px;color:var(--muted);margin-top:3px}
.ask-recipe-hint{font-size:11px;color:var(--faint);margin-top:5px;font-style:italic;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ask-recipe-actions{display:flex;gap:6px;align-items:center;flex:none}
.ask-recipe-actions button{background:#fff;border:1px solid var(--line);color:var(--muted);
  border-radius:var(--radius);padding:4px 10px;font-size:10px;font-weight:700;cursor:pointer;
  text-transform:uppercase;letter-spacing:.6px;font-family:inherit}
.ask-recipe-actions button:hover{color:var(--accent);border-color:var(--accent)}
.ask-run-form{margin-top:10px;display:flex;flex-direction:column;gap:8px;
  background:var(--panel2);border:1px solid var(--line);border-radius:var(--radius);padding:10px}
.ask-run-field{display:flex;flex-direction:column;gap:3px}
.ask-run-field label{font-size:10px;text-transform:uppercase;letter-spacing:.8px;color:var(--muted)}
.ask-run-input{background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:6px 8px;font-size:12px;font-family:inherit;color:var(--text)}
.ask-run-actions{display:flex;gap:8px;align-items:center;margin-top:2px}
.ask-run-go{padding:6px 14px!important;font-size:11px!important;margin-left:0!important}
.ask-run-deep:hover{color:var(--accent);border-color:var(--accent)}
.ask-recipe-form{display:flex;flex-direction:column;gap:10px}
.ask-recipe-form label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1px;color:var(--muted)}
.ask-recipe-form input,.ask-recipe-form textarea{background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:8px 10px;font-size:13px;font-family:inherit;color:var(--text);resize:vertical}
.ask-recipe-params{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--line);padding-top:10px}
.ask-param-row{display:flex;align-items:center;gap:8px}
.ask-param-name{font-size:11px;color:var(--faint);min-width:110px;font-variant-numeric:tabular-nums}
.ask-param-row input{flex:1}
.ask-recipe-form-actions{display:flex;gap:8px;margin-top:4px}
.ask-audit{margin-top:8px;font-size:9.5px;color:var(--faint);letter-spacing:.3px;opacity:.85}
.ask-msg{font-size:13.5px;line-height:1.55;margin-bottom:14px}
.ask-msg p{margin:0 0 10px}
.ask-msg p:last-child{margin-bottom:0}
.ask-msg ul{margin:0 0 10px;padding-left:18px}
.ask-msg ol{margin:0 0 10px;padding-left:20px}
.ask-msg.user{background:var(--panel2);border-radius:var(--radius);padding:10px 14px;
  margin-left:14%;color:var(--text)}
.ask-msg.assistant{border-top:1px solid var(--line);padding-top:12px;color:var(--text)}
.ask-msg.assistant:first-child{border-top:none;padding-top:0}
.ask-status{color:var(--muted);font-size:11px;font-weight:600;text-transform:uppercase;
  letter-spacing:1px;margin-top:8px;border-left:2px solid var(--accent);padding-left:9px}
.ask-error{color:var(--muted);font-size:12.5px;margin-top:6px;font-style:italic}
.ask-cursor{display:inline-block;width:7px;height:13px;background:var(--accent);
  margin-left:2px;vertical-align:middle;animation:ask-blink 1s step-end infinite}
@keyframes ask-blink{50%{opacity:0}}
.ask-flag{display:block;margin:8px 0;padding:6px 10px;border:1px solid var(--accent);
  border-radius:var(--radius);background:var(--accent-soft);color:var(--accent);font-size:11.5px}
.ask-flag b{font-weight:800;text-transform:uppercase;letter-spacing:.6px;margin-right:6px}
.cite-chip{display:inline-block;background:var(--panel2);border:1px solid var(--line);
  border-radius:2px;padding:0 4px;font-size:10px;font-weight:700;color:var(--accent);
  cursor:pointer;margin:0 1px}
.cite-chip:hover{border-color:var(--accent)}
.ask-sources{margin-top:12px;padding-top:10px;border-top:1px solid var(--line)}
.ask-src-hdr{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;
  color:var(--muted);margin-bottom:8px}
.ask-src-row{display:flex;align-items:baseline;gap:8px;padding:4px 0;font-size:12px;
  color:var(--text);text-decoration:none}
a.ask-src-row:hover .ask-src-label{text-decoration:underline}
.ask-src-num{color:var(--muted);font-variant-numeric:tabular-nums;flex:none}
.ask-src-label{color:var(--text)}
.ask-composer{display:flex;flex-direction:column;gap:9px;padding:14px 20px 16px;
  border-top:1px solid var(--line);flex:none;background:#fff}
.ask-input{width:100%;resize:none;min-height:44px;max-height:120px;overflow-y:auto;background:#fff;
  border:1px solid var(--line);border-radius:var(--radius);padding:11px 12px;
  font-size:13.5px;font-family:inherit;color:var(--text);line-height:1.45;
  scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.ask-input:focus{outline:none;border-color:var(--text)}
.ask-input:disabled{background:var(--panel2);color:var(--faint)}
.ask-mode-row{display:flex;align-items:center;gap:8px}
.ask-mode-chip{display:inline-flex;align-items:center;gap:7px;background:#fff;
  border:1px solid var(--line);border-radius:var(--radius);padding:6px 11px;cursor:pointer;
  font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.9px;
  color:var(--muted);font-family:inherit;transition:all .12s}
.ask-mode-dot{width:7px;height:7px;border:1px solid var(--faint);background:transparent;
  flex:none;transition:all .12s}
.ask-mode-chip:hover{color:var(--text);border-color:var(--text)}
.ask-mode-chip.active{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}
.ask-mode-chip.active .ask-mode-dot{background:var(--accent);border-color:var(--accent)}
.ask-iconbtn{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);color:var(--muted);
  cursor:pointer;font-family:inherit;padding:0}
.ask-iconbtn:hover:not(:disabled){color:var(--accent);border-color:var(--accent)}
.ask-iconbtn:disabled{opacity:.35;cursor:default}
.ask-send{margin-left:auto;background:#0A0A0A;color:#fff;border:none;border-radius:var(--radius);
  padding:9px 18px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;
  cursor:pointer;font-family:inherit;white-space:nowrap}
.ask-send:hover:not(:disabled){background:var(--accent)}
.ask-send:disabled{opacity:.4;cursor:default}
.ask-deep-explain{font-size:11.5px;color:var(--muted);line-height:1.4}
.ask-deep-explain.hidden{display:none}
.ask-report-running{animation:ask-pulse 1.4s ease-in-out infinite}
@keyframes ask-pulse{0%,100%{opacity:1}50%{opacity:.4}}
.ask-report-err{color:var(--accent);border-color:var(--accent)}
.ask-report-title{font-size:16px;font-weight:800;letter-spacing:-.3px;margin:2px 0 4px}
.ask-report-meta{font-size:11px;color:var(--muted);margin-bottom:14px}
.ask-report-body{border-top:none;padding-top:0}
.ask-deep-status{padding:8px 20px 0;font-size:11.5px;color:var(--accent)}
.ask-deep-status.hidden{display:none}
.ask-h1,.ask-h2{font-size:14.5px;font-weight:900;letter-spacing:-.3px;margin:14px 0 6px}
.ask-h3,.ask-h4{font-size:12.5px;font-weight:800;text-transform:uppercase;letter-spacing:.8px;margin:12px 0 5px}
.ask-msg .ask-h1:first-child,.ask-msg .ask-h2:first-child,.ask-msg .ask-h3:first-child{margin-top:0}
.ask-hr{border:none;border-top:1px solid var(--line);margin:12px 0}
/* file attachments in composer */
.ask-files{display:flex;flex-wrap:wrap;gap:6px}
.ask-files:empty{display:none}
.ask-file-chip{display:inline-flex;align-items:center;gap:7px;font-size:11px;font-weight:600;
  border:1px solid var(--line);border-radius:2px;background:var(--panel2);color:var(--text);padding:4px 8px}
.ask-file-chip .afc-x{cursor:pointer;color:var(--faint);font-weight:700}
.ask-file-chip .afc-x:hover{color:var(--neg)}
.ask-file-chip .afc-meta{color:var(--faint);font-weight:400}
.ask-file-chip.pending{opacity:.55}

/* ============ responsive ============ */
@media(max-width:1280px){
  header{gap:14px;padding:0 18px}
  nav#tabs button{padding:12px 10px 10px}
  .asof{display:none}
  /* Tighten triage chrome; keep queue + deck side-by-side on laptop widths */
  #v-triage main{padding:22px 20px 48px;gap:22px;grid-template-columns:260px minmax(0,1fr)}
}
@media(max-width:1100px){
  /* Queue stays a sidebar (was stacking at 1100 — still very wide). */
  #v-triage main{grid-template-columns:220px minmax(0,1fr);gap:16px;padding:20px 16px 40px}
  #v-triage .deckhead h1{font-size:24px}
  #v-triage .stats{grid-template-columns:repeat(3,1fr)}
  #v-triage .stat:nth-child(3n){border-right:none}
  #v-trends .facets{grid-template-columns:repeat(2,1fr)}
  #v-explore .layout{grid-template-columns:1fr}
  #v-voice .qgrid,#v-voice .asklist{grid-template-columns:1fr}
  #v-briefing .quotes,#v-briefing .wins{grid-template-columns:1fr}
  #v-trends .sumband{grid-template-columns:repeat(2,1fr)}
}
/* True single-column only when the deck can't share the row comfortably */
@media(max-width:780px){
  #v-triage main{grid-template-columns:1fr;gap:20px}
  #v-triage .qlist{max-height:220px}
  #v-triage .deckhead .progress{margin-left:0;width:100%}
}
@media(max-width:640px){
  /* Captain pill overlapped body text at phone widths (audit B8): shrink to
     an icon-only corner FAB that never intersects the text column. */
  .ask-fab{height:48px;width:48px;padding:0;font-size:0;bottom:16px;right:16px}
  .ask-fab::after{content:"\2693";font-size:20px;letter-spacing:0}
  /* legibility floors: keep KPI numbers and axis-ish text readable instead
     of scaling them down with the column */
  #v-briefing .bchip .v{font-size:17px}
  #v-briefing .bchip .l,#v-briefing .bchip .sub{font-size:10px}
  #v-briefing .brief{padding-left:14px}
  #v-briefing .bchips{flex-wrap:wrap}
}

/* ---------- auth gate (Clerk sign-in overlay) ---------- */
#auth-gate{display:none;position:fixed;inset:0;z-index:400;background:var(--bg);
  flex-direction:column;align-items:center;justify-content:center;gap:26px}
#auth-gate.on{display:flex}
#auth-gate .auth-brand{font-size:26px;font-weight:900;letter-spacing:-.5px;color:var(--text)}
#auth-gate .auth-brand span{color:var(--accent)}
#auth-gate .auth-err{font-size:13px;color:var(--neg);padding:14px 18px;border:1px solid var(--line);border-radius:var(--radius)}
header #user-btn{display:flex;align-items:center;margin-left:10px}

/* ---------- global data-health strip (war-room C1/C13/C26) ---------- */
#health-strip{font-size:11.5px;padding:5px 28px;border-bottom:1px solid var(--line);letter-spacing:.1px}
#health-strip.hidden{display:none}
#health-strip.hs-info{color:var(--muted);background:var(--panel2)}
#health-strip.hs-warn{color:var(--warn);background:var(--warn-bg);font-weight:600}
#health-strip.hs-crit{color:#fff;background:var(--neg);font-weight:700}

/* ============ 2b ALARMS (preview) ============ */
#v-alarms main{max-width:1300px;margin:0 auto;padding:30px 32px 60px}
#v-alarms .al-title{font-size:28px;font-weight:900;letter-spacing:-1.4px;margin:0 0 12px}
#v-alarms .al-title span{color:var(--accent);font-size:11px;font-weight:800;letter-spacing:1.4px;
  text-transform:uppercase;vertical-align:6px;margin-left:6px}
/* quiet beta banner — hs-info idiom */
#v-alarms .al-banner{font-size:11.5px;color:var(--muted);background:var(--panel2);
  border:1px solid var(--line);border-radius:var(--radius);padding:8px 14px;margin-bottom:22px;letter-spacing:.1px}
#v-alarms .al-h{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:1.6px;color:var(--muted);
  margin:34px 0 4px;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
#v-alarms .al-h::before{content:"";width:22px;height:2px;background:var(--text);align-self:center;flex:none}
#v-alarms .al-h.urgent::before{background:var(--neg)}
#v-alarms .al-h.standing::before{background:var(--muted)}
#v-alarms .al-week{font-size:11px;font-weight:600;text-transform:none;letter-spacing:.3px;color:var(--faint)}
#v-alarms .al-hsub{font-size:11px;font-weight:500;text-transform:none;letter-spacing:0;color:var(--faint)}
#v-alarms .al-def{font-size:12px;color:var(--muted);margin:0 0 14px;padding-left:34px;max-width:78ch}
#v-alarms .al-sect{margin-bottom:8px}
#v-alarms .al-empty{border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted);
  padding:26px;text-align:center;font-size:13px}
#v-alarms .al-cards{display:grid;gap:12px}
/* card idiom: thin border + left accent bar (red-ish urgent, neutral standing) */
#v-alarms .al-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;
  padding:16px 20px;position:relative}
#v-alarms .al-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:3px 0 0 3px}
#v-alarms .al-card.urgent::before{background:var(--neg)}
#v-alarms .al-card.standing::before{background:var(--neu)}
#v-alarms .al-card.info::before{background:var(--line)}
#v-alarms .al-lead{font-size:16px;font-weight:800;letter-spacing:-.4px;line-height:1.3}
#v-alarms .al-raised{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.8px;
  color:var(--muted);margin-left:10px}
#v-alarms .al-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:9px}
#v-alarms .al-chip{font-size:10.5px;font-weight:600;letter-spacing:.3px;padding:3px 9px;border-radius:2px;
  background:var(--panel2);color:var(--muted)}
#v-alarms .al-chip.pos{background:var(--pos-bg);color:var(--pos)}
#v-alarms .al-chip.neg{background:var(--neg-bg);color:var(--neg)}
#v-alarms .al-chip.lift{background:var(--warn-bg);color:var(--warn)}
#v-alarms .al-chip.al-threadlink{cursor:pointer;border:1px solid var(--line);color:var(--accent)}
#v-alarms .al-chip.al-threadlink:hover{background:var(--accent);color:#fff}
#v-alarms .al-chip.newtopic{background:var(--accent);color:#fff;font-weight:800;
  text-transform:uppercase;letter-spacing:.8px;font-size:9.5px}
#v-alarms .al-members{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
#v-alarms .al-mchip{font-size:11px;border:1px solid var(--line);border-radius:2px;padding:2px 8px;background:#fff}
#v-alarms .al-mchip b{font-variant-numeric:tabular-nums;color:var(--neg)}
#v-alarms .al-quotes{margin-top:12px}
#v-alarms .al-quote{font-size:13px;color:#333;border-left:2px solid var(--line);
  padding:2px 0 2px 14px;margin:0 0 9px;font-style:italic;overflow-wrap:anywhere;word-break:break-word}
#v-alarms .al-quote:last-child{margin-bottom:0}
#v-alarms .al-qattr{display:block;font-style:normal;font-size:11px;color:var(--faint);margin-top:3px;
  display:flex;gap:8px;align-items:center}
#v-alarms .al-qattr a{color:var(--accent);text-decoration:none;font-weight:600;font-size:11px}
#v-alarms .al-qattr a:hover{text-decoration:underline}
/* expandables (#1 story complex, recently-cleared) ride on <details> */
#v-alarms details summary{cursor:pointer;list-style:none;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
#v-alarms details summary::-webkit-details-marker{display:none}
#v-alarms .al-morelink{font-size:11px;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:var(--accent);white-space:nowrap}
#v-alarms .al-card.complex details[open] .al-morelink{display:none}
#v-alarms .al-cleared{margin-top:16px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:10px 16px}
#v-alarms .al-cleared summary{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.2px;color:var(--muted)}
#v-alarms .al-clearrow{display:flex;align-items:baseline;gap:10px;padding:7px 0;border-top:1px solid var(--line);
  font-size:12.5px;margin-top:4px;flex-wrap:wrap}
#v-alarms .al-clearrow:first-of-type{margin-top:10px}
#v-alarms .al-clearrow span{font-size:11px;color:var(--faint)}
#v-alarms .al-info-body{font-size:13px;color:var(--muted);margin-top:8px;max-width:70ch;line-height:1.5}
#v-alarms .al-filters{display:flex;gap:8px;margin:0 0 14px;padding-left:34px}
#v-alarms .al-filters button{font:inherit;font-size:12px;font-weight:600;border:1px solid var(--line);
  background:#fff;color:var(--muted);border-radius:2px;padding:5px 12px;cursor:pointer}
#v-alarms .al-filters button.on{border-color:var(--text);color:var(--text);background:var(--panel2)}
#v-alarms .al-filters button b{font-variant-numeric:tabular-nums;margin-left:4px}
#v-alarms .al-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px}
#v-alarms .al-btn{font:inherit;font-size:12px;font-weight:700;letter-spacing:.2px;border-radius:2px;
  padding:6px 12px;cursor:pointer;border:1px solid var(--line);background:#fff;color:var(--text)}
#v-alarms .al-btn.al-handle{background:var(--text);color:#fff;border-color:var(--text)}
#v-alarms .al-btn.al-handle:hover{background:var(--pos);border-color:var(--pos)}
#v-alarms .al-btn.al-undo{color:var(--muted)}
#v-alarms .al-btn.al-follow{color:var(--muted)}
#v-alarms .al-btn:disabled{opacity:.5;cursor:wait}
#v-alarms .al-chip.handled{background:var(--pos-bg);color:var(--pos)}
#v-alarms .al-chip.follow{background:var(--warn-bg);color:var(--warn)}
#v-alarms .al-chip.standing-link{background:var(--panel2);color:var(--text);text-decoration:none}
#v-alarms .al-chip.ontrack{background:var(--warn-bg);color:var(--warn)}
#v-alarms .al-chip.fireonly{background:var(--panel2);color:var(--muted)}
#v-alarms a.al-chip.standing-link:hover{background:var(--text);color:#fff}
#v-alarms a.al-mchip{text-decoration:none;color:inherit}
#v-alarms a.al-mchip:hover{border-color:var(--accent);color:var(--accent)}
#v-alarms .al-card.is-handled{background:var(--panel2)}
#v-alarms .al-writehint{font-size:12px;color:var(--muted);padding-left:34px;margin:0 0 12px}
#v-alarms a.al-lead{color:inherit;text-decoration:none}
#v-alarms a.al-lead:hover{color:var(--accent)}
#v-alarms .al-back{display:inline-block;font-size:12px;font-weight:700;color:var(--accent);
  text-decoration:none;margin:0 0 10px}
#v-alarms .al-back:hover{text-decoration:underline}
#v-alarms .al-threads{display:grid;gap:14px}
#v-alarms .al-thread{border:1px solid var(--line);border-radius:var(--radius);
  background:#fff;padding:14px 16px}
#v-alarms .al-thread.is-seen{background:var(--panel2)}
#v-alarms .al-thread-main{min-width:0}
#v-alarms .al-thread-title{font-size:14px;font-weight:700;line-height:1.35;margin:0 0 4px}
#v-alarms .al-thread-block{margin-top:12px}
#v-alarms .al-thread-lbl{font-size:10px;font-weight:700;letter-spacing:.8px;text-transform:uppercase;
  color:var(--muted);margin:0 0 4px}
#v-alarms .al-thread-lblrow{display:flex;align-items:center;gap:10px;margin:0 0 4px}
#v-alarms .al-thread-lblrow .al-thread-lbl{margin:0}
#v-alarms .al-open{font-size:11px;font-weight:700;color:var(--accent);text-decoration:none}
#v-alarms .al-open:hover{text-decoration:underline}
#v-alarms .al-thread-sum,#v-alarms .al-thread-raw{font-size:13.5px;line-height:1.5;
  white-space:pre-wrap;overflow:visible;word-break:break-word}
#v-alarms .al-thread-raw{font-size:13px;color:var(--text)}
#v-alarms .al-thread-empty{color:var(--faint);font-style:italic}
#v-alarms .al-thread-meta{display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  font-size:11px;color:var(--faint);margin-top:4px}
#v-alarms .al-thread-note{display:flex;align-items:center;gap:10px;margin-top:12px}
#v-alarms .al-thread-note .al-note{flex:1;min-width:0;max-width:520px;margin-top:0}
#v-alarms .al-thread-note .al-seen{flex:none}
#v-alarms .al-note{display:block;width:100%;max-width:520px;margin-top:8px;font:inherit;
  font-size:12.5px;border:1px solid var(--line);border-radius:2px;padding:5px 8px}
#v-alarms .al-note-ro{margin-top:0;font-size:12.5px;color:var(--muted);flex:1}
#v-alarms a.al-threadlink{text-decoration:none}

/* ---- Alarms timeline board (approved design, previews/mockups/m05.html) ----
   Standing episodes as tracks across 13 week columns (12 complete + the week
   in progress); fires as diamonds on the sliding last-7-days strip. */
#v-alarms .alt-board{border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow-x:auto;margin-top:6px}
#v-alarms .alt-grid{min-width:980px}
#v-alarms .alt-row{display:grid;grid-template-columns:225px repeat(13,1fr) 130px;align-items:center;border-bottom:1px solid var(--line)}
#v-alarms .alt-row:last-child{border-bottom:none}
#v-alarms .alt-row[hidden]{display:none}
#v-alarms .alt-row.alt-head{background:var(--panel2)}
#v-alarms .alt-row.alt-mband{border-bottom:none;background:#fff}
/* month ruler drawn to TRUE calendar extents: boundary lines land where the
   1st actually falls -- mid-column when mid-week */
#v-alarms .alt-mruler{grid-column:2/15;position:relative;height:22px}
#v-alarms .alt-mblk{position:absolute;top:0;bottom:0;display:flex;align-items:center;justify-content:center;
  font-size:9px;font-weight:800;letter-spacing:1.4px;text-transform:uppercase;color:var(--faint);
  border-left:1px solid #D8D8D8;overflow:hidden;white-space:nowrap}
#v-alarms .alt-mblk:first-child{border-left:none}
/* faint ticks in the week header = where the counting rule breaks the month
   (whole weeks, each assigned to the month of its ISO Thursday) */
#v-alarms .alt-row.alt-head .alt-wk.mstart{border-left:1px solid var(--line)}
#v-alarms .alt-wk{font-size:9px;font-weight:700;letter-spacing:.5px;color:var(--muted);text-align:center;padding:8px 0;text-transform:uppercase}
#v-alarms .alt-wk.now{color:var(--text)}
#v-alarms .alt-lblh{padding:8px 14px;font-size:9.5px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;color:var(--muted)}
#v-alarms .alt-lbl{grid-column:1;padding:8px 12px 8px 14px;font-size:12px;font-weight:700;line-height:1.3;
  border-right:1px solid var(--line);display:flex;align-items:center;gap:10px;align-self:stretch}
#v-alarms .alt-lbl .lt{flex:1;min-width:0}
#v-alarms .alt-lbl a.alt-titlelink{color:inherit;text-decoration:underline;text-decoration-color:var(--line);
  text-underline-offset:2px}
#v-alarms .alt-lbl a.alt-titlelink:hover{color:var(--accent);text-decoration-color:var(--accent)}
#v-alarms .alt-open{flex:none;font-size:8.5px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;
  color:var(--accent);background:#fff;border:1px solid var(--accent);border-radius:2px;
  padding:1px 6px;text-decoration:none}
#v-alarms .alt-open:hover{color:#fff;background:var(--accent)}
#v-alarms .alt-drillhint{font-size:11.5px;color:var(--muted);margin:10px 0 0}
#v-alarms .alt-lbl .m{display:block;font-size:9.5px;font-weight:500;color:var(--muted)}
#v-alarms .alt-lbl .m .al-chip{font-size:8.5px;padding:0 5px;margin-left:2px;vertical-align:1px}
#v-alarms .alt-lbl.f{color:var(--neg)}
#v-alarms .alt-row.alt-section{background:var(--panel2)}
#v-alarms .alt-slbl{padding:8px 14px;font-size:9.5px;font-weight:800;letter-spacing:1.1px;text-transform:uppercase;
  color:var(--muted);display:flex;align-items:center;gap:14px}
#v-alarms .alt-slbl>span:first-child{flex:none}
#v-alarms .alt-filters{margin-left:auto;display:flex;gap:6px}
#v-alarms .alt-filters button{font:inherit;font-size:9px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;
  color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:2px;padding:2px 8px;cursor:pointer}
#v-alarms .alt-filters button.on{color:#fff;background:var(--text);border-color:var(--text)}
#v-alarms .alt-empty{padding:12px 14px;font-size:12px;color:var(--muted)}
#v-alarms .alt-cellbg{grid-row:1;height:100%;min-height:34px;border-right:1px dotted #F0F0F0;align-self:stretch}
#v-alarms .alt-firecol{grid-row:1;grid-column:15;border-left:2px solid var(--neg);min-height:34px;align-self:stretch;
  display:flex;align-items:center;justify-content:center}
#v-alarms .alt-row.alt-head .alt-firecol{background:var(--neg-bg);color:var(--neg);font-size:8.5px;
  font-weight:800;letter-spacing:.6px;text-transform:uppercase;text-align:center;padding:6px 4px;line-height:1.3;min-height:0}
#v-alarms .alt-fmark{width:11px;height:11px;background:var(--neg);transform:rotate(45deg)}
#v-alarms .alt-bar{grid-row:1;height:12px;border-radius:2px;background:var(--text);margin:0 2px;position:relative;align-self:center;z-index:1}
#v-alarms .alt-bar.open::after{content:"";position:absolute;right:-2px;top:2px;width:8px;height:8px;background:var(--text);
  clip-path:polygon(0 0,100% 50%,0 100%)}
#v-alarms .alt-bar .wks{position:absolute;right:1px;top:100%;font-size:8.5px;line-height:11px;font-weight:600;
  color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
#v-alarms .alt-bar .ops{position:absolute;left:1px;top:100%;font-size:8.5px;line-height:11px;font-weight:600;
  color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
#v-alarms .alt-bar .rz{position:absolute;left:-4px;top:50%;transform:translateY(-50%);width:9px;height:9px;border-radius:50%;
  background:var(--warn);border:1.5px solid #fff;box-shadow:0 0 0 1px var(--warn)}
/* the 2 qualifying complete weeks that opened the episode; ends under the raise dot */
#v-alarms .alt-qz{grid-row:1;height:5px;border-radius:2px;background:var(--warn);margin:0 2px;align-self:center;z-index:0;opacity:.9;position:relative}
/* narrow bars (<=2 wks): count sits wholly LEFT of the run-up underline with a
   clear gap -- flush with nothing, so placement reads as a space fix, not meaning */
#v-alarms .alt-qz .ops{position:absolute;right:calc(100% + 8px);top:6px;font-size:8.5px;line-height:11px;
  font-weight:600;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
/* handled rows: present but visually stood down */
#v-alarms .alt-row.hd .alt-lbl.f{color:#C77}
#v-alarms .alt-row.hd .alt-fmark{opacity:.45}
#v-alarms .alt-row.cl .alt-bar{background:#C9C9C9}
#v-alarms .alt-row.cl .alt-bar .rz{background:#D9B98F;box-shadow:0 0 0 1px #C09A5F}
#v-alarms .alt-row.cl .alt-bar .wks{color:var(--faint)}
#v-alarms .alt-row.cl .alt-qz{background:#D9B98F}
#v-alarms .alt-clr{grid-row:1;justify-self:center;align-self:center;width:9px;height:9px;border-radius:50%;
  border:2px solid var(--pos);background:#fff}
#v-alarms .alt-sumbtn{flex:none;font-size:8.5px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;
  color:var(--muted);background:var(--panel2);border:1px solid var(--line);border-radius:2px;
  padding:1px 6px;cursor:pointer}
#v-alarms .alt-sumbtn:hover{color:var(--accent);border-color:var(--accent)}
#v-alarms .alt-sumbtn.on{color:#fff;background:var(--text);border-color:var(--text)}
#v-alarms .alt-row.alt-sumrow{background:#FBFAF8}
#v-alarms .alt-sumcap{grid-column:1;padding:10px 14px;font-size:9px;font-weight:800;letter-spacing:.8px;
  text-transform:uppercase;color:var(--faint);border-right:1px solid var(--line);align-self:stretch;line-height:1.5}
#v-alarms .alt-sumcap .sstats{margin-top:8px}
#v-alarms .alt-sumcap .sstat{font-size:11px;font-weight:700;letter-spacing:0;text-transform:none;color:var(--text);
  line-height:1.6;font-variant-numeric:tabular-nums;white-space:nowrap}
#v-alarms .alt-sumcap .sstat a{color:inherit}
#v-alarms .alt-sumpanel{grid-column:2/15;padding:9px 16px 13px;align-self:start}
#v-alarms .alt-sumpanel .meta{font-size:10.5px;color:var(--muted);font-variant-numeric:tabular-nums;margin-bottom:7px}
#v-alarms .alt-sumpanel .sumtext{font-size:12.5px;line-height:1.65;max-width:94ch}
#v-alarms .alt-sumpanel .nosum{font-size:12px;color:var(--muted);font-style:italic}
#v-alarms .alt-sumpanel .al-quotes{margin-top:4px}
#v-alarms .alt-sumpanel .al-actions{margin-top:10px}
#v-alarms .alt-row.alt-sumrow .alt-firecol{min-height:0}
#v-alarms .alt-keyrow{display:flex;flex-wrap:wrap;gap:20px;font-size:11.5px;color:var(--muted);margin-top:14px;align-items:center}
#v-alarms .alt-keyrow .k{display:flex;align-items:center;gap:7px}
#v-alarms .alt-keyrow .sw{display:inline-block;width:22px;height:11px;border-radius:2px;background:var(--text)}
#v-alarms .alt-keyrow .sw.cl{background:#C9C9C9}
#v-alarms .alt-keyrow .swq{display:inline-block;width:22px;height:5px;border-radius:2px;background:var(--warn)}
#v-alarms .alt-keyrow .dotk{width:9px;height:9px;border-radius:50%;background:var(--warn);border:1.5px solid #fff;box-shadow:0 0 0 1px var(--warn)}
#v-alarms .alt-keyrow .dotc{width:9px;height:9px;border-radius:50%;border:2px solid var(--pos);background:#fff}
#v-alarms .alt-keyrow .diak{width:10px;height:10px;background:var(--neg);transform:rotate(45deg)}
#v-alarms .alt-smallnote{font-size:11px;color:var(--faint);margin-top:16px;line-height:1.5;max-width:110ch}

/* ---- data coverage page + health-strip lag chrome (PR4c) ---- */
#health-strip .hs-lag{font-weight:700}
#health-strip .hs-bubble{display:inline-block;margin-left:6px;padding:1px 7px;border-radius:10px;
  border:1px solid currentColor;font-size:10.5px;font-weight:700;cursor:help;white-space:nowrap}
#health-strip .xlink{margin-left:8px;font-size:11.5px}
#v-coverage main{padding:26px 30px 60px;max-width:1240px}
#v-coverage .cov-sub{font-size:12.5px;color:var(--muted);line-height:1.6;max-width:92ch;margin:6px 0 20px}
#v-coverage table{border-collapse:collapse;font-size:12px;width:100%}
#v-coverage th{font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);
  font-weight:600;text-align:left;padding:0 8px 8px;white-space:nowrap}
#v-coverage td{padding:6px 8px;border-top:1px solid var(--line);vertical-align:middle;white-space:nowrap}
#v-coverage td.src{font-weight:700}
#v-coverage .cov-strip{display:flex;gap:2px}
#v-coverage .cw{width:11px;height:17px;border-radius:2px;background:#EDEDED}
#v-coverage .cw.on{background:#7DBFA0}
#v-coverage .cw.hi{background:#0F7A52}
/* U4: absence is GREY, here and on the full-history strip below -- the same
   fact must not be pink in one table and grey in the other, and pink read as
   "something is wrong" for a week that simply has not been uploaded yet. Pink
   and red are now reserved for unrecognised exports and failed files, which
   ARE wrong. */
#v-coverage .cw.gap{background:#EDEDED}
#v-coverage .beh{font-variant-numeric:tabular-nums}
#v-coverage .beh.warn{color:var(--neg);font-weight:700}
#v-coverage .cov-key{display:flex;gap:20px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);
  margin-top:18px;align-items:center}
#v-coverage .cov-key .k{display:flex;align-items:center;gap:7px}
#v-coverage .cov-note{font-size:11.5px;color:var(--faint);margin-top:16px;line-height:1.6;max-width:104ch}
/* this one carries its own leading arrow; .xlink::after would double it */
#v-coverage #cov-back::after{content:""}

/* ---- manual Sprinklr upload card (allowlisted operators only) ---- */
/* Sits above the coverage grid: the gap is spotted here, so the fix drops
   here. Deliberately quiet chrome -- this is an ops tool on a diagnostic
   page, not a promoted feature. */
#v-coverage .up-card{border:1px solid var(--line);border-radius:var(--radius);
  padding:18px 20px;margin:0 0 26px;background:var(--panel)}
#v-coverage .up-h{font-size:13px;font-weight:800;letter-spacing:-.2px}
#v-coverage .up-sub{font-size:12px;color:var(--muted);line-height:1.6;max-width:88ch;margin:5px 0 0}
#v-coverage .up-drop{margin-top:14px;padding:22px;border:1px dashed var(--neu);
  border-radius:var(--radius);text-align:center;font-size:12.5px;color:var(--muted);
  cursor:pointer;background:#FCFCFC;transition:border-color .12s,background .12s}
#v-coverage .up-drop:hover,#v-coverage .up-drop:focus-visible,
#v-coverage .up-drop.over{border-color:var(--accent);background:var(--accent-soft);outline:none}
#v-coverage .up-drop.hide{display:none}
#v-coverage .up-state{margin-top:14px}
#v-coverage .up-verify{border-top:1px solid var(--line);padding-top:14px}
#v-coverage .up-tbl{width:100%;margin:10px 0 4px}
#v-coverage .up-tbl td{white-space:normal}
#v-coverage .up-org{display:block;font-size:11px;color:var(--faint);font-weight:400}
/* U1: the verify-card flags live inside td.src, which is uppercase, tracked
   and 11px for file names. Sentences inherited all three and rendered as
   "EXACTLY 10,000 ROWS - LIKELY TRUNCATED, RE-EXPORT A SMALLER RANGE." --
   shouting the one message the operator most needs to read calmly. Reset the
   inherited type here rather than moving the markup. */
#v-coverage td.src .up-flag,#v-coverage td.src .up-org,
#v-coverage td.src .up-chip{text-transform:none;letter-spacing:normal}
#v-coverage td.src .up-flag{color:var(--text)}
#v-coverage .up-flag{font-size:11.5px;line-height:1.5;margin-top:5px;padding:4px 8px;
  border-radius:var(--radius);white-space:normal;max-width:64ch;font-weight:600}
#v-coverage .up-flag.bad{color:var(--neg);background:var(--neg-bg)}
#v-coverage .up-flag.info{color:var(--muted);background:var(--panel2);font-weight:400}
#v-coverage .up-note{font-size:11.5px;color:var(--muted);line-height:1.6;margin-top:6px;max-width:96ch}
/* U8: the per-upload 26-week overlay ("this upload fills") was removed --
   .up-tl / .uw went with it. .up-tl-key below is still the shared legend row
   used by the full-history strip. */
#v-coverage .up-tl-key{display:flex;gap:18px;flex-wrap:wrap;font-size:11.5px;
  color:var(--muted);margin-top:8px;align-items:center}
#v-coverage .up-tl-key .k{display:flex;align-items:center;gap:7px}
#v-coverage .up-tl-key .k.warn{color:var(--warn)}
#v-coverage .up-tl-key .sw{width:11px;height:11px;border-radius:2px}
#v-coverage .up-tl-key .sw.have{background:#D9D9D9}
#v-coverage .up-tl-key .sw.add{background:#0F7A52}
#v-coverage .up-tl-key .sw.hi{background:#0F7A52}
#v-coverage .up-tl-key .sw.on{background:#7DBFA0}
#v-coverage .up-tl-key .sw.pend{background:#E8A33D}
#v-coverage .up-tl-key .sw.empty{background:#EDEDED}
/* full-history Sprinklr strip: one row per year, one cell per ISO week, laid
   out on a fixed 53-column grid so week 12 sits under week 12 in every year
   (2023 starts at W05 and 53-week years exist -- both fall out of the grid
   column being the week NUMBER, not the cell's position in the list). */
#v-coverage .bf-card{border:1px solid var(--line);border-radius:var(--radius);
  padding:18px 20px;margin:0 0 22px}
#v-coverage .bf-row{display:flex;align-items:flex-end;gap:10px;margin-top:10px}
#v-coverage .bf-y{font-size:11px;font-weight:700;width:34px;flex:0 0 34px;
  color:var(--muted);font-variant-numeric:tabular-nums;padding-bottom:2px}
/* U11: 53 columns in a flex row collapsed to invisible slivers on a narrow
   window (and the year gutter is a fixed 156px, so it got worse the smaller
   the screen). Scroll the grid instead of shrinking the weeks below the point
   where a colour is readable. */
#v-coverage .bf-grid{flex:1 1 auto;min-width:0;overflow-x:auto}
#v-coverage .bf-grid > *{min-width:420px}
#v-coverage .bf-ticks,#v-coverage .bf-cells{display:grid;
  grid-template-columns:repeat(53,1fr);gap:2px}
#v-coverage .bf-t{font-size:8.5px;line-height:1.1;color:var(--muted);
  text-align:left;font-style:normal;overflow:visible}
#v-coverage .bf-w{height:15px;border-radius:2px;background:#EDEDED}
#v-coverage .bf-w.on{background:#7DBFA0}
#v-coverage .bf-w.hi{background:#0F7A52}
#v-coverage .bf-w.pend{background:#E8A33D}
#v-coverage .bf-sum{font-size:12px;margin-top:12px;color:var(--muted)}
/* stream-aware strip (2026-09-02): each year is four thin rows -- one per
   Sprinklr export -- under a marker row that flags the weeks still missing a
   file. Uploading one export used to turn the whole week green. */
#v-coverage .bf-year{margin-top:16px}
#v-coverage .bf-year:first-of-type{margin-top:8px}
#v-coverage .bf-row.bf-head{align-items:flex-end;margin-top:0}
#v-coverage .bf-row.bf-sub{margin-top:2px;align-items:center}
#v-coverage .bf-y,#v-coverage .bf-sl{width:156px;flex:0 0 156px;text-align:right}
#v-coverage .bf-sl{font-size:10.5px;color:var(--muted);font-weight:600;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#v-coverage .bf-row.muted .bf-sl{color:var(--faint);font-weight:400}
#v-coverage .bf-row.bf-sub .bf-w{height:9px}
#v-coverage .bf-row.muted .bf-w.on{background:#D5D5D5}
#v-coverage .bf-row.muted .bf-w.hi{background:#BDBDBD}
#v-coverage .bf-row.muted .bf-w.pend{background:#EBCFA2}
#v-coverage .bf-marks{height:7px;align-items:center}
#v-coverage .bf-m{height:7px;background:none}
#v-coverage .bf-m.part{width:5px;height:5px;border-radius:50%;
  background:#C9922B;justify-self:center;align-self:center}
#v-coverage .up-tl-key .sw.part{background:#C9922B;border-radius:50%;width:7px;height:7px}
#v-coverage .bf-m.unk{width:5px;height:5px;background:var(--neg);
  justify-self:center;align-self:center}
#v-coverage .up-tl-key .sw.unk{background:var(--neg);width:7px;height:7px}
#v-coverage .up-chip.dup{background:var(--neg-bg);color:var(--neg)}
/* ledger status chips */
#v-coverage .up-chip{display:inline-block;font-size:10.5px;font-weight:700;
  padding:2px 7px;border-radius:10px;white-space:nowrap}
#v-coverage .up-chip.wait{background:#FBF0DC;color:#6B5416}
#v-coverage .up-chip.ok{background:var(--pos-bg);color:var(--pos)}
#v-coverage .up-chip.bad{background:var(--neg-bg);color:var(--neg)}
#v-coverage .up-chip.warn{background:#FBF0DC;color:#6B5416}
#v-coverage .up-flag.warn{color:#6B5416;background:#FBF0DC}
#v-coverage .up-flag.ok{color:var(--pos);background:var(--pos-bg)}
#v-coverage .up-act{display:flex;gap:10px;margin-top:16px}
#v-coverage .up-btn{font:inherit;font-size:12px;font-weight:700;padding:8px 16px;
  border:1px solid var(--line);border-radius:var(--radius);background:#fff;
  color:var(--text);cursor:pointer}
#v-coverage .up-btn:hover{border-color:var(--text)}
#v-coverage .up-btn.go{background:var(--text);color:#fff;border-color:var(--text)}
#v-coverage .up-btn.go:hover{background:var(--accent);border-color:var(--accent)}
/* U5: when the measure found something worth pausing over, Confirm stops
   looking like the obvious next click. Same button, same place, no longer
   the path of least resistance. */
#v-coverage .up-btn.warnish{background:#fff;color:var(--text);
  border-color:#C9922B;box-shadow:inset 0 0 0 1px #F3E2C0}
#v-coverage .up-btn.warnish:hover{border-color:#8A6416;background:#FDF8EF}
/* U11: a strip/ledger fetch that fails says so instead of leaving a hole */
#v-coverage .cov-fail{font-size:12px;color:var(--muted);border:1px solid var(--line);
  border-radius:var(--radius);padding:12px 16px;margin:0 0 22px}
#v-coverage .cov-fail .xlink{margin-left:6px}
#v-coverage .up-btn:disabled{opacity:.5;cursor:default}
#v-coverage .up-done{border-left:3px solid var(--pos);background:var(--pos-bg);
  padding:12px 14px;border-radius:0 var(--radius) var(--radius) 0}
#v-coverage .up-moved{font-size:12px;margin-top:4px;font-variant-numeric:tabular-nums;
  word-break:break-all}
/* compact stand-in for the empty post-window days the day-by-day card drops */
#b-daily .db-tail{margin:8px 0 0;padding:6px 10px;border-left:3px solid var(--line);
  font-size:11.5px;color:var(--muted);background:#FAFAFA;border-radius:0 3px 3px 0}


/* ---------- compute-on-demand rollup view (Phase 3) ---------- */
/* The "Custom mix..." picker and its popover (.mixpick/.mp-*) were removed
   2026-08-30; these rules still dress the computed panel a NAMED rollup shows
   before its first nightly rebuild. */
.scopebox { position: relative; }
.mix-banner { display: inline-block; margin-bottom: 10px; padding: 6px 10px;
  border: 1px dashed #B08A2E; background: #FDF7E7; color: #6B5416;
  border-radius: 4px; font-size: 12.5px; }
.mix-srcs { display: flex; flex-wrap: wrap; gap: 8px; margin: 8px 0 14px; }
.mix-src { padding: 3px 8px; background: #F4F4F4; border-radius: 12px; font-size: 12px; }
.mix-h { font-size: 15px; margin: 22px 0 4px; }
.mix-tbl { width: 100%; border-collapse: collapse; margin-top: 8px; font-size: 13px; }
.mix-tbl th, .mix-tbl td { text-align: left; padding: 5px 8px; border-bottom: 1px solid #EEE; }
.mix-tbl th.num, .mix-tbl td.num { text-align: right; }
.mix-movers { margin: 8px 0 0 18px; font-size: 13px; line-height: 1.7; }
.mix-foot { margin-top: 22px; padding-top: 10px; border-top: 1px solid #EEE;
  color: #737373; font-size: 12px; }

.mixpanel .sumband{display:grid;grid-template-columns:repeat(auto-fit,minmax(148px,1fr));border:1px solid var(--line);
  border-radius:6px;margin:14px 0 4px;background:#fff}
.mixpanel .sumcell{padding:14px 18px;border-right:1px solid var(--line)}
.mixpanel .sumcell:last-child{border-right:none}
.mixpanel .sumcell .v{font-size:22px;font-weight:900;letter-spacing:-1px}
.mixpanel .sumcell .v.up{color:var(--pos)} .mixpanel .sumcell .v.down{color:var(--neg)}
.mixpanel .sumcell .l{font-size:10px;font-weight:600;text-transform:uppercase;
  letter-spacing:1.1px;color:var(--muted);margin-top:4px}
.mixpanel .sumcell .d{font-size:11px;color:var(--faint);margin-top:3px}
.mixpanel .sumcell .d.up{color:var(--pos)} .mixpanel .sumcell .d.down{color:var(--neg)}
/* #v-trends .sumband is id-scoped to 4 fixed columns; the mix strip has six
   cells and sizes itself. */
#v-trends .mixpanel .sumband{grid-template-columns:repeat(auto-fit,minmax(148px,1fr))}
.mix-note{margin-top:6px;color:var(--faint);font-size:11.5px;line-height:1.5}

/* ---- batch enrichment lane: cost meter strip (design doc sec 8.7) ----
   Sits directly above the pending list, because the three numbers on it are
   exactly what the Send button is about to spend. A chip row, not a card:
   the list below it IS the detail, and a second bordered box between the
   heading and the table read as a separate feature. */
#v-coverage .qm{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;
  margin:10px 0 4px;padding:10px 12px;border:1px solid var(--line);
  border-radius:var(--radius);background:var(--panel2)}
#v-coverage .qm-main{font-size:12.5px;font-weight:800;letter-spacing:-.2px}
#v-coverage .qm-month{font-size:11.5px;color:var(--muted);font-weight:600}
/* The note and the result message each own the full width so the button
   never reflows underneath them mid-send. */
#v-coverage .qm-note{flex-basis:100%;font-size:11px;color:var(--muted);line-height:1.5}
#v-coverage .qm-msg{flex-basis:100%}
#v-coverage .qm-msg:empty{display:none}
#v-coverage .qm .up-btn{margin-left:auto}
#v-coverage .qm .up-btn[disabled]{opacity:.55;cursor:not-allowed}
/* Live batch jobs inside the meter strip. */
#v-coverage .qm-jobs{flex-basis:100%;display:flex;flex-wrap:wrap;gap:6px 10px;
  font-size:11px;color:var(--muted);align-items:center}
#v-coverage .qm-job{display:inline-flex;align-items:center;gap:6px}
/* The meter now carries several full-width note lines (both clocks, the
   estimate disclaimer, the split explanation, the last send). They stack
   under the button rather than competing with it for the first row. */
#v-coverage .qm-note + .qm-note{margin-top:-2px}
#v-coverage .qm-main{max-width:100%}
