:root{
  /* QXO brand tokens — lifted from www.qxo.com CSS custom properties (primary/neutral/secondary ramps) */
  --bg:#fafafa; --card:#fff; --ink:#16191c; --muted:#676b70; --faint:#94989c;
  --line:#dfe2e5; --line2:#eeeff0; --brand:#1f4b8f; --brand-d:#0f2b57;
  --good:#0e7a55; --good-bg:#eef3f0; --bad:#d23b3b; --bad-bg:#fbeaea;
  --amber:#9a6a08; --amber-bg:#f6f2e8; --info-bg:#eef1f6; --info-line:#d5dbe6;
  --shadow:0 1px 3px rgba(12,29,54,.08),0 4px 16px rgba(12,29,54,.05);
  --a-keep:#94989c; --a-leave:#3171ba; --a-inc:#059669; --a-dec:#d23b3b; --a-cap:#d9a213;
  --sidebar:#05080f; --sidebar-2:#02030a; --sidebar-tx:#8b96ad; --sidebar-hover:rgba(255,255,255,.06); --sidebar-active:rgba(59,102,171,.30);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font:14px/1.45 "Harmonia Sans Pro","Noto Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg);display:flex;flex-direction:row;height:100vh;overflow:hidden}
h1{font-size:17px;margin:0;font-weight:650}
h2{font-size:18px;margin:0;font-weight:640}
h3{font-size:13px;margin:0 0 10px;font-weight:650}
b,strong{font-weight:650}
.tnum{font-variant-numeric:tabular-nums}
.muted{color:var(--muted)} .faint{color:var(--faint)}
.up{color:var(--good)} .down{color:var(--bad)}

/* ── topbar ── */
.topbar{display:flex;justify-content:space-between;align-items:center;padding:11px 22px;background:var(--card);border-bottom:1px solid var(--line);flex:none}
.brand{display:flex;gap:14px;align-items:center}
.logo{height:25px;width:auto;display:block}
.brand-divider{width:1px;height:27px;background:var(--line)}
.sub{color:var(--muted);font-size:12px;margin-top:1px}
.topbar-right{display:flex;align-items:center;gap:10px}
.who{display:flex;align-items:center;gap:9px;font-size:12px;color:var(--muted);background:var(--bg);border:1px solid var(--line);padding:5px 7px 5px 11px;border-radius:20px}
.who b{color:var(--ink)}
.who .av{width:24px;height:24px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;letter-spacing:.3px}
.who .so{border:0;background:none;color:var(--muted);cursor:pointer;font-size:15px;line-height:1;padding:0 2px}
.who .so:hover{color:var(--bad)}
.mock{font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--amber);background:var(--amber-bg);border:1px solid #f0dcae;padding:3px 8px;border-radius:20px}

/* ── tabs ── */
.tabs{display:flex;align-items:center;gap:2px;padding:0 16px;background:var(--card);border-bottom:1px solid var(--line);flex:none;overflow-x:auto}
.tab{border:0;background:none;padding:12px 14px;font-size:13.5px;color:var(--muted);cursor:pointer;border-bottom:2px solid transparent;font-weight:550;white-space:nowrap;display:flex;align-items:center;gap:7px;text-decoration:none}
.tab .ic{font-size:14px;opacity:.85}
.tab:hover{color:var(--ink)}
.tab.active{color:var(--brand);border-bottom-color:var(--brand)}

/* ── view ── */
.view{padding:18px 22px;flex:1;min-height:0;overflow-y:auto}
.page-head{margin-bottom:14px}
.page-head h2{display:flex;align-items:center;gap:10px}
.page-head p{margin:5px 0 0;color:var(--muted);font-size:13px;max-width:780px}
.hidden{display:none!important}

.banner{border-radius:10px;padding:10px 14px;font-size:13px;margin-bottom:14px;border:1px solid}
.banner.info{background:var(--info-bg);border-color:var(--info-line);color:#214a9c}
.banner.warn{background:var(--bad-bg);border-color:#f0caca;color:#9b2c2c}
.banner.live{background:var(--good-bg);border-color:#bfe6cf;color:#1a6b41}
.banner code{background:rgba(0,0,0,.05);padding:1px 5px;border-radius:4px;font-size:12px}

/* ── cards / panels ── */
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:15px 17px}
.card + .card{margin-top:14px}
.card-h{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px;gap:10px}
.card-h h3{margin:0}
.card-h .hint{font-size:12px;color:var(--muted)}
.grid{display:grid;gap:14px}
.g2{grid-template-columns:1fr 1fr}.g3{grid-template-columns:repeat(3,1fr)}
@media(max-width:880px){.g2,.g3{grid-template-columns:1fr}}

/* ── stat tiles (clickable) ── */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:10px;margin-bottom:14px}
.tile{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:12px 14px;box-shadow:var(--shadow);position:relative;cursor:pointer;transition:transform .05s,border-color .12s}
.tile:hover{transform:translateY(-1px);border-color:#cfd8e3}
.tile.sel{outline:2px solid var(--brand);outline-offset:-1px}
.tile.stat{cursor:default}
.tile .n{font-size:23px;font-weight:740;line-height:1.05;font-variant-numeric:tabular-nums}
.tile .l{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px;margin-top:3px}
.tile .d{font-size:11px;margin-top:5px;font-weight:600}
.tile .dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:5px;vertical-align:1px}
.tile:not(.stat)::after{content:'filter';position:absolute;top:9px;right:11px;font-size:8px;color:var(--faint);text-transform:uppercase;letter-spacing:.5px;opacity:.6}
.tile.sel::after{content:'\2713 on';color:var(--brand);opacity:1;font-weight:700}

/* ── kpi strip ── */
.kpis{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:6px}
.kpi{background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:9px 13px;min-width:96px}
.kpi .n{font-size:18px;font-weight:720;font-variant-numeric:tabular-nums}
.kpi .l{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;margin-top:2px}

/* ── pills ── */
.pill{display:inline-flex;align-items:center;gap:5px;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:650;white-space:nowrap}
.pill .pd{width:7px;height:7px;border-radius:50%}
.pill.keep{background:#eef1f5;color:#5f6b7a}.pill.leave{background:#eef3ff;color:#2f5fd0}
.pill.inc{background:var(--good-bg);color:var(--good)}.pill.dec{background:var(--bad-bg);color:var(--bad)}
.pill.cap{background:var(--amber-bg);color:var(--amber)}

/* ── funnel ── */
.funnel{display:flex;flex-direction:column;gap:8px}
.fn-row{display:flex;align-items:center;gap:12px}
.fn-bar{height:34px;border-radius:7px;display:flex;align-items:center;padding:0 12px;color:#fff;font-weight:650;font-size:13px;min-width:54px;transition:width .5s ease}
.fn-meta{display:flex;flex-direction:column;line-height:1.25}
.fn-meta .fl{font-size:12.5px;font-weight:600}
.fn-meta .fs{font-size:11px;color:var(--muted)}

/* ── charts (svg holders) ── */
.chartwrap{width:100%;position:relative}
.chart-svg{display:block;width:100%;height:auto;overflow:visible}
.axis-lbl{font-size:10px;fill:var(--muted)}
.bar-lbl{font-size:10px;fill:var(--muted);font-variant-numeric:tabular-nums}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin:2px 0 10px}
.legend i{width:11px;height:11px;border-radius:3px;display:inline-block;margin-right:5px;vertical-align:-1px}
.legend span{display:inline-flex;align-items:center}

/* ── meter (segmented) ── */
.meter{display:flex;height:30px;border-radius:7px;overflow:hidden;border:1px solid var(--line)}
.meter span{display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;font-weight:700;min-width:0}
.mlegend{display:flex;gap:14px;margin-top:8px;flex-wrap:wrap;font-size:11.5px}
.mlegend .it{display:flex;align-items:center;gap:5px;color:var(--muted)}
.mlegend .sw{width:10px;height:10px;border-radius:2px}
.mlegend b{color:var(--ink);font-variant-numeric:tabular-nums}

/* ── tables ── */
.tablewrap{background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:auto;box-shadow:var(--shadow)}
table{width:100%;border-collapse:collapse;font-size:13px}
thead th{position:sticky;top:0;z-index:2;background:#fbfcfe;text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);color:var(--muted);font-weight:600;white-space:nowrap;cursor:pointer;user-select:none}
thead th:hover{background:#f1f5fb;color:var(--ink)}
thead th.sorted{color:var(--brand)}
th.num,td.num{text-align:right;font-variant-numeric:tabular-nums}
tbody td{padding:8px 12px;border-bottom:1px solid var(--line2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
tbody tr{cursor:pointer}
tbody tr:hover{background:#f7faff}
tbody tr:last-child td{border-bottom:0}
.tfoot{display:flex;align-items:center;justify-content:space-between;margin-top:10px;color:var(--muted);font-size:12.5px}
.pgbtns{display:inline-flex;gap:4px}
.pgbtns button{min-width:30px;height:30px;border:1px solid var(--line);background:var(--card);border-radius:7px;cursor:pointer;font-size:13px;color:var(--ink)}
.pgbtns button:hover{background:var(--info-bg)}
.pgbtns button.on{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:700}
.pgbtns button:disabled{opacity:.4;cursor:default}

/* ── filters ── */
.filters{display:flex;gap:9px;flex-wrap:wrap;align-items:center;margin-bottom:13px}
.f{padding:7px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);font-size:13px;font-family:inherit}
.f:focus{outline:none;border-color:var(--brand)}
.chipf{display:inline-flex;align-items:center;gap:7px;background:var(--info-bg);border:1px solid var(--info-line);color:var(--brand);border-radius:20px;padding:4px 6px 4px 11px;font-size:12px;font-weight:600}
.chipf b{cursor:pointer;border:0;background:#1f2a37;color:#fff;width:16px;height:16px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;line-height:1}

/* ── heatmap ── */
.heat{border-collapse:separate;border-spacing:3px;font-size:12px;width:100%}
.heat th{background:none;position:static;color:var(--muted);font-weight:600;padding:4px 6px;text-align:center;cursor:default}
.heat th.row{text-align:left;font-weight:600;color:var(--ink)}
.heat td{padding:0;cursor:pointer}
.heat .cell{border-radius:6px;padding:7px 6px;text-align:center;font-weight:650;font-variant-numeric:tabular-nums;color:#1b2733;min-width:62px}
.heat .cell .sub{display:block;font-size:9.5px;font-weight:500;opacity:.7;margin-top:1px}
.heat td:hover .cell{outline:2px solid var(--ink);outline-offset:-2px}

/* ── runner ── */
.run-grid{display:grid;grid-template-columns:340px 1fr;gap:16px;align-items:start}
@media(max-width:980px){.run-grid{grid-template-columns:1fr}}
.field{margin-bottom:13px}
.field label{display:block;font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;margin-bottom:5px}
.field input,.field select{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;font-size:13px;font-family:inherit;background:var(--card);color:var(--ink)}
.field input:focus,.field select:focus{outline:none;border-color:var(--brand)}
.field .help{font-size:11px;color:var(--muted);margin-top:5px}
.btn{width:100%;padding:11px;border:0;background:var(--brand);color:#fff;border-radius:9px;font-size:14px;font-weight:650;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:7px}
.btn:hover{background:var(--brand-d)} .btn:disabled{opacity:.55;cursor:default}
.btn.ghost{background:var(--card);color:var(--brand);border:1px solid var(--info-line)}
.btn.ghost:hover{background:var(--info-bg)}
.wd-ok{color:var(--good);font-weight:600}.wd-no{color:var(--bad);font-weight:600}

/* run status */
.stages{display:flex;flex-direction:column;gap:0}
.stage{display:flex;align-items:center;gap:11px;padding:9px 2px;font-size:13px;border-bottom:1px solid var(--line2)}
.stage:last-child{border-bottom:0}
.stage .si{width:22px;height:22px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;font-size:12px;border:1.5px solid var(--line);color:var(--faint);background:var(--card)}
.stage.done .si{background:var(--good);border-color:var(--good);color:#fff}
.stage.active .si{border-color:var(--brand);color:var(--brand);animation:spin 1s linear infinite}
.stage.active{color:var(--ink);font-weight:600}
.stage.todo{color:var(--faint)}
@keyframes spin{to{transform:rotate(360deg)}}
.dls{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.dl{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:8px;padding:7px 12px;font-size:12.5px;font-weight:600;cursor:pointer}
.dl:hover{border-color:var(--brand);color:var(--brand)}

/* ── steps walkthrough (first principles) ── */
.steps{position:relative;padding-left:6px}
.step{display:grid;grid-template-columns:34px 1fr;gap:13px;padding-bottom:16px;position:relative}
.step:not(:last-child)::before{content:'';position:absolute;left:16px;top:33px;bottom:-2px;width:2px;background:var(--line)}
.step .sn{width:33px;height:33px;border-radius:50%;background:var(--info-bg);color:var(--brand);display:flex;align-items:center;justify-content:center;font-weight:750;font-size:14px;border:1.5px solid var(--info-line);z-index:1}
.step .st{font-size:13.5px;font-weight:650;margin-bottom:3px}
.step .sd{font-size:12.5px;color:var(--ink);line-height:1.5}
.step .sw{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.45}
.step .sw b{color:var(--brand)}
.step .form{display:inline-block;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;background:#f4f6fb;border:1px solid var(--line);border-radius:6px;padding:2px 7px;margin-top:6px;color:#2c3a4d}
.step .src{display:inline-flex;align-items:center;gap:7px;margin-top:7px;font-size:11px;color:#33455c;background:#eef3fb;border:1px solid #d8e3f3;border-radius:6px;padding:3px 9px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.step .src .srcl{font-family:-apple-system,sans-serif;font-size:8.5px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:#7089a8}

/* ── inputs & lineage panel ── */
.sources{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.source{border:1px solid var(--line);border-radius:10px;padding:11px 13px;background:#fbfcfe}
.source .src-h{font-size:12.5px;font-weight:650}
.source .src-w{font-size:11px;color:var(--brand);font-weight:600;margin:3px 0 5px}
.source code{display:block;font-size:10.5px;color:#2c3a4d;background:#eef2f7;border-radius:5px;padding:4px 7px;margin-bottom:6px;word-break:break-all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.source .src-d{font-size:11px;color:var(--muted);line-height:1.45}
.produces{display:grid;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:10px}
.ptab{border:1px solid var(--line);border-radius:8px;padding:9px 11px;background:#fbfcfe}
.ptab b{font-size:12.5px;display:block;color:var(--ink);margin-bottom:2px}
.ptab span{font-size:11px;color:var(--muted);line-height:1.4}

/* ── discovery ── */
.dfn{display:flex;flex-direction:column;gap:9px}
.dfn-row{display:flex;align-items:center;gap:14px}
.dfn-bw{flex:0 0 250px;display:flex}
@media(max-width:760px){.dfn-bw{flex:0 0 150px}}
.dfn-bar{height:32px;border-radius:7px;display:flex;align-items:center;padding:0 11px;color:#fff;font-weight:650;font-size:12.5px;font-variant-numeric:tabular-nums;min-width:62px}
.dfn-m{flex:1;min-width:0}
.dfn-s{font-size:13px;font-weight:650}
.dfn-r{font-size:11.5px;color:var(--muted);line-height:1.4;margin-top:1px}
.dhead{margin-top:13px;padding-top:12px;border-top:1px solid var(--line);font-size:14px}
.dhead b{font-variant-numeric:tabular-nums}
.wf{display:flex;flex-direction:column;gap:7px}
.wf-row{display:flex;align-items:center;gap:12px;font-size:12.5px}
.wf-row.strong{font-weight:650}
.wf-l{flex:0 0 210px;color:var(--muted)}
.wf-row.strong .wf-l{color:var(--ink)}
.wf-t{flex:1;position:relative;height:20px;background:#f1f4f8;border-radius:5px;min-width:0}
.wf-seg{position:absolute;top:0;bottom:0;border-radius:5px}
.wf-v{flex:0 0 105px;text-align:right;font-variant-numeric:tabular-nums}
.months{display:flex;flex-direction:column;gap:7px}
.mrow{display:flex;align-items:center;gap:12px;font-size:12.5px}
.mlab{flex:0 0 32px;font-weight:600;color:var(--muted)}
.mt{flex:1;position:relative;height:16px;border-radius:4px;overflow:hidden}
.mbar-o9{position:absolute;inset:0;background:#dbe6f5;border-radius:4px}
.mbar-p{position:absolute;left:0;top:0;bottom:0;background:#1f9d57;border-radius:4px}
.mv{flex:0 0 185px;text-align:right;font-variant-numeric:tabular-nums;color:var(--muted)}
.mv b{font-variant-numeric:tabular-nums}
.bignum{font-size:30px;font-weight:740;font-variant-numeric:tabular-nums;line-height:1;flex:none}
.edge.bad{border-left:3px solid var(--bad)}
.edge.amber{border-left:3px solid var(--amber)}
.edge-b{display:flex;align-items:baseline;gap:13px;font-size:12.5px;color:var(--muted);line-height:1.5}
.edge-b b{color:var(--ink)}
.lnk{color:var(--brand);cursor:pointer;font-weight:600}
.byact{display:flex;flex-direction:column;gap:11px}
.ba-row{display:flex;align-items:center;gap:14px}
.ba-act{flex:0 0 132px}
.ba-act b{font-size:13px;display:block}
.ba-act span{font-size:11px;color:var(--muted)}
.ba-bars{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.ba-bar{height:9px;border-radius:3px;min-width:2px}
.ba-chg{flex:0 0 240px}
.ba-chg b{font-size:15px;font-variant-numeric:tabular-nums}
.ba-why{font-size:11px;color:var(--muted);line-height:1.35;margin-top:1px}
@media(max-width:760px){.ba-act{flex:0 0 100px}.ba-chg{flex:0 0 160px}}
.rtbl thead th{cursor:default}
.rtbl tbody tr,.rtbl tbody tr:hover{cursor:default;background:none}
.rtbl .rtot td{border-top:2px solid var(--line2);font-weight:650;background:#fbfcfe}
.rtbl td:first-child,.rtbl th:first-child{padding-left:14px}
.montog{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}
.montog button{border:0;background:var(--card);padding:6px 15px;font-size:13px;color:var(--muted);cursor:pointer;font-weight:600}
.montog button.on{background:var(--brand);color:#fff}
.montog button:not(:last-child){border-right:1px solid var(--line)}
.cviz{display:flex;flex-direction:column;gap:15px;margin-bottom:17px}
.cv-h{display:flex;align-items:baseline;gap:9px;font-size:13px;margin-bottom:7px}
.cv-pct{margin-left:auto;font-size:15px;font-variant-numeric:tabular-nums;color:var(--ink)}
.cv-bars{display:flex;flex-direction:column;gap:5px}
.cv-b{display:flex;align-items:center;gap:10px}
.cv-l{flex:0 0 62px;font-size:11px;color:var(--muted)}
.cv-track{flex:1;height:14px;background:#f1f4f8;border-radius:4px;min-width:0}
.cv-fill{height:100%;border-radius:4px}
.cv-v{flex:0 0 58px;text-align:right;font-size:12px;font-variant-numeric:tabular-nums;color:var(--muted)}
.rc-ai{margin:0 0 14px;padding:11px 14px;background:linear-gradient(180deg,#f3f7ff,#fbfcff);border:1px solid #d7e2fb;border-left:3px solid var(--brand);border-radius:10px}
.rc-ai-chip{display:inline-block;font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--brand);margin-bottom:6px}
.rc-ai-body{font-size:12.5px;line-height:1.55;color:var(--ink)}
.rc-ai-loading{display:flex;flex-direction:column;gap:7px;padding:2px 0}
.sk-line{height:10px;border-radius:5px;background:linear-gradient(90deg,#e7eef9,#f4f8ff,#e7eef9);background-size:200% 100%;animation:sk 1.2s ease-in-out infinite}
@keyframes sk{0%{background-position:200% 0}100%{background-position:-200% 0}}
.filepick{display:flex;align-items:center;gap:11px;flex-wrap:wrap}
.btn-ghost{padding:9px 14px;border:1px solid var(--line);background:#fff;border-radius:9px;font-size:13px;font-weight:600;color:var(--ink);cursor:pointer}
.btn-ghost:hover{border-color:var(--brand);color:var(--brand)}
.fname{font-size:12.5px;font-variant-numeric:tabular-nums}
.up{margin-top:11px}
.up-bar{height:9px;background:#eef2f8;border-radius:6px;overflow:hidden}
.up-fill{height:100%;width:0;background:linear-gradient(90deg,var(--brand),#2f6bf0);border-radius:6px;transition:width .18s ease}
.up-t{font-size:11.5px;color:var(--muted);margin-top:5px;font-variant-numeric:tabular-nums}
.livelog{font-family:ui-monospace,Menlo,monospace;font-size:11px;line-height:1.55;white-space:pre-wrap;max-height:220px;overflow:auto;background:#0e1726;color:#cdd9e8;border-radius:8px;padding:11px 12px}
.livelog.dim{color:#93a4bb;font-family:inherit;font-size:12px;line-height:1.5}
.who-wrap{position:relative}
.who-btn{display:flex;align-items:center;gap:9px;background:none;border:0;cursor:pointer;padding:4px 6px;border-radius:9px}
.who-btn:hover{background:#f1f4f8}
.who-txt{display:flex;flex-direction:column;line-height:1.15;text-align:left}
.who-txt b{font-size:13px;color:var(--ink)}
.who-role{font-size:10.5px;color:var(--muted)}
.who-caret{color:var(--muted);font-size:10px}
.who-menu{position:absolute;right:0;top:calc(100% + 6px);width:266px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 34px -10px rgba(10,22,51,.28);padding:6px;z-index:60}
.wm-h{font-size:10px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);padding:7px 9px 5px}
.wm-item{display:flex;align-items:center;gap:9px;width:100%;background:none;border:0;cursor:pointer;padding:8px 9px;border-radius:8px;text-align:left}
.wm-item:hover{background:#f1f4f8}
.wm-who{display:flex;flex-direction:column;line-height:1.2;flex:1}
.wm-who b{font-size:12.5px;color:var(--ink)}
.wm-role{font-size:10.5px;color:var(--muted)}
.wm-dot{color:#1f9d57;font-size:11px}
.wm-sep{height:1px;background:var(--line);margin:5px 4px}
.av.sm{width:26px;height:26px;font-size:10px;color:#fff}
.rolechip{display:inline-block;font-size:9.5px;font-weight:700;color:#5b6b86;background:#eef2f8;border-radius:5px;padding:1px 6px;margin-left:5px;vertical-align:middle}
.vtag{display:inline-block;font-size:10px;font-weight:700;border-radius:5px;padding:1px 7px;white-space:nowrap}
.vtag.gen{background:#eef2f8;color:#5b6b86}
.vtag.up{background:#e6f1fb;color:#185fa5}

/* ── sparkline / timeline tooltip ── */
.spark{display:block}
.tl-tip,.bar-tip{position:absolute;background:#1f2a37;color:#fff;font-size:11px;line-height:1.35;padding:5px 8px;border-radius:6px;pointer-events:none;white-space:nowrap;box-shadow:0 4px 14px rgba(0,0,0,.2);z-index:5}

/* ── drawer ── */
.scrim{position:fixed;inset:0;background:rgba(16,32,52,.34);z-index:20}
.drawer{position:fixed;top:0;right:0;bottom:0;width:min(720px,82vw);background:var(--bg);z-index:21;box-shadow:-8px 0 30px rgba(16,32,52,.18);display:flex;flex-direction:column}
.drawer-head{display:flex;justify-content:space-between;align-items:flex-start;padding:16px 20px;background:var(--card);border-bottom:1px solid var(--line)}
.drawer-head .dt{font-size:16px;font-weight:680}
.drawer-head .ds{color:var(--muted);font-size:12px;margin-top:3px}
.drawer-head .x{border:0;background:none;font-size:25px;line-height:1;color:var(--muted);cursor:pointer}
.drawer-body{padding:16px 20px;overflow-y:auto;flex:1}

/* ── skeleton ── */
@keyframes sk{0%{background-position:-200px 0}100%{background-position:calc(200px + 100%) 0}}
.sk{background:#eef1f5;background-image:linear-gradient(90deg,#eef1f5 0,#f6f8fa 40px,#eef1f5 80px);background-size:600px 100%;animation:sk 1.2s infinite linear;border-radius:6px}
.sk.line{height:12px;margin:8px 0}.sk.tile{height:74px}.sk.chart{height:160px}
.loading,.empty{color:var(--muted);padding:26px;text-align:center;font-size:13px}

/* ── triage runs · new run ── */
.newrun{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.nr-status{margin-top:2px}
.rstages{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.rstage{font-size:11px;padding:4px 9px;border-radius:20px;border:1px solid var(--line);color:var(--muted);background:var(--bg)}
.rstage.act{border-color:var(--brand);color:var(--brand);font-weight:600}
.rstage.on{border-color:var(--good);color:var(--good);background:var(--good-bg)}
.dl-sm{text-decoration:none;color:var(--muted);font-size:14px}
.dl-sm:hover{color:var(--brand)}

/* ── editable output grid ── */
.ed-bar{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px}
.ed-meta{font-size:12.5px;color:var(--muted)}
.ed-meta b{color:var(--ink)}
.ed-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
table.edtbl{width:100%;border-collapse:collapse}
table.edtbl th{font-size:11px;color:var(--muted);text-align:left;padding:9px 10px;border-bottom:1px solid var(--line);background:var(--card);position:sticky;top:0;z-index:1}
table.edtbl td{padding:6px 10px;border-bottom:1px solid var(--line2);vertical-align:middle}
table.edtbl td.num,table.edtbl th.num{text-align:right;font-variant-numeric:tabular-nums}
table.pf-drilltbl td,table.pf-drilltbl th{padding:7px 9px}
table.pf-drilltbl th:nth-child(5),table.pf-drilltbl td:nth-child(5){border-left:2px solid var(--line)}
/* Segments view — revenue-anchored advantage bars */
.pf-segwrap{margin-top:14px}
.pf-seg-ctrl{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:2px 0 10px;flex-wrap:wrap}
.pf-lensrow{display:inline-flex;gap:3px;background:var(--line2);border:1px solid var(--line);border-radius:10px;padding:3px}
.pf-lensbtn{border:0;background:transparent;padding:6px 14px;border-radius:8px;font:inherit;font-size:12.5px;font-weight:600;color:var(--muted);cursor:pointer}
.pf-lensbtn.on{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}
.pf-lenslbl{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px;max-width:540px;text-align:right;margin-left:auto}
.pf-seglegend{display:flex;gap:16px;align-items:center;font-size:11.5px;color:var(--muted);margin:0 2px 12px;flex-wrap:wrap}
.pf-seglegend .sw{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.pf-seglegend .pf-seg-lg-rev{margin-left:auto;font-style:italic}
.pf-seglist{display:flex;flex-direction:column;gap:10px}
.pf-segrow{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px 13px;box-shadow:var(--shadow)}
.pf-seg-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}
.pf-seg-name{font-weight:680;font-size:14.5px;color:var(--ink)}
.pf-seg-rev{font-size:13px;font-weight:680;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.pf-seg-revpc{font-weight:500;color:var(--muted)}
.pf-seg-track{position:relative;height:26px;background:var(--line2);border-radius:7px;overflow:hidden}
.pf-seg-fill{position:absolute;left:0;top:0;bottom:0;border-radius:7px;min-width:3px;transition:width .35s ease}
.pf-seg-foot{display:flex;gap:16px;align-items:center;margin-top:9px;font-size:12px;flex-wrap:wrap}
.pf-seg-wape{color:var(--muted)}
.pf-seg-wape b{color:var(--ink);font-variant-numeric:tabular-nums;font-weight:660}
.pf-seg-adv{font-weight:700}
.pf-seg-adv.win{color:#1a7a44}
.pf-seg-adv.lose{color:#c0392b}
.pf-seg-save{margin-left:auto;color:var(--muted);font-variant-numeric:tabular-nums}
/* Segments — compact one-page, three lenses stacked, drillable rows */
.pf-seg-scale{margin:4px 0 12px;padding:12px 16px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}
.pf-seg-scale-v{font-size:22px;font-weight:760;color:var(--ink);font-variant-numeric:tabular-nums}
.pf-seg-scale-sub{font-size:12px;color:var(--muted);margin-top:3px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.pf-seg-sec{margin-top:16px}
.pf-seg-sechead{display:flex;align-items:baseline;gap:10px;margin:0 2px 7px}
.pf-seg-sechead h3{margin:0;font-size:12px;font-weight:730;color:var(--ink);text-transform:uppercase;letter-spacing:.045em}
.pf-srlist{display:flex;flex-direction:column;gap:5px}
.pf-sr{display:grid;grid-template-columns:200px 1fr 92px 56px 14px;align-items:center;gap:12px;padding:7px 12px;background:var(--card);border:1px solid var(--line);border-radius:9px}
.pf-sr.drill{cursor:pointer;transition:border-color .12s,box-shadow .12s}
.pf-sr.drill:hover{border-color:var(--brand);box-shadow:0 1px 7px rgba(0,75,234,.13)}
.pf-sr.sel{border-color:var(--brand);box-shadow:inset 3px 0 0 var(--brand)}
.pf-sr-name{font-weight:660;font-size:13px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pf-sr-name i{font-style:normal;color:var(--muted);font-weight:400;font-size:10.5px;margin-left:6px}
.pf-sr-track{position:relative;height:16px;background:var(--line2);border-radius:5px;overflow:hidden}
.pf-sr-fill{position:absolute;left:0;top:0;bottom:0;border-radius:5px;min-width:2px}
.pf-sr-rev{text-align:right;font-size:12.5px;font-weight:680;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}
.pf-sr-rev i{font-style:normal;color:var(--muted);font-weight:500;font-size:10.5px;margin-left:4px}
.pf-sr-adv{text-align:right;font-weight:700;font-size:12.5px;font-variant-numeric:tabular-nums}
.pf-sr-adv.win{color:#1a7a44}
.pf-sr-adv.lose{color:#c0392b}
.pf-sr-chev{color:var(--muted);font-size:16px;text-align:center;line-height:1}
.pf-sr.sel .pf-sr-chev{color:var(--brand);transform:rotate(90deg)}
.pf-seg-detail{margin:0 0 6px}

/* ═══ Stripe / enterprise design layer (Runs & consensus, rolling app-wide) ═══ */
.rl-util{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 15px;background:var(--card);border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow);margin-bottom:16px}
.rl-util-l{display:flex;align-items:center;gap:11px;font-size:12.5px;min-width:0}
.rl-util .vchip{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--faint)}
.lockchip2{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600;color:var(--amber);background:var(--amber-bg);border:1px solid #f2e2bd;border-radius:6px;padding:2px 8px;vertical-align:middle;margin-left:8px}
.sec-label{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--faint);margin:20px 2px 9px;display:flex;align-items:center;gap:7px}
/* enterprise data table */
.dtable{width:100%;border-collapse:separate;border-spacing:0;background:var(--card);border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}
.dtable thead th{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--faint);text-align:left;padding:10px 15px;background:#fbfcfe;border-bottom:1px solid var(--line)}
.dtable tbody td{padding:13px 15px;border-bottom:1px solid var(--line2);vertical-align:middle;font-size:13px;color:var(--ink)}
.dtable tbody tr:last-child td{border-bottom:0}
.dtable tbody tr.clickable{cursor:pointer;transition:background .1s}
.dtable tbody tr.clickable:hover{background:#f7f9fc}
.dtable td.num,.dtable th.num{text-align:right;font-variant-numeric:tabular-nums}
.dtable .t-primary{font-weight:660}
.dtable .t-sub{font-size:11px;color:var(--muted);margin-top:2px}
.dt-open{color:var(--faint);font-size:15px;line-height:1}
.dtable tbody tr.clickable:hover .dt-open{color:var(--brand)}
/* status badge (dot + label on muted fill) */
.sbadge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;padding:3px 10px 3px 8px;border-radius:20px;line-height:1.5;white-space:nowrap}
.sbadge .sb-dot{width:6px;height:6px;border-radius:50%;flex:none}
.sbadge.ok{background:var(--good-bg);color:#177a44}.sbadge.ok .sb-dot{background:var(--good)}
.sbadge.work{background:var(--info-bg);color:#2a56c8}.sbadge.work .sb-dot{background:var(--a-leave)}
.sbadge.wait{background:#f1f4f8;color:var(--muted)}.sbadge.wait .sb-dot{background:var(--faint)}
.rl-owner{display:inline-flex;align-items:center;gap:8px}
.rl-owner .nm{font-weight:560}
/* convergence strip — single source of truth on the landing */
.rl-conv{display:flex;align-items:center;gap:18px;padding:15px 17px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);margin-top:14px;flex-wrap:wrap}
.rl-conv-lead{font-weight:680;font-size:14.5px;color:var(--ink);display:flex;align-items:center;gap:9px}
.rl-conv-seg{display:flex;gap:5px;flex:1;min-width:150px;max-width:340px}
.rl-conv-seg i{height:9px;flex:1;border-radius:3px;background:var(--line2)}
.rl-conv-seg i.done{background:var(--good)}
.rl-conv-meta{font-size:12px;color:var(--muted)}
.rl-conv-cta{margin-left:auto;display:flex;align-items:center;gap:10px}
/* log-forecast form (Step 1) */
.logform{display:flex;flex-direction:column;gap:14px;padding:4px 2px 2px}
.lf-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.lf-lbl{font-size:12px;font-weight:600;color:var(--muted);min-width:96px;display:flex;align-items:center;gap:6px}
.lf-date{font:inherit;font-size:13.5px;padding:8px 11px;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--ink)}
.lf-date:focus{outline:0;border-color:var(--brand);box-shadow:0 0 0 3px rgba(0,75,234,.12)}
.lf-actions{margin-top:2px}
.stepnum{font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--brand);background:var(--info-bg);border-radius:6px;padding:2px 8px;margin-left:9px;vertical-align:middle}
.howto{border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:var(--shadow);margin-top:16px}
.howto summary{cursor:pointer;padding:13px 16px;font-weight:640;font-size:13.5px;list-style:none;color:var(--ink)}
.howto summary::-webkit-details-marker{display:none}
.howto summary::before{content:'▸';margin-right:9px;color:var(--muted);font-size:11px}
.howto[open] summary::before{content:'▾'}
.howto .steps{padding:2px 16px 16px}
tr.rowedited td:first-child{box-shadow:inset 3px 0 0 var(--brand)}
.editedby{font-size:11px}
.ecell{width:100%;border:1px solid transparent;border-radius:6px;padding:5px 7px;font:inherit;font-size:12.5px;background:transparent;color:var(--ink);transition:border-color .12s,background .12s}
.ecell:hover{border-color:var(--line)}
.ecell:focus{outline:none;border-color:var(--brand);background:#fff;box-shadow:0 0 0 3px rgba(0,75,234,.10)}
select.ecell{cursor:pointer;min-width:150px}
input.enum{text-align:right;max-width:110px}
input.enote{min-width:150px;color:var(--muted)}
.ecell.cellsaved{border-color:var(--good)!important;background:var(--good-bg)}

/* ── change log drawer ── */
.cl{display:flex;flex-direction:column;gap:2px}
.cl-row{display:flex;gap:12px;padding:11px 2px;border-bottom:1px solid var(--line2)}
.cl-when{flex:none;width:66px;font-size:11px;color:var(--faint);padding-top:1px}
.cl-main{flex:1;min-width:0}
.cl-top{font-size:12.5px;line-height:1.5}
.cl-field{font-family:ui-monospace,Menlo,monospace;font-size:11px;background:var(--info-bg);color:var(--brand);padding:1px 6px;border-radius:5px}
.cl-sku{font-family:ui-monospace,Menlo,monospace;font-size:11px;color:var(--muted)}
.cl-diff{margin-top:4px;font-size:12px;display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.cl-old{color:var(--bad);text-decoration:line-through;opacity:.75}
.cl-arr{color:var(--faint)}
.cl-new{color:var(--good);font-weight:600}

/* ── toast ── */
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:9px 18px;border-radius:22px;font-size:12.5px;font-weight:600;box-shadow:var(--shadow);opacity:0;pointer-events:none;transition:opacity .18s,transform .18s;z-index:120}
.toast.show{opacity:1;transform:translate(-50%,0)}
.toast.bad{background:var(--bad)}

.pgcell{font-family:ui-monospace,Menlo,monospace;font-size:10.5px;color:var(--muted);white-space:nowrap}

/* ── output version history (Feature 2) ── */
.vgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:820px){.vgrid{grid-template-columns:1fr}}
.vcur,.vup{padding:16px 18px}
.vlabel{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--faint)}
.vcur-top{display:flex;align-items:center;justify-content:space-between}
.vbig{font-size:22px;font-weight:800;color:var(--brand)}
.vcur-meta{font-size:12.5px;color:var(--muted);margin:8px 0 2px}
.vnote{font-size:13px;color:var(--ink);font-style:italic;margin:6px 0 2px}
.vdl{display:inline-flex;margin-top:14px;text-decoration:none}
.vpill{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.03em;text-transform:uppercase;padding:2px 7px;border-radius:20px;vertical-align:middle}
.vpill.cur{background:var(--good-bg);color:var(--good)}
.vpill.orig{background:var(--info-bg);color:var(--brand);margin-left:5px}
.filepick{display:flex;align-items:center;justify-content:center;border:1.5px dashed var(--line);border-radius:9px;padding:14px;cursor:pointer;font-size:13px;color:var(--muted);transition:border-color .12s,background .12s}
.filepick:hover{border-color:var(--brand);background:var(--info-bg)}
.vprog{height:6px;background:var(--line2);border-radius:4px;overflow:hidden;margin-top:12px}
.vprog-fill{height:100%;width:0;background:var(--brand);transition:width .15s}
.vhist-head{padding:12px 16px;font-size:12px;font-weight:700;color:var(--muted);border-bottom:1px solid var(--line2)}
table.vhist td{vertical-align:middle}
.vnote-cell{max-width:340px;font-size:12.5px;white-space:normal}

/* upload "saving to cloud" pulse — bar is full but server is still writing */
.vprog-fill.saving{animation:vpulse 1.1s ease-in-out infinite}
@keyframes vpulse{0%,100%{opacity:1}50%{opacity:.45}}

/* ── overstock (Capability B — ported from demand-model integration) ── */
:root{--o9:#378ADD;--qxo-bg:#eaf1ff}
th.tip{position:relative;text-decoration:underline dotted var(--faint);text-underline-offset:3px}
th.tip:hover::after{content:attr(data-tip);position:absolute;right:0;top:100%;margin-top:6px;width:240px;white-space:normal;text-transform:none;letter-spacing:normal;font-weight:500;text-align:left;background:var(--ink);color:var(--card);padding:9px 11px;border-radius:8px;font-size:11px;line-height:1.5;z-index:60;box-shadow:0 8px 24px rgba(0,0,0,.28);pointer-events:none}
.oeyebrow{font-size:10.5px;font-weight:700;letter-spacing:.7px;text-transform:uppercase;color:var(--faint);margin-bottom:4px}
.osub{color:var(--muted);font-size:12.5px;margin-top:4px;max-width:920px;line-height:1.5}
.osub b{color:var(--ink);font-weight:650}
.toolbar{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:11px;padding:11px 14px;box-shadow:var(--shadow);margin:14px 0}
.toolbar .fg{display:flex;align-items:center;gap:7px}
.toolbar .fg>label{font-size:10.5px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;color:var(--muted)}
.otiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:11px;margin-bottom:14px}
.otile{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:12px 14px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.otile::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--tc,var(--brand))}
.otile .lab{font-size:10.5px;font-weight:650;letter-spacing:.4px;text-transform:uppercase;color:var(--muted)}
.otile .big{font-size:23px;font-weight:750;margin-top:5px;line-height:1.05;font-variant-numeric:tabular-nums}
.otile .fine{font-size:11px;color:var(--muted);margin-top:3px}
.otile.pri{--tc:var(--o9)} .otile.pri .big{color:var(--o9)}
.otile.sav{--tc:var(--good)} .otile.sav .big{color:var(--good)}
.rl{display:inline-block;padding:2px 9px;border-radius:20px;font-weight:650;font-size:11px;white-space:nowrap}
.rl.A{background:var(--qxo-bg);color:var(--brand)} .rl.B{background:var(--info-bg);color:var(--brand-d)}
.rl.C{background:var(--line2);color:var(--muted)} .rl.F{background:var(--bad-bg);color:var(--bad)}
.o9v{color:var(--o9);font-weight:700} .qxv{color:var(--brand);font-weight:700}

/* ── run id chip (runs table) + per-row lineage link ── */
.runid{display:inline-block;font:600 10.5px/1.4 ui-monospace,SFMono-Regular,Menlo,monospace;color:#5b6b86;background:#eef2f8;border:1px solid var(--line);border-radius:5px;padding:0 6px;margin-left:6px;vertical-align:middle;cursor:pointer;letter-spacing:.2px}
.runid:hover{background:var(--info-bg);border-color:var(--info-line);color:var(--brand)}
.lin-link{font-size:12px;white-space:nowrap}

/* ── floating "⧉ Lineage" widget (bottom-right, chatbot-style) ── */
.lineage-fab{position:fixed;right:22px;bottom:22px;z-index:19;display:none;align-items:center;gap:8px;
  padding:11px 16px 11px 14px;border:0;border-radius:26px;cursor:pointer;
  background:var(--brand);color:#fff;font:650 13.5px/1 inherit;
  box-shadow:0 4px 14px rgba(0,75,234,.34),0 2px 6px rgba(16,32,52,.18);
  transition:transform .08s ease,box-shadow .12s ease}
.lineage-fab:hover{transform:translateY(-1px);box-shadow:0 7px 20px rgba(0,75,234,.42),0 2px 8px rgba(16,32,52,.2)}
.lineage-fab:active{transform:translateY(0)}
.lineage-fab .lf-ic{font-size:16px;line-height:1}
.lineage-fab .lf-t{letter-spacing:.2px}

/* ── lineage overlay: left→right FLOW diagram (dbt-docs style) in a centred modal ── */
.lg-modal{position:fixed;z-index:21;left:50%;top:50%;transform:translate(-50%,-50%);width:min(1220px,96vw);max-height:90vh;background:var(--card);border-radius:16px;box-shadow:0 30px 84px rgba(16,32,52,.44);display:flex;flex-direction:column;overflow:hidden}
.lg-head{display:flex;justify-content:space-between;align-items:flex-start;padding:17px 24px;border-bottom:1px solid var(--line)}
.lg-head .dt{font-size:17px;font-weight:680}
.lg-head .ds{color:var(--muted);font-size:12.5px;margin-top:3px}
.lg-head .x{border:0;background:none;font-size:26px;line-height:1;color:var(--muted);cursor:pointer}
.lg-body{flex:1;padding:26px;overflow:auto;display:flex;min-height:360px;background-color:#e7ecf3;background-image:radial-gradient(#ccd5e0 1.5px,transparent 1.5px);background-size:22px 22px}
.lg-flow{display:flex;align-items:center;flex:0 0 auto;margin:auto;padding:2px}
.lg-node{flex:0 0 220px;width:220px;align-self:center;background:var(--card);border:1px solid #d5dce6;border-radius:13px;padding:15px 16px;box-shadow:0 1px 3px rgba(16,32,52,.10),0 12px 28px rgba(16,32,52,.09);position:relative}
.lg-node.cur{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand) inset,0 12px 28px rgba(0,75,234,.17)}
.lg-ntop{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.lg-ntop b{font-size:15.5px}
.lg-ic{width:27px;height:27px;border-radius:8px;display:inline-flex;align-items:center;justify-content:center;font-size:15px;color:#fff;flex:none}
.lg-ic.src{background:#5b6b86} .lg-ic.run{background:var(--brand)} .lg-ic.gen{background:var(--good)} .lg-ic.up{background:#185fa5}
.lg-id{font:600 11px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;color:#5b6b86;background:#eef2f8;border-radius:5px;padding:0 6px}
.lg-badge{margin-top:9px}
.lg-who{font-size:12px;color:var(--ink);margin-top:8px}
.lg-sub{font-size:11.5px;color:var(--muted);margin-top:5px;line-height:1.4;word-break:break-word}
.lg-note{font-size:11.5px;color:var(--ink);font-style:italic;margin-top:9px;padding:7px 10px;background:var(--bg);border-left:2px solid var(--brand);border-radius:0 6px 6px 0;line-height:1.4}
.lg-edge{flex:0 0 96px;width:96px;align-self:center;position:relative;height:56px;display:flex;align-items:center}
.lg-line{width:100%;height:2.5px;background:#adb8c6;position:relative}
.lg-arrow{position:absolute;right:-1px;top:50%;transform:translateY(-50%);width:0;height:0;border-left:9px solid #8a97a7;border-top:6px solid transparent;border-bottom:6px solid transparent}
.lg-elabel{position:absolute;left:0;right:0;top:0;text-align:center;font-size:9.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;line-height:1.25}
.lg-legend{display:flex;gap:18px;padding:13px 24px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}
.lg-legend span{display:inline-flex;align-items:center;gap:7px}
.lg-dot{width:11px;height:11px;border-radius:3px;display:inline-block}
.lg-dot.src{background:#5b6b86} .lg-dot.run{background:var(--brand)} .lg-dot.gen{background:var(--good)} .lg-dot.up{background:#185fa5}

/* ── global product-category filter (topbar) ── */
.catsel{display:inline-flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--line);border-radius:20px;padding:3px 5px 3px 13px}
.catsel-l{font-size:10.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.catsel select{border:0;background:var(--card);color:var(--ink);font-size:12.5px;font-weight:640;font-family:inherit;border-radius:15px;padding:5px 10px;cursor:pointer;outline:none;box-shadow:0 1px 2px rgba(16,32,52,.06)}
.catsel select:hover{color:var(--brand)}

/* ── consensus / category lanes ── */
.lanes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media(max-width:900px){.lanes-grid{grid-template-columns:1fr}}
.lane-card{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:14px 16px}
.lane-card.promoted{border-color:var(--good);box-shadow:0 0 0 1px var(--good) inset,var(--shadow)}
.lane-h{display:flex;justify-content:space-between;align-items:center;gap:8px}
.lane-name{font-size:15.5px;font-weight:680}
.lane-pill{font-size:10.5px;font-weight:700;padding:2px 9px;border-radius:20px;white-space:nowrap}
.lane-pill.ok{background:var(--good-bg);color:var(--good)}
.lane-pill.work{background:var(--info-bg);color:var(--brand)}
.lane-pill.idle{background:var(--line2);color:var(--muted)}
.lane-net{font-size:13px;font-weight:640;margin-top:8px}
.lane-mix{font-size:11.5px;margin-top:5px}
.lane-mix .up{color:var(--good);font-weight:600} .lane-mix .down{color:var(--bad);font-weight:600}
.lane-owner{font-size:11.5px;color:var(--muted);margin-top:9px;padding-top:9px;border-top:1px solid var(--line2)}
.lane-owner b{color:var(--ink)}
.lane-acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:11px}
.btn-ghost.sm{padding:5px 10px;font-size:12px;border-radius:7px}
.btn-ghost.sm:hover{border-color:var(--brand);color:var(--brand)}
.btn-ghost.sm:disabled{opacity:.45;cursor:not-allowed}
.btn-ghost.sm.promo{border-color:var(--good);color:var(--good)}
.btn.sm{width:auto;padding:9px 16px;font-size:13px}
/* compact black finalize button for version-history rows (matches the lane-bar .btn-finalize) */
.btn-finalize.sm{padding:4px 12px;font-size:12px;border-radius:7px;box-shadow:0 1px 2px rgba(16,32,52,.18);vertical-align:middle}
.cons-track{display:flex;gap:10px;flex-wrap:wrap}
.cons-step{display:flex;align-items:center;gap:7px;font-size:12.5px;background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:8px 12px;color:var(--ink)}
.cons-step .cs-dot{width:9px;height:9px;border-radius:50%;background:var(--faint)}
.cons-step.done{border-color:#bfe6cf;background:var(--good-bg)}
.cons-step.done .cs-dot{background:var(--good)}
.vpill.promoted{background:var(--good);color:#fff;margin-left:5px}
.o9-step{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:var(--good-bg);border:1px solid #bfe6cf;border-radius:10px;padding:11px 14px;font-size:12.5px}
.o9-step .btn.sm{background:var(--good);white-space:nowrap}
/* run Output page — full-triage card + lanes heading */
.fulltri{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.fulltri-acts{display:flex;align-items:center;gap:12px}
.lanes-head{font-size:13px;font-weight:640;color:var(--ink);margin:18px 0 10px}

/* ── left sidebar (product-style nav with foldable groups) ── */
.sidebar{width:236px;flex:none;height:100vh;background:var(--sidebar);border-right:1px solid var(--sidebar-2);display:flex;flex-direction:column;overflow-y:auto}
/* dark sidebar — light text/contrast overrides */
.sidebar .logo{fill:#fff}
.sidebar .sb-title h1{color:#fff}
.sidebar .sb-brand .sub{color:rgba(255,255,255,.5)}
.sidebar .sb-gh,.sidebar .sb-gh .chev{color:rgba(255,255,255,.42)}
.sidebar .sb-item{color:var(--sidebar-tx);font-weight:520}
.sidebar .sb-item .ic{color:rgba(255,255,255,.45)}
.sidebar .sb-item:hover{background:var(--sidebar-hover)}
.sidebar .sb-item.active{background:var(--sidebar-active);color:#fff;font-weight:640}
.sidebar .sb-item.active .ic{color:#fff}
.sidebar .sb-item.active::before{background:#5b8cff}
.sidebar .sb-foot{border-top:1px solid rgba(255,255,255,.1);background:var(--sidebar)}
.sidebar .sb-foot .who-txt b{color:#fff}
.sidebar .sb-foot .who-role,.sidebar .sb-foot .who-caret{color:rgba(255,255,255,.55)}
.sidebar .sb-foot .who-btn:hover{background:rgba(255,255,255,.07)}
.sidebar .runid{color:rgba(255,255,255,.5)}
.sidebar .sb-foot .who{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.13)}
.sidebar .sb-foot .who b,.sidebar .sb-foot .who-txt b{color:#fff}
.sidebar .sb-foot .who,.sidebar .sb-foot .who .so{color:rgba(255,255,255,.62)}
/* user-menu notifications + logout (floating bell removed) */
.who .av{position:relative}
.av-dot{position:absolute;top:-4px;right:-4px;min-width:15px;height:15px;padding:0 3px;border-radius:8px;background:var(--bad);color:#fff;font-size:9px;font-weight:700;display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 2px var(--sidebar)}
.wm-h-row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.who-menu .notif-list{max-height:224px;overflow-y:auto;margin:2px 0}
.wm-logout .wm-who b{color:var(--bad)}
.wm-logout:hover{background:var(--bad-bg)}
.sb-substage{font-size:9px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.34);padding:8px 11px 3px 12px}
.sb-brand{display:flex;align-items:center;gap:11px;padding:16px 16px 14px}
.sb-brand .logo{height:24px;width:auto;flex:none}
.sb-title h1{font-size:14.5px;line-height:1.1}
.sb-title .sub{font-size:10.5px;color:var(--muted);margin-top:2px}
.sb-cat{display:block;padding:6px 16px 12px;border-bottom:1px solid var(--line2)}
.sb-cat .catsel-l{display:block;font-size:9.5px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.5px;margin-bottom:6px}
.sb-cat select{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);font-size:13px;font-weight:600;font-family:inherit;cursor:pointer;outline:none}
.sb-cat select:hover{border-color:var(--brand);color:var(--brand)}
.sb-nav{flex:1;padding:10px 10px 6px;min-height:0;overflow-y:auto}
.sb-group{margin-bottom:4px}
.sb-gh{width:100%;display:flex;align-items:center;justify-content:space-between;background:none;border:0;padding:8px 10px 6px;font-size:10px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.6px;cursor:pointer;font-family:inherit}
.sb-gh .chev{font-style:normal;font-size:11px;transition:transform .15s;color:var(--faint)}
.sb-group.collapsed .chev{transform:rotate(-90deg)}
.sb-group.collapsed .sb-items{display:none}
.sb-item{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:8px;font-size:13.5px;color:var(--ink);text-decoration:none;font-weight:550;margin-bottom:1px;position:relative}
.sb-item .ic{font-size:14px;color:var(--faint);width:16px;text-align:center;flex:none}
.sb-item:hover{background:var(--bg)}
.sb-item.active{background:var(--info-bg);color:var(--brand);font-weight:640}
.sb-item.active .ic{color:var(--brand)}
.sb-item.active::before{content:'';position:absolute;left:-10px;top:6px;bottom:6px;width:3px;border-radius:0 3px 3px 0;background:var(--brand)}
.sb-foot{padding:12px 14px;border-top:1px solid var(--line2);display:flex;flex-direction:column;gap:8px;align-items:flex-start;flex:none}
.sb-foot .who{max-width:100%}
.sb-foot .mock{align-self:flex-start}
/* user switcher opens UPWARD from the sidebar footer (not off the bottom edge) */
.sb-foot .who-wrap{width:100%}
.sb-foot .who{width:100%}
.sb-foot .who-menu{top:auto;bottom:calc(100% + 8px);right:auto;left:0;width:232px;max-height:74vh;overflow-y:auto}

/* anchored-base header + clickable swim-lane entry cards */
.lockchip{font-size:11px;font-weight:700;color:var(--amber);background:var(--amber-bg);border:1px solid #f0dcae;border-radius:20px;padding:2px 9px;vertical-align:middle;margin-left:8px}
.lane-card.entry{display:block;text-decoration:none;color:inherit;cursor:pointer;transition:transform .06s,border-color .12s,box-shadow .12s}
.lane-card.entry:hover{transform:translateY(-2px);border-color:var(--brand);box-shadow:0 6px 20px rgba(0,75,234,.12)}
.lane-open{margin-top:11px;padding-top:10px;border-top:1px solid var(--line2);font-size:12px;font-weight:640;color:var(--brand)}

/* ═══════════ swim-lane revamp: nav · explainer · action bar · convergence · notifications ═══════════ */

/* prescriptive lane pills: idle grey · in-progress/assigned amber · final green */
.lane-pill.work{background:var(--amber-bg);color:var(--amber)}
.lane-pill.xs{font-size:9.5px;padding:1px 7px}

/* primary button (was referenced but never defined — inline, not full-width like .btn) */
.btn-primary{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 16px;border:0;background:var(--brand);color:#fff;border-radius:9px;font-size:13.5px;font-weight:650;cursor:pointer;text-decoration:none}
.btn-primary:hover{background:var(--brand-d)}
.btn-primary:disabled{opacity:.55;cursor:default}

/* base avatar chip — shape/centering so chips OUTSIDE .who (lanes, action bar, inbox) are round.
   .who .av (size+brand bg) and .av.sm (size) remain higher-specificity overrides. */
.av{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--brand);color:#fff;width:24px;height:24px;font-size:10px;font-weight:700;letter-spacing:.3px;flex:none}

/* contextual per-run sidebar sub-nav */
#sb-run-group .sb-items{border-left:2px solid var(--line2);margin-left:11px;padding-left:5px}
.sb-subitem{font-size:13px;padding:7px 10px}
.sb-subitem .sb-ic{font-size:12px;color:var(--faint);width:15px;display:inline-block;text-align:center}
.sb-subitem.active .sb-ic{color:var(--brand)}
.sb-lanedot{width:8px;height:8px;border-radius:50%;background:var(--faint);flex:none}
.sb-lanedot.idle{background:var(--faint)} .sb-lanedot.work{background:var(--amber)} .sb-lanedot.ok{background:var(--good)}
.sb-runid{margin-left:auto;font-size:10px;color:var(--faint);font-weight:600}
.sb-assign{margin-left:4px;color:var(--amber);font-weight:800}
.sb-conv{margin-left:auto;font-size:10.5px;font-weight:700;color:var(--muted);background:var(--line2);border-radius:20px;padding:1px 7px}
.sb-conv.done{color:var(--good);background:var(--good-bg)}

/* base-page explainer */
.explainer{background:linear-gradient(180deg,#f8faff,var(--card));border-color:var(--info-line)}
.expl-lead{font-size:13.5px;line-height:1.62;color:var(--ink)}
.expl-lead b{color:var(--brand)}
.expl-flow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:13px 0 4px}
.ef-node{font-size:11.5px;font-weight:640;background:#fff;border:1px solid var(--line);border-radius:8px;padding:6px 11px;color:var(--ink)}
.ef-node.accent{background:var(--brand);border-color:var(--brand);color:#fff}
.ef-arr{color:var(--faint);font-weight:800}
.expl-foot{font-size:12px;margin-top:9px}

/* lane cards: tag, blurb, unit-mix bar */
.lane-h{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.lane-tag{font-size:10.5px;font-weight:640;color:var(--faint);text-transform:uppercase;letter-spacing:.5px;margin-top:2px}
.lane-blurb{font-size:12px;line-height:1.5;color:var(--muted);margin:9px 0 10px;min-height:54px}
.mixbar{display:flex;height:7px;border-radius:5px;overflow:hidden;background:var(--line2)}
.mixseg{height:100%}
.mixkey{display:flex;gap:9px;flex-wrap:wrap;margin-top:6px}
.mixk{font-size:10.5px;color:var(--muted)}
.lane-who{display:flex;align-items:center;gap:6px;font-size:11.5px;margin-top:4px}
.lane-owner{margin-top:8px}

/* lane action bar */
.lane-bar{display:flex;justify-content:space-between;align-items:center;gap:14px;flex-wrap:wrap;background:linear-gradient(180deg,#f8faff,var(--card))}
.lb-left{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:12.5px}
.lb-meta{display:flex;align-items:center;gap:6px;color:var(--ink)}
.lb-meta.ok{color:var(--good);font-weight:600}
.lb-acts{display:flex;gap:8px;flex-wrap:wrap}
.lb-acts .btn.sm{width:auto}
.lb-acts .btn.sm:disabled{opacity:.5;cursor:not-allowed}
.bywho{display:inline-flex;align-items:center;gap:6px}
.vcur-meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap}

/* confirm modal */
.confirm-modal{position:fixed;z-index:40;top:50%;left:50%;transform:translate(-50%,-50%);width:min(440px,92vw);background:#fff;border-radius:14px;box-shadow:0 24px 60px -12px rgba(10,22,51,.4);padding:22px 24px}
.confirm-modal h3{margin:0 0 8px;font-size:16px}
.cf-body{font-size:13px;line-height:1.6;color:var(--muted)}
.confirm-acts{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
.confirm-acts .btn,.confirm-acts .btn-ghost{width:auto}

/* assign popover */
.assign-pop{position:absolute;z-index:50;width:280px;max-height:60vh;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 16px 40px -10px rgba(10,22,51,.32);padding:6px}
.assign-pop .ap-h{font-size:10.5px;font-weight:700;color:var(--faint);text-transform:uppercase;letter-spacing:.5px;padding:8px 9px 6px}
.assign-pop .wm-item{display:flex;align-items:center;gap:9px;width:100%;background:none;border:0;cursor:pointer;padding:8px 9px;border-radius:8px;text-align:left}
.assign-pop .wm-item:hover{background:#f1f4f8}
.assign-pop .wm-who{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.assign-pop .wm-role{font-size:10.5px;color:var(--muted)}
.assign-pop .wm-dot{margin-left:auto;color:var(--good)}
.ap-clear{width:100%;text-align:left;background:none;border:0;border-top:1px solid var(--line2);margin-top:4px;padding:9px;color:var(--bad);cursor:pointer;font-size:12px;font-weight:600}
.ap-clear:hover{background:var(--bad-bg)}

/* convergence */
.cons-track{display:flex;flex-direction:column;gap:8px}
.cons-step{text-decoration:none;transition:border-color .1s,transform .06s}
a.cons-step:hover{border-color:var(--brand);transform:translateX(2px)}
.cons-step.ok{border-color:#bfe6cf;background:var(--good-bg)} .cons-step.ok .cs-dot{background:var(--good)}
.cons-step.work{border-color:#f0dcae;background:var(--amber-bg)} .cons-step.work .cs-dot{background:var(--amber)}
.conv-meter{height:8px;border-radius:5px;background:var(--line2);overflow:hidden;margin-top:12px}
.conv-meter.big{height:11px;margin-top:4px}
.conv-meter .cm-fill{height:100%;background:var(--good);border-radius:5px;transition:width .3s}
.conv-actions{display:flex;gap:24px;flex-wrap:wrap;margin-top:2px}
.conv-actions .ca-block{flex:1;min-width:230px}

/* notifications bell + inbox (sidebar footer, opens upward) */
.sb-notif{position:relative;align-self:flex-start}
.notif-btn{position:relative;background:none;border:1px solid var(--line);border-radius:9px;width:34px;height:34px;font-size:15px;cursor:pointer;color:var(--ink);line-height:1}
.notif-btn:hover{border-color:var(--brand)}
.notif-badge{position:absolute;top:-6px;right:-6px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--bad);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center}
.notif-badge[hidden]{display:none}
.notif-menu{position:absolute;bottom:calc(100% + 8px);left:0;width:320px;max-height:60vh;overflow:auto;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 16px 40px -10px rgba(10,22,51,.32);z-index:60}
.nm-h{display:flex;justify-content:space-between;align-items:center;padding:11px 13px;border-bottom:1px solid var(--line2);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--faint);position:sticky;top:0;background:#fff}
.nm-h .lnk{text-transform:none;letter-spacing:0;font-weight:600}
.notif-item{display:flex;gap:10px;width:100%;text-align:left;background:none;border:0;border-bottom:1px solid var(--line2);padding:11px 13px;cursor:pointer}
.notif-item:hover{background:#f6f8fb}
.notif-item.unread{background:#f2f7ff}
.notif-item.unread:hover{background:#e9f1ff}
.ni-body{display:flex;flex-direction:column;gap:2px;min-width:0}
.ni-body b{font-size:12.5px}
.ni-sub{font-size:11.5px;color:var(--muted);line-height:1.45}
.ni-when{font-size:10.5px;color:var(--faint);margin-top:2px}

/* ═══════════ Performance section (dollarized backtest — exec + planner) ═══════════ */
.pf-svg{width:100%;height:auto;display:block}
.pf-lbl{font-size:10.5px;fill:var(--muted)}
.pf-val{font-size:11px;fill:var(--ink);font-weight:600}
.pf-val .pf-sub{fill:var(--muted);font-weight:400}
.pf-grid{stroke:var(--line2)}
.pf-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;font-size:11.5px;color:var(--muted)}
.pf-legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:5px;vertical-align:-1px}
.pf-ctrl{display:flex;align-items:center;gap:10px;margin-bottom:14px;font-size:12px;color:var(--muted)}
.pf-ctrl input[type=range]{flex:none;width:160px}
.pf-ctrl b{color:var(--ink)}
.pf-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}
.pf-kpi{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:15px 17px}
.pf-kpi.accent{background:linear-gradient(180deg,#f4f8ff,var(--card));border-color:var(--info-line)}
.pf-k-lbl{font-size:11.5px;color:var(--muted)}
.pf-k-big{font-size:30px;font-weight:740;letter-spacing:-.5px;margin:5px 0 2px;color:var(--ink)}
.pf-k-sub{font-size:12px;color:var(--muted)}
.pf-k-sub .up{color:var(--good);font-weight:600}.pf-k-sub .down{color:var(--amber);font-weight:600}
.pf-drill{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.pf-row{cursor:pointer}.pf-row:hover{background:var(--info-bg)}
.pf-explore{display:grid;grid-template-columns:300px 1fr;gap:16px;align-items:start}
.pf-side .card{position:sticky;top:16px}
.pf-mover{display:flex;flex-direction:column;padding:8px 10px;border-radius:8px;cursor:pointer;text-decoration:none;color:var(--ink);border:1px solid transparent}
.pf-mover:hover{background:var(--bg);border-color:var(--line)}
.pf-mover b{font-size:12px}.pf-mover .muted{font-size:10.5px}
.pf-chip{display:inline-flex;align-items:center;gap:5px;background:var(--info-bg);color:var(--brand);border-radius:20px;padding:3px 10px;font-size:11px;margin:3px 4px 0 0;cursor:pointer}
.pf-chip i{cursor:pointer;font-style:normal;opacity:.6}.pf-chip i:hover{opacity:1}
.pf-econ{display:flex;gap:18px;flex-wrap:wrap;font-size:12.5px;color:var(--muted);margin:2px 0 12px}
.pf-econ b{color:var(--ink)}
.pf-mms{margin-top:10px;display:flex;flex-direction:column;gap:5px}
.pf-mm{font-size:12.5px;display:flex;align-items:center;gap:7px}
.pf-mm-dot{width:9px;height:9px;border-radius:50%;flex:none}
.pf-acts{display:flex;gap:9px;flex-wrap:wrap;margin-top:14px}
.pf-acts .btn.sm,.pf-acts .btn-ghost.sm{width:auto}
.pf-ai-h{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--faint);margin-bottom:6px}
.pf-ai-t{font-size:13.5px;line-height:1.6;color:var(--ink);margin:0}
@media(max-width:900px){.pf-kpis,.pf-drill,.pf-explore{grid-template-columns:1fr}}

/* objective 3-way scorecard: actual anchor + peer model cards + drill toggle */
.pf-anchor{font-size:13px;color:var(--muted);margin:2px 0 12px}
.pf-anchor b{color:var(--ink);font-size:15px}
.pf-models{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;margin-bottom:18px}
.pf-mcard{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:14px 16px}
.pf-m-top{font-size:13px;display:flex;align-items:center;gap:7px}
.pf-m-dot{width:10px;height:10px;border-radius:50%;flex:none}
.pf-m-acc{font-size:30px;font-weight:740;letter-spacing:-.5px;margin:6px 0 2px;display:flex;align-items:baseline;gap:8px}
.pf-m-accl{font-size:11.5px;font-weight:500;color:var(--muted);letter-spacing:0}
.pf-m-money{font-size:12px;color:var(--ink)}
.pf-toggle{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0 12px;font-size:12px}
.pf-pill{border:1px solid var(--line);background:#fff;border-radius:20px;padding:5px 13px;font-size:12px;font-weight:600;cursor:pointer;color:var(--ink)}
.pf-pill:hover{border-color:var(--mc,var(--brand))}
.pf-pill.on{background:var(--mc,var(--brand));border-color:var(--mc,var(--brand));color:#fff}
.pf-clk{cursor:pointer}
.pf-clk:hover rect:first-child{fill:var(--info-bg)}

/* ── chart engine: bars, axes, point labels, hover tooltip ── */
.pf-barl{font-size:11.5px;fill:var(--muted)}
.pf-track{fill:var(--line2);opacity:.55}
.pf-axl{font-size:10.5px;fill:var(--faint)}
.pf-ptl{font-size:10px;font-weight:700}
.pf-empty{padding:26px 16px;text-align:center;color:var(--muted);font-size:13px;background:linear-gradient(180deg,var(--bg),transparent);border-radius:10px}
.pf-hovcol{fill:transparent;cursor:crosshair}
.pf-hovcol:hover{fill:var(--brand);fill-opacity:.05}
.pf-tip{position:fixed;z-index:9999;pointer-events:none;background:#0e1726;color:#fff;border-radius:9px;padding:9px 11px;font-size:11.5px;box-shadow:0 8px 24px rgba(0,0,0,.28);min-width:132px}
.pf-tip[hidden]{display:none}
.pf-tip .tip-h{font-weight:700;font-size:11px;margin-bottom:5px;opacity:.85}
.pf-tip .tip-r{display:flex;align-items:center;gap:6px;line-height:1.75;white-space:nowrap}
.pf-tip .tip-r i{width:9px;height:9px;border-radius:2px;flex:none}
.pf-tip .tip-r b{margin-left:auto;padding-left:16px}

/* ── eyebrow + headline banner ── */
.pf-eyebrow{font-size:11.5px;color:var(--muted);margin:0 0 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.pf-tag{background:var(--ink);color:#fff;border-radius:5px;padding:2px 8px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.pf-headline{background:linear-gradient(120deg,#0e1726,#1b2a44);color:#fff;border-radius:16px;padding:20px 24px;margin-bottom:16px;display:flex;justify-content:space-between;align-items:center;gap:26px;flex-wrap:wrap;box-shadow:var(--shadow)}
.pf-hl-big{font-size:22px;font-weight:730;letter-spacing:-.4px;line-height:1.28;max-width:540px}
.pf-hl-big .pos{color:#4ade80}
.pf-hl-cap{font-size:12.5px;opacity:.74;margin-top:8px}
.pf-hl-stats{display:flex;gap:28px;align-items:flex-start}
.pf-hl-stat{display:flex;flex-direction:column}
.pf-hl-stat .v{font-size:23px;font-weight:740;letter-spacing:-.5px;line-height:1.1}
.pf-hl-stat .v.pos{color:#4ade80}
.pf-hl-stat .l{font-size:10.5px;opacity:.72;margin-top:3px;max-width:118px}
.pos{color:var(--good)}

/* ── model cards: error + bias + $ ── */
.pf-mcard.champ{border-color:var(--mc);box-shadow:0 0 0 1px var(--mc) inset,var(--shadow)}
.pf-m-role{font-size:10.5px;color:var(--muted);margin-left:auto;text-transform:uppercase;letter-spacing:.4px}
.pf-m-badge{background:var(--mc);color:#fff;border-radius:20px;padding:2px 9px;font-size:10.5px;font-weight:700;margin-left:8px}
.pf-mcard .pf-m-dot{background:var(--mc)}
.pf-m-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:13px 0 11px}
.pf-m-cell{display:flex;flex-direction:column}
.pf-m-cell .cv{font-size:26px;font-weight:740;letter-spacing:-.5px;line-height:1;color:var(--ink)}
.pf-m-cell .cl{font-size:10.5px;color:var(--muted);margin-top:4px}

/* ── trend charts grid — two-up, side by side (stacks on narrow) ── */
.pf-charts{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
@media(max-width:1024px){.pf-charts{grid-template-columns:1fr}}
.pf-hero-chart{border-top:2px solid var(--good)}

/* ── comparison bars (pfVs) + money-leak panels + branch table ── */
.pf-vs-v{font-size:10.5px;font-weight:600;fill:var(--ink)}
.pf-vs-d{font-size:11.5px;font-weight:700}
.pf-vs-legend{margin-top:2px}
.pf-sec-h{display:flex;align-items:baseline;gap:10px;margin:22px 0 12px;flex-wrap:wrap}
.pf-sec-h h3{font-size:15.5px;margin:0;letter-spacing:-.2px}
.pf-sec-h span{font-size:12px;color:var(--muted)}
.pf-leaks{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.pf-leak-t{font-size:13.5px;font-weight:650;color:var(--ink);margin-bottom:12px;display:flex;flex-direction:column;gap:2px}
.pf-leak-t span{font-size:11px;font-weight:400;color:var(--muted)}
.lk{display:flex;align-items:center;gap:10px;margin:8px 0}
.lkm{font-size:10.5px;color:var(--muted);width:56px;flex:none;text-transform:uppercase;letter-spacing:.3px}
.lkm.us{color:var(--good);font-weight:700}
.lkbar{flex:1;height:15px;background:var(--line2);border-radius:5px;overflow:hidden}
.lkbar i{display:block;height:100%;border-radius:5px}
.lk b{font-size:13px;width:66px;text-align:right;flex:none;color:var(--ink)}
.pf-leak-msg{margin-top:13px;font-size:12px;line-height:1.55;color:var(--muted);border-top:1px solid var(--line);padding-top:11px}
.pf-leak-msg.pos{color:#1a7a44;font-weight:500}
.pf-th{padding:12px 16px;display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.pf-th-note{font-size:11.5px;font-weight:400;color:var(--muted)}
.arw{color:var(--faint);font-weight:400;margin:0 1px}
.pf-verdict{font-size:10px;font-weight:700;padding:2px 9px;border-radius:20px;text-transform:uppercase;letter-spacing:.4px}
.pf-verdict.win{background:#e7f6ee;color:#1a7a44}
.pf-verdict.watch{background:#fdecec;color:#c0392b}
@media(max-width:960px){.pf-leaks{grid-template-columns:1fr}}

/* ── top-sellers win/watch toggle + SKU dossier ── */
.pf-skutoggle{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden;margin-bottom:12px}
.pf-seg{padding:7px 15px;font-size:12px;font-weight:600;background:#fff;color:var(--muted);border:0;border-right:1px solid var(--line);cursor:pointer}
.pf-seg:last-child{border-right:0}
.pf-seg.on{background:var(--ink);color:#fff}
.pf-err{font-size:10px;font-weight:600;margin-top:1px}
.pf-skutbl td{vertical-align:middle}
.pf-searchrow{display:flex;gap:8px;margin:8px 0 2px}
.pf-searchrow .f{flex:1;min-width:0}
.pf-searchrow .btn{flex:none}
.pf-empty-main{display:flex;align-items:center;gap:16px;padding:42px 26px;color:var(--muted)}
.pf-empty-ic{font-size:34px;color:var(--line2);flex:none}
.pf-empty-main b{color:var(--ink);font-size:14px}
.pf-read{background:var(--info-bg);border:1px solid var(--info-line);border-radius:10px;padding:12px 15px;font-size:13px;line-height:1.55;color:var(--ink);margin-bottom:8px}
.pf-read .pos{color:#1a7a44;font-weight:600}
.pf-dossier .pf-kpis{margin:15px 0}
.pf-dh{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;flex-wrap:wrap}
.pf-dh h3{margin:0;font-size:17px;letter-spacing:-.3px}
.pf-dh-acts{display:flex;gap:8px;flex-wrap:wrap}
.pf-dh-acts .btn.sm,.pf-dh-acts .btn-ghost.sm{width:auto}
.pf-dtbl{margin-top:12px}
.pf-dtbl-us{background:#f2fbf6}
.pf-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;vertical-align:-1px}
.pf-mover .arw{color:var(--faint)}

/* ── "how it's calculated" info affordance + explainer panel ── */
.pf-info{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;border:1px solid var(--line);background:#fff;color:var(--muted);font:italic 700 10px/1 Georgia,serif;cursor:pointer;margin-left:7px;vertical-align:middle;padding:0;flex:none}
.pf-info:hover,.pf-info.on{background:var(--brand);border-color:var(--brand);color:#fff}
.pf-explain{background:var(--info-bg);border:1px solid var(--info-line);border-radius:9px;padding:11px 14px;margin:8px 0 2px;font-size:12px;line-height:1.6;color:var(--ink)}
.pf-explain b{font-weight:650}
.pf-explain[hidden]{display:none}

/* ── branch drill-down (click a branch → its items, anchored to actuals) ── */
.pf-brow{cursor:pointer}
.pf-brow:hover,.pf-brow.open{background:var(--info-bg)}
.pf-exp{display:inline-block;width:14px;color:var(--faint);font-size:10px;transition:transform .15s}
.pf-brow.open .pf-exp{transform:rotate(90deg);color:var(--brand)}
.pf-bdetail>td{background:var(--bg);padding:2px 16px 14px 30px;border-bottom:2px solid var(--line)}
.pf-bd-rec{background:#eef4ff;border-left:3px solid var(--brand);border-radius:0 8px 8px 0;padding:10px 14px;font-size:12.5px;line-height:1.5;color:var(--ink);margin:12px 0 10px}
.pf-bd-h{font-size:10.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.4px;margin:6px 0 4px}
.pf-bd-tbl{font-size:12px;background:var(--card);border-radius:8px;overflow:hidden;box-shadow:var(--shadow)}
.pf-bd-tbl thead th{background:var(--bg);font-size:10px}
.pf-bd-row{cursor:pointer}
.pf-bd-row:hover{background:var(--info-bg)}
.pf-fc2{font-size:10px;color:var(--muted);font-weight:500;margin-top:1px}

/* ── category + view tabs ── */
.pf-tabs{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin:0 0 18px;flex-wrap:wrap;border-bottom:1px solid var(--line)}
.pf-lobtabs{display:inline-flex;gap:6px;padding-bottom:8px}
.pf-lobtab{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 13px;font-size:12.5px;font-weight:600;color:var(--ink);cursor:pointer}
.pf-lobtab.on{background:var(--ink);color:#fff;border-color:var(--ink)}
.pf-lobtab.soon{color:var(--faint);cursor:not-allowed}
.soonb{font-size:9px;background:var(--line2);color:var(--muted);border-radius:10px;padding:1px 6px;margin-left:4px;text-transform:uppercase;letter-spacing:.3px;font-weight:700}
.pf-vtabs{display:inline-flex;gap:2px}
.pf-vtab{padding:8px 16px;font-size:13px;font-weight:600;color:var(--muted);text-decoration:none;border-bottom:2px solid transparent;margin-bottom:-1px}
.pf-vtab:hover{color:var(--ink)}
.pf-vtab.on{color:var(--brand);border-bottom-color:var(--brand)}

/* ── branch advantage heat map ── */
.pf-heatleg{display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--muted);margin-bottom:10px;flex-wrap:wrap}
.pf-hl-sw{width:20px;height:11px;border-radius:2px;display:inline-block}
.pf-heatgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:6px}
.pf-hcell{border:1px solid var(--line);border-radius:8px;padding:9px 8px;cursor:pointer;display:flex;flex-direction:column;gap:2px;text-align:left;font:inherit;transition:transform .1s}
.pf-hcell:hover{transform:translateY(-1px);box-shadow:var(--shadow)}
.pf-hcell.sel{outline:2px solid var(--brand);outline-offset:1px}
.pf-hc-b{font-size:11px;font-weight:600;opacity:.85}
.pf-hc-v{font-size:13.5px;font-weight:740;letter-spacing:-.3px}
.pf-hc-r{font-size:10px;opacity:.82;font-weight:500}
.pf-heatctrl{display:flex;align-items:center;gap:16px;margin-bottom:12px;font-size:12.5px;color:var(--muted);flex-wrap:wrap}
.pf-heatctrl label{display:flex;align-items:center;gap:6px}
.pf-heatctrl select{font-size:12.5px;padding:5px 9px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--ink);cursor:pointer}

/* Revision impact — category version diff (what a planner changed between two versions) */
.diffcard{margin-top:16px}
.diff-empty .diff-sub{max-width:660px;margin-top:6px}
.diff-t{font-size:15px;font-weight:650;color:var(--ink);letter-spacing:-.1px}
.diff-vs{font-size:11.5px;font-weight:600;color:var(--brand);background:var(--info-bg);border:1px solid var(--info-line);padding:2px 9px;border-radius:20px;margin-left:8px;vertical-align:middle;white-space:nowrap}
.diff-sub{color:var(--muted);font-size:12.5px;margin-top:4px}
.diff-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.diff-tiles{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin:16px 0 6px}
.dtile{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:11px 13px}
.dtile-big{font-size:22px;font-weight:750;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.5px;line-height:1.1}
.dtile-big.up{color:var(--good)} .dtile-big.down{color:var(--bad)}
.dtile-lab{font-size:10.5px;color:var(--muted);margin-top:4px;text-transform:uppercase;letter-spacing:.3px;display:flex;flex-direction:column;gap:2px}
.dtile-fine{text-transform:none;letter-spacing:0;font-size:11px;color:var(--faint);font-weight:600}
.diff-ctx{margin:14px 0 2px;font-size:12.5px;color:var(--muted);background:var(--line2);border-radius:8px;padding:9px 13px}
.diff-ctx b{color:var(--ink);font-variant-numeric:tabular-nums}
.diff-movers-h{font-size:11.5px;font-weight:650;color:var(--ink);text-transform:uppercase;letter-spacing:.4px;margin:18px 0 9px}
.dmtbl{border-collapse:collapse;width:100%}
.dmtbl thead th{background:transparent;border-bottom:1px solid var(--line);font-size:11px;cursor:default}
.dmtbl td{padding:7px 10px;border-bottom:1px solid var(--line2);font-variant-numeric:tabular-nums}
.dm-name{max-width:240px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-variant-numeric:normal;color:var(--ink);font-weight:500}
.dm-old{color:var(--muted)} .dm-arrow{color:var(--faint);text-align:center;padding:0 2px}
.dm-new{color:var(--ink);font-weight:600}
.dm-delta{font-weight:750} .dm-delta.up{color:var(--good)} .dm-delta.down{color:var(--bad)}
.dbar{display:flex;width:122px;align-items:center;position:relative}
.dbar::before{content:"";position:absolute;left:50%;top:2px;bottom:2px;width:1px;background:var(--line)}
.dbar-l{flex:1;display:flex;justify-content:flex-end}
.dbar-r{flex:1;display:flex;justify-content:flex-start}
.dbar-l span{height:9px;background:var(--bad);border-radius:3px 0 0 3px;display:block}
.dbar-r span{height:9px;background:var(--good);border-radius:0 3px 3px 0;display:block}
.diff-more{font-size:12px;color:var(--muted);margin-top:11px}
@media(max-width:900px){.diff-tiles{grid-template-columns:repeat(2,1fr)}}

/* Finalize — the one committing action; deliberately black so it stands apart from the blue UI */
.btn-finalize{background:var(--ink);color:#fff;border:1px solid var(--ink);border-radius:8px;padding:8px 18px;font-size:13px;font-weight:650;cursor:pointer;display:inline-flex;align-items:center;gap:6px;box-shadow:0 1px 2px rgba(16,32,52,.20),0 2px 8px rgba(16,32,52,.10);transition:background .12s,transform .05s;white-space:nowrap}
.btn-finalize:hover{background:#0b1119;border-color:#0b1119}
.btn-finalize:active{transform:translateY(1px)}
.btn-finalize:disabled{opacity:.45;cursor:not-allowed;box-shadow:none}
.vhist-head .lh-assign{font-weight:600}

/* ── Home launcher (#/home) — full-bleed desktop of pillar tiles ── */
.is-home .sidebar{display:none}
.is-home .view{max-width:none;padding:0}

/* ── Weather-Aware Demand Map (#/weatheraware) — native interactive explorer ── */
.wa-kpis{display:flex;gap:12px;flex-wrap:wrap;margin:0 0 14px}
.wa-kpi{background:var(--card);border:1px solid var(--line);border-radius:11px;box-shadow:var(--shadow);padding:11px 15px;min-width:190px;flex:1}
.wa-kpi .l{font-size:10.5px;color:var(--muted);text-transform:uppercase;letter-spacing:.4px}
.wa-kpi b{display:block;font-size:22px;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.15;margin:2px 0}
.wa-kpi span{font-size:11.5px;color:var(--muted)}
.wa-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(320px,.85fr);gap:16px;align-items:start}
@media(max-width:1100px){.wa-grid{grid-template-columns:1fr}}
.wa-card{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:14px 16px}
.wa-dhead{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.wa-dhead b{font-size:15px}
.wa-toggle{display:flex;gap:0}
.wa-tg{font-size:12px;font-weight:600;padding:6px 13px;border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:pointer}
.wa-tg:first-child{border-radius:8px 0 0 8px}.wa-tg:last-child{border-radius:0 8px 8px 0;border-left:none}
.wa-tg.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.wa-leg{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin:2px 0 6px}
.wa-lg{display:inline-flex;align-items:center;gap:5px}.wa-lg i{width:11px;height:11px;border-radius:2px;display:inline-block}
.wa-chart{width:100%;height:auto;display:block}
.wa-cap{font-size:11.5px;color:var(--muted);margin-top:6px;line-height:1.5}
.wa-map{width:100%;height:auto;display:block;background:#fff;border:1px solid var(--line);border-radius:10px}
.wa-st{cursor:pointer;transition:fill .1s}.wa-st:hover{fill:#dce7f4}
.wa-slab{font-size:8.5px;font-weight:600;fill:#5a6572;text-anchor:middle}
.wa-tick{font-size:9px;fill:var(--muted)}
.wa-reg{font-size:9.5px;fill:var(--faint)}
.wa-mleg{display:flex;gap:14px;flex-wrap:wrap;font-size:11px;color:var(--muted);margin:8px 0 4px;align-items:center}
.wa-mleg .d{width:10px;height:10px;border-radius:50%;display:inline-block;margin-right:4px;vertical-align:-1px}
.wa-listhd{font-size:12px;font-weight:640;margin:8px 0 6px}
.wa-listbox{max-height:200px;overflow:auto;border:1px solid var(--line);border-radius:9px}
.wa-tbl{width:100%;border-collapse:collapse;font-size:11.5px}
.wa-tbl th{position:sticky;top:0;background:#fbfcfe;text-align:left;padding:6px 9px;font-size:10px;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);border-bottom:1px solid var(--line)}
.wa-tbl td{padding:5px 9px;border-bottom:1px solid var(--line2)}
.wa-tbl .num{text-align:right;font-variant-numeric:tabular-nums}
.wa-row{cursor:pointer}.wa-row:hover td{background:var(--info-bg)}.wa-row.on td{background:#e3eefc}

/* ── Data-warehouse source picker (Source step) ── */
.wh-modes{display:flex;gap:0}
.wh-mode{font-size:12.5px;font-weight:600;padding:7px 14px;border:1px solid var(--line);background:var(--card);color:var(--muted);cursor:pointer}
.wh-mode:first-child{border-radius:8px 0 0 8px}.wh-mode:last-child{border-radius:0 8px 8px 0;border-left:none}
.wh-mode.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.wh-catalog{border:1px solid var(--line);border-radius:10px;max-height:300px;overflow:auto;background:var(--card);width:100%}
.wh-mo-h{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);padding:8px 12px 4px;background:#fbfcfe;position:sticky;top:0}
.wh-item{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:0;border-top:1px solid var(--line2);background:none;padding:9px 12px;cursor:pointer;font-size:12.5px;color:var(--ink)}
.wh-item:hover{background:var(--info-bg)}
.wh-item.on{background:#e3eefc;box-shadow:inset 3px 0 0 var(--brand)}
.wh-dot{width:9px;height:9px;border-radius:50%;flex:none}
.wh-it-main{flex:1;min-width:0}
.wh-it-meta{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11.5px}
.wh-badge{display:inline-block;font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:#0f6e56;background:#e6f4ee;border:1px solid #bfe3d3;border-radius:10px;padding:1px 7px;margin-left:6px}
/* month chooser — pick a month, then only that month's vintages render (no endless scroll) */
.wh-mchips{display:flex;flex-wrap:wrap;gap:6px;padding:10px 12px;border-bottom:1px solid var(--line);background:#fbfcfe;position:sticky;top:0;z-index:1}
.wh-mchip{font-size:12px;font-weight:600;padding:5px 11px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.wh-mchip:hover{border-color:var(--brand);color:var(--ink)}
.wh-mchip.on{background:var(--brand);color:#fff;border-color:var(--brand)}
.wh-mn{font-size:10px;font-weight:700;background:rgba(0,0,0,.09);border-radius:999px;padding:0 6px;min-width:16px;text-align:center}
.wh-mchip.on .wh-mn{background:rgba(255,255,255,.25)}
.wh-star{color:#e0a400}.wh-mchip.on .wh-star{color:#ffe08a}
.hm-wrap{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:48px 32px;background:
  radial-gradient(1100px 520px at 18% -12%, rgba(55,126,184,.07), transparent 60%),
  radial-gradient(900px 500px at 92% 112%, rgba(31,157,87,.05), transparent 55%), #fbfcfe}
.hm-head{text-align:center;margin-bottom:38px;max-width:720px}
.hm-eyebrow{display:block;font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:#377eb8;margin-bottom:10px;font-weight:700}
.hm-head h1{font-size:34px;letter-spacing:-.5px;margin:0 0 12px;color:#1f2328}
.hm-head p{color:#57606a;font-size:14.5px;line-height:1.65;margin:0}
.hm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,270px));gap:16px;justify-content:center;width:100%;max-width:1080px}
.hm-tile{display:flex;flex-direction:column;gap:8px;background:#ffffff;border:1px solid #e4e9ef;border-radius:14px;padding:20px 18px 16px;
  text-decoration:none;color:#e6e9ee;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:transform .12s ease,box-shadow .12s ease,border-color .12s ease}
.hm-tile:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(31,60,90,.12);border-color:#9ec3e0}
.hm-tile.soon{opacity:.78}
.hm-ic{width:44px;height:44px;border-radius:11px;background:rgba(55,126,184,.10);color:#377eb8;display:flex;align-items:center;justify-content:center;font-size:21px}
.hm-name{font-weight:720;font-size:15.5px;color:#1f2328}
.hm-extmark{color:#8b949e;font-size:12px}
.hm-pitch{color:#57606a;font-size:12px;line-height:1.5;min-height:34px}
.hm-chip{align-self:flex-start;font-size:10.5px;border-radius:999px;padding:3px 9px;margin-top:2px;font-weight:640;letter-spacing:.2px}
.hm-chip.sk{min-width:110px;color:transparent}
.hm-chip.ok{background:rgba(26,122,68,.10);color:#1a7a44}
.hm-chip.idle{background:#eef1f5;color:#57606a}
.hm-chip.ok{background:rgba(31,157,87,.12);color:#1f9d57}
.hm-list{margin:4px 0 8px;padding-left:20px;display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--ink)}
.sb-home{margin:2px 8px 8px}
.sb-ext .sb-extmark{margin-left:auto;color:var(--muted);font-size:11px}

/* ── Performance v2: comparison pair pills + KPI cards + winner matrix ── */
.pf-pair{display:flex;align-items:center;gap:6px;margin:2px 0 12px}
.pf-pairpill{border:1px solid var(--line);background:var(--card,#fff);border-radius:999px;padding:5px 13px;font-size:12px;font-weight:640;color:var(--muted);cursor:pointer}
.pf-pairpill.on{background:#004BEA;border-color:var(--brand);color:#fff}
.pf-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:2px 0 14px}
.pf-kpis .kpi{min-width:0;padding:12px 15px}
.pf-kpis .kpi .n{display:block;color:#16191c;font-size:21px;font-weight:740;letter-spacing:-.3px;font-variant-numeric:tabular-nums}
.pf-kpis .kpi .l{display:block;margin-top:4px;line-height:1.5}
@media (max-width:1100px){.pf-kpis{grid-template-columns:repeat(2,1fr)}}
.pfm-table{border-collapse:collapse;width:100%;font-size:12px}
.pfm-table th{padding:9px 10px;text-align:left;background:var(--bg);border-bottom:1px solid var(--line);font-size:11px;color:var(--muted);white-space:nowrap}
.pfm-table tbody th{border-right:1px solid var(--line);font-weight:660;color:var(--ink)}
.pfm-corner{font-weight:600}
.pfm-cell{padding:8px 10px;border:1px solid rgba(255,255,255,.55);cursor:pointer;min-width:104px;vertical-align:top}
.pfm-cell.empty{color:var(--muted);cursor:default;background:var(--bg)}
.pfm-cell .pfm-w{display:block;font-weight:720;font-size:11.5px}
.pfm-cell .pfm-a{display:block;font-size:11px;opacity:.92}
.pfm-cell .pfm-u{display:block;height:3px;background:rgba(255,255,255,.35);border-radius:2px;margin-top:5px;overflow:hidden}
.pfm-cell .pfm-u i{display:block;height:100%;background:rgba(255,255,255,.9)}
.pfm-cell:hover{outline:2px solid var(--brand);outline-offset:-2px}

/* ── Adjust workspace (aj-) — filter bar, summary strip, op composer, ledger ── */
.aj-filters{padding:12px 14px}
.aj-frow{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-end}
.aj-f{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--muted);font-weight:600}
.aj-f select,.aj-f input{border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:12.5px;background:#fff;min-width:150px}
.aj-scopeline{margin-top:10px;font-size:12px;color:var(--ink);border-top:1px dashed var(--line);padding-top:9px}
.aj-strip-t th{white-space:nowrap}
.aj-strip-t td.num{font-variant-numeric:tabular-nums}
.aj-strip-t .aj-total th,.aj-strip-t .aj-total td{border-top:2px solid var(--ink);font-weight:640;background:var(--bg)}
.aj-ghost s{color:var(--muted);font-weight:400;margin-right:4px}
.aj-ghost b{color:#0d5c8c}
.aj-two{display:grid;grid-template-columns:minmax(420px,3fr) minmax(300px,2fr);gap:14px;margin-top:14px;align-items:start}
@media (max-width:1100px){.aj-two{grid-template-columns:1fr}}
.aj-verbs{display:flex;gap:6px;flex-wrap:wrap;padding:2px 0 10px}
.aj-verb{border:1px solid var(--line);background:#fff;border-radius:999px;padding:6px 12px;font-size:12px;font-weight:620;color:var(--muted);cursor:pointer}
.aj-verb.on{background:#004BEA;border-color:var(--brand);color:#fff}
.aj-params{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding-bottom:8px}
.aj-params input,.aj-params select{border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:13px}
.aj-months{display:flex;gap:5px;flex-wrap:wrap}
.aj-mchip{border:1px solid var(--line);background:#fff;border-radius:7px;padding:4px 9px;font-size:11.5px;cursor:pointer;color:var(--muted);font-weight:620}
.aj-mchip.on{background:rgba(2,95,158,.09);border-color:#8fa8ef;color:#003ec2}
.aj-mchip.aj-q{border-style:dashed}
.aj-noterow{display:flex;gap:8px;margin-top:10px}
.aj-noterow input{flex:1;border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:12.5px}
.aj-pvbox{margin-top:10px;background:var(--bg);border:1px solid var(--line);border-radius:9px;padding:10px 12px;font-size:12.5px}
.aj-movers{margin-top:8px;display:flex;flex-direction:column;gap:4px}
.aj-mover{display:flex;justify-content:space-between;font-size:11.5px;padding:4px 8px;background:var(--bg);border-radius:6px}
.aj-op{border-bottom:1px dashed var(--line);padding:9px 2px}
.aj-op:last-child{border-bottom:0}
.aj-op-h{display:flex;align-items:center;gap:7px;font-size:12.5px}
.aj-op-s{font-size:11px;color:var(--muted);margin-top:3px}
.aj-op-n{font-size:11px;color:var(--ink);margin-top:3px;font-style:italic}

/* ── Backtest explorer (bt-) — model multi-select ── */
.bt-ctrl{padding:12px 14px;margin-bottom:14px}
.bt-models{display:flex;gap:8px;flex-wrap:wrap}
.bt-model{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:999px;padding:6px 13px 6px 9px;font-size:12.5px;font-weight:640;cursor:pointer;background:#fff;color:var(--muted)}
.bt-model input{position:absolute;opacity:0;pointer-events:none}
.bt-model i{width:11px;height:11px;border-radius:50%;background:var(--line2);border:2px solid transparent}
.bt-model:has(input:checked){border-color:var(--mc);color:var(--ink);background:color-mix(in srgb, var(--mc) 7%, #fff)}
.bt-model:has(input:checked) i{background:var(--mc)}

/* backtest methodology + zero reference line */
.pf-grid0{stroke:#b9bfc9;stroke-width:1.4}
.bt-method{padding:12px 16px;margin-top:14px}
.bt-method summary{cursor:pointer;font-weight:660;font-size:13px;color:var(--ink)}
.bt-method ol{margin:10px 0 4px;padding-left:22px;display:flex;flex-direction:column;gap:8px;font-size:12.5px;line-height:1.5;color:var(--ink)}
.bt-method code{background:var(--bg);border:1px solid var(--line);border-radius:5px;padding:1px 5px;font-size:11px}

/* equal-height chart cards: force grid stretch, pin the legend to the card bottom */
.pf-charts{align-items:stretch}
.pf-charts>.card{height:auto;display:flex;flex-direction:column}
.pf-charts>.card .pf-legend{margin-top:auto;padding-top:8px}
.pf-charts>.card+.card{margin-top:0}  /* grid gap owns the spacing here, not the stacked-card rule */

.pf-tip-help{max-width:400px;line-height:1.55;font-size:12px;pointer-events:auto}
.pf-tip-help code{background:rgba(255,255,255,.12);border-radius:4px;padding:1px 5px;font-size:11px}

/* value waterfall (wf-) */
.wf-card{margin-bottom:14px}
.wf-val{font-size:15px;font-weight:740;fill:var(--ink);font-variant-numeric:tabular-nums}
.wf-name{font-size:12px;font-weight:680;fill:var(--ink)}
.wf-sub{font-size:10px;fill:var(--muted)}
.wf-bridge{stroke:#94989c;stroke-width:1.3;stroke-dasharray:3 3.5}
.wf-chip{fill:#f1f3ee;stroke:#bcd0c4}
.wf-delta{font-size:11px;font-weight:720;fill:#047857}
.wf-total{font-size:12.5px;font-weight:700;fill:#047857}

/* ── Backtest v2: verdict header, scope pills, popover, model cards, win map ── */
.bt-head{margin-bottom:12px}
.bt-verdict{font-size:15px;line-height:1.5;margin-top:6px}
.bt-scopebar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:9px;font-size:12.5px;color:var(--muted)}
.bt-allbook{color:var(--ink);font-weight:620}
.bt-pill{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:4px 10px;font-size:12px;color:var(--ink);cursor:pointer}
.bt-mpill.on{border-color:var(--brand);color:var(--brand);font-weight:640}
.bt-pop-val em{margin-left:auto;font-style:normal;color:var(--brand);font-weight:700}
.bt-pill i{font-style:normal;color:var(--muted);padding:0 2px;border-radius:50%}
.bt-pill i:hover{color:var(--bad)}
.bt-addf{border:1px dashed var(--line);background:transparent;border-radius:999px;padding:4px 11px;font-size:12px;color:var(--brand);font-weight:640;cursor:pointer}
.bt-addf:hover{border-color:var(--brand)}
.bt-reset{border:0;background:transparent;color:var(--muted);font-size:12px;cursor:pointer;text-decoration:underline}
.bt-months{font-size:11.5px}
.bt-pop{position:fixed;z-index:220;width:330px;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 34px rgba(12,29,54,.16);overflow:hidden}
.bt-pop-h{display:flex;justify-content:space-between;align-items:center;padding:10px 13px;font-weight:680;font-size:13px;border-bottom:1px solid var(--line2)}
.bt-pop-x{border:0;background:none;font-size:16px;cursor:pointer;color:var(--muted)}
.bt-pop-dims{display:flex;flex-direction:column;padding:6px}
.bt-pop-dim{text-align:left;border:0;background:none;padding:9px 10px;font-size:13px;border-radius:8px;cursor:pointer;color:var(--ink)}
.bt-pop-dim:hover{background:var(--bg)}
.bt-pop-vals{max-height:320px;overflow:auto;padding:6px}
.bt-pop-val{display:flex;align-items:center;gap:8px;width:100%;text-align:left;border:0;background:none;padding:8px 10px;font-size:12.5px;border-radius:8px;cursor:pointer;color:var(--ink)}
.bt-pop-val:hover{background:var(--bg)}
.bt-pop-val.on{background:rgba(31,75,143,.09);font-weight:680}
.bt-pop-val i{height:4px;background:#aecaea;border-radius:2px}
.bt-pop-val em{margin-left:auto;font-style:normal;font-size:10.5px;color:var(--muted)}
.bt-mcards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}
@media (max-width:1100px){.bt-mcards{grid-template-columns:repeat(2,1fr)}}
.bt-mcard{position:relative;display:flex;flex-direction:column;gap:3px;text-align:left;background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px 17px 13px;cursor:pointer;overflow:hidden;transition:transform .12s,box-shadow .12s,opacity .12s}
.bt-mcard::before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--mc)}
.bt-mcard.on{box-shadow:0 6px 20px rgba(5,8,15,.07)}
.bt-mcard.on:hover{transform:translateY(-2px)}
.bt-mcard:not(.on){opacity:.45}
.bt-mcard:not(.on)::before{opacity:.35}
.bt-mc-name{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}
.bt-best{background:rgba(14,122,85,.10);color:#0e7a55;margin-left:auto;text-transform:none;letter-spacing:0}
.bt-mc-wape{font-size:30px;font-weight:780;font-variant-numeric:tabular-nums;letter-spacing:-.8px;color:var(--ink);margin-top:5px}
.bt-mc-off{color:var(--faint)}
.bt-mc-sub{font-size:11px;color:var(--muted);display:block;margin-top:1px}
.bt-h2h{background:linear-gradient(150deg,#0a1220,#12203a);border-color:#0a1220;cursor:default}
.bt-h2h::before{background:linear-gradient(90deg,#2f5fae,#b8860b)}
.bt-h2h .bt-mc-name{color:#8b96ad}
.bt-h2h .bt-mc-wape{color:#fff}
.bt-h2h .bt-mc-sub{color:#8b96ad}
.btm-ab{font-size:12px;font-weight:720}
.btm-ab.ghost{fill:#bfc3c7;font-weight:500}
.btm-pp{font-size:9.5px;font-weight:640;opacity:.92}
.btm-leg{font-size:11px;fill:var(--muted)}
.btm-tile{cursor:pointer}
.btm-tile:hover rect{stroke:#0c1d36;stroke-width:1.5}

/* bullet-style help tooltips + richer model-card identity */
.pf-tip-help ul{margin:6px 0 2px;padding-left:16px;display:flex;flex-direction:column;gap:4px}
.pf-tip-help li{list-style:disc}
.bt-mc-ic{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:15px;font-style:normal;background:color-mix(in srgb, var(--mc) 14%, #fff);color:var(--mc);border:1px solid color-mix(in srgb, var(--mc) 32%, #fff)}
.bt-mc-ic.off{opacity:.5}
.bt-mcard.on{background:linear-gradient(180deg, color-mix(in srgb, var(--mc) 5%, #fff), #fff 55%)}
.bt-mc-wape{font-size:26px}
.bt-verdict{font-size:16.5px}
.bt-pop-dim{display:flex;align-items:center;justify-content:space-between;gap:8px}

/* geography page: slide-over state panel (crm drawer pattern) */
.geo-panel{position:fixed;top:0;right:0;bottom:0;width:min(480px,92vw);background:#fff;border-left:1px solid var(--line);box-shadow:-18px 0 48px rgba(12,29,54,.18);z-index:210;display:flex;flex-direction:column;animation:geoIn .18s ease}
@keyframes geoIn{from{transform:translateX(24px);opacity:0}to{transform:none;opacity:1}}
.geo-panel-h{display:flex;align-items:center;gap:8px;padding:15px 18px;border-bottom:1px solid var(--line2);font-size:15px}
.geo-panel-h .bt-pop-x{margin-left:auto}
.geo-mcs{display:flex;gap:8px;padding:13px 16px;flex-wrap:wrap}
.geo-mc{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:9px;padding:7px 11px;font-size:12px}
.geo-mc i{width:9px;height:9px;border-radius:50%;background:var(--mc)}
.geo-mc b{font-size:14px}
.geo-mc em{font-style:normal;color:#047857}
.geo-chart{padding:2px 12px 8px;flex:none}
.geo-panel-f{padding:13px 16px;border-top:1px solid var(--line2)}
.geo-pair{margin-left:4px}

/* geography v2: real map + left results panel + AI card */
.geo-wrap{display:flex;gap:14px;align-items:stretch}
.geo-left[hidden]{display:none}
.geo-left{width:400px;flex:none;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);display:flex;flex-direction:column;height:fit-content;animation:geoInL .18s ease}
@keyframes geoInL{from{transform:translateX(-16px);opacity:0}to{transform:none;opacity:1}}
.geo-mapcard{flex:1;min-width:0}
.geo-map{width:100%;height:auto;display:block}
.geo-state{fill:#eceef2;stroke:#fff;stroke-width:1.1;cursor:pointer;transition:fill .12s}
.geo-state:hover{fill:#e0e4ea}
.geo-state.sel{fill:#e6e9ee;stroke:#0c1d36;stroke-width:1.4}
.geo-dot{stroke:#fff;stroke-width:1.2;cursor:pointer;opacity:.94}
.geo-dot:hover{stroke:#0c1d36;stroke-width:1.6}
.geo-dot.sel{stroke:#0c1d36;stroke-width:2}
.geo-legendrow{display:flex;align-items:center;gap:7px;font-size:11px;color:var(--muted);padding:9px 4px 2px}
.geo-legendrow em{margin-left:auto;font-style:normal;color:var(--brand);cursor:pointer;font-weight:640}
.geo-clhead{padding:11px 15px 5px;font-size:12px;font-weight:680;color:var(--ink);display:flex;align-items:center;gap:5px}
.geo-cllist{display:flex;flex-direction:column;padding:0 8px 8px}
.geo-clrow,.geo-clcols{display:grid;grid-template-columns:12px minmax(0,1fr) 74px 64px 72px 56px;align-items:center;gap:8px}
.geo-clrow{border:0;background:none;padding:7px 9px;border-radius:8px;cursor:pointer;font-size:12px;text-align:left}
.geo-clrow:hover{background:var(--bg)}
.geo-clcols{padding:2px 9px 4px;margin:0 8px;font-size:9.5px;text-transform:uppercase;letter-spacing:.35px;color:var(--faint);border-bottom:1px solid var(--line2)}
.geo-clcols span{text-align:right;white-space:nowrap;overflow:hidden}
.geo-clcols span:nth-child(2){text-align:left}
.geo-cldot{width:10px;height:10px;border-radius:50%;flex:none;border:1px solid rgba(0,0,0,.12)}
.geo-clname{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.geo-clact{font-variant-numeric:tabular-nums;text-align:right;color:var(--ink);font-weight:640}
.geo-cldev{font-variant-numeric:tabular-nums;text-align:right;color:var(--muted)}
.geo-cldev.over{color:#9a6a08}
.geo-cldev.under{color:#2f5fae}
.geo-clpp{font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.geo-clu{color:var(--muted);font-size:10.5px;width:44px;text-align:right}
.geo-ai{margin:4px 14px 8px;border:1px solid var(--line);border-left:3px solid var(--brand);border-radius:9px;padding:10px 13px;background:linear-gradient(180deg,#f7f8fa,#fff)}
.geo-ai-h{font-size:11px;font-weight:740;letter-spacing:.4px;text-transform:uppercase;color:var(--brand);margin-bottom:5px}
.geo-ai p{margin:0;font-size:12.5px;line-height:1.55}
.geo-ai-f{margin-top:7px;font-size:10px;color:var(--muted)}

/* the four monthly views: one aligned 2×2 panel below the waterfall (no swiping) */
.bt-grid4{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.bt-grid4>.card{display:flex;flex-direction:column;min-width:0}
.bt-grid4>.card .pf-legend{margin-top:auto;padding-top:8px}
.bt-grid4>.card+.card{margin-top:0}  /* the stacked-card rule must not leak into the grid */
@media (max-width:1100px){.bt-grid4{grid-template-columns:1fr}}
.bt-aud-row{display:flex;align-items:center;gap:8px;font-size:11.5px;padding:3px 2px}
.bt-aud-row i{width:9px;height:9px;border-radius:50%}
.bt-aud-row span{flex:1;color:var(--ink)}
.bt-aud-row b{font-variant-numeric:tabular-nums}
.bt-aud-list{columns:2;column-gap:18px;padding:6px 4px 2px}
.geo-legend-what{color:var(--ink);font-weight:680;display:inline-flex;align-items:center;gap:4px}

.bt-aud-list{font-size:11px}

.bt-aud-lbhead{font-size:12px;font-weight:680;padding:10px 4px 4px;border-top:1px solid var(--line2);margin-top:8px}
.bt-aud-fam{flex:none;width:118px;font-size:9.5px;text-transform:uppercase;letter-spacing:.3px;color:var(--faint);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.bt-aud-row.best span:not(.bt-aud-fam){font-weight:720}
.bt-aud-row.best b{color:#0e7a55}

/* deep drill: the reading pane IS the page; the map becomes a stamp, top right */
.geo-left{transition:width .22s ease}
.geo-wrap.geo-deep{align-items:flex-start}
.geo-wrap.geo-deep .geo-left{order:1;flex:1;width:auto;min-width:0}
.geo-wrap.geo-deep .geo-mapcard{order:2;flex:none;width:min(36%,470px);position:sticky;top:10px}
.geo-wrap.geo-deep .geo-mapcard .card-h .hint{display:none}
.geo-wrap.geo-deep .geo-legendrow span:not(.geo-legend-what){display:none}
.geo-wrap.geo-wide .geo-mapcard{width:min(22%,300px)}
.geo-hbtn{border:1px solid var(--line);background:#fff;border-radius:7px;padding:4px 9px;font-size:11px;color:var(--ink);cursor:pointer;margin-left:6px}
.geo-hbtn:hover{border-color:var(--brand);color:var(--brand)}
.geo-panel-h .bt-pop-x{margin-left:2px}
.geo-panel-h{flex-wrap:wrap}
.geo-panel-h .geo-hbtn:first-of-type{margin-left:auto}

.bt-aud-details{margin-top:8px;border-top:1px solid var(--line2);padding-top:8px}
.bt-aud-details summary{cursor:pointer;font-size:12px;font-weight:680}
.bt-mc-unit{font-size:11px;font-weight:640;font-style:normal;color:var(--muted);margin-left:6px;letter-spacing:.3px}
.tip-lb{margin-top:9px;border-top:1px solid rgba(255,255,255,.18);padding-top:7px;max-height:300px;overflow:auto}
.tip-lb b{display:block;margin-bottom:5px;font-size:11px}
.tip-lb .bt-aud-row{padding:2px 0;font-size:11px}
.tip-lb .bt-aud-fam{width:104px;color:rgba(255,255,255,.55)}
.tip-lb .bt-aud-row.best b{color:#7ddfb2;display:inline}

/* 2) national map fits the viewport by default — no manual zoom-out hunting */
#geo-svg svg{max-height:calc(100vh - 330px);width:100%;display:block;margin:0 auto}
.geo-wrap.geo-deep #geo-svg svg{max-height:300px}
.geo-lbl{font-weight:660;fill:#16191c;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round;pointer-events:none}
.bt-aud-proto{font-size:11px;line-height:1.5;color:var(--muted);background:var(--info-bg);border:1px solid var(--info-line);border-radius:8px;padding:7px 11px;margin:2px 0 10px}
.bt-aud-proto b{color:var(--ink)}

/* geo panel: units-anchored numbers table + capped chart height */
.geo-numtbl{display:flex;flex-direction:column;gap:2px;padding:12px 16px 6px}
.geo-numact{display:flex;align-items:center;gap:8px;font-weight:680;font-size:13px;border-bottom:1px solid var(--line2);padding-bottom:8px;margin-bottom:5px}
.geo-numact b{margin-left:auto;font-variant-numeric:tabular-nums}
.geo-numrow{display:grid;grid-template-columns:11px minmax(0,1fr) 64px 110px 70px;gap:10px;align-items:center;font-size:12.5px;padding:5px 0}
.geo-numrow i{width:9px;height:9px;border-radius:50%}
.geo-numrow b{font-variant-numeric:tabular-nums;text-align:right;font-weight:660}
.geo-numrow em{font-style:normal;font-weight:700;font-variant-numeric:tabular-nums;text-align:right;color:var(--ink)}
.geo-dev{position:relative;display:block;height:8px;background:var(--line2);border-radius:4px;overflow:hidden}
.geo-dev0{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--faint)}
.geo-dev i{position:absolute;top:1px;bottom:1px;border-radius:3px}
.geo-chart .pf-svg{max-height:320px;width:100%}
.wf-chip.worse{fill:#f6f2e8;stroke:#d9c49a}
.wf-delta.worse{fill:#9a6a08}

/* bigger map, same panel height: convert card chrome into map pixels */
.geo-mapcard{padding:10px 12px 8px}
.geo-mapcard .card-h{margin-bottom:4px}
.geo-legendrow{padding:6px 4px 0}
#geo-svg svg{max-height:calc(100vh - 226px)}
.geo-wrap.geo-deep #geo-svg svg{max-height:400px}

/* national map chrome floats over the frame's south-west ocean corner — the map keeps the height */
.geo-maprel{position:relative}
.geo-zoomctl{position:absolute;left:10px;bottom:40px;display:flex;gap:4px}
.geo-akhi{position:absolute;left:104px;bottom:40px;display:flex;gap:6px}
.geo-akhi button{border:1px solid var(--line);background:rgba(255,255,255,.88);border-radius:8px;padding:4px 10px;font-size:11px;font-weight:640;color:var(--ink);cursor:pointer}
.geo-akhi button:hover{border-color:var(--brand);color:var(--brand)}
.geo-legendrow{position:absolute;left:10px;bottom:6px;right:auto;background:rgba(255,255,255,.88);border-radius:8px;padding:4px 9px;flex-wrap:wrap}
.geo-wrap.geo-deep .geo-zoomctl{position:static;margin-top:4px}
.geo-wrap.geo-deep .geo-akhi{display:none}
.geo-wrap.geo-deep .geo-legendrow{position:static;background:none;padding:6px 4px 0}

/* map-card breadcrumb: quiet text trail, not buttons — the current level reads as the title */
#geo-crumb{display:flex;align-items:center;gap:1px;flex-wrap:wrap;min-width:0}
#geo-crumb .geo-bc{border:0;background:none;padding:2px 5px;font:inherit;font-size:12px;font-weight:560;color:var(--muted);cursor:pointer;border-radius:6px;white-space:nowrap;max-width:230px;overflow:hidden;text-overflow:ellipsis}
#geo-crumb .geo-bc:hover{color:var(--brand);background:var(--bg)}
#geo-crumb .geo-bc-sep{color:var(--faint);font-style:normal;font-size:10px;padding:0 2px;font-weight:400}
#geo-crumb .geo-bc:last-child,#geo-crumb .geo-bc-cur{color:var(--ink);font-weight:730;font-size:12.5px}
#geo-crumb .geo-bc-cur{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px;padding:2px 5px}

.geo-chart-h{font-size:12px;font-weight:680;color:var(--ink);padding:10px 15px 2px;display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.geo-chart-h .muted{font-weight:480;font-size:11px}

/* trade-area/branch depth: the map card becomes a navigation tree — no map chrome */
.geo-wrap.geo-treemode .geo-zoomctl,.geo-wrap.geo-treemode .geo-legendrow{display:none}

/* Triggers — persistent misses: the streak board (geography x month heat matrix) */
.trg-ctl{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:2px 0 14px;font-size:12px}
.trg-sep{width:1px;height:18px;background:var(--line);margin:0 6px}
.trg-mhead,.trg-mrow{display:grid;grid-template-columns:minmax(0,1fr) repeat(6,58px) 118px 66px 80px;gap:6px;align-items:center}
.trg-mhead{padding:2px 10px 6px;font-size:9.5px;text-transform:uppercase;letter-spacing:.35px;color:var(--faint);border-bottom:1px solid var(--line2)}
.trg-mhead span{text-align:center;white-space:nowrap;overflow:hidden}
.trg-mhead span:first-child{text-align:left}
.trg-mhead span:nth-last-child(-n+2){text-align:right}
.trg-mrow{width:100%;border:0;background:none;text-align:left;padding:5px 10px;border-radius:8px;cursor:pointer;font-size:12px;color:var(--ink)}
.trg-mrow:hover{background:var(--bg)}
.trg-mname{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:640}
.trg-cell{display:block;text-align:center;font-size:10.5px;font-weight:640;font-variant-numeric:tabular-nums;padding:5px 0;border-radius:7px;border:1.4px solid transparent;white-space:nowrap;overflow:hidden}
.trg-cell.on{border-color:rgba(12,20,34,.55);font-weight:740}
.trg-cell.off{color:var(--faint);background:var(--bg)}
.trg-runchip{font-size:10px;font-weight:700;color:var(--muted);background:var(--bg);border:1px solid var(--line2);border-radius:8px;padding:3px 6px;text-align:center;white-space:nowrap;overflow:hidden}
.trg-medge{text-align:right;font-weight:700;font-variant-numeric:tabular-nums}
.trg-medge.over{color:#a62a22}
.trg-medge.under{color:#14693c}
.trg-munits{text-align:right;font-weight:640;font-variant-numeric:tabular-nums;color:var(--ink)}
.br-zone{font-weight:680;letter-spacing:.2px;opacity:.55}
.br-dot{stroke:#fff;stroke-width:.9;cursor:pointer}
.br-dot:hover{stroke:#0c1d36;stroke-width:1.6}
.br-legend{padding-top:10px}
.trg-inv{margin-top:14px}
.trg-inv-row{display:flex;gap:26px;align-items:center;flex-wrap:wrap;padding:4px 2px 2px}
.trg-inv-big{font-size:26px;font-weight:780;letter-spacing:-.4px;white-space:nowrap}
.trg-inv-big em{display:block;font-style:normal;font-size:10.5px;font-weight:600;letter-spacing:.3px;text-transform:uppercase;color:var(--muted)}
.trg-inv-row p{margin:0;font-size:12.5px;line-height:1.55;flex:1;min-width:280px;color:var(--ink)}
.trg-rule{display:flex;align-items:center;gap:12px;padding:7px 4px;border-bottom:1px solid var(--line2);font-size:12px}
.trg-rule-who{font-weight:660;flex:none}
.trg-rule-what{color:var(--muted);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.trg-rule-n{flex:none;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}
.trg-rule-n.hot{color:#8c241c;font-weight:700}
.trg-rule .trg-draft{flex:0 0 auto;width:auto;font-size:11px;padding:3px 10px;white-space:nowrap}
.trg-addrule{display:flex;gap:8px;align-items:center;padding-top:12px;flex-wrap:wrap}
.trg-addrule select,.trg-addrule input{border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:12px;background:#fff;color:var(--ink)}
.trg-addrule input[type=email]{width:240px}
.trg-addrule #tr-note{flex:1;min-width:180px;max-width:320px}
.geo-tree{padding:4px 2px 6px}
.geo-tr{display:flex;align-items:center;gap:7px;width:100%;border:0;background:none;text-align:left;padding:6px 8px;border-radius:8px;cursor:pointer;font-size:12.5px;color:var(--ink)}
.geo-tr:hover{background:var(--bg)}
.geo-tr em{margin-left:auto;font-style:normal;color:var(--muted);font-size:10.5px;font-variant-numeric:tabular-nums;flex:none}
.geo-tr-nm{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.geo-tr-st{font-weight:720;font-size:13px;border-bottom:1px solid var(--line2);border-radius:8px 8px 0 0;margin-bottom:2px}
.geo-tr-cl.open{font-weight:680}
.geo-tr-car{width:10px;color:var(--faint);flex:none;font-size:9px}
.geo-tr-kids0{margin-left:4px}
.geo-tr-kids{margin-left:22px;border-left:1px solid var(--line2);padding-left:6px;margin-bottom:2px}
.geo-tr-br.on{background:var(--bg);font-weight:680}
.btgh-ab{font-size:10px;font-weight:740;fill:var(--ink)}
.btgh-ab.ghost{fill:#c6cbd2}
.btgh-ov{font-size:9.5px;font-weight:700;font-variant-numeric:tabular-nums}

/* Lab — engine runs in the cockpit */
.lab-wrap{display:grid;grid-template-columns:320px 1fr;gap:14px;align-items:start}
@media (max-width:1000px){.lab-wrap{grid-template-columns:1fr}}
.lab-runs{display:flex;flex-direction:column;gap:8px}
.lab-runrow{text-align:left;border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 12px;cursor:pointer;display:flex;flex-direction:column;gap:3px}
.lab-runrow:hover{border-color:var(--brand)}
.lab-runrow.on{border-color:var(--brand);box-shadow:inset 3px 0 0 var(--brand)}
.lab-run-name{font-weight:680;font-size:12.5px;color:var(--ink)}
.lab-run-meta{font-size:10.5px;color:var(--muted)}
.lab-run-win{font-size:11px;color:var(--ink)}
.lab-table{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}
.lab-table th{text-align:right;font-size:9.5px;text-transform:uppercase;letter-spacing:.35px;color:var(--faint);padding:4px 8px;border-bottom:1px solid var(--line2)}
.lab-table th:first-child{text-align:left}
.lab-table td{text-align:right;padding:6px 8px;border-bottom:1px solid var(--line2)}
.lab-table td.lab-md{text-align:left;font-weight:600;color:var(--ink)}
.lab-table td.lab-tot{color:var(--brand);font-weight:700}
.lab-table td.lab-tail{color:var(--muted)}
.lab-table tr.lab-win td{background:rgba(31,75,143,.06)}
.lab-table tr.lab-win td.lab-md{font-weight:740}
.lab-note{font-size:10.5px;color:var(--muted);padding:8px 2px 0}
.lab-segs{display:flex;flex-direction:column;gap:12px;padding:4px 2px}
.lab-segblock{border-top:1px solid var(--line2);padding-top:8px}
.lab-seghd{font-size:10px;text-transform:uppercase;letter-spacing:.35px;color:var(--faint);margin-bottom:5px}
.lab-segrow{display:flex;gap:10px;align-items:baseline;padding:2px 0;font-size:12px}
.lab-segm{flex:none;width:150px;font-weight:640;display:inline-flex;align-items:center;gap:6px}
.lab-segm i{width:9px;height:9px;border-radius:50%;flex:none}
.lab-segv{color:var(--muted);font-variant-numeric:tabular-nums}

/* Origin Explorer */
.ox-ctl { display: flex; flex-direction: column; gap: 10px; margin: 2px 0 14px; font-size: 12px; }
.ox-slider { display: flex; align-items: center; gap: 10px; }
.ox-slider #ox-range { flex: 1; max-width: 460px; accent-color: var(--brand); }
.ox-step { border: 1px solid var(--line); background: #fff; border-radius: 7px; width: 26px; height: 26px; cursor: pointer; color: var(--brand); font-size: 15px; }
.ox-step:hover { border-color: var(--brand); }
.ox-orlabel { font-size: 13px; }
.ox-toggles { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.ox-toggles .pf-pairpill i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; margin-right: 5px; vertical-align: middle; }
.ox-sep { width: 1px; height: 16px; background: var(--line); margin: 0 5px; }
.ox-connect { stroke-width: 1.6; stroke-dasharray: 3 3; opacity: .7; }
.ox-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin: 14px 0; }
.ox-kpi { border-left: 3px solid var(--mc); }
.ox-kpi .ox-kn { font-size: 10.5px; text-transform: uppercase; letter-spacing: .3px; color: var(--mc); font-weight: 700; }
.ox-score { margin-top: 4px; }
.ox-tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; font-variant-numeric: tabular-nums; }
.ox-tbl th { text-align: right; font-size: 9.5px; text-transform: uppercase; letter-spacing: .35px; color: var(--faint); padding: 5px 10px; border-bottom: 1px solid var(--line2); }
.ox-tbl th:first-child { text-align: left; }
.ox-tbl td { text-align: right; padding: 7px 10px; border-bottom: 1px solid var(--line2); }
.ox-tbl td.ox-md { text-align: left; font-weight: 600; }
.ox-tbl td.ox-md i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; margin-right: 7px; }
.ox-tbl tr.ox-best td { background: rgba(31, 75, 143, .06); }
.ox-tbl tr.ox-off { opacity: .42; }

/* Accuracy Grid — Kyle's spreadsheet */
.grid-ctl { display: flex; flex-direction: column; gap: 10px; margin: 2px 0 12px; font-size: 12px; }
.grid-row1, .grid-row2 { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.grid-tab { border: 1px solid var(--line); background: #fff; border-radius: 9px 9px 0 0; padding: 7px 14px; font-size: 12.5px; font-weight: 640; color: var(--muted); cursor: pointer; }
.grid-tab.on { color: var(--brand); border-color: var(--brand); border-bottom-color: #fff; background: var(--bg); }
.grid-tab.soon { opacity: .45; cursor: not-allowed; }
.grid-sep { width: 1px; height: 16px; background: var(--line); margin: 0 4px; }
.grid-m i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; margin-right: 5px; vertical-align: middle; }
.grid-search { border: 1px solid var(--line); border-radius: 8px; padding: 6px 10px; font-size: 12px; min-width: 160px; }
.grid-abs { display: inline-flex; align-items: center; gap: 5px; color: var(--muted); font-size: 11.5px; }
.grid-count { color: var(--faint); font-size: 11px; margin-left: auto; }
.grid-card { padding: 0; overflow: hidden; }
.grid-scroll { overflow-x: auto; }
.grid-tbl { width: 100%; border-collapse: collapse; font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.grid-tbl th, .grid-tbl td { padding: 7px 12px; border-bottom: 1px solid var(--line2); text-align: right; }
.grid-h { cursor: pointer; font-size: 9.5px; text-transform: uppercase; letter-spacing: .3px; color: var(--faint); user-select: none; position: sticky; top: 0; background: var(--card); }
.grid-h:hover { color: var(--brand); }
.grid-h.on { color: var(--brand); }
.grid-slice-h, .grid-slice { text-align: left; position: sticky; left: 0; background: var(--card); z-index: 2; font-weight: 640; }
.grid-slice { color: var(--ink); }
.grid-mg { text-align: center; color: var(--mc); font-size: 10.5px; font-weight: 700; border-bottom: 2px solid var(--mc); text-transform: none; letter-spacing: 0; }
.grid-sub { font-size: 9px; }
.grid-r { cursor: pointer; }
.grid-r:hover td { background: var(--bg); }
.grid-r:hover .grid-slice { background: var(--bg); }
.grid-num.over { color: #9a6a08; }
.grid-num.under { color: #2f5fae; }
.grid-best { font-weight: 720; color: var(--ink); }
.grid-act { color: var(--ink); font-weight: 600; }

/* Model Studio — the primer, live */
.stu-wrap { display: grid; grid-template-columns: 232px 1fr; gap: 20px; align-items: start; }
@media (max-width: 940px) { .stu-wrap { grid-template-columns: 1fr; } }
.stu-rail { display: flex; flex-direction: column; gap: 3px; position: sticky; top: 12px; }
.stu-navrow { display: flex; align-items: center; gap: 10px; border: 0; background: none; text-align: left; padding: 9px 11px; border-radius: 9px; cursor: pointer; color: var(--muted); font-size: 13px; }
.stu-navrow:hover { background: var(--bg); color: var(--ink); }
.stu-navrow.on { background: var(--brand); color: #fff; }
.stu-navrow.on .stu-ic, .stu-navrow.on .stu-nn em { color: #fff; opacity: .85; }
.stu-ic { width: 18px; text-align: center; color: var(--faint); font-size: 14px; }
.stu-nn { display: flex; flex-direction: column; line-height: 1.25; font-weight: 600; }
.stu-nn em { font-style: normal; font-size: 9.5px; letter-spacing: .4px; color: var(--faint); font-weight: 700; }
.stu-more { margin-top: 8px; padding: 9px 11px; font-size: 12px; color: var(--brand); text-decoration: none; border-top: 1px solid var(--line2); }
.stu-more:hover { text-decoration: underline; }
.stu-pane { background: var(--card); border: 1px solid var(--line); border-radius: 14px; padding: 22px 26px 26px; box-shadow: var(--shadow); min-width: 0; }
.stu-h { display: flex; align-items: baseline; gap: 12px; margin-bottom: 4px; }
.stu-h h3 { margin: 0; font-size: 19px; letter-spacing: -.3px; }
.stu-lead { color: var(--muted); font-size: 13.5px; line-height: 1.6; margin: 4px 0 18px; max-width: 760px; }
.stu-mcards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-bottom: 8px; }
.stu-mcard { border: 1px solid var(--line); border-top: 3px solid var(--mc); border-radius: 11px; padding: 12px 14px; }
.stu-mc-n { font-weight: 700; font-size: 13px; margin-bottom: 8px; }
.stu-mc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 10px; }
.stu-mc-grid div b { font-size: 18px; font-variant-numeric: tabular-nums; display: block; }
.stu-mc-grid div span { font-size: 10px; text-transform: uppercase; letter-spacing: .3px; color: var(--faint); }
.stu-mc-grid .stu-warn b { color: #a62a22; }
.stu-barv { font-size: 11px; fill: var(--muted); font-weight: 600; }
.stu-qlab { font-size: 11px; font-weight: 700; }
.stu-assess { margin-top: 20px; border: 1px solid var(--line); border-left: 3px solid var(--gold); border-radius: 0 11px 11px 0; background: var(--bg); padding: 13px 16px; }
.stu-assess-h { font-size: 11px; font-weight: 740; letter-spacing: .5px; text-transform: uppercase; color: var(--gold); margin-bottom: 6px; }
.stu-assess p { margin: 0; font-size: 13px; line-height: 1.6; }
.stu-scoretbl { margin: 14px 0; }
.stu-openbtn { display: inline-block; margin-top: 6px; }

/* Studio — coverage + audition chapters */
.stu-cbar { position: relative; height: 8px; background: var(--line2); border-radius: 5px; margin: 10px 0 3px; }
.stu-cbar i { position: absolute; left: 0; top: 0; bottom: 0; border-radius: 5px; }
.stu-cbar b { position: absolute; right: 4px; top: -18px; font-size: 11px; font-variant-numeric: tabular-nums; }
.stu-cnote { font-size: 10.5px; color: var(--faint); }
.aud-ctl { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin: 6px 0 12px; }
.aud-livewrap { margin-left: auto; }
.aud-live { font-size: 11px; font-weight: 600; }
.aud-live.on { color: #14693c; }
.aud-live.off { color: var(--faint); }
.aud-tbl td.aud-m { text-align: left; font-weight: 600; }
.aud-tbl td.aud-m i { width: 9px; height: 9px; border-radius: 50%; display: inline-block; margin-right: 7px; }
.aud-tbl td.aud-fam { text-align: left; font-size: 10.5px; text-transform: uppercase; letter-spacing: .3px; color: var(--faint); }
.aud-tbl td.aud-n { color: var(--muted); }
.aud-tbl td.over { color: #9a6a08; } .aud-tbl td.under { color: #2f5fae; }
.aud-tbl tr.aud-best td { background: rgba(31,75,143,.06); }
.aud-tbl tr.aud-best td.aud-m { font-weight: 740; }

/* Model Evaluation page */
.ev-sub { font-size: 13px; font-weight: 600; color: var(--muted); margin: 16px 0 4px; }
.ev-note { font-size: 12.5px; color: var(--muted); line-height: 1.6; margin: 12px 2px 2px; }
.ev-foot { font-size: 11.5px; color: var(--faint); line-height: 1.65; margin: 16px 2px 2px; }
.ev-strip { display: flex; align-items: center; gap: 12px; margin: 8px 0; }
.ev-strip-l { width: 96px; font-size: 12px; color: var(--muted); text-align: right; }
.ev-strip-bar { flex: 1; display: flex; height: 20px; border-radius: 5px; overflow: hidden; }
.ev-seg { height: 100%; }
.ev-legend { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 10px; font-size: 12px; color: var(--muted); }
.ev-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 5px; vertical-align: middle; }
.axeXY td { text-align: center; padding: 8px 10px; }
.axeXY th { font-size: 12px; }

/* ── Consensus Synthesis dossier (8 tabs, cs* axis-complete chart library) ── */
.cs-tabbar { display: flex; flex-wrap: wrap; gap: 2px; border-bottom: 1px solid var(--line); margin: 2px 0 16px; }
.cs-tab { padding: 8px 14px; font-size: 13px; color: var(--muted); text-decoration: none; border-bottom: 2px solid transparent; white-space: nowrap; }
.cs-tab:hover { color: var(--ink); }
.cs-tab.active { color: var(--brand); border-bottom-color: var(--brand); font-weight: 600; }
.cs-body { margin-top: 4px; }
.cs-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin-bottom: 14px; }
.cs-tile { border: 1px solid var(--line); border-radius: 9px; background: var(--card); box-shadow: var(--shadow); }
.cs-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.cs-cell { border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px; background: var(--card); }
.cs-tablewrap { overflow-x: auto; max-height: 540px; overflow-y: auto; }
.cs-note { font-size: 11.5px; color: var(--faint); margin: 8px 2px 0; line-height: 1.5; }
.cs-seas-tabs { display: flex; gap: 6px; margin-bottom: 12px; flex-wrap: wrap; }
.cs-seas-tab { padding: 5px 15px; border: 1px solid var(--line); border-radius: 16px; background: var(--card); color: var(--muted); font-size: 12.5px; cursor: pointer; text-transform: capitalize; }
.cs-seas-tab:hover { color: var(--ink); border-color: var(--brand); }
.cs-seas-tab.active { background: var(--brand); color: #fff; border-color: var(--brand); }
@media (max-width: 900px) { .cs-grid2 { grid-template-columns: 1fr; } }
/* chart chrome used by the cs* library */
.pf-grid { stroke: var(--line2, #eeeff0); stroke-width: 1; }
.pf-grid0 { stroke: var(--grid0, #b9bfc9) !important; stroke-width: 1.4 !important; }
.chart-svg .pf-axl { fill: var(--muted); font-size: 10.5px; font-variant-numeric: tabular-nums; }
.chart-svg .pf-barl { fill: var(--ink); font-size: 11.5px; }
.chart-svg .pf-ptl { font-size: 11px; font-weight: 600; font-variant-numeric: tabular-nums; }
/* size charts sensibly — never let a viewBox scale to full page width */
.card .chart-svg, .cs-cell .chart-svg { width: 100%; max-width: 680px; height: auto; display: block; margin: 4px auto 0; }
.cs-grid2 .card .chart-svg { max-width: 100%; }
.card .pf-svg:not(.chart-svg) { width: 100%; max-width: 560px; height: auto; display: block; }

/* Vintage Eval (bias-distribution drilldowns) */
.ve-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin-top:10px}
.ve-mini{background:var(--surf,#171b21);border:1px solid var(--line,#232a32);border-radius:8px;padding:8px 10px}
.ve-mini-h{font-size:12px;font-weight:700;margin-bottom:2px}
.ve-mini-s{font-size:11px;color:var(--muted,#9aa4b0);margin-top:4px;font-variant-numeric:tabular-nums}

/* ── Demand-Pattern Bias page (#/demandbias) ── */
.db-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 18px; margin: 0 0 14px; }
.db-tog { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; font-size: 13px;
  padding: 5px 10px; border: 1px solid var(--line, #e2e4e8); border-radius: 8px; user-select: none; background: #fff; }
.db-tog.off { opacity: 0.45; }
.db-tog input { margin: 0 2px 0 0; cursor: pointer; }
.db-tog b { font-weight: 600; }
.db-book { color: #6b7280; font-variant-numeric: tabular-nums; font-size: 12px; }
.db-hint { color: #8a929c; font-size: 12px; flex-basis: 100%; }
.db-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 900px) { .db-grid { grid-template-columns: 1fr; } }
.db-card .db-chips { display: flex; flex-wrap: wrap; gap: 4px 14px; padding: 2px 12px 6px; }
.db-chip { font-size: 13.5px; color: #4b5563; font-variant-numeric: tabular-nums; white-space: nowrap; }
.db-chip i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin-right: 5px; vertical-align: middle; }
.db-chip span { color: #9aa0a6; }
.db-panel { padding: 0 8px 6px; }

/* Demand-Pattern Bias — journey card */
.db-journey { margin: 0 0 16px; }
.db-jlead { color: #4b5563; font-size: 13px; line-height: 1.55; padding: 2px 14px 8px; }
.db-journey .pf-svg { max-width: 760px; }

/* Demand-Pattern Bias — pattern tabs + focus (full-width) mode */
.db-tabs { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 14px; }
.db-tab { font-size: 13px; padding: 6px 14px; border: 1px solid var(--line, #e2e4e8); border-radius: 8px;
  background: #fff; color: #4b5563; cursor: pointer; }
.db-tab:hover { border-color: #c3c9d2; }
.db-tab.active { background: #0f172a; color: #fff; border-color: #0f172a; font-weight: 600; }
.db-focus { max-width: 1180px; }
.db-focus .db-panel { padding: 4px 12px 10px; }
.db-focus .pf-svg { max-width: 100%; }
.db-stats { width: 100%; margin: 4px 0 6px; }
.db-stats th, .db-stats td { padding: 5px 10px; }

/* Demand-Pattern Bias — sleek black chart canvas (lines only) */
.db-panel { background: #ffffff; border: 1px solid #e4e9ef; border-radius: 12px; padding: 8px 10px; }
.db-svg { width: 100%; height: auto; display: block; max-width: 100%; }
.db-focus .db-svg { max-width: 100%; }
.db-card { overflow: hidden; }

/* Demand-Pattern Bias — state small-multiples class picker */
.db-statetabs { display: flex; flex-wrap: wrap; gap: 6px; padding: 2px 12px 8px; }
.db-stab { font-size: 12px; padding: 4px 12px; border: 1px solid var(--line, #e2e4e8); border-radius: 7px;
  background: #fff; color: #4b5563; cursor: pointer; }
.db-stab:hover { border-color: #c3c9d2; }
.db-stab.active { background: #0f172a; color: #fff; border-color: #0f172a; font-weight: 600; }
.db-states { margin-top: 14px; }

/* Demand-Pattern Bias — dimension toggle (state/brand) + brand grid */
.db-dimtabs { display: inline-flex; gap: 4px; margin-left: 10px; vertical-align: middle; }
.db-dim { font-size: 12px; padding: 3px 10px; border: 1px solid var(--line, #e2e4e8); border-radius: 7px;
  background: #fff; color: #4b5563; cursor: pointer; }
.db-dim:hover:not(:disabled) { border-color: #c3c9d2; }
.db-dim.active { background: #0f172a; color: #fff; border-color: #0f172a; font-weight: 600; }
.db-dim:disabled { opacity: 0.4; cursor: default; }
.db-brandgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(225px, 1fr)); gap: 12px; padding: 4px 12px 12px; }
.db-brandtile { }
.db-brandlbl { display: flex; justify-content: space-between; align-items: baseline; font-size: 12px; margin: 0 2px 3px; }
.db-brandlbl { font-size: 14px; }
.db-brandlbl span { color: #d5dae1; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.db-brandlbl b { font-variant-numeric: tabular-nums; }
.db-brandtile .db-svg { width: 100%; height: auto; display: block; }

/* Demand-bias Models multi-select dropdown + chips */
.db-modelbar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin: 10px 0 6px; }
.db-msel { position: relative; }
.db-msel-btn { display: inline-flex; align-items: center; gap: 7px; padding: 7px 14px; border: 1px solid #d4d7dd; border-radius: 10px; background: #fff; font-size: 13px; font-weight: 600; cursor: pointer; color: #1c2430; }
.db-msel-btn:hover { border-color: #9aa1ad; }
.db-msel-btn b { background: #0e7490; color: #fff; border-radius: 999px; padding: 1px 8px; font-size: 12px; }
.db-caret { color: #6b7280; font-size: 11px; }
.db-msel-menu { position: absolute; top: calc(100% + 6px); left: 0; z-index: 60; min-width: 380px; background: #fff; border: 1px solid #d4d7dd; border-radius: 12px; box-shadow: 0 14px 36px rgba(15, 20, 30, 0.16); padding: 6px; }
.db-msel-head { font-size: 11.5px; color: #7a8291; padding: 6px 10px 4px; text-transform: uppercase; letter-spacing: 0.04em; }
.db-msel-item { display: flex; align-items: center; gap: 9px; padding: 8px 10px; border-radius: 8px; cursor: pointer; font-size: 13px; color: #1c2430; }
.db-msel-item:hover { background: #f2f4f7; }
.db-msel-item.on .db-msel-name { font-weight: 600; }
.db-msel-item input { accent-color: #0e7490; }
.db-msel-meta { margin-left: auto; color: #7a8291; font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; padding-left: 14px; }
.db-sw { display: inline-block; width: 10px; height: 10px; border-radius: 3px; flex: none; }
.db-mchip { display: inline-flex; align-items: center; gap: 7px; padding: 5px 9px 5px 11px; border: 1px solid #d4d7dd; border-radius: 999px; font-size: 12.5px; font-weight: 600; background: #fff; color: #1c2430; }
.db-mchip-x { border: none; background: none; cursor: pointer; font-size: 15px; line-height: 1; color: #7a8291; padding: 0 1px; }
.db-mchip-x:hover { color: #e2504a; }

/* demand-bias charts fill their cards (escape the generic 560px card clamp) */
.card .db-panel .pf-svg, .card .pf-svg.db-frsvg { max-width: 100%; width: 100%; height: auto; }

/* filter bar dropdown refinements */
.db-dd-k { color: #7a8291; font-weight: 500; }
.db-dd-v { font-weight: 600; }
.db-opt { user-select: none; }
.db-opt-tick { width: 14px; color: #0e7490; font-weight: 700; flex: none; }

/* ABC × XYZ matrix */
.ax-panel { padding: 12px 14px 14px; }
.ax-grid { display: grid; gap: 8px; }
.ax-colh { color: #8b949e; font-size: 13px; font-weight: 600; text-align: center; padding: 4px 0; }
.ax-rowh { display: flex; flex-direction: column; justify-content: center; gap: 1px; padding-right: 8px; }
.ax-rowh b { color: #e6e9ee; font-size: 17px; }
.ax-rowh span { color: #8b949e; font-size: 11.5px; }
.ax-rowh i { color: #6b7280; font-size: 11px; font-style: normal; }
.ax-cell { background: #141821; border: 1px solid #23262c; border-radius: 10px; padding: 10px 8px 9px; display: flex; flex-direction: column; align-items: center; gap: 2px; min-height: 74px; justify-content: center; }
.ax-cell b { font-size: 19px; font-variant-numeric: tabular-nums; }
.ax-cell span { color: #8b949e; font-size: 11px; white-space: nowrap; }
.ax-cell .ax-ref { color: #6b7280; }
.ax-all { border-color: #3f4650; background: #171c26; }
.ax-empty { color: #374151; border-style: dashed; }

/* Series Explorer */
.ex-grid { display: grid; grid-template-columns: 340px minmax(0, 1fr); gap: 14px; align-items: start; }
.ex-list { max-height: 78vh; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; padding-right: 2px; }
.ex-item { background: var(--surface-2, #fff); border: 0.5px solid #d4d7dd; border-radius: 10px; padding: 9px 11px; cursor: pointer; }
.ex-item:hover { border-color: #9aa1ad; }
.ex-item.on { border: 2px solid #0e7490; }
.ex-t { font-size: 13px; font-weight: 600; color: #1c2430; }
.ex-s { font-size: 11.5px; color: #7a8291; margin-top: 1px; }
.ex-m { font-size: 11.5px; color: #4b5563; margin-top: 2px; font-variant-numeric: tabular-nums; }

/* Weather Model (Radar) — backtested overlay + forward simulation */
.wm-verdict { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.wm-badge { font-size: 12px; font-weight: 600; background: var(--good-bg); color: #127a45; border-radius: 20px; padding: 4px 12px; white-space: nowrap; }
.wm-vtxt { font-size: 12.5px; color: var(--muted); } .wm-vtxt b { color: var(--ink); font-weight: 600; }
.wm-sel { margin-left: auto; font-size: 12.5px; color: var(--muted); }
.wm-sel select { margin-left: 6px; }
.wm-h { font-size: 14px; color: var(--ink); font-weight: 500; margin-bottom: 8px; display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.wm-h b { font-weight: 650; }
.wm-chip { font-size: 11px; font-weight: 700; border-radius: 20px; padding: 2px 9px; font-variant-numeric: tabular-nums; }
.wm-chip.good { background: var(--good-bg); color: #127a45; } .wm-chip.low { background: var(--line2); color: var(--muted); }
.wm-leg { display: flex; gap: 16px; flex-wrap: wrap; font-size: 11.5px; color: var(--muted); margin: 2px 0 8px; }
.wm-leg span { display: inline-flex; align-items: center; gap: 6px; }
.wm-leg i { width: 13px; height: 3px; border-radius: 2px; display: inline-block; }
.wm-sub { font-size: 12px; color: var(--muted); margin-top: 8px; line-height: 1.5; }
.wm-sub b { color: var(--ink); font-weight: 600; }
.wm-ibs { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 10px; }
.wm-ib { font-size: 12.5px; padding: 6px 14px; border: 1px solid var(--line); border-radius: 8px; background: var(--card); color: var(--ink); cursor: pointer; font-weight: 550; }
.wm-ib:hover { border-color: var(--brand); }
.wm-ib.on { background: var(--brand); color: #fff; border-color: var(--brand); }
.wm-read { display: flex; gap: 22px; flex-wrap: wrap; margin-top: 10px; }
.wm-read div { display: flex; flex-direction: column; }
.wm-read b { font-size: 19px; font-weight: 700; color: var(--ink); font-variant-numeric: tabular-nums; letter-spacing: -.3px; }
.wm-read span { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: .3px; margin-top: 1px; }

/* Product-category selector (Roofing / Siding / All) — Guardrail tracker */
.pcat-bar{display:flex;align-items:center;gap:6px;margin:2px 0 15px;flex-wrap:wrap}
.pcat-lbl{font-size:11px;font-weight:680;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-right:5px}
.pcat-seg{border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-size:13px;font-weight:600;padding:6px 15px;border-radius:20px;cursor:pointer;transition:background .12s,border-color .12s,color .12s}
.pcat-seg:hover{border-color:var(--brand);color:var(--brand)}
.pcat-seg.on{background:var(--brand);border-color:var(--brand);color:#fff}
.pcat-hint{font-size:11.5px;color:var(--faint);margin-left:8px}

/* Sub-category chips (Category → Sub-category), division page — secondary to .pcat-seg */
.scat-bar{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:-8px 0 16px}
.scat-bar:empty{display:none;margin:0}
.scat-seg{border:1px solid var(--line);background:var(--card);color:var(--muted);font:inherit;font-size:12px;font-weight:600;padding:4px 11px;border-radius:16px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;transition:background .12s,border-color .12s,color .12s}
.scat-seg:hover{border-color:var(--brand);color:var(--brand)}
.scat-seg.on{background:var(--brand-d,#0f2b57);border-color:var(--brand-d,#0f2b57);color:#fff}
.scat-n{font-size:10.5px;opacity:.65;font-weight:500}
.scat-seg.on .scat-n{opacity:.9}

/* Division page — stepped flow (Adjust tab) */
.lstep{padding:16px 18px;margin-bottom:14px}
.lstep-h{font-size:13.5px;font-weight:680;color:var(--ink);display:flex;align-items:center;gap:9px;margin-bottom:12px}
.lstep-n{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--brand);color:#fff;font-size:12px;font-weight:700;flex:none}
.lstep-sub{font-weight:400;color:var(--muted);font-size:12px}
.lscope-sum{font-size:13px;color:var(--ink);margin-top:12px;padding-top:11px;border-top:1px solid var(--line2,#eee)}
.lscope-sum .up{color:#1a7f4b} .lscope-sum .down{color:#c0392b}
details.lfold{padding:0}
details.lfold>summary{list-style:none;cursor:pointer;padding:15px 18px;margin:0}
details.lfold>summary::-webkit-details-marker{display:none}
details.lfold>summary::before{content:'\25B8';display:inline-block;margin-right:8px;color:var(--muted);transition:transform .12s}
details.lfold[open]>summary::before{transform:rotate(90deg)}
details.lfold .lstep-h{margin-bottom:0;display:inline-flex}
details.lfold .lfold-body{padding:2px 18px 16px}
/* sub-category multi-select dropdown */
.subdd{position:relative;display:inline-block;margin-left:auto}
.subdd-btn{border:1px solid var(--line);background:var(--card);color:var(--ink);font:inherit;font-size:12.5px;font-weight:600;padding:6px 13px;border-radius:18px;cursor:pointer;display:inline-flex;align-items:center;gap:7px}
.subdd-btn:hover{border-color:var(--brand);color:var(--brand)}
.subdd-btn i{font-style:normal;font-size:10px;opacity:.7}
.subdd-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:40;min-width:270px;max-height:342px;overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.15);padding:8px}
.subdd-opt{display:flex;align-items:center;gap:9px;padding:7px 10px;border-radius:8px;font-size:13px;cursor:pointer;color:var(--ink)}
.subdd-opt:hover{background:var(--bg)}
.subdd-opt .subdd-nm{flex:1}
.subdd-opt .scat-n{color:var(--faint);font-size:11px}
.subdd-sep{height:1px;background:var(--line2,#eee);margin:5px 2px}
.subdd-foot{display:flex;justify-content:flex-end;padding:8px 4px 2px;position:sticky;bottom:0;background:var(--card)}

/* Compact tracker (Overview) — dense program-status; one line per division */
.dtable.dt-compact tbody td{padding:8px 15px}
.dtable.dt-compact thead th{padding:7px 15px}
.t-inline{font-size:11px;color:var(--muted);font-weight:400;margin-left:6px}
.rl-roll{font-weight:400;text-transform:none;letter-spacing:0;color:var(--muted);font-size:12px;margin-left:2px}
.rl-roll b{color:var(--ink);font-weight:680}
.rl-roll .up{color:#1a7f4b} .rl-roll .down{color:#c0392b}
#ov-progress .rl-util{padding:9px 14px;margin-bottom:12px}
#ov-progress .sec-label{margin:14px 2px 8px}
.rl-conv{padding:11px 16px;margin-top:12px}
