/* ── v2 token spine — PrintRate identity (locked 2026-05-21) ───────────────
   Accent: ice blue #7DBFCF (operator pick).
   Type: Public Sans + IBM Plex Mono + Newsreader italic.
   Palette: warm bone on warm near-black (dark) · cream on warm-dark (light).
   Spec: docs/design_refactor_2026_05_21/DESIGN.md
   ────────────────────────────────────────────────────────────────────── */
:root, [data-theme="dark"] {
  --bg:            #0E0E12;
  --surface:       #16171C;
  --surface-raised:#1E1F26;
  --rule:          #26272F;
  --rule-bold:     #3D3E48;
  --type:          #E8E5D8;
  --type-mute:     #9A958A;
  --type-dim:      #5C594F;
  --accent:        #7DBFCF;
  --accent-glow:   rgba(125,191,207,0.10);
  --accent-strong: rgba(125,191,207,0.18);
  --accent-bd:     rgba(125,191,207,0.35);
  --accent-bd-soft:rgba(125,191,207,0.20);
  --green:         #6BD68A;
  --red:           #F76C68;
  --warn:          #D6AC6B;
  --gold:          #F2C66B;
  --info:          #7DBFCF;
  --tint-green-bg: rgba(107,214,138,0.08);
  --tint-green-bd: rgba(107,214,138,0.28);
  --tint-red-bg:   rgba(247,108,104,0.08);
  --tint-red-bd:   rgba(247,108,104,0.28);
  --font-ui:   'Public Sans', system-ui, sans-serif;
  --font-mono: 'IBM Plex Mono', ui-monospace, monospace;
  --font-edit: 'Newsreader', Georgia, serif;
}

/* Light theme — inverted intensities, accent darkened for contrast on
   light backgrounds. Semantic colors deepened so green/red text reads
   on near-white. */
[data-theme="light"] {
  --bg:            #F2EFE5;
  --surface:       #FFFFFF;
  --surface-raised:#F8F5EB;
  --rule:          #D4CFC0;
  --rule-bold:     #A39E8C;
  --type:          #1E1D17;
  --type-mute:     #5C594F;
  --type-dim:      #9A958A;
  --accent:        #2F7E96;
  --accent-glow:   rgba(47, 126, 150, 0.10);
  --accent-strong: rgba(47, 126, 150, 0.18);
  --accent-bd:     rgba(47, 126, 150, 0.45);
  --accent-bd-soft:rgba(47, 126, 150, 0.28);
  --green:         #1F8C4D;
  --red:           #B82E2E;
  --warn:          #8E5B1E;
  --gold:          #B8860B;
  --info:          #2F7E96;
  --tint-green-bg: rgba(31, 140, 77, 0.10);
  --tint-green-bd: rgba(31, 140, 77, 0.32);
  --tint-red-bg:   rgba(184, 46, 46, 0.10);
  --tint-red-bd:   rgba(184, 46, 46, 0.32);
}
[data-theme="light"] body::before{
  background-image:radial-gradient(circle at 1px 1px,rgba(0,0,0,0.04) 1px,transparent 1px);
  opacity:.5;
}

/* Keyboard focus — visible outline for accessibility. Applies only to
   keyboard-driven focus, not mouse clicks (avoids the click-flash). */
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
a:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:1px;}

/* Sortable table — active-column visual cue */
table.data-table th[data-sort-state="asc"],
table.data-table th[data-sort-state="desc"]{
  color:var(--accent);background:var(--surface-raised);
}

/* Theme toggle button — sits in the topbar right cluster */
.theme-toggle{
  width:30px;height:30px;border-radius:50%;
  background:transparent;border:1px solid var(--rule);
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-size:14px;
  color:var(--type-mute);cursor:pointer;
  transition:color 100ms, border-color 100ms;
  padding:0;line-height:1;
}
.theme-toggle:hover{color:var(--accent);border-color:var(--accent);}
.theme-toggle__icon-light,.theme-toggle__icon-dark{display:none;}
[data-theme="dark"] .theme-toggle__icon-light{display:inline;}
[data-theme="light"] .theme-toggle__icon-dark{display:inline;}
:root:not([data-theme]) .theme-toggle__icon-light{display:inline;}
*{box-sizing:border-box;margin:0;padding:0;}
body{background:var(--bg);color:var(--type);font-family:var(--font-ui);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;display:flex;min-height:100vh;}
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;background-image:radial-gradient(circle at 1px 1px,rgba(255,255,255,0.012) 1px,transparent 1px);background-size:3px 3px;opacity:.6;}

/* ── Left rail ─────────────────────────────────────────────────────── */
.rail{width:240px;min-width:240px;background:var(--surface);border-right:1px solid var(--rule);display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;z-index:10;flex-shrink:0;}
.rail-brand{padding:18px 18px 14px;border-bottom:1px solid var(--rule);}
/* ── Ticker page hero (Phase 1, 2026-05-27) ─────────────────────── */
.ticker-hero{
  background:var(--surface);border:1px solid var(--rule);
  border-left:3px solid var(--accent);padding:22px 26px;margin-bottom:22px;
}
.ticker-hero__row1{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:6px;}
.ticker-hero__logo{
  width:44px;height:44px;flex-shrink:0;
  background:var(--surface-raised);border:1px solid var(--rule);
  padding:5px;object-fit:contain;
}
.ticker-hero__logo--fallback{padding:3px;}
.ticker-hero__ticker{font-family:var(--font-mono);font-weight:700;font-size:40px;letter-spacing:-0.01em;color:var(--type);line-height:1;}
.ticker-hero__chips{display:flex;gap:8px;flex-wrap:wrap;}
.ticker-chip{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-mono);font-size:12px;letter-spacing:0.08em;
  text-transform:uppercase;padding:5px 10px;border:1px solid var(--rule);
  background:var(--surface-raised);color:var(--type-mute);
}
.ticker-chip__dot{width:6px;height:6px;background:currentColor;border-radius:50%;}
.ticker-chip--sector{border-color:rgba(125,191,207,0.45);color:var(--accent);}
.ticker-chip--exch{color:var(--type-mute);}
.ticker-chip--ok{border-color:rgba(109,191,143,0.45);color:var(--green);}
.ticker-chip--warn{border-color:rgba(197,164,90,0.45);color:var(--warn);}
.ticker-hero__name{font-family:var(--font-edit);font-style:italic;font-weight:500;font-size:19px;color:var(--type-mute);margin:4px 0 12px;}
.ticker-hero__row2{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;}
.ticker-hero__price{font-family:var(--font-mono);font-size:26px;font-weight:700;color:var(--type);}
.ticker-hero__delta{font-family:var(--font-mono);font-size:17px;}
.ticker-hero__counts{color:var(--type-mute);font-family:var(--font-mono);font-size:13px;}

/* ── Ticker analyst leaderboard (Phase 2, 2026-05-27) ───────────── */
.lb-table tbody tr:hover{background:rgba(125,191,207,0.03);}
.lb-analyst{display:flex;align-items:center;gap:10px;}
.lb-avatar{width:28px;height:28px;border-radius:50%;background:var(--surface-raised);border:1px solid var(--rule);flex-shrink:0;}
.lb-handle{font-family:var(--font-mono);font-weight:600;color:var(--type);text-decoration:none;font-size:14px;display:block;line-height:1.2;}
.lb-handle:hover{color:var(--accent);}
.lb-meta{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);margin-top:3px;}
.lb-stack{display:flex;flex-direction:column;line-height:1.2;}
.lb-stack__top{font-family:var(--font-mono);font-weight:700;font-size:14px;}
.lb-stack__sub{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);margin-top:3px;}
.lb-chip{
  display:inline-flex;align-items:center;gap:5px;
  font-family:var(--font-mono);font-size:11px;font-weight:700;
  letter-spacing:0.08em;text-transform:uppercase;
  padding:4px 9px;border:1px solid currentColor;background:transparent;
  white-space:nowrap;
}
.lb-chip__dot{width:5px;height:5px;background:currentColor;border-radius:50%;}
.lb-chip--follow{color:var(--green);background:rgba(109,191,143,0.05);}
.lb-chip--fade{color:var(--red);background:rgba(201,95,95,0.05);}
.lb-chip--measuring{color:var(--warn);background:rgba(197,164,90,0.05);}
.lb-chip--bull{color:var(--green);}
.lb-chip--bear{color:var(--red);}
.lb-chip--neut{color:var(--type-mute);}
.lb-chip--first{color:var(--accent);background:rgba(125,191,207,0.06);border-style:dashed;}
.lb-chip--flip{color:var(--warn);background:rgba(197,164,90,0.06);}

/* ── Ticker accountability headline ─────────────────────────────── */
.accountability{
  background:linear-gradient(180deg,rgba(125,191,207,0.06),rgba(125,191,207,0.02));
  border:1px solid rgba(125,191,207,0.35);padding:22px 26px;
  display:grid;grid-template-columns:repeat(4,1fr) auto;gap:26px;
  align-items:center;margin-bottom:22px;
}
.accountability__label{font-family:var(--font-mono);font-size:12px;letter-spacing:0.12em;text-transform:uppercase;color:var(--type-mute);margin:0 0 6px;}
.accountability__value{font-family:var(--font-mono);font-size:24px;font-weight:700;margin:0;line-height:1.2;}
.accountability__verdict{justify-self:end;}
.verdict-chip{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--font-mono);font-size:13px;font-weight:700;
  text-transform:uppercase;letter-spacing:0.10em;
  padding:8px 16px;border:1px solid currentColor;
  color:var(--green);background:rgba(109,191,143,0.06);
}
.verdict-chip--fade{color:var(--red);background:rgba(201,95,95,0.06);}
.verdict-chip--measuring{color:var(--warn);background:rgba(197,164,90,0.06);}
@media (max-width:780px){
  .accountability{grid-template-columns:repeat(2,1fr);}
  .accountability__verdict{grid-column:1/-1;justify-self:start;}
}

/* ── /news page (2026-05-27) — market-wide news scanner ──────────── */
/* Hero strip */
.news-hero{
  margin-bottom:22px;
  background:linear-gradient(180deg, var(--surface-raised), var(--surface));
  border:1px solid var(--rule);padding:14px 18px;
}
.news-hero__head{
  display:flex;align-items:baseline;justify-content:space-between;
  margin-bottom:12px;gap:14px;
}
.news-hero__title{
  font-family:var(--font-ui);font-size:15px;font-weight:700;
  letter-spacing:0.04em;text-transform:uppercase;color:var(--type);
}
.news-hero__sub{font-family:var(--font-mono);font-size:13px;color:var(--type-mute);}
.news-hero__grid{
  display:grid;grid-template-columns:repeat(auto-fit, minmax(180px, 1fr));gap:10px;
}
.hero-card{
  display:flex;flex-direction:column;gap:6px;
  padding:12px 14px;background:var(--surface);
  border:1px solid var(--rule);border-left:3px solid var(--accent);
  text-decoration:none;color:var(--type);
  transition:border-color 100ms;
}
.hero-card *{text-decoration:none;}
.hero-card:hover{border-color:var(--accent-bd);}
.hero-card--earnings{border-left-color:var(--green);}
.hero-card--macro{border-left-color:var(--accent);}
.hero-card--risk{border-left-color:var(--red);}
.hero-card__head{display:flex;align-items:center;gap:10px;}
.hero-card__id{display:flex;flex-direction:column;flex:1;min-width:0;gap:2px;}
.hero-card__logo{
  width:36px;height:36px;flex-shrink:0;
  background:var(--surface-raised);
  border:1px solid var(--rule);
  padding:4px;object-fit:contain;
}
.hero-card__logo--init{
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-weight:700;font-size:13px;
  color:var(--accent);background:var(--accent-glow);
  border-color:var(--accent-bd);
}
.hero-card__logo--fallback{
  /* Google favicon fallback — smaller-res, drop the padding so it
     fills the box. */
  padding:2px;
}
.hero-card__sym{
  font-family:var(--font-mono);font-size:18px;font-weight:700;color:var(--type);
}
.hero-card__impact{
  font-family:var(--font-mono);font-size:11px;font-weight:600;
  letter-spacing:0.10em;text-transform:uppercase;color:var(--type-mute);
}
.hero-card__company{
  font-family:var(--font-edit);font-style:italic;font-size:14px;
  color:var(--type-mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.hero-card__stats{
  display:flex;gap:14px;font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
}
.hero-card__stats strong{color:var(--type);font-weight:700;}

/* Wire stream */
.wire-stream{display:flex;flex-direction:column;}
.wire-row{
  display:grid;
  /* Text gets all remaining space, tickers shrink to fit. Previous
     "1fr 1fr" left a huge gap between headline and ticker chips
     (op-caught 2026-05-27). */
  grid-template-columns:50px auto minmax(120px, max-content) 1fr auto auto;
  align-items:center;gap:12px;
  padding:9px 16px;border-bottom:1px solid var(--rule);
}
.wire-row:last-child{border-bottom:none;}
.wire-row:hover{background:var(--surface-raised);}
.wire-time{
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
}
.wire-handle{
  font-family:var(--font-mono);font-size:14px;font-weight:600;
  color:var(--type);text-decoration:none;
}
.wire-handle:hover{color:var(--accent);}
.wire-source{
  font-family:var(--font-mono);font-size:12px;font-weight:600;
  color:var(--type-mute);text-transform:uppercase;letter-spacing:0.04em;
}
.wire-row--news{
  /* Subtle amber tint so headline rows are distinguishable from
     wire-tweet rows at a glance. */
  border-left:2px solid transparent;
}
.wire-row--news:hover{border-left-color:var(--warn-bd);}
.wire-row--wire{border-left:2px solid transparent;}
.wire-row--wire:hover{border-left-color:var(--accent-bd);}
.wire-text{
  font-size:13px;color:var(--type);line-height:1.45;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  min-width:0;
}
.wire-tickers{display:flex;gap:5px;flex-wrap:wrap;}
.wire-tickers .ticker-chip{
  /* High-contrast: white text on a darker background, slight accent
     border. The previous "cyan-on-cyan-glow" iteration was still too
     low-contrast against the row background — op-flagged twice. */
  font-size:13px;
  font-weight:700;
  padding:3px 10px;
  color:var(--type);
  border-color:var(--accent-bd);
  background:var(--surface-raised);
  letter-spacing:0.02em;
}
.wire-tickers .ticker-chip:hover{
  color:var(--bg);
  border-color:var(--accent);
  background:var(--accent);
}
.wire-tickers .ticker-chip--more{
  color:var(--type-mute);
  border-color:var(--rule);
  background:var(--surface);
  cursor:help;
}
.wire-tickers .ticker-chip--more:hover{
  color:var(--type);
  background:var(--surface-raised);
  border-color:var(--type-mute);
}
.wire-link{
  font-family:var(--font-mono);font-size:14px;color:var(--accent);
  text-decoration:none;
}
.wire-link:hover{filter:brightness(1.15);}

/* Sector themes / heat */
.theme-bars{
  display:flex;flex-direction:column;gap:6px;padding:12px 16px;
}
.theme-row{
  display:grid;
  grid-template-columns:50px 1fr auto auto;align-items:center;gap:10px;
  font-family:var(--font-mono);font-size:14px;
}
.theme-row__sym{color:var(--type);font-weight:700;}
.theme-row__bar{
  background:var(--surface-raised);border:1px solid var(--rule);
  height:10px;position:relative;
}
.theme-row__fill{
  position:absolute;left:0;top:0;bottom:0;background:var(--accent);
}
.theme-row__n{color:var(--type);}
.theme-row__n strong{font-weight:700;}
.theme-row__sub{color:var(--type-mute);font-size:13px;}

/* Silence detector */
.silence-grid{
  display:grid;grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));
  gap:10px;padding:12px 16px;
}
.silence-cell{
  display:flex;align-items:center;gap:10px;
  padding:8px 12px;border:1px dashed var(--warn-bd);
  background:var(--tint-warn-bg);
}
.silence-cell__sym{
  font-family:var(--font-mono);font-size:15px;font-weight:700;
  color:var(--type);text-decoration:none;
}
.silence-cell__sym:hover{color:var(--accent);}
.silence-cell__n{
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);flex:1;
}
.silence-cell__n strong{color:var(--type);}
.silence-cell__badge{
  font-family:var(--font-mono);font-size:11px;font-weight:700;
  letter-spacing:0.10em;color:var(--warn);
  border:1px solid var(--warn-bd);padding:3px 7px;
}

/* News stream ticker filter */
.news-filter{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
}
.news-filter__input{
  background:var(--surface);border:1px solid var(--rule);
  font-family:var(--font-mono);font-size:14px;color:var(--type);
  padding:7px 12px;width:260px;outline:none;
  transition:border-color 100ms;
}
.news-filter__input:focus{border-color:var(--accent-bd);background:var(--surface-raised);}
.news-filter__input::placeholder{color:var(--type-mute);}
.news-filter__count{
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
}
.news-stream__empty{
  padding:28px 14px;font-family:var(--font-mono);font-size:14px;
  color:var(--type-mute);text-align:center;font-style:italic;
  border-top:1px dashed var(--rule);
}
.news-stream__empty[hidden]{display:none;}

/* Source chips reused in /news hero + wire stream */
.src-chip{
  display:inline-flex;align-items:center;font-family:var(--font-mono);
  font-size:11px;font-weight:700;letter-spacing:0.10em;text-transform:uppercase;
  padding:3px 8px;border:1px solid;white-space:nowrap;
}
.src-chip--news{color:var(--warn);border-color:var(--warn-bd);background:var(--tint-warn-bg);}
.src-chip--wire{color:var(--accent);border-color:var(--accent-bd);background:var(--accent-glow);}

/* ── Compare picker — combobox with X avatars (2026-05-27) ───────── */
.cmp-picker{
  display:flex;align-items:center;gap:10px;margin-bottom:18px;
  padding:10px 14px;background:var(--surface);border:1px solid var(--rule);
  flex-wrap:wrap;
}
.cmp-picker__label{
  font-family:var(--font-ui);font-size:14px;font-weight:700;
  letter-spacing:0.04em;text-transform:uppercase;color:var(--type);
}
.cmp-picker__vs{
  color:var(--type-mute);font-family:var(--font-mono);font-size:13px;
}
.cmp-picker__err{
  font-family:var(--font-mono);font-size:13px;color:var(--red);
  margin-left:8px;
}
.cmp-picker__err[hidden]{display:none;}
.cmp-picker__go{
  font-family:var(--font-mono);font-size:13px;font-weight:700;
  letter-spacing:0.08em;text-transform:uppercase;
  color:var(--bg);background:var(--accent);
  border:1px solid var(--accent);padding:7px 18px;cursor:pointer;
  transition:filter 100ms, opacity 100ms;
}
.cmp-picker__go:hover:not(:disabled){filter:brightness(1.1);}
.cmp-picker__go:disabled{
  opacity:0.5;cursor:not-allowed;
  background:var(--surface-raised);color:var(--type-dim);
  border-color:var(--rule);
}

.cmp-combo{position:relative;min-width:220px;}
.cmp-combo__trigger{
  width:100%;display:flex;align-items:center;gap:8px;
  padding:6px 10px;font-family:var(--font-mono);font-size:13px;
  color:var(--type);background:var(--surface-raised);
  border:1px solid var(--rule);cursor:pointer;text-align:left;
  transition:border-color 100ms;
}
.cmp-combo__trigger:hover,
.cmp-combo[data-open="true"] .cmp-combo__trigger{
  border-color:var(--accent-bd);
}
.cmp-combo__trigger img{
  width:22px;height:22px;border-radius:50%;flex-shrink:0;object-fit:cover;
  border:1px solid var(--accent-bd);
}
.cmp-combo__placeholder{color:var(--type-dim);flex:1;}
.cmp-combo__selected{
  color:var(--type);font-weight:600;flex:1;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.cmp-combo__caret{
  color:var(--type-dim);font-size:11px;margin-left:auto;
}
.cmp-combo__panel{
  position:absolute;top:calc(100% + 2px);left:0;right:0;
  background:var(--surface);border:1px solid var(--accent-bd);
  box-shadow:0 8px 24px rgba(0,0,0,0.4);z-index:60;
  display:flex;flex-direction:column;max-height:340px;
}
.cmp-combo__panel[hidden]{display:none;}
.cmp-combo__search{
  font-family:var(--font-mono);font-size:13px;color:var(--type);
  background:var(--surface-raised);border:none;
  border-bottom:1px solid var(--rule);padding:8px 12px;outline:none;
}
.cmp-combo__search::placeholder{color:var(--type-dim);}
.cmp-combo__list{
  list-style:none;margin:0;padding:4px 0;overflow-y:auto;
  scrollbar-width:thin;
}
.cmp-combo__item{
  display:flex;align-items:center;gap:10px;padding:6px 12px;
  font-family:var(--font-mono);font-size:13px;color:var(--type);
  cursor:pointer;transition:background 80ms;
}
.cmp-combo__item:hover,
.cmp-combo__item[data-active="true"]{background:var(--accent-glow);}
.cmp-combo__item[hidden]{display:none;}
.cmp-combo__avatar{
  width:24px;height:24px;border-radius:50%;flex-shrink:0;object-fit:cover;
  border:1px solid var(--accent-bd);background:var(--accent-glow);
}
.cmp-combo__handle{
  flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* ── /analysts card grid (Phase 3, 2026-05-27) ───────────────────── */
/* Discovery directory — split from /scorecard's ranked table. Designed
   in docs/research_2026_05_27/analyst_proposals_mockup.html §3. */
.cohort-rail{
  display:grid;grid-template-columns:repeat(3, 1fr);gap:1px;
  background:var(--rule);border:1px solid var(--rule);margin-bottom:24px;
}
.cohort-rail:has(.cohort-seg--echo){grid-template-columns:repeat(4, 1fr);}
.cohort-seg{
  background:var(--surface);padding:18px 20px;display:flex;
  flex-direction:column;gap:6px;cursor:default;
  transition:background 100ms;
}
.cohort-seg:hover{background:var(--surface-raised);}
.cohort-seg__head{display:flex;justify-content:space-between;align-items:baseline;}
.cohort-seg__label{
  font-family:var(--font-ui);font-size:13px;font-weight:700;
  letter-spacing:0.08em;text-transform:uppercase;
}
.cohort-seg__count{
  font-family:var(--font-mono);font-size:26px;font-weight:700;color:var(--type);
}
.cohort-seg__frac{font-family:var(--font-mono);font-size:13px;color:var(--type-mute);}
.cohort-seg__bar{height:3px;background:var(--rule);overflow:hidden;}
.cohort-seg__fill{height:100%;}
.cohort-seg--follow .cohort-seg__label{color:var(--green);}
.cohort-seg--follow .cohort-seg__fill{background:var(--green);}
.cohort-seg--building .cohort-seg__label{color:var(--warn);}
.cohort-seg--building .cohort-seg__fill{background:var(--warn);}
.cohort-seg--fade .cohort-seg__label{color:var(--red);}
.cohort-seg--fade .cohort-seg__fill{background:var(--red);}
.cohort-seg--echo .cohort-seg__label{color:var(--type-mute);}
.cohort-seg--echo .cohort-seg__fill{background:var(--type-mute);}
@media (max-width:900px){
  .cohort-rail,
  .cohort-rail:has(.cohort-seg--echo){grid-template-columns:repeat(2, 1fr);}
}

.analyst-grid{
  display:grid;grid-template-columns:repeat(3, 1fr);gap:14px;
}
@media (max-width:900px){.analyst-grid{grid-template-columns:repeat(2, 1fr);}}
@media (max-width:600px){.analyst-grid{grid-template-columns:1fr;}}
.analyst-card{
  background:var(--surface);border:1px solid var(--rule);
  border-left:3px solid var(--rule);padding:14px 16px;
  display:flex;flex-direction:column;gap:12px;
  transition:border-color 100ms;
  /* Whole card is a link, but inside should not look like one */
  text-decoration:none;color:var(--type);
}
.analyst-card,
.analyst-card *{text-decoration:none;}
.analyst-card:hover{border-color:var(--accent-bd);}
.analyst-card--follow{border-left-color:var(--green);}
.analyst-card--fade{border-left-color:var(--red);}
.analyst-card--building{border-left-color:var(--warn);}
.analyst-card--echo{opacity:0.55;}
.ac-row1{display:flex;align-items:center;gap:10px;}
.ac-avatar{
  width:36px;height:36px;border-radius:50%;flex-shrink:0;object-fit:cover;
  border:1px solid var(--accent-bd);background:var(--accent-glow);
}
.ac-handle{
  font-family:var(--font-mono);font-weight:600;font-size:15px;color:var(--type);
}
.ac-meta{
  font-family:var(--font-mono);font-size:12px;color:var(--type-mute);margin-top:2px;
}
.ac-verdict{
  margin-left:auto;display:inline-flex;align-items:center;gap:4px;
  padding:4px 9px;font-family:var(--font-mono);font-size:11px;font-weight:700;
  letter-spacing:0.10em;text-transform:uppercase;border:1px solid;
  white-space:nowrap;
}
.ac-verdict--follow{color:var(--green);border-color:var(--green-bd);background:var(--tint-green-bg);}
.ac-verdict--fade{color:var(--red);border-color:var(--red-bd);background:var(--tint-red-bg);}
.ac-verdict--building{color:var(--warn);border-color:var(--warn-bd);background:var(--tint-warn-bg);}
.ac-verdict--echo{color:var(--type-dim);border-color:var(--rule);background:transparent;font-style:italic;}
.ac-badges{display:flex;gap:5px;flex-wrap:wrap;min-height:14px;}
.ac-badge{
  font-family:var(--font-mono);font-size:11px;font-weight:600;
  letter-spacing:0.06em;padding:3px 7px;border:1px solid;
}
.ac-badge--rising{color:var(--accent);border-color:var(--accent-bd);background:var(--accent-glow);}
.ac-badge--fading{color:var(--type-dim);border-color:var(--rule);background:transparent;}
.ac-stats{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;}
.ac-stat{padding:6px 8px;background:var(--surface-raised);border:1px solid var(--rule);}
.ac-stat__label{
  font-family:var(--font-mono);font-size:11px;color:var(--type-mute);
  letter-spacing:0.06em;text-transform:uppercase;
}
.ac-stat__value{
  font-family:var(--font-mono);font-size:16px;font-weight:700;color:var(--type);margin-top:3px;
}
.ac-stat__value.pos{color:var(--green);}
.ac-stat__value.neg{color:var(--red);}

.analysts-footer{
  margin-top:24px;padding:16px 20px;border:1px solid var(--rule);background:var(--surface);
  display:flex;align-items:center;justify-content:space-between;
  font-family:var(--font-mono);font-size:14px;flex-wrap:wrap;gap:10px;
}
.analysts-footer__label{color:var(--type-mute);}
.analysts-footer__link{
  color:var(--accent);text-decoration:none;font-weight:700;letter-spacing:0.06em;
}
.analysts-footer__link:hover{text-decoration:underline;text-underline-offset:3px;}

/* ── /scorecard influence topology panel (Phase 2, 2026-05-27) ───── */
.inf-pairs{
  display:grid;grid-template-columns:1fr;gap:1px;background:var(--rule);
}
.inf-row{
  display:grid;
  grid-template-columns:18px minmax(0,1fr) auto minmax(0,1fr) auto auto auto;
  gap:14px;align-items:center;padding:10px 16px;background:var(--surface);
}
.inf-row:hover{background:var(--surface-raised);}
.inf-rank{
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
  text-align:right;
}
.inf-handle{
  display:flex;align-items:center;gap:8px;
  font-family:var(--font-mono);font-size:14px;font-weight:600;
  color:var(--type);text-decoration:none;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.inf-handle:hover{color:var(--accent);}
.inf-avatar{
  width:22px;height:22px;border-radius:50%;flex-shrink:0;object-fit:cover;
}
.inf-arrow{font-family:var(--font-mono);color:var(--accent);font-size:14px;}
.inf-pill{
  font-family:var(--font-mono);font-size:13px;font-weight:700;
  color:var(--type);padding:4px 10px;border:1px solid var(--rule);
  background:var(--surface-raised);white-space:nowrap;
}
.inf-pill--agree{color:var(--green);border-color:var(--green-bd);}
.inf-pill--lag{color:var(--type-mute);}
.inf-pill--n{color:var(--type-dim);font-weight:500;}

/* ── Account profile additions (2026-05-27) — early-pivot,
   sector-shift, style-trajectory. Designed from
   docs/research_2026_05_27/analyst_proposals_mockup.html ── */

/* Early-Pivot Rate */
.ep-grid{display:grid;grid-template-columns:1fr 2fr;gap:24px;align-items:center;}
@media (max-width:680px){.ep-grid{grid-template-columns:1fr;}}
.ep-rate{
  font-family:var(--font-mono);font-size:54px;font-weight:700;
  color:var(--green);line-height:1;
}
.ep-rate.neg{color:var(--red);}
.ep-rate.flat{color:var(--type);}
.ep-rate__label{
  font-family:var(--font-mono);font-size:12px;letter-spacing:0.10em;
  text-transform:uppercase;color:var(--type-mute);margin-top:10px;
}
.ep-detail{font-size:14px;color:var(--type);line-height:1.5;margin-bottom:14px;font-family:var(--font-ui);}
.ep-detail strong{color:var(--type);}
.ep-buckets{
  display:grid;grid-template-columns:repeat(5,1fr);gap:6px;
}
.ep-bucket{
  display:flex;flex-direction:column;align-items:center;gap:4px;
  padding:6px 4px;background:var(--surface);border:1px solid var(--rule);
}
.ep-bucket__bar{
  width:100%;height:46px;display:flex;align-items:flex-end;
}
.ep-bar{
  width:100%;min-height:3px;transition:height 200ms ease-out;
}
.ep-bar--early{background:var(--green);}
.ep-bar--late{background:var(--red);opacity:0.75;}
.ep-bucket__n{
  font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--type);
}
.ep-bucket__label{
  font-family:var(--font-mono);font-size:11px;color:var(--type-mute);
  letter-spacing:0.04em;text-transform:uppercase;text-align:center;
}

/* Sector-Concentration Shift */
.ss-header{
  display:grid;grid-template-columns:60px 1fr 1fr 100px;gap:10px;
  margin-bottom:10px;font-family:var(--font-mono);font-size:12px;
  color:var(--type-mute);letter-spacing:0.08em;text-transform:uppercase;
  font-weight:700;
}
.ss-bars{display:flex;flex-direction:column;gap:7px;}
.ss-row{
  display:grid;grid-template-columns:60px 1fr 1fr 100px;gap:10px;
  align-items:center;font-family:var(--font-mono);font-size:14px;
}
.ss-row__sym{color:var(--type-mute);font-weight:700;}
.ss-row__bar{
  background:var(--surface-raised);height:10px;position:relative;
  border:1px solid var(--rule);
}
.ss-row__bar > span{
  position:absolute;left:0;top:0;bottom:0;background:var(--type-dim);
}
.ss-row__bar--7d > span{background:var(--accent);}
.ss-row__delta{font-size:13px;text-align:right;font-family:var(--font-mono);}
.ss-row__delta--pos{color:var(--green);}
.ss-row__delta--neg{color:var(--red);}
.ss-row__delta--flat{color:var(--type-dim);}

/* Style Trajectory */
.st-row{
  display:grid;grid-template-columns:90px 1fr 90px;gap:14px;
  align-items:center;margin-bottom:12px;
}
.st-row__label{
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
  letter-spacing:0.04em;font-weight:600;
}
.st-row__empty{
  height:26px;display:flex;align-items:center;padding-left:10px;
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
  border:1px dashed var(--rule);font-style:italic;
}
.st-bar{
  height:26px;display:flex;border:1px solid var(--rule);overflow:hidden;
}
.st-cell{
  display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-size:12px;font-weight:700;
  color:var(--surface);white-space:nowrap;overflow:hidden;
}
.st-cell--active_buy{background:var(--green);}
.st-cell--add{background:var(--green);opacity:0.7;}
.st-cell--holding{background:var(--accent);opacity:0.65;}
.st-cell--trim{background:var(--warn);opacity:0.85;}
.st-cell--active_sell{background:var(--red);}
.st-foot{
  font-family:var(--font-mono);font-size:12px;color:var(--type-mute);
  margin-top:12px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;
}
.st-drift{color:var(--accent);font-style:italic;}

/* ── Ticker page polish (Phase 6, 2026-05-27) ─────────────────────── */
/* Bull-vs-Bear split — paired bar shows directional sentiment at a glance.
   Watch is a parallel count, NOT a slice of the same pie (op-decision
   2026-05-27 — watching mentions diluted the bull/bear signal). */
.stance-row{
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  margin-bottom:18px;padding:14px 18px;
  background:linear-gradient(180deg, var(--surface-raised), var(--surface));
  border:1px solid var(--rule);
}
.stance-pair{
  flex:1 1 320px;min-width:260px;display:flex;height:48px;
  border:1px solid var(--rule);overflow:hidden;
}
.stance-pair__side{
  display:flex;flex-direction:column;justify-content:center;
  padding:6px 12px;min-width:0;
  transition:flex 220ms ease-out;
}
.stance-pair__side--bull{
  background:linear-gradient(90deg, var(--tint-green-bg), transparent);
  border-right:1px solid var(--rule);
  align-items:flex-start;
}
.stance-pair__side--bear{
  background:linear-gradient(270deg, var(--tint-red-bg), transparent);
  align-items:flex-end;
  text-align:right;
}
.stance-pair__pct{
  font-family:var(--font-mono);font-size:22px;font-weight:700;line-height:1;
}
.stance-pair__side--bull .stance-pair__pct{color:var(--green);}
.stance-pair__side--bear .stance-pair__pct{color:var(--red);}
.stance-pair__label{
  font-family:var(--font-mono);font-size:12px;font-weight:600;
  letter-spacing:0.10em;text-transform:uppercase;color:var(--type-mute);
  margin-top:3px;
}
.stance-watch{
  display:inline-flex;align-items:baseline;gap:6px;
  padding:6px 12px;border:1px dashed var(--rule);
}
.stance-watch__count{
  font-family:var(--font-mono);font-size:18px;font-weight:700;color:var(--type);
}
.stance-watch__label{
  font-family:var(--font-mono);font-size:12px;font-weight:600;
  letter-spacing:0.10em;text-transform:uppercase;color:var(--type-mute);
}
.stance-row__caption{
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
  margin-left:auto;
}
.stance-row--watch-only{justify-content:center;}
.stance-row--watch-only .stance-row__caption{
  margin:0;font-size:14px;color:var(--type-mute);
}
.stance-row--watch-only .stance-row__caption strong{
  color:var(--type);font-size:18px;
}
@media (max-width:680px){
  .stance-pair{flex-basis:100%;}
  .stance-row__caption{margin:0;}
}

/* Conviction chip in Feed */
.conv-chip{
  display:inline-block;font-family:var(--font-mono);font-size:11px;
  font-weight:700;letter-spacing:0.10em;
  padding:3px 8px;border:1px solid;
}
.conv-chip--high{
  color:var(--green);border-color:var(--green-bd);
  background:var(--tint-green-bg);
}
.conv-chip--med{
  color:var(--warn);border-color:var(--warn-bd);
  background:var(--tint-warn-bg);
}
.conv-chip--low{
  color:var(--type-dim);border-color:var(--rule);
  background:transparent;
}

/* 1ST-only leaderboard filter */
.lb-filter{
  display:inline-flex;align-items:center;gap:7px;cursor:pointer;
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
  user-select:none;
}
.lb-filter:hover{color:var(--type);}
.lb-filter__cb{
  appearance:none;width:14px;height:14px;border:1px solid var(--rule);
  background:var(--surface);margin:0;cursor:pointer;position:relative;
}
.lb-filter__cb:checked{
  background:var(--accent-glow);border-color:var(--accent);
}
.lb-filter__cb:checked::after{
  content:"✓";position:absolute;top:-2px;left:1px;
  color:var(--accent);font-size:12px;font-weight:700;
}
.lb-filter__label{letter-spacing:0.08em;}
.lb-table.lb-table--first .lb-row:not(.lb-row--first){display:none;}

/* ── Ticker page — Price chart (Phase 5, 2026-05-27, uPlot) ───────── */
.pricechart{
  background:linear-gradient(180deg, var(--surface-raised), var(--surface));
  border:1px solid var(--rule);padding:18px 20px 12px;margin-bottom:22px;
}
.pricechart__header{
  display:flex;align-items:baseline;justify-content:space-between;gap:14px;
  flex-wrap:wrap;margin-bottom:14px;
}
.pricechart__title{
  font-family:var(--font-ui);font-size:15px;font-weight:700;
  letter-spacing:0.04em;text-transform:uppercase;color:var(--type);
}
.pricechart__title em{font-style:normal;color:var(--accent);font-weight:700;}
.pricechart__hint{font-family:var(--font-mono);font-size:13px;color:var(--type-mute);}
.pricechart__svg-wrap{position:relative;width:100%;height:340px;}
.pricechart__canvas{width:100%;height:100%;}
.pricechart__empty{
  padding:40px 14px;text-align:center;color:var(--type-mute);
  font-family:var(--font-mono);font-size:14px;
  background:var(--surface);border:1px dashed var(--rule);
}
.pricechart__legend{
  display:flex;gap:16px;flex-wrap:wrap;margin-top:10px;align-items:center;
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
}
.pricechart__legend span{display:inline-flex;align-items:center;gap:6px;}
.pricechart__legend .legend-line{width:18px;height:2px;background:var(--warn);}
.pricechart__legend .legend-line--sector{
  background:transparent;border-top:2px dashed var(--accent);
  opacity:0.6;height:0;
}
.pricechart__legend .legend-now{
  color:var(--type);font-weight:700;margin-left:4px;
}
.pricechart__asof{margin-left:auto;color:var(--type-dim);}

/* Range toggle (7D/30D/90D/1Y) */
.range-toggle{display:inline-flex;gap:1px;background:var(--rule);border:1px solid var(--rule);}
.range-toggle__btn{
  padding:5px 13px;font-family:var(--font-mono);font-size:13px;font-weight:700;
  letter-spacing:0.08em;text-decoration:none;background:var(--surface);
  color:var(--type-mute);transition:color 100ms, background 100ms;
}
.range-toggle__btn:hover{color:var(--type);}
.range-toggle__btn.is-active{background:var(--accent-glow);color:var(--accent);}

/* Tooltip — shown on marker hover by price_chart.js */
.pricechart__tooltip{
  position:absolute;background:var(--surface-raised);
  border:1px solid var(--accent-bd);padding:12px 14px;
  box-shadow:0 6px 22px rgba(0,0,0,0.4);
  font-family:var(--font-mono);font-size:13px;
  min-width:260px;max-width:360px;
  pointer-events:auto;z-index:5;
}
.pricechart__tooltip .pt-callers{
  margin-top:8px;display:flex;flex-direction:column;gap:3px;
  max-height:230px;overflow-y:auto;
}
.pricechart__tooltip .pt-caller{
  display:flex;justify-content:space-between;align-items:center;gap:8px;
  padding:3px 0;border-bottom:1px dotted var(--rule);
}
.pricechart__tooltip .pt-caller:last-child{border-bottom:none;}
.pricechart__tooltip .pt-caller__handle{
  color:var(--accent);text-decoration:none;font-weight:600;font-size:13px;
}
.pricechart__tooltip .pt-caller__handle:hover{
  text-decoration:underline;text-underline-offset:2px;
}
.pricechart__tooltip .pt-caller__edge{
  color:var(--type-mute);font-family:var(--font-mono);font-size:13px;
}
.pricechart__tooltip .pt-more{
  color:var(--type-mute);font-size:12px;text-align:center;
  padding-top:5px;font-style:italic;
}
.pricechart__tooltip[hidden]{display:none;}
.pricechart__tooltip .pt-header{
  display:flex;align-items:center;gap:8px;margin-bottom:6px;
  padding-bottom:6px;border-bottom:1px dotted var(--rule);
}
.pricechart__tooltip .pt-avatar{
  width:24px;height:24px;border-radius:50%;background:var(--accent-glow);
  border:1px solid var(--accent-bd);display:flex;align-items:center;
  justify-content:center;font-size:10px;color:var(--accent);
}
.pricechart__tooltip .pt-handle{color:var(--type);font-weight:700;font-size:14px;}
.pricechart__tooltip .pt-when{color:var(--type-mute);font-size:12px;margin-left:auto;}
.pricechart__tooltip .pt-dir{
  display:inline-block;padding:2px 8px;font-size:11px;font-weight:700;
  letter-spacing:0.10em;
}
.pricechart__tooltip .pt-dir--long{
  background:var(--tint-green-bg);color:var(--green);border:1px solid var(--green-bd);
}
.pricechart__tooltip .pt-dir--short{
  background:var(--tint-red-bg);color:var(--red);border:1px solid var(--red-bd);
}
.pricechart__tooltip .pt-row{
  display:flex;justify-content:space-between;gap:14px;margin-bottom:3px;
}
.pricechart__tooltip .pt-label{
  color:var(--type-mute);font-size:12px;letter-spacing:0.04em;
}
.pricechart__tooltip .pt-value{color:var(--type);font-weight:600;font-size:13px;}
.pricechart__tooltip .pt-thesis{
  margin-top:7px;padding-top:7px;border-top:1px dotted var(--rule);
  color:var(--type);font-size:13px;line-height:1.4;font-family:var(--font-ui);
}
.pricechart__tooltip .pt-foot{
  margin-top:7px;padding-top:7px;border-top:1px dotted var(--rule);
  color:var(--accent);font-size:12px;font-style:italic;
}

/* uPlot theme overrides — pull defaults into PrintRate's dark palette */
.uplot{font-family:var(--font-mono);color:var(--type);}
.uplot, .u-wrap{background:transparent !important;}

/* ── Ticker page — Catalysts banner (Phase 4, 2026-05-27) ─────────── */
/* Strategy: chrome (border + background + icon) signals severity; the
   value text stays bright white for at-a-glance scan. Op-caught the
   amber-on-amber legibility issue during mockup review. */
.catalysts{
  background:linear-gradient(180deg, var(--surface-raised), var(--surface));
  border:1px solid var(--rule);
  padding:14px 18px;
  margin-bottom:22px;
  display:flex;flex-direction:column;gap:10px;
}
.catalysts__header{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
}
.catalysts__title{
  font-family:var(--font-ui);font-size:15px;font-weight:700;
  letter-spacing:0.04em;text-transform:uppercase;color:var(--type);
}
.catalysts__hint{font-family:var(--font-mono);font-size:13px;color:var(--type-mute);}
.catalysts__row{display:flex;flex-wrap:wrap;gap:8px;}
.cat-chip{
  display:inline-flex;align-items:center;gap:8px;
  padding:7px 12px 7px 10px;
  border:1px solid var(--rule);
  background:var(--surface);
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
  transition:border-color 100ms, background 100ms;
}
.cat-chip:hover{border-color:var(--accent-bd);background:var(--accent-glow);}
.cat-chip__icon{font-size:15px;line-height:1;}
.cat-chip__label{
  color:var(--type-mute);font-size:12px;font-weight:600;
  letter-spacing:0.06em;text-transform:uppercase;
}
.cat-chip__value{font-weight:700;color:var(--type);font-size:14px;}
.cat-chip__sub{color:var(--type-mute);font-size:12px;}
.cat-chip--accent{border-color:var(--accent-bd);background:var(--accent-glow);}
.cat-chip--accent .cat-chip__icon{color:var(--accent);}
.cat-chip--warn{border-color:var(--warn-bd);background:var(--tint-warn-bg);}
.cat-chip--warn .cat-chip__icon{color:var(--warn);}
.cat-chip--neg{border-color:var(--red-bd);background:var(--tint-red-bg);}
.cat-chip--neg .cat-chip__icon{color:var(--red);}
.cat-chip--pos{border-color:var(--green-bd);background:var(--tint-green-bg);}
.cat-chip--pos .cat-chip__icon{color:var(--green);}
.cat-chip--imminent{animation:cat-chip-pulse 2s ease-in-out infinite;}
@keyframes cat-chip-pulse{
  0%,100%{box-shadow:0 0 0 0 var(--warn-bd);}
  50%{box-shadow:0 0 0 4px rgba(214,172,107,0.07);}
}

/* ── Ticker page Phase 3 (2026-05-27) — Top Bull/Bear + Concentration ── */
.loudest-row{
  display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:22px;
}
.loudest-card{
  border:1px solid var(--rule);background:var(--surface);
  padding:16px 18px;display:flex;flex-direction:column;gap:10px;
}
.loudest-card--bull{border-left:3px solid var(--green);}
.loudest-card--bear{border-left:3px solid var(--red);}
.loudest-card--empty{opacity:0.6;}
.loudest-card__header{
  font-family:var(--font-ui);font-size:15px;font-weight:700;
  letter-spacing:0.04em;text-transform:uppercase;color:var(--type);
}
.loudest-card__date{color:var(--type-mute);font-weight:500;letter-spacing:0.04em;font-size:13px;font-family:var(--font-mono);}
.loudest-card__analyst{display:flex;align-items:center;gap:10px;}
.loudest-card__analyst .avatar{
  width:32px;height:32px;border-radius:50%;flex-shrink:0;
}
.loudest-card__handle{
  color:var(--type);text-decoration:none;font-weight:600;font-size:15px;
}
.loudest-card__handle:hover{color:var(--accent);}
.loudest-card__edge{
  margin-left:auto;font-family:var(--font-mono);font-size:17px;font-weight:700;
}
.loudest-card__edge.pos{color:var(--green);}
.loudest-card__edge.neg{color:var(--red);}
.loudest-card__thesis{
  margin:0;font-family:var(--font-ui);font-size:14px;
  color:var(--type-mute);line-height:1.45;
}
.loudest-card__empty{color:var(--type-mute);font-size:14px;}
@media (max-width:780px){
  .loudest-row{grid-template-columns:1fr;}
}

/* Short Interest panel (task #7) — settled SI snapshot + call-day flow */
.si-grid{
  display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  background:var(--rule);border:1px solid var(--rule);
}
.si-tile{
  background:var(--surface);padding:14px 16px;
  display:flex;flex-direction:column;gap:6px;
}
.si-tile__label{
  font-family:var(--font-ui);font-size:12px;color:var(--type-dim);
  letter-spacing:0.03em;
}
.si-tile__val{
  font-family:var(--font-mono);font-size:22px;font-weight:700;color:var(--type);
  line-height:1;
}
.si-tile__val.hot{color:var(--red);}
.si-tile__val.warn{color:var(--warn);}
.si-tile__val.pos{color:var(--green);}
.si-tile__val.neg{color:var(--red);}
.si-tile__val.flat{color:var(--type-dim);}
.si-flow{
  padding:12px 16px;font-family:var(--font-ui);font-size:14px;
  color:var(--type-mute);border:1px solid var(--rule);border-top:none;
  background:var(--surface-raised);
}
.si-flow b{color:var(--type);font-family:var(--font-mono);}
.si-flow__n{color:var(--type-dim);}
@media (max-width:780px){
  .si-grid{grid-template-columns:repeat(2,1fr);}
}

.concentration{
  border:1px solid var(--rule);padding:14px 18px;margin-bottom:22px;
  background:var(--surface);
}
.concentration__head{
  display:flex;justify-content:space-between;align-items:baseline;
  gap:14px;flex-wrap:wrap;margin-bottom:10px;
}
.concentration__title{
  font-family:var(--font-ui);font-size:15px;font-weight:700;
  letter-spacing:0.04em;text-transform:uppercase;color:var(--type);
}
.concentration__title em{font-style:normal;color:var(--accent);font-weight:700;}
.concentration__stat{
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
}
.concentration__track{
  height:8px;background:var(--surface-raised);border:1px solid var(--rule);
  overflow:hidden;
}
.concentration__bar{height:100%;transition:width 200ms ease-out;}
.concentration__bar--high{background:var(--warn);}
.concentration__bar--mid{background:var(--accent);}
.concentration__bar--low{background:var(--green);}
.concentration__handles{
  margin:10px 0 0;font-family:var(--font-mono);font-size:13px;
  color:var(--type-mute);
}
.concentration__handles a{color:var(--type-mute);text-decoration:none;}
.concentration__handles a:hover{color:var(--accent);}

/* ── Feed panel — clickable timestamp opens the original tweet ───── */
.feed-tweet-link{
  display:inline-flex;align-items:center;gap:5px;
  color:var(--accent);
  text-decoration:underline;
  text-decoration-color:var(--accent-bd);
  text-underline-offset:3px;
  font-family:var(--font-mono);font-size:13px;
  transition:color 100ms, text-decoration-color 100ms;
}
.feed-tweet-link:hover{
  color:var(--accent);
  text-decoration-color:var(--accent);
  filter:brightness(1.1);
}
.feed-tweet-link__arrow{
  font-size:11px;color:var(--accent);opacity:0.75;
}
.feed-tweet-link:hover .feed-tweet-link__arrow{opacity:1;}

.wordmark{display:flex;align-items:center;gap:7px;margin-bottom:6px;}
.wordmark__icon{flex-shrink:0;}
:root:not([data-theme]) .wordmark__icon--light,
[data-theme="dark"] .wordmark__icon--light{display:none !important;}
[data-theme="light"] .wordmark__icon--dark{display:none !important;}
[data-theme="light"] .wordmark__icon--light{display:inline-block !important;}
.wordmark__pre{font-family:var(--font-mono);font-weight:700;font-size:14px;letter-spacing:0.18em;color:var(--accent);text-transform:uppercase;}
.wordmark__slash{font-family:var(--font-mono);color:var(--type-dim);font-size:18px;font-weight:300;line-height:1;}
.wordmark__page{font-family:var(--font-edit);font-style:italic;font-weight:500;font-size:22px;color:var(--type);letter-spacing:-0.005em;line-height:1;}
.rail-live{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:11px;color:var(--green);padding:2px 7px;border:1px solid var(--tint-green-bd);background:var(--tint-green-bg);}
.rail-live__dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:pulse 1.5s ease-in-out infinite;}
@keyframes pulse{0%,100%{opacity:1;}50%{opacity:.4;}}
.rail-section{padding:8px 18px 4px;font-family:var(--font-mono);font-size:10px;font-weight:600;color:var(--type-dim);text-transform:uppercase;letter-spacing:0.14em;margin-top:4px;}
.rail-nav{list-style:none;padding:0 8px;}
.rail-nav li a{display:flex;align-items:center;gap:10px;padding:8px 10px;text-decoration:none;color:var(--type-mute);font-size:14px;font-weight:500;transition:color 100ms,background 100ms;border-left:2px solid transparent;}
.rail-nav li a:hover{color:var(--type);background:var(--surface-raised);}
.rail-nav li a.active{color:var(--accent);background:var(--accent-glow);border-left-color:var(--accent);}
.rail-nav .icon{font-size:15px;width:18px;text-align:center;flex-shrink:0;}
.rail-foot{margin-top:auto;padding:12px 18px;border-top:1px solid var(--rule);font-family:var(--font-mono);font-size:10px;color:var(--type-dim);line-height:1.6;}

/* ── Main column + top bar ─────────────────────────────────────────── */
.main{flex:1;display:flex;flex-direction:column;min-width:0;position:relative;z-index:1;}
.topbar{height:52px;background:var(--surface);border-bottom:1px solid var(--rule);display:flex;align-items:center;padding:0 24px;gap:16px;position:sticky;top:0;z-index:9;}
.topbar-search{flex:1;max-width:480px;background:var(--surface-raised);border:1px solid var(--rule);display:flex;align-items:center;gap:8px;padding:0 12px;height:34px;}
.topbar-search__icon{color:var(--type-dim);font-size:13px;}
.topbar-search__input{background:transparent;border:none;outline:none;font-family:var(--font-mono);font-size:13px;color:var(--type);flex:1;}
.topbar-search__input::placeholder{color:var(--type-dim);}
.topbar-search__kbd{font-family:var(--font-mono);font-size:10px;color:var(--type-dim);border:1px solid var(--rule);padding:1px 5px;}
.topbar-search__menu{position:absolute;top:100%;left:0;right:0;margin-top:2px;background:var(--surface);border:1px solid var(--rule);box-shadow:0 8px 24px rgba(0,0,0,0.35);z-index:50;max-height:340px;overflow-y:auto;}
.topbar-search__item{display:flex;align-items:center;gap:10px;padding:8px 12px;color:var(--type);text-decoration:none;font-family:var(--font-mono);font-size:13px;border-bottom:1px dotted var(--rule);}
.topbar-search__item:last-child{border-bottom:none;}
.topbar-search__item.is-active,.topbar-search__item:hover{background:var(--surface-raised);}
.topbar-search__item.is-active{color:var(--accent);}
.topbar-search__kind{font-family:var(--font-mono);font-size:9px;font-weight:700;letter-spacing:0.10em;padding:2px 6px;border:1px solid;min-width:44px;text-align:center;flex-shrink:0;}
.topbar-search__kind--account{color:var(--accent);border-color:var(--accent-bd);background:var(--accent-glow);}
.topbar-search__kind--ticker{color:var(--warn);border-color:rgba(214,172,107,0.35);background:rgba(214,172,107,0.08);}
.topbar-search__kind--fund{color:var(--gold,#F2C66B);border-color:rgba(242,198,107,0.40);background:rgba(242,198,107,0.10);}
.topbar-search__label{font-weight:500;flex-shrink:0;}
.topbar-search__media{width:20px;height:20px;border-radius:4px;object-fit:contain;background:var(--surface-raised);flex:0 0 20px;}
.topbar-search__media--pfp{border-radius:50%;object-fit:cover;}
.topbar-search__media--blank{display:inline-block;background:transparent;}
.topbar-search__company{color:var(--type-dim);font-family:var(--font-sans);font-weight:400;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.topbar-search__item.is-active .topbar-search__company{color:var(--type-mute);}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px;}
.topbar-badge{display:flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:12px;color:var(--warn);border:1px solid rgba(214,172,107,0.3);padding:3px 9px;}
.topbar-badge__dot{width:6px;height:6px;border-radius:50%;background:var(--warn);}
.topbar-live{display:flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:12px;color:var(--green);border:1px solid var(--tint-green-bd);background:var(--tint-green-bg);padding:3px 9px;}
.topbar-live__dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:pulse 1.5s ease-in-out infinite;}
.topbar-avatar{width:30px;height:30px;border-radius:50%;background:var(--accent-glow);border:1px solid var(--accent);display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:11px;color:var(--accent);overflow:hidden;}
.topbar-avatar--img{padding:0;}

/* User menu — <details> dropdown over the topbar avatar */
.user-menu{position:relative;}
.user-menu__trigger{cursor:pointer;list-style:none;display:inline-flex;align-items:center;}
.user-menu__trigger::-webkit-details-marker{display:none;}
.user-menu__trigger:hover .topbar-avatar{border-color:var(--accent);filter:brightness(1.1);}
.user-menu__panel{
  position:absolute;
  top:calc(100% + 8px);
  right:0;
  min-width:220px;
  background:var(--surface);
  border:1px solid var(--rule);
  box-shadow:0 8px 24px rgba(0,0,0,0.35);
  z-index:60;
  padding:0;
}
.user-menu__header{padding:12px 14px;border-bottom:1px solid var(--rule);}
.user-menu__name{font-family:var(--font-ui);font-size:14px;font-weight:600;color:var(--type);}
.user-menu__email{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);margin-top:3px;word-break:break-all;}
.user-menu__item{display:block;padding:11px 16px;font-family:var(--font-mono);font-size:13px;font-weight:600;letter-spacing:0.06em;color:var(--type-mute);text-decoration:none;text-transform:uppercase;transition:color 100ms, background 100ms;}
.user-menu__item:hover{color:var(--accent);background:var(--surface-raised);}

/* ── Page header + section primitives ──────────────────────────────── */
.content{padding:28px 28px 48px;flex:1;}
.page-header{margin-bottom:22px;}
.page-header__top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:4px;}
.page-title{font-family:var(--font-edit);font-style:italic;font-weight:500;font-size:30px;color:var(--type);letter-spacing:-0.005em;line-height:1.1;}
.page-subtitle{font-size:15px;color:var(--type-mute);margin-top:4px;}
.page-header__badges{display:flex;gap:8px;align-items:center;}
.badge{display:inline-flex;align-items:center;gap:5px;font-family:var(--font-mono);font-size:13px;padding:4px 10px;border:1px solid;}
.badge--accent{color:var(--accent);border-color:var(--accent-bd);background:var(--accent-glow);}
.badge--warn{color:var(--warn);border-color:rgba(214,172,107,0.35);background:rgba(214,172,107,0.08);}

/* ── KPI row ───────────────────────────────────────────────────────── */
.kpi-row{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--rule);border:1px solid var(--rule);margin-bottom:24px;}
.kpi-card{background:var(--surface);padding:18px 18px 16px;display:flex;flex-direction:column;gap:5px;}
.kpi-card__icon{width:30px;height:30px;background:var(--accent-glow);border:1px solid var(--accent-bd-soft);display:flex;align-items:center;justify-content:center;font-size:14px;margin-bottom:4px;}
.kpi-card__icon--red{background:var(--tint-red-bg);border-color:var(--tint-red-bd);}
.kpi-card__icon--green{background:var(--tint-green-bg);border-color:var(--tint-green-bd);}
.kpi-card__icon--warn{background:rgba(214,172,107,0.08);border-color:rgba(214,172,107,0.28);}
.kpi-value{font-family:var(--font-mono);font-size:32px;font-weight:700;line-height:1;letter-spacing:-0.02em;color:var(--type);}
.kpi-value--green{color:var(--green);}
.kpi-value--red{color:var(--red);}
.kpi-value--accent{color:var(--accent);}
.kpi-label{font-family:var(--font-mono);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:0.10em;color:var(--type-mute);}
.kpi-caption{font-family:var(--font-mono);font-size:13px;color:var(--type-mute);}

/* ── Panel primitives (used by every page) ─────────────────────────── */
.panel{background:var(--surface);}
.panel-header{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--rule);}
.panel-title{font-family:var(--font-ui);font-size:15px;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;color:var(--type);}
.panel-action{font-family:var(--font-mono);font-size:13px;color:var(--accent);text-decoration:none;letter-spacing:0.04em;}
.panel-action:hover{text-decoration:underline;}
.sec-h{font-family:var(--font-ui);font-size:15px;font-weight:700;text-transform:uppercase;letter-spacing:0.04em;color:var(--type);margin-bottom:12px;margin-top:0;}

/* ── Avatars + chips + stance pills (used everywhere) ──────────────── */
.avatar{width:26px;height:26px;border-radius:50%;background:var(--surface-raised);border:1px solid var(--rule);display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--type-mute);flex-shrink:0;}
img.avatar,img.avatar-lg,img.profile-avatar{object-fit:cover;background:var(--surface-raised);}
.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid var(--rule);background:var(--surface-raised);font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--type);text-decoration:none;transition:border-color 100ms,color 100ms;}
.chip:hover{border-color:var(--accent);color:var(--accent);}
.chip__dot{width:5px;height:5px;border-radius:50%;background:var(--accent);}
.chip__dot--warn{background:var(--warn);}
.chip__dot--info{background:var(--info);}
.stance{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;font-family:var(--font-mono);font-size:12px;font-weight:600;border:1px solid;border-radius:2px;}
.stance--bull{color:var(--green);border-color:var(--tint-green-bd);background:var(--tint-green-bg);}
.stance--bear{color:var(--red);border-color:var(--tint-red-bd);background:var(--tint-red-bg);}
.stance--neut{color:var(--type-mute);border-color:var(--rule);background:transparent;}
.verdict{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;font-family:var(--font-mono);font-size:12px;font-weight:700;border:1px solid;letter-spacing:0.06em;}
.verdict--follow{color:var(--green);border-color:var(--tint-green-bd);background:var(--tint-green-bg);}
.verdict--fade{color:var(--red);border-color:var(--tint-red-bd);background:var(--tint-red-bg);}
.verdict--measuring{color:var(--type-dim);border-color:var(--rule);background:transparent;font-weight:400;}

/* ── Tables (shared base) ──────────────────────────────────────────── */
.data-table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:14px;font-variant-numeric:tabular-nums;}
.data-table th{padding:10px 14px;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:0.10em;color:var(--type-mute);text-align:left;border-bottom:1px dotted var(--rule-bold);}
.data-table th.right{text-align:right;}
.data-table td{padding:11px 14px;border-bottom:1px dotted var(--rule);color:var(--type);vertical-align:middle;}
.data-table td.right{text-align:right;}
.data-table tr:hover td{background:var(--surface-raised);}
.data-table tr:last-child td{border-bottom:none;}
.analyst-cell{display:flex;align-items:center;gap:8px;white-space:nowrap;}
.analyst-name a{color:var(--type);text-decoration:none;font-weight:500;}
.analyst-name a:hover{color:var(--accent);}

/* ── Signal badges (insider div / retail spike / 8-K / hot / news) ─── */
.sig-badges{display:flex;gap:4px;flex-wrap:wrap;margin-top:6px;}
.sig-badge{display:inline-flex;align-items:center;gap:4px;font-family:var(--font-mono);font-size:12px;font-weight:600;padding:3px 7px;border:1px solid;letter-spacing:0.05em;}
.sig-badge--insider{color:#C86DD6;border-color:rgba(200,109,214,0.35);background:rgba(200,109,214,0.08);}
[data-theme="light"] .sig-badge--insider{color:#8639A6;border-color:rgba(134,57,166,0.35);background:rgba(134,57,166,0.08);}
.sig-badge--retail{color:var(--info);border-color:var(--accent-bd);background:var(--accent-glow);}
.sig-badge--8k{color:var(--warn);border-color:rgba(214,172,107,0.35);background:rgba(214,172,107,0.08);}
.sig-badge--hot{color:var(--accent);border-color:var(--accent-bd);background:var(--accent-glow);}
.sig-badge--news{color:var(--green);border-color:var(--tint-green-bd);background:var(--tint-green-bg);}
.sig-badge--info{color:var(--info);border-color:var(--accent-bd);background:var(--accent-glow);}
.sig-badge--warn{color:var(--warn);border-color:rgba(214,172,107,0.35);background:rgba(214,172,107,0.08);}
.sig-badge--green{color:var(--green);border-color:var(--tint-green-bd);background:var(--tint-green-bg);}

/* ── Dashboard panels — leaderboard + asset list + flips ───────────── */
.analyst-leaderboard{padding:12px 16px;display:flex;flex-direction:column;gap:11px;}
.al-item{display:flex;align-items:center;gap:10px;}
.al-rank{font-family:var(--font-mono);font-size:13px;color:var(--type-mute);width:20px;flex-shrink:0;font-weight:600;}
.al-info{flex:1;min-width:0;}
.al-name{font-family:var(--font-ui);font-weight:600;font-size:15px;color:var(--type);line-height:1.2;}
.al-handle{font-family:var(--font-mono);font-size:13px;color:var(--type-mute);margin-top:3px;}
.al-return{font-family:var(--font-mono);font-size:15px;font-weight:700;line-height:1;}
.al-return--pos{color:var(--green);}
.al-return--neg{color:var(--red);}
.al-return--flat{color:var(--type-mute);}

.asset-item{display:flex;align-items:center;gap:10px;padding:9px 16px;border-bottom:1px dotted var(--rule);}
.asset-item:last-child{border-bottom:none;}
.asset-item:hover{background:var(--surface-raised);}
.asset-item__stats{margin-left:auto;text-align:right;display:flex;flex-direction:column;gap:3px;font-family:var(--font-mono);font-size:14px;font-weight:600;line-height:1.1;}
.asset-stat--pos{color:var(--green);}
.asset-stat--neg{color:var(--red);}
.sentiment-bar{width:80px;height:5px;background:var(--rule);margin-top:4px;display:flex;}
.sentiment-bar__bull{height:100%;background:var(--green);}
.sentiment-bar__bear{height:100%;background:var(--red);}

.flip-list{padding:0;}
.flip-item{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px dotted var(--rule);}
.flip-item:last-child{border-bottom:none;}
.flip-item:hover{background:var(--surface-raised);}
.flip-account__name{font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--type);}
.flip-arrow{color:var(--type-mute);font-size:14px;flex-shrink:0;}
.flip-time{margin-left:auto;font-family:var(--font-mono);font-size:13px;color:var(--type-mute);}

.conf-bar{display:flex;align-items:center;gap:7px;}
.conf-bar__track{width:60px;height:5px;background:var(--rule);}
.conf-bar__fill{height:100%;background:var(--accent);}
.conf-bar__num{font-family:var(--font-mono);font-size:13px;color:var(--type-mute);}

/* ── Conviction cards (shared — daily card + market scope) ──────────── */
.conviction-cards{padding:14px 16px;display:flex;flex-direction:column;gap:10px;}
.conviction-card{border:1px solid var(--rule);background:var(--surface-raised);padding:12px 14px;}
.conviction-card__quote{font-family:var(--font-edit);font-style:italic;font-size:16px;color:var(--type);line-height:1.5;margin-bottom:10px;}
.conviction-card__meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.conviction-card__handle{font-family:var(--font-mono);font-size:14px;font-weight:600;color:var(--type);}
.conviction-card__time{font-family:var(--font-mono);font-size:13px;color:var(--type-mute);margin-left:auto;}

/* ── Narrow viewport — collapse the rail + scroll wide tables ─────── */
@media (max-width: 900px) {
  .rail{width:64px;min-width:64px;}
  .rail-brand{padding:14px 8px;}
  .rail-brand .wordmark__slash,.rail-brand .wordmark__page,.rail-brand .rail-live{display:none;}
  .rail-section,.rail-nav li a span:not(.icon){display:none;}
  .rail-nav li a{justify-content:center;padding:10px 6px;}
  .rail-foot{display:none;}
}
@media (max-width: 600px) {
  .rail{width:48px;min-width:48px;}
  .content{padding:16px 12px 32px;}
  .kpi-row{grid-template-columns:1fr 1fr;}
}
/* Always wrap data tables in horizontal scroll on narrow viewports */
@media (max-width: 1100px) {
  .panel table.data-table{display:block;overflow-x:auto;}
}

/* ── Empty / placeholder states ────────────────────────────────────── */
.empty-state{padding:24px;color:var(--type-mute);font-family:var(--font-edit);font-style:italic;text-align:center;font-size:15px;}
.placeholder-banner{padding:18px 24px;border:1px dashed var(--rule);background:var(--surface);color:var(--type-mute);font-family:var(--font-mono);font-size:12px;text-align:center;letter-spacing:0.08em;text-transform:uppercase;}

/* ── Horizon toggle (1d/5d/21d/now) ─────────────────────────────────── */
.horizon-toggle{
  display:inline-flex;
  border:1px solid var(--rule);
  border-radius:0;
  overflow:hidden;
  font-family:var(--font-mono);
  font-size:13px;
}
.horizon-toggle__btn{
  display:inline-block;
  padding:7px 16px;
  color:var(--type-mute);
  text-decoration:none;
  letter-spacing:0.06em;
  text-transform:uppercase;
  background:var(--surface);
  border-right:1px solid var(--rule);
  transition:background 80ms, color 80ms;
}
.horizon-toggle__btn:last-child{border-right:0;}
.horizon-toggle__btn:hover{color:var(--type);background:var(--surface-raised);}
.horizon-toggle__btn.is-active{
  color:var(--bg);
  background:var(--accent);
  font-weight:600;
}

/* ── Mobile burger nav ──────────────────────────────────────────────── */
/* Default state (≥900px): burger hidden, rail in normal flow. */
.rail-toggle__input{display:none;}
.rail-toggle__btn{display:none;}
.rail-backdrop{display:none;}

@media (max-width: 900px) {
  /* Override the icons-only collapse from the earlier mobile rule —
     we're using an off-canvas drawer instead. */
  .rail{
    position:fixed;
    top:0;left:0;bottom:0;
    width:240px;min-width:240px;
    transform:translateX(-100%);
    transition:transform 180ms ease-out;
    z-index:100;
    box-shadow:2px 0 12px rgba(0,0,0,0.4);
  }
  .rail-brand{padding:18px 14px;}
  .rail-brand .wordmark__slash,
  .rail-brand .wordmark__page,
  .rail-brand .rail-live{display:inline;}
  .rail-section,.rail-nav li a span:not(.icon){display:inline;}
  .rail-nav li a{justify-content:flex-start;padding:8px 16px;}
  .rail-foot{display:block;}
  /* Open state via :checked sibling — toggled by the burger button. */
  #rail-toggle:checked ~ .main .rail-toggle__btn{display:none;}
  #rail-toggle:checked ~ .main .rail{transform:translateX(0);}
  /* Generic sibling: when checked, slide rail in (find rail anywhere). */
  body:has(#rail-toggle:checked) .rail{transform:translateX(0);}
  body:has(#rail-toggle:checked) .rail-backdrop{
    display:block;
    position:fixed;
    inset:0;
    background:rgba(0,0,0,0.5);
    z-index:99;
    cursor:pointer;
  }
  /* Burger button itself */
  .rail-toggle__btn{
    display:inline-flex;
    flex-direction:column;
    justify-content:center;
    gap:4px;
    width:32px;height:32px;
    padding:0 6px;
    cursor:pointer;
    background:transparent;
    border:0;
    margin-right:8px;
  }
  .rail-toggle__btn span{
    display:block;
    width:20px;height:2px;
    background:var(--type);
    border-radius:1px;
  }
  /* Topbar: nudge the search left so burger has room. Keep the search
     visible on mobile (op req 2026-06-03) but let it flex-fill and drop
     the ⌘K hint — there's no keyboard shortcut on touch. min-width:0 on
     the input lets it shrink past its long placeholder. */
  .topbar{padding-left:8px;}
  .topbar-search{flex:1;min-width:0;max-width:none;}
  .topbar-search__input{min-width:0;}
  .topbar-search__kbd{display:none;}
  .content{padding:16px 12px 32px;}
  .main{margin-left:0;}
}

/* The earlier "rail{width:48px}" override at 600px is now redundant —
   our 900px rule already swaps to off-canvas. Override it to noop so
   it doesn't fight us. */
@media (max-width: 600px) {
  .rail{width:240px;min-width:240px;}
}

/* ── Mobile layout sweep (≤700px) ───────────────────────────────────── */
@media (max-width: 700px) {
  /* Page header — tighter spacing, smaller subtitle */
  .page-header{padding-bottom:14px;margin-bottom:14px;}
  .page-title{font-size:24px;line-height:1.2;}
  .page-subtitle{font-size:13px;}

  /* KPI tiles: force one column (was 2-col grid which orphaned the 5th tile) */
  .kpi-row{grid-template-columns:1fr;gap:8px;}
  .kpi-tile{padding:14px 16px;}

  /* Stat row (per-horizon tiles, perf block) → 2 columns max */
  .stat-row{grid-template-columns:1fr 1fr;gap:6px;}
  .stat-tile{padding:10px 12px;}
  .stat-tile__value{font-size:20px;}
  .stat-tile__label{font-size:10px;}
  .stat-tile__note{font-size:10px;}

  /* Any inline grid with > 1 column → stack on mobile.
     Covers the v2 dashboard's .two-col (1fr 360px), .bottom-row (1fr 1fr 1fr),
     and the per-page sub-grids on profile / scorecard / ticker. */
  div[style*="grid-template-columns:1fr 1fr"],
  div[style*="grid-template-columns:1fr 1fr 1fr"],
  div[style*="grid-template-columns: 1fr 1fr"],
  div[style*="grid-template-columns: 1fr 1fr 1fr"],
  div[style*="grid-template-columns:1fr 360px"],
  div[style*="grid-template-columns: 1fr 360px"],
  .two-col,
  .bottom-row,
  .three-col{
    grid-template-columns:1fr !important;
  }

  /* Panel headers: smaller, allow wrap */
  .panel-header{padding:10px 14px;}
  .panel-title{font-size:13px;}
  .sec-h{font-size:11px;letter-spacing:0.08em;}

  /* Data tables: horizontal scroll lives on the .panel (the block-level
     parent), NOT on the table itself. Setting display:block on a <table>
     destroys thead positioning — Recent Signals had its header rendering
     inline with the body rows on phones (op-caught 2026-05-27). Keeping
     the table as display:table preserves thead-on-top while the .panel
     scrolls horizontally when the row exceeds viewport width. */
  .panel:has(table.data-table){
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:thin;
  }
  .panel table.data-table,
  .data-table{
    width:max-content;
    min-width:100%;
    white-space:nowrap;
  }
  /* Explicitly restore thead-above-tbody ordering inside overflow-x panels.
     overflow-x:auto on the parent creates a containing block that can cause
     thead to render after the first tbody row on mobile WebKit. */
  .data-table thead{display:table-header-group;}
  .data-table tbody{display:table-row-group;}
  .data-table th,.data-table td{
    padding:6px 10px;
    font-size:12px;
  }
  /* Scrollable panel: visual hint that there's more right of viewport */
  .panel{position:relative;}
  .panel:has(table.data-table)::after{
    content:"";
    position:absolute;
    top:50px;right:0;bottom:0;
    width:20px;
    background:linear-gradient(to right,transparent,var(--surface));
    pointer-events:none;
  }

  /* Profile header strip: stack avatar + info + status */
  .profile-strip{flex-wrap:wrap;gap:10px;padding:14px;}
  .profile-avatar{width:48px;height:48px;}
  .profile-info{min-width:0;flex:1 1 100%;}
  .profile-name{font-size:18px;}
  .profile-handle{font-size:12px;}
  .profile-status{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}

  /* Horizon toggle: full-width row, equal-distribute buttons */
  .horizon-toggle{display:flex;width:100%;}
  .horizon-toggle__btn{flex:1;text-align:center;padding:8px 0;}

  /* Topbar elements that aren't critical: hide live indicator on phones */
  .topbar-live{display:none;}
  .topbar-right{gap:6px;}

  /* Conviction cards / story rows: stack any side-by-side */
  .conviction-card,.story-card{
    display:block;
  }

  /* Activity sparkline doesn't make sense at narrow widths */
  .activity-sparkline{max-width:100%;overflow:hidden;}

  /* Common-tickers + side-by-side stats on compare: already vertical via earlier rule */

  /* Filter pills, tag pickers: wider hit area */
  .tp-tag,.tp-menu__item{padding:6px 8px;}
  .tp-input{font-size:14px;}
}

/* ── Very small phones (≤390px iPhone-mini etc.) ─────────────────────── */
@media (max-width: 420px) {
  .page-title{font-size:20px;}
  .stat-tile__value{font-size:17px;}
  .data-table th,.data-table td{padding:5px 8px;font-size:11px;}
  .content{padding:12px 8px 32px;}
  .panel{margin-left:-2px;margin-right:-2px;}
}

/* ── Shared stat-tile (per-horizon strips on profile + scorecard) ────── */
.stat-row{
  display:grid;
  grid-template-columns:repeat(4,1fr);
  gap:1px;
  background:var(--rule);
  border:1px solid var(--rule);
}
.stat-tile{
  background:var(--surface);
  padding:14px 18px;
}
.stat-tile__value{
  font-family:var(--font-mono);
  font-size:22px;
  font-weight:600;
  letter-spacing:0.02em;
  line-height:1.2;
}
.stat-tile__label{
  font-family:var(--font-mono);
  font-size:13px;
  color:var(--type-mute);
  text-transform:uppercase;
  letter-spacing:0.08em;
  margin-top:5px;
}
.stat-tile__note{
  font-size:13px;
  color:var(--type-mute);
  font-family:var(--font-mono);
  margin-top:7px;
}

/* ── P1 audit polish (2026-05-24) ──────────────────────────────────── */

/* Sticky table header — opt-in only via .data-table--sticky class.
   The old global rule was moved off .panel because short-list tables
   (admin backfill active-queue, recent-jobs) showed the header floating
   mid-table on scroll. Feed uses .feed-table-wrap for its own sticky. */
.data-table--sticky thead th{
  position:sticky;
  top:52px;
  background:var(--surface);
  z-index:2;
}

/* Light-theme topbar toggle — bump contrast (P1 design audit). */
[data-theme="light"] .theme-toggle{
  color:var(--type);
  border-color:var(--rule-bold);
}

/* Compare-page page-title overflow guard (long handle pairs wrap to 3 lines
   in the rail; clip the wordmark slot at 18ch). */
.wordmark__page{
  display:inline-block;
  max-width:18ch;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  vertical-align:bottom;
}

/* ── P2 design polish (audit 2026-05-24) ──────────────────────────── */

/* Mobile KPI rule was targeting .kpi-tile but home actually emits
   .kpi-card. Map both so the mobile 1-col stack applies. */
@media (max-width: 700px) {
  .kpi-card{padding:14px 16px;}
}

/* Compare-page panel-header — let title + segmented control reflow
   onto separate lines on phones instead of colliding. */
@media (max-width: 700px) {
  .panel-header{flex-wrap:wrap;gap:8px;}
}

/* Light-theme italic conviction quotes — bump from --type-mute to
   --type so they don't wash out on cream backgrounds. */
[data-theme="light"] .conviction-card__quote,
[data-theme="light"] blockquote.italic,
[data-theme="light"] em.thesis,
[data-theme="light"] .pw-card__subtext{
  color:var(--type);
}

/* Hide the rail-drawer's "Live" pill on mobile — the topbar one already
   shows the same indicator, dup is visual noise. */
@media (max-width: 900px) {
  .rail .rail-live{display:none;}
}

/* Stat-tile active border — switch to inset box-shadow so the accent
   doesn't double up against the grid gap. */
.stat-tile{position:relative;}

/* Scorecard date column min-width — keep dates on one line. */
.analysts-table-wrap .data-table td:nth-child(3),
.analysts-table-wrap .data-table th:nth-child(3){
  min-width:88px;
  white-space:nowrap;
}

/* Avatar shape — pill → 4px rounded squares (matches the terminal
   language of cards/buttons/tiles, audit P2 visual cohesion). */
.avatar,
.profile-avatar,
.topbar-avatar,
.tp-tag__avatar,
.tp-menu__avatar{
  border-radius:4px;
}
/* The topbar trigger is already a circle by spec; leave it. */
.user-menu__trigger .topbar-avatar{border-radius:50%;}

/* ── Dashboard · Editorial Daily Brief (2026-05-27 redesign) ──────────
   Replaces the 4-panel summary layout with hero + status + loudest +
   silence + crossings + curated feed + hot tickers + conviction surges.
   Mockup: static/mockups/dashboard_v2_2026_05_27.html */
.db-hero{
  background:linear-gradient(180deg, var(--surface-raised), var(--surface));
  border:1px solid var(--rule);padding:22px 26px;margin-bottom:18px;
  display:grid;grid-template-columns:1fr auto;gap:22px;align-items:center;
}
.db-hero__greet{
  font-family:var(--font-mono);font-size:13px;letter-spacing:0.10em;
  text-transform:uppercase;color:var(--type-mute);margin-bottom:8px;
}
.db-hero__h1{
  font-family:var(--font-edit);font-style:italic;font-size:32px;font-weight:500;
  letter-spacing:-0.005em;color:var(--type);line-height:1.15;margin:0 0 8px;
}
.db-hero__sub{
  font-family:var(--font-mono);font-size:14px;color:var(--type-mute);
  line-height:1.5;
}
.db-hero__pulse{
  display:flex;align-items:center;gap:18px;
  padding:14px 18px;background:var(--surface);
  border:1px solid var(--rule);
}
.db-pulse__item{display:flex;flex-direction:column;align-items:center;gap:4px;}
.db-pulse__n{
  font-family:var(--font-mono);font-size:26px;font-weight:700;
  color:var(--type);line-height:1;
}
.db-pulse__n--accent{color:var(--accent);}
.db-pulse__n--green{color:var(--green);}
.db-pulse__n--warn{color:var(--warn);}
.db-pulse__l{
  font-family:var(--font-mono);font-size:11px;letter-spacing:0.10em;
  text-transform:uppercase;color:var(--type-mute);
}
.db-pulse__sep{width:1px;height:32px;background:var(--rule);}
@media (max-width:880px){
  .db-hero{grid-template-columns:1fr;}
  .db-hero__pulse{justify-content:space-between;}
}

.db-status{
  background:linear-gradient(180deg, var(--surface-raised), var(--surface));
  border:1px solid var(--rule);padding:14px 18px;margin-bottom:18px;
  display:flex;flex-direction:column;gap:10px;
}
.db-status__head{
  display:flex;align-items:center;justify-content:space-between;gap:14px;
}
.db-status__title{
  font-family:var(--font-ui);font-size:15px;font-weight:700;
  letter-spacing:0.04em;text-transform:uppercase;color:var(--type);
}
.db-status__row{display:flex;flex-wrap:wrap;gap:8px;}

.db-loudest-row{
  display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px;
}
.db-loudest{
  background:var(--surface);border:1px solid var(--rule);
  padding:18px 22px;display:flex;flex-direction:column;gap:12px;
  border-left:3px solid var(--rule);
}
.db-loudest--bull{border-left-color:var(--green);}
.db-loudest--bear{border-left-color:var(--red);}
.db-loudest--empty{opacity:0.6;}
.db-loudest__head{
  display:flex;justify-content:space-between;align-items:baseline;
  font-family:var(--font-ui);font-size:15px;font-weight:700;
  letter-spacing:0.04em;text-transform:uppercase;color:var(--type);
}
.db-loudest__when{
  font-family:var(--font-mono);font-size:13px;font-weight:500;
  letter-spacing:0.04em;color:var(--type-mute);
}
.db-loudest__row{display:flex;align-items:center;gap:12px;}
.db-loudest__avatar{
  width:44px;height:44px;border-radius:50%;flex-shrink:0;
  border:1px solid var(--accent-bd);background:var(--accent-glow);
  object-fit:cover;
}
.db-loudest__handle{
  font-family:var(--font-ui);font-weight:700;font-size:17px;color:var(--type);
}
.db-loudest__meta{
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);margin-top:3px;
}
.db-loudest__call{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  padding-top:10px;border-top:1px dotted var(--rule);
}
.db-loudest__ticker{
  font-family:var(--font-mono);font-size:24px;font-weight:700;color:var(--type);
  text-decoration:none;
}
.db-loudest__ticker:hover{color:var(--accent);}
.db-loudest__dir{
  font-family:var(--font-mono);font-size:14px;font-weight:700;
  letter-spacing:0.08em;padding:4px 12px;border:1px solid;
}
.db-loudest--bull .db-loudest__dir{
  color:var(--green);background:var(--tint-green-bg);border-color:var(--green-bd);
}
.db-loudest--bear .db-loudest__dir{
  color:var(--red);background:var(--tint-red-bg);border-color:var(--red-bd);
}
.db-loudest__ct{
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
  letter-spacing:0.04em;
}
.db-loudest__thesis{
  margin:0;font-family:var(--font-ui);font-size:15px;line-height:1.45;
  color:var(--type);
}
@media (max-width:780px){.db-loudest-row{grid-template-columns:1fr;}}

.db-split{
  display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px;
}
@media (max-width:880px){.db-split{grid-template-columns:1fr;}}

/* Silence rows */
.db-sil-row{
  display:grid;grid-template-columns:auto 1fr auto;gap:12px;
  align-items:center;padding:11px 14px;border-bottom:1px dotted var(--rule);
}
.db-sil-row:last-child{border-bottom:none;}
.db-sil-row:hover{background:var(--surface-raised);}
.db-sil__tkwrap{display:flex;align-items:center;gap:8px;}
.db-sil__tk{
  font-family:var(--font-mono);font-size:15px;font-weight:700;
  color:var(--type);text-decoration:none;
}
.db-sil__tk:hover{color:var(--accent);}
.db-sil__hl{
  font-family:var(--font-ui);font-size:14px;color:var(--type);line-height:1.4;
}
.db-sil__hl small{color:var(--type-mute);font-family:var(--font-mono);font-size:12px;}
.db-sil__badge{
  font-family:var(--font-mono);font-size:11px;font-weight:700;
  letter-spacing:0.10em;color:var(--warn);
  border:1px solid var(--warn-bd);padding:3px 8px;white-space:nowrap;
}

/* Crossings + Surges (shared layout) */
.db-cross-row{
  display:grid;grid-template-columns:auto 1fr auto;gap:12px;
  align-items:center;padding:11px 14px;border-bottom:1px dotted var(--rule);
}
.db-cross-row:last-child{border-bottom:none;}
.db-cross-row:hover{background:var(--surface-raised);}
.db-cross__avatar{
  width:32px;height:32px;border-radius:50%;flex-shrink:0;
  border:1px solid var(--accent-bd);background:var(--accent-glow);
  object-fit:cover;
}
.db-cross__handle{
  font-family:var(--font-ui);font-size:15px;font-weight:600;
  color:var(--type);text-decoration:none;
}
.db-cross__handle:hover{color:var(--accent);}
.db-cross__sub{
  font-family:var(--font-mono);font-size:12px;color:var(--type-mute);margin-top:3px;
}

/* Hot tickers */
.db-hot-row{
  display:grid;grid-template-columns:auto 1fr auto auto;gap:12px;
  align-items:center;padding:11px 14px;border-bottom:1px dotted var(--rule);
}
.db-hot-row:last-child{border-bottom:none;}
.db-hot-row:hover{background:var(--surface-raised);}
.db-hot__tkwrap{display:flex;align-items:center;gap:8px;}
.db-hot__tk{
  font-family:var(--font-mono);font-size:15px;font-weight:700;
  color:var(--type);text-decoration:none;
}
.db-hot__tk:hover{color:var(--accent);}
.db-hot__n{
  font-family:var(--font-mono);font-size:14px;color:var(--type);font-weight:600;
}
.db-hot__delta{
  font-family:var(--font-mono);font-size:12px;font-weight:600;
  letter-spacing:0.04em;padding:3px 8px;border:1px solid;
}
.db-hot__delta--bull{color:var(--green);background:var(--tint-green-bg);border-color:var(--green-bd);}
.db-hot__delta--bear{color:var(--red);background:var(--tint-red-bg);border-color:var(--red-bd);}
.db-hot__delta--mixed{color:var(--type-mute);background:transparent;border-color:var(--rule);}

/* Feed CTA + ticker chip with logo */
.db-feed{margin-bottom:18px;}
.db-feed__cta{
  padding:14px 16px;text-align:center;border-top:1px dotted var(--rule);
  font-family:var(--font-mono);font-size:13px;color:var(--type-mute);
}
.db-feed__cta a{color:var(--accent);text-decoration:none;font-weight:600;}
.db-feed__cta a:hover{text-decoration:underline;}
.db-feed__tkchip{
  display:inline-flex;align-items:center;gap:6px;
  padding:4px 9px 4px 5px;border:1px solid var(--rule);
  background:var(--surface-raised);font-family:var(--font-mono);
  font-size:13px;font-weight:600;color:var(--type);text-decoration:none;
  transition:border-color 100ms,color 100ms;
}
.db-feed__tkchip:hover{border-color:var(--accent);color:var(--accent);}

/* Ticker logo — inline 20-24px, shared by db-loudest / db-sil / db-hot / db-feed */
.db-tk-logo{
  width:24px;height:24px;border-radius:4px;
  background:var(--surface-raised);border:1px solid var(--rule);
  padding:2px;object-fit:contain;flex-shrink:0;
  vertical-align:middle;
}
.db-tk-logo--fallback{padding:1px;}
.db-tk-logo--init{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-weight:700;font-size:11px;
  color:var(--accent);background:var(--accent-glow);border-color:var(--accent-bd);
}
.db-loudest__call .db-tk-logo{width:32px;height:32px;border-radius:5px;padding:3px;}

/* ── Per-ticker news module (2026-05-27) ────────────────────────────────
   Below the catalysts banner on /ticker/<sym>. Collapsible via native
   <details>. Two-column body: headlines (left) + reactions (right). */
.tn-module{
  background:var(--surface-raised);
  border:1px solid var(--rule);
  border-radius:8px;
  margin:0 0 16px;
  overflow:hidden;
}
.tn-module__head{
  display:flex;align-items:center;gap:14px;
  padding:14px 18px;
  cursor:pointer;
  font-family:var(--font-ui);
  font-weight:700;font-size:15px;
  letter-spacing:.04em;text-transform:uppercase;
  color:var(--type);
  list-style:none;
  user-select:none;
}
.tn-module__head::-webkit-details-marker{display:none;}
.tn-module__title{flex:0 0 auto;}
.tn-module__stat{
  flex:1 1 auto;
  font-family:var(--font-mono);font-size:13px;font-weight:400;
  color:var(--type-mute);
  letter-spacing:.02em;text-transform:none;
}
/* News & Reactions header: totals + News/Filings toggle (2026-06-02) */
.tn-totals{flex:1 1 auto;font-family:var(--font-mono);font-size:12px;font-weight:400;
  color:var(--type-mute);letter-spacing:.02em;text-transform:none;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;}
.tn-totals strong{color:var(--type);}
.tn-totals__news strong{color:var(--accent);}
.tn-totals__filings strong{color:var(--gold,#F2C66B);}
.tn-totals__sep{color:var(--type-dim);}
.tn-toggle{flex:0 0 auto;display:flex;font-family:var(--font-mono);font-size:11px;font-weight:700;text-transform:none;letter-spacing:0;}
.tn-toggle__btn{padding:4px 12px;border:1px solid var(--rule);background:transparent;color:var(--type-mute);cursor:pointer;}
.tn-toggle__btn:not(:first-child){border-left:none;}
.tn-toggle__btn.is-active{background:var(--surface-raised);color:var(--type);border-color:var(--rule-bold);}
.tn-toggle__btn:hover:not(.is-active){color:var(--type);}
.tn-module__chev{
  flex:0 0 auto;font-size:16px;color:var(--type-mute);
  transition:transform .15s ease;
}
.tn-module[open] .tn-module__chev{transform:rotate(180deg);}
.tn-module__body{
  padding:0 18px 16px;
  border-top:1px solid var(--rule);
}
.tn-grid{
  display:grid;grid-template-columns:1fr 1fr;gap:16px;
  padding-top:16px;
}
@media (max-width:760px){
  .tn-grid{grid-template-columns:1fr;}
}
.tn-col{display:flex;flex-direction:column;min-width:0;}
.tn-col__head{
  display:flex;justify-content:space-between;align-items:baseline;
  font-family:var(--font-ui);
  font-size:13px;font-weight:700;
  letter-spacing:.08em;text-transform:uppercase;
  color:var(--type);
  padding-bottom:10px;border-bottom:1px solid var(--rule);
  margin-bottom:10px;
}
.tn-col__hint{
  font-family:var(--font-mono);font-size:11px;font-weight:400;
  color:var(--type-mute);letter-spacing:.02em;text-transform:none;
}
.tn-col__list{
  display:flex;flex-direction:column;gap:8px;
  max-height:620px;overflow-y:auto;padding-right:4px;
}
.tn-clear{
  background:transparent;border:1px solid var(--rule);
  color:var(--type-mute);
  font-family:var(--font-mono);font-size:11px;
  padding:3px 9px;border-radius:3px;cursor:pointer;
  letter-spacing:.04em;text-transform:uppercase;
}
.tn-clear:hover{color:var(--type);border-color:var(--accent);}

/* Headline rows — clickable buttons */
.tn-headline{
  display:block;width:100%;text-align:left;
  background:var(--surface);
  border:1px solid var(--rule);border-radius:6px;
  padding:10px 12px;cursor:pointer;
  transition:background .12s ease, border-color .12s ease;
}
.tn-headline:hover{background:var(--surface-raised);border-color:var(--accent);}
.tn-headline--active{
  background:var(--surface-raised);
  border-color:var(--accent);
  box-shadow:0 0 0 1px var(--accent) inset;
}
.tn-headline__head{
  display:flex;align-items:center;gap:10px;
  font-family:var(--font-mono);font-size:11px;
  color:var(--type-mute);
  margin-bottom:6px;
}
.tn-headline__chip{
  font-family:var(--font-mono);font-size:10px;font-weight:700;
  letter-spacing:.08em;
  padding:2px 6px;border-radius:2px;
}
.tn-headline__chip--news{background:var(--accent-strong);color:var(--accent);}
.tn-headline__chip--wire{background:rgba(214,172,107,.18);color:var(--warn);}
.tn-headline__chip--8k{background:var(--gold,#F2C66B);color:#1a1505;border-color:var(--gold,#F2C66B);font-weight:700;}
.tn-headline__chip--nt{background:var(--tint-red-bg);color:var(--red);border-color:var(--tint-red-bd);font-weight:700;}
.tn-headline__chip--activist{background:var(--accent-glow);color:var(--accent);border-color:var(--accent-bd);font-weight:700;}
.tn-headline--nt{border-left:3px solid var(--red);}
.tn-headline--activist{border-left:3px solid var(--accent);}
.tn-headline__8k-detail{font-family:var(--font-mono);font-size:11px;color:var(--type-dim);margin-top:3px;display:flex;gap:6px;flex-wrap:wrap;}
.tn-headline__lead{font-family:var(--font-mono);font-size:10px;font-weight:700;padding:1px 5px;border:1px solid;}
.tn-headline__lead--pre{color:var(--green);border-color:var(--tint-green-bd);background:var(--tint-green-bg);}
.tn-headline__lead--post{color:var(--type-dim);border-color:var(--rule);}
.tn-headline__lead--none{color:var(--type-dim);border-color:var(--rule);font-weight:400;}
.tn-headline__src{color:var(--type);font-weight:600;}
.tn-headline__ts{margin-left:auto;color:var(--type-mute);}
.tn-headline__text{
  font-family:var(--font-ui);font-size:15px;font-weight:500;line-height:1.4;
  color:var(--type);
}
.tn-headline__cta{
  font-family:var(--font-mono);font-size:11px;
  color:var(--type-mute);margin-top:6px;
}
.tn-headline__cta a{color:var(--accent);text-decoration:none;}
.tn-headline__cta a:hover{text-decoration:underline;}

/* Reaction rows */
.tn-rxn{
  background:var(--surface);
  border:1px solid var(--rule);border-radius:6px;
  padding:10px 12px;
  border-left-width:3px;
}
.tn-rxn--long{border-left-color:var(--green);}
.tn-rxn--short{border-left-color:var(--red);}
.tn-rxn--flat{border-left-color:var(--type-dim);}
.tn-rxn__head{
  display:flex;align-items:center;gap:10px;
  font-family:var(--font-mono);font-size:12px;
  color:var(--type-mute);
  margin-bottom:5px;
}
.tn-rxn__dir{
  font-weight:700;letter-spacing:.08em;font-size:11px;
}
.tn-rxn--long .tn-rxn__dir{color:var(--green);}
.tn-rxn--short .tn-rxn__dir{color:var(--red);}
.tn-rxn__acct{
  color:var(--type);text-decoration:none;font-weight:600;
}
.tn-rxn__acct:hover{color:var(--accent);}
.tn-rxn__ct{color:var(--type-mute);}
.tn-rxn__ts{margin-left:auto;color:var(--type-mute);text-decoration:none;}
.tn-rxn__ts:hover{color:var(--accent);}
.tn-rxn__thesis{
  font-family:var(--font-ui);font-size:14px;line-height:1.45;
  color:var(--type);
}

.tn-empty{
  font-family:var(--font-mono);font-size:13px;
  color:var(--type-mute);
  padding:20px 8px;text-align:center;
}

.tn-silence{
  margin-top:14px;padding:12px 14px;
  background:var(--surface);
  border:1px solid var(--rule);border-radius:6px;
  font-family:var(--font-mono);font-size:13px;
  color:var(--type-mute);
}
.tn-silence strong{color:var(--type);font-weight:700;}
.tn-silence__warn{color:var(--warn) !important;}

/* ── Market Scope redesign · chunk 1 (2026-05-28) — earnings beat/miss +
   8-K decoded panels + scroll-with-cues for dense event lists ───────── */
.ms-scroll-wrap{position:relative;}
.ms-scroll{
  max-height:300px;overflow-y:auto;
  scrollbar-width:thin;scrollbar-color:var(--rule) transparent;
}
.ms-scroll::-webkit-scrollbar{width:8px;}
.ms-scroll::-webkit-scrollbar-thumb{background:var(--rule);border-radius:4px;}
.ms-scroll::-webkit-scrollbar-track{background:transparent;}
.ms-scroll-wrap::after{
  content:"";position:absolute;left:0;right:8px;bottom:0;height:34px;
  background:linear-gradient(transparent, var(--surface));
  pointer-events:none;
}
.ms-count{color:var(--accent);font-weight:700;}

/* Earnings — logo + date column + beat/miss */
.earn-row{
  display:grid;grid-template-columns:120px 90px 80px 80px 96px;
  gap:10px;align-items:center;padding:9px 14px;
  border-bottom:1px dotted var(--rule);
}
.earn-row:last-child{border-bottom:none;}
.earn-row:hover{background:var(--surface-raised);}
/* The hidden attribute must beat .earn-row{display:grid} — the toggle sets
   row.hidden and a class-level display:grid would otherwise keep it shown. */
.earn-row[hidden]{display:none;}
.earn__symcell{display:flex;align-items:center;gap:8px;text-decoration:none;min-width:0;}
/* Shared company logo for Market Scope rows (earnings + 8-K) */
.ms-logo{
  width:22px;height:22px;border-radius:4px;flex-shrink:0;
  background:var(--surface-raised);border:1px solid var(--rule);
  padding:2px;object-fit:contain;
}
.ms-logo--init{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--font-mono);font-weight:700;font-size:10px;
  color:var(--accent);background:var(--accent-glow);border-color:var(--accent-bd);
}
.earn__sym{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--type);}
.earn__symcell:hover .earn__sym{color:var(--accent);}
.earn__whencell{display:flex;flex-direction:column;gap:1px;}
.earn__date{font-family:var(--font-mono);font-size:13px;color:var(--type);}
.earn__date--up{color:var(--accent);}
.earn__sess{font-family:var(--font-mono);font-size:11px;color:var(--type-mute);letter-spacing:0.04em;}
.earn__eps-wrap{font-family:var(--font-mono);font-size:13px;text-align:right;}
.earn__eps-est{color:var(--type-mute);}
.earn__eps-act{color:var(--type);font-weight:700;}
.earn__beat{font-family:var(--font-mono);font-size:13px;font-weight:700;text-align:right;}
.earn__beat--pos{color:var(--green);}
.earn__beat--neg{color:var(--red);}
.earn__beat--flat{color:var(--type-mute);font-weight:500;}
/* Earnings upcoming/reported segmented toggle */
.earn-toggle{display:inline-flex;border:1px solid var(--rule);overflow:hidden;}
.earn-toggle__btn{
  font-family:var(--font-mono);font-size:12px;font-weight:700;
  letter-spacing:0.04em;padding:4px 11px;cursor:pointer;
  background:var(--surface);color:var(--type-mute);
  border:0;border-right:1px solid var(--rule);
  transition:background 80ms,color 80ms;
}
.earn-toggle__btn:last-child{border-right:0;}
.earn-toggle__btn:hover{color:var(--type);}
.earn-toggle__btn.is-active{background:var(--accent-glow);color:var(--accent);}
.earn-toggle__btn .ms-count,.earn-toggle__btn .earn-toggle__n{font-weight:700;}
.earn-toggle__btn .earn-toggle__n{color:var(--type-dim);}
.earn-toggle__btn.is-active .earn-toggle__n{color:var(--accent);}
.earn__empty{
  padding:24px 14px;text-align:center;font-family:var(--font-mono);
  font-size:13px;color:var(--type-mute);font-style:italic;
}

/* 8-K decoded */
.eightk-row{
  display:grid;grid-template-columns:104px 1fr 110px auto;
  gap:10px;align-items:center;padding:9px 14px;
  border-bottom:1px dotted var(--rule);
}
.eightk-row:last-child{border-bottom:none;}
.eightk-row:hover{background:var(--surface-raised);}
.eightk__symcell{display:flex;align-items:center;gap:8px;text-decoration:none;min-width:0;}
.eightk__sym{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--type);}
.eightk__symcell:hover .eightk__sym{color:var(--accent);}
.eightk__info{display:flex;flex-direction:column;gap:2px;min-width:0;}
.eightk__item-label{font-family:var(--font-ui);font-size:14px;color:var(--type);font-weight:500;}
.eightk__company{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);}
.eightk__priority{
  font-family:var(--font-mono);font-size:11px;font-weight:700;
  letter-spacing:0.08em;padding:3px 8px;border:1px solid;
  text-transform:uppercase;text-align:center;
}
.eightk__priority--high{color:var(--red);background:var(--tint-red-bg);border-color:var(--tint-red-bd);}
.eightk__priority--med{color:var(--warn);background:var(--tint-warn-bg);border-color:var(--warn-bd);}
.eightk__priority--info{color:var(--accent);background:var(--accent-glow);border-color:var(--accent-bd);}
.eightk__link{font-family:var(--font-mono);font-size:13px;color:var(--accent);text-decoration:none;white-space:nowrap;}
.eightk__link:hover{text-decoration:underline;}

/* Crowd Quiet rows (loud-last-week / silent-today + today's 1d move) */
.cq-row{
  display:grid;grid-template-columns:120px 1fr auto;
  gap:10px;align-items:center;padding:9px 14px;
  border-bottom:1px dotted var(--rule);
}
.cq-row:last-child{border-bottom:none;}
.cq-row:hover{background:var(--surface-raised);}
.cq__symcell{display:flex;align-items:center;gap:8px;text-decoration:none;min-width:0;}
.cq__sym{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--type);}
.cq__symcell:hover .cq__sym{color:var(--accent);}
.cq__headline{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);min-width:0;}
.cq__rxn{font-family:var(--font-mono);font-size:13px;font-weight:700;text-align:right;white-space:nowrap;}
.cq__rxn--pos{color:var(--green);}
.cq__rxn--neg{color:var(--red);}
.cq__rxn--flat{color:var(--type-mute);}

/* Smart Money panel (ticker page #4, 2026-06-02) — insider/congress/options */
.sm-panel{background:var(--surface);border:1px solid var(--rule);margin-bottom:24px;}
.sm-panel__header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--rule);}
.sm-panel__title{font-family:var(--font-mono);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.10em;color:var(--type);}
.sm-panel__hint{font-family:var(--font-mono);font-size:10px;color:var(--type-dim);}
.sm__grid{display:grid;grid-template-columns:1fr 1fr 1fr;}
.sm__col{border-right:1px solid var(--rule);}
.sm__col:last-child{border-right:none;}
.sm__col-head{padding:8px 14px;font-family:var(--font-mono);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.10em;color:var(--type-dim);border-bottom:1px solid var(--rule);display:flex;align-items:center;justify-content:space-between;}
.sm__n{color:var(--accent);}
.sm__row{padding:9px 14px;border-bottom:1px dotted var(--rule);}
.sm__row:last-child{border-bottom:none;}
.sm__row-top{display:flex;align-items:center;gap:6px;margin-bottom:2px;}
.sm__who{font-family:var(--font-mono);font-size:12px;font-weight:600;color:var(--type);}
.sm__sub,.sm__optline{font-family:var(--font-mono);font-size:10px;color:var(--type-dim);margin-top:1px;}
.sm__amt{font-family:var(--font-mono);font-size:12px;font-weight:700;margin-left:auto;white-space:nowrap;}
.sm__amt--sell{color:var(--red);}
.sm__amt--buy{color:var(--green);}
.sm-badge{font-family:var(--font-mono);font-size:9px;font-weight:700;padding:1px 5px;border:1px solid;letter-spacing:.04em;}
.sm-badge--sell{color:var(--red);border-color:var(--tint-red-bd);background:var(--tint-red-bg);}
.sm-badge--buy{color:var(--green);border-color:var(--tint-green-bd);background:var(--tint-green-bg);}
.sm-badge--plan{color:#C084FC;border-color:rgba(192,132,252,.3);background:rgba(192,132,252,.08);}
.sm-badge--call{color:var(--green);border-color:var(--tint-green-bd);background:var(--tint-green-bg);}
.sm-badge--put{color:var(--red);border-color:var(--tint-red-bd);background:var(--tint-red-bg);}
.sm__empty{padding:16px 14px;font-family:var(--font-mono);font-size:11px;color:var(--type-dim);font-style:italic;}
@media(max-width:720px){.sm__grid{grid-template-columns:1fr;}.sm__col{border-right:none;border-bottom:1px solid var(--rule);}}

/* Account heatmap — card grid (conviction folded in, 2026-05-28 ch2) */
.ah-grid{
  display:grid;grid-template-columns:repeat(auto-fill, minmax(190px, 1fr));
  gap:12px;padding:16px 18px;
}
.ah-card{
  display:flex;flex-direction:column;gap:7px;
  padding:12px 14px;background:var(--surface);
  border:1px solid var(--rule);border-top:3px solid var(--rule);
  text-decoration:none;transition:border-color 100ms;
}
.ah-card *{text-decoration:none;}
.ah-card:hover{border-color:var(--accent-bd);}
.ah-card--pos{border-top-color:var(--green);}
.ah-card--neg{border-top-color:var(--red);background:linear-gradient(180deg,rgba(247,108,104,0.04),var(--surface));}
.ah-card__top{display:flex;align-items:center;gap:8px;}
.ah-card__avatar{width:26px;height:26px;border-radius:50%;flex-shrink:0;
  border:1px solid var(--accent-bd);background:var(--accent-glow);object-fit:cover;}
.ah-card__handle{font-family:var(--font-ui);font-size:14px;font-weight:700;color:var(--type);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ah-conv{
  align-self:flex-start;font-family:var(--font-mono);font-size:11px;font-weight:700;
  letter-spacing:0.08em;padding:2px 7px;border:1px solid;
}
.ah-conv--high{color:var(--green);background:var(--tint-green-bg);border-color:var(--green-bd);}
.ah-conv--med{color:var(--warn);background:var(--tint-warn-bg);border-color:var(--warn-bd);}
.ah-conv--low{color:var(--type-mute);background:transparent;border-color:var(--rule);}
.ah-card__meta{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);}
.ah-card__calls{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);}
.ah-card__calls span{color:var(--type);}
.ah-card__edge{font-family:var(--font-mono);font-size:13px;font-weight:700;margin-top:2px;}

/* Top Movers — merged tape vs crowd (2026-05-28 ch2c, option D:
   sparkline + price/move + crowd lean). Uniform column rhythm. */
.tm-head,.tm-row{
  display:grid;
  grid-template-columns:120px minmax(130px,1fr) 110px 110px 150px;
  gap:18px;align-items:center;
}
.tm-head{
  padding:6px 18px;border-bottom:1px solid var(--rule);
  font-family:var(--font-mono);font-size:11px;font-weight:700;
  letter-spacing:0.10em;text-transform:uppercase;color:var(--type-mute);
}
.tm-row{padding:10px 18px;border-bottom:1px dotted var(--rule);}
.tm-row:last-child{border-bottom:none;}
.tm-row:hover{background:var(--surface-raised);}
.tm__symcell{display:flex;align-items:center;gap:8px;text-decoration:none;min-width:0;}
.tm__sym{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--type);}
.tm__symcell:hover .tm__sym{color:var(--accent);}
.tm__name{font-family:var(--font-edit);font-style:italic;font-size:13px;color:var(--type-mute);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}
.tm__ment{font-family:var(--font-mono);font-style:normal;font-size:11px;
  color:var(--type-dim);margin-left:8px;white-space:nowrap;}
/* Top Movers Movers↔Mentions toggle (ch3) */
.tm-toggle{display:inline-flex;border:1px solid var(--rule);overflow:hidden;}
.tm-toggle__btn{font-family:var(--font-mono);font-size:12px;font-weight:700;
  letter-spacing:0.04em;padding:3px 10px;background:none;border:0;
  border-right:1px solid var(--rule);color:var(--type-mute);cursor:pointer;}
.tm-toggle__btn:last-child{border-right:0;}
.tm-toggle__btn:hover{color:var(--type);}
.tm-toggle__btn.is-active{background:var(--accent-glow);color:var(--accent);}
.tm-spark{display:flex;align-items:center;height:26px;}
.tm-spark__svg{width:100%;height:26px;display:block;}
.tm-spark__empty{color:var(--type-dim);font-family:var(--font-mono);font-size:12px;}
.tm__eod{display:flex;flex-direction:column;align-items:flex-end;gap:1px;}
.tm__price{font-family:var(--font-mono);font-size:14px;font-weight:700;}
.tm__pct{font-family:var(--font-mono);font-size:12px;}
.tm-lean{display:flex;flex-direction:column;gap:3px;}
.tm-lean__nums{font-family:var(--font-mono);font-size:12px;display:flex;gap:10px;}
.tm-lean__bull{color:var(--green);font-weight:700;}
.tm-lean__bear{color:var(--red);font-weight:700;}
.tm-lean__bar{height:5px;display:flex;border:1px solid var(--rule);overflow:hidden;}
.tm-lean__bar-bull{background:var(--green);height:100%;}
.tm-lean__bar-bear{background:var(--red);height:100%;}
/* Tighten Top Movers when paired beside divergence (narrower) */
@media (max-width:1280px){
  .tm-head,.tm-row{grid-template-columns:96px minmax(80px,1fr) 84px 96px 120px;gap:12px;}
}

/* Crowd-vs-Tape divergence */
.dv-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--rule);}
@media (max-width:560px){.dv-grid{grid-template-columns:1fr;}}
.dv-col{background:var(--surface);padding:0 0 8px;}
.dv-col__head{
  font-family:var(--font-ui);font-size:13px;font-weight:700;
  letter-spacing:0.06em;text-transform:uppercase;padding:12px 14px 2px;
}
.dv-col__head--warn{color:var(--warn);}
.dv-col__head--pos{color:var(--green);}
.dv-col__sub{font-family:var(--font-mono);font-size:11px;color:var(--type-mute);
  padding:0 14px 8px;border-bottom:1px solid var(--rule);margin-bottom:4px;}
.dv-row{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;
  padding:8px 14px;border-bottom:1px dotted var(--rule);}
.dv-row:last-child{border-bottom:none;}
.dv-row:hover{background:var(--surface-raised);}
.dv__symcell{display:flex;align-items:center;gap:8px;min-width:0;}
.dv__sym{font-family:var(--font-mono);font-size:14px;font-weight:700;color:var(--type);text-decoration:none;}
.dv__sym:hover{color:var(--accent);}
.dv__meta{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);}
.dv__move{font-family:var(--font-mono);font-size:13px;font-weight:700;text-align:right;}
.dv-empty{font-family:var(--font-mono);font-size:12px;color:var(--type-dim);padding:12px 14px;font-style:italic;}

/* Data-maturity honesty strip (ch3) */
.dm-strip{display:flex;flex-wrap:wrap;align-items:center;gap:10px 24px;
  background:var(--surface-raised);border:1px solid var(--rule);
  border-radius:6px;padding:12px 18px;margin-bottom:16px;}
.dm-strip__lead{display:flex;flex-direction:column;gap:2px;}
.dm-strip__title{font-family:var(--font-ui);font-size:13px;font-weight:700;
  letter-spacing:0.06em;text-transform:uppercase;color:var(--type);}
.dm-strip__sub{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);}
.dm-strip__bars{display:flex;flex-wrap:wrap;gap:18px;flex:1;min-width:240px;}
.dm-strip__note{flex-basis:100%;font-family:var(--font-ui);font-size:12px;
  color:var(--type-dim);border-top:1px dotted var(--rule);padding-top:8px;line-height:1.5;}
.dm-h{display:flex;align-items:center;gap:8px;}
.dm-h__lbl{font-family:var(--font-mono);font-size:12px;font-weight:700;
  color:var(--type-mute);white-space:nowrap;}
.dm-h__bar{position:relative;width:84px;height:6px;border-radius:3px;
  background:var(--surface);border:1px solid var(--rule);overflow:hidden;}
.dm-h__fill{position:absolute;left:0;top:0;bottom:0;background:var(--green);border-radius:3px;}
.dm-h__fill--pending{background:var(--warn);}
.dm-h__pct{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);
  white-space:nowrap;min-width:62px;}
.dm-h--ok .dm-h__pct{color:var(--type);}
.dm-h--early .dm-h__lbl,.dm-h--early .dm-h__pct{color:var(--type-dim);}
.dm-h--pending .dm-h__pct{color:var(--warn);}

/* Markets tape — indices + macro + crypto (ch3) */
.idx-strip{display:flex;flex-wrap:wrap;gap:1px;background:var(--rule);
  border:1px solid var(--rule);margin-bottom:16px;}
.idx-cell{flex:1 1 0;min-width:116px;background:var(--surface);
  padding:11px 14px;display:flex;flex-direction:column;gap:4px;}
.idx-cell__label{font-family:var(--font-mono);font-size:13px;font-weight:700;
  letter-spacing:0.04em;color:var(--type-mute);text-transform:uppercase;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.idx-cell__row{display:flex;align-items:baseline;gap:7px;}
.idx-cell__price{font-family:var(--font-mono);font-size:18px;font-weight:700;color:var(--type);}
.idx-cell__chg{font-family:var(--font-mono);font-size:14px;font-weight:700;}

/* Sector Heatmap — visual anchor (mockup match, ch3 redo) */
.sector-heatmap-wrap{margin-bottom:24px;}
.sector-hm-grid{display:grid;grid-template-columns:repeat(11,1fr);gap:3px;}
@media(max-width:1100px){.sector-hm-grid{grid-template-columns:repeat(6,1fr);}}
@media(max-width:640px){.sector-hm-grid{grid-template-columns:repeat(4,1fr);}}
.sector-hm-cell{display:flex;flex-direction:column;gap:4px;
  padding:12px 10px 10px;border:1px solid var(--rule);
  position:relative;overflow:hidden;transition:border-color 100ms;color:inherit;}
.sector-hm-cell:hover{border-color:var(--accent-bd);}
.sector-hm-cell__bg{position:absolute;inset:0;pointer-events:none;}
.sector-hm-cell__name{font-family:var(--font-mono);font-size:15px;font-weight:700;
  color:var(--type);position:relative;line-height:1.15;}
.sector-hm-cell__sym{font-family:var(--font-mono);font-size:12px;font-weight:600;
  color:var(--type-mute);position:relative;line-height:1;letter-spacing:0.04em;}
.sector-hm-cell__ret{font-family:var(--font-mono);font-size:21px;font-weight:700;
  line-height:1;position:relative;margin-top:4px;}
.sector-hm-cell__ret--pos{color:var(--green);}
.sector-hm-cell__ret--neg{color:var(--red);}
.sector-hm-cell__ret--flat{color:var(--type-mute);}
.sector-hm-cell__bar{height:3px;background:var(--rule);position:relative;
  overflow:hidden;margin-top:4px;}
.sector-hm-cell__bar-fill{position:absolute;left:0;top:0;bottom:0;}
.sector-hm-cell__bar-fill--pos{background:var(--green);}
.sector-hm-cell__bar-fill--neg{background:var(--red);}
.sector-hm-cell__meta{font-family:var(--font-mono);font-size:12px;
  color:var(--type-dim);position:relative;display:flex;
  justify-content:space-between;margin-top:2px;}
/* Rotation rank-change strip (folds under the heatmap grid) */
.sector-rotation-strip{display:grid;grid-template-columns:repeat(11,1fr);gap:3px;margin-top:3px;}
@media(max-width:1100px){.sector-rotation-strip{grid-template-columns:repeat(6,1fr);}}
@media(max-width:640px){.sector-rotation-strip{grid-template-columns:repeat(4,1fr);}}
.sector-rot-cell{padding:6px 10px;background:var(--surface);border:1px solid var(--rule);
  display:flex;flex-direction:column;gap:2px;align-items:center;}
.sector-rot-cell__rank{font-family:var(--font-mono);font-size:14px;font-weight:700;
  color:var(--type);text-decoration:none;}
.sector-rot-cell__rank:hover{color:var(--accent);}
.sector-rot-cell__num{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);}
.sector-rot-cell__delta{font-family:var(--font-mono);font-size:12px;font-weight:700;
  letter-spacing:0.06em;}
.sector-rot-cell__delta--up{color:var(--green);}
.sector-rot-cell__delta--dn{color:var(--red);}
.sector-rot-cell__delta--flat{color:var(--type-dim);}
.sector-rot-label{font-family:var(--font-mono);font-size:12px;font-weight:700;
  letter-spacing:0.10em;text-transform:uppercase;color:var(--type-dim);
  padding:4px 0 2px;display:flex;align-items:center;gap:8px;}
.sector-heatmap-footer{margin-top:6px;font-family:var(--font-mono);font-size:12px;
  color:var(--type-dim);display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
.sector-heatmap-footer__key{display:flex;align-items:center;gap:5px;}
.sector-heatmap-footer__swatch{width:14px;height:6px;border:1px solid var(--rule);}

/* Unusual Options Activity (ch3) */
.uo-row{display:grid;grid-template-columns:96px 1fr 90px 60px 56px;gap:10px;
  align-items:center;padding:8px 14px;border-bottom:1px dotted var(--rule);
  font-family:var(--font-mono);font-size:13px;}
.uo-row:last-child{border-bottom:none;}
.uo-row:hover{background:var(--surface-raised);}
.uo-row--head{font-size:12px;font-weight:700;letter-spacing:0.10em;
  text-transform:uppercase;color:var(--type-mute);border-bottom:1px solid var(--rule);}
.uo-row--head:hover{background:transparent;}
.uo__symcell{display:flex;align-items:center;gap:8px;min-width:0;}
.uo__sym{font-weight:700;color:var(--type);text-decoration:none;}
.uo__sym:hover{color:var(--accent);}
.uo__contract{display:flex;align-items:center;gap:8px;min-width:0;}
.uo__side{font-size:10px;font-weight:700;letter-spacing:0.06em;padding:1px 5px;
  border-radius:3px;flex-shrink:0;}
.uo--call{color:var(--green);}
.uo--put{color:var(--red);}
.uo__side.uo--call{background:var(--tint-green-bg);border:1px solid var(--green-bd);}
.uo__side.uo--put{background:var(--tint-red-bg);border:1px solid var(--red-bd);}
.uo__strike{font-weight:700;color:var(--type);}
.uo__exp{color:var(--type-mute);font-size:12px;overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap;}
.uo__vol{text-align:right;color:var(--type);}
.uo__dim{color:var(--type-dim);font-size:11px;}
.uo__voi{text-align:right;font-weight:700;}
.uo__iv{text-align:right;color:var(--type-mute);}

/* Most-shorted crowd names — settled SI ranking (task #7) */
/* 5 columns: Sym | SI% + bar | DTC | Δ prior | Calls
   SI% column is flexible (holds number + magnitude bar); numerics right-align. */
.ms-si-row{display:grid;
  grid-template-columns:104px 1fr 52px 72px 44px;
  gap:10px;align-items:center;padding:8px 14px;
  border-bottom:1px dotted var(--rule);
  font-family:var(--font-mono);font-size:13px;}
.ms-si-row:last-child{border-bottom:none;}
.ms-si-row:hover{background:var(--surface-raised);}
.ms-si-row--head{font-size:11px;font-weight:700;letter-spacing:0.08em;
  text-transform:uppercase;color:var(--type-mute);
  border-bottom:1px solid var(--rule);padding-top:6px;padding-bottom:6px;}
.ms-si-row--head:hover{background:transparent;}
/* Symbol cell — logo + ticker, clipped if long */
.ms-si__symcell{display:flex;align-items:center;gap:7px;min-width:0;overflow:hidden;}
.ms-si__symcell .ms-logo{width:20px;height:20px;flex-shrink:0;}
.ms-si__sym{font-size:14px;font-weight:700;color:var(--type);text-decoration:none;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ms-si__sym:hover{color:var(--accent);}
/* SI% column — number stacked over a thin magnitude bar */
.ms-si__pct-cell{display:flex;flex-direction:column;gap:3px;min-width:0;}
.ms-si__pct{font-size:14px;font-weight:700;color:var(--type);white-space:nowrap;}
.ms-si__pct.ms-si--hot{color:var(--red);}
.ms-si__pct.ms-si--warn{color:var(--warn);}
/* Magnitude bar beneath the SI% number */
.ms-si__bar{height:3px;background:var(--rule);border-radius:2px;overflow:hidden;}
.ms-si__bar-fill{height:100%;border-radius:2px;background:var(--type-mute);}
.ms-si__bar-fill.ms-si--hot{background:var(--red);opacity:0.65;}
.ms-si__bar-fill.ms-si--warn{background:var(--warn);opacity:0.65;}
/* Numeric columns — right-aligned for scan-readability */
.ms-si__dtc{text-align:right;color:var(--type-mute);}
.ms-si__chg{text-align:right;color:var(--type-mute);white-space:nowrap;}
.ms-si__chg.pos{color:var(--green);}
.ms-si__chg.neg{color:var(--red);}
.ms-si__calls{text-align:right;color:var(--type-mute);}

/* Insider + Congress rows (mockup match, ch3) */
.insider-row{display:grid;grid-template-columns:auto 1fr 1fr auto;gap:10px;
  align-items:center;padding:9px 14px;border-bottom:1px dotted var(--rule);}
.insider-row:last-child{border-bottom:none;}
.insider-row:hover{background:var(--surface-raised);}
.insider__symcell{display:flex;align-items:center;gap:8px;}
.insider__sym{font-family:var(--font-mono);font-size:14px;font-weight:700;
  color:var(--type);text-decoration:none;}
.insider__sym:hover{color:var(--accent);}
.insider__who{font-family:var(--font-ui);font-size:13px;color:var(--type);
  display:flex;flex-direction:column;gap:2px;min-width:0;}
.insider__who span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.insider__who small{color:var(--type-mute);font-size:12px;}
.insider__txn{font-family:var(--font-mono);font-size:13px;display:flex;
  flex-direction:column;gap:2px;text-align:right;}
.insider__txn-dir{font-weight:700;}
.insider__txn-dir--buy{color:var(--green);}
.insider__txn-dir--sell{color:var(--red);}
.insider__amount{color:var(--type-mute);font-size:12px;}

/* Economic events rows (mockup match, ch3) */
.econ-row{display:grid;grid-template-columns:52px 1fr auto;gap:10px;
  align-items:center;padding:9px 14px;border-bottom:1px dotted var(--rule);}
.econ-row:last-child{border-bottom:none;}
.econ-row:hover{background:var(--surface-raised);}
.econ__time{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);
  line-height:1.3;}
.econ__event{font-family:var(--font-ui);font-size:14px;color:var(--type);
  display:flex;flex-direction:column;gap:2px;min-width:0;}
.econ__event small{font-family:var(--font-mono);font-size:12px;color:var(--type-mute);}
.econ__impact{font-family:var(--font-mono);font-size:12px;font-weight:700;
  letter-spacing:0.08em;padding:3px 8px;border:1px solid;text-transform:uppercase;}
.econ__impact--high{color:var(--red);background:var(--tint-red-bg);border-color:var(--tint-red-bd);}
.econ__impact--med{color:var(--warn);background:rgba(214,172,107,0.08);border-color:rgba(214,172,107,0.35);}
.econ__impact--low{color:var(--type-dim);background:transparent;border-color:var(--rule);}

/* Crowd Quiet · silence alerts (mockup match, ch3) */
.cq-row{display:grid;grid-template-columns:auto 1fr auto;gap:12px;
  align-items:center;padding:10px 14px;border-bottom:1px dotted var(--rule);}
.cq-row:last-child{border-bottom:none;}
.cq-row:hover{background:var(--surface-raised);}
.cq__symcell{display:flex;align-items:center;gap:8px;}
.cq__sym{font-family:var(--font-mono);font-size:15px;font-weight:700;
  color:var(--type);text-decoration:none;}
.cq__sym:hover{color:var(--accent);}
.cq__headline{font-family:var(--font-ui);font-size:14px;color:var(--type);line-height:1.4;}
.cq__rxn{font-family:var(--font-mono);font-size:12px;font-weight:700;
  letter-spacing:0.10em;color:var(--warn);border:1px solid rgba(214,172,107,0.35);
  padding:3px 8px;white-space:nowrap;}

