/* Daily Alpha — the approved Flow C board.
 *
 * Ported from docs/mockups/daily-alpha-ledger.html. The mockup switched pages
 * with hidden radio inputs and carried explanatory captions for comparing
 * variants; production renders one page per URL, so those rules are dropped and
 * the overrides at the end of this file take their place. Fonts come from
 * base.html — the mockup inlined them as base64 for standalone sharing.
 */

:root{
  color-scheme: dark;
  --bg:#111315; --bg-deep:#0b0d0e; --surf:#181b1f; --surf-2:#20242a; --surf-warm:#1d1a15;
  --line:#383d44; --line-soft:#2b2f34; --line-hair:#23272c;
  --gold:#e2a43b; --gold-br:#efb34c; --gold-soft:#6c5428; --gold-dim:rgba(226,164,59,.12);
  --up:#49b77c; --down:#df7168; --info:#69a8bd; --copper:#c98358;
  --yt:#e06c6c; --x:#9aa4ad; --rd:#db825c; --sub:#d2a852;
  --tx:#f1eee7; --tx2:#b8bdc3; --tx3:#7f8790;
  --sans:"IBM Plex Sans",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
  --serif:"Instrument Serif",Georgia,serif;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg-deep);color:var(--tx);font-family:var(--sans);-webkit-font-smoothing:antialiased}
a{color:inherit}
.chrome{position:sticky;top:0;z-index:120;background:rgba(11,13,14,.95);backdrop-filter:blur(14px);border-bottom:1px solid var(--line-soft)}
.chrome-in{max-width:1440px;margin:0 auto;padding:12px 24px;display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px}
.chrome-title{font-size:13.5px;font-weight:600}
.chrome-title em{font-family:var(--serif);font-style:normal;color:var(--gold);font-size:1.15em}
.chrome-meta{font-family:var(--mono);font-size:10.5px;color:var(--tx3);text-transform:uppercase;letter-spacing:.06em}
.chrome-countdown strong{color:var(--gold);font-weight:600;font-variant-numeric:tabular-nums}
.pagenav{position:sticky;top:53px;z-index:110;display:flex;border-bottom:1px solid var(--line);background:rgba(17,19,21,.97);backdrop-filter:blur(10px);overflow-x:auto;scrollbar-width:none}
.pagenav::-webkit-scrollbar{display:none}
.pagenav label{display:grid;gap:3px;flex:0 0 auto;padding:10px 22px 9px;border-right:1px solid var(--line-hair);cursor:pointer;position:relative;min-width:168px}
.pagenav .nm{font-size:13px;font-weight:600;color:var(--tx3)}
.pagenav .ct{font-family:var(--mono);font-size:10px;color:var(--tx3);letter-spacing:.03em}
.pagenav label:hover .nm{color:var(--tx2)}
.stage{background:var(--bg)}
.page{display:none}
/* atoms */
.mv{font-family:var(--mono);font-weight:600;font-variant-numeric:tabular-nums}
.mv.u{color:var(--up)}
.mv.d{color:var(--down)}
.mv.f{color:var(--tx3)}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex:0 0 auto}
.dot.yt{background:var(--yt)}
.dot.x{background:var(--x)}
.dot.rd{background:var(--rd)}
.dot.sub{background:var(--sub)}
.kick{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--tx3)}
.tk{display:inline-flex;align-items:baseline;gap:6px;padding:3px 8px;border:1px solid var(--line);background:var(--surf);font-family:var(--mono);font-size:11.5px;font-weight:600}
.badge-a{font-family:var(--mono);font-size:10px;color:var(--gold);border:1px solid var(--gold-soft);padding:1px 5px;white-space:nowrap}
.badge-s{font-family:var(--mono);font-size:10px;color:var(--info);border:1px solid rgba(105,168,189,.4);padding:1px 5px;white-space:nowrap}
.z{font-family:var(--mono);font-size:10px;font-weight:600;padding:1px 5px;border:1px solid var(--line-soft);color:var(--tx3);white-space:nowrap}
.z.hot{color:var(--gold);border-color:var(--gold-soft);background:var(--gold-dim)}
.z.warm{color:var(--tx2);border-color:var(--line)}
.z.cool{color:var(--info);border-color:rgba(105,168,189,.35)}
.z.none{border-style:dashed}
.guard{padding:13px 16px;border:1px dashed var(--line);font-size:13px;line-height:1.62;color:var(--tx3)}
.guard b{color:var(--tx2)}
.guard code{font-family:var(--mono);font-size:12px;color:var(--gold)}
/* the return ledger cell — replaces the old "same day" column */
.ledger{display:grid;grid-template-columns:repeat(2,auto);gap:0;border:1px solid var(--line-soft);font-family:var(--mono);font-size:10.5px;overflow:hidden}
.ledger div{padding:5px 9px;border-right:1px solid var(--line-hair);display:grid;gap:2px;justify-items:center}
.ledger div:last-child{border-right:0}
.ledger .lab{font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--tx3)}
.ledger .val{font-size:11.5px;font-weight:600;font-variant-numeric:tabular-nums}
.ledger .pre{background:rgba(255,255,255,.02)}
.ledger .pre .val{color:var(--tx3)}
.ledger .pend .val{color:var(--tx3);font-weight:400}
.wrap{max-width:1400px;margin:0 auto;padding:0 28px 90px}
.top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:26px;align-items:center;padding:22px 0 12px}
.top h1{margin:0;font-size:27px;font-weight:650;letter-spacing:-.02em}
.top h1 em{font-family:var(--serif);font-style:normal;color:var(--gold);font-size:1.13em}
.top .sub{margin:6px 0 0;font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--tx3)}
.da-headline{padding:18px 0 22px;border-bottom:1px solid var(--line-soft);scroll-margin-top:112px}
.da-headline-brand{color:var(--tx);font-family:var(--sans);font-size:13px;font-weight:600;letter-spacing:0;text-transform:none}
.da-headline-brand em{color:var(--gold);font-family:var(--serif);font-size:1.14em;font-style:normal;font-weight:400}
.da-headline-copy{min-width:0}
.da-headline .da-headline-kicker{display:flex;align-items:baseline;gap:8px;margin-bottom:10px;color:var(--tx3);font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase}
.da-headline h1{max-width:980px;font-size:31px;font-weight:620;line-height:1.16;letter-spacing:-.03em}
.da-headline .sub{max-width:1000px;margin-top:11px;color:var(--tx2);font-family:var(--sans);font-size:15px;line-height:1.55;letter-spacing:0;text-transform:none}
.da-headline-v1{display:block}
.da-headline-v1 .da-headline-brand{font-size:16px}
.da-headline-v1 .da-headline-copy{padding-left:20px;border-left:2px solid var(--gold)}
.statrow{display:flex;flex-wrap:wrap;gap:18px 28px}
.statrow .st{display:grid;gap:2px}
.statrow .st b{font-family:var(--mono);font-size:19px;font-weight:600;font-variant-numeric:tabular-nums}
.statrow .st span{font-family:var(--mono);font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--tx3)}
.funnel{display:flex;flex-wrap:wrap;gap:6px 18px;padding:10px 0;font-family:var(--mono);font-size:11.5px;color:var(--tx3);letter-spacing:.03em;text-transform:uppercase;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.funnel b{color:var(--tx);font-weight:600}
.funnel .ar{color:var(--gold)}
.panel{border:1px solid var(--line-soft);background:var(--surf);margin-top:14px}
.panel > header{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 16px;padding:11px 16px;border-bottom:1px solid var(--line-soft);background:var(--surf-2)}
.panel > header h2{margin:0;font-size:15px;font-weight:650}
.panel > header .pm{font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--tx3)}
.panel > header .pm.right{margin-left:auto}
.panel.gold > header{border-bottom:2px solid var(--gold)}
.panel.gold > header h2{color:var(--gold)}
.pbody{padding:14px 16px}
.pbody.flush{padding:0 16px}
.bigboard{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px}
.bb{border:1px solid var(--line-soft);background:var(--surf);display:grid;align-content:start}
.bb > header{display:grid;gap:7px;padding:13px 17px;border-bottom:3px solid}
.bb.buy > header{border-bottom-color:var(--up);background:linear-gradient(180deg,rgba(73,183,124,.09),transparent)}
.bb.wait > header{border-bottom-color:var(--info);background:linear-gradient(180deg,rgba(105,168,189,.09),transparent)}
.bb.fade > header{border-bottom-color:var(--down);background:linear-gradient(180deg,rgba(223,113,104,.09),transparent)}
.bb > header h3{margin:0;font-size:17px;font-weight:650}
.bb.buy > header h3{color:var(--up)}
.bb.wait > header h3{color:var(--info)}
.bb.fade > header h3{color:var(--down)}
.bb > header .hm{font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--tx3)}
.bcard{padding:15px 17px}
.bcard + .bcard{border-top:1px solid var(--line-hair)}
.bcard h4{margin:0 0 4px;font-size:16px;font-weight:650;line-height:1.3}
.bcard .why{margin:0 0 11px;font-size:13.5px;line-height:1.6;color:var(--tx2)}
.vr{display:grid;gap:6px;padding:10px 12px;background:var(--bg);border-left:2px solid var(--line);margin-bottom:10px}
.vr .vt{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.vr .vt b{font-size:12.5px;font-weight:600}
.vr .vt time{font-family:var(--mono);font-size:10px;color:var(--tx3)}
.vr q{font-size:12.5px;line-height:1.5;color:var(--tx2);font-style:italic;quotes:"“" "”"}
.themecards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.tc{padding:12px 14px;background:var(--surf);border-top:2px solid var(--line);display:grid;gap:7px}
.tc.anom{border-top-color:var(--gold);background:linear-gradient(180deg,var(--gold-dim),var(--surf) 55%)}
.tc.cool{border-top-color:var(--info)}
.tc .th{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.tc .th b{font-size:14px;font-weight:650;line-height:1.3}
.tc .syms{font-family:var(--mono);font-size:10.5px;color:var(--tx3);line-height:1.5}
.tc .met{display:flex;flex-wrap:wrap;gap:6px 12px;font-family:var(--mono);font-size:10px;color:var(--tx3)}
.tc .met b{color:var(--tx2);font-weight:600}
.dirbar{display:flex;height:6px;background:var(--line-hair)}
.dirbar i{display:block;height:100%}
.dirbar i.l{background:var(--up)}
.dirbar i.s{background:var(--down)}
.dirbar i.w{background:var(--line)}
.narrline{display:grid;grid-template-columns:auto minmax(0,1fr);gap:18px;padding:15px 16px}
.narrline + .narrline{border-top:1px solid var(--line-hair)}
.narrline .n{font-family:var(--mono);font-size:11px;color:var(--tx3);padding-top:3px}
.narrline h3{margin:0 0 6px;font-size:18px;font-weight:650;line-height:1.3}
.narrline p{margin:0 0 9px;font-size:14px;line-height:1.64;color:var(--tx2);max-width:80ch}
.narrline .meta{display:flex;flex-wrap:wrap;gap:8px 14px;font-family:var(--mono);font-size:10.5px;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em}
.narrgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line-hair)}
.narr-content{min-width:0}
.narrgrid > .narrline{min-width:0;min-height:0;display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:0;padding:25px 24px 23px;background:var(--bg);border-top:0}
.narrgrid > .narrline .n{display:block;margin-bottom:17px;padding:0;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.08em;color:var(--gold)}
.narrgrid > .narrline h3{max-width:34ch;margin:0 0 10px;font-size:21px;font-weight:650;line-height:1.28}
.narrgrid > .narrline p{max-width:none;margin:0 0 16px;font-size:15px;line-height:1.55;color:var(--tx2);overflow-wrap:anywhere}
.narrgrid > .narrline .nmeta{display:grid;gap:0}
.narrgrid > .narrline .nmeta .cov{display:block;font-family:var(--mono);font-size:12px;letter-spacing:.02em;text-transform:none;color:var(--tx3)}
.narr-ticker-row{display:flex;flex-wrap:wrap;gap:6px 12px;align-items:baseline}
.narrgrid > .narrline a.tkl{color:var(--tx2);border-bottom-color:var(--line)}
.narrgrid > .narrline a.tkl:hover{color:var(--gold);border-bottom-color:var(--gold-soft)}

.gaprow{display:grid;grid-template-columns:200px minmax(0,1fr) auto;gap:16px;align-items:baseline;padding:10px 0;border-bottom:1px solid var(--line-hair);font-size:13.5px}
.gaprow:last-child{border-bottom:0}
.gaprow b{font-size:13.5px;font-weight:650;color:var(--gold)}
.gaprow p{margin:0;color:var(--tx2);line-height:1.55}
.trow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line-hair);font-size:12.5px}
.trow:last-child{border-bottom:0}
.trow .tl{display:grid;gap:3px;min-width:0}
.trow .tl b{font-size:13px;font-weight:600}
.trow .tl span{font-family:var(--mono);font-size:10px;color:var(--tx3)}
.doors{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:14px}
.door{border:1px solid var(--line-soft);background:var(--surf)}
.door > header{display:flex;align-items:center;gap:9px;padding:12px 15px;border-bottom:2px solid;font-size:15px;font-weight:650}
.door.yt > header{border-bottom-color:var(--yt);color:var(--yt)}
.door.x > header{border-bottom-color:var(--x)}
.door.rd > header{border-bottom-color:var(--rd);color:var(--rd)}
.door.sub > header{border-bottom-color:var(--sub);color:var(--sub)}
.door .db{padding:12px 15px;display:grid;gap:7px}
.door .dn{font-family:var(--mono);font-size:10.5px;color:var(--tx3)}
.door .dp{font-size:12.5px;line-height:1.5;color:var(--tx2)}
.door .go{font-family:var(--mono);font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--gold);text-decoration:none}
/* scorecard */
.scoretbl{overflow-x:auto}
.scoretbl table{border-collapse:collapse;width:100%;min-width:760px}
.scoretbl th{text-align:left;padding:0 14px 9px 0;font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--tx3);border-bottom:1px solid var(--line);vertical-align:bottom}
.scoretbl th.r{text-align:right}
.scoretbl td{padding:12px 14px 12px 0;border-bottom:1px solid var(--line-hair);vertical-align:top}
.scoretbl td.r{text-align:right;font-family:var(--mono);font-size:12.5px;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.scoretbl .nm{font-size:14.5px;font-weight:650;line-height:1.3}
.scoretbl .cl{font-size:13px;line-height:1.55;color:var(--tx2);max-width:46ch;margin:5px 0 0}
.scoretbl .sy{font-family:var(--mono);font-size:11px;color:var(--tx3);margin-top:5px;display:block}
.verdict{display:inline-flex;align-items:center;gap:7px;padding:2px 8px;border:1px solid;font-family:var(--mono);font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;white-space:nowrap}
.verdict.wrong{color:var(--down);border-color:rgba(223,113,104,.45)}
.verdict.mixed{color:var(--copper);border-color:rgba(201,131,88,.45)}
.verdict.right{color:var(--up);border-color:rgba(73,183,124,.45)}
.verdict.pending{color:var(--tx3);border-color:var(--line);border-style:dashed}
.quietnote{padding:20px 22px;border:1px solid var(--info);background:linear-gradient(90deg,rgba(105,168,189,.09),transparent 70%)}
.quietnote h3{margin:0 0 9px;font-size:19px;font-weight:650;line-height:1.3}
.quietnote p{margin:0 0 10px;font-size:14.5px;line-height:1.66;color:var(--tx2);max-width:84ch}
.quietnote p:last-child{margin-bottom:0}
@media (max-width:1150px){
  .bigboard,.doors,  .themecards{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lower{grid-template-columns:minmax(0,1fr)}
}
@media (max-width:760px){
  .wrap{padding:0 15px 60px}
  .top,.caption{grid-template-columns:minmax(0,1fr)}
  .da-headline{padding:15px 0 19px}
  .da-headline h1{font-size:27px;line-height:1.18}
  .da-headline .sub{font-size:14px;line-height:1.5}
  .da-headline-v1 .da-headline-copy{padding-left:13px}
  .bigboard,.doors,.themecards{grid-template-columns:minmax(0,1fr)}
  .narrline,.gaprow{grid-template-columns:minmax(0,1fr);gap:6px}
  .narrgrid{grid-template-columns:minmax(0,1fr)}
  .narrgrid > .narrline{min-height:0;padding:20px 18px}
  .narrgrid > .narrline .n{margin-bottom:12px}
  .narrgrid > .narrline h3{margin-bottom:9px;font-size:20px;line-height:1.3}
  .ledger{grid-template-columns:repeat(2,auto)}
  .pagenav label{min-width:132px;padding:9px 14px}
}
.lower{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:14px;align-items:start;margin-top:14px}
.boardsplit{display:flex;align-items:center;gap:16px;margin:34px 0 2px}
.boardsplit span{font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);white-space:nowrap}
.boardsplit::after{content:"";flex:1;height:2px;background:var(--gold-soft)}
.boardsplit .radar{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--gold);text-decoration:none;white-space:nowrap}
.boardsplit .radar:hover{text-decoration:underline;text-underline-offset:3px}
.sidestrip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:14px}
.sidestrip > .panel{margin-top:0}
@media (max-width:1000px){ .sidestrip{grid-template-columns:minmax(0,1fr)} }
/* ===== source-page components (shared with flows A/B) ===== */

/* ===== shared source-page components (both flows use the same rows) ===== */
.statrow{display:flex;flex-wrap:wrap;gap:20px 30px}
.statrow .st{display:grid;gap:2px}
.statrow .st b{font-family:var(--mono);font-size:19px;font-weight:600;font-variant-numeric:tabular-nums}
.statrow .st span{font-family:var(--mono);font-size:9.5px;letter-spacing:.09em;text-transform:uppercase;color:var(--tx3)}
.chanbar{display:grid;gap:5px}
.chanrow{display:grid;grid-template-columns:184px minmax(0,1fr) 32px;align-items:center;gap:12px;font-size:12.5px}
.chanrow .cn{color:var(--tx2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chanrow .cb{height:9px;background:var(--line-hair)}
.chanrow .cb i{display:block;height:100%;background:var(--yt);opacity:.8}
.chanrow .cv{font-family:var(--mono);font-size:11px;color:var(--tx3);text-align:right}
.vidrow{display:grid;grid-template-columns:62px 74px minmax(0,1fr);gap:15px;padding:13px 0;border-bottom:1px solid var(--line-hair);align-items:start}
.vidrow time{font-family:var(--mono);font-size:12px;color:var(--tx3);font-variant-numeric:tabular-nums;padding-top:2px}
.vidrow .dur{display:inline-flex;align-items:center;justify-content:center;height:20px;border:1px solid var(--line);font-family:var(--mono);font-size:11px;color:var(--tx2)}
.vidrow .dur.long{border-color:var(--gold-soft);color:var(--gold)}
.vidrow .ch{font-size:12px;font-weight:600;color:var(--yt);margin-bottom:3px}
.vidrow h4{margin:0 0 5px;font-size:15px;font-weight:600;line-height:1.4}
.vidrow p{margin:0;font-size:13.5px;line-height:1.6;color:var(--tx3);max-width:84ch}
.jump{display:inline-flex;align-items:center;gap:8px;margin-top:8px;padding:4px 10px;border:1px solid var(--gold-soft);background:var(--surf-warm);font-family:var(--mono);font-size:11px;color:var(--gold);text-decoration:none}
.jump .tri{width:0;height:0;border-left:6px solid currentColor;border-top:4px solid transparent;border-bottom:4px solid transparent}
.inbrief{display:inline-block;margin-top:8px;padding:2px 7px;border:1px solid var(--line);font-family:var(--mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--tx3)}
.hotgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}
.hotcard{padding:12px 13px;background:var(--surf);border-top:2px solid var(--line);display:grid;gap:7px}
.hotcard.anom{border-top-color:var(--gold);background:linear-gradient(180deg,var(--gold-dim),var(--surf) 60%)}
.hotcard.quietc{border-top-color:var(--info)}
.hotcard .hs{display:flex;align-items:center;justify-content:space-between;gap:8px}
.hotcard .hs b{font-family:var(--mono);font-size:14px;font-weight:600}
.hotcard .hm{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;font-family:var(--mono);font-size:10px;color:var(--tx3)}
.hotcard .hw{font-size:11.5px;line-height:1.4;color:var(--tx3)}
.claimrow{display:grid;grid-template-columns:172px 92px minmax(0,1fr) 176px;gap:16px;padding:12px 0;border-bottom:1px solid var(--line-hair);align-items:start}
.claimrow .who{display:grid;gap:4px;min-width:0}
.claimrow .who b{font-size:12.5px;font-weight:600}
.claimrow .who .bd{display:flex;flex-wrap:wrap;gap:4px}
.claimrow .who time{font-family:var(--mono);font-size:10.5px;color:var(--tx3)}
.claimrow .call{display:grid;gap:4px}
.claimrow .call .sym{font-family:var(--mono);font-size:13px;font-weight:600}
.claimrow .call .dir{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;padding:1px 6px;border:1px solid;justify-self:start}
.claimrow .call .dir.long{color:var(--up);border-color:rgba(73,183,124,.45)}
.claimrow .call .dir.short{color:var(--down);border-color:rgba(223,113,104,.45)}
.claimrow p{margin:0;font-size:13.5px;line-height:1.6;color:var(--tx2)}
.claimrow q{display:block;margin-top:6px;padding-left:11px;border-left:2px solid var(--line);font-size:13px;line-height:1.5;color:var(--tx3);font-style:italic;quotes:"“" "”"}
.claimrow .px{text-align:right;font-family:var(--mono);font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}
.claimrow .px small{display:block;font-size:9px;font-weight:400;color:var(--tx3);letter-spacing:.04em;text-transform:uppercase;margin-top:2px}
.claimrow .claim-ledger{width:176px;justify-self:end}
.threadrow{display:grid;grid-template-columns:56px 50px minmax(0,1fr) auto;gap:14px;padding:11px 0;border-bottom:1px solid var(--line-hair);align-items:baseline}
.threadrow .sc{display:grid;gap:2px;text-align:right}
.threadrow .sc b{font-family:var(--mono);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums}
.threadrow.hot .sc b{color:var(--rd)}
.threadrow .sc span{font-family:var(--mono);font-size:9px;color:var(--tx3);letter-spacing:.04em;text-transform:uppercase}
.threadrow time{font-family:var(--mono);font-size:11.5px;color:var(--tx3)}
.threadrow .sub{font-family:var(--mono);font-size:11px;color:var(--rd);margin-bottom:3px}
.threadrow h4{margin:0;font-size:14.5px;font-weight:600;line-height:1.42}
.threadrow .cm{font-family:var(--mono);font-size:11px;color:var(--tx3);white-space:nowrap}
.crowdq{margin:7px 0 0;padding-left:12px;border-left:2px solid var(--line);font-size:13px;line-height:1.55;color:var(--tx3);font-style:italic}
.letterrow{display:grid;grid-template-columns:60px minmax(0,1fr) 126px;gap:18px;padding:14px 0;border-bottom:1px solid var(--line-hair);align-items:start}
.letterrow time{font-family:var(--mono);font-size:11.5px;color:var(--tx3);padding-top:2px}
.letterrow .nl{font-size:12.5px;font-weight:600;color:var(--sub);margin-bottom:4px}
.letterrow h4{margin:0 0 6px;font-size:15.5px;font-weight:600;line-height:1.4}
.letterrow p{margin:0;font-size:13.5px;line-height:1.6;color:var(--tx3);max-width:78ch}
.access{display:grid;gap:5px;justify-items:end;text-align:right}
.access .bg{font-family:var(--mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border:1px solid var(--line);color:var(--tx3)}
.access .bg.locked{color:var(--copper);border-color:rgba(201,131,88,.4)}
.access .bg.open{color:var(--up);border-color:rgba(73,183,124,.4)}
.access .len{font-family:var(--mono);font-size:10.5px;color:var(--tx3)}
.dissent{padding:17px 20px;border:1px solid var(--copper);background:linear-gradient(90deg,rgba(201,131,88,.09),transparent 70%)}
.dissent .dh{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.11em;text-transform:uppercase;color:var(--copper);margin-bottom:8px}
.dissent h3{margin:0 0 8px;font-size:18px;font-weight:650;line-height:1.32}
.dissent p{margin:0;font-size:14.5px;line-height:1.65;color:var(--tx2);max-width:84ch}
.callout{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;padding:14px 16px;border:1px solid var(--line-soft);border-left:3px solid var(--rd);background:var(--surf)}
.callout b{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--rd);padding-top:2px;white-space:nowrap}
.callout p{margin:0;font-size:14px;line-height:1.6;color:var(--tx2)}
/* board + cases shared */
.board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 1px;background:var(--line-hair);border:1px solid var(--line-hair)}
.bcol{background:var(--bg);padding:0 0 14px}
.bcol > h4{margin:0;padding:11px 16px;font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;border-bottom:2px solid;background:var(--surf)}
.bcol.buy > h4{color:var(--up);border-bottom-color:var(--up)}
.bcol.wait > h4{color:var(--info);border-bottom-color:var(--info)}
.bcol.fade > h4{color:var(--down);border-bottom-color:var(--down)}
.bitem{padding:14px 16px 0}
.bitem + .bitem{margin-top:12px;padding-top:14px;border-top:1px solid var(--line-hair)}
.bitem h5{margin:0 0 7px;font-size:15px;font-weight:650;line-height:1.32}
.conv{display:flex;align-items:center;gap:8px;margin-bottom:9px}
.conv .pips{display:flex;gap:3px}
.conv .pips i{width:9px;height:9px;border-radius:50%;background:var(--line);display:block}
.bcol.buy .conv .pips i.on{background:var(--up)}
.bcol.wait .conv .pips i.on{background:var(--info)}
.bcol.fade .conv .pips i.on{background:var(--down)}
.conv span{font-family:var(--mono);font-size:10.5px;color:var(--tx3);letter-spacing:.05em;text-transform:uppercase}
.bvoice{display:grid;gap:5px;padding:9px 11px;background:var(--surf);margin-bottom:9px}
.bvoice .bv-top{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.bvoice .bv-top b{font-size:12.5px;font-weight:600}
.bvoice q{font-size:13px;line-height:1.5;color:var(--tx2);font-style:italic;quotes:"“" "”"}
.btick{display:flex;flex-wrap:wrap;gap:6px}
.cases{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1px;background:var(--line-hair);border:1px solid var(--line-hair);margin-top:14px}
.case{background:var(--bg);padding:0 0 12px}
.case > h4{margin:0;padding:10px 16px;display:flex;align-items:center;gap:9px;font-size:14px;font-weight:650;background:var(--surf);border-bottom:1px solid var(--line-hair)}
.case > h4 i{width:8px;height:8px;border-radius:50%;display:block}
.case.bull > h4 i{background:var(--up)}
.case.bear > h4 i{background:var(--down)}
.crow{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px;align-items:baseline;padding:12px 16px 0}
.crow + .crow{margin-top:10px;padding-top:12px;border-top:1px solid var(--line-hair)}
.crow h5,.crow h3{margin:0 0 5px;font-size:14.5px;font-weight:600}
.crow p{margin:0;font-size:13.5px;line-height:1.58;color:var(--tx2)}
.crow .px{font-family:var(--mono);font-size:12px;font-weight:600;white-space:nowrap}

/* Themes on this desk — numbered editorial index. */
.desk-themes .desk-theme-list{padding:0}
.desk-themes .crow{margin:0}
.desk-themes .crow + .crow{margin:0}
.desk-themes .desk-theme-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0}
.desk-themes .crow{position:relative;display:block;min-height:136px;padding:40px 20px 18px;border-right:1px solid var(--line-hair)}
.desk-themes .crow:last-child{border-right:0}
.desk-themes .crow::before{position:absolute;top:16px;left:20px;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.1em;color:var(--gold)}
.desk-themes .crow:nth-child(1)::before{content:"01"}
.desk-themes .crow:nth-child(2)::before{content:"02"}
.desk-themes .crow:nth-child(3)::before{content:"03"}
.srcstrip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line-hair);border:1px solid var(--line-hair)}
.srcstrip a{display:grid;gap:5px;padding:14px 16px;background:var(--surf);text-decoration:none}
.srcstrip a:hover{background:var(--surf-2)}
.srcstrip .sh{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}
.srcstrip .sn{font-family:var(--mono);font-size:11px;color:var(--tx3)}
.srcstrip .sp{font-size:12.5px;line-height:1.45;color:var(--tx2)}
.srcstrip .go{font-family:var(--mono);font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--gold)}
@media (max-width:1050px){
  .hotgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .board,.cases,.srcstrip{grid-template-columns:minmax(0,1fr)}
  .claimrow{grid-template-columns:minmax(0,1fr);gap:8px}
  .claimrow .who,.claimrow .call{grid-auto-flow:column;justify-content:start;gap:10px;align-items:baseline}
  .claimrow .px{text-align:left}
  .claimrow .claim-ledger{justify-self:start}
  .vidrow{grid-template-columns:58px 70px minmax(0,1fr);gap:8px 12px}
  .vidrow > div:last-child{grid-column:1 / -1}
  .threadrow{grid-template-columns:48px minmax(0,1fr);gap:6px 12px}
  .letterrow{grid-template-columns:minmax(0,1fr);gap:8px}
  .access{justify-items:start;text-align:left;grid-auto-flow:column;justify-content:start;gap:10px}
  .chanrow{grid-template-columns:124px minmax(0,1fr) 28px}
}
@media (max-width:760px){
  .desk-themes .desk-theme-list{grid-template-columns:minmax(0,1fr)}
  .desk-themes .crow{border-right:0;border-bottom:1px solid var(--line-hair)}
  .desk-themes .crow:last-child{border-bottom:0}
}
.backline{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;padding:11px 0}
.backline a{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border:1px solid var(--line);font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--tx2);text-decoration:none}
.backline a:hover{border-color:var(--gold-soft);color:var(--gold)}
#c-yt:checked ~ .stage .pg-yt,
#c-x:checked ~ .stage .pg-x,
#c-rd:checked ~ .stage .pg-rd,
#c-sub:checked ~ .stage .pg-sub{display:block}
#c-yt:checked ~ .stage .pagenav label[for="c-yt"],
#c-x:checked ~ .stage .pagenav label[for="c-x"],
#c-rd:checked ~ .stage .pagenav label[for="c-rd"],
#c-sub:checked ~ .stage .pagenav label[for="c-sub"]{background:var(--surf)}
#c-yt:checked ~ .stage .pagenav label[for="c-yt"] .nm,
#c-x:checked ~ .stage .pagenav label[for="c-x"] .nm,
#c-rd:checked ~ .stage .pagenav label[for="c-rd"] .nm,
#c-sub:checked ~ .stage .pagenav label[for="c-sub"] .nm{color:var(--tx)}
#c-yt:checked ~ .stage .pagenav label[for="c-yt"]::after,
#c-x:checked ~ .stage .pagenav label[for="c-x"]::after,
#c-rd:checked ~ .stage .pagenav label[for="c-rd"]::after,
#c-sub:checked ~ .stage .pagenav label[for="c-sub"]::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:3px;background:var(--gold)}
/* ===== narrative sources, expandable ===== */
.srcopen{margin-top:2px}
.srcopen > summary{list-style:none;cursor:pointer;display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:4px 0;font-family:var(--mono);font-size:10.5px;color:var(--tx3);text-transform:uppercase;letter-spacing:.04em}
.srcopen > summary::-webkit-details-marker{display:none}
.srcopen > summary .cnt{color:var(--gold);border-bottom:1px dotted var(--gold-soft)}
.srcopen > summary:hover .cnt{color:var(--gold-br)}
.srcopen > summary::after{content:"▾";color:var(--tx3);font-size:10px}
.srcopen[open] > summary::after{content:"▴"}
.srcbody{margin-top:8px;border-left:2px solid var(--line);padding-left:14px;display:grid;gap:11px}
.srcitem{display:grid;gap:4px}
.srcitem .sh{display:flex;flex-wrap:wrap;align-items:center;gap:7px 11px}
.srcitem .sh b{font-size:12.5px;font-weight:600}
.srcitem .sh time{font-family:var(--mono);font-size:10.5px;color:var(--tx3)}
.srcitem .sh .rk{font-family:var(--mono);font-size:9.5px;color:var(--gold);border:1px solid var(--gold-soft);padding:0 4px}
.srcitem q{font-size:13px;line-height:1.55;color:var(--tx2);font-style:italic;quotes:"“" "”"}
.srcitem a.open{font-family:var(--mono);font-size:10px;letter-spacing:.05em;text-transform:uppercase;color:var(--gold);text-decoration:none;justify-self:start}
.srcitem a.open:hover{text-decoration:underline;text-underline-offset:3px}
.panel > header .radar{margin-left:auto;font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--gold);text-decoration:none;white-space:nowrap}
.panel > header .radar:hover{text-decoration:underline;text-underline-offset:3px}
.nmeta{display:grid;gap:6px;margin-top:2px}
.nmeta .cov{display:flex;flex-wrap:wrap;gap:6px 14px;font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--tx3)}
.nmeta .cov b{color:var(--tx2);font-weight:600}
.nmeta .cited{display:flex;flex-wrap:wrap;gap:6px 12px;font-size:12.5px;color:var(--tx3);align-items:center}
.nmeta .cited em{font-family:var(--mono);font-size:10px;font-style:normal;letter-spacing:.08em;text-transform:uppercase;color:var(--tx3)}
.nmeta .cited a{color:var(--tx2);text-decoration:none;border-bottom:1px solid var(--line)}
.nmeta .cited a:hover{color:var(--gold);border-bottom-color:var(--gold-soft)}
.nmeta .cited time{font-family:var(--mono);font-size:10.5px;color:var(--tx3)}
a.tkl{color:inherit;text-decoration:none;border-bottom:1px dotted var(--line)}
a.tkl:hover{color:var(--gold);border-bottom-color:var(--gold-soft)}
.tc .syms a.tkl{color:var(--tx3)}
.tc .syms a.tkl:hover{color:var(--gold)}
.moretk{display:inline}
.moretk > summary{list-style:none;cursor:pointer;display:inline;color:var(--gold)}
.moretk > summary::-webkit-details-marker{display:none}
.moretk[open] > summary{display:none}
.moretk .rest{display:inline}
.tier1{display:inline-flex;align-items:center;gap:5px;padding:1px 6px;border:1px solid var(--gold-soft);background:var(--gold-dim);font-family:var(--mono);font-size:9.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--gold);white-space:nowrap}
.livepx{display:flex;align-items:baseline;gap:6px;font-family:var(--mono);font-size:10px;color:var(--tx3);letter-spacing:.03em;margin-top:2px}
.livepx .dotlive{width:5px;height:5px;border-radius:50%;background:var(--up);display:inline-block;flex:0 0 auto;align-self:center}
.livepx b{color:var(--tx2);font-weight:600;font-variant-numeric:tabular-nums}

/* ── production overrides ────────────────────────────────────────────────── */

/* The mockup hid every page and revealed one via :checked. The server renders
   exactly the page that was asked for, so it is always visible. */
.page { display: block; }

/* The active tab was styled by the radio rule that no longer exists. */
.pagenav a {
    display: grid;
    gap: 3px;
    flex: 0 0 auto;
    padding: 10px 22px 9px;
    border-right: 1px solid var(--line-hair);
    min-width: 168px;
    position: relative;
    text-decoration: none;
}
.pagenav a:hover .nm { color: var(--tx2); }
.pagenav a.is-active { background: var(--surf); }
.pagenav a.is-active .nm { color: var(--tx); }
.pagenav a.is-active::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: -1px;
    height: 3px;
    background: var(--gold);
}

/* Daily Alpha is a full-bleed report inside the shared site shell. Keep the
   product navbar and its mobile controls available on every desk; hiding them
   made navigation disappear as soon as a reader entered a source view. The
   report retains its own compact archive chrome below the shared navigation. */
html.da-document,
body.da-document-body {
    overflow-x: visible;
}

.da-document-body > .bz-site-footer {
    display: none !important;
}

/* Keyboard entry point, off-screen until focused. */
.da-skip-link {
    position: fixed;
    top: 8px;
    left: 8px;
    z-index: 10000;
    min-height: 38px;
    padding: 8px 12px;
    border: 1px solid var(--gold-br);
    border-radius: 5px;
    background: var(--surf-2);
    color: var(--tx);
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    transform: translateY(calc(-100% - 12px));
}

.da-skip-link:focus {
    outline: 2px solid var(--gold-br);
    outline-offset: 2px;
    transform: none;
}

/* Live controls that live in the chrome bar: the archive picker and the lock.
   The mockup had neither, so they are styled to sit inside it quietly. */
.da-date-form,
.da-lock-form {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0;
}

.da-date-form label {
    display: block;
}

.da-date-form select,
.da-date-form button,
.da-lock-button {
    height: 30px;
    border: 1px solid var(--line-soft);
    border-radius: 5px;
    background: var(--surf);
    color: var(--tx2);
    font-family: var(--mono);
    font-size: 11px;
    cursor: pointer;
}

.da-date-form select {
    width: 168px;
    padding: 0 8px;
}

.da-date-form button,
.da-lock-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    padding: 0;
}

.da-lock-button {
    border-color: transparent;
    background: transparent;
    color: var(--tx3);
}

.da-date-form select:hover,
.da-date-form button:hover,
.da-lock-button:hover {
    border-color: var(--line);
    background: var(--surf-2);
    color: var(--tx);
}

.da-date-form select:focus-visible,
.da-date-form button:focus-visible,
.da-lock-button:focus-visible,
.pagenav a:focus-visible,
.chrome-title:focus-visible {
    outline: 2px solid var(--gold-br);
    outline-offset: 2px;
}

.da-icon {
    display: block;
    flex: 0 0 15px;
    width: 15px;
    height: 15px;
}

/* The mockup was standalone; production loads Bootstrap first, and two of the
   board's class names are Bootstrap utilities. Equal specificity means only the
   properties the board's own rules declare win, and neither declared these — so
   Bootstrap's leaked through:
     .vr   is the vertical rule (width:1px, opacity:.25) — every voice row
           collapsed to a 1px sliver at quarter opacity.
     .fade is the transition utility (.fade:not(.show){opacity:0}) — the whole
           "Fading / not buying" column of the board rendered invisible.
   Neutralised explicitly rather than by renaming: `fade` is a tone value that
   comes from the stored payload, and the rest keeps this file diffable against
   the mockup. */
.vr {
    width: auto;
    min-height: 0;
    opacity: 1;
}

.bb.fade {
    opacity: 1;
}

@media (max-width: 720px) {
    .da-date-form select {
        width: 128px;
    }
}

/* ── retained legacy password-gate styles ────────────────────────────────────
   Daily Alpha is public now. Keep the old standalone template styles inert for
   rollback/reference; no live route renders the gate. */
.da-private-body,
.da-private-body * {
    box-sizing: border-box;
    letter-spacing: 0;
}

.da-private-body {
    min-height: 100vh;
    margin: 0;
    background: var(--bg-deep);
    color: var(--tx);
    font-family: var(--sans);
    -webkit-font-smoothing: antialiased;
}

.da-gate-brand {
    display: flex;
    align-items: center;
    height: 56px;
    border-bottom: 1px solid var(--line-soft);
    background: rgba(11, 13, 14, .95);
}

.da-gate-brand a {
    display: inline-flex;
    align-items: center;
    width: 100%;
    padding: 0 16px;
    text-decoration: none;
}

.da-gate-brand img {
    display: block;
    width: auto;
    height: 32px;
}

.da-gate-brand a:hover img {
    opacity: .84;
}

.da-gate {
    display: grid;
    min-height: calc(100vh - 76px);
    place-items: center;
    padding: 32px 24px 120px;
}

.da-gate-panel {
    width: min(430px, 100%);
}

.da-gate-panel h1 {
    margin: 0;
    color: var(--tx);
    font-family: var(--serif);
    font-size: 56px;
    font-weight: 400;
    line-height: 1;
}

.da-gate-panel > p {
    margin: 18px 0 32px;
    color: var(--tx2);
    font-size: 16px;
    line-height: 1.6;
}

.da-gate-panel > p strong {
    color: var(--tx);
    font-weight: 600;
}

.da-gate-form label {
    display: block;
    margin-bottom: 8px;
    color: var(--tx);
    font-size: 14px;
    font-weight: 500;
}

.da-gate-control {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 8px;
}

.da-gate-control input,
.da-gate-control button {
    height: 44px;
    border-radius: 5px;
    font: inherit;
}

.da-gate-control input {
    min-width: 0;
    padding: 0 13px;
    border: 1px solid var(--line);
    background: var(--surf);
    color: var(--tx);
    font-family: var(--mono);
}

.da-gate-control input:focus {
    border-color: var(--gold-br);
    outline: 2px solid var(--gold-dim);
    outline-offset: 2px;
}

.da-gate-control button {
    padding: 0 20px;
    border: 1px solid var(--gold);
    background: var(--gold);
    color: var(--bg-deep);
    font-weight: 600;
    cursor: pointer;
}

.da-gate-control button:hover {
    background: var(--gold-br);
    border-color: var(--gold-br);
}

.da-gate-control button:focus-visible {
    outline: 2px solid var(--gold-br);
    outline-offset: 2px;
}

.da-gate-error {
    margin: 10px 0 0;
    color: var(--down);
    font-size: 13px;
    line-height: 1.5;
}

/* The bull/bear framework has two columns, not the board's three. */
.bigboard.two {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

/* Inline fragment player: same visible YouTube surface as the standard
   Buzzberg video page, bounded to the evidence window. */
.vidrow .da-video {
    position: relative;
    width: 100%;
    max-width: 760px;
    margin: 12px 0 0;
    background: #000;
    aspect-ratio: 16 / 9;
    border-radius: 8px;
    overflow: hidden;
}

.vidrow .da-video iframe {
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
}

/* The claim row's content cell: headline over summary. */
.claimrow .claim {
    min-width: 0;
}

.claimrow .claim h4 {
    margin: 0 0 4px;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.35;
}

/* ── what the mockup could not anticipate ────────────────────────────────────
   The mockup's chrome was one fixed 53px row, so `.pagenav{top:53px}` was safe
   there. Production's chrome carries a date picker, edition links and a lock
   button; below ~820px it wraps and grows to 90-160px, and since it also has
   the higher z-index it painted straight over the tab bar — fully hiding it at
   393px and narrower. Master kept the tabs pinned and the header static, so
   below the wrap point we do the same: only the tabs stick. */
@media (max-width: 900px) {
    .chrome {
        position: static;
    }

    .pagenav {
        top: 0;
    }
}

/* ── Selected Positioning board ──────────────────────────────────────────
   Three decisions stay visible at once. Each lane hugs its own content, each
   thesis is a compact signal tile, and its price context is attached as the
   footer rather than floating in another nested card. */
.positioning-signal-tiles .positioning-heading {
    margin-top: 38px;
}

.positioning-signal-tiles .positioning-board {
    gap: 10px;
    align-items: start;
}

.positioning-signal-tiles .positioning-board .bb {
    padding: 8px;
    align-self: start;
    border: 1px solid var(--line);
    background: var(--surf-2);
}

.positioning-signal-tiles .positioning-board .bb > header {
    padding: 10px 10px 14px;
    border: 0;
    background: transparent;
}

.positioning-signal-tiles .positioning-board .bb > header .hm {
    display: none;
}

.positioning-signal-tiles .positioning-board .bb > header h3 {
    font-size: 18px;
    letter-spacing: -.012em;
}

.positioning-signal-tiles .positioning-card {
    margin-bottom: 8px;
    padding: 16px;
    border: 1px solid var(--line-hair);
    background: var(--bg);
}

.positioning-signal-tiles .positioning-card:last-child {
    margin-bottom: 0;
}

.positioning-signal-tiles .positioning-card + .positioning-card {
    border-top: 1px solid var(--line-hair);
}

.positioning-signal-tiles .positioning-card h4 {
    margin-bottom: 8px;
    font-size: 17px;
    line-height: 1.32;
    letter-spacing: -.012em;
}

.positioning-signal-tiles .positioning-card .why {
    margin-bottom: 14px;
    color: var(--tx2);
    font-size: 15px;
    line-height: 1.58;
}

.positioning-signal-tiles .positioning-card .positioning-voice {
    gap: 8px;
    padding: 9px 11px;
    margin-bottom: 12px;
    background: var(--surf);
}

.positioning-signal-tiles .positioning-card .positioning-voice .vt b {
    font-size: 13.5px;
}

.positioning-signal-tiles .positioning-card .positioning-voice q {
    font-size: 13.5px;
    line-height: 1.52;
}

.positioning-signal-tiles .positioning-card .positioning-market {
    margin: 12px -16px -16px;
    padding: 11px 16px 13px;
    border: 0;
    border-top: 1px solid var(--line-hair);
    background: var(--surf);
}

.positioning-signal-tiles .positioning-card .positioning-market > .vt {
    line-height: 1.65;
}

.positioning-signal-tiles .positioning-card .ledger {
    width: 100%;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.positioning-signal-tiles .positioning-card .ledger .lab {
    font-size: 10px;
}

.positioning-signal-tiles .positioning-card .ledger .val {
    font-size: 12.5px;
}

@media (max-width: 900px) {
    .positioning-signal-tiles .positioning-card {
        padding: 16px;
    }
}

/* Source text is user-authored and contains bare URLs. One unbreakable token in
   a Reddit comment pushed the Reddit desk 105px wide at 375px, panning the whole
   page sideways into an empty gutter. */
.crowdq,
.claimrow q,
.threadrow q,
.vidrow p,
.claimrow p,
.threadrow p,
.letterrow p,
.bcard .why,
.dnote,
.dwatch {
    overflow-wrap: anywhere;
}

/* `.why` and `.quietnote` are used outside the shapes the mockup gave them:
   the cluster blurb is a `.why` outside `.bcard`, and `.quietnote` is a leaf
   `<p>` rather than a wrapper. Both fell back to Bootstrap's 16px body type,
   which rendered them louder than the headings beneath. */
.pbody > .why,
p.quietnote {
    margin: 0 0 11px;
    font-size: 13.5px;
    line-height: 1.6;
    color: var(--tx2);
}

p.quietnote {
    margin: 0;
    color: var(--tx3);
}

/* Why the row is on the desk, and what to watch next — dropped by the port. */
.vidrow .dnote,
.vidrow .dwatch,
.claimrow .dnote,
.claimrow .dwatch,
.threadrow .dnote,
.threadrow .dwatch,
.letterrow .dnote,
.letterrow .dwatch {
    max-width: 92ch;
    margin: 6px 0 0;
    font-size: 11.5px;
    line-height: 1.5;
    color: var(--tx3);
}

.youtube-tail {
    border-top: 0;
}

.dwatch .lab {
    font-family: var(--mono);
    font-size: 9.5px;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--gold);
    margin-right: 5px;
}

/* The heat grid kept its two-column rule below the breakpoint where every
   other grid collapses, and its cards overlapped at 320px. */
@media (max-width: 760px) {
    .hotgrid {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* The mockup collapses Reddit to two columns but leaves four grid children on
   auto-placement. The thread body then lands in the 48px score column and its
   headline wraps one word per line. Keep the score rail on the left and place
   every textual child explicitly in the readable column. */
@media (max-width: 1050px) {
    .threadrow > .sc {
        grid-column: 1;
        grid-row: 1 / span 3;
    }

    .threadrow > time {
        grid-column: 2;
        grid-row: 1;
    }

    .threadrow > .threadbody {
        grid-column: 2;
        grid-row: 2;
        min-width: 0;
    }

    .threadrow > .cm {
        grid-column: 2;
        grid-row: 3;
        justify-self: start;
    }
}

/* ── ported verbatim from the mockup: blocks the first pass left out ──────── */
.chanbar{display:grid;gap:5px}
.chanrow{display:grid;grid-template-columns:184px minmax(0,1fr) 32px;align-items:center;gap:12px;font-size:12.5px}
.chanrow .cn{color:var(--tx2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chanrow .cb{height:9px;background:var(--line-hair)}
.chanrow .cb i{display:block;height:100%;background:var(--yt);opacity:.8}
.chanrow .cv{font-family:var(--mono);font-size:11px;color:var(--tx3);text-align:right}
.livepx{display:flex;align-items:baseline;gap:6px;font-family:var(--mono);font-size:10px;color:var(--tx3);letter-spacing:.03em;margin-top:2px}
.livepx .dotlive{width:5px;height:5px;border-radius:50%;background:var(--up);display:inline-block;flex:0 0 auto;align-self:center}
.livepx b{color:var(--tx2);font-weight:600;font-variant-numeric:tabular-nums}

@media (max-width: 620px) {
    .chanrow { grid-template-columns: 118px minmax(0, 1fr) 28px; }
}

/* A translated quote is our words, not the speaker's — it says so. */
.tx-note{display:block;margin-top:3px;font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--tx3)}

/* ── Source-desk composition studies ────────────────────────────────────────
   These five opt-in previews use the real X, Reddit and Substack rows. They
   are deliberately inert without `feed_preview=1..5`, so product review can
   happen in the actual page without changing the public/default surface. */
@media (min-width: 901px) {
    /* 1 — Editorial rail: quiet, publication-like rows with a strong source
       spine and generous measure for the thesis. */
    .feed-preview-1 .desk-item {
        margin: 0 12px;
        padding: 20px 18px;
        border-bottom-color: var(--line);
        border-left: 3px solid var(--line);
        background: linear-gradient(90deg, rgba(255,255,255,.018), transparent 44%);
    }
    .feed-preview-1 .claimrow { border-left-color: var(--info); }
    .feed-preview-1 .threadrow { border-left-color: var(--rd); }
    .feed-preview-1 .letterrow { border-left-color: var(--sub); }
    .feed-preview-1 .desk-item h4 {
        font-size: 17px;
        line-height: 1.34;
        letter-spacing: -.012em;
    }
    .feed-preview-1 .desk-item p { max-width: 76ch; }
    .feed-preview-1 .claimrow {
        grid-template-columns: 154px 86px minmax(0, 1fr) 176px;
        gap: 18px;
    }
    .feed-preview-1 .threadrow {
        grid-template-columns: 58px 64px minmax(0, 1fr) auto;
        gap: 18px;
        align-items: start;
    }
    .feed-preview-1 .threadrow .sc b { font-size: 19px; }
    .feed-preview-1 .letterrow {
        grid-template-columns: 72px minmax(0, 1fr) 128px;
        gap: 22px;
    }

    /* 2 — Signal cards: every retained item is a self-contained decision card.
       Best for fast scanning and clear separation on long desks. */
    .feed-preview-2 .pbody.flush {
        padding: 12px;
        background: var(--bg-deep);
    }
    .feed-preview-2 .desk-item {
        margin: 0 0 10px;
        padding: 16px;
        border: 1px solid var(--line);
        border-top: 2px solid var(--line);
        background: var(--surf);
        box-shadow: 0 8px 24px rgba(0,0,0,.11);
    }
    .feed-preview-2 .desk-item:last-child { margin-bottom: 0; }
    .feed-preview-2 .claimrow { border-top-color: var(--info); }
    .feed-preview-2 .threadrow { border-top-color: var(--rd); }
    .feed-preview-2 .letterrow { border-top-color: var(--sub); }
    .feed-preview-2 .desk-item h4 {
        font-size: 16px;
        line-height: 1.35;
    }
    .feed-preview-2 .claimrow {
        grid-template-columns: 160px 88px minmax(0, 1fr) 176px;
    }
    .feed-preview-2 .threadrow {
        grid-template-columns: 66px 60px minmax(0, 1fr) auto;
        align-items: start;
    }
    .feed-preview-2 .threadrow .sc {
        min-height: 54px;
        place-content: center;
        padding: 7px;
        border: 1px solid rgba(223,113,104,.34);
        background: rgba(223,113,104,.055);
        text-align: center;
    }
    .feed-preview-2 .threadrow .sc b { font-size: 20px; }
    .feed-preview-2 .letterrow {
        grid-template-columns: 72px minmax(0, 1fr) 132px;
    }
    .feed-preview-2 .access {
        padding: 10px;
        border: 1px solid var(--line-hair);
        background: var(--bg);
    }

    /* 3 — Research ledger: compact terminal rhythm, fixed metadata rails and
       a thin source-colour index for maximum information per screen. */
    .feed-preview-3 .pbody.flush { padding: 0 14px; }
    .feed-preview-3 .desk-item {
        position: relative;
        padding: 11px 10px 12px 16px;
        border-bottom: 1px solid var(--line);
    }
    .feed-preview-3 .desk-item::before {
        content: "";
        position: absolute;
        inset: 10px auto 10px 0;
        width: 2px;
        background: var(--line);
    }
    .feed-preview-3 .claimrow::before { background: var(--info); }
    .feed-preview-3 .threadrow::before { background: var(--rd); }
    .feed-preview-3 .letterrow::before { background: var(--sub); }
    .feed-preview-3 .desk-item h4 {
        font-size: 14px;
        line-height: 1.32;
    }
    .feed-preview-3 .desk-item p {
        font-size: 12.5px;
        line-height: 1.5;
    }
    .feed-preview-3 .crowdq,
    .feed-preview-3 .claimrow q {
        margin-top: 4px;
        font-size: 11.5px;
        line-height: 1.45;
    }
    .feed-preview-3 .claimrow {
        grid-template-columns: 148px 82px minmax(0, 1fr) 168px;
        gap: 12px;
    }
    .feed-preview-3 .threadrow {
        grid-template-columns: 48px 54px minmax(0, 1fr) auto;
        gap: 12px;
    }
    .feed-preview-3 .threadrow .sc b { font-size: 15px; }
    .feed-preview-3 .letterrow {
        grid-template-columns: 58px minmax(0, 1fr) 118px;
        gap: 14px;
    }

    /* 4 — Evidence split: editorial claim on the left, source evidence on a
       quiet right rail. It makes “what we think” and “what was actually said”
       visually distinct. */
    .feed-preview-4 .desk-item {
        margin: 0 12px;
        padding: 19px 16px;
        border-bottom-color: var(--line);
        background: var(--bg);
    }
    .feed-preview-4 .claimrow {
        grid-template-columns: 154px minmax(0, 1fr) 176px;
        grid-template-areas:
            "who claim ledger"
            "call claim ledger";
        gap: 6px 20px;
    }
    .feed-preview-4 .claimrow .who { grid-area: who; }
    .feed-preview-4 .claimrow .call { grid-area: call; }
    .feed-preview-4 .claimrow .claim {
        grid-area: claim;
        display: grid;
        grid-template-columns: minmax(0, 1fr) 260px;
        gap: 5px 22px;
    }
    .feed-preview-4 .claimrow .claim h4,
    .feed-preview-4 .claimrow .claim p,
    .feed-preview-4 .claimrow .claim .dnote,
    .feed-preview-4 .claimrow .claim .dwatch,
    .feed-preview-4 .claimrow .claim .jump { grid-column: 1; }
    .feed-preview-4 .claimrow .claim q {
        grid-column: 2;
        grid-row: 1 / span 5;
        margin: 0;
        padding: 11px 14px;
        border-left: 2px solid var(--info);
        background: var(--surf);
    }
    .feed-preview-4 .claimrow .claim-ledger { grid-area: ledger; }
    .feed-preview-4 .threadrow {
        grid-template-columns: 62px 62px minmax(0, 1fr) auto;
        align-items: start;
    }
    .feed-preview-4 .threadrow .threadbody {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 280px;
        gap: 5px 22px;
    }
    .feed-preview-4 .threadbody > :not(q):not(.tx-note) { grid-column: 1; }
    .feed-preview-4 .threadbody > q {
        grid-column: 2;
        grid-row: 1 / span 7;
        margin: 0;
        padding: 11px 14px;
        border-left-color: var(--rd);
        background: var(--surf);
    }
    .feed-preview-4 .threadbody > .tx-note {
        grid-column: 2;
        align-self: end;
    }
    .feed-preview-4 .letterrow {
        grid-template-columns: 72px minmax(0, 1fr) 138px;
        gap: 22px;
    }
    .feed-preview-4 .letterrow > div:nth-child(2) {
        padding-right: 24px;
        border-right: 1px solid var(--line);
    }

    /* 5 — Focus sheet: a spacious research-note card with metadata as a
       compact masthead and the thesis taking the full readable width. */
    .feed-preview-5 .pbody.flush {
        padding: 14px;
        background: var(--bg-deep);
    }
    .feed-preview-5 .desk-item {
        margin: 0 auto 14px;
        max-width: 1120px;
        padding: 20px 22px;
        border: 1px solid var(--line);
        background: linear-gradient(145deg, rgba(255,255,255,.026), var(--surf) 50%);
    }
    .feed-preview-5 .desk-item h4 {
        font-size: 18px;
        line-height: 1.3;
        letter-spacing: -.015em;
    }
    .feed-preview-5 .claimrow {
        grid-template-columns: 190px minmax(0, 1fr) 184px;
        grid-template-areas:
            "who call ledger"
            "claim claim ledger";
        gap: 12px 22px;
    }
    .feed-preview-5 .claimrow .who { grid-area: who; }
    .feed-preview-5 .claimrow .call { grid-area: call; }
    .feed-preview-5 .claimrow .claim {
        grid-area: claim;
        padding-top: 15px;
        border-top: 1px solid var(--line-hair);
    }
    .feed-preview-5 .claimrow .claim-ledger { grid-area: ledger; }
    .feed-preview-5 .threadrow {
        grid-template-columns: 74px minmax(0, 1fr) auto;
        grid-template-areas:
            "score time comments"
            "body body body";
        gap: 11px 18px;
    }
    .feed-preview-5 .threadrow .sc {
        grid-area: score;
        display: flex;
        align-items: baseline;
        gap: 5px;
        text-align: left;
    }
    .feed-preview-5 .threadrow .sc b { font-size: 21px; }
    .feed-preview-5 .threadrow > time { grid-area: time; align-self: center; }
    .feed-preview-5 .threadrow .threadbody {
        grid-area: body;
        padding-top: 14px;
        border-top: 1px solid var(--line-hair);
    }
    .feed-preview-5 .threadrow .cm { grid-area: comments; }
    .feed-preview-5 .letterrow {
        grid-template-columns: minmax(0, 1fr) 150px;
        grid-template-areas:
            "time access"
            "body body";
        gap: 12px 22px;
    }
    .feed-preview-5 .letterrow > time { grid-area: time; }
    .feed-preview-5 .letterrow > div:nth-child(2) {
        grid-area: body;
        padding-top: 15px;
        border-top: 1px solid var(--line-hair);
    }
    .feed-preview-5 .letterrow .access { grid-area: access; }
}

@media (max-width: 900px) {
    .feed-preview .desk-item {
        margin: 0;
        padding-left: 10px;
        padding-right: 10px;
    }
}

/* ── Source-desk composition studies, round two ─────────────────────────────
   The first studies varied containers more than reading hierarchy. These reset
   them around the actual Buzzberg type kit and remove inventory/audit chrome
   that does not help a reader choose what to open. */
.feed-preview {
    --sans: "Geist", "Inter", system-ui, sans-serif;
    --mono: "JetBrains Mono", ui-monospace, monospace;
}

.feed-preview .pbody.flush { background: var(--bg); }
.feed-preview .panel:has(.letterrow) > header .pm.right { display: none; }
.feed-preview .desk-item {
    position: relative;
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 18px 0;
    border: 0;
    border-bottom: 1px solid var(--line-hair);
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}
.feed-preview .desk-item::before { content: none; }
.feed-preview .desk-item h4 {
    margin: 0 0 7px;
    color: var(--tx);
    font-family: var(--sans);
    font-size: 18px;
    font-weight: 620;
    line-height: 1.35;
    letter-spacing: -.014em;
}
.feed-preview .desk-item .desk-summary {
    max-width: 74ch;
    margin: 0;
    color: var(--tx2);
    font-family: var(--sans);
    font-size: 15px;
    line-height: 1.6;
}
.feed-preview .desk-title-link {
    color: inherit;
    text-decoration: none;
}
.feed-preview .desk-title-link:hover {
    color: var(--gold-br);
}
.feed-preview .access,
.feed-preview .dnote,
.feed-preview .tx-note,
.feed-preview .jump {
    display: none;
}
.feed-preview .desk-evidence { display: none; }
.feed-preview .dwatch {
    max-width: 72ch;
    margin-top: 9px;
    color: var(--tx2);
    font-family: var(--sans);
    font-size: 14px;
    line-height: 1.5;
}
.feed-preview .dwatch .lab {
    font-family: var(--mono);
    font-size: 10px;
}
.feed-preview .inbrief {
    margin: 0 0 0 7px;
    vertical-align: .12em;
}
.feed-preview .claimrow .claim,
.feed-preview .threadrow .threadbody {
    display: block;
    min-width: 0;
    padding: 0;
    border: 0;
}
.feed-preview .letterrow > div:nth-child(2) {
    padding: 0;
    border: 0;
}

@media (min-width: 901px) {
    /* 1 — Buzzberg Stream. A calm, single reading column with a compact source
       rail. This keeps actionable Watch text but removes raw quote duplication. */
    .feed-preview-1 .pbody.flush { padding: 0 28px; }
    .feed-preview-1 .desk-item {
        max-width: 1120px;
        margin: 0 auto;
        padding: 24px 0;
    }
    .feed-preview-1 .claimrow {
        grid-template-columns: 168px minmax(0, 1fr) 176px;
        grid-template-areas:
            "who claim ledger"
            "call claim ledger";
        gap: 8px 28px;
    }
    .feed-preview-1 .claimrow .who { grid-area: who; }
    .feed-preview-1 .claimrow .call { grid-area: call; }
    .feed-preview-1 .claimrow .claim { grid-area: claim; }
    .feed-preview-1 .claimrow .claim-ledger { grid-area: ledger; }
    .feed-preview-1 .threadrow {
        grid-template-columns: 92px minmax(0, 1fr) auto;
        grid-template-areas:
            "score body comments"
            "time body comments";
        gap: 5px 28px;
        align-items: start;
    }
    .feed-preview-1 .threadrow .sc {
        grid-area: score;
        display: flex;
        gap: 5px;
        align-items: baseline;
        text-align: left;
    }
    .feed-preview-1 .threadrow .sc b { font-size: 18px; }
    .feed-preview-1 .threadrow > time { grid-area: time; }
    .feed-preview-1 .threadrow .threadbody { grid-area: body; }
    .feed-preview-1 .threadrow .cm { grid-area: comments; }
    .feed-preview-1 .letterrow {
        grid-template-columns: 92px minmax(0, 1fr);
        gap: 28px;
    }

    /* 2 — Editorial Notes. Inspired by restrained newsletter indexes: metadata
       is one masthead row, then a generous serif headline and a short deck. */
    .feed-preview-2 .pbody.flush { padding: 0 28px; }
    .feed-preview-2 .desk-item {
        max-width: 940px;
        margin: 0 auto;
        padding: 30px 0 32px;
    }
    .feed-preview-2 .desk-item h4 {
        max-width: 31ch;
        margin: 12px 0 10px;
        font-family: var(--serif);
        font-size: 27px;
        font-weight: 400;
        line-height: 1.12;
        letter-spacing: -.012em;
    }
    .feed-preview-2 .desk-item .desk-summary {
        max-width: 66ch;
        font-size: 16px;
        line-height: 1.65;
    }
    .feed-preview-2 .claimrow {
        grid-template-columns: minmax(0, 1fr) auto 176px;
        grid-template-areas:
            "who call ledger"
            "claim claim claim";
        gap: 6px 22px;
    }
    .feed-preview-2 .claimrow .who { grid-area: who; }
    .feed-preview-2 .claimrow .call { grid-area: call; }
    .feed-preview-2 .claimrow .claim { grid-area: claim; }
    .feed-preview-2 .claimrow .claim-ledger { grid-area: ledger; }
    .feed-preview-2 .threadrow {
        grid-template-columns: auto minmax(0, 1fr) auto;
        grid-template-areas:
            "score time comments"
            "body body body";
        gap: 8px 18px;
    }
    .feed-preview-2 .threadrow .sc {
        grid-area: score;
        display: flex;
        align-items: baseline;
        gap: 5px;
        text-align: left;
    }
    .feed-preview-2 .threadrow .sc b { font-size: 18px; }
    .feed-preview-2 .threadrow > time { grid-area: time; }
    .feed-preview-2 .threadrow .threadbody { grid-area: body; }
    .feed-preview-2 .threadrow .cm { grid-area: comments; }
    .feed-preview-2 .letterrow {
        grid-template-columns: 1fr;
        gap: 0;
    }
    .feed-preview-2 .letterrow > time { order: -1; }
    .feed-preview-2 .dwatch { display: none; }

    /* 3 — Market Wire. Koyfin/Reuters-like scan density: reliable columns,
       readable body type, and only two lines of context per source. */
    .feed-preview-3 .pbody.flush { padding: 0 20px; }
    .feed-preview-3 .desk-item {
        padding: 15px 0;
    }
    .feed-preview-3 .desk-item h4 {
        margin-bottom: 4px;
        font-size: 16px;
        line-height: 1.35;
    }
    .feed-preview-3 .desk-item .desk-summary {
        display: -webkit-box;
        overflow: hidden;
        max-width: 82ch;
        font-size: 14px;
        line-height: 1.5;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
    }
    .feed-preview-3 .claimrow {
        grid-template-columns: 154px 88px minmax(0, 1fr) 176px;
        gap: 16px;
    }
    .feed-preview-3 .threadrow {
        grid-template-columns: 52px 64px minmax(0, 1fr) auto;
        gap: 16px;
        align-items: start;
    }
    .feed-preview-3 .threadrow .sc {
        min-height: 0;
        padding: 0;
        border: 0;
        background: transparent;
        text-align: right;
    }
    .feed-preview-3 .threadrow .sc b { font-size: 16px; }
    .feed-preview-3 .letterrow {
        grid-template-columns: 68px minmax(0, 1fr);
        gap: 18px;
    }
    .feed-preview-3 .dwatch { display: none; }

    /* 4 — Source Proof. The editorial paraphrase gives way to the exact source
       line when one is available; the evidence is the visual centre. */
    .feed-preview-4 .pbody.flush { padding: 0 28px; }
    .feed-preview-4 .desk-item {
        max-width: 1120px;
        margin: 0 auto;
        padding: 26px 0;
    }
    .feed-preview-4 .claimrow {
        grid-template-columns: 168px minmax(0, 1fr) 176px;
        grid-template-areas:
            "who claim ledger"
            "call claim ledger";
        gap: 8px 28px;
    }
    .feed-preview-4 .claimrow .who { grid-area: who; }
    .feed-preview-4 .claimrow .call { grid-area: call; }
    .feed-preview-4 .claimrow .claim { grid-area: claim; }
    .feed-preview-4 .claimrow .claim-ledger { grid-area: ledger; }
    .feed-preview-4 .threadrow {
        grid-template-columns: 92px minmax(0, 1fr) auto;
        grid-template-areas:
            "score body comments"
            "time body comments";
        gap: 6px 28px;
        align-items: start;
    }
    .feed-preview-4 .threadrow .sc {
        grid-area: score;
        display: flex;
        gap: 5px;
        align-items: baseline;
        text-align: left;
    }
    .feed-preview-4 .threadrow .sc b { font-size: 18px; }
    .feed-preview-4 .threadrow > time { grid-area: time; }
    .feed-preview-4 .threadrow .threadbody { grid-area: body; }
    .feed-preview-4 .threadrow .cm { grid-area: comments; }
    .feed-preview-4 .letterrow {
        grid-template-columns: 92px minmax(0, 1fr);
        gap: 28px;
    }
    .feed-preview-4 .desk-item h4 { font-size: 19px; }
    .feed-preview-4 .claimrow .claim q.desk-evidence,
    .feed-preview-4 .threadrow .threadbody q.desk-evidence {
        display: block;
        max-width: 68ch;
        margin: 11px 0 0;
        padding: 1px 0 1px 16px;
        border-left: 2px solid var(--gold);
        background: transparent;
        color: var(--tx2);
        font-family: var(--sans);
        font-size: 15px;
        font-style: normal;
        line-height: 1.6;
    }
    .feed-preview-4 .threadrow .threadbody q.desk-evidence { border-left-color: var(--rd); }
    .feed-preview-4 .claim:has(.desk-evidence) .desk-summary,
    .feed-preview-4 .threadbody:has(.desk-evidence) .desk-summary {
        display: none;
    }

    /* 5 — Essential. The shortest useful source list: strong headline, one
       clipped deck, relevant market numbers, and nothing that looks like audit
       inventory. */
    .feed-preview-5 .pbody.flush { padding: 0 28px; }
    .feed-preview-5 .desk-item {
        max-width: 1080px;
        margin: 0 auto;
        padding: 22px 0;
    }
    .feed-preview-5 .desk-item h4 {
        margin-bottom: 5px;
        font-size: 19px;
    }
    .feed-preview-5 .desk-item .desk-summary {
        display: -webkit-box;
        overflow: hidden;
        max-width: 70ch;
        font-size: 15px;
        line-height: 1.52;
        -webkit-box-orient: vertical;
        -webkit-line-clamp: 2;
    }
    .feed-preview-5 .claimrow {
        grid-template-columns: 164px minmax(0, 1fr) 176px;
        grid-template-areas:
            "who claim ledger"
            "call claim ledger";
        gap: 6px 26px;
    }
    .feed-preview-5 .claimrow .who { grid-area: who; }
    .feed-preview-5 .claimrow .call { grid-area: call; }
    .feed-preview-5 .claimrow .claim { grid-area: claim; }
    .feed-preview-5 .claimrow .claim-ledger { grid-area: ledger; }
    .feed-preview-5 .threadrow {
        grid-template-columns: 76px minmax(0, 1fr);
        grid-template-areas:
            "score body"
            "time body";
        gap: 5px 26px;
        align-items: start;
    }
    .feed-preview-5 .threadrow .sc {
        grid-area: score;
        display: flex;
        align-items: baseline;
        gap: 4px;
        text-align: left;
    }
    .feed-preview-5 .threadrow .sc b { font-size: 18px; }
    .feed-preview-5 .threadrow > time { grid-area: time; }
    .feed-preview-5 .threadrow .threadbody { grid-area: body; }
    .feed-preview-5 .threadrow .cm { display: none; }
    .feed-preview-5 .letterrow {
        grid-template-columns: 76px minmax(0, 1fr);
        grid-template-areas: none;
        gap: 26px;
    }
    .feed-preview-5 .letterrow > time { grid-area: auto; }
    .feed-preview-5 .letterrow > div:nth-child(2) { grid-area: auto; }
    .feed-preview-5 .dwatch,
    .feed-preview-5 .cov { display: none; }
}

@media (max-width: 900px) {
    .feed-preview .desk-item {
        padding: 20px 0;
    }
    .feed-preview .desk-item h4 {
        font-size: 18px;
    }
    .feed-preview .access,
    .feed-preview .dnote,
    .feed-preview .tx-note,
    .feed-preview .jump,
    .feed-preview .desk-evidence {
        display: none;
    }
}

/* ── YouTube editorial feed ────────────────────────────────────────────────
   The selected production layout keeps the retained claim at reading size and
   places its bounded video beside it. Channel inventory, transcript expanders,
   audit notes and other small-print layers are intentionally absent here. */
.youtube-editorial-feed .youtube-channel-panel,
.youtube-editorial-feed .youtube-cluster > header .pm,
.youtube-editorial-feed .vidrow > time,
.youtube-editorial-feed .vidrow > .dur,
.youtube-editorial-feed .vidrow .inbrief {
    display: none;
}

.youtube-editorial-feed .youtube-cluster {
    margin-top: 22px;
    border-color: var(--line);
    background: var(--bg);
}

.youtube-editorial-feed .youtube-cluster > header {
    min-height: 62px;
    padding: 17px 20px;
    border-bottom: 1px solid var(--gold-soft);
    background: var(--surf-2);
}

.youtube-editorial-feed .youtube-cluster > header h2 {
    color: var(--tx);
    font-size: 22px;
    font-weight: 650;
    line-height: 1.22;
    letter-spacing: -.018em;
}

.youtube-editorial-feed .youtube-cluster > .pbody {
    padding: 20px;
}

.youtube-editorial-feed .youtube-cluster .pbody > .why {
    max-width: 76ch;
    margin: 0 0 22px;
    color: var(--tx2);
    font-size: 15.5px;
    line-height: 1.58;
}

.youtube-editorial-feed .vidrow {
    display: block;
    padding: 22px 0;
    border-bottom-color: var(--line-soft);
}

.youtube-editorial-feed .vidrow:first-of-type {
    padding-top: 0;
}

.youtube-editorial-feed .vidrow:last-child {
    padding-bottom: 0;
    border-bottom: 0;
}

.youtube-editorial-feed .vidrow > div:last-child {
    display: grid;
    min-width: 0;
    grid-column: auto;
    grid-template-columns: minmax(280px, .82fr) minmax(430px, 1.18fr);
    grid-template-rows: auto auto auto auto 1fr;
    column-gap: 30px;
    align-items: start;
}

.youtube-editorial-feed .vidrow .ch,
.youtube-editorial-feed .vidrow h4,
.youtube-editorial-feed .vidrow .desk-summary,
.youtube-editorial-feed .vidrow .cov,
.youtube-editorial-feed .vidrow .jump {
    grid-column: 1;
}

.youtube-editorial-feed .vidrow .ch {
    margin: 0 0 7px;
    color: var(--yt);
    font-size: 13.5px;
    font-weight: 650;
}

.youtube-editorial-feed .vidrow h4 {
    margin: 0 0 10px;
    color: var(--tx);
    font-size: 20px;
    font-weight: 650;
    line-height: 1.3;
    letter-spacing: -.015em;
}

.youtube-editorial-feed .vidrow p.desk-summary {
    max-width: 68ch;
    color: var(--tx2);
    font-size: 15px;
    line-height: 1.56;
}

.youtube-editorial-feed .vidrow .cov {
    display: flex;
    flex-wrap: wrap;
    gap: 5px 12px;
    margin-top: 14px;
    color: var(--tx2);
    font-family: var(--mono);
    font-size: 12.5px;
    line-height: 1.5;
}

.youtube-editorial-feed .vidrow .cov a.tkl {
    padding-bottom: 1px;
    border-bottom-color: var(--line);
}

.youtube-editorial-feed .vidrow .da-video {
    width: 100%;
    max-width: none;
    margin: 0;
    grid-column: 2;
    grid-row: 1 / span 5;
    border: 1px solid var(--line);
    border-radius: 6px;
}

.youtube-editorial-feed .vidrow .jump {
    justify-self: start;
    margin-top: 16px;
    padding: 7px 12px;
    font-size: 12px;
}

@media (max-width: 900px) {
    .youtube-editorial-feed .youtube-cluster > header {
        min-height: 0;
        padding: 15px 16px;
    }

    .youtube-editorial-feed .youtube-cluster > header h2 {
        font-size: 20px;
    }

    .youtube-editorial-feed .youtube-cluster > .pbody {
        padding: 16px;
    }

    .youtube-editorial-feed .youtube-cluster .pbody > .why {
        margin-bottom: 18px;
        font-size: 15px;
    }

    .youtube-editorial-feed .vidrow,
    .youtube-editorial-feed .vidrow:first-of-type,
    .youtube-editorial-feed .vidrow:last-child {
        display: block;
        padding: 18px 0;
        border-width: 0 0 1px;
        background: transparent;
    }

    .youtube-editorial-feed .vidrow:first-of-type {
        padding-top: 0;
    }

    .youtube-editorial-feed .vidrow:last-child {
        padding-bottom: 0;
        border-bottom: 0;
    }

    .youtube-editorial-feed .vidrow > div:last-child {
        display: flex;
        padding: 0;
        flex-direction: column;
    }

    .youtube-editorial-feed .vidrow .da-video {
        order: -1;
        width: 100%;
        margin: 0 0 16px;
    }

    .youtube-editorial-feed .vidrow h4 {
        font-size: 18px;
    }

    .youtube-editorial-feed .vidrow p.desk-summary {
        font-size: 15px;
    }

    .youtube-editorial-feed .vidrow .jump {
        margin-top: 14px;
        align-self: flex-start;
    }
}

/* ── Reddit reading hierarchy ─────────────────────────────────────────────
   Thread copy remains the reading surface; market context is a compact tape,
   not a second headline. Keep every ticker fully clickable while preventing a
   long symbol list from competing with the post title or score. */
.feed-preview-1 .threadrow {
    grid-template-columns: 72px minmax(0, 1fr) auto;
    column-gap: 24px;
    row-gap: 4px;
}

.feed-preview-1 .threadrow .sc {
    gap: 4px;
}

.feed-preview-1 .threadrow .sc b {
    font-size: 16px;
    line-height: 1;
}

.feed-preview-1 .threadrow .sc span {
    display: none;
}

.feed-preview-1 .threadrow .threadbody h4 {
    max-width: 58ch;
    font-size: 17px;
    line-height: 1.34;
}

.feed-preview-1 .threadrow .threadbody .desk-summary {
    max-width: 76ch;
    font-size: 14.5px;
    line-height: 1.58;
}

.feed-preview-1 .threadrow .reddit-market {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    max-width: 100%;
    margin-top: 12px;
}

.feed-preview-1 .threadrow .reddit-ticker-list {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    min-width: 0;
}

.feed-preview-1 .threadrow .reddit-ticker {
    display: inline-flex;
    align-items: baseline;
    gap: 7px;
    min-width: 0;
    padding: 5px 8px;
    border: 1px solid var(--line);
    border-radius: 2px;
    background: var(--surf-2);
    color: var(--tx2);
    font-family: var(--mono);
    font-size: 11.5px;
    line-height: 1.2;
    text-decoration: none;
    white-space: nowrap;
}

.feed-preview-1 .threadrow .reddit-symbol {
    color: var(--tx2);
    font-weight: 600;
}

.feed-preview-1 .threadrow .reddit-return {
    font-size: 11px;
    font-weight: 600;
}

.feed-preview-1 .threadrow .reddit-ticker:hover,
.feed-preview-1 .threadrow .reddit-ticker:focus-visible {
    border-color: var(--gold-soft);
    background: var(--surf-3);
}

.feed-preview-1 .threadrow .reddit-ticker:hover .reddit-symbol,
.feed-preview-1 .threadrow .reddit-ticker:focus-visible .reddit-symbol {
    color: var(--gold-br);
}

.feed-preview-1 .threadrow .cm {
    padding-top: 2px;
    font-size: 10px;
}

/* ── Positioning market rows ──────────────────────────────────────────────
   The market footer belongs to the thesis card. Each returned symbol receives
   its own self-contained row, keeping both return bases physically attached
   to the ticker they describe and allowing rows to arrive incrementally. */
.positioning-signal-tiles .positioning-card .positioning-market-list {
    display: grid;
    margin: 12px -16px -16px;
    border-top: 1px solid var(--line);
    background: var(--surf);
}

.positioning-signal-tiles .positioning-card .positioning-market-row {
    display: grid;
    grid-template-columns: minmax(82px, auto) minmax(180px, 1fr);
    align-items: stretch;
    min-width: 0;
}

.positioning-signal-tiles .positioning-card .positioning-market-row + .positioning-market-row {
    border-top: 1px solid var(--line-hair);
}

.positioning-signal-tiles .positioning-card .positioning-market-row:not(:has(.ledger)) {
    grid-template-columns: 1fr;
}

.positioning-signal-tiles .positioning-card .positioning-market-ticker {
    display: flex;
    align-items: center;
    min-width: 0;
    padding: 10px 12px;
    border-right: 1px solid var(--line-hair);
    color: var(--tx);
    font-family: var(--mono);
    font-size: 12px;
    font-weight: 650;
}

.positioning-signal-tiles .positioning-card .positioning-market-row .ledger {
    width: 100%;
    border: 0;
    background: transparent;
}

.positioning-signal-tiles .positioning-card .positioning-market-row .ledger > div {
    min-width: 0;
    padding: 8px 10px;
}

/* While an older snapshot still renders the shared market footer, bind its
   ticker strip and ledger tightly so they read as one unit rather than two
   unrelated cards. */
.positioning-signal-tiles .positioning-card .positioning-market {
    display: grid;
    gap: 8px;
}

.positioning-signal-tiles .positioning-card .positioning-market > .vt {
    display: flex;
    flex-wrap: wrap;
    gap: 5px 11px;
    font-family: var(--mono);
    font-size: 11.5px;
}

.positioning-signal-tiles .positioning-card .positioning-market > .vt a.tkl {
    font-weight: 600;
}

@media (max-width: 900px) {
    .feed-preview-1 .threadrow {
        grid-template-columns: 54px minmax(0, 1fr);
        column-gap: 14px;
    }

    .feed-preview-1 .threadrow .sc b {
        font-size: 15px;
    }

    .feed-preview-1 .threadrow .threadbody h4 {
        font-size: 16.5px;
    }

    .feed-preview-1 .threadrow .cm {
        justify-self: start;
    }

    .feed-preview-1 .threadrow .reddit-market {
        align-items: flex-start;
    }

    .feed-preview-1 .threadrow .reddit-ticker-list {
        gap: 5px;
    }

    .feed-preview-1 .threadrow .reddit-ticker {
        padding: 5px 7px;
    }

    .positioning-signal-tiles .positioning-card .positioning-market-row {
        grid-template-columns: minmax(72px, auto) minmax(0, 1fr);
    }

    .positioning-signal-tiles .positioning-card .positioning-market-ticker {
        padding: 9px 10px;
    }
}

@media (max-width: 520px) {
    .positioning-signal-tiles .positioning-card .positioning-market-row {
        grid-template-columns: 1fr;
    }

    .positioning-signal-tiles .positioning-card .positioning-market-ticker {
        padding-bottom: 5px;
        border-right: 0;
    }

    .positioning-signal-tiles .positioning-card .positioning-market-row .ledger > div {
        padding-top: 6px;
    }
}

.narr-body .narr-source-link {
    color: inherit;
    text-decoration: underline;
    text-decoration-color: color-mix(in srgb, var(--gold) 58%, transparent);
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

.narr-body .narr-source-link:hover,
.narr-body .narr-source-link:focus-visible {
    color: var(--gold);
    text-decoration-color: currentColor;
}

/* YouTube channel inventory. The first disclosure protects the editorial
   reading flow; the nested disclosure reveals the long tail on demand. */
.youtube-editorial-feed .youtube-channel-panel {
    display: block;
    margin: 20px 0 4px;
    border-color: var(--line);
    background: var(--surf);
}

.youtube-channel-disclosure > summary {
    list-style: none;
}

.youtube-channel-disclosure > summary::-webkit-details-marker {
    display: none;
}

.youtube-channel-summary {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto 18px;
    align-items: center;
    gap: 18px;
    min-height: 66px;
    padding: 13px 18px;
    cursor: pointer;
    border-bottom: 1px solid transparent;
    background: var(--surf-2);
}

.youtube-channel-summary:hover {
    background: color-mix(in srgb, var(--surf-2) 86%, white);
}

.youtube-channel-summary:focus-visible {
    outline: 1px solid var(--gold);
    outline-offset: -2px;
}

.youtube-channel-disclosure[open] .youtube-channel-summary {
    border-bottom-color: var(--gold-soft);
}

.youtube-channel-summary-copy {
    display: flex;
    align-items: baseline;
    min-width: 0;
    gap: 14px;
}

.youtube-channel-summary-copy strong {
    color: var(--tx);
    font-size: 17px;
    font-weight: 650;
}

.youtube-channel-summary-copy span,
.youtube-channel-summary-meta,
.youtube-channel-tail {
    color: var(--tx3);
    font-family: var(--mono);
    font-size: 12px;
    letter-spacing: .065em;
    text-transform: uppercase;
}

.youtube-channel-chevron {
    width: 9px;
    height: 9px;
    border-right: 1.5px solid var(--gold);
    border-bottom: 1.5px solid var(--gold);
    transform: rotate(45deg) translate(-2px, -2px);
    transition: transform .16s ease;
}

.youtube-channel-disclosure[open] .youtube-channel-chevron {
    transform: rotate(225deg) translate(-1px, -1px);
}

.youtube-channel-body {
    padding: 20px;
}

.youtube-channel-grid {
    display: grid;
}

.youtube-channel-row {
    min-width: 0;
    color: inherit;
    text-decoration: none;
    transition: background-color .14s ease, box-shadow .14s ease;
}

.youtube-channel-row:hover {
    background: color-mix(in srgb, var(--surf-2) 72%, transparent);
}

.youtube-channel-row:focus-visible {
    outline: none;
    box-shadow: inset 2px 0 var(--gold);
    background: color-mix(in srgb, var(--surf-2) 82%, transparent);
}

.youtube-channel-row:hover .youtube-channel-name,
.youtube-channel-row:focus-visible .youtube-channel-name {
    color: var(--gold-br);
}

.youtube-channel-rank,
.youtube-channel-count {
    font-family: var(--mono);
    font-variant-numeric: tabular-nums;
}

.youtube-channel-rank {
    color: var(--gold);
    font-size: 12px;
}

.youtube-channel-name {
    min-width: 0;
    overflow: hidden;
    color: var(--tx);
    font-size: 14px;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.youtube-channel-bar {
    height: 5px;
    overflow: hidden;
    background: var(--line-hair);
}

.youtube-channel-bar i {
    display: block;
    width: var(--channel-width);
    height: 100%;
    background: var(--yt);
}

.youtube-channel-count {
    display: flex;
    align-items: baseline;
    justify-content: flex-end;
    gap: 5px;
    color: var(--tx3);
}

.youtube-channel-count b {
    color: var(--tx);
    font-size: 14px;
}

.youtube-channel-count span {
    font-size: 12px;
    text-transform: uppercase;
}

.youtube-channel-share {
    display: none;
}

.youtube-channel-tail {
    margin: 17px 0 0;
}

.youtube-channel-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0 28px;
}

.youtube-channel-row {
    display: grid;
    grid-template-columns: 28px minmax(180px, 1fr) minmax(150px, 36%) 70px;
    align-items: center;
    gap: 14px;
    min-height: 52px;
    border-bottom: 1px solid var(--line-hair);
}

@media (max-width: 900px) {
    .youtube-channel-grid {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (max-width: 620px) {
    .youtube-channel-summary {
        grid-template-columns: minmax(0, 1fr) 16px;
        gap: 12px;
        padding: 12px 14px;
    }

    .youtube-channel-summary-copy {
        display: grid;
        gap: 4px;
    }

    .youtube-channel-summary-meta {
        display: none;
    }

    .youtube-channel-body {
        padding: 12px;
    }

    .youtube-channel-row {
        grid-template-columns: 22px minmax(0, 1fr) 52px;
        gap: 8px;
    }

    .youtube-channel-bar {
        grid-column: 2 / -1;
        grid-row: 2;
        width: 100%;
    }

    .youtube-channel-count {
        grid-column: 3;
        grid-row: 1;
    }
}

.youtube-channel-more {
    margin-top: 16px;
    border-top: 1px solid var(--line);
}

.youtube-channel-more > summary {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    min-height: 44px;
    padding: 10px 2px;
    color: var(--gold);
    font-family: var(--mono);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    list-style: none;
}

.youtube-channel-more > summary::-webkit-details-marker {
    display: none;
}

.youtube-channel-more > summary:focus-visible {
    outline: 1px solid var(--gold);
    outline-offset: 3px;
}

.youtube-channel-more-open {
    display: none;
}

.youtube-channel-more[open] .youtube-channel-more-closed {
    display: none;
}

.youtube-channel-more[open] .youtube-channel-more-open {
    display: inline;
}

.youtube-channel-more-chevron {
    width: 7px;
    height: 7px;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg) translate(-1px, -1px);
}

.youtube-channel-more[open] .youtube-channel-more-chevron {
    transform: rotate(225deg);
}

.youtube-channel-grid-more {
    border-top: 1px solid var(--line-hair);
}

/* Plain-language signal help. Native details/summary keeps the interaction
   available to keyboards without another client-side state machine. */
.da-panel-title {
    position: relative;
    z-index: 30;
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.da-help {
    position: static;
    flex: 0 0 auto;
}

.da-help > summary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border: 1px solid var(--line);
    border-radius: 50%;
    color: var(--tx2);
    font-family: var(--sans);
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    list-style: none;
}

.da-help > summary::-webkit-details-marker {
    display: none;
}

.da-help > summary:hover,
.da-help > summary:focus-visible,
.da-help[open] > summary {
    border-color: var(--gold);
    color: var(--gold);
    outline: none;
}

.da-help-popover {
    position: absolute;
    z-index: 40;
    top: calc(100% + 10px);
    left: 0;
    width: min(460px, calc(100vw - 48px));
    padding: 14px 16px;
    border: 1px solid var(--gold-soft);
    background: var(--bg-deep);
    box-shadow: 0 12px 30px rgba(0, 0, 0, .32);
    color: var(--tx2);
    font-family: var(--sans);
    font-size: 14px;
    line-height: 1.55;
    text-transform: none;
    letter-spacing: 0;
}

/* The source desks retain useful metadata, but no reader should need to zoom
   to understand it. Overview navigation and positioning ledgers are excluded. */
.feed-preview .top .sub {
    color: var(--tx2);
    font-family: var(--sans);
    font-size: 14px;
    line-height: 1.5;
    letter-spacing: 0;
    text-transform: none;
}

.statrow .st span,
.feed-preview .badge-a,
.feed-preview .badge-s,
.feed-preview .claimrow .who time,
.feed-preview .threadrow .sc span,
.feed-preview .threadrow time,
.feed-preview .threadrow .sub,
.feed-preview .threadrow .cm,
.feed-preview .letterrow time,
.feed-preview .panel > header .pm,
.feed-preview .panel > header .radar,
.feed-preview .dwatch .lab,
.feed-preview .backline a,
.youtube-editorial-feed .panel > header .radar,
.youtube-editorial-feed .backline a,
.youtube-editorial-feed .youtube-channel-summary-copy span,
.youtube-editorial-feed .youtube-channel-summary-meta,
.youtube-editorial-feed .youtube-channel-tail,
.hotcard .hm,
.hotcard .hw,
.livepx,
.tc .syms,
.tc .met,
.tc .z {
    font-size: 12px;
}

.feed-preview .ledger .lab {
    font-size: 12px;
}

.feed-preview .ledger .val {
    font-size: 13px;
}

.feed-preview .desk-themes .crow::before {
    font-size: 12px;
}

.youtube-editorial-feed .vidrow .jump {
    font-size: 13px;
}

@media (max-width: 620px) {
    .da-help-popover {
        width: min(420px, calc(100vw - 36px));
        box-shadow: 0 12px 30px rgba(0, 0, 0, .38);
    }
}
