:root {
  --bg:#eef1f4; --surface:#ffffff; --surface-2:#f5f7f9; --hairline:#dde2e8;
  --ink:#111823; --ink-muted:#586377; --ink-faint:#8a93a3;
  --accent:#0d7d87; --accent-ink:#0a5960; --accent-soft:#e0f0f1;
  --good:#2f7d5b; --good-soft:#e2f0e9;
  --warn:#a9741a; --warn-soft:#f6ecd8;
  --bad:#bf4238; --bad-soft:#f7e2df;
  --shadow:0 1px 2px rgba(17,24,35,.06), 0 8px 24px rgba(17,24,35,.05);
  --radius:12px;
  --top-h:52px; --strip-h:34px;            /* sticky chrome heights (topbar + market strip) */
  --sticky:calc(var(--top-h) + var(--strip-h));
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg:#0c1017; --surface:#131926; --surface-2:#1a2130; --hairline:#26303f;
    --ink:#e7ebf1; --ink-muted:#9aa5b6; --ink-faint:#66717f;
    --accent:#3fb9c2; --accent-ink:#8fdbe0; --accent-soft:#123037;
    --good:#5cc48d; --good-soft:#14291f;
    --warn:#d9a441; --warn-soft:#2b2312;
    --bad:#e2695f; --bad-soft:#2c1715;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 30px rgba(0,0,0,.35);
  }
}
:root[data-theme="dark"] {
  --bg:#0c1017; --surface:#131926; --surface-2:#1a2130; --hairline:#26303f;
  --ink:#e7ebf1; --ink-muted:#9aa5b6; --ink-faint:#66717f;
  --accent:#3fb9c2; --accent-ink:#8fdbe0; --accent-soft:#123037;
  --good:#5cc48d; --good-soft:#14291f;
  --warn:#d9a441; --warn-soft:#2b2312;
  --bad:#e2695f; --bad-soft:#2c1715;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 30px rgba(0,0,0,.35);
}

* { box-sizing:border-box; }
html, body { margin:0; }
body {
  background:var(--bg); color:var(--ink);
  font-family:"Archivo", system-ui, sans-serif; line-height:1.5;
}
a { color:var(--accent-ink); }
h1 { font-size:24px; letter-spacing:-.02em; margin:0; }
h2 { font-size:18px; letter-spacing:-.02em; margin:0; }
.mono { font-family:"IBM Plex Mono", monospace; font-variant-numeric:tabular-nums; }
.muted { color:var(--ink-muted); font-size:13px; }
.eyebrow { font-size:11px; font-weight:700; letter-spacing:.13em; text-transform:uppercase; color:var(--ink-faint); }
.sr-only { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }
:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
@media (prefers-reduced-motion: reduce) { * { transition:none !important; } }

/* ---------- top bar ---------- */
.topbar {
  position:sticky; top:0; z-index:30; height:var(--top-h);
  display:flex; align-items:center; gap:18px;
  padding:0 22px; background:var(--surface); border-bottom:1px solid var(--hairline);
}
.brand { font-weight:800; font-size:19px; letter-spacing:-.02em; text-decoration:none; color:var(--ink); flex:0 0 auto; }
.brand span { color:var(--accent); }
.topnav { margin-left:auto; display:flex; align-items:center; gap:2px; font-size:14px; min-width:0; }
.topnav a { text-decoration:none; color:var(--ink-muted); font-weight:600; padding:6px 10px; border-radius:8px; white-space:nowrap; }
.topnav a:hover { color:var(--accent-ink); background:var(--surface-2); }
.topnav a.on { color:var(--accent-ink); background:var(--accent-soft); }
.topnav .sep { width:1px; height:18px; background:var(--hairline); margin:0 6px; }
.topnav .who { color:var(--ink-faint); font-size:13px; padding:0 4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:160px; }
.tb-actions { display:flex; align-items:center; gap:8px; margin-left:auto; padding-left:14px; }
.topnav .tb-actions { margin-left:8px; border-left:1px solid var(--hairline); }
/* the header's controls (theme, log out, menu) share one small-button style */
.tb-btn { font:inherit; font-size:13px; font-weight:600; line-height:1.2; cursor:pointer; text-decoration:none;
  display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:32px; padding:0 11px;
  border:1px solid var(--hairline); border-radius:8px; background:var(--surface); color:var(--ink-muted); }
.tb-btn:hover { border-color:var(--accent); color:var(--accent-ink); }
.theme-btn { font-size:15px; padding:0 9px; }
.nav-toggle { display:none; margin-left:auto; font-size:16px; padding:0 10px; }
.wl-toggle { display:none; }
.wl-toggle[aria-expanded="true"] { border-color:var(--accent); color:var(--accent-ink); background:var(--accent-soft); }
.side-head, .scrim { display:none; }

.wrap { max-width:1080px; margin:0 auto; padding:24px 22px 56px; }
.foot { max-width:1080px; margin:0 auto; padding:20px 22px 40px; color:var(--ink-faint); font-size:12px; }

/* ---------- buttons & forms ---------- */
.btn {
  font:inherit; font-size:14px; font-weight:600; cursor:pointer; text-decoration:none;
  border:1px solid var(--hairline); background:var(--surface); color:var(--ink);
  padding:9px 15px; border-radius:9px; display:inline-block; line-height:1.3;
}
.btn:hover { border-color:var(--accent); color:var(--accent-ink); }
.btn.accent { background:var(--accent); border-color:var(--accent); color:#fff; }
.btn.accent:hover { filter:brightness(1.07); color:#fff; }
.btn.ghost { background:transparent; }
.btn.sm { font-size:13px; padding:7px 13px; }
/* busy state while a slow POST (AI call, remote symbol check) is in flight — see render_foot() */
.btn[aria-busy="true"] { pointer-events:none; opacity:.8; }
.spin { display:inline-block; width:11px; height:11px; border:2px solid currentColor; border-right-color:transparent; border-radius:50%;
  vertical-align:-1px; margin-right:6px; animation:zspin .7s linear infinite; }
.spin:only-child { margin-right:0; }
@keyframes zspin { to { transform:rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .spin { animation:none; border-right-color:currentColor; opacity:.5; } }
.link-btn { border:0; background:none; color:var(--ink-faint); font:inherit; font-size:12px; cursor:pointer; padding:0; text-decoration:underline; }
.link-btn:hover { color:var(--bad); }

label { display:block; font-size:13px; font-weight:600; color:var(--ink-muted); }
input, select, textarea { font:inherit; width:100%; margin-top:5px; padding:9px 11px;
  border:1px solid var(--hairline); border-radius:9px; background:var(--surface); color:var(--ink); }
textarea { resize:vertical; min-height:56px; line-height:1.45; }
.thesis-intro { display:flex; align-items:flex-start; justify-content:space-between; gap:14px; margin:0 0 10px; }
.thesis-intro .btn { flex-shrink:0; white-space:nowrap; }
.draft-note { font-size:12px; color:var(--accent-ink); background:var(--accent-soft); border-radius:8px; padding:7px 10px; margin:0 0 10px; }
.thesis-form { display:flex; flex-direction:column; gap:10px; }
.thesis-row { display:grid; grid-template-columns:1fr 2fr; gap:14px; align-items:start; }
.thesis-form .btn { align-self:flex-start; }
@media (max-width:640px){ .thesis-row { grid-template-columns:1fr; } }
.stack { display:flex; flex-direction:column; gap:14px; margin-top:8px; }
.stack-h { display:flex; flex-wrap:wrap; gap:14px; align-items:flex-end; }
.stack-h label { flex:1; min-width:150px; }
.stack-h .btn { flex:0 0 auto; }

/* ---------- messages ---------- */
.flash { background:var(--accent-soft); color:var(--accent-ink); border:1px solid color-mix(in srgb,var(--accent) 30%,transparent);
  padding:10px 14px; border-radius:9px; margin-bottom:18px; font-size:14px; }
.err { background:var(--bad-soft); color:var(--bad); border:1px solid color-mix(in srgb,var(--bad) 30%,transparent);
  padding:10px 14px; border-radius:9px; font-size:14px; margin-bottom:6px; }
.notice { background:var(--warn-soft); color:var(--warn); border:1px solid color-mix(in srgb,var(--warn) 26%,transparent);
  padding:11px 14px; border-radius:9px; font-size:13px; margin:16px 0; }
.notice a { color:var(--warn); }

/* ---------- auth ---------- */
.auth-card { max-width:380px; margin:6vh auto 0; background:var(--surface); border:1px solid var(--hairline);
  border-radius:var(--radius); box-shadow:var(--shadow); padding:28px 26px; }
.auth-card h1 { margin-bottom:4px; }

/* ---------- shared page bits ---------- */
.page-head { display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; margin-bottom:14px; }
.badge-phase { font-size:11px; font-weight:600; color:var(--ink-faint); background:var(--surface-2);
  border:1px solid var(--hairline); padding:3px 9px; border-radius:999px; }
.addbar { display:flex; gap:10px; margin-bottom:18px; }
.addbar select { max-width:520px; }
.empty { background:var(--surface); border:1px dashed var(--hairline); border-radius:var(--radius);
  padding:34px; text-align:center; color:var(--ink-muted); }
.card { background:var(--surface); border:1px solid var(--hairline); border-radius:var(--radius); box-shadow:var(--shadow); padding:14px 16px; }
.panel { background:var(--surface); border:1px solid var(--hairline); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:16px; margin-top:6px; }
.stamp { font-size:11px; color:var(--ink-faint); font-weight:400; letter-spacing:0; text-transform:none; }
.chip { font-size:11px; font-weight:600; padding:2px 9px; border-radius:999px; color:var(--ink-muted); background:var(--surface-2); white-space:nowrap; }
.chip.good{ color:var(--good); background:var(--good-soft); }
.chip.warn{ color:var(--warn); background:var(--warn-soft); }
.chip.bad { color:var(--bad);  background:var(--bad-soft); }
.up { color:var(--good); } .down { color:var(--bad); }
.mini-h { font-size:11px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-faint); margin:12px 0 4px; }
ul.tight { margin:4px 0 0; padding-left:18px; }
ul.tight li { font-size:13px; color:var(--ink-muted); margin:3px 0; }
.lead { font-size:13.5px; color:var(--ink-muted); margin:0 0 8px; max-width:78ch; }
.disclaimer { margin-top:12px; font-size:11.5px; color:var(--ink-faint); font-style:italic; }
.scroll-x { overflow-x:auto; }
.cards { display:grid; grid-template-columns:repeat(auto-fill, minmax(240px,1fr)); gap:14px; }
.ticker-card { background:var(--surface); border:1px solid var(--hairline); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:14px 15px; display:flex; flex-direction:column; gap:8px; }
.ticker-card:hover { border-color:var(--accent); }
.tc-head { text-decoration:none; color:inherit; display:block; }
.tc-top { display:flex; align-items:center; justify-content:space-between; }
.tc-sym { font-family:"IBM Plex Mono",monospace; font-weight:600; font-size:18px; }
.tc-kind { font-size:11px; color:var(--ink-faint); background:var(--surface-2); border:1px solid var(--hairline);
  padding:2px 8px; border-radius:999px; }
.tc-name { font-size:13px; color:var(--ink-muted); margin-top:4px; }
.tc-foot { display:flex; align-items:center; justify-content:space-between; border-top:1px solid var(--hairline); padding-top:8px; }

/* ---------- data table ---------- */
table.data { width:100%; border-collapse:collapse; margin-top:16px; font-size:14px;
  background:var(--surface); border:1px solid var(--hairline); border-radius:var(--radius); overflow:hidden; }
table.data th { text-align:left; font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:var(--ink-faint);
  padding:10px 14px; border-bottom:1px solid var(--hairline); }
table.data td { padding:11px 14px; border-bottom:1px solid var(--hairline); }
table.data tr:last-child td { border-bottom:0; }
table.data th[data-sort] { cursor:pointer; user-select:none; white-space:nowrap; }
table.data th[data-sort]:hover { color:var(--accent-ink); }
table.data th[data-sort].asc::after { content:" ▲"; font-size:9px; }
table.data th[data-sort].desc::after { content:" ▼"; font-size:9px; }
.tr-h { font-size:15px; margin:24px 0 6px; letter-spacing:-.01em; }
.dlog-why { font-size:12.5px; color:var(--ink-muted); max-width:46ch; }
.hstat { font-family:"IBM Plex Mono",monospace; font-size:26px; font-weight:600; margin:6px 0 2px; }

/* tooltips + learn page */
.term { border-bottom:1px dotted var(--ink-faint); cursor:help; }
.learn-sec { margin-bottom:8px; max-width:900px; }
.learn-list { margin:8px 0 0; padding-left:20px; }
.learn-list li { margin:8px 0; font-size:14px; }
.card-title { font-weight:700; font-size:14px; letter-spacing:-.01em; }
dl.glossary { display:grid; grid-template-columns:180px 1fr; gap:6px 18px; margin:8px 0 0; }
dl.glossary dt { font-weight:600; font-size:13px; }
dl.glossary dd { margin:0; font-size:13px; color:var(--ink-muted); }
@media (max-width:640px){ dl.glossary { grid-template-columns:1fr; } dl.glossary dd { margin-bottom:8px; } }

/* ---------- master-detail shell ---------- */
.shell { display:grid; grid-template-columns:250px minmax(0,1fr); align-items:start; max-width:1280px; margin:0 auto; }
.shell.three { grid-template-columns:250px minmax(0,1fr) 324px; max-width:1440px; }

.sidebar {
  position:sticky; top:var(--sticky); height:calc(100vh - var(--sticky)); overflow-y:auto;
  background:var(--surface); border-right:1px solid var(--hairline);
  padding:14px 12px 24px;
}
.side-add { display:flex; gap:6px; margin-bottom:10px; }
.side-add input { margin-top:0; }
.side-add .btn { padding:9px 13px; flex:0 0 auto; font-size:16px; line-height:1; }
.side-search { margin:0 0 10px; padding:7px 10px; }
.side-list { display:flex; flex-direction:column; gap:0; }
.side-row { display:flex; align-items:center; gap:7px; padding:3px 8px; border-radius:6px;
  text-decoration:none; color:var(--ink); }
.side-row:hover { background:var(--surface-2); }
.side-row.active { background:var(--accent-soft); }
.side-row.active .sr-sym { color:var(--accent-ink); }
.sr-sym { font-family:"IBM Plex Mono",monospace; font-weight:600; font-size:12.5px; flex:0 0 auto; min-width:42px; }
.sr-name { font-size:11px; color:var(--ink-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sr-dot { flex:0 0 auto; width:6px; height:6px; border-radius:50%; background:var(--hairline); }
.sr-dot.good { background:var(--good); } .sr-dot.warn { background:var(--warn); } .sr-dot.bad { background:var(--bad); }
.sr-quote { margin-left:auto; display:flex; align-items:baseline; gap:6px; font-family:"IBM Plex Mono",monospace; }
.sr-px { font-size:12px; }
.sr-px.sr-none { color:var(--ink-faint); }
.sr-chg { font-size:10.5px; min-width:44px; text-align:right; }
.sr-chg.up { color:var(--good); } .sr-chg.down { color:var(--bad); }
.side-count { font-size:10.5px; color:var(--ink-faint); margin:10px 0 0; padding:0 8px; }
.side-empty { font-size:12px; color:var(--ink-muted); padding:8px; }

.detail { min-width:0; padding:18px 24px 48px; }

.overview { background:var(--surface); border:1px solid var(--hairline); border-radius:var(--radius);
  box-shadow:var(--shadow); padding:26px 24px; }
.lead-serif { font-family:"Newsreader",Georgia,serif; font-size:19px; margin:0 0 8px; letter-spacing:-.01em; }

/* ---------- global market strip (under top bar) ---------- */
.market-strip { position:sticky; top:var(--top-h); z-index:20; height:var(--strip-h); display:flex; align-items:center; gap:14px;
  background:var(--surface-2); border-bottom:1px solid var(--hairline); padding:0 22px; font-size:12px; overflow:hidden; white-space:nowrap; }
.market-strip .ms-muted { color:var(--ink-faint); }
.market-strip .m-item { display:flex; align-items:baseline; gap:6px; }
.market-strip .m-item .k { color:var(--ink-faint); text-transform:uppercase; font-size:10px; letter-spacing:.06em; font-weight:700; }
.market-strip .m-item .v { font-family:"IBM Plex Mono",monospace; }
.market-strip .m-item.themes { min-width:0; overflow:hidden; }
.market-strip .m-item.themes .v { overflow:hidden; text-overflow:ellipsis; }

/* ---------- ticker header ---------- */
.ticker-header { display:flex; align-items:flex-start; justify-content:space-between; gap:12px; flex-wrap:wrap;
  border-bottom:1px solid var(--hairline); padding-bottom:12px; }
.ticker-header .th-id { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.th-sym { font-family:"IBM Plex Mono",monospace; font-weight:600; font-size:26px; }
.th-name { color:var(--ink-muted); }
.th-kind { font-size:12px; color:var(--ink-faint); }
.th-right { display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.th-price { text-align:right; line-height:1.2; }
.th-px { font-family:"IBM Plex Mono",monospace; font-weight:600; font-size:22px; display:block; }
.th-px.up { color:var(--good); } .th-px.down { color:var(--bad); }
.th-chg { font-family:"IBM Plex Mono",monospace; font-size:12.5px; }
.th-chg.up { color:var(--good); } .th-chg.down { color:var(--bad); }
.th-asof { font-size:11px; color:var(--ink-faint); display:block; margin-top:2px; }
.th-actions { display:flex; gap:8px; align-items:center; }
.th-actions form { display:inline; }
.jumps { display:flex; gap:6px; flex-wrap:wrap; margin:10px 0 0; font-size:12px; align-items:center; }
.jumps a { text-decoration:none; color:var(--ink-muted); border:1px solid var(--hairline); border-radius:999px; padding:2px 10px; font-weight:600; background:var(--surface); }
.jumps a:hover { border-color:var(--accent); color:var(--accent-ink); }
.macro-flag { margin:10px 0 0; font-size:12.5px; color:var(--ink-muted); background:var(--surface); border:1px solid var(--hairline);
  border-left:3px solid var(--accent); border-radius:8px; padding:7px 11px; }
.macro-flag b { color:var(--accent-ink); font-weight:700; }

/* ---------- verdict (the headline block) ---------- */
.verdict { background:var(--surface); border:1px solid var(--hairline); border-radius:var(--radius); box-shadow:var(--shadow);
  padding:16px; margin-top:12px; scroll-margin-top:calc(var(--sticky) + 10px); }
.v-top { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }
.pill { display:inline-flex; align-items:center; font-size:13px; font-weight:600; padding:5px 12px; border-radius:999px; border:1px solid transparent; }
.pill.good { color:var(--good); background:var(--good-soft); border-color:color-mix(in srgb,var(--good) 26%,transparent); }
.pill.warn { color:var(--warn); background:var(--warn-soft); border-color:color-mix(in srgb,var(--warn) 26%,transparent); }
.pill.bad  { color:var(--bad);  background:var(--bad-soft);  border-color:color-mix(in srgb,var(--bad) 26%,transparent); }
.qmini { display:inline-flex; align-items:center; gap:8px; font-size:12px; color:var(--ink-muted); cursor:help; }
.mm { display:grid; grid-template-columns:1fr 1fr; gap:2px; width:24px; height:24px; }
.mm i { background:var(--hairline); border-radius:2px; }
.mm i.on.good { background:var(--good); } .mm i.on.warn { background:var(--warn); } .mm i.on.bad { background:var(--bad); }
.conf { font-size:12px; color:var(--ink-muted); display:flex; align-items:center; gap:8px; margin-left:auto; }
.conf-track { display:inline-block; width:90px; height:6px; border-radius:3px; background:var(--surface-2); overflow:hidden; }
.conf-track i { display:block; height:100%; background:var(--accent); }
/* the lens selector (dashboard): an investing-style view that adds the sortable Fit column */
.lens { display:inline-flex; align-items:center; gap:4px; flex-wrap:wrap; font-size:11.5px; }
.lens-lbl { color:var(--ink-faint); text-transform:uppercase; letter-spacing:.06em; font-weight:700; font-size:10px; margin-right:2px; }
.lens-lbl .term { border-bottom-color:var(--ink-faint); }
.lens-opt { text-decoration:none; color:var(--ink-muted); border:1px solid var(--hairline); border-radius:999px; padding:1px 9px; font-weight:600; background:var(--surface); }
.lens-opt:hover { border-color:var(--accent); color:var(--accent-ink); }
.lens-opt.on { background:var(--accent); border-color:var(--accent); color:#fff; }
.fit { display:inline-flex; align-items:center; gap:8px; }
.fit-track { display:inline-block; width:56px; height:6px; border-radius:3px; background:color-mix(in srgb,var(--ink-faint) 18%,transparent); overflow:hidden; }
.fit-track i { display:block; height:100%; border-radius:3px; }
.fit.good i { background:var(--good); } .fit.warn i { background:var(--warn); } .fit.bad i { background:var(--bad); }
.fit b { font-family:"IBM Plex Mono",monospace; font-variant-numeric:tabular-nums; font-weight:600; min-width:2ch; text-align:right; }
.prior-note { font-size:12px; color:var(--ink-muted); margin:8px 0 0; }
.prior-note b { color:var(--ink); font-weight:600; }
.thesis { font-family:"Newsreader",Georgia,serif; font-size:18.5px; line-height:1.4; font-weight:500; letter-spacing:-.01em;
  margin:12px 0; max-width:72ch; text-wrap:pretty; }
.scorebars { display:grid; grid-template-columns:repeat(6,1fr); gap:12px; margin:12px 0 14px; }
@media (max-width:640px){ .scorebars{ grid-template-columns:1fr 1fr 1fr; } }
.lens-stamp { font-size:12px; color:var(--ink-muted); margin:10px 0 -4px; }
.lens-stamp b { color:var(--accent-ink); }
.lens-stamp strong { color:var(--ink); }
.sb-l { font-size:10.5px; font-weight:700; letter-spacing:.04em; text-transform:uppercase; color:var(--ink-muted); display:flex; justify-content:space-between; }
.sb-v { font-family:"IBM Plex Mono",monospace; color:var(--ink); }
.sb-track { height:6px; border-radius:4px; background:color-mix(in srgb,var(--ink-faint) 18%,transparent); margin-top:5px; overflow:hidden; }
.sb-track i { display:block; height:100%; border-radius:4px; background:var(--ink-faint); }
.sb-track i.good { background:var(--good); } .sb-track i.warn { background:var(--warn); } .sb-track i.bad { background:var(--bad); }
.sb-hi .sb-l, .sb-hi .sb-v { color:var(--accent-ink); font-weight:700; }
.bullbear { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:640px){ .bullbear{ grid-template-columns:1fr; } }
.bb { border-top:2px solid var(--hairline); padding-top:8px; }
.bb.good { border-top-color:var(--good); } .bb.bad { border-top-color:var(--bad); }
.bb-h { font-size:11px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-faint); margin-bottom:4px; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.bb.good .bb-h, .bb-h.good { color:var(--good); } .bb.bad .bb-h, .bb-h.bad { color:var(--bad); }
.bb p { margin:0; font-size:13px; color:var(--ink-muted); }
.bb ul.tight { margin-top:0; }
.qs { margin-top:14px; }
.thesis-track { list-style:none; margin:4px 0 0; padding:0; }
.thesis-track li { padding:7px 0; border-top:1px solid var(--hairline); }
.thesis-track li:first-child { border-top:0; }
.tq-q { font-size:13px; display:flex; align-items:baseline; gap:10px; justify-content:space-between; }
.tq-e { font-size:12px; color:var(--ink-muted); margin-top:3px; }
.tq-when { color:var(--ink-faint); }
.qs ul { margin:4px 0 0; padding-left:18px; } .qs li { font-size:13px; color:var(--ink-muted); margin:3px 0; }
.verdict-foot { display:block; margin-top:12px; }

/* ---------- collapsible sections with summary rows ---------- */
details.sec { background:var(--surface); border:1px solid var(--hairline); border-radius:var(--radius); box-shadow:var(--shadow);
  margin-top:12px; scroll-margin-top:calc(var(--sticky) + 10px); }
details.sec > summary { list-style:none; display:flex; align-items:center; gap:10px; padding:11px 16px; cursor:pointer; }
details.sec > summary::-webkit-details-marker { display:none; }
.sec-t { font-weight:700; font-size:13px; white-space:nowrap; }
.sec-s { color:var(--ink-muted); font-size:12.5px; flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sec-s .mono { font-size:12px; }
.chev { color:var(--ink-faint); font-size:11px; transition:transform .15s; flex:0 0 auto; }
details[open] > summary .chev { transform:rotate(90deg); }
.sec-b { padding:0 16px 16px; }
.sec-b > :first-child { margin-top:0; }
.w-empty { color:var(--ink-faint); font-size:13px; font-style:italic; }
#pricechart { width:100%; height:300px; }
.chart-legend { display:flex; gap:14px; font-size:11.5px; color:var(--ink-muted); margin-top:6px; flex-wrap:wrap; }
.chart-legend i { display:inline-block; width:12px; height:2px; vertical-align:middle; margin-right:5px; }
.facts-strip { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:12px; }
.fs { background:var(--surface-2); border:1px solid var(--hairline); border-radius:9px; padding:7px 12px; min-width:120px; }
.fs .k { font-size:10.5px; color:var(--ink-muted); text-transform:uppercase; letter-spacing:.05em; font-weight:600; }
.fs .v { font-family:"IBM Plex Mono",monospace; font-size:15px; font-weight:600; margin-top:1px; }
.fs .v .s { font-size:11px; color:var(--ink-faint); font-weight:400; font-family:"Archivo",sans-serif; }
.chips { display:flex; gap:6px; flex-wrap:wrap; margin:6px 0 10px; }
.bd-cols { display:grid; grid-template-columns:1fr 1fr; gap:18px; }
@media (max-width:640px){ .bd-cols { grid-template-columns:1fr; } }

/* news (also used by news.php) */
.news-list { display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
@media (max-width:640px){ .news-list { grid-template-columns:1fr; } }
.news-item { padding:7px 0; border-bottom:1px solid var(--hairline); }
.news-item:last-child { border-bottom:0; }
.ni-h { display:block; font-size:13px; font-weight:500; line-height:1.35; color:var(--ink); text-decoration:none; }
.ni-h:hover { color:var(--accent-ink); }
.ni-m { font-size:11px; color:var(--ink-faint); margin-top:2px; font-family:"IBM Plex Mono",monospace; }
.news-item.sent-pos { border-left:3px solid var(--good); padding-left:9px; }
.news-item.sent-neg { border-left:3px solid var(--bad); padding-left:9px; }
.news-item.sent-neu { border-left:3px solid var(--hairline); padding-left:9px; }
.news-all { display:inline-block; margin-top:10px; font-size:12px; text-decoration:none; color:var(--accent-ink); }

/* driver map */
.drv-list { display:flex; flex-direction:column; }
.drv { display:grid; grid-template-columns:22px 1fr auto; gap:3px 10px; padding:9px 0; border-top:1px solid var(--hairline); font-size:13px; align-items:baseline; }
.drv:first-child { border-top:0; padding-top:2px; }
.drv .dir { font-size:14px; font-weight:700; }
.drv .dir.up { color:var(--good); } .drv .dir.down { color:var(--bad); } .drv .dir.mixed { color:var(--ink-faint); }
.drv .name { font-weight:600; }
.drv .sub { grid-column:2 / 4; color:var(--ink-muted); font-size:12.5px; }
.drv .ev { grid-column:2 / 4; color:var(--ink-faint); font-size:12px; }
.conf-tag { font-family:"IBM Plex Mono",monospace; font-size:10.5px; font-weight:600; padding:2px 7px; border-radius:6px; white-space:nowrap; }
.conf-tag.h { color:var(--good); background:var(--good-soft); }
.conf-tag.m { color:var(--warn); background:var(--warn-soft); }
.conf-tag.l { color:var(--ink-muted); background:var(--surface-2); }

/* peers table */
table.dtable { width:100%; border-collapse:collapse; font-size:13px; }
table.dtable th { text-align:left; font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-faint); font-weight:700; padding:0 12px 8px 0; white-space:nowrap; }
table.dtable td { padding:8px 12px 8px 0; border-top:1px solid var(--hairline); vertical-align:top; }
table.dtable .drv-sym { font-family:"IBM Plex Mono",monospace; font-weight:600; }
table.dtable .ev { color:var(--ink-faint); font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:180px; }
table.peers td:not(.drv-sym):not(.ev) { font-family:"IBM Plex Mono",monospace; font-variant-numeric:tabular-nums; }
table.peers tr.me td { background:var(--accent-soft); }
table.peers tr.me td.drv-sym { color:var(--accent-ink); }

/* citations */
.cite { margin-top:18px; font-size:12px; color:var(--ink-faint); max-width:82ch; line-height:1.6; }
.cite a { color:var(--accent-ink); text-decoration:none; border-bottom:1px solid color-mix(in srgb,var(--accent) 35%,transparent); }

/* ---------- the numbers rail: grouped cards that scroll with the page ---------- */
.rail { display:flex; flex-direction:column; gap:12px; padding:18px 24px 48px 0; font-size:12.5px; min-width:0; }
.rail.fits { position:sticky; top:calc(var(--sticky) + 12px); }   /* pinned only when the whole rail fits the viewport (JS) */
.rg { background:var(--surface); border:1px solid var(--hairline); border-radius:var(--radius); box-shadow:var(--shadow); padding:4px 14px 12px; }
.rs { padding:11px 0; border-top:1px solid var(--hairline); }
.rs:first-child { border-top:0; }
.rs-h { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:5px; }
.kv { display:flex; align-items:baseline; justify-content:space-between; gap:10px; padding:3px 0; }
.kv .k { color:var(--ink-muted); }
.kv .v { font-family:"IBM Plex Mono",monospace; font-variant-numeric:tabular-nums; font-weight:500; text-align:right; }
.kv .v .chip { margin-left:6px; }
.timing-label { font-size:15px; font-weight:700; margin:2px 0 6px; }
.timing-label.good { color:var(--good); } .timing-label.warn { color:var(--warn); } .timing-label.bad { color:var(--bad); }
.range { position:relative; height:4px; background:var(--hairline); border-radius:2px; margin:9px 6px 3px; }
.range b { position:absolute; top:-4px; width:12px; height:12px; border-radius:50%; background:var(--accent); border:2px solid var(--surface);
  transform:translateX(-50%); box-shadow:0 0 0 1px var(--accent); }
.range-l { display:flex; justify-content:space-between; font-family:"IBM Plex Mono",monospace; font-size:11px; color:var(--ink-faint); }
.range-l span:nth-child(2) { color:var(--ink); font-weight:600; }
.rs .btn.full { width:100%; text-align:center; margin-top:8px; }
.rs p { margin:4px 0; }
.rs .note { font-size:11.5px; color:var(--ink-faint); font-style:italic; margin-top:6px; }
.rs .holdings { margin:4px 0 0; padding-left:16px; font-size:12.5px; color:var(--ink-muted); }
.rs .holdings li { margin:2px 0; }
.bzrow { display:grid; grid-template-columns:1fr 1fr; gap:6px; margin-top:4px; }
.bz { background:var(--surface-2); border:1px solid var(--hairline); border-radius:8px; padding:6px 9px; }
.bz .k { font-size:10px; color:var(--ink-muted); text-transform:uppercase; letter-spacing:.05em; font-weight:600; }
.bz .v { font-family:"IBM Plex Mono",monospace; font-size:14px; font-weight:600; }
.bz .v .s { font-size:10.5px; color:var(--ink-faint); font-weight:400; font-family:"Archivo",sans-serif; }
.pos-top { display:flex; align-items:baseline; justify-content:space-between; gap:10px; margin:2px 0 6px; }
.pos-pl { font-family:"IBM Plex Mono",monospace; font-size:22px; font-weight:600; }
.pos-form { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:6px; }
.pos-form label { font-size:12px; }
.pos-form input { padding:7px 9px; margin-top:3px; }
.pos-form button { grid-column:1 / -1; }
.act-result { margin-top:10px; padding:10px 11px; border:1px solid var(--hairline); border-radius:9px; background:var(--surface-2); }
.act-result .lead { font-size:13px; max-width:none; }
/* disclosure that looks like the control it is: a dashed "add" button with a chevron */
details.rs-more > summary { list-style:none; cursor:pointer; display:flex; align-items:center; gap:6px; margin-top:8px;
  font-size:12.5px; font-weight:600; color:var(--ink); background:var(--surface); border:1px dashed color-mix(in srgb,var(--ink-faint) 70%,transparent);
  border-radius:9px; padding:7px 12px; }
details.rs-more > summary::-webkit-details-marker { display:none; }
details.rs-more > summary::after { content:"▾"; margin-left:auto; color:var(--ink-faint); font-size:11px; }
details.rs-more > summary:hover { border-color:var(--accent); color:var(--accent-ink); }
details.rs-more[open] > summary { border-style:solid; border-color:var(--hairline); }
details.rs-more[open] > summary::after { content:"▴"; }

/* ---------- dashboard ---------- */
.macro .mhead { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.macro .mhl { font-family:"Newsreader",Georgia,serif; font-size:17px; font-weight:500; letter-spacing:-.01em; flex:1; min-width:240px; text-wrap:pretty; margin:0; }
.mtoggle { margin-left:auto; }
.tape { display:grid; grid-template-columns:repeat(4,1fr); gap:10px; margin:12px 0 10px; }
@media (max-width:820px){ .tape { grid-template-columns:1fr 1fr; } }
.tape .t { background:var(--surface-2); border:1px solid var(--hairline); border-radius:9px; padding:8px 12px; min-width:0; }
.tape .k { font-size:10.5px; color:var(--ink-muted); text-transform:uppercase; letter-spacing:.05em; font-weight:600; }
.tape .v { font-family:"IBM Plex Mono",monospace; font-size:16px; font-weight:600; display:flex; align-items:baseline; gap:8px; flex-wrap:wrap; }
.tape .s { font-size:11px; color:var(--ink-faint); font-weight:400; font-family:"Archivo",sans-serif; }
.mchips { display:flex; align-items:center; gap:6px; flex-wrap:wrap; font-size:12px; }
.mchips .next { color:var(--ink-faint); margin-left:auto; }
.mdetail { margin-top:12px; border-top:1px solid var(--hairline); padding-top:12px; }
.mdetail[hidden] { display:none; }
.mtheme { display:grid; grid-template-columns:auto 1fr; gap:4px 12px; padding:7px 0; border-top:1px solid var(--hairline); font-size:13px; align-items:baseline; }
.mtheme:first-of-type { border-top:0; }
.mtheme .why { color:var(--ink-muted); }
.mtheme .tags { grid-column:2; font-size:12px; color:var(--ink-faint); }
.mtheme .tags b { color:var(--accent-ink); font-family:"IBM Plex Mono",monospace; font-weight:600; }
.mcols { display:grid; grid-template-columns:1fr 1fr 1fr; gap:18px; margin-top:12px; }
@media (max-width:820px){ .mcols { grid-template-columns:1fr; } }
.mlist { margin:4px 0 0; padding-left:18px; } .mlist li { font-size:13px; color:var(--ink-muted); margin:4px 0; }
.mlist li b { color:var(--ink); font-weight:600; }
.exp { display:grid; grid-template-columns:auto 1fr; gap:4px 12px; margin-top:6px; font-size:12.5px; }
.exp b { font-family:"IBM Plex Mono",monospace; }
.exp a { text-decoration:none; }
.exp span { color:var(--ink-muted); }
.alerts { margin-top:12px; }
.ag { display:flex; align-items:baseline; gap:10px; padding:6px 0; border-top:1px solid var(--hairline); font-size:13px; flex-wrap:wrap; }
.ag:first-of-type { border-top:0; }
.ag-k { font-weight:600; min-width:210px; }
.ag-k.good { color:var(--good); } .ag-k.warn { color:var(--warn); }
.ag a { font-family:"IBM Plex Mono",monospace; font-weight:600; text-decoration:none; color:var(--ink); background:var(--surface-2); border:1px solid var(--hairline); border-radius:6px; padding:1px 8px; }
.ag a:hover { border-color:var(--accent); color:var(--accent-ink); }
.ag .vc { color:var(--ink-muted); }
.ag .vc a { padding:0 4px; margin-right:2px; }
.overview-table tr[onclick]:hover td { background:var(--surface-2); }
.tsym { display:flex; align-items:center; gap:8px; font-family:"IBM Plex Mono",monospace; font-weight:600; }
.tname { color:var(--ink-faint); font-size:12px; font-family:"Archivo",sans-serif; font-weight:400; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:170px; }
.sig { display:flex; align-items:center; justify-content:space-between; font-size:13px; padding:6px 0; border-bottom:1px dashed var(--hairline); }
.sig:last-child { border-bottom:0; }
.sig .k { color:var(--ink-muted); }
.sig .v { font-family:"IBM Plex Mono",monospace; font-weight:500; }

/* ---------- responsive ---------- */
@media (max-width:1180px) {
  .shell.three { grid-template-columns:250px minmax(0,1fr); }
  .rail, .rail.fits { grid-column:2; position:static; display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
    gap:12px; padding:0 24px 24px; align-items:start; }
}
@media (max-width:820px) {
  /* header: brand + ☰; the nav drops down as a panel under the bar */
  .topbar { gap:10px; padding:0 14px; }
  .nav-toggle { display:inline-flex; }
  .topnav { display:none; position:absolute; left:0; right:0; top:var(--top-h); flex-direction:column; align-items:stretch;
    gap:2px; margin:0; padding:8px 10px 12px; background:var(--surface); border-bottom:1px solid var(--hairline);
    box-shadow:var(--shadow); font-size:15px; }
  .topbar.open .topnav { display:flex; }
  .topnav a { padding:10px 12px; }
  .topnav .sep { width:auto; height:1px; margin:6px 4px; }
  .topnav .tb-actions { margin:8px 0 0; padding:12px 12px 0; border-left:0; border-top:1px solid var(--hairline); }
  .topnav .who { flex:1; max-width:none; padding:0; }
  /* market strip: scroll sideways instead of truncating */
  .market-strip { overflow-x:auto; overflow-y:hidden; padding:0 14px; scrollbar-width:none; }
  .market-strip::-webkit-scrollbar { display:none; }
  .market-strip > * { flex:0 0 auto; }
  .market-strip .m-item.themes .v { overflow:visible; text-overflow:clip; }

  .shell, .shell.three { grid-template-columns:1fr; }
  /* watchlist: a drawer that slides in from the left under the header, over a scrim */
  .wl-toggle { display:inline-flex; }
  .sidebar { position:fixed; top:var(--top-h); bottom:0; left:0; width:min(86vw, 340px); height:auto; z-index:36;
    transform:translateX(-102%); transition:transform .2s ease; box-shadow:var(--shadow); border-right:1px solid var(--hairline);
    padding:10px 12px 24px; }
  .shell.show-side .sidebar { transform:none; }
  .scrim { position:fixed; left:0; right:0; top:var(--top-h); bottom:0; z-index:35; background:rgba(12,16,23,.45); }
  .shell.show-side .scrim { display:block; }
  body.drawer-open { overflow:hidden; }
  .side-head { display:flex; align-items:center; justify-content:space-between; margin:0 0 8px; }
  .side-close { padding:0 9px; }
  .detail { padding:16px; width:100%; }
  .rail, .rail.fits { grid-column:1; padding:0 16px 24px; }
  .th-name { display:block; margin-left:0; }
}
