/* ============ PrimerIQ · Company Deep-Dive — editorial design system ============ */
:root[data-theme="light"]{
  --bg:oklch(0.985 0.006 80); --surface:oklch(1 0 0); --surface-2:oklch(0.967 0.006 80);
  --border:oklch(0.905 0.006 75); --border-2:oklch(0.85 0.006 75);
  --ink:oklch(0.24 0.012 60); --ink-2:oklch(0.46 0.01 60); --ink-3:oklch(0.62 0.008 60);
  --pos:oklch(0.50 0.10 150); --neg:oklch(0.52 0.14 28);
  --pos-soft:oklch(0.94 0.04 150); --neg-soft:oklch(0.95 0.04 28); --hl:oklch(0.95 0.03 85);
  --shadow:0 1px 2px rgba(30,26,18,.04),0 14px 40px -26px rgba(30,26,18,.32);
}
:root[data-theme="dark"]{
  --bg:oklch(0.185 0.008 70); --surface:oklch(0.218 0.008 70); --surface-2:oklch(0.25 0.008 70);
  --border:oklch(0.31 0.008 70); --border-2:oklch(0.38 0.008 70);
  --ink:oklch(0.94 0.006 80); --ink-2:oklch(0.74 0.006 80); --ink-3:oklch(0.6 0.006 80);
  --pos:oklch(0.74 0.11 150); --neg:oklch(0.70 0.14 28);
  --pos-soft:oklch(0.28 0.04 150); --neg-soft:oklch(0.30 0.05 28); --hl:oklch(0.30 0.03 85);
  --shadow:0 1px 2px rgba(0,0,0,.3),0 16px 44px -26px rgba(0,0,0,.7);
}
/* accent tweak */
:root{ --accent:oklch(0.42 0.04 55); }
:root[data-accent="forest"]{ --accent:oklch(0.50 0.09 150); }
:root[data-accent="slate"]{ --accent:oklch(0.50 0.05 250); }
:root[data-accent="terracotta"]{ --accent:oklch(0.58 0.11 45); }
/* density scale */
:root{ --pad:24px; --gap:48px; --secgap:46px; --prose:18.5px; --lh:1.62; --cardpad:20px; --rowpad:11px; }
:root[data-density="compact"]{ --pad:16px; --gap:34px; --secgap:32px; --prose:16.5px; --lh:1.55; --cardpad:16px; --rowpad:8px; }

*{box-sizing:border-box;margin:0;padding:0}
html,body{background:var(--bg);color:var(--ink);font-family:"Spectral",Georgia,serif;-webkit-font-smoothing:antialiased}
body{min-height:100vh}
.mono{font-family:"Spline Sans Mono",monospace;font-feature-settings:"tnum"}
.sans{font-family:"Hanken Grotesk",system-ui,sans-serif}
.pos{color:var(--pos)} .neg{color:var(--neg)}
/* Screener Verdict pill (Buy/Watch/Pass) — theme-aware via the shared soft tokens. */
.vpill{display:inline-block;font-family:"Hanken Grotesk",system-ui,sans-serif;font-size:11px;
  font-weight:600;letter-spacing:.02em;padding:2px 9px;border-radius:999px;white-space:nowrap}
.vpill-buy{background:var(--pos-soft);color:var(--pos)}
.vpill-watch{background:var(--hl);color:var(--ink-2)}
.vpill-pass{background:var(--surface-2);color:var(--ink-3)}
button{font-family:inherit}

/* ---------- top bar ---------- */
.topbar{position:sticky;top:0;z-index:40;background:color-mix(in oklch,var(--bg) 88%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
.topbar-in{max-width:1320px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;padding:13px 40px}
.brand{display:flex;align-items:center;gap:14px}
.brand .mark{font-family:"Hanken Grotesk";font-weight:700;letter-spacing:-.01em;font-size:17px}
.crumbs{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-3);display:flex;align-items:center;gap:8px}
.crumbs b{color:var(--ink-2);font-weight:600}
.tb-right{display:flex;align-items:center;gap:10px;font-family:"Hanken Grotesk"}
.tb-link{font-size:13.5px;font-weight:500;color:var(--ink-2);text-decoration:none;padding:6px 8px;border-radius:7px}
.tb-link:hover{color:var(--ink);background:var(--surface-2)}
.search{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:7px 12px;font-size:13px;color:var(--ink-3);min-width:230px;cursor:text}
.search-wrap{position:relative}
.search-input{background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:7px 12px;font:inherit;font-size:13px;color:var(--ink);min-width:230px;outline:none}
.search-input::placeholder{color:var(--ink-3)}
.search-input:focus{border-color:var(--ink-3,#bbb)}
.search-drop{position:absolute;top:calc(100% + 6px);left:0;right:0;min-width:300px;background:var(--surface);border:1px solid var(--border);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.12);overflow:hidden;z-index:60;max-height:380px;overflow-y:auto}
.srch-item{display:flex;flex-direction:column;gap:1px;padding:9px 13px;cursor:pointer;border-bottom:1px solid var(--border)}
.srch-item:last-child{border-bottom:none}
.srch-item:hover,.srch-item.active{background:var(--hover,#f4f4f2)}
.srch-nm{font-size:13.5px;font-weight:600;color:var(--ink)}
.srch-meta{font-size:11.5px;color:var(--ink-3);font-variant-numeric:tabular-nums}
.srch-empty{padding:12px 13px;font-size:12.5px;color:var(--ink-3)}
.srch-head{display:flex;justify-content:space-between;align-items:center;padding:7px 13px;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);border-bottom:1px solid var(--border)}
.srch-clear{cursor:pointer;font-weight:600;letter-spacing:0;text-transform:none;color:var(--accent,#2a6fdb)}
.srch-clear:hover{text-decoration:underline}
.acct-wrap{position:relative;display:inline-block}
.acct-pop{position:absolute;top:calc(100% + 6px);right:0;min-width:220px;background:var(--surface,#fff);
  border:1px solid var(--border,#e2e2e0);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.12);
  padding:10px;z-index:60}
.acct-email{font-size:12px;color:var(--ink-2,#5a6270);padding:4px 6px 10px;border-bottom:1px solid var(--border,#e2e2e0);
  margin-bottom:8px;word-break:break-all}
.acct-logout{width:100%;font:inherit;font-weight:600;font-size:13px;padding:8px 12px;border-radius:8px;
  border:1px solid var(--border,#e2e2e0);background:var(--surface,#fff);color:var(--ink,#1a1a1a);cursor:pointer}
.acct-logout:hover{background:var(--hover,#f4f4f2)}
.acct-link{display:block;font:inherit;font-weight:600;font-size:13px;padding:8px 12px;border-radius:8px;
  color:var(--ink,#1a1a1a);text-decoration:none;margin-bottom:6px}
.acct-link:hover{background:var(--hover,#f4f4f2)}
.icon-btn{width:34px;height:34px;border-radius:8px;border:1px solid var(--border);background:var(--surface);display:grid;place-items:center;cursor:pointer;color:var(--ink-2);font-size:15px}
#acctBtn{font-size:20px;line-height:1}   /* settings gear — larger so it fills the button */
.icon-btn:hover{border-color:var(--border-2)}
.ask-btn{display:flex;align-items:center;gap:8px;background:var(--ink);color:var(--bg);border:none;border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer}

/* nav tabs */
.nav{border-bottom:1px solid var(--border);background:color-mix(in oklch,var(--bg) 88%,transparent);backdrop-filter:blur(10px);position:sticky;top:60px;z-index:39}
.nav-in{max-width:1320px;margin:0 auto;display:flex;gap:2px;padding:0 40px}
.tab{font-family:"Hanken Grotesk";font-size:14px;font-weight:500;color:var(--ink-3);padding:13px 16px;cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;display:flex;align-items:center;gap:8px}
.tab:hover{color:var(--ink-2)}
.tab.on{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}
.tab .cnt{font-size:11px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:1px 7px;color:var(--ink-3);font-weight:600}

.wrap{max-width:1320px;margin:0 auto;padding:0 40px 90px}
.view{display:none}
.view.on{display:block}
@media (prefers-reduced-motion: no-preference){
  .view.on{animation:fade .25s ease}
}
@keyframes fade{from{transform:translateY(5px)}to{transform:none}}

/* ---------- hero ---------- */
.hero{display:grid;grid-template-columns:1fr auto;gap:40px;align-items:flex-end;padding:22px 0 18px;border-bottom:1px solid var(--border)}
.eyebrow{font-family:"Hanken Grotesk";font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.flagtag{display:inline-flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--border);border-radius:20px;padding:3px 10px;font-size:11px;letter-spacing:.04em;text-transform:none;color:var(--ink-2)}
h1.co{font-weight:500;font-size:50px;line-height:1.02;letter-spacing:-.02em}
.co-sub{font-family:"Hanken Grotesk";font-size:14px;color:var(--ink-2);margin-top:12px;display:flex;gap:16px;flex-wrap:wrap}
.co-sub span{display:flex;align-items:center;gap:7px}
.co-desc{font-family:"Hanken Grotesk";font-size:14.5px;line-height:1.6;color:var(--ink-2);margin-top:14px;max-width:760px}
.co-desc-more{color:var(--accent,#7a5c2e);font-weight:600;cursor:pointer;white-space:nowrap}
.co-desc-more:hover{text-decoration:underline}
.dot{width:5px;height:5px;border-radius:50%;background:var(--ink-3)}
.price-cluster{text-align:right}
.price-cluster .label{font-family:"Hanken Grotesk";font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.price-cluster .px{font-family:"Spline Sans Mono";font-size:34px;font-weight:500;letter-spacing:-.01em;margin-top:4px}
.price-cluster .chg{font-family:"Spline Sans Mono";font-size:14px;margin-top:2px}
.price-cluster .pc-mktcap{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-3);margin-top:4px}
.price-cluster .pc-mktcap:empty{display:none}
.price-cluster .chg .px-native{color:var(--ink-3)}
/* Financials year RANGE: one track, two draggable knobs (overlaid range inputs). */
.dual-range{position:relative;width:220px;height:24px}
.dual-range .dr-track{position:absolute;top:10px;left:0;right:0;height:4px;border-radius:2px;background:var(--border-2)}
.dual-range .dr-fill{position:absolute;top:10px;height:4px;border-radius:2px;background:var(--accent)}
.dual-range .dr-in{position:absolute;top:0;left:0;width:100%;height:24px;margin:0;background:none;pointer-events:none;-webkit-appearance:none;appearance:none}
.dual-range .dr-in::-webkit-slider-runnable-track{background:none;border:none}
.dual-range .dr-in::-moz-range-track{background:none;border:none}
.dual-range .dr-in::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.3);cursor:pointer}
.dual-range .dr-in::-moz-range-thumb{pointer-events:auto;width:16px;height:16px;border-radius:50%;background:var(--accent);border:2px solid var(--surface);cursor:pointer}
.ratingline{font-family:"Hanken Grotesk";display:flex;align-items:center;gap:8px;justify-content:flex-end;margin-top:12px}
.rating-pill{font-size:11px;letter-spacing:.08em;text-transform:uppercase;background:var(--pos-soft);color:var(--pos);padding:4px 10px;border-radius:6px;font-weight:700}
.conv{font-size:12px;color:var(--ink-2)}
/* PrimerIQ factor badge (header): a leading composite pill + Quality/Value/Momentum
   chips. Each is a 0..100 percentile rank, colour-banded; hover shows the breakdown. */
.qvm{display:flex;gap:6px;justify-content:flex-end;align-items:center;margin-top:8px;flex-wrap:wrap}
.qvm-chip{font-family:"Spline Sans Mono";font-size:11px;font-weight:600;letter-spacing:.04em;
  padding:3px 8px;border-radius:6px;display:inline-flex;align-items:center;gap:5px;cursor:default;
  border:1px solid var(--border)}
.qvm-chip b{font-size:13px;font-weight:700}
.qvm-chip.soon{color:var(--ink-3);background:transparent}
.qvm-chip.qvm-hi{color:var(--pos);background:var(--pos-soft);border-color:transparent}
.qvm-chip.qvm-mid{color:oklch(0.55 0.13 75);background:var(--hl);border-color:transparent}
.qvm-chip.qvm-lo{color:var(--neg);background:var(--neg-soft);border-color:transparent}
/* Leading PrimerIQ composite pill — same colour bands, a touch larger/bolder. */
.qvm-pill{font-family:"Spline Sans Mono";font-size:11px;font-weight:700;letter-spacing:.02em;
  padding:3px 9px;border-radius:6px;display:inline-flex;align-items:center;gap:6px;cursor:default;
  margin-right:2px;border:1px solid var(--border)}
.qvm-pill b{font-size:14px}
.qvm-pill.qvm-hi{color:var(--pos);background:var(--pos-soft);border-color:transparent}
.qvm-pill.qvm-mid{color:oklch(0.55 0.13 75);background:var(--hl);border-color:transparent}
.qvm-pill.qvm-lo{color:var(--neg);background:var(--neg-soft);border-color:transparent}

/* Technicals-tab momentum summary panel */
.ta-mom{margin-bottom:18px}
.ta-mom-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}
.ta-mom-title{font-family:"Hanken Grotesk";font-size:13px;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ink-2)}
.ta-mom-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px}
.ta-mom-cell{display:flex;flex-direction:column;gap:3px;padding:10px 12px;border:1px solid var(--border);border-radius:8px}
.ta-mom-cell .l{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3)}
.ta-mom-cell .v{font-family:"Spline Sans Mono";font-size:17px;font-weight:600}
.ta-mom-cell .v.pos{color:var(--pos)}
.ta-mom-cell .v.neg{color:var(--neg)}
.ta-mom-cell .v.mut{color:var(--ink-3)}
.ta-mom-note{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3);margin:14px 0 0;line-height:1.5}

/* ---------- scenario cards (bear/base/bull) ---------- */
.scn-grid{display:grid;grid-template-columns:repeat(3,1fr) 0.92fr;gap:14px;margin:26px 0 0}
.scn-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:var(--cardpad);position:relative;overflow:hidden;box-shadow:var(--shadow)}
.scn-card::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px}
.scn-card.bear::before{background:var(--neg)} .scn-card.base::before{background:var(--accent)} .scn-card.bull::before{background:var(--pos)}
.scn-card .sh{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.scn-tag{font-family:"Hanken Grotesk";font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}
.scn-card.bear .scn-tag{color:var(--neg)} .scn-card.base .scn-tag{color:var(--accent)} .scn-card.bull .scn-tag{color:var(--pos)}
.scn-w{font-family:"Hanken Grotesk";font-size:11px;color:var(--ink-3);font-weight:600}
.scn-px{font-family:"Spline Sans Mono";font-size:27px;font-weight:500;letter-spacing:-.01em}
.scn-up{font-family:"Spline Sans Mono";font-size:13.5px;margin-top:2px}
.scn-assume{font-family:"Hanken Grotesk";font-size:12.5px;color:var(--ink-2);line-height:1.45;margin-top:12px;border-top:1px solid var(--border);padding-top:11px}
.scn-card.meta{background:var(--surface-2);box-shadow:none}
.scn-card.meta::before{display:none}
.meta-row{display:flex;justify-content:space-between;align-items:baseline;font-family:"Hanken Grotesk";padding:7px 0;border-top:1px solid var(--border)}
.meta-row:first-of-type{border-top:none}
.meta-row .ml{font-size:12px;color:var(--ink-3)}
.meta-row .mv{font-family:"Spline Sans Mono";font-size:16px;font-weight:500}
.scn-card.meta .scn-tag{color:var(--ink-2)}

/* ---------- body grid + rail ---------- */
.body{display:grid;grid-template-columns:1fr 372px;gap:var(--gap);margin-top:40px;align-items:start}
:root[data-layout="rail-left"] .body{grid-template-columns:372px 1fr}
:root[data-layout="rail-left"] .body main{order:2}
:root[data-layout="rail-left"] .body .rail{order:1}
:root[data-layout="wide"] .body{grid-template-columns:1fr}
:root[data-layout="wide"] .rail{display:none}
:root[data-layout="wide"] .wide-extra{display:grid !important}

section.block{margin-bottom:var(--secgap)}
.kicker{font-family:"Hanken Grotesk";font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-bottom:14px;display:flex;align-items:center;gap:10px}
.kicker::after{content:"";flex:1;height:1px;background:var(--border)}
.kicker .more{font-size:12px;letter-spacing:0;text-transform:none;color:var(--accent);cursor:pointer;font-weight:600;white-space:nowrap}
h2.sec{font-weight:500;font-size:27px;letter-spacing:-.01em;margin-bottom:6px}
.sec-note{font-family:"Hanken Grotesk";font-size:13.5px;color:var(--ink-2);margin:6px 0 18px}

/* prose */
.prose{font-size:var(--prose);line-height:var(--lh);color:var(--ink);letter-spacing:.002em}
.prose p{margin-bottom:18px;text-wrap:pretty}
.prose .lead::first-letter{font-size:56px;float:left;line-height:.82;padding:6px 12px 0 0;font-weight:500}
.prose h3{font-family:"Hanken Grotesk";font-size:16px;font-weight:700;margin:24px 0 8px}
.prose h4,.prose h5{font-family:"Hanken Grotesk";font-weight:700;margin:18px 0 6px;color:var(--ink)}
.prose h4{font-size:14.5px} .prose h5{font-size:13px;color:var(--ink-2);text-transform:none}
.prose ul,.prose ol{margin:0 0 18px;padding-left:22px}
.prose li{margin-bottom:6px;text-wrap:pretty}
.prose strong{font-weight:700;color:var(--ink)}
.prose code{font-family:"Spline Sans Mono";font-size:.92em;background:var(--surface-2);padding:1px 5px;border-radius:4px}
.prose .mdtable{margin:8px 0 22px;font-size:13.5px;width:100%;border-collapse:collapse}
/* The first column is the row label (often long, e.g. "Total worldwide returns (M)");
   the rest are data columns. Let the label take what it needs, then distribute the
   remaining width EVENLY across the data columns so right-aligned year headers don't
   crowd together. */
/* Numeric columns (detected per-column in mdBlock) stay compact + right-aligned;
   prose columns wrap normally — a sentence in a cell must never force nowrap. */
.prose .mdtable th.num,.prose .mdtable td.num{white-space:nowrap;width:1%;text-align:right}
.prose .mdtable-wrap{overflow-x:auto}
.prose .mdtable th{font-family:"Hanken Grotesk";font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);text-align:left;padding:6px 0 6px 24px;border-bottom:1px solid var(--border)}
.prose .mdtable td{padding:6px 0 6px 24px;border-bottom:1px solid var(--border);vertical-align:top}
.prose .mdtable th:first-child,.prose .mdtable td:first-child{padding-left:0;white-space:normal}
.prose .mdtable td:first-child{color:var(--ink)}

/* inline expandable figure */
.fig{font-family:"Spline Sans Mono";font-weight:500;color:var(--ink);border-bottom:1.5px dotted var(--border-2);cursor:pointer;padding:0 1px;white-space:nowrap;transition:background .15s}
.fig::after{content:"›";display:inline-block;transform:rotate(90deg);font-family:"Hanken Grotesk";font-size:11px;color:var(--ink-3);margin-left:3px;vertical-align:1px}
.fig:hover,.fig.open{background:var(--hl)}
.figcard{font-family:"Hanken Grotesk";display:block;background:var(--surface);border:1px solid var(--border-2);border-radius:12px;padding:16px 18px;margin:14px 0 20px;box-shadow:var(--shadow);animation:pop .18s ease}
@keyframes pop{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
.figcard .fh{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}
.figcard .ft{font-size:13px;font-weight:700;letter-spacing:.02em}
.figcard .fsrc{font-size:11px;color:var(--ink-3)}
.figrow{display:flex;justify-content:space-between;font-size:13.5px;padding:7px 0;border-bottom:1px dashed var(--border)}
.figrow:last-child{border-bottom:none}
.figrow .fv{font-family:"Spline Sans Mono";font-weight:500}
.figrow.tot{font-weight:700;border-bottom:none;margin-top:4px}
.figspark{display:flex;align-items:flex-end;gap:4px;height:46px;margin-top:6px}
.figspark i{flex:1;background:var(--accent);opacity:.85;border-radius:2px 2px 0 0}
.figcta{font-size:12px;color:var(--accent);font-weight:600;margin-top:12px;cursor:pointer}

/* ---------- tables ---------- */
.fintable{font-family:"Hanken Grotesk";width:100%;border-collapse:collapse;font-size:14px}
.fintable th{font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);font-weight:600;text-align:right;padding:0 0 12px}
.fintable th:first-child{text-align:left}
.fintable td{padding:var(--rowpad) 0;border-top:1px solid var(--border);text-align:right;font-family:"Spline Sans Mono";font-weight:500;font-size:13.5px}
.fintable td:first-child{text-align:left;font-family:"Hanken Grotesk";color:var(--ink-2);font-weight:500}
.fintable tbody tr:hover td{background:var(--surface-2)}
.fintable .est{color:var(--ink-3)}
.fintable .est::after{content:" E";font-size:10px;vertical-align:2px}
.fintable .ttm,.fintable th.ttmh{background:var(--hl)}
.fintable th.ttmh{color:var(--ink-2)}
.fintable td.ttm{font-weight:600;color:var(--ink)}
.fintable tr.group td:first-child{font-weight:700;color:var(--ink)}
.fintable tr.sub td:first-child{padding-left:18px;color:var(--ink-3);font-weight:400}
.fintable tr.expandable td:first-child{cursor:pointer}
.fintable tr.expandable td:first-child::before{content:"▸";display:inline-block;font-size:9px;color:var(--ink-3);margin-right:8px;transition:transform .15s}
.fintable tr.expandable.open td:first-child::before{transform:rotate(90deg)}
.fintable tr.detail{display:none}
.fintable tr.detail.show{display:table-row}
/* As-reported detail lines (the issuer's individual line items): lighter weight,
   slight indent, so subtotals/totals (tr.total) stand out as the structure. */
.fintable tr.detail-line td:first-child{font-weight:400;color:var(--ink-2);padding-left:14px}
.fintable tr.detail-line td{font-weight:400}
.fintable tr.total td{border-top:2px solid var(--border-2);font-weight:700}
.fintable tr.total td:first-child{color:var(--ink);font-weight:700}
.fintable tr.memo td{color:var(--ink-3);font-style:italic;font-size:12.5px}
.fintable tr.memo td:first-child{color:var(--ink-3);font-style:italic}
.tbl-note{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3);margin-top:12px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}

/* statement toggle */
.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:3px;gap:2px;font-family:"Hanken Grotesk"}
.seg button{border:none;background:transparent;color:var(--ink-3);font-size:13px;font-weight:500;padding:6px 14px;border-radius:6px;cursor:pointer}
.seg button.on{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 2px rgba(0,0,0,.06)}

/* card */
.panel{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:24px;box-shadow:var(--shadow)}
.statement{display:none}
.statement.on{display:block;overflow-x:auto}
/* Deep history can be 20-30 year columns; let the statement scroll horizontally
   rather than crushing the cells. Give number columns a floor so they never
   collide, and keep the label column readable + pinned-feeling on the left. */
.statement.on .fintable{min-width:100%;width:max-content}
.statement.on .fintable th,.statement.on .fintable td{padding-left:14px}
.statement.on .fintable th:first-child,.statement.on .fintable td:first-child{
  padding-left:0;min-width:150px;position:sticky;left:0;background:var(--bg)}
.statement.on .fintable th:not(:first-child),
.statement.on .fintable td:not(:first-child){min-width:62px}

/* chart */
.chart{display:flex;align-items:flex-end;gap:14px;height:200px;padding:18px 4px 0;margin-bottom:28px;border-bottom:1px solid var(--border);position:relative}
.chart .col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;position:relative}
.chart .bar{width:60%;background:var(--accent);opacity:.85;border-radius:3px 3px 0 0;position:relative;transition:height .4s}
.chart .bar .v{position:absolute;top:-20px;left:50%;transform:translateX(-50%);font-family:"Spline Sans Mono";font-size:11px;color:var(--ink-2);white-space:nowrap}
/* Year label sits BELOW the axis line (the chart's border-bottom), not inside the plot. */
.chart .yr{position:absolute;bottom:-22px;left:0;right:0;text-align:center;font-family:"Spline Sans Mono";font-size:11px;color:var(--ink-3)}
.chart .marg{position:absolute;left:0;right:0;height:1px;pointer-events:none}
.chart-legend{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3);display:flex;gap:18px;margin-top:12px}
.chart-legend span{display:flex;align-items:center;gap:6px}
.swatch{width:10px;height:10px;border-radius:2px}

/* ---------- model / DCF ---------- */
.model-grid{display:grid;grid-template-columns:320px 1fr;gap:var(--gap);align-items:start}
.assume .arow{display:flex;flex-direction:column;gap:7px;padding:15px 0;border-top:1px solid var(--border)}
.assume .arow:first-child{border-top:none}
.assume .albl{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-2);display:flex;justify-content:space-between;align-items:baseline}
.assume .aval{font-family:"Spline Sans Mono";font-size:15px;font-weight:600;color:var(--ink)}
input[type=range].slider{appearance:none;-webkit-appearance:none;width:100%;height:4px;border-radius:999px;background:var(--border-2);outline:none}
input[type=range].slider::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--surface);box-shadow:0 1px 3px rgba(0,0,0,.25)}
input[type=range].slider::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--surface)}
.aval-static{font-family:"Spline Sans Mono";font-size:14px;color:var(--ink-2)}
.assume .arow.driver-derived{flex-direction:row;justify-content:space-between;align-items:baseline;padding:10px 0 12px;border-top:1px dashed var(--border)}
.assume .arow.driver-derived span:first-child{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-3)}
.assume .arow.driver-derived .aval{color:var(--accent)}

.dcf-out{display:grid;grid-template-columns:1fr 1fr 1fr;gap:14px;margin-bottom:24px}
.dcf-cell{background:var(--surface-2);border:1px solid var(--border);border-radius:12px;padding:16px 18px}
.dcf-cell .k{font-family:"Hanken Grotesk";font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.dcf-cell .v{font-family:"Spline Sans Mono";font-size:26px;font-weight:600;margin-top:6px;letter-spacing:-.01em}
.dcf-cell .m{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-2);margin-top:3px}
.dcf-cell.hero{background:var(--accent);border-color:var(--accent)}
.dcf-cell.hero .k,.dcf-cell.hero .m{color:color-mix(in oklch,white 78%,var(--accent))}
.dcf-cell.hero .v{color:#fff}

/* football field */
.field{margin:8px 0 4px}
.field-track{position:relative;height:44px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;margin:30px 0 26px}
.field-range{position:absolute;top:8px;bottom:8px;background:linear-gradient(90deg,var(--neg-soft),var(--pos-soft));border-radius:6px}
.field-mark{position:absolute;top:-24px;transform:translateX(-50%);font-family:"Spline Sans Mono";font-size:11px;color:var(--ink-2);white-space:nowrap}
.field-mark::after{content:"";position:absolute;left:50%;top:22px;width:1px;height:16px;background:var(--border-2)}
.field-now{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--ink);transform:translateX(-50%)}
.field-now span{position:absolute;bottom:-22px;left:50%;transform:translateX(-50%);font-family:"Spline Sans Mono";font-size:11px;color:var(--ink);white-space:nowrap}

/* sensitivity */
.sens{font-family:"Hanken Grotesk";border-collapse:collapse;width:100%;font-size:13px}
.sens th,.sens td{border:1px solid var(--border);padding:9px 6px;text-align:center;font-family:"Spline Sans Mono";font-weight:500}
.sens th{background:var(--surface-2);color:var(--ink-3);font-size:11px;font-family:"Hanken Grotesk";font-weight:600}
.sens td.axis{background:var(--surface-2);color:var(--ink-3);font-family:"Hanken Grotesk";font-weight:600}
.sens td.base{background:var(--accent);color:#fff;font-weight:700;border-color:var(--accent)}
.sens caption{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3);text-align:left;padding-bottom:10px}

/* projection table reuse fintable */

/* ---- full DCF waterfall + bridge ---- */
.dcf-table{font-size:12.5px;min-width:760px}
.dcf-table th,.dcf-table td{padding:7px 8px}
.dcf-table th{white-space:nowrap}
.dcf-table tr.muted td{color:var(--ink-3);font-weight:400}
.dcf-table tr.muted td:first-child{color:var(--ink-3)}
.dcf-table tr.subtotal td{border-top:1px solid var(--border-2);font-weight:600}
.dcf-table tr.subtotal td:first-child{color:var(--ink);font-weight:600}
.dcf-table tr.total td{border-top:2px solid var(--border-2);font-weight:700;color:var(--ink)}
.dcf-table tr.total td:first-child{color:var(--ink);font-weight:700}
.dcf-bridge-wrap{display:grid;grid-template-columns:1fr 1fr;gap:32px;margin-top:24px;align-items:start}
.dcf-bridge{background:var(--surface);border:1px solid var(--border);border-radius:13px;padding:8px 20px;box-shadow:var(--shadow)}
.dcf-bridge .brow{display:flex;justify-content:space-between;align-items:baseline;padding:11px 0;border-top:1px solid var(--border);font-family:"Hanken Grotesk"}
.dcf-bridge .brow:first-child{border-top:none}
.dcf-bridge .bk{font-size:13px;color:var(--ink-2)}
.dcf-bridge .bv{font-family:"Spline Sans Mono";font-size:14px;font-weight:500;color:var(--ink)}
.dcf-bridge .brow.strong .bk{color:var(--ink);font-weight:600}
.dcf-bridge .brow.strong .bv{font-weight:700}
.dcf-bridge .brow.final{border-top:2px solid var(--border-2);margin-top:2px}
.dcf-bridge .brow.final .bk{font-family:"Spectral";font-size:16px;color:var(--ink);font-weight:600}
.dcf-bridge .brow.final .bv{font-size:22px;font-weight:700;color:var(--accent)}
.dcf-bridge-side h4{font-family:"Hanken Grotesk";font-size:14px;font-weight:700;margin-bottom:10px}
.dcf-bridge-side p{font-family:"Hanken Grotesk";font-size:13.5px;color:var(--ink-2);line-height:1.6;margin-bottom:12px}
.dcf-bridge-side .dcf-implied{border-left:2px solid var(--accent);padding-left:14px;color:var(--ink);font-style:italic;font-family:"Spectral";font-size:15px}

/* ---- comps muted tag + relative valuation ---- */
.muted-tag{font-family:"Hanken Grotesk";font-size:10px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3);background:var(--surface-2);border:1px solid var(--border);border-radius:5px;padding:1px 6px;margin-left:8px}
.comptable td:first-child{white-space:nowrap}
.relval{display:flex;flex-direction:column;gap:4px;margin:8px 0 6px;max-width:760px}
.rv-row{display:grid;grid-template-columns:280px 1fr 64px;gap:16px;align-items:center;padding:10px 0;border-top:1px solid var(--border)}
.rv-row:first-child{border-top:none}
.rv-lab{font-family:"Hanken Grotesk";font-size:13.5px;color:var(--ink)}
.rv-bar{height:14px;background:var(--surface-2);border-radius:7px;overflow:hidden}
.rv-bar i{display:block;height:100%;border-radius:7px}
.rv-val{font-family:"Spline Sans Mono";font-size:16px;font-weight:600;text-align:right}
.multiband{margin:30px 0 6px;max-width:760px}
.multiband .mb-h{font-family:"Hanken Grotesk";font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-bottom:34px}
.mb-track{position:relative;height:8px;background:linear-gradient(90deg,var(--neg-soft),var(--surface-2),var(--pos-soft));border-radius:5px;border:1px solid var(--border);margin-bottom:40px}
.mb-tick{position:absolute;top:-6px;transform:translateX(-50%)}
.mb-tick span{position:absolute;top:20px;left:50%;transform:translateX(-50%);font-family:"Spline Sans Mono";font-size:11px;color:var(--ink-2);white-space:nowrap;text-align:center;line-height:1.4}
.mb-tick span i{font-family:"Hanken Grotesk";font-style:normal;font-size:10px;color:var(--ink-3)}
.mb-tick::before{content:"";position:absolute;left:50%;top:0;width:1px;height:8px;background:var(--border-2);transform:translateX(-50%)}
.mb-now{position:absolute;top:-7px;bottom:-7px;width:3px;background:var(--accent);border-radius:2px;transform:translateX(-50%)}
.mb-now span{position:absolute;top:-22px;left:50%;transform:translateX(-50%);font-family:"Spline Sans Mono";font-size:11px;font-weight:600;color:var(--accent);white-space:nowrap}
@media(max-width:1180px){ .dcf-bridge-wrap{grid-template-columns:1fr} .rv-row{grid-template-columns:200px 1fr 56px} }

/* ---- return bridge ---- */
.retbridge{display:flex;align-items:center;gap:16px;max-width:760px;margin:6px 0 14px}
.rb-bar{flex:1;display:flex;height:46px;border-radius:10px;overflow:hidden;border:1px solid var(--border)}
.rb-seg{display:grid;place-items:center}
.rb-seg span{font-family:"Spline Sans Mono";font-size:12px;font-weight:600;color:#fff}
.rb-total{font-family:"Spline Sans Mono";font-size:20px;font-weight:700;color:var(--accent);white-space:nowrap}
.rb-legend{display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;max-width:760px;margin-bottom:24px}
.rb-legend span{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-2);display:flex;align-items:center;gap:8px}
.rb-legend i{width:11px;height:11px;border-radius:3px;flex-shrink:0}
.rb-legend b{color:var(--ink);font-weight:600}
.rb-compare{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;max-width:620px;margin-bottom:28px}
.rbc{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px 18px;box-shadow:var(--shadow)}
.rbc.accent{border-color:var(--accent);background:var(--hl)}
.rbc-v{font-family:"Spline Sans Mono";font-size:24px;font-weight:600}
.rbc.accent .rbc-v{color:var(--accent)}
.rbc-k{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3);margin-top:4px}
.rb-payback{max-width:760px}
.rb-pay-h{font-family:"Hanken Grotesk";font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-bottom:14px}
.rb-pay-track{position:relative;height:14px;background:linear-gradient(90deg,var(--pos),oklch(0.6 0.12 150));border-radius:7px;margin-bottom:8px}
.rb-pay-cost{position:absolute;top:-7px;bottom:-7px;width:2px;background:var(--ink);transform:translateX(-50%)}
.rb-pay-cost span{position:absolute;top:-20px;left:50%;transform:translateX(-50%);font-family:"Spline Sans Mono";font-size:11px;color:var(--ink);white-space:nowrap}
.rb-pay-yrs{display:flex;justify-content:space-between;font-family:"Spline Sans Mono";font-size:11px;color:var(--ink-3);text-align:center}
@media(max-width:1180px){ .rb-legend{grid-template-columns:1fr} .rb-compare{grid-template-columns:1fr} }

/* ---- thesis tripwires + research log ---- */
.tripwires{display:flex;flex-direction:column}
.tripwire{display:grid;grid-template-columns:1.3fr .9fr .9fr 92px;gap:16px;align-items:center;padding:13px 0;border-top:1px solid var(--border)}
.tripwire:first-child{border-top:none}
.tw-n{font-family:"Hanken Grotesk";font-size:14px;font-weight:600;color:var(--ink)}
.tw-s{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3);margin-top:2px}
.tw-cur{font-family:"Spline Sans Mono";font-size:12.5px;font-weight:600;color:var(--ink);text-align:right;line-height:1.45;overflow-wrap:break-word}
.tw-th{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3);text-align:right;line-height:1.45}
.tw-stat{font-family:"Hanken Grotesk";font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;text-align:center;padding:5px 10px;border-radius:6px;justify-self:end;width:max-content}
.tw-stat.ok{background:var(--pos-soft);color:var(--pos)}
.tw-stat.watch{background:oklch(0.92 0.06 75);color:oklch(0.55 0.12 70)}
.tw-stat.breach{background:var(--neg-soft);color:var(--neg)}
.convrow{display:flex;align-items:center;gap:32px;margin:6px 0 22px}
.conv-spark{display:flex;align-items:flex-end;gap:14px;height:60px}
.cs-pt{display:flex;flex-direction:column;align-items:center;gap:6px;height:100%;justify-content:flex-end}
.cs-bar{width:26px;background:var(--accent);opacity:.85;border-radius:3px 3px 0 0}
.cs-d{font-family:"Spline Sans Mono";font-size:10px;color:var(--ink-3)}
.conv-now{border-left:1px solid var(--border);padding-left:28px}
.conv-v{font-family:"Spline Sans Mono";font-size:34px;font-weight:700;color:var(--accent);line-height:1}
.conv-v span{font-size:16px;color:var(--ink-3);font-weight:500}
.conv-k{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3);margin-top:6px}
.logfeed{display:flex;flex-direction:column}
.logitem{display:grid;grid-template-columns:90px 1fr;gap:18px;padding:15px 0;border-top:1px solid var(--border)}
.logitem:first-child{border-top:none}
.log-d{font-family:"Spline Sans Mono";font-size:12px;color:var(--ink-3)}
.log-t{font-family:"Hanken Grotesk";font-size:14.5px;font-weight:600;color:var(--ink);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.log-x{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-2);line-height:1.5;margin-top:5px}
.log-tag{font-size:10px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:5px}
.log-tag.up{background:var(--pos-soft);color:var(--pos)}
.log-tag.init{background:var(--hl);color:var(--accent)}
.log-tag.hold{background:var(--surface-2);color:var(--ink-2);border:1px solid var(--border)}
@media(max-width:1180px){ .tripwire{grid-template-columns:1fr auto auto;row-gap:2px} .tripwire .tw-th{display:none} }

/* ---- segment mix stacked bars ---- */
.segmix{display:flex;gap:22px;height:280px;align-items:flex-end;margin:8px 0 16px}
.sm-col{flex:1;display:flex;flex-direction:column;height:100%}
.sm-total{font-family:"Spline Sans Mono";font-size:11px;color:var(--ink-2);text-align:center;margin-bottom:6px}
.sm-bar{flex:1;display:flex;flex-direction:column;border-radius:5px;overflow:hidden;border:1px solid var(--border)}
.sm-seg{display:flex;align-items:center;justify-content:center;font-family:"Hanken Grotesk";font-size:10px;font-weight:500;color:#fff;min-height:0;overflow:hidden;white-space:nowrap}
.sm-yr{font-family:"Spline Sans Mono";font-size:11px;color:var(--ink-3);text-align:center;margin-top:8px}
.seg-legend{display:flex;flex-wrap:wrap;gap:8px 18px;font-family:"Hanken Grotesk";font-size:12.5px;color:var(--ink-2)}
.seg-legend span{display:flex;align-items:center;gap:7px}
.seg-legend i{width:11px;height:11px;border-radius:3px;flex-shrink:0}

/* ---- capital allocation dashboard ---- */
.dashgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:6px 0 22px}
.dashcard{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px 22px 16px;box-shadow:var(--shadow)}
.dashcard .dash-h{font-family:"Hanken Grotesk";font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3)}
.dashcard .dash-sub{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-2);margin:4px 0 22px}
.dashcard .dash-sub b{color:var(--ink);font-weight:600}
.minichart{display:flex;align-items:flex-end;gap:8px;height:118px;position:relative}
.mc-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:6px}
.mc-bar{width:60%;border-radius:3px 3px 0 0;position:relative;background:var(--accent);opacity:.9}
.mc-bar.green{background:var(--pos)} .mc-bar.fade{opacity:.55}
.mc-bar .mc-v{position:absolute;top:-17px;left:50%;transform:translateX(-50%);font-family:"Spline Sans Mono";font-size:10px;color:var(--ink-2);white-space:nowrap}
.mc-yr{font-family:"Spline Sans Mono";font-size:10px;color:var(--ink-3)}
.mc-refline{position:absolute;left:0;right:0;border-top:1.5px dashed var(--neg);z-index:3}
.mc-refline span{position:absolute;right:2px;top:-15px;font-family:"Spline Sans Mono";font-size:10px;color:var(--neg);background:var(--surface);padding:0 3px}
.yield-wrap{max-width:600px}
.yieldbar{display:flex;height:42px;border-radius:10px;overflow:hidden;border:1px solid var(--border);margin:6px 0 8px}
.yieldbar .yseg{display:grid;place-items:center;color:#fff;font-family:"Hanken Grotesk";font-size:13px;font-weight:600;gap:0}
.yield-legend{display:flex;gap:20px;font-family:"Hanken Grotesk";font-size:12.5px;color:var(--ink-2)}
.yield-legend span{display:flex;align-items:center;gap:7px}
.yield-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}
@media(max-width:1180px){ .dashgrid{grid-template-columns:1fr} }

/* ---------- qualitative ---------- */
.powers{display:flex;flex-direction:column;gap:2px}
.power{display:grid;grid-template-columns:210px 1fr 92px;gap:18px;align-items:flex-start;padding:16px 0;border-top:1px solid var(--border)}
.power:first-child{border-top:none}
.power .pn{font-family:"Hanken Grotesk";font-weight:600;font-size:15px}
.power .pl{font-family:"Hanken Grotesk";font-size:11px;color:var(--ink-3);margin-top:3px}
.power .pd{font-family:"Hanken Grotesk";font-size:13.5px;color:var(--ink-2);line-height:1.5}
.score{display:flex;gap:4px;justify-content:flex-end;padding-top:3px}
.score i{width:9px;height:9px;border-radius:50%;background:var(--border-2)}
.score i.on{background:var(--accent)}
.score.strong i.on{background:var(--pos)}

.cards2{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}
.qcard{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:22px;box-shadow:var(--shadow)}
.qcard h4{font-family:"Hanken Grotesk";font-size:15px;font-weight:700;margin-bottom:10px}
.qcard p{font-family:"Hanken Grotesk";font-size:13.5px;color:var(--ink-2);line-height:1.55;margin-bottom:10px}
.qcard ul{list-style:none;font-family:"Hanken Grotesk";font-size:13.5px;color:var(--ink-2)}
.qcard li{padding:7px 0 7px 18px;border-top:1px solid var(--border);position:relative;line-height:1.45}
.qcard li:first-child{border-top:none}
.qcard li::before{content:"—";position:absolute;left:0;color:var(--ink-3)}

/* competitor table */
.comptable td:first-child{font-weight:600;color:var(--ink)}
.comptable tr.self td{background:var(--hl)}
.b+.b{margin-top:0}

/* ---------- news ---------- */
.news-grid{display:grid;grid-template-columns:1fr 360px;gap:var(--gap);align-items:start}
.timeline{position:relative}
.tl-item{display:grid;grid-template-columns:74px 1fr;gap:18px;padding:16px 0;border-top:1px solid var(--border)}
.tl-item:first-child{border-top:none}
.tl-date{font-family:"Spline Sans Mono";font-size:12px;color:var(--ink-3)}
.tl-body .tt{font-family:"Spectral";font-size:17px;font-weight:500;line-height:1.3}
.tl-body .tm{font-family:"Hanken Grotesk";font-size:12.5px;color:var(--ink-3);margin-top:5px;display:flex;align-items:center;gap:8px}
.sent-dot{width:8px;height:8px;border-radius:50%}
.tl-body .summary{font-family:"Hanken Grotesk";font-size:13.5px;color:var(--ink-2);line-height:1.5;margin-top:8px}

.filing{display:flex;align-items:center;gap:14px;padding:13px 0;border-top:1px solid var(--border)}
.filing:first-child{border-top:none}
.filing .fi{width:36px;height:44px;border-radius:5px;background:var(--surface-2);border:1px solid var(--border);display:grid;place-items:center;font-family:"Spline Sans Mono";font-size:9px;color:var(--ink-3);flex-shrink:0}
.filing .fname{font-family:"Hanken Grotesk";font-size:14px;font-weight:500}
.filing .fmeta{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3);margin-top:2px}
.filing .fopen{margin-left:auto;font-family:"Hanken Grotesk";font-size:12px;color:var(--accent);font-weight:600;cursor:pointer}

/* sentiment module */
.senti-bar{height:9px;border-radius:5px;overflow:hidden;display:flex;margin:6px 0 10px}
.senti-legend{display:flex;justify-content:space-between;font-family:"Hanken Grotesk";font-size:12px;font-weight:600}
.thread{font-family:"Hanken Grotesk";padding:12px 0;border-top:1px solid var(--border)}
.thread .th-src{font-size:11px;color:var(--ink-3);display:flex;justify-content:space-between}
.thread .th-q{font-size:13.5px;color:var(--ink);line-height:1.45;margin-top:5px}

/* ---------- rail cards ---------- */
.rail{position:sticky;top:118px;display:flex;flex-direction:column;gap:20px}
.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:var(--cardpad);box-shadow:var(--shadow)}
.card-h{font-family:"Hanken Grotesk";font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:16px;display:flex;align-items:center;justify-content:space-between}
.card-h .sub{text-transform:none;letter-spacing:0;color:var(--ink-3);font-size:11px}
.qstats{display:grid;grid-template-columns:1fr 1fr;gap:0}
.qstat{padding:12px 0;border-top:1px solid var(--border)}
.qstat:nth-child(1),.qstat:nth-child(2){border-top:none}
.qstat .ql{font-family:"Hanken Grotesk";font-size:11px;color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase}
.qstat .qv{font-family:"Spline Sans Mono";font-size:18px;font-weight:500;margin-top:3px}
/* peer-comparison traffic light under each quick stat (not Price) */
.qcmp{display:flex;align-items:center;gap:6px;margin-top:4px;font-family:"Hanken Grotesk";font-size:11.5px;color:var(--ink-3)}
.tl{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none}
.tl-green{background:oklch(0.62 0.13 150)}
.tl-amber{background:oklch(0.74 0.13 80)}
.tl-red{background:oklch(0.6 0.16 25)}
.tl-neutral{background:var(--ink-3)}

.chip-row{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}
.chip{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--border);border-radius:16px;padding:6px 11px;cursor:pointer}
.chip:hover{border-color:var(--border-2)}
.mini-msg{font-family:"Hanken Grotesk";font-size:13.5px;line-height:1.5;color:var(--ink-2);background:var(--surface-2);border-radius:10px;padding:12px 14px;margin-bottom:10px}
.mini-msg.you{background:transparent;border:1px solid var(--border)}
.chat-open{display:flex;align-items:center;gap:8px;border:1px solid var(--border-2);border-radius:10px;padding:11px 13px;font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-3);margin-top:4px;cursor:text}

/* wide-mode inline extras (shown when rail hidden) */
.wide-extra{display:none;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:8px}

/* ---------- ask-the-analyst slide-over ---------- */
/* The analyst slide-over leaves the page fully visible and INTERACTIVE: no dark/blur
   wash and no pointer capture, so you can read, select and copy from the research while
   chatting. (Outside-click-to-close is intentionally dropped — selecting page text would
   otherwise close the panel; use the ✕ button.) */
.scrim{position:fixed;inset:0;background:transparent;opacity:0;pointer-events:none;transition:opacity .25s;z-index:60}
.scrim.open{opacity:0;pointer-events:none}
.analyst{position:fixed;top:0;right:0;bottom:0;width:440px;max-width:96vw;min-width:340px;background:var(--bg);border-left:1px solid var(--border);box-shadow:-20px 0 60px -30px rgba(0,0,0,.5);transform:translateX(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);z-index:61;display:flex;flex-direction:column}
.analyst.open{transform:none}
/* hide the floating feedback FAB while the analyst panel is open — it sits
   bottom-right at a huge z-index and otherwise covers the chat input/send */
body:has(.analyst.open) #pfb-fab{display:none!important}
/* drag-to-resize handle on the panel's left edge */
.an-resize{position:absolute;top:0;left:-3px;width:8px;height:100%;cursor:col-resize;z-index:62}
.an-resize::after{content:"";position:absolute;top:50%;left:2px;width:3px;height:42px;margin-top:-21px;border-radius:3px;background:var(--border-2);opacity:0;transition:opacity .15s}
.an-resize:hover::after,.analyst.resizing .an-resize::after{opacity:1}
.analyst.resizing{transition:none;user-select:none}
.an-head{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--border)}
.an-title{font-family:"Hanken Grotesk";font-weight:700;font-size:15px;display:flex;align-items:center;gap:9px}
.an-title .badge{font-size:10px;font-weight:600;color:var(--ink-3);background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:2px 8px;text-transform:none}
.an-body{flex:1;overflow-y:auto;padding:22px;display:flex;flex-direction:column;gap:14px}
.msg{font-family:"Hanken Grotesk";font-size:14px;line-height:1.55;max-width:88%}
.msg.you{align-self:flex-end;background:var(--ink);color:var(--bg);border-radius:14px 14px 4px 14px;padding:11px 15px}
.msg.ai{align-self:flex-start;color:var(--ink-2)}
.msg.ai .who{font-weight:700;color:var(--ink);font-size:12px;letter-spacing:.04em;text-transform:uppercase;margin-bottom:6px;display:flex;align-items:center;gap:7px}
.msg.ai .who .star{color:var(--accent)}
.an-foot{padding:16px 22px 22px;border-top:1px solid var(--border)}
.an-input{display:flex;align-items:center;gap:10px;border:1px solid var(--border-2);border-radius:12px;padding:12px 14px;font-family:"Hanken Grotesk";font-size:14px}
.an-input input{flex:1;border:none;background:transparent;outline:none;color:var(--ink);font-family:inherit;font-size:14px}
.an-input .send{width:30px;height:30px;border-radius:8px;background:var(--accent);color:#fff;border:none;display:grid;place-items:center;cursor:pointer;font-size:14px}
.an-sugg{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}

.footnote{font-family:"Hanken Grotesk";font-size:11.5px;color:var(--ink-3);border-top:1px solid var(--border);margin-top:36px;padding-top:16px}

@media(max-width:1180px){
  .body,.news-grid{grid-template-columns:1fr}
  .rail{position:static}
  .model-grid{grid-template-columns:1fr}
  .scn-grid{grid-template-columns:1fr 1fr}
}

/* ============ v2 ADDITIONS ============ */

/* ---- crumbs clickable ---- */
.crumbs .lnk{cursor:pointer}
.crumbs .lnk:hover{color:var(--accent)}
.search{cursor:text}

/* ---- screener ---- */
.screener-wrap{max-width:1320px;margin:0 auto;padding:0 40px 90px}
.scrn-hero{padding:40px 0 24px;border-bottom:1px solid var(--border)}
.scrn-hero h1{font-weight:500;font-size:46px;letter-spacing:-.02em;line-height:1.02}
.scrn-hero .sub{font-family:"Hanken Grotesk";font-size:15px;color:var(--ink-2);margin-top:12px;max-width:640px;line-height:1.5}
.nlsearch{display:flex;align-items:center;gap:12px;background:var(--surface);border:1px solid var(--border-2);border-radius:14px;padding:14px 18px;margin-top:24px;box-shadow:var(--shadow)}
.nlsearch .star{color:var(--accent);font-size:16px}
.nlsearch input{flex:1;border:none;background:transparent;outline:none;font-family:"Hanken Grotesk";font-size:15px;color:var(--ink)}
.nlsearch input::placeholder{color:var(--ink-3)}
.nlsearch .go{font-family:"Hanken Grotesk";font-weight:600;font-size:13px;background:var(--ink);color:var(--bg);border:none;border-radius:9px;padding:9px 16px;cursor:pointer}
.quickchips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.qchip{font-family:"Hanken Grotesk";font-size:12.5px;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--border);border-radius:18px;padding:7px 13px;cursor:pointer}
.qchip:hover{border-color:var(--border-2)}
.qchip.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.ind-region-toggle{display:inline-flex;gap:0;margin-top:14px;border:1px solid var(--border);border-radius:18px;overflow:hidden;background:var(--surface-2)}
.ind-region-toggle button{font-family:"Hanken Grotesk";font-size:12.5px;color:var(--ink-2);background:transparent;border:none;padding:7px 15px;cursor:pointer}
.ind-region-toggle button:not(:last-child){border-right:1px solid var(--border)}
.ind-region-toggle button.on{background:var(--ink);color:var(--bg)}
.ind-region-toggle button:hover:not(.on){color:var(--ink)}
.ind-geo-scope{display:inline-flex;align-items:center;gap:9px;margin-top:14px;margin-left:12px;vertical-align:top}
.ind-geo-label{font-family:"Hanken Grotesk";font-size:12.5px;color:var(--ink-2)}
.ind-geo-scope select{font-family:"Hanken Grotesk";font-size:12.5px;color:var(--ink);background:var(--surface-2);border:1px solid var(--border);border-radius:18px;padding:7px 13px;cursor:pointer;max-width:230px}
.ind-geo-scope select:hover{border-color:var(--ink-2)}
.ind-geo-hint{font-family:"Hanken Grotesk";font-size:11.5px;color:var(--ink-2);font-style:italic}
.ind-geo-showall{display:inline-flex;align-items:center;gap:5px;font-family:"Hanken Grotesk";font-size:11.5px;color:var(--ink-2);cursor:pointer;user-select:none}
.ind-geo-showall input{cursor:pointer;margin:0}

.scrn-bar{display:flex;align-items:center;justify-content:space-between;margin:28px 0 8px}
.scrn-bar .cnt{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-3)}
.scrn-bar .cnt b{color:var(--ink-2);font-weight:600}
.scrn-filters{display:flex;gap:8px;flex-wrap:wrap}
.fsel{font-family:"Hanken Grotesk";font-size:12.5px;color:var(--ink-2);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:7px 11px;cursor:pointer;display:flex;align-items:center;gap:7px}
.fsel:hover{border-color:var(--border-2)}
.fsel .v{color:var(--ink);font-weight:600}

.scrn-table{width:100%;border-collapse:collapse;font-family:"Hanken Grotesk";font-size:13.5px}
.scrn-table th{font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3);font-weight:600;text-align:right;padding:10px 14px;border-bottom:1px solid var(--border);cursor:pointer;white-space:nowrap}
.scrn-table th:first-child{text-align:left}  /* only Company; metric cols are right-aligned */
.scrn-table th.sorted{color:var(--ink)}
.scrn-table td{padding:13px 14px;border-bottom:1px solid var(--border);text-align:right;font-family:"Spline Sans Mono";font-weight:500}
.scrn-table td.name{text-align:left;font-family:"Hanken Grotesk"}
.scrn-table tr{cursor:pointer}
.scrn-table tbody tr:hover{background:var(--surface-2)}
.scrn-co{display:flex;align-items:center;gap:11px}
.scrn-watch{background:none;border:0;cursor:pointer;font-size:18px;line-height:1;padding:2px;color:var(--ink-3,#9aa0a6);flex-shrink:0;transition:color .12s,transform .12s}
.scrn-watch:hover{color:var(--accent,#e0a23a);transform:scale(1.15)}
.scrn-watch.on{color:var(--accent,#e0a23a)}
.scrn-watch:disabled{opacity:.5;cursor:default}
.scrn-logo{width:30px;height:30px;border-radius:7px;display:grid;place-items:center;color:#fff;font-weight:700;font-size:12px;flex-shrink:0}
.scrn-nm{font-weight:600;font-size:14px}
.scrn-tk{font-size:11px;color:var(--ink-3);font-family:"Spline Sans Mono"}
.scrn-sector{text-align:left;color:var(--ink-2);font-family:"Hanken Grotesk"}
.qual{display:inline-grid;place-items:center;width:30px;height:24px;border-radius:6px;font-family:"Hanken Grotesk";font-weight:700;font-size:12px}
.qual.a{background:var(--pos-soft);color:var(--pos)}
.qual.b{background:var(--hl);color:var(--accent)}
.qual.c{background:var(--neg-soft);color:var(--neg)}
.newbadge{font-family:"Hanken Grotesk";font-size:9px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;background:var(--accent);color:#fff;border-radius:4px;padding:2px 5px;margin-left:8px;vertical-align:1px}

/* ---- analysis layout + subnav ---- */
.analysis-layout{display:grid;grid-template-columns:226px minmax(0,1fr);gap:46px;margin-top:30px;align-items:start}
/* min-width:0 lets the content column SHRINK to the grid track instead of being sized
   by its widest child (a wide scenario table / long line) — without it the column blows
   past the viewport and the prose runs off the right edge (Alphabet analysis bug). */
.analysis-content{min-width:0}
.analysis-content .subview{min-width:0;overflow-wrap:anywhere}
.subnav{position:sticky;top:118px;display:flex;flex-direction:column;gap:1px}
.subnav a{font-family:"Hanken Grotesk";font-size:13.5px;color:var(--ink-3);padding:9px 12px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:8px;border-left:2px solid transparent}
.subnav a:hover{color:var(--ink-2);background:var(--surface-2)}
.subnav a.on{color:var(--ink);background:var(--surface-2);font-weight:600;border-left-color:var(--accent)}
.subnav a .n{font-size:11px;color:var(--ink-3);font-family:"Spline Sans Mono"}
.subview{display:none}
.subview.on{display:block}
/* report page-flip bar (prev/next) at the foot of each subsector-report page */
.rpt-flip{justify-content:space-between;margin-top:36px;border-top:1px solid var(--border);padding-top:22px}
.rpt-flip .rpt-pg{max-width:46%;white-space:normal;text-align:center;line-height:1.3}
.rpt-flip>span:empty{flex:0 0 1px}
/* markdown rhythm inside the subsector-report prose: give headings, sub-headings,
   rules and lists real breathing room so a section isn't one contiguous block. */
#view-industry-report .broadsheet h2{font-family:"Spectral";font-weight:500;font-size:25px;line-height:1.26;letter-spacing:-.01em;margin:40px 0 14px}
#view-industry-report .broadsheet h3{font-family:"Hanken Grotesk";font-weight:600;font-size:18px;line-height:1.3;margin:32px 0 10px}
#view-industry-report .broadsheet h4{font-family:"Hanken Grotesk";font-weight:600;font-size:15px;color:var(--ink-2);margin:24px 0 8px}
#view-industry-report .broadsheet h2:first-child,#view-industry-report .broadsheet h3:first-child{margin-top:0}
#view-industry-report .broadsheet hr{border:0;border-top:1px solid var(--border);margin:34px 0}
#view-industry-report .broadsheet ul,#view-industry-report .broadsheet ol{margin:12px 0 20px;padding-left:22px;max-width:760px}
#view-industry-report .broadsheet li{font-size:16px;line-height:1.65;margin:9px 0;color:var(--ink)}
#view-industry-report .broadsheet table{margin:20px 0 26px}
/* industry tags on the company overview hero — links to the subsector reports */
.co-tags{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px}
.co-tags:empty{display:none}
.co-tag-label{font-family:"Hanken Grotesk";font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3)}
.co-tag{font-family:"Hanken Grotesk";font-size:12.5px;color:var(--ink-2);background:var(--surface-2);
  border:1px solid var(--border);border-radius:999px;padding:4px 12px;text-decoration:none;transition:color .12s,border-color .12s,background .12s}
.co-tag:hover{color:var(--ink);border-color:var(--ink-3);background:var(--hover,#f4f4f2)}
/* subsector-report "back" link — whitespace below the top bar + a muted link (no
   browser-default blue/purple visited colour) */
#view-industry-report{padding-top:26px}
#view-industry-report .rpt-back{margin:0 0 12px;font-size:13px;font-family:"Hanken Grotesk"}
#view-industry-report .rpt-back a,.rpt-back a:visited{color:var(--ink-3);text-decoration:none;font-weight:600}
#view-industry-report .rpt-back a:hover{color:var(--ink);text-decoration:underline}
/* breadcrumb links inherit the muted crumb colour (no browser link blue/purple) */
.crumbs a,.crumbs a:visited{color:inherit;text-decoration:none}
/* cross-reference links (company / subsector / artifact mentions) */
.ix-link{color:var(--accent);text-decoration:none;border-bottom:1px dotted var(--accent)}
.ix-link:hover{border-bottom-style:solid}
.ix-go{font-size:11px;opacity:.6;vertical-align:1px}
/* hierarchy connector arrow before a child subsector's logo in the screener */
.ind-arrow{color:var(--ink-3);flex-shrink:0;opacity:.85;margin-right:-6px}
/* expand/collapse caret on parent rows (single ▾ glyph; rotated when collapsed) */
.ind-caret{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;
  font-size:10px;line-height:1;color:var(--ink-3);cursor:pointer;border-radius:4px;transition:transform .12s,background .12s;margin-right:-3px}
.ind-caret:hover{color:var(--ink);background:var(--surface-2)}
.ind-caret.collapsed{transform:rotate(-90deg)}
.ind-caret-empty{cursor:default;pointer-events:none}
/* a parent row's whole-row click expands/collapses its subtree, so light up the caret
   on row hover — the affordance reads "toggle", not "navigate" like leaf rows */
.scrn-table tr.has-kids:hover .ind-caret{color:var(--ink);background:var(--surface-2)}
/* industry screener (desktop): keep subsector names on one line and tighten the numeric
   columns so rows aren't fat/wrapped and the table isn't over-wide. Mobile keeps cards. */
/* breathing room between the Filters/Columns toolbar and the table headers */
#view-industry .scrn-scroll{margin-top:16px}
/* one-line subheading on the companies (home) screener */
@media(min-width:1000px){ #view-screener .scrn-hero .sub{max-width:none;white-space:nowrap} }
@media(min-width:641px){
  #view-industry .scrn-table td{padding-top:9px;padding-bottom:9px}
  #view-industry .scrn-table .scrn-nm{white-space:nowrap}
  /* stacked metric labels; the metric columns ABSORB the width freed by a tight name col */
  #view-industry .scrn-table th:not(:first-child){padding:0 10px 11px;white-space:normal;
    vertical-align:bottom;line-height:1.16;font-size:10.5px}
  #view-industry .scrn-table td:not(.name){padding-left:10px;padding-right:10px;font-size:12.5px;white-space:nowrap}
  /* Subsector / n / Report shrink to their content; metric columns share the rest so the
     name column is only as wide as its longest entry and the numbers aren't cramped */
  #view-industry .scrn-table th:first-child,
  #view-industry .scrn-table td.name,
  #view-industry .scrn-table th[data-key="n"],
  #view-industry .scrn-table td[data-label="n"],
  #view-industry .scrn-table th[data-key="report"],
  #view-industry .scrn-table td[data-label="Report"]{width:1%;white-space:nowrap}
  #view-industry .scrn-table td.name{padding-right:24px}
}
/* Company screener (#view-screener): wide Company column, narrow metric columns with
   STACKED multi-line headers — so a multi-word label ("Market cap", "Base upside") wraps
   to two short lines instead of forcing the column wide. Metric cells are nowrap and shrink
   to their content; the Company column has no width cap, so it absorbs the freed space and
   the table fits without horizontal scroll at the default column set. Rows stay thin. */
@media(min-width:641px){
  #view-screener .scrn-table td{padding-top:9px;padding-bottom:9px}
  /* stacked, compact metric headers (everything except the Company column) */
  #view-screener .scrn-table th:not(:first-child){padding:0 9px 11px;white-space:normal;
    vertical-align:bottom;line-height:1.16;font-size:10.5px}
  /* metric cells: tight, single-line, shrink-to-content (NOT the evidence row, whose
     full-width snippet/context td must wrap freely) */
  #view-screener .scrn-table th:not(:first-child),
  #view-screener .scrn-table tr:not(.scrn-ev) td:not(.name){width:1%;white-space:nowrap;
    padding-left:9px;padding-right:9px;font-size:12.5px}
  /* the Company column takes all remaining width and gets room to breathe */
  #view-screener .scrn-table th:first-child,
  #view-screener .scrn-table td.name{width:auto;white-space:nowrap;padding-right:28px}
}
@media (prefers-reduced-motion: no-preference){ .subview.on{animation:fade .25s ease} }
.subview h2.sec{margin-bottom:4px}
.subview .lede{font-family:"Hanken Grotesk";font-size:15px;color:var(--ink-2);line-height:1.6;margin:6px 0 22px;max-width:680px}
.analysis-block{margin-bottom:30px}

/* editorial — text-forward but mixed with figures, boxes, bullets */
.broadsheet{max-width:1000px;margin-top:4px}
.broadsheet .standfirst{font-family:"Spectral";font-size:22px;line-height:1.46;letter-spacing:-.006em;color:var(--ink);margin:8px 0 20px;font-weight:400;text-wrap:pretty;max-width:760px}
.broadsheet .cols{column-count:1}
.broadsheet p{font-size:17px;line-height:1.7;color:var(--ink);margin-bottom:15px;text-wrap:pretty;max-width:740px}
.broadsheet p.drop::first-letter{font-size:54px;float:left;line-height:.8;padding:6px 12px 0 0;font-weight:500;color:var(--ink);font-family:"Spectral"}
.broadsheet .bs-h{font-family:"Hanken Grotesk";font-size:12px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);margin:26px 0 11px}
.broadsheet .bs-h:first-child{margin-top:0}
.broadsheet strong{font-weight:600;color:var(--ink)}
.broadsheet em{font-style:italic}
.broadsheet .pull{font-family:"Spectral";font-style:italic;font-size:20px;line-height:1.42;color:var(--accent);border-left:2px solid var(--accent);padding:4px 0 4px 20px;margin:22px 0;max-width:720px;text-wrap:pretty}
.broadsheet .bs-list{list-style:none;margin:6px 0 16px;max-width:740px}
.broadsheet .bs-list li{font-size:16px;line-height:1.55;padding:9px 0 9px 24px;border-top:1px solid var(--border);position:relative;color:var(--ink)}
.broadsheet .bs-list li:first-child{border-top:none}
.broadsheet .bs-list li::before{content:"";position:absolute;left:3px;top:15px;width:7px;height:7px;border-radius:50%;background:var(--accent)}
.broadsheet .bs-list li strong{font-weight:600}
.broadsheet .aside-note{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-3);border-left:2px solid var(--border-2);padding-left:14px;margin:20px 0;line-height:1.55;max-width:720px}
/* text + side box */
.bs-grid{display:grid;grid-template-columns:1fr 304px;gap:42px;align-items:start;margin:4px 0 8px}
.bs-grid .broadsheet{margin-top:0}
.bs-aside{background:var(--surface-2);border:1px solid var(--border);border-radius:14px;padding:20px 22px;position:sticky;top:118px}
.bs-aside .ba-h{font-family:"Hanken Grotesk";font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);margin-bottom:14px}
.bs-aside .ba-row{display:flex;justify-content:space-between;align-items:baseline;padding:9px 0;border-top:1px solid var(--border);font-family:"Hanken Grotesk"}
.bs-aside .ba-row:first-of-type{border-top:none}
.bs-aside .ba-k{font-size:12.5px;color:var(--ink-3)}
.bs-aside .ba-v{font-family:"Spline Sans Mono";font-size:14px;font-weight:500;color:var(--ink)}
.bs-aside .ba-list{list-style:none;margin-top:4px}
.bs-aside .ba-list li{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-2);line-height:1.4;padding:7px 0 7px 16px;border-top:1px solid var(--border);position:relative}
.bs-aside .ba-list li:first-child{border-top:none}
.bs-aside .ba-list li::before{content:"—";position:absolute;left:0;color:var(--ink-3)}
/* stat strip */
.statstrip{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;border:1px solid var(--border);border-radius:12px;overflow:hidden;margin:18px 0 22px;background:var(--surface);box-shadow:var(--shadow);max-width:740px}
.statstrip .st{padding:14px 18px;border-right:1px solid var(--border)}
.statstrip .st:last-child{border-right:none}
.statstrip .st .sv{font-family:"Spline Sans Mono";font-size:20px;font-weight:600;letter-spacing:-.01em;color:var(--ink)}
.statstrip .st .sk{font-family:"Hanken Grotesk";font-size:11px;color:var(--ink-3);letter-spacing:.04em;text-transform:uppercase;margin-top:4px}
.tailhead{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:6px 0 18px;max-width:760px}
@media(max-width:1180px){ .bs-grid{grid-template-columns:1fr} .bs-aside{position:static} .statstrip{grid-auto-flow:row;grid-auto-columns:auto} .statstrip .st{border-right:none;border-top:1px solid var(--border)} .statstrip .st:first-child{border-top:none} .tailhead{grid-template-columns:1fr} }
:root[data-density="compact"] .broadsheet .standfirst{font-size:19px}
:root[data-density="compact"] .broadsheet p{font-size:15.5px;line-height:1.62}

/* verdict chip */
.vchip{display:inline-flex;align-items:center;gap:7px;font-family:"Hanken Grotesk";font-size:12px;font-weight:600;padding:5px 11px;border-radius:7px;margin-bottom:16px}
.vchip.good{background:var(--pos-soft);color:var(--pos)}
.vchip.warn{background:var(--neg-soft);color:var(--neg)}
.vchip.neutral{background:var(--surface-2);color:var(--ink-2);border:1px solid var(--border)}

/* scorecard */
.scorecard{display:flex;flex-direction:column}
.scorerow{display:grid;grid-template-columns:200px 1fr 130px;gap:18px;align-items:center;padding:14px 0;border-top:1px solid var(--border)}
.scorerow:first-child{border-top:none}
.scorerow .sl{font-family:"Hanken Grotesk";font-weight:600;font-size:14px}
.scorerow .sd{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-2);line-height:1.45}
.scoremeter{display:flex;align-items:center;gap:10px;justify-content:flex-end}
.meter{width:74px;height:6px;border-radius:4px;background:var(--surface-2);overflow:hidden}
.meter i{display:block;height:100%;border-radius:4px;background:var(--accent)}
.meter i.pos{background:var(--pos)} .meter i.neg{background:var(--neg)}
.scoreval{font-family:"Spline Sans Mono";font-size:12.5px;color:var(--ink-2);min-width:34px;text-align:right}

/* catalysts */
.catalyst{display:grid;grid-template-columns:86px 22px 1fr;gap:14px;align-items:flex-start;padding:15px 0;border-top:1px solid var(--border)}
.catalyst:first-child{border-top:none}
.cat-when{font-family:"Spline Sans Mono";font-size:12px;color:var(--ink-3)}
.cat-dot{width:13px;height:13px;border-radius:50%;margin-top:3px;border:2px solid var(--surface)}
.cat-dot.pos{background:var(--pos)} .cat-dot.neg{background:var(--neg)} .cat-dot.neu{background:var(--border-2)}
.cat-body .ct{font-family:"Hanken Grotesk";font-weight:600;font-size:14.5px}
.cat-body .cd{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-2);line-height:1.5;margin-top:4px}
.cat-impact{font-family:"Hanken Grotesk";font-size:11px;font-weight:600;margin-left:8px;padding:1px 7px;border-radius:5px}
.cat-impact.pos{background:var(--pos-soft);color:var(--pos)} .cat-impact.neg{background:var(--neg-soft);color:var(--neg)}

/* overview summary grid */
.sum-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:8px}
.sum-card{background:var(--surface);border:1px solid var(--border);border-radius:13px;padding:18px 20px;box-shadow:var(--shadow);cursor:pointer;transition:border-color .15s,transform .15s}
.sum-card:hover{border-color:var(--border-2);transform:translateY(-1px)}
.sum-card .sc-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.sum-card .sc-t{font-family:"Hanken Grotesk";font-size:14px;font-weight:700;display:flex;align-items:center;gap:8px}
.sum-card .sc-arrow{color:var(--ink-3);font-family:"Hanken Grotesk"}
.sum-card p{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-2);line-height:1.5}
.sum-card .sc-tag{font-family:"Hanken Grotesk";font-size:11px;font-weight:600;padding:2px 8px;border-radius:5px}

/* red flag checklist */
.checks{display:flex;flex-direction:column}
.check{display:grid;grid-template-columns:24px 1fr auto;gap:12px;align-items:center;padding:11px 0;border-top:1px solid var(--border);font-family:"Hanken Grotesk"}
.check:first-child{border-top:none}
.check .ci{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:11px;font-weight:700;color:#fff}
.check .ci.ok{background:var(--pos)} .check .ci.flag{background:var(--neg)} .check .ci.watch{background:oklch(0.7 0.12 70)}
.check .cn{font-size:13.5px;color:var(--ink)}
.check .cs{font-size:12px;color:var(--ink-3)}
.check .cstat{font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.check .cstat.ok{color:var(--pos)} .check .cstat.flag{color:var(--neg)} .check .cstat.watch{color:oklch(0.62 0.12 70)}

/* insider table */
.ins-buy{color:var(--pos)} .ins-sell{color:var(--neg)}
.ins-sumrow{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0 6px}
.ins-sum{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:14px 16px}
.ins-sl{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);margin-bottom:6px}
.ins-sv{font-size:22px;font-weight:600;font-family:"Spline Sans Mono",monospace;color:var(--ink)}
.ins-sk{font-size:11.5px;color:var(--ink-2);margin-top:3px}
.ins-filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:16px 0 6px}
.ins-f{font:inherit;font-size:12.5px;padding:6px 13px;border:1px solid var(--border-2);border-radius:999px;background:var(--surface);color:var(--ink-2);cursor:pointer}
.ins-f.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.ins-hide{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2);cursor:pointer;margin-left:4px}
.ins-hide input{accent-color:var(--accent)}
.ins-tbl td{font-family:"Spline Sans Mono",monospace}
.ins-tbl td:nth-child(2),.ins-tbl td:nth-child(3),.ins-tbl td:nth-child(4){font-family:"Hanken Grotesk",sans-serif}
@media(max-width:760px){.ins-sumrow{grid-template-columns:repeat(2,1fr)}}

/* ---- filings prominent + filter ---- */
.year-filter{display:flex;gap:6px;flex-wrap:wrap}
.year-filter button{font-family:"Hanken Grotesk";font-size:12.5px;font-weight:500;color:var(--ink-2);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:6px 12px;cursor:pointer}
.year-filter button.on{background:var(--ink);color:var(--bg);border-color:var(--ink);font-weight:600}
.filing-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin-top:6px}
/* News & Filings side-by-side: filings left, news right (single column each) */
.nf-split{display:grid;grid-template-columns:1.15fr 1fr;gap:28px;align-items:start}
.nf-split .nf-filings,.nf-split .nf-news{margin-top:0}
.nf-split .filing-grid{grid-template-columns:1fr}
.nf-split .news-grid{display:block;margin-top:6px}
@media(max-width:1000px){.nf-split{grid-template-columns:1fr;gap:18px}.nf-split .filing-grid{grid-template-columns:repeat(2,1fr)}}
.filing-card{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:15px 17px;box-shadow:var(--shadow);cursor:pointer;transition:border-color .15s,transform .15s}
.filing-card:hover{border-color:var(--accent);transform:translateY(-1px)}
.filing-card .fi{width:42px;height:52px;border-radius:6px;background:var(--surface-2);border:1px solid var(--border);display:grid;place-items:center;font-family:"Spline Sans Mono";font-size:9px;color:var(--ink-3);flex-shrink:0;position:relative}
.filing-card .fi::after{content:"";position:absolute;top:0;right:0;border-width:0 8px 8px 0;border-style:solid;border-color:var(--border) var(--bg)}
.filing-card .fname{font-family:"Hanken Grotesk";font-size:14.5px;font-weight:600}
.filing-card .fmeta{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3);margin-top:3px;display:flex;gap:9px;flex-wrap:wrap}
.filing-card .ftag{font-size:10px;font-weight:600;background:var(--surface-2);border:1px solid var(--border);border-radius:5px;padding:1px 6px;color:var(--ink-2)}
/* Detected-language flag — only shown when a filing is non-English (no English copy on file). */
.filing-card .flang{font-family:"Spline Sans Mono";font-size:10px;font-weight:600;letter-spacing:.02em;background:color-mix(in srgb,var(--accent) 12%,transparent);border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border));border-radius:5px;padding:1px 6px;color:var(--accent);cursor:default}
.filing-card .farr{margin-left:auto;color:var(--accent);font-family:"Hanken Grotesk";font-weight:600;font-size:12px;white-space:nowrap}
.filing-card .fmts{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}
.filing-card .fmt-pill{font-family:"Spline Sans Mono";font-size:10px;font-weight:500;letter-spacing:.02em;color:var(--ink-2);background:var(--surface-2);border:1px solid var(--border);border-radius:5px;padding:2px 7px;text-decoration:none;transition:border-color .12s,color .12s}
.filing-card .fmt-pill:hover{border-color:var(--accent);color:var(--accent)}

/* news list light */
.newslist{display:flex;flex-direction:column}
.newsrow{display:grid;grid-template-columns:70px 1fr auto;gap:14px;align-items:center;padding:11px 0;border-top:1px solid var(--border);font-family:"Hanken Grotesk";cursor:pointer}
.newsrow:first-child{border-top:none}
.newsrow:hover{background:var(--surface-2)}
.newsrow:hover .nt{color:var(--accent)}
.newsrow .nd{font-family:"Spline Sans Mono";font-size:11px;color:var(--ink-3)}
.newsrow .nt{font-size:14px;color:var(--ink)}
.newsrow .nsrc{font-size:11.5px;color:var(--ink-3);display:flex;align-items:center;gap:5px}
.newsrow .nsrc::after{content:"↗";font-size:11px;opacity:.7}
.newsrow .ndot{width:7px;height:7px;border-radius:50%}
.viewer[data-mode="article"] .viewer-toc{display:none}
.viewer[data-mode="article"] .viewer-main{grid-template-columns:1fr}
.viewer[data-mode="article"] #langToggle{display:none}
.viewer[data-mode="article"] .viewer-seg{display:none}
.viewer-seg{padding:2px}
.viewer-seg button{font-size:12px;padding:5px 12px}
.viewer[data-view="raw"] .doc-parsed{display:none}
.viewer[data-view="parsed"] .doc-raw{display:none}
.viewer[data-view="raw"] .viewer-toc{opacity:.4;pointer-events:none}
.doc-raw{width:100%;display:flex;justify-content:center}
.docraw-page{width:100%;max-width:780px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);padding:30px 34px}
.docraw-page pre{font-family:"Spline Sans Mono",monospace;font-size:12px;line-height:1.55;color:var(--ink-2);white-space:pre-wrap;margin:0}
.viewer[data-mode="article"] .viewer-seg{display:none}
.viewer-seg{padding:2px}
.viewer-seg button{font-size:12px;padding:5px 12px}
.viewer[data-view="raw"] .doc-parsed{display:none}
.viewer[data-view="parsed"] .doc-raw{display:none}
.viewer[data-view="raw"] .viewer-toc{opacity:.4;pointer-events:none}
.doc-raw{width:100%;display:flex;justify-content:center}
.docraw-page{width:100%;max-width:780px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);padding:30px 34px}
.docraw-page pre{font-family:"Spline Sans Mono",monospace;font-size:12px;line-height:1.55;color:var(--ink-2);white-space:pre-wrap;margin:0}
.docpage .src-tag{font-family:"Hanken Grotesk";font-size:11px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--accent);margin-bottom:14px;display:inline-block}

/* ---- modal (deep-drill + filing viewer) ---- */
.modal-scrim{position:fixed;inset:0;background:rgba(20,16,10,.42);backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .2s;z-index:80}
.modal-scrim.open{opacity:1;pointer-events:auto}
.drill{position:fixed;top:50%;left:50%;transform:translate(-50%,-48%) scale(.98);opacity:0;pointer-events:none;width:560px;max-width:94vw;max-height:88vh;overflow:auto;background:var(--bg);border:1px solid var(--border-2);border-radius:16px;box-shadow:0 30px 80px -30px rgba(0,0,0,.6);z-index:81;transition:opacity .2s,transform .2s}
.drill.open{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1)}
.drill-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:22px 24px 16px;border-bottom:1px solid var(--border)}
.drill-head .dt{font-family:"Spectral";font-size:22px;font-weight:500;letter-spacing:-.01em}
.drill-head .de{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3);margin-top:4px}
.drill-body{padding:20px 24px 24px;font-family:"Hanken Grotesk"}
.drill-big{font-family:"Spline Sans Mono";font-size:34px;font-weight:600;letter-spacing:-.01em;margin-bottom:2px}
.drill-sub{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-2);margin-bottom:18px}
.drill-spark{display:flex;align-items:flex-end;gap:6px;height:64px;margin:14px 0 6px}
.drill-spark i{flex:1;background:var(--accent);opacity:.85;border-radius:3px 3px 0 0;position:relative}
.drill-spark i span{position:absolute;top:-18px;left:50%;transform:translateX(-50%);font-family:"Spline Sans Mono";font-size:10px;color:var(--ink-3)}
.drill-spark .yr{position:absolute;bottom:-18px;left:50%;transform:translateX(-50%);font-family:"Spline Sans Mono";font-size:10px;color:var(--ink-3)}

/* filing viewer */
.viewer{position:fixed;inset:0;background:var(--bg);z-index:90;display:none;grid-template-rows:auto 1fr}
.viewer.open{display:grid}
.viewer-bar{display:flex;align-items:center;gap:16px;padding:12px 22px;border-bottom:1px solid var(--border);background:var(--surface)}
.viewer-bar .vt{font-family:"Hanken Grotesk";font-weight:700;font-size:15px;display:flex;align-items:center;gap:10px}
.viewer-bar .vmeta{font-family:"Hanken Grotesk";font-size:12px;color:var(--ink-3)}
.viewer-bar .spacer{flex:1}
.viewer-bar .vbtn{font-family:"Hanken Grotesk";font-size:12.5px;font-weight:500;color:var(--ink-2);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:7px 12px;cursor:pointer;display:flex;align-items:center;gap:7px}
.viewer-bar .vbtn.on{background:var(--surface-2);color:var(--ink);font-weight:600}
.viewer-main{display:grid;grid-template-columns:240px 1fr;overflow:hidden}
.viewer-toc{border-right:1px solid var(--border);overflow-y:auto;padding:18px 16px;background:var(--surface)}
.viewer-toc .tl{font-family:"Hanken Grotesk";font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-bottom:10px}
.viewer-toc a{display:block;font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-2);padding:7px 9px;border-radius:7px;cursor:pointer}
.viewer-toc a:hover{background:var(--surface-2)}
.viewer-toc a.on{background:var(--surface-2);color:var(--ink);font-weight:600}
.viewer-doc{overflow-y:auto;padding:40px;display:flex;flex-direction:column;align-items:center;gap:28px;background:var(--surface-2)}
.docpage{width:100%;max-width:720px;background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);padding:54px 60px;font-family:"Spectral";color:var(--ink)}
.docpage h1{font-size:28px;font-weight:600;margin-bottom:6px;letter-spacing:-.01em}
.docpage .doc-co{font-family:"Hanken Grotesk";font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);margin-bottom:20px}
.docpage h2{font-family:"Hanken Grotesk";font-size:16px;font-weight:700;margin:22px 0 9px}
.docpage p{font-size:15px;line-height:1.6;margin-bottom:13px;text-wrap:pretty}
.docpage .doc-table{width:100%;border-collapse:collapse;font-family:"Hanken Grotesk";font-size:13px;margin:10px 0}
.docpage .doc-table td{padding:7px 0;border-bottom:1px solid var(--border)}
.docpage .doc-table td:last-child{text-align:right;font-family:"Spline Sans Mono"}
.docpage .pgno{font-family:"Hanken Grotesk";font-size:11px;color:var(--ink-3);text-align:center;margin-top:24px}
.docpage .orig{font-family:"Spectral";color:var(--ink-3);font-style:italic}
.transflag{font-family:"Hanken Grotesk";font-size:11px;color:var(--ink-3);background:var(--surface-2);border:1px solid var(--border);border-radius:6px;padding:3px 9px;display:inline-flex;gap:6px;align-items:center}

/* live chat typing */
.typing{display:inline-flex;gap:4px;align-items:center;padding:4px 0}
.typing i{width:6px;height:6px;border-radius:50%;background:var(--ink-3);animation:blink 1.2s infinite}
.typing i:nth-child(2){animation-delay:.2s} .typing i:nth-child(3){animation-delay:.4s}
@keyframes blink{0%,60%,100%{opacity:.25} 30%{opacity:1}}
/* Chat answers now render as real markdown (mdBlock): proper block spacing, not
   the old pre-wrap that ran <p> blocks together with no gaps. */
.msg.ai .md{ white-space:normal; }
.msg.ai .md > *:first-child{ margin-top:0; }
.msg.ai .md > *:last-child{ margin-bottom:0; }
.msg.ai .md p{ margin:0 0 12px; line-height:1.6; }
.msg.ai .md h2,.msg.ai .md h3,.msg.ai .md h4{ margin:18px 0 8px; font-weight:650;
  color:var(--ink); letter-spacing:-.01em; line-height:1.3; }
.msg.ai .md ul,.msg.ai .md ol{ margin:4px 0 12px; padding-left:20px; }
.msg.ai .md li{ margin:3px 0; line-height:1.55; }
/* Live "what the analyst is doing" line while it works its tools before writing. Reads as
   activity, not content — muted and italic, and replaced by the first real token. */
.msg.ai .md .an-status{ color:var(--ink-3); font-style:italic; font-size:13.5px; }
.msg.ai .md table.mdtable{ margin:10px 0 14px; }
/* Chat markdown tables reuse .fintable, whose td padding is `var(--rowpad) 0` — i.e.
   ZERO horizontal padding. That's fine on the wide company page (its columns are laid
   out under .prose, which adds a 24px left gap), but the chat never carries .prose, so
   the analyst's numeric tables rendered with every column jammed against the next. Give
   the cells real horizontal breathing room here, and let a wide table scroll inside the
   narrow panel rather than crushing its columns to fit. */
.msg.ai .md table.mdtable th,
.msg.ai .md table.mdtable td{ padding-left:14px; padding-right:14px; }
.msg.ai .md table.mdtable th:first-child,
.msg.ai .md table.mdtable td:first-child{ padding-left:0; }
.msg.ai .md table.mdtable th:last-child,
.msg.ai .md table.mdtable td:last-child{ padding-right:0; }
.msg.ai .md table.mdtable td.num,
.msg.ai .md table.mdtable th.num{ white-space:nowrap; }   /* keep 14.1× on one line */
.msg.ai .md .mdtable-wrap{ overflow-x:auto; }             /* scroll, don't squish */
.msg.ai .md figure.chartblock{ margin:14px 0; }
.msg.ai .md strong{ color:var(--ink); }

@media(max-width:1180px){
  .analysis-layout{grid-template-columns:1fr}
  .subnav{position:static;flex-direction:row;flex-wrap:wrap;margin-bottom:20px}
  .sum-grid,.filing-grid{grid-template-columns:1fr}
}

/* ===== Generate Research button + empty states (backend addition) ===== */
.gen-research{
  font-family:'Hanken Grotesk',sans-serif; font-size:14px; font-weight:600;
  color:#fff; background:var(--accent); border:none; border-radius:10px;
  padding:11px 20px; cursor:pointer; transition:opacity .15s, transform .05s;
  box-shadow:0 1px 3px var(--shadow);
}
.gen-research:hover{ opacity:.92 }
.gen-research:active{ transform:translateY(1px) }
.gen-research:disabled{ opacity:.6; cursor:default }
.empty-research{
  text-align:center; padding:46px 24px; border:1px dashed var(--border-2);
  border-radius:16px; background:var(--surface); margin:8px 0;
}
.empty-research .er-title{
  font-family:'Spectral',serif; font-size:22px; color:var(--ink); margin-bottom:8px;
}
.empty-research .er-note{
  font-family:'Hanken Grotesk',sans-serif; font-size:14px; color:var(--ink-2);
  max-width:520px; margin:0 auto 20px; line-height:1.6;
}
.scn-empty{ grid-column:1 / -1 }
.ratingline .gen-research{ padding:9px 16px; font-size:13px }

/* Screener: pending-research marker + softer 'not researched' badge */
.scrn-pending{ color:var(--ink-3); font-size:12px }
.newbadge{ background:var(--surface-2); color:var(--ink-3); border:1px solid var(--border) }

/* Qualitative (corpus) screen: the cited filing passage shown beneath a matched row.
   The match row that carries evidence loses its bottom border so the two read as one. */
.scrn-table tr.scrn-has-ev > td{ border-bottom:none }
.scrn-table tr.scrn-ev{ cursor:default }
.scrn-table tr.scrn-ev > td{ padding-top:0; padding-bottom:12px }
/* full row width (no artificial max-width — use the space the row gives us) */
.scrn-ev-wrap{ border-left:3px solid var(--accent); padding:2px 0 2px 14px; margin-left:42px }
/* (1) collapsed snippet — click to expand */
.scrn-ev-snip{ font-family:"Hanken Grotesk"; font-size:13px; line-height:1.5; color:var(--ink-2); display:block; text-align:left }
.scrn-ev-toggle{ cursor:pointer; border-radius:4px }
.scrn-ev-toggle:hover{ color:var(--ink) }
.scrn-ev-toggle:hover .scrn-ev-more{ opacity:1 }
.scrn-ev-toggle:focus-visible{ outline:2px solid var(--accent); outline-offset:2px }
.scrn-ev-more{ font-size:11px; color:var(--accent); font-weight:600; white-space:nowrap; opacity:.65 }
.scrn-ev-snip mark{ background:rgba(26,122,60,.16); color:inherit; padding:0 2px; border-radius:3px; font-weight:600 }
/* (2) expanded inline context — left-aligned prose, full width, bigger "Hide context" affordance */
.scrn-ev-wrap.expanded .scrn-ev-q{ display:none }            /* the snippet is now shown in full context below */
.scrn-ev-wrap.expanded .scrn-ev-toggle{ display:inline-block; margin-bottom:6px }
.scrn-ev-wrap.expanded .scrn-ev-more{ font-size:13.5px; opacity:1; padding:4px 10px; border:1px solid var(--border);
                                       border-radius:7px; background:var(--surface) }
.scrn-ev-ctx{ margin-top:4px }
.scrn-ev-ctxbody{ font-family:"Spectral",Georgia,serif; font-size:15px; line-height:1.7; color:var(--ink-2); text-align:left }
.scrn-ev-ctxbody p{ margin:0 0 .85em; text-align:left }
.scrn-ev-ctxbody p.cv-hit{ background:rgba(255,227,156,.18); border-left:3px solid var(--mark,#e6c463);
                           margin-left:-13px; padding:2px 0 2px 10px; border-radius:2px }
.scrn-ev-ctxbody mark{ background:rgba(230,196,99,.45); color:inherit; padding:0 2px; border-radius:2px; font-weight:600 }
.scrn-ev-ell{ color:var(--ink-3); font-size:14px; letter-spacing:2px; margin:.2em 0 }
.scrn-ev-loading{ color:var(--ink-3); font-size:12.5px; padding:6px 0 }
.scrn-ev-acts{ display:flex; gap:10px; margin-top:12px; flex-wrap:wrap }
.scrn-ev-act{ display:inline-block; text-decoration:none; font-size:12.5px; font-weight:600;
              padding:6px 13px; border-radius:8px; background:var(--accent); color:var(--surface) }
.scrn-ev-act.scrn-ev-act-pdf{ background:transparent; color:var(--accent); border:1px solid var(--border-2,var(--border)) }
.scrn-ev-act:hover{ opacity:.9 }
.scrn-ev-src{ margin-top:6px; font-size:11px; color:var(--ink-3); display:flex; gap:12px; align-items:center; flex-wrap:wrap }
.scrn-ev-title{ color:var(--ink-3); font-weight:600 }
.scrn-ev-n{ font-family:"Spline Sans Mono"; font-size:10px }

/* Configurable-columns picker + horizontal scroll for many columns */
#colsBtn{cursor:pointer;user-select:none}
.scrn-scroll{overflow-x:auto}
.cols-menu{display:flex;flex-wrap:wrap;gap:4px 18px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 18px;margin:6px 0 14px;box-shadow:var(--shadow)}
.cols-menu[hidden]{display:none}
.col-opt{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--ink-2);cursor:pointer;width:170px}
.col-opt input{accent-color:var(--accent)}
.col-reset-row{flex-basis:100%;border-top:1px solid var(--border);margin-top:8px;padding-top:10px}
.col-reset{font:inherit;font-size:12.5px;font-weight:600;color:var(--accent);background:none;border:none;padding:0;cursor:pointer}
.col-reset:hover{text-decoration:underline}
.scrn-table th[data-key]{cursor:pointer;white-space:nowrap}
.scrn-table th.sorted{color:var(--ink)}
/* Filters menu + active-filter chips */
#filtersBtn{cursor:pointer;user-select:none;margin-right:14px}
.filt-row{display:flex;align-items:center;gap:8px;width:100%;padding:5px 0;flex-wrap:wrap}
.filt-lbl{font-size:13px;color:var(--ink-2);width:160px;flex:none}
.filt-u{color:var(--ink-3);font-size:11px}
.filt-num{width:80px;font:inherit;font-size:13px;padding:4px 8px;border:1px solid var(--border);border-radius:7px;background:var(--surface);color:var(--ink)}
.filt-dash{color:var(--ink-3)}
.filt-selall{display:flex;align-items:center;gap:6px;font-size:11px}
.filt-sa{color:var(--accent);cursor:pointer;user-select:none}
.filt-sa:hover{text-decoration:underline}
.filt-sa.off{color:var(--ink-3);cursor:default;text-decoration:none}
.filt-sacount{color:var(--ink-3)}
.filt-inds{display:flex;flex-wrap:wrap;gap:4px 16px;max-width:680px}
.ind-opt{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);cursor:pointer}
.ind-opt input{accent-color:var(--accent)}
/* compact add-on-demand filter popover */
#filtersMenu{max-width:560px;flex-direction:column;gap:2px}
.filt-empty{color:var(--ink-3);font-size:12.5px;padding:2px 0 8px}
.filt-x{margin-left:8px;color:var(--ink-3);cursor:pointer;font-size:11px}
.filt-x:hover{color:var(--neg)}
.filt-add{margin-top:10px;border-top:1px solid var(--border);padding-top:10px;width:100%}
.filt-add select{font:inherit;font-size:13px;padding:6px 10px;border:1px solid var(--border-2);border-radius:8px;background:var(--surface);color:var(--ink);cursor:pointer}
.active-filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.active-filters:empty{margin:0}
.fchip{display:inline-flex;align-items:center;gap:8px;background:var(--accent);color:#fff;border-radius:999px;padding:5px 12px;font-size:12.5px;cursor:pointer}
.fchip b{font-weight:700;opacity:.8}

/* Disposition layer — the disconfirmation / pass-case panel (Overview). */
.disconf-block .panel{border-left:3px solid var(--neg);background:var(--neg-soft)}
.disconf-block .panel p{margin:0 0 4px;line-height:1.55}
.disconf-wwc{margin-top:14px;padding-top:12px;border-top:1px solid color-mix(in oklch,var(--neg) 30%,transparent)}
.disconf-wwc .dw-h{font-size:12px;text-transform:uppercase;letter-spacing:.04em;font-weight:700;color:var(--neg);margin-bottom:6px}
.disconf-wwc ul{margin:0;padding-left:18px} .disconf-wwc li{margin:3px 0;line-height:1.5}

/* ===== Deep-research render: scenario panels, native charts, Overview digest ===== */

/* --- inline DCF scenario panel (one per scenario, under its discussion) --- */
.scenario{ border:1px solid var(--border); border-left:3px solid var(--accent);
  background:var(--surface-2); border-radius:10px; padding:16px 18px; margin:18px 0; }
.scenario .sc-name{ font-weight:650; font-size:15px; color:var(--ink);
  letter-spacing:-.01em; margin-bottom:8px; }
.scenario .sc-name.base{ color:var(--ink-2); }
.scenario .sc-assume{ font-size:14.5px; line-height:1.6; color:var(--ink-2);
  margin:0 0 14px; }
.sc-fin-wrap{ overflow-x:auto; margin:12px 0 14px; }
table.sc-fin{ width:100%; border-collapse:collapse; font-size:13px; }
table.sc-fin th, table.sc-fin td{ padding:6px 10px; text-align:right; white-space:nowrap;
  border-bottom:1px solid var(--border); }
table.sc-fin th:first-child, table.sc-fin td.sc-rl{ text-align:left; color:var(--ink-2); }
table.sc-fin th.act{ color:var(--ink-2); } table.sc-fin th.fc{ color:var(--accent); }
table.sc-fin td.fc{ color:var(--ink); background:color-mix(in oklch, var(--accent) 6%, transparent); }
table.sc-fin td.act{ color:var(--ink-2); }
.sc-fv{ font-size:14px; color:var(--ink-2); padding-top:6px; }
.sc-fv b{ font-size:18px; color:var(--ink); margin:0 6px 0 4px; }
.sc-up{ font-weight:600; } .sc-up.pos{ color:var(--pos); } .sc-up.neg{ color:var(--neg); }
.sc-snap{ display:block; margin-top:3px; font-size:11.5px; color:var(--ink-3); }

/* --- native chart block --- */
.chartblock{ margin:18px 0; padding:14px 16px 10px; border:1px solid var(--border);
  border-radius:10px; background:var(--surface); }
.chartblock figcaption{ font-size:13px; font-weight:600; color:var(--ink-2); margin-bottom:8px; }
.ch-legend{ display:flex; gap:14px; flex-wrap:wrap; font-size:12px; color:var(--ink-2); margin-bottom:8px; }
.ch-legend .sw{ display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:5px; vertical-align:-1px; }
.ch-svg{ width:100%; height:170px; display:block; }
.ch-x{ display:flex; justify-content:space-between; font-size:11px; color:var(--ink-3); margin-top:2px; }
.ch-bars{ display:flex; gap:10px; align-items:flex-end; height:170px; padding-top:10px; }
.ch-grp{ flex:1; display:flex; flex-direction:column; align-items:center; height:100%; }
.ch-bg{ display:flex; gap:3px; align-items:flex-end; height:100%; width:100%; justify-content:center; }
.ch-bar{ width:60%; min-height:2px; border-radius:3px 3px 0 0; position:relative; }
.ch-bar .ch-v{ position:absolute; top:-16px; left:50%; transform:translateX(-50%);
  font-size:10px; color:var(--ink-3); white-space:nowrap; }
.ch-cat{ font-size:11px; color:var(--ink-3); margin-top:5px; text-align:center; }

/* --- Overview digest: thesis + per-section summaries --- */
.ov-thesis{ margin-bottom:30px; }
.ov-thesis h2,.ov-thesis h3,.ov-thesis h4{ letter-spacing:-.01em; }
.ov-digest{ display:flex; flex-direction:column; gap:4px; }
.ov-sec{ padding:20px 0; border-top:1px solid var(--border); cursor:pointer; }
.ov-sec:hover .ov-link{ opacity:1; }
.ov-h{ display:flex; align-items:baseline; justify-content:space-between; gap:12px; margin-bottom:8px; }
.ov-h h3{ font-size:17px; font-weight:650; color:var(--ink); margin:0; letter-spacing:-.01em; }
.ov-link{ font-size:12.5px; color:var(--accent); opacity:.55; white-space:nowrap; transition:opacity .15s; }
.ov-body{ font-size:15px; line-height:1.62; color:var(--ink-2); }
.ov-body p{ margin:0 0 8px; } .ov-body p:last-child{ margin-bottom:0; }

/* deep-dive chart block: bars on the primary axis + a secondary-axis dot-line.
   The plot is one fixed-height row (all bars share the bottom baseline); the year
   labels are a SEPARATE aligned row below, so nothing shifts the baseline. */
.ch2-wrap{ margin-top:8px; }
.ch2-plot{ position:relative; display:flex; align-items:flex-end; gap:10px;
  height:240px; padding:24px 4px 0; border-bottom:1px solid var(--border); }
.ch2-col{ position:relative; flex:1; height:100%; display:flex; align-items:flex-end;
  justify-content:center; }
.ch2-bar{ width:62%; background:var(--accent); opacity:.9; border-radius:3px 3px 0 0;
  position:relative; min-height:1px; }
.ch2-v{ position:absolute; top:-19px; left:50%; transform:translateX(-50%);
  font-family:"Spline Sans Mono"; font-size:11px; color:var(--ink-2); white-space:nowrap; }
.ch2-dot{ position:absolute; left:50%; width:7px; height:7px; border-radius:50%;
  transform:translate(-50%,50%); z-index:3; }
.ch2-ov{ position:absolute; left:0; right:0; top:24px; bottom:0; width:100%;
  height:calc(100% - 24px); pointer-events:none; z-index:2; overflow:visible; }
.ch2-xrow{ display:flex; gap:10px; padding:7px 4px 0; }
.ch2-xc{ flex:1; text-align:center; font-family:"Spline Sans Mono"; font-size:11px;
  color:var(--ink-3); }

/* Interactive industry chart-pack: server emits <div.ic-mount data-spec>, the
   client (industry_charts.js) draws responsive SVG with hover tooltips. */
.ic-mount{ min-height:40px; }
.ic-chart{ max-width:800px; margin:18px 0; padding:14px 16px 12px;
  border:1px solid var(--border); border-radius:10px; background:var(--surface); }
.ic-chart figcaption{ font-size:13.5px; font-weight:600; color:var(--ink-2); margin-bottom:6px; }
.ic-svg{ width:100%; height:auto; display:block; overflow:visible; }
.ic-note{ font-size:12.5px; color:var(--ink-2); line-height:1.5; margin-top:9px; max-width:720px; }
.ic-legend{ font-size:12.5px; color:var(--ink-2); }
#view-industry-report .broadsheet figure.ic-chart{ margin:22px 0; }
/* legend */
.ic-legend{ display:flex; gap:16px; flex-wrap:wrap; font-size:12px; color:var(--ink-2); margin:2px 0 8px; }
.ic-sw{ display:inline-block; width:11px; height:11px; border-radius:3px; margin-right:6px; vertical-align:-1px; }
.ic-sw.ic-round{ border-radius:50%; }
.ic-sw.ic-dash{ width:15px; height:0; border-radius:0; border-top:2px dashed var(--ink-3); }
/* hover emphasis on bars/dots */
.ic-bar{ transition:fill .1s, opacity .1s; }
.ic-bar.on{ filter:brightness(1.12); }
.ic-dot{ transition:fill-opacity .1s, r .1s; cursor:pointer; }
.ic-dot.on{ fill-opacity:.85; }
.ic-hit{ cursor:default; }
/* floating tooltip (appended to <body>) */
.ic-tip{ position:fixed; z-index:9999; display:none; pointer-events:none;
  background:var(--ink, #23201c); color:#f7f4ef; font-family:"Hanken Grotesk",sans-serif;
  font-size:12px; line-height:1.5; padding:8px 11px; border-radius:8px; max-width:260px;
  box-shadow:0 6px 22px rgba(0,0,0,.28); }
.ic-tip b{ font-weight:650; color:#fff; }
.ic-tip .t-d{ color:#c9c2b8; font-size:11px; }

/* Earnings / investor calendar */
.next-earn{ margin-top:10px; font-size:13px; color:var(--ink-2); }
.next-earn .ne-l{ color:var(--ink-3); }
.next-earn b{ color:var(--ink); }
.next-earn .ne-when{ color:var(--ink-3); }
.ne-proj{ font-size:10.5px; color:var(--ink-3); border:1px solid var(--border); border-radius:4px; padding:1px 5px; margin-left:4px; }
.earncal{ margin-top:8px; }
.ec-next{ display:inline-flex; flex-direction:column; gap:2px; background:var(--surface-2);
  border:1px solid var(--border); border-radius:10px; padding:14px 18px; margin-bottom:18px; }
.ec-next-l{ font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3); }
.ec-next-d{ font-size:22px; font-weight:650; color:var(--ink); letter-spacing:-.01em; }
.ec-next-q{ font-size:13px; color:var(--ink-2); }
.ec-h{ font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-3); margin:14px 0 6px; }
.ec-rows{ display:flex; flex-direction:column; }
.ec-row{ display:flex; align-items:baseline; gap:16px; padding:8px 0; border-top:1px solid var(--border); }
.ec-row:first-child{ border-top:none; }
.ec-q{ width:90px; color:var(--ink-2); font-weight:550; }
.ec-dt{ flex:1; color:var(--ink); font-family:"Spline Sans Mono"; font-size:13px; }
.ec-form{ font-size:11px; color:var(--ink-3); border:1px solid var(--border); border-radius:4px; padding:1px 6px; }

/* calendar: confirmed IR events (date · title · kind) + source link */
.earncal .ec-row .ec-dt{ width:110px; flex:none; }
.earncal .ec-row .ec-q{ flex:1; width:auto; }
.ec-src{ margin-top:14px; font-size:12px; color:var(--ink-3); }
.ec-src a{ color:var(--accent); }

/* Server-side screener pager (Prev / Next + page count) */
.scrn-pager{display:flex;align-items:center;justify-content:center;gap:16px;
  padding:18px 0 8px;font-family:'Hanken Grotesk',sans-serif;font-size:13.5px}
.scrn-pager .pg-info{color:var(--ink-2,#5a6270);font-variant-numeric:tabular-nums}
.scrn-pager button{font:inherit;font-weight:600;padding:7px 16px;border-radius:8px;
  border:1px solid var(--border,#e2e2e0);background:var(--surface,#fff);
  color:var(--ink,#1a1a1a);cursor:pointer;transition:background .12s,border-color .12s}
.scrn-pager button:hover:not(:disabled){background:var(--hover,#f4f4f2);border-color:var(--ink-3,#bbb)}
.scrn-pager button:disabled{opacity:.4;cursor:default}
.scrn-pager .pg-jump{display:flex;align-items:center;gap:8px;color:var(--ink-2,#5a6270)}
.scrn-pager .pg-input{width:64px;font:inherit;padding:6px 8px;border-radius:8px;
  border:1px solid var(--border,#e2e2e0);background:var(--surface,#fff);
  color:var(--ink,#1a1a1a);text-align:center;font-variant-numeric:tabular-nums}
.scrn-pager .pg-input:focus{outline:none;border-color:var(--ink-3,#bbb)}
.scrn-pager .pg-go{padding:7px 14px}
.scrn-loading,.scrn-empty{padding:28px 12px;text-align:center;color:var(--ink-3,#9aa0a6);
  font-family:'Hanken Grotesk',sans-serif}

/* Research-queue hover box in the top bar */
.rq-wrap{position:relative;display:inline-block}
.rq-trigger{cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.rq-badge{background:var(--accent,#7a5c2e);color:#fff;font-size:11px;font-weight:700;border-radius:9px;padding:1px 6px;line-height:1.5}
.rq-pop{position:absolute;top:calc(100% + 6px);right:0;min-width:300px;max-width:360px;background:var(--bg,#fff);
  border:1px solid var(--line,#e7e2d8);border-radius:12px;box-shadow:0 12px 36px rgba(0,0,0,.16);
  padding:10px;z-index:300;display:none}
/* Click-to-toggle (was :hover, which closed the moment the mouse crossed the gap to
   reach the cancel ✕). The panel stays open until you click away or cancel. */
.rq-pop.open{display:block}
.rq-head{font-family:"Hanken Grotesk";font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-2);padding:4px 6px 8px}
.rq-body{display:flex;flex-direction:column;gap:4px;max-height:340px;overflow:auto}
.rq-empty{font-family:"Hanken Grotesk";font-size:13px;color:var(--ink-2);padding:8px 6px}
.rq-row{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:8px;font-family:"Hanken Grotesk";font-size:13.5px}
.rq-row:hover{background:var(--hover,#f4f1ea)}
.rq-row .rq-pos{width:20px;text-align:center;color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:12px}
.rq-row .rq-nm{flex:1;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rq-row .rq-state{font-size:11px;color:var(--ink-2)}
.rq-row .rq-state.rq-paused{color:var(--accent,#7a5c2e);font-weight:600}
.rq-row .rq-state.rq-failed{color:#c0492d;font-weight:600}
.rq-row .rq-prog{font-variant-numeric:tabular-nums;opacity:.8}
/* Rough % complete for an in-flight deep dive — a thin accent bar next to the name. */
.rq-row .rq-bar{flex:0 0 auto;width:46px;height:5px;border-radius:3px;background:var(--line,#e5e0d5);overflow:hidden}
.rq-row .rq-bar>i{display:block;height:100%;background:var(--accent,#7a5c2e);border-radius:3px;transition:width .3s ease}
.rq-spin{width:11px;height:11px;border:2px solid var(--line,#ddd);border-top-color:var(--accent,#7a5c2e);
  border-radius:50%;display:inline-block;animation:rqspin .8s linear infinite}
@keyframes rqspin{to{transform:rotate(360deg)}}
.rq-row.rq-flash .rq-pos{color:var(--accent,#7a5c2e);animation:rqpulse 1.4s ease-in-out infinite}
@keyframes rqpulse{0%,100%{opacity:1}50%{opacity:.4}}
.rq-cancel{cursor:pointer;color:var(--ink-2);font-size:14px;padding:0 4px;border-radius:6px}
.rq-cancel:hover{color:#c0492d;background:rgba(192,73,45,.08)}

/* Listings tab — a company's listings across markets */
.listings-tbl{width:100%;border-collapse:collapse;font-family:'Hanken Grotesk',sans-serif;font-size:14px}
.listings-tbl th{text-align:left;font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--ink-3,#9aa0a6);font-weight:600;padding:8px 12px;border-bottom:1px solid var(--border,#e2e2e0)}
.listings-tbl th.num,.listings-tbl td.num{text-align:right;font-variant-numeric:tabular-nums}
.listings-tbl td{padding:11px 12px;border-bottom:1px solid var(--border,#ececec);cursor:pointer}
.listings-tbl tr:hover td{background:var(--hover,#f4f4f2)}
.listings-tbl tr.listing-self td{background:var(--surface-2,#f6f4ef);cursor:default;font-weight:600}
.listing-here{font-size:10.5px;color:var(--accent,#7a5c2e);font-weight:700;text-transform:uppercase;letter-spacing:.03em;margin-left:6px}
.listing-kind{font-size:12px;color:var(--ink-2,#5a6270)}

/* ============ Technical Analysis tab (TradingView embeds) ============ */
/* House-view note: this product values businesses bottom-up; the charts are an
   opt-in lens, framed as such rather than removed. */
.ta-housenote{font-family:"Hanken Grotesk";font-size:13px;line-height:1.55;color:var(--ink-2);
  background:var(--surface-2);border:1px solid var(--border);border-left:3px solid var(--accent);
  border-radius:8px;padding:12px 14px;margin:14px 0 0;max-width:760px}
.ta-symhint{margin:0 0 12px}
/* The widget is given an explicit 720px height; the wrap matches so the iframe
   never clips and the chart reads at a usable size. */
.ta-chart-wrap{margin-top:4px}
.ta-chart{height:720px;width:100%;border:1px solid var(--border);border-radius:10px;overflow:hidden}
.ta-chart iframe,.ta-chart .tradingview-widget-container__widget{height:100%!important;width:100%!important}
.ta-unavailable{padding:30px 0;color:var(--ink-3)}
.ta-attrib{font-family:"Hanken Grotesk";font-size:11.5px;color:var(--ink-3);margin-top:22px}
.ta-attrib a{color:var(--ink-2);text-decoration:underline}
@media(max-width:760px){ .ta-chart{height:440px} }

/* ============ Research-note PDF download buttons ============ */
/* Flash thesis + Full report buttons in the price/header cluster. The PDFs are
   separate purpose-built documents (server-rendered + browser Save-as-PDF), so no
   print CSS on the app page is needed. */
.pdf-btns{display:flex;flex-direction:column;gap:6px;margin-top:10px;align-items:flex-end}
.pdf-btn{font:inherit;font-size:12px;font-weight:600;padding:6px 12px;border-radius:8px;white-space:nowrap;
  border:1px solid var(--border,#e2e2e0);background:var(--surface,#fff);color:var(--ink,#1a1a1a);cursor:pointer}
.pdf-btn:hover{background:var(--hover,#f4f4f2);border-color:var(--ink-3,#bbb)}

/* Residual-income (insurer/bank) valuation: the editable ROE path on the Valuation tab. */
.roe-path{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px;align-items:flex-end}
.roe-path .py{display:flex;flex-direction:column;gap:3px;font-size:10.5px;color:var(--ink-3)}
.roe-path .py input{width:58px;font:inherit;font-size:13px;padding:5px 6px;border:1px solid var(--border);
  border-radius:7px;background:var(--surface);color:var(--ink);text-align:center}
.roe-path .py-add,.roe-path .py-del{font:inherit;font-size:12px;padding:5px 9px;border-radius:7px;cursor:pointer;
  border:1px solid var(--border);background:var(--surface);color:var(--ink-2)}
.roe-path .py-add:hover,.roe-path .py-del:hover{border-color:var(--ink-3)}

/* ============================================================================
   MOBILE / RESPONSIVE LAYER
   Two tiers, layered on top of the desktop design (which is untouched ≥1025px):
     ≤1024px  phones + iPad portrait — top-bar utilities collapse into a slide-in
              drawer; tabs become a swipeable strip; the page goes single-column;
              data tables scroll horizontally; a floating "Ask" button appears.
     ≤640px   phone refinements — tightest gutters, screener-as-cards, stacked hero,
              full-bleed analyst panel, bottom-sheet deep-drill.
   The mobile chrome is hidden in print (PDF export is a separate document anyway).
   ============================================================================ */

/* mobile-only chrome is hidden by default (shown inside the breakpoints) */
.menu-btn,.menu-scrim,.fab-ask,.viewer-toc-btn,.viewer-toc-scrim{display:none}

/* ---------------- ≤1024px : phones + iPad portrait ---------------- */
@media(max-width:1024px){
  :root{ --gap:30px; --secgap:30px; }

  /* The sticky bars use backdrop-filter, which makes them a containing block for
     position:fixed descendants — that would trap the slide-in drawer inside the
     ~60px bar. Drop the blur on mobile (solid bar) so the drawer positions against
     the viewport, and the scrolling tab strip stays opaque. */
  .topbar,.nav{backdrop-filter:none;background:var(--bg)}

  /* tighter page gutters (these are hard-coded 40px on desktop) */
  .topbar-in{padding:10px 18px}
  .nav-in{padding:0 12px}
  .wrap,.screener-wrap{padding:0 18px 84px}

  /* --- top bar: hamburger + slide-in utility drawer (re-lays-out .tb-right, no dupes) --- */
  .menu-btn{display:grid;place-items:center;width:40px;height:40px;border-radius:9px;border:1px solid var(--border);
    background:var(--surface);color:var(--ink);font-size:18px;line-height:1;cursor:pointer;flex:none;z-index:46}
  .menu-scrim{display:block;position:fixed;inset:0;background:rgba(20,16,10,.32);backdrop-filter:blur(2px);
    opacity:0;pointer-events:none;transition:opacity .25s;z-index:44}
  body.menu-open .menu-scrim{opacity:1;pointer-events:auto}
  /* The drawer lives INSIDE the sticky .topbar (z-index:40), which is its own stacking
     context — so the scrim (z-index:44, a sibling of <header>) painted OVER the drawer,
     darkening/blurring it and blocking taps. Lift the whole topbar above the scrim while
     the menu is open so the drawer is visible and clickable. */
  body.menu-open .topbar{z-index:50}
  .tb-right{position:fixed;top:0;right:0;bottom:0;width:300px;max-width:86vw;z-index:45;
    flex-direction:column;align-items:stretch;gap:6px;background:var(--bg);border-left:1px solid var(--border);
    box-shadow:-22px 0 60px -30px rgba(0,0,0,.5);overflow-y:auto;
    padding:18px 16px calc(20px + env(safe-area-inset-bottom));
    transform:translateX(102%);transition:transform .3s cubic-bezier(.4,0,.2,1)}
  body.menu-open .tb-right{transform:none}
  .tb-right>*{width:100%}
  .tb-link{padding:11px 12px;border-radius:9px;font-size:15px}
  .search-wrap{position:relative}
  .search-input{min-width:0;width:100%;padding:11px 13px;font-size:15px}
  .search-drop{position:static;min-width:0;margin-top:6px;max-height:280px;box-shadow:none;border-color:var(--border-2)}
  .rq-wrap{position:static;display:block}
  .rq-trigger{display:flex;align-items:center;gap:8px;padding:11px 12px;border-radius:9px;border:1px solid var(--border);
    background:var(--surface);font-size:15px;font-weight:500;color:var(--ink-2)}
  .rq-pop{position:static;min-width:0;max-width:none;margin-top:6px}
  .acct-wrap{display:block}
  .acct-pop{position:static;min-width:0;margin-top:6px}
  /* icon buttons read as labelled rows inside the drawer */
  .icon-btn{width:100%;height:auto;min-height:44px;display:flex;align-items:center;justify-content:flex-start;
    gap:12px;padding:9px 12px;font-size:18px}
  #acctBtn{font-size:20px}
  .icon-btn::after{font-family:"Hanken Grotesk";font-size:15px;font-weight:500;color:var(--ink-2)}
  #themeBtn::after{content:"Theme"}
  #watchBtn::after{content:"Save to watchlist"}
  #acctBtn::after{content:"Account"}
  .ask-btn{justify-content:center;padding:12px 14px;font-size:14.5px;margin-top:4px}

  /* --- tabs: swipeable horizontal strip --- */
  .nav-in{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
  .nav-in::-webkit-scrollbar{display:none}
  .tab{flex:0 0 auto;padding:14px 13px;font-size:14.5px;scroll-snap-align:start}

  /* --- page grids collapse to one column (restated below the 1180 rules) ---
     Use minmax(0,1fr), NOT plain 1fr: a 1fr track's auto-minimum is the widest
     child's MIN-CONTENT, so a wide nowrap table (e.g. the 6-column "by the numbers"
     table) forces the column past the viewport and the whole page overflows / zooms
     out on phones. minmax(0,1fr) + min-width:0 lets the column shrink and the table
     scroll inside it. (Same fix the codebase already uses for .analysis-content.) */
  .body,.news-grid,.model-grid,.analysis-layout,.bs-grid,.nf-split,.dcf-bridge-wrap,.dashgrid,.cards2,.sum-grid{grid-template-columns:minmax(0,1fr)}
  .body>*,.news-grid>*,.model-grid>*,.bs-grid>*,.nf-split>*,.analysis-layout>*{min-width:0}
  .rail,.bs-aside,.subnav{position:static}
  h1.co{font-size:40px}

  /* --- analysis sub-nav: horizontal chip strip --- */
  .subnav{flex-direction:row;flex-wrap:nowrap;overflow-x:auto;gap:7px;margin:0 0 18px;padding-bottom:2px;scrollbar-width:none}
  .subnav::-webkit-scrollbar{display:none}
  .subnav a{flex:0 0 auto;border-left:none;border:1px solid var(--border);border-radius:999px;padding:9px 14px;background:var(--surface)}
  .subnav a.on{border-color:var(--accent);background:var(--surface-2)}
  .subnav a .n{display:none}

  /* --- segmented controls (statement toggle / scenario presets / viewer) scroll if tight --- */
  .seg{max-width:100%;overflow-x:auto;scrollbar-width:none}
  .seg::-webkit-scrollbar{display:none}
  .seg button{flex:0 0 auto;white-space:nowrap}

  /* --- data tables: horizontal scroll with a sticky label column --- */
  .fintable,.listings-tbl,.sens{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
  .fintable th,.fintable td,.listings-tbl th,.listings-tbl td{white-space:nowrap}
  .fintable td:first-child,.fintable th:first-child{position:sticky;left:0;background:var(--bg);z-index:1}
  /* statements + DCF already scroll inside their own wrapper — keep them real tables
     so the existing width:max-content + sticky-first-column treatment holds */
  .statement .fintable,.panel .fintable{display:table;max-width:none;overflow:visible}

  /* filings grid: same minmax(0,1fr) treatment (a wide filing card would blow out 1fr) */
  .filing-grid{grid-template-columns:minmax(0,1fr)}
  .filing-grid>*,.newsrow,.newslist>*{min-width:0}

  /* trend/statement bar charts have many year columns; shrink the flex columns AND
     the inter-column gap (14px × ~24 columns alone overflows a phone) so the chart
     fits the viewport instead of forcing the page wider */
  .chart{min-width:0;gap:3px;padding-left:0;padding-right:0}
  .chart .col{min-width:0}
  .segmix{min-width:0}
  .panel{padding:16px}

  /* --- valuation: touch sliders + single-column outputs --- */
  .dcf-out{grid-template-columns:1fr}
  input[type=range].slider{height:6px}
  input[type=range].slider::-webkit-slider-thumb{width:24px;height:24px}
  input[type=range].slider::-moz-range-thumb{width:24px;height:24px}

  /* --- floating Ask-the-analyst button --- */
  .fab-ask{display:grid;place-items:center;position:fixed;right:16px;bottom:calc(16px + env(safe-area-inset-bottom));
    width:54px;height:54px;border-radius:50%;background:var(--ink);color:var(--bg);border:none;font-size:22px;cursor:pointer;
    box-shadow:0 8px 24px -6px rgba(0,0,0,.45);z-index:43}
  .fab-ask:active{transform:scale(.94)}

  /* --- filing viewer: contents become a slide-over --- */
  .analyst{width:420px}
  .viewer-toc-btn{display:flex;order:-1}
  .viewer-bar{gap:10px;padding:10px 14px;flex-wrap:wrap}
  .viewer-bar .vmeta{display:none}
  .viewer-main{grid-template-columns:1fr;position:relative}
  .viewer-toc-scrim{display:block;position:absolute;inset:0;background:rgba(20,16,10,.32);
    opacity:0;pointer-events:none;transition:opacity .2s;z-index:2}
  .viewer.toc-open .viewer-toc-scrim{opacity:1;pointer-events:auto}
  .viewer-toc{position:absolute;top:0;left:0;bottom:0;width:280px;max-width:84vw;z-index:3;
    transform:translateX(-102%);transition:transform .25s;box-shadow:8px 0 28px -10px rgba(0,0,0,.4)}
  .viewer.toc-open .viewer-toc{transform:none}
  .viewer-doc{padding:22px 16px}
  .docpage{padding:30px 22px}

  /* screener filter/search/pager bars wrap on narrow widths */
  .scrn-bar{flex-wrap:wrap;gap:10px}
  .nlsearch{flex-wrap:wrap}
  .scrn-pager{flex-wrap:wrap;gap:6px}
}

/* ---------------- ≤640px : phone refinements ---------------- */
@media(max-width:640px){
  :root{ --gap:24px; --secgap:26px; }
  .topbar-in{padding:10px 14px}
  .nav-in{padding:0 8px}
  .wrap,.screener-wrap{padding:0 14px 76px}
  .brand .crumbs{display:none}            /* redundant with the H1 below */
  h1.co{font-size:31px;line-height:1.05}
  .scrn-hero h1.co{font-size:30px}

  /* filing cards: a single column on phones (the 2-col rule overflows ~166px cells) */
  .nf-split .filing-grid{grid-template-columns:minmax(0,1fr)}

  /* hero stacks; price text stacks normally, action buttons sit in a row beneath it */
  .hero{grid-template-columns:1fr;gap:14px;align-items:start;padding:18px 0 16px}
  .price-cluster{text-align:left}
  .price-cluster .px{font-size:30px}
  .ratingline{justify-content:flex-start;flex-wrap:wrap;gap:6px 10px}
  .co-sub{gap:9px 14px}

  /* scenario cards single column */
  .scn-grid{grid-template-columns:1fr}

  /* --- screener: one card per company --- */
  .scrn-scroll{overflow:visible}
  .scrn-table,.scrn-table tbody{display:block}
  .scrn-table thead{display:none}
  .scrn-table tr{display:block;background:var(--surface);border:1px solid var(--border);border-radius:12px;
    padding:12px 14px;margin-bottom:10px;box-shadow:var(--shadow)}
  .scrn-table td{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 0;border:none;text-align:right}
  .scrn-table td::before{content:attr(data-label);font-family:"Hanken Grotesk";font-weight:500;font-size:12px;
    letter-spacing:.03em;text-transform:uppercase;color:var(--ink-3);text-align:left}
  .scrn-table td.name{padding:0 0 10px;margin-bottom:6px;border-bottom:1px solid var(--border)}
  .scrn-table td.name::before{display:none}
  .scrn-table td.name .scrn-co{width:100%}

  /* deep-drill becomes a bottom sheet */
  .drill{top:auto;bottom:0;left:0;right:0;width:100%;max-width:none;max-height:90vh;
    transform:translateY(24px);border-radius:18px 18px 0 0}
  .drill.open{transform:none}

  /* analyst panel full width */
  .analyst{width:100vw;max-width:100vw;min-width:0;border-left:none}
  .an-resize{display:none}
  .an-head{padding:16px 18px}
  .an-body{padding:18px}
  .an-foot{padding:14px 18px 18px}

  /* denser sensitivity grid */
  .sens th,.sens td{padding:7px 5px;font-size:11px}
}

/* very small phones */
@media(max-width:380px){
  h1.co{font-size:27px}
  .fab-ask{width:50px;height:50px;font-size:20px}
  .tb-right{width:88vw}
}

/* ---------------- targeted mobile fixes (flash / valuation / analysis / hero) ---------------- */
@media(max-width:1024px){
  /* Agent-authored markdown tables in Analysis prose were not in the scroll set, so a
     wide table crushed the first column to ~10px and the label wrapped one char per
     line (vertical text). Scroll them like the other tables, force nowrap, and keep a
     readable label column. The .subview scope out-specifies the base wrap rules. */
  .mdtable,.mdtable-wrap{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
  .mdtable th,.mdtable td{white-space:nowrap}
  .subview .fintable td,.subview .fintable th,.subview .mdtable td,.subview .mdtable th,
  .fintable td:first-child,.fintable th:first-child,.mdtable td:first-child,.mdtable th:first-child{white-space:nowrap}
  /* the base .prose .mdtable first-column rule (white-space:normal, specificity 0,3,1)
     out-ranked the above and let long row labels wrap one-char-per-line in the now-narrow
     column; match its specificity to keep the label on a single line (the table scrolls). */
  .prose .mdtable th:first-child,.prose .mdtable td:first-child{white-space:nowrap}
  .fintable td:first-child,.mdtable td:first-child{min-width:7em}

  /* Sensitivity grid was tiny & cramped — make the cells legible and let it scroll. */
  .sens{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .sens th,.sens td{font-size:12.5px;padding:9px 9px;min-width:52px}
}
@media(max-width:640px){
  /* The valuation fair-value box is .dcf-cell.hero — it shares the `hero` class with the
     page hero, so the mobile `.hero{padding:18px 0 16px}` rule was zeroing its side
     padding. Re-assert proper padding (higher specificity) so the $-figure isn't flush
     to the edge, and keep the other DCF cells padded too. */
  .dcf-cell{padding:16px 16px}
  .dcf-cell.hero{padding:18px 20px}

  /* sensitivity cells already legible above; just override the earlier shrink rule */
  .sens th,.sens td{font-size:12.5px;padding:9px 9px}

  /* Scenario range bar: the bear/base/bull labels are positioned by value-percentage and
     collide whenever the scenarios cluster (here on the left, on the right for other
     companies). On phones, drop them to an evenly-spaced legend row BELOW the bar
     (left / centre / right) — overriding the inline left% — so they never overlap. The
     bar keeps its real colored range + "now" marker. */
  .field-track{margin:18px 0 56px;height:44px}
  .field-mark{top:auto;bottom:-44px;font-size:11px;color:var(--ink-2)}
  .field-mark::after{display:none}                 /* connector tick to the bar no longer meaningful */
  #markBear{left:0!important;transform:none;text-align:left}
  #markBase{left:50%!important;transform:translateX(-50%);text-align:center}
  #markBull{left:auto!important;right:0;transform:none;text-align:right}
  .field-now span{font-size:10px}                  /* the on-bar "now" price label */

  /* Action buttons → pill "bubbles" in the SAME style as the Full research / Flash thesis
     toggle, laid side by side in a wrapping row UNDER the share price, with their full
     descriptive labels. The two button sub-groups (PDF + Generate) are flattened so they
     share one row; pdf-btns keeps its JS-driven show/hide, genToolbar's inline flex is
     overridden. */
  .pc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
  .pc-actions .pdf-btns{display:contents}
  .pc-actions .genToolbar{display:contents!important}
  .pc-actions .pdf-btn{font:600 13px/1 "Hanken Grotesk",system-ui,sans-serif;padding:9px 15px;
    border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--ink);
    white-space:nowrap;cursor:pointer;margin:0}
  .pc-actions .pdf-btn:active{background:var(--surface-2)}

  /* Flash thesis: break out of the page gutters so the embed is full-bleed on phones
     (the in-shadow layout is handled by the style injected in mountFlash). */
  #flashMount{margin-left:-14px;margin-right:-14px}
  #flashToggleBar{padding:0 0}
}

/* keep mobile-only chrome out of print */
@media print{
  .menu-btn,.menu-scrim,.fab-ask,.viewer-toc-btn,.viewer-toc-scrim{display:none !important}
  .tb-right{position:static;transform:none}
}

/* ============ Earnings Calls tab ============ */
#view-earnings .ec-card{ background:var(--surface); border:1px solid var(--line,rgba(0,0,0,.08));
  border-radius:14px; padding:20px 22px; margin-bottom:22px; }
#view-earnings .ec-head{ display:flex; justify-content:space-between; align-items:flex-start; gap:16px;
  border-bottom:1px solid var(--line,rgba(0,0,0,.08)); padding-bottom:12px; margin-bottom:14px; }
#view-earnings .ec-title{ font-weight:650; font-size:18px; color:var(--ink); }
#view-earnings .ec-sub{ font-size:12.5px; color:var(--ink-3); margin-top:3px; }
#view-earnings .ec-src{ font-size:12.5px; color:var(--accent); text-decoration:none; white-space:nowrap; }
#view-earnings .ec-tbl{ width:100%; border-collapse:collapse; font-size:13.5px; margin:4px 0 6px; }
#view-earnings .ec-tbl th{ text-align:right; color:var(--ink-3); font-weight:550; padding:5px 10px;
  border-bottom:1px solid var(--line,rgba(0,0,0,.08)); }
#view-earnings .ec-tbl th:first-child{ text-align:left; }
#view-earnings .ec-tbl td{ text-align:right; padding:5px 10px; color:var(--ink-2); }
#view-earnings .ec-tbl td:first-child{ text-align:left; color:var(--ink); }
#view-earnings .ec-tbl .ec-hi{ font-weight:650; color:var(--accent); }
#view-earnings .ec-cap{ font-size:12px; color:var(--ink-3); margin:6px 2px 4px; line-height:1.5; }
#view-earnings .ec-flag{ margin-top:14px; }
#view-earnings .ec-flag-t{ font-size:12px; text-transform:uppercase; letter-spacing:.04em;
  color:var(--ink-3); font-weight:600; margin-bottom:7px; }
#view-earnings .ec-mom{ border-left:2px solid var(--line,rgba(0,0,0,.12)); padding:2px 0 8px 12px; margin-bottom:8px; }
#view-earnings .ec-mom-h b{ color:var(--accent); }
#view-earnings .ec-q{ font-size:13px; color:var(--ink-2); }
#view-earnings .ec-a{ font-size:13px; color:var(--ink-3); margin-top:3px; line-height:1.55; font-style:italic; }
#view-earnings .ec-tx{ margin-top:14px; }
#view-earnings .ec-txbtn{ font-size:13px; color:var(--accent); background:none; border:1px solid var(--line,rgba(0,0,0,.15));
  border-radius:8px; padding:6px 14px; cursor:pointer; }
#view-earnings .ec-txbody{ margin-top:12px; max-height:460px; overflow-y:auto; padding-right:8px;
  border-top:1px solid var(--line,rgba(0,0,0,.08)); padding-top:10px; }
#view-earnings .ec-seg{ font-size:13.5px; line-height:1.6; margin:0 0 7px; color:var(--ink-2); }
#view-earnings .ec-ts{ color:var(--ink-3); font-variant-numeric:tabular-nums; font-size:12px; margin-right:8px; }
#view-earnings .ec-fp{ font-weight:750; color:var(--ink); }

/* Earnings tab — insights layout */
#view-earnings .ec-ai{ background:var(--surface-2); border:1px solid var(--line,rgba(0,0,0,.07));
  border-radius:12px; padding:18px 20px; margin-bottom:18px; }
#view-earnings .ec-ai-tag{ font-size:11px; text-transform:uppercase; letter-spacing:.06em;
  color:var(--accent); font-weight:650; margin-bottom:8px; }
#view-earnings .ec-headline{ font-size:18px; line-height:1.45; font-weight:600; color:var(--ink); margin-bottom:12px; }
#view-earnings .ec-kp{ margin:8px 0 14px; padding-left:18px; }
#view-earnings .ec-kp li{ font-size:13.5px; line-height:1.6; color:var(--ink-2); margin-bottom:7px; }
#view-earnings .ec-box{ background:var(--surface); border:1px solid var(--line,rgba(0,0,0,.06));
  border-radius:9px; padding:11px 14px; margin-top:10px; font-size:13px; line-height:1.55; color:var(--ink-2); }
#view-earnings .ec-box-t{ font-size:11.5px; text-transform:uppercase; letter-spacing:.04em;
  color:var(--ink-3); font-weight:600; margin-bottom:5px; }
#view-earnings .ec-sf{ font-size:13px; line-height:1.55; color:var(--ink-2); margin:5px 0; }
#view-earnings .ec-sec{ margin-top:18px; }
#view-earnings .ec-sec-t{ font-size:13px; font-weight:650; color:var(--ink); margin-bottom:10px;
  padding-bottom:6px; border-bottom:1px solid var(--line,rgba(0,0,0,.08)); }
#view-earnings .ec-hm-row{ display:flex; align-items:center; gap:10px; margin-bottom:6px; font-size:12.5px; }
#view-earnings .ec-hm-lab{ width:190px; flex:none; color:var(--ink-2); text-align:right; }
#view-earnings .ec-hm-bar{ flex:1; background:var(--surface-2); border-radius:5px; height:14px; overflow:hidden; }
#view-earnings .ec-hm-bar span{ display:block; height:100%; background:var(--accent); border-radius:5px; }
#view-earnings .ec-hm-pct{ width:38px; flex:none; color:var(--ink-3); font-variant-numeric:tabular-nums; }
#view-earnings .ec-sev{ display:inline-block; min-width:30px; text-align:center; font-weight:700;
  font-size:12px; border-radius:6px; padding:2px 7px; color:#fff; }
#view-earnings .ec-sev-hi{ background:oklch(0.55 0.16 25); }
#view-earnings .ec-sev-mid{ background:oklch(0.65 0.13 70); }
#view-earnings .ec-sev-lo{ background:oklch(0.62 0.05 250); }
#view-earnings .ec-topic{ font-weight:650; color:var(--ink); margin:0 8px; font-size:13px; }
#view-earnings .ec-mmeta{ font-size:11.5px; color:var(--ink-3); }
#view-earnings .ec-mom-h{ display:flex; align-items:center; flex-wrap:wrap; gap:4px; margin-bottom:6px; }
#view-earnings .ec-tbl td.num,#view-earnings .ec-tbl th.num{ text-align:right; }
#view-earnings .ec-play{ font-size:11.5px; font-weight:600; color:var(--accent);
  background:var(--surface); border:1px solid var(--accent); border-radius:20px;
  padding:2px 11px; margin:0 2px; cursor:pointer; white-space:nowrap; }
#view-earnings .ec-play.on{ background:var(--accent); color:#fff; }
#view-earnings .ec-tw{ border-left:3px solid var(--line,rgba(0,0,0,.15)); padding:4px 0 10px 13px; margin-bottom:9px; }
#view-earnings .ec-tw-h{ display:flex; align-items:center; gap:9px; margin-bottom:4px; }
#view-earnings .ec-tw-h b{ font-size:13.5px; color:var(--ink); }
#view-earnings .ec-tw-badge{ font-size:11px; font-weight:700; border-radius:5px; padding:2px 8px; white-space:nowrap; }
#view-earnings .ec-tw-breach{ background:oklch(0.55 0.16 25); color:#fff; }
#view-earnings .ec-tw-ok{ background:oklch(0.55 0.11 150); color:#fff; }
#view-earnings .ec-tw-neutral{ background:var(--surface-2); color:var(--ink-2); }
#view-earnings .ec-tw-read{ font-size:13px; line-height:1.55; color:var(--ink-2); }

/* Earnings tab refinements */
#view-earnings .ec-q{ width:auto; display:block; font-size:13.5px; color:var(--ink); font-weight:400; margin-top:2px; line-height:1.55; }
#view-earnings .ec-a{ width:auto; display:block; }
#view-earnings .ec-cap-top{ margin:-2px 0 12px; }     /* caption sits under the heading */
#view-earnings .ec-play-sm{ font-size:10.5px; padding:1px 8px; margin-left:6px; vertical-align:middle; }
#view-earnings .ec-kp li{ margin-bottom:9px; }
#view-earnings .ec-head-r{ display:flex; align-items:center; gap:12px; white-space:nowrap; }
#view-earnings .ec-speed{ font-size:11.5px; font-weight:600; color:var(--ink-2);
  background:var(--surface); border:1px solid var(--line,rgba(0,0,0,.18)); border-radius:20px;
  padding:2px 10px; cursor:pointer; font-variant-numeric:tabular-nums; }
#view-earnings .ec-speed:hover{ border-color:var(--accent); color:var(--accent); }
/* Analyst tone — traffic light */
#view-earnings .ec-tl-row{ display:flex; align-items:center; gap:10px; padding:4px 0; font-size:13px; }
#view-earnings .ec-tl{ width:11px; height:11px; border-radius:50%; flex:none; }
#view-earnings .ec-tl-red{ background:oklch(0.55 0.18 25); }
#view-earnings .ec-tl-amber{ background:oklch(0.72 0.15 70); }
#view-earnings .ec-tl-green{ background:oklch(0.58 0.13 150); }
#view-earnings .ec-tl-nm{ color:var(--ink); }
#view-earnings .ec-tl-lab{ color:var(--ink-3); font-size:12px; }
#view-earnings .ec-tl-red-t{ color:oklch(0.55 0.18 25); }
#view-earnings .ec-tl-amber-t{ color:oklch(0.62 0.15 70); }
#view-earnings .ec-tl-green-t{ color:oklch(0.52 0.13 150); }
#view-earnings .ec-speed-sm{ font-size:10px; padding:0 7px; margin-left:5px; }
#view-earnings .ec-expand{ font-size:11.5px; color:var(--accent); background:none; border:none;
  cursor:pointer; padding:4px 0; margin-top:2px; }
#view-earnings .ec-full .ec-q,#view-earnings .ec-full .ec-a{ margin-bottom:8px; }
/* clip controls: play + speed + draggable scrubber */
#view-earnings .ec-clip{ display:inline-flex; align-items:center; gap:2px; vertical-align:middle; }
#view-earnings .ec-prog{ display:none; width:84px; height:5px; background:var(--surface-2);
  border-radius:4px; cursor:pointer; position:relative; touch-action:none; }
#view-earnings .ec-prog.on{ display:inline-block; }
#view-earnings .ec-prog-fill{ display:block; height:100%; width:0%; background:var(--accent);
  border-radius:4px; pointer-events:none; }
/* lift the hero divider off the content (earnings view only) — line up, content unmoved */
#view-earnings .hero{ padding-bottom:4px; }
#view-earnings .block{ margin-top:16px; }
/* Script vs the Street — two-column emphasis comparison */
#view-earnings .ec-vs{ display:grid; grid-template-columns:1fr 1fr; gap:26px; margin:14px 0 4px; }
#view-earnings .ec-vs-h{ font-size:12px; font-weight:650; color:var(--ink-2); margin-bottom:8px; }
#view-earnings .ec-vs .ec-hm-lab{ width:130px; }
#view-earnings .ec-box-lead{ border-left:3px solid var(--accent); font-size:13.5px; line-height:1.6; }
@media(max-width:900px){ #view-earnings .ec-vs{ grid-template-columns:1fr; gap:6px; } }

/* ---------- audio thesis walkthrough ---------- */
.walk-btn{display:flex;align-items:center;gap:8px;background:var(--accent);color:#fff;border:none;
  border-radius:8px;padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
.walk-btn:hover{filter:brightness(1.08)}

/* fixed transport bar; hidden until .on */
.pq-walk-bar{position:fixed;left:50%;bottom:18px;transform:translateX(-50%);
  display:none;align-items:center;gap:12px;z-index:60;width:min(720px,calc(100vw - 32px));
  background:var(--surface);border:1px solid var(--border);border-radius:14px;
  padding:10px 14px;box-shadow:0 10px 34px rgba(0,0,0,.22)}
.pq-walk-bar.on{display:flex;animation:pqw-rise .26s ease}
@keyframes pqw-rise{from{opacity:0;transform:translateX(-50%) translateY(10px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
.pqw-play,.pqw-close{background:var(--ink);color:var(--bg);border:none;border-radius:50%;
  width:34px;height:34px;font-size:13px;cursor:pointer;flex:0 0 auto;display:flex;align-items:center;justify-content:center}
.pqw-close{background:var(--surface-2);color:var(--ink-2)}
.pqw-speed{background:var(--surface-2);color:var(--ink-2);border:1px solid var(--border);
  border-radius:13px;height:26px;min-width:42px;padding:0 9px;font-family:"Hanken Grotesk",sans-serif;
  font-size:12px;font-weight:700;cursor:pointer;flex:0 0 auto;font-variant-numeric:tabular-nums}
.pqw-speed:hover{filter:brightness(1.06);color:var(--ink)}
.pqw-play:hover,.pqw-close:hover{filter:brightness(1.1)}
.pqw-cur,.pqw-dur{font-family:"Hanken Grotesk",sans-serif;font-size:12px;color:var(--ink-3);
  font-variant-numeric:tabular-nums;flex:0 0 auto;min-width:34px}
.pqw-dur{text-align:right}
.pqw-seek{flex:1 1 auto;accent-color:var(--accent);height:4px;cursor:pointer}
.pqw-title{font-family:"Hanken Grotesk",sans-serif;font-size:12px;font-weight:600;color:var(--ink-2);
  flex:0 0 auto;letter-spacing:.01em}
/* flash-thesis disclaimer banner shown at the start of the walkthrough */
.pq-walk-disclaimer{position:fixed;left:50%;top:22px;transform:translateX(-50%) translateY(-12px);
  z-index:60;display:none;align-items:center;gap:14px;max-width:min(680px,92vw);
  padding:11px 14px;border-radius:12px;background:var(--surface-2);border:1px solid var(--border);
  box-shadow:0 8px 30px rgba(0,0,0,.18);font-family:"Hanken Grotesk",sans-serif;
  font-size:13px;line-height:1.4;color:var(--ink-2)}
.pq-walk-disclaimer.show{display:flex;animation:pqw-disc-in .3s ease forwards}
@keyframes pqw-disc-in{to{transform:translateX(-50%) translateY(0)}}
.pqw-disc-x{flex:0 0 auto;background:var(--ink);color:var(--bg);border:none;border-radius:8px;
  padding:6px 12px;font-size:12px;font-weight:600;cursor:pointer}
.pqw-disc-x:hover{filter:brightness(1.1)}
@media(max-width:620px){ .pqw-title{display:none} }

/* spotlight on the element the narrator is talking about */
.pq-walk-spot{position:relative;z-index:1;border-radius:12px;
  box-shadow:0 0 0 3px var(--accent), 0 0 0 9px color-mix(in oklch,var(--accent) 22%,transparent);
  animation:pqw-pulse 2s ease-in-out infinite;transition:box-shadow .3s ease;scroll-margin:140px}
@keyframes pqw-pulse{0%,100%{box-shadow:0 0 0 3px var(--accent),0 0 0 9px color-mix(in oklch,var(--accent) 22%,transparent)}
  50%{box-shadow:0 0 0 3px var(--accent),0 0 0 14px color-mix(in oklch,var(--accent) 8%,transparent)}}

/* live caption — the spoken sentence's takeaway, key figure bolded */
.pq-caption{position:fixed;left:50%;bottom:74px;transform:translateX(-50%) translateY(8px);
  display:none;opacity:0;z-index:59;max-width:min(760px,calc(100vw - 32px));
  background:color-mix(in oklch,var(--ink) 92%,transparent);color:var(--bg);
  font-family:"Hanken Grotesk",sans-serif;font-size:18px;line-height:1.4;font-weight:500;
  text-align:center;padding:12px 22px;border-radius:12px;box-shadow:0 8px 28px rgba(0,0,0,.28);
  transition:opacity .3s ease, transform .3s ease}
.pq-caption.on{display:block}
.pq-caption.show{opacity:1;transform:translateX(-50%) translateY(0)}
.pq-caption b{color:#fff;font-weight:800}
@media(max-width:620px){ .pq-caption{font-size:15.5px;bottom:70px;padding:10px 16px} }

/* sharp pulse on the EXACT figure being spoken (e.g. a scenario price) */
.pq-walk-emph{animation:pqw-emph 1.4s ease-out;border-radius:6px}
@keyframes pqw-emph{0%{background:color-mix(in oklch,var(--accent) 55%,transparent);
    box-shadow:0 0 0 6px color-mix(in oklch,var(--accent) 30%,transparent);transform:scale(1.18)}
  100%{background:transparent;box-shadow:0 0 0 0 transparent;transform:scale(1)}}

/* chart bars grow in when the chart is referenced */
.pq-walk-anim .bar,.pq-walk-anim .sm-bar,.pq-walk-anim .col>*{transform-origin:bottom;
  animation:pqw-grow .75s cubic-bezier(.2,.7,.25,1) both}
@keyframes pqw-grow{from{transform:scaleY(0)}to{transform:scaleY(1)}}
/* chart held BLANK until the narration reaches it (then .pq-walk-anim draws it in) */
#revChart.pq-blank .bar,#revChart.pq-blank .sm-bar,#revChart.pq-blank .col>*{
  transform:scaleY(0);transform-origin:bottom;transition:none}

/* statement mode: blur the page back, lift ONE short large key line to the front.
   For dense prose (analysis subsections) and figures with no on-page home. */
.pq-stage{position:fixed;inset:0;z-index:57;opacity:0;pointer-events:none;
  background:color-mix(in oklch,var(--bg) 42%,transparent);
  backdrop-filter:blur(8px) saturate(.92);-webkit-backdrop-filter:blur(8px) saturate(.92);
  transition:opacity .35s ease}
.pq-stage.on{opacity:1}
.pq-statement{position:fixed;left:50%;top:42%;transform:translate(-50%,-46%);
  z-index:61;width:min(820px,calc(100vw - 48px));text-align:center;pointer-events:none;
  opacity:0;transition:opacity .4s ease, transform .4s ease}
.pq-statement.show{opacity:1;transform:translate(-50%,-50%)}
.pq-statement .pq-kick{font-family:"Hanken Grotesk",sans-serif;text-transform:uppercase;
  letter-spacing:.14em;font-size:12.5px;font-weight:700;color:var(--accent);margin-bottom:14px}
.pq-statement .pq-big{font-family:"Spectral",Georgia,serif;font-size:clamp(26px,3.6vw,42px);
  line-height:1.24;font-weight:500;color:var(--ink);
  text-shadow:0 1px 0 var(--bg),0 0 22px color-mix(in oklch,var(--bg) 70%,transparent)}
.pq-statement .pq-big b{font-weight:800;color:var(--accent)}

/* the condensed "presentable thesis" block on the overview front page */
.pq-pitch{background:color-mix(in oklch,var(--accent) 6%,var(--surface));
  border:1px solid color-mix(in oklch,var(--accent) 26%,var(--border));
  border-radius:14px;padding:20px 22px;margin:0 0 var(--secgap)}
.pq-pitch-top{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.pq-pitch-kick{font-family:"Hanken Grotesk",sans-serif;text-transform:uppercase;
  letter-spacing:.13em;font-size:11.5px;font-weight:700;color:var(--accent)}
.pq-pitch-play{background:var(--accent);color:#fff;border:none;border-radius:8px;
  padding:7px 13px;font-size:12.5px;font-weight:600;cursor:pointer;white-space:nowrap}
.pq-pitch-play:hover{filter:brightness(1.08)}
.pq-pitch-h{font-family:"Spectral",Georgia,serif;font-size:22px;line-height:1.3;
  font-weight:600;color:var(--ink);margin:0 0 12px}
.pq-pitch-beats{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.pq-pitch-beats li{position:relative;padding-left:20px;font-family:"Hanken Grotesk",sans-serif;
  font-size:15px;line-height:1.5;color:var(--ink-2)}
.pq-pitch-beats li::before{content:"";position:absolute;left:4px;top:9px;width:6px;height:6px;
  border-radius:50%;background:var(--accent)}
.pq-pitch-beats li b{font-weight:700;color:var(--ink)}

/* constructed chart shown over the blur stage (bars grow in, 'today' marker) */
.pq-chart{background:color-mix(in oklch,var(--surface) 95%,transparent);
  border:1px solid var(--border);border-radius:16px;padding:22px 24px;
  box-shadow:0 14px 38px rgba(0,0,0,.22)}
.pq-chart-title{font-family:"Hanken Grotesk",sans-serif;text-transform:uppercase;
  letter-spacing:.12em;font-size:12px;font-weight:700;color:var(--ink-3);
  margin-bottom:18px;text-align:left}
.pq-chart-body{position:relative;display:grid;gap:13px}
.pq-bar-row{display:grid;grid-template-columns:72px 1fr 64px;align-items:center;gap:10px}
.pq-bar-lab{font-family:"Hanken Grotesk",sans-serif;font-size:14px;font-weight:600;
  color:var(--ink-2);text-align:left}
.pq-bar-track{position:relative;height:24px;border-radius:7px;
  background:color-mix(in oklch,var(--ink) 8%,transparent)}
.pq-bar-fill{display:block;height:100%;width:0;border-radius:7px;
  transition:width .8s cubic-bezier(.2,.7,.25,1)}
.pq-bar-fill.t-accent{background:var(--accent)}
.pq-bar-fill.t-pos{background:var(--pos)}
.pq-bar-fill.t-neg{background:var(--neg)}
.pq-bar-fill.t-muted{background:var(--ink-3)}
/* while the chart lingers, the named case lights up and the rest recede */
.pq-bar-row{transition:opacity .3s ease}
.pq-bar-row.dim{opacity:.34}
.pq-bar-row.hi .pq-bar-lab,.pq-bar-row.hi .pq-bar-val{color:var(--accent)}
.pq-bar-row.hi .pq-bar-track{box-shadow:0 0 0 2px color-mix(in oklch,var(--accent) 45%,transparent)}
.pq-bar-val{font-family:"Hanken Grotesk",sans-serif;font-size:14px;font-weight:700;
  color:var(--ink);text-align:right;font-variant-numeric:tabular-nums}
.pq-bar-mark{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--ink);
  left:calc(82px + (100% - 156px) * var(--m));opacity:0;transition:opacity .4s ease .5s}
.pq-statement.show .pq-bar-mark{opacity:.75}
.pq-bar-mark-lab{position:absolute;top:-17px;left:50%;transform:translateX(-50%);
  white-space:nowrap;font-family:"Hanken Grotesk",sans-serif;font-size:11px;
  font-weight:700;color:var(--ink)}
.pq-chart-cap{margin-top:18px;font-family:"Spectral",Georgia,serif;
  font-size:clamp(19px,2.3vw,28px);line-height:1.3;color:var(--ink);text-align:center;
  text-shadow:0 1px 0 var(--bg),0 0 18px color-mix(in oklch,var(--bg) 70%,transparent)}
.pq-chart-cap b{font-weight:800;color:var(--accent)}
/* per-case assumptions listed under the constructed chart */
.pq-chart-drivers{margin-top:8px;text-align:center;font-family:"Hanken Grotesk",sans-serif;
  font-size:14px;font-weight:600;color:var(--accent);min-height:18px;letter-spacing:.01em}
/* eroding revenue pie */
.pq-pie-wrap{display:flex;align-items:center;gap:26px;justify-content:center;flex-wrap:wrap}
.pq-pie{width:188px;height:188px;border-radius:50%;flex:0 0 auto;position:relative;
  background:conic-gradient(var(--ink-3) 0% 100%);transition:background .25s linear}
.pq-pie-hole{position:absolute;inset:26%;background:var(--surface);border-radius:50%;
  display:flex;flex-direction:column;align-items:center;justify-content:center}
.pq-pie-total{font-family:"Hanken Grotesk",sans-serif;font-weight:800;font-size:22px;
  color:var(--ink);font-variant-numeric:tabular-nums}
.pq-pie-tlab{font-family:"Hanken Grotesk",sans-serif;font-size:10.5px;text-transform:uppercase;
  letter-spacing:.12em;color:var(--ink-3)}
.pq-pie-legend{display:grid;gap:9px;text-align:left}
.pq-pie-leg{font-family:"Hanken Grotesk",sans-serif;font-size:14.5px;color:var(--ink-2);
  display:flex;align-items:center;gap:8px}
.pq-pie-leg b{color:var(--ink);font-weight:700}
.pq-pie-dot{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
.pq-pie-dot.t-accent{background:var(--accent)} .pq-pie-dot.t-pos{background:var(--pos)}
.pq-pie-dot.t-neg{background:var(--neg)} .pq-pie-dot.t-muted{background:var(--ink-3)}
.pq-pie-erode{margin-top:6px;font-family:"Hanken Grotesk",sans-serif;font-size:14px;
  color:var(--neg);font-weight:600;max-width:300px}
.pq-pie-erode b{color:var(--ink)}
/* stacked single bar — total revenue split into its parts */
.pq-stk-bar{display:flex;height:38px;border-radius:9px;overflow:hidden;background:var(--surface-2);margin-bottom:12px}
.pq-stk-seg{height:100%;width:0;transition:width .8s cubic-bezier(.2,.7,.25,1)}
.pq-stk-seg.t-accent{background:var(--accent)} .pq-stk-seg.t-pos{background:var(--pos)}
.pq-stk-seg.t-neg{background:var(--neg)} .pq-stk-seg.t-muted{background:var(--ink-3)}
.pq-stk-total{text-align:center;font-family:"Hanken Grotesk",sans-serif;font-size:12px;
  text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3);margin-bottom:12px}
.pq-stk-legend{display:flex;gap:22px;justify-content:center;flex-wrap:wrap}
.pq-stk-leg{font-family:"Hanken Grotesk",sans-serif;font-size:15px;color:var(--ink-2);
  display:flex;align-items:center;gap:8px}
.pq-stk-leg b{color:var(--ink);font-weight:700}
.pq-stk-dot{width:12px;height:12px;border-radius:3px;flex:0 0 auto}
.pq-stk-dot.t-accent{background:var(--accent)} .pq-stk-dot.t-pos{background:var(--pos)}
.pq-stk-dot.t-neg{background:var(--neg)} .pq-stk-dot.t-muted{background:var(--ink-3)}
.pq-stk-pct{color:var(--ink-3);font-variant-numeric:tabular-nums}
/* projected revenue stacked per year — green erodes, totals stall */
.pq-proj{display:flex;align-items:flex-end;justify-content:center;gap:12px;height:210px;padding:0 4px}
.pq-proj-col{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;flex:1 1 0;max-width:84px}
.pq-proj-tot{font-family:"Hanken Grotesk",sans-serif;font-size:12px;font-weight:700;color:var(--ink);
  margin-bottom:5px;font-variant-numeric:tabular-nums}
.pq-proj-stack{width:62%;min-width:28px;height:0;display:flex;flex-direction:column;
  border-radius:6px 6px 0 0;overflow:hidden;transition:height .7s cubic-bezier(.2,.7,.25,1)}
.pq-proj-seg{flex-basis:0}
.pq-proj-seg.green{background:var(--pos)} .pq-proj-seg.brown{background:var(--accent)}
.pq-proj-yr{font-family:"Hanken Grotesk",sans-serif;font-size:11px;font-weight:600;color:var(--ink-3);margin-top:6px}
.pq-proj-legend{display:flex;gap:22px;justify-content:center;margin-top:14px;
  font-family:"Hanken Grotesk",sans-serif;font-size:13px;font-weight:600;color:var(--ink-2)}
.pq-proj-dot{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:7px;vertical-align:-1px}
.pq-proj-dot.green{background:var(--pos)} .pq-proj-dot.brown{background:var(--accent)}

/* ============ Relationship Network (Network tab) ============ */
.rg-toolbar{display:flex;flex-wrap:wrap;gap:18px;align-items:center;padding:4px 0 16px;font-family:"Hanken Grotesk",system-ui,sans-serif}
.rg-group{display:flex;align-items:center;gap:8px}
.rg-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-3);font-weight:600}
.rg-seg{display:inline-flex;flex-wrap:wrap;gap:4px;background:var(--surface-2);border:1px solid var(--border);border-radius:9px;padding:3px}
.rg-seg button{display:inline-flex;align-items:center;gap:5px;border:0;background:transparent;color:var(--ink-2);font:inherit;font-size:12.5px;padding:5px 10px;border-radius:7px;cursor:pointer}
.rg-seg button:hover{background:var(--surface)}
.rg-seg button.on{background:var(--accent);color:#fff}
.rg-chk{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink-2);cursor:pointer}
.rg-btn{border:1px solid var(--border);background:var(--surface);color:var(--ink-2);font:inherit;font-size:12.5px;padding:6px 11px;border-radius:8px;cursor:pointer}
.rg-btn:hover{border-color:var(--ink-3);color:var(--ink)}
.rg-dot{display:inline-block;width:9px;height:9px;border-radius:50%;vertical-align:middle}
.rg-wrap{display:grid;grid-template-columns:1fr 312px;gap:16px;align-items:stretch}
@media (max-width:860px){.rg-wrap{grid-template-columns:1fr}}
.rg-canvas{height:560px;background:var(--surface-2);border:1px solid var(--border);border-radius:12px;position:relative;overflow:hidden}
.rg-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:40px;color:var(--ink-3);font-family:"Hanken Grotesk",system-ui,sans-serif;font-size:14px;line-height:1.6}
.rg-panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;overflow:auto;font-family:"Hanken Grotesk",system-ui,sans-serif;min-height:200px}
.rg-panel-empty{color:var(--ink-3);font-size:13px;line-height:1.6}
.rg-d-h{font-size:15.5px;font-weight:700;color:var(--ink);display:flex;align-items:center;gap:8px;margin-bottom:4px}
.rg-tk{font-size:11px;font-weight:600;color:var(--ink-3);background:var(--surface-2);padding:1px 6px;border-radius:5px}
.rg-d-sub{font-size:12.5px;color:var(--ink-2);line-height:1.55;margin-bottom:10px}
.rg-warn{color:#b06b00}
.rg-d-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:8px 0 12px}
.rg-d-grid>div{background:var(--surface-2);border-radius:8px;padding:7px 9px}
.rg-d-grid span{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3)}
.rg-d-grid b{font-size:14px;color:var(--ink)}
.rg-d-ev{margin:10px 0;padding:9px 12px;border-left:3px solid var(--accent);background:var(--surface-2);border-radius:0 8px 8px 0;font-size:12.5px;line-height:1.55;color:var(--ink-2);font-style:italic}
.rg-d-link{display:inline-block;margin-top:8px;font-size:12.5px;font-weight:600;color:var(--accent);text-decoration:none}
.rg-d-link:hover{text-decoration:underline}
.rg-d-score{margin-top:8px;font-size:12.5px;padding:6px 10px;border-radius:8px}
.rg-d-score.pos{background:color-mix(in oklch,#2f9e54 16%,transparent);color:#1c6e3b}
.rg-d-score.neg{background:color-mix(in oklch,#e0564f 16%,transparent);color:#a83228}
.rg-d-legend{display:flex;gap:12px;font-size:11.5px;margin:6px 0 8px}
.rg-d-legend .pos{color:#2f9e54}.rg-d-legend .neg{color:#e0564f}
.rg-d-list{list-style:none;margin:6px 0 0;padding:0}
.rg-d-list li{display:flex;justify-content:space-between;font-size:12.5px;padding:4px 0;border-bottom:1px solid var(--border)}
.rg-d-list li.pos{color:#2f9e54}.rg-d-list li.neg{color:#e0564f}
.rg-d-list li span{color:var(--ink-3);font-variant-numeric:tabular-nums}
.rg-d-foot,.rg-d button+.rg-d-foot{margin-top:10px;font-size:11px;color:var(--ink-3);line-height:1.5}
.rg-expand{margin-top:10px;width:100%}
.rg-legend{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin-top:12px;font-family:"Hanken Grotesk",system-ui,sans-serif;font-size:12px;color:var(--ink-3)}
.rg-legend-item{display:inline-flex;align-items:center;gap:6px}
.rg-node-c{width:13px;height:13px;border-radius:50%;background:#11304f;border:2px solid #f4b400;display:inline-block}
.rg-node-x{width:11px;height:11px;background:#c6ccd2;border:1px dashed #9aa4ad;display:inline-block;transform:rotate(45deg)}
.rg-edge-solid{width:18px;height:0;border-top:3px solid #2a6fdb;display:inline-block}
.rg-edge-dash{width:18px;height:0;border-top:2px dashed #aab4be;display:inline-block}
.rg-legend-stat{margin-left:auto;color:var(--ink-2);font-weight:500}

/* relationship-graph: edge evidence references */
.rg-ev-wrap{margin-top:12px;border-top:1px solid var(--border);padding-top:10px}
.rg-ev-h{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);font-weight:700;margin-bottom:8px}
.rg-ref{margin-bottom:12px}
.rg-ref .rg-d-ev{margin:0 0 4px}
.rg-ref .rg-d-ev mark{background:color-mix(in oklch,#f4b400 38%,transparent);color:inherit;padding:0 1px;border-radius:2px}
.rg-ref-cite{font-size:11.5px;color:var(--ink-3)}
.rg-ref-cite span{color:var(--ink-3)}

/* relationship-graph: industry/country legend swatches */
.rg-node-ind{width:14px;height:11px;border-radius:3px;background:#eef1f4;border:1.5px solid #6b7785;display:inline-block}
.rg-node-ctry{width:14px;height:11px;border-radius:3px;background:#f4ecdf;border:1.5px solid #9c7b4a;display:inline-block}

/* relationship-graph: temporal status tags */
.rg-status{font-size:10.5px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:1px 6px;border-radius:5px;vertical-align:middle}
.rg-former{background:color-mix(in oklch,#9c7b4a 22%,transparent);color:#7a5e35}
.rg-announced{background:color-mix(in oklch,#2a6fdb 18%,transparent);color:#1f5bbf}

/* relationship-graph: year slider */
.rg-year-group{gap:10px}
.rg-year{width:160px;accent-color:var(--accent);cursor:pointer}
.rg-year-val{font-size:12px;font-weight:600;color:var(--ink-2);min-width:54px;font-variant-numeric:tabular-nums}

/* ---------- Operating Metrics tab ---------- */
/* Drop the hero's bottom rule on this view: the first group's kicker line sat
   right under it, reading as two squished horizontal lines. The per-group kicker
   lines are the single divider now. */
#view-operating .hero{border-bottom:none;padding-bottom:6px}
.op-coverage{font-size:13px;color:var(--ink-2);font-weight:500}
.op-coverage .op-cov-n{font-size:18px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.op-group{margin-bottom:var(--secgap)}
.op-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(208px,1fr));gap:14px}
.op-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:15px 16px 12px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:6px}
.op-card-h{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.op-label{font-family:"Hanken Grotesk";font-size:12.5px;font-weight:600;color:var(--ink-2);line-height:1.25}
.op-fy{font-size:10.5px;letter-spacing:.06em;color:var(--ink-3);font-variant-numeric:tabular-nums;white-space:nowrap}
.op-val{font-family:"Spectral";font-size:25px;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.05}
.op-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:auto;min-height:34px}
.op-spark{display:block}
.op-spark-line{stroke:var(--accent);stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.op-spark-dot{fill:var(--accent)}
.op-src{font-size:11px;font-weight:600;color:var(--ink-3);text-decoration:none;white-space:nowrap;opacity:.75}
.op-src:hover{color:var(--accent);opacity:1;text-decoration:underline}

/* Operating Metrics — over-time expand + customise layout */
.op-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:12px;margin-bottom:14px}
.op-edit-hint{font-size:12px;color:var(--ink-3);margin-right:auto}
.op-btn{font:600 12.5px/1 "Hanken Grotesk",system-ui,sans-serif;color:var(--ink-2);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:7px 12px;cursor:pointer}
.op-btn:hover{border-color:var(--border-2);color:var(--ink)}
.op-btn-go{background:var(--accent);border-color:var(--accent);color:#fff}
.op-card{position:relative;cursor:pointer;transition:border-color .12s,box-shadow .12s}
.op-card:hover{border-color:var(--border-2)}
.op-card.expanded{box-shadow:0 2px 4px rgba(30,26,18,.06),0 18px 50px -28px rgba(30,26,18,.4)}
.op-detail{max-height:0;overflow:hidden;transition:max-height .22s ease}
.op-card.expanded .op-detail{max-height:200px;margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}
.op-chart{display:block;width:100%;height:auto}
.op-chart-empty{font-size:12.5px;color:var(--ink-3);padding:6px 0}
.op-chart-v{fill:var(--ink-2);font:600 9px "Spline Sans Mono",monospace;text-anchor:middle}
.op-chart-x{fill:var(--ink-3);font:500 9px "Spline Sans Mono",monospace;text-anchor:middle}
/* edit mode */
#opMetricsMount.op-editing .op-card{cursor:grab}
#opMetricsMount.op-editing .op-card.dragging{opacity:.5;cursor:grabbing}
.op-drag{position:absolute;top:8px;left:10px;color:var(--ink-3);font-size:12px;letter-spacing:-2px;cursor:grab;user-select:none}
/* hide/show toggle — reuses the app's muted glyph language (× to dismiss, + to
   restore), not an emoji; colour scheme matches the other icon buttons. */
.op-hide{position:absolute;top:5px;right:6px;width:20px;height:20px;display:grid;place-items:center;
  background:none;border:none;border-radius:6px;cursor:pointer;color:var(--ink-3);
  font:400 16px/1 "Hanken Grotesk",system-ui,sans-serif}
.op-hide.is-hidden{font-size:17px}
.op-hide:hover{color:var(--accent);background:var(--surface-2)}
.op-card.op-hidden{opacity:.42}
#opMetricsMount.op-editing .op-card .op-card-h{padding-left:14px}
/* YoY change badge — inline to the right of the figure, coloured by good/bad
   SENTIMENT (per-metric polarity), not raw direction. Ambiguous -> neutral. */
.op-headline{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.op-chg{font:600 12px/1 "Spline Sans Mono",monospace;letter-spacing:.01em;white-space:nowrap;flex:none}
.op-chg-good{color:var(--pos)}
.op-chg-bad{color:var(--neg)}
.op-chg-neutral{color:var(--ink-3)}

/* ---------- Financials tab: Notes & schedules accordion ---------- */
.fn-acc{display:flex;flex-direction:column;gap:10px}
.fn-cat{border:1px solid var(--border);border-radius:12px;background:var(--surface);overflow:hidden}
.fn-cat-h{width:100%;display:flex;align-items:center;gap:10px;padding:13px 16px;background:none;border:none;
  cursor:pointer;font:600 14px/1 "Hanken Grotesk",system-ui,sans-serif;color:var(--ink);text-align:left}
.fn-cat-h:hover{background:var(--surface-2)}
.fn-chev{display:inline-block;color:var(--ink-3);transition:transform .15s;font-size:16px}
.fn-cat.open .fn-chev{transform:rotate(90deg)}
.fn-cat-t{flex:1}
.fn-cat-n{color:var(--ink-3);font-weight:500;font-size:12px}
.fn-cat-body{display:none;padding:4px 16px 18px;border-top:1px solid var(--border)}
.fn-cat.open .fn-cat-body{display:block}
.fn-note{margin-top:16px}
.fn-note-h{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:6px}
.fn-note-t{font-family:"Hanken Grotesk";font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);font-weight:600}
.fn-src{font-size:11px}
.fn-tbl{width:100%;border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums}
.fn-tbl th{font:600 11px/1.2 "Hanken Grotesk";color:var(--ink-3);text-align:right;padding:5px 8px;border-bottom:1px solid var(--border)}
.fn-tbl th.fn-lab-h{text-align:left}
.fn-unit{font-weight:500;text-transform:none;letter-spacing:0;color:var(--ink-3)}
.fn-tbl td{padding:5px 8px;text-align:right;color:var(--ink);border-bottom:1px solid var(--border)}
.fn-tbl tr:last-child td{border-bottom:none}
.fn-tbl td.fn-lab{text-align:left;color:var(--ink-2);max-width:340px}
.fn-debt td,.fn-debt th{text-align:left}
.fn-debt td:nth-child(n+2),.fn-debt th:nth-child(n+2){text-align:right}

/* inline note expander injected under an as-reported statement line */
.fn-anchor-row > td{padding:0 !important;border:none !important;background:var(--surface-2)}
.fn-anchor{width:100%;display:flex;align-items:center;gap:8px;text-align:left;background:none;border:none;
  cursor:pointer;padding:7px 10px 7px 14px;font:600 12px/1 "Hanken Grotesk",system-ui,sans-serif;color:var(--accent)}
.fn-anchor:hover{background:var(--hl)}
.fn-anchor .fn-chev{display:inline-block;transition:transform .15s;font-size:15px}
.fn-anchor.open .fn-chev{transform:rotate(90deg)}
.fn-anchor .fn-cat-n{margin-left:auto;color:var(--ink-3);font-weight:500;font-size:11px}
.fn-panel-row > td{padding:0 !important;border:none !important;background:var(--surface-2)}
.fn-panel{padding:4px 16px 14px;border-bottom:1px solid var(--border)}

/* Notes & schedules: light line trigger + floating popover (table stays untouched) */
.fn-tag{margin-left:8px;font:600 10px/1 "Hanken Grotesk",system-ui,sans-serif;letter-spacing:.04em;
  text-transform:uppercase;color:var(--accent);background:none;border:none;border-bottom:1px dotted var(--accent);
  cursor:pointer;padding:0 0 1px;vertical-align:middle;opacity:.7;white-space:nowrap}
.fn-tag:hover{opacity:1}
.fn-pop{position:fixed;z-index:80;background:var(--surface);border:1px solid var(--border-2);border-radius:12px;
  box-shadow:var(--shadow);overflow:auto}
.fn-pop-h{position:sticky;top:0;background:var(--surface);display:flex;align-items:center;justify-content:space-between;
  gap:10px;padding:12px 14px;border-bottom:1px solid var(--border);z-index:1}
.fn-pop-t{font:600 13px/1.2 "Hanken Grotesk",system-ui,sans-serif;color:var(--ink)}
.fn-pop-x{background:none;border:none;cursor:pointer;color:var(--ink-3);font-size:14px;line-height:1;padding:2px 4px}
.fn-pop-x:hover{color:var(--ink)}
.fn-pop-body{padding:4px 14px 14px}
.fn-pop-ct{font:600 12px/1 "Hanken Grotesk";letter-spacing:.06em;text-transform:uppercase;color:var(--ink-2);margin:14px 0 2px}
.fn-more-btn{margin-top:18px;font:600 12.5px/1 "Hanken Grotesk",system-ui,sans-serif;color:var(--accent);
  background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:9px 14px;cursor:pointer}
.fn-more-btn:hover{border-color:var(--border-2)}

/* ---- cited filing passages under an analyst answer ---------------------------------- */
/* Deliberately quieter than the answer itself: this is corroboration the reader can drop
   into, not a second thing competing to be read. Each card is a link to the full extract. */
.an-evidence{ margin-top:12px; border-top:1px solid var(--line); padding-top:10px; }
.an-ev-h{ font-size:11px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--ink-3); margin-bottom:8px; }
.an-ev{ display:block; text-decoration:none; color:inherit; border:1px solid var(--line);
  border-radius:8px; padding:9px 11px; margin-bottom:7px; transition:border-color .12s, background .12s; }
.an-ev:hover{ border-color:var(--accent); background:var(--accent-soft, rgba(43,108,176,.06)); }
.an-ev-co{ font-size:12.5px; font-weight:600; margin-bottom:3px; }
.an-ev-cc{ font-weight:400; color:var(--ink-3); font-size:11px; }
/* The passage is a quotation — set it apart from our own prose so there is never any
   ambiguity about which words came from the filing. */
.an-ev-q{ font-size:12.5px; line-height:1.5; color:var(--ink-2); }
.an-ev-q mark{ background:var(--accent-soft, rgba(43,108,176,.18)); color:inherit;
  padding:0 1px; border-radius:2px; }
.an-ev-src{ font-size:11px; color:var(--ink-3); margin-top:4px; }

/* Venue code beside its human name in the Listings table. */
.listing-code{font-size:10.5px;color:var(--ink-3);border:1px solid var(--border);border-radius:5px;padding:1px 5px;margin-left:6px;vertical-align:middle}
