:root{
  --bg:#0a0d13; --bg2:#0e131c; --panel:#11161f; --panel2:#141a25;
  --line:#1e2735; --line2:#283344;
  --ink:#cdd6e3; --mut:#7c8798; --dim:#5a6576;
  --gold:#d8b24a; --gold2:#e9c860;
  --pos:#34b27b; --neg:#d05a4a; --neu:#6a7488;
  --lead:#2e9e6a; --weak:#d39a36; --lag:#c4503a; --improv:#3a82c4;
  --rgreen:#2BD576; --rred:#FF5A6E;
}
*{box-sizing:border-box}
/* The browser's own [hidden]{display:none} is only as strong as ONE class, so any rule
   here that sets display: silently outranks it and the hidden attribute stops working.
   That shipped as a real bug: the Guide's "Hide the glossary" button did nothing, and
   the same defect sat in the chalkboard panel, the update dot and the live tape.
   !important is what makes this hold against .setups.idxboard style two-class rules and
   against anything appended below. Do not remove it. Toggle visibility with .hidden. */
[hidden]{display:none !important}
html,body{margin:0;overscroll-behavior:none;overflow-x:hidden;background:radial-gradient(1200px 700px at 60% -10%, #131a26 0%, var(--bg) 55%);
  color:var(--ink);font:13px/1.45 -apple-system,BlinkMacSystemFont,"SF Pro Text",Segoe UI,Roboto,sans-serif;}
h2{margin:0;padding:9px 12px;font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--gold);
  border-bottom:1px solid var(--line);font-weight:600;display:flex;justify-content:space-between;align-items:baseline}
h2 .sub{color:var(--dim);font-size:9.5px;letter-spacing:.06em;text-transform:none;font-weight:400}
h2 .sub.diag{color:var(--weak)}

/* top bar */
#topbar{display:flex;align-items:center;gap:18px;padding:10px 16px;border-bottom:1px solid var(--line2);
  background:linear-gradient(180deg,#0e131c,#0a0d13);position:sticky;top:0;z-index:10}
.brand{color:var(--gold2);font-weight:700;letter-spacing:.22em;font-size:14px;white-space:nowrap;display:flex;align-items:baseline;gap:1px}
.bd-d{font-family:'Archivo',sans-serif;font-weight:900;font-size:19px;letter-spacing:0;color:transparent;
  background:linear-gradient(145deg,#a07830,#f5cc5a,#7a5820,#eebc4a,#c89038);-webkit-background-clip:text;background-clip:text;
  filter:drop-shadow(0 0 9px rgba(210,160,40,.45))}
.bd-edge{font-family:'Archivo',sans-serif;font-weight:900;font-size:19px;letter-spacing:.01em;color:#c8c8c8}
.bd-sub{font-family:'Rajdhani','Inter',sans-serif;font-weight:600;font-size:10px;letter-spacing:.18em;
  color:var(--mut);text-transform:uppercase;margin-left:9px;align-self:center}
.bd-ver{font-family:'Rajdhani','Inter',sans-serif;font-weight:700;font-size:9.5px;letter-spacing:.12em;
  color:#f5cc5a;border:1px solid rgba(210,160,40,.5);border-radius:4px;padding:1px 6px;margin-left:8px;align-self:center}
.banner{flex:0 0 auto;color:var(--mut);font-size:11px;white-space:nowrap;margin:0 14px}

/* ticker search */
.search-wrap{position:relative;flex:none}
#tkr-search{width:200px;background:var(--panel2);color:var(--ink);border:1px solid var(--line2);border-radius:7px;
  padding:7px 10px;font-size:12px;font-family:inherit;outline:none}
#tkr-search:focus{border-color:var(--gold);width:240px}
#tkr-search::placeholder{color:var(--dim)}
.suggest{position:absolute;top:36px;left:0;width:300px;max-height:340px;overflow:auto;z-index:120;
  background:#0c121b;border:1px solid var(--line2);border-radius:9px;box-shadow:0 16px 40px rgba(0,0,0,.5)}
.sg-row{display:flex;align-items:baseline;gap:8px;padding:7px 11px;cursor:pointer;border-bottom:1px solid var(--line)}
.sg-row:last-child{border-bottom:0}
.sg-row.on,.sg-row:hover{background:rgba(216,178,74,.1)}
.sg-tk{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:12px;color:var(--ink);min-width:48px}
.sg-nm{flex:1;font-size:10.5px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sg-trk{font-size:8.5px;color:var(--gold);border:1px solid var(--line2);border-radius:5px;padding:1px 5px;font-family:'JetBrains Mono',monospace}
.sg-empty{padding:9px 12px;color:var(--dim);font-style:italic;font-size:11px}
@media(max-width:680px){#tkr-search{width:130px}#tkr-search:focus{width:150px}.suggest{width:240px}}

/* ticker result card */
.tkr-card{width:min(540px,100%)}
#tkr-overlay{z-index:90}
.tkr-block{padding:11px 0;border-bottom:1px solid rgba(30,40,53,.55);font-size:12.5px;color:#E8EEF4}
.tkr-block:last-child{border-bottom:0}
.tkr-block.mut{color:#8593A3;font-size:11.5px}
.tkr-h{font-family:'Archivo',sans-serif;font-weight:700;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#CBA45A;margin-bottom:5px}
/* Multi-Timeframe Read (step 2) — scoped to the ticker overlay only */
.mtf-lean{font-family:'Archivo',sans-serif;font-weight:800;font-size:13px;margin:2px 0 8px;letter-spacing:.02em}
.mtf-sub{font-weight:400;font-size:10.5px;color:#8593A3;letter-spacing:0}
.mtf-tbl{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}
.mtf-row{display:grid;grid-template-columns:58px 1fr auto auto;gap:10px;align-items:baseline;font-size:11px;padding:3px 0;border-bottom:1px solid rgba(30,40,53,.4)}
.mtf-row:last-child{border-bottom:0}
.mtf-tf{color:#CBA45A;font-weight:600;font-family:'JetBrains Mono',monospace;font-size:9.5px;letter-spacing:.04em}
.mtf-pt{font-size:11px;color:#C7D0DA;line-height:1.75;margin-top:4px}
.mtf-pt b{color:#CBA45A;font-weight:600}
.mtf-vwap{font-size:10.5px;margin-top:6px}
.rot-pill{font-family:'JetBrains Mono',monospace;font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;margin-left:6px;white-space:nowrap}
.rot-pill.up{color:#2BD576;background:rgba(43,213,118,.1);border:1px solid rgba(43,213,118,.4)}
.rot-pill.down{color:#FF5A6E;background:rgba(255,90,110,.1);border:1px solid rgba(255,90,110,.4)}
.rot-pill.neu{color:#8593A3;background:var(--panel2);border:1px solid #283344}
.tkr-wl{padding:11px 0 2px;font-size:12.5px;color:#CBA45A}
.tkr-nomatch{padding:8px 0;font-size:13px;color:#A6B2C0;line-height:1.5}
.tkr-add-msg{font-size:10.5px}
.banner b{color:var(--gold)}
.banner .mdl-f{color:var(--gold);letter-spacing:.04em}
.banner .caveat{color:var(--dim);font-style:italic}
.topright{display:flex;align-items:center;gap:10px;min-width:0;overflow-x:auto;overflow-y:hidden;-webkit-overflow-scrolling:touch;scrollbar-width:thin}
/* Nav strip scrolls in place whenever it can't fit — reachable at ANY width. The old
   fix only kicked in ≤680px, so 681–1600px (iPad + most laptops) clipped Sign out off
   the right edge with no scroll. Buttons keep their size so the row scrolls instead of
   squishing; the scrollbar stays hidden whenever it all fits, so desktop is unchanged. */
.topright>*{flex:0 0 auto}
.topright::-webkit-scrollbar{height:4px}
.topright::-webkit-scrollbar-thumb{background:var(--line2);border-radius:2px}
.refresh{text-align:right;font-size:10.5px;color:var(--mut);line-height:1.3}
.refresh .stale{color:var(--neg);font-weight:600}
#reload{background:linear-gradient(135deg,var(--gold),var(--gold2));color:#10151d;font-weight:700;
  border:1px solid rgba(233,200,96,.5);border-radius:6px;box-shadow:0 0 8px rgba(216,178,74,.22);
  width:30px;height:30px;font-size:15px;cursor:pointer}
#reload:hover{box-shadow:0 0 14px rgba(216,178,74,.45);filter:brightness(1.06)}
.reload-note{font-size:9px;color:var(--dim);letter-spacing:.02em;max-width:118px;line-height:1.25;align-self:center}
@media(max-width:900px){.reload-note{display:none}}
/* the small panel refresh — bottom-right, only where a re-pull can show something new */
.pnl-rf-wrap{display:flex;justify-content:flex-end;padding:2px 12px 9px}
.pnl-rf{background:transparent;border:1px solid var(--line2);color:var(--mut);border-radius:6px;
  width:20px;height:20px;font-size:10px;line-height:1;padding:0;cursor:pointer}
.pnl-rf:hover{border-color:var(--gold);color:var(--gold)}
.pnl-rf.spin{animation:pnlspin .8s linear infinite}
@keyframes pnlspin{to{transform:rotate(360deg)}}

/* layout */
/* 7/18: stretch -> start. With stretch, the shortest rail's panels were padded out to match
   the tallest column, which put dead air INSIDE a bordered box (Macro was carrying 88px of
   it). The column-height difference is the same either way — the centre simply has less
   content than the rails — so this doesn't create a gap, it just moves the gap out of the
   boxes and into page background, where it reads as spacing instead of a broken panel.
   Same reasoning as #bottom below. */
/* 8/02: left rail 310 -> 252. Sector Conviction owns that rail, and collapsed rows only
   need ticker + name + score + bar — the two-line stacked score block and the wrapping
   news paragraphs were what demanded 310. The 58px goes to the centre column, where the
   14-week heatmap and the money-flow bars are the things that actually reward width.
   Right rail stays 310: Macro Lead Tape's sparkline rows are already tight there. */
#grid{display:grid;grid-template-columns:252px minmax(420px,1fr) 310px;gap:12px;padding:12px;align-items:start}
.col{display:flex;flex-direction:column;gap:12px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;overflow:hidden;display:flex;flex-direction:column}
.panel.grow{flex:1}
.panel .body{padding:10px 12px;overflow:auto}
.center .body{padding:6px}
/* 7/16: Alert Feed panel removed (noise) -> two squares, not three.
   align-items:start = each square is its OWN height. The old stretch is what made
   Breadth "extremely large": a 170px list stretched to match a 4,000px catalyst
   column. Breadth was never the problem — the stretch was. */
/* 7/18: stacked full-width instead of side-by-side. Catalysts runs 528px tall and Breadth
   206 — side by side that left a 322px notch of background, the biggest hole on the page,
   and no column ratio fixes it because the mismatch is HEIGHT. Stretching them to match is
   the 7/16 bug (see above): it moves the 322px inside Breadth's border instead of removing
   it. Stacking removes it outright and makes everything below the grid one uniform
   full-width rhythm — Catalysts, Breadth, race, Downside, Replay. Costs ~142px of page. */
#bottom{display:grid;grid-template-columns:1fr;gap:12px;padding:0 12px 16px;align-items:start}
/* the catalyst list is the tall one (earnings actuals x every tracked name) —
   cap it and let it scroll inside its own square; the ⟳ stays pinned below */
#p-catal .body{max-height:460px;overflow-y:auto;scrollbar-width:thin}

/* Sector Conviction had a max-height:620px + internal scroll here, added earlier the same
   day because the expanded-by-default cards ran the panel to 863px. Collapsing the rows
   removed the cause, so the cap comes out with it — a scrollbar that never triggers is
   just a thing that can surprise you later. If a future row grows the list past the
   viewport again, fix the row, not the overflow. */
@media(max-width:1100px){#grid{grid-template-columns:1fr}#bottom{grid-template-columns:1fr}}
@media(max-width:1100px){#bottom{grid-template-columns:1fr}#topbar{flex-wrap:wrap}
  /* phones & tablets (≤1100, where the main grid also collapses to one column): give the nav
     its OWN full-width row so the swipe strip spans the whole screen instead of the ~140px
     scrap left beside brand+search+banner. Buttons keep size; thin scrollbar signals more. */
  .topright{flex:1 1 100%;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;
    -webkit-overflow-scrolling:touch;scrollbar-width:thin;padding-bottom:5px}
  .topright>*{flex:0 0 auto}
  .topright::-webkit-scrollbar{height:4px}
  .topright::-webkit-scrollbar-thumb{background:var(--line2);border-radius:2px}
}

/* regime */
.regime-badge{display:inline-block;padding:4px 12px;border-radius:20px;font-weight:700;letter-spacing:.05em;font-size:13px}
.r-on{background:rgba(52,178,123,.16);color:var(--pos);border:1px solid var(--pos)}
.r-off{background:rgba(208,90,74,.16);color:var(--neg);border:1px solid var(--neg)}
.r-chop{background:rgba(106,116,136,.16);color:var(--neu);border:1px solid var(--neu)}
.regime-row{margin-top:8px;color:var(--mut);font-size:11.5px}
/* MARKET TREND line (2026-10-29) */
.mt{margin:0 0 12px;padding:10px 12px;border-radius:12px;border:1px solid var(--line,rgba(205,214,227,.12))}
.mt-bull{background:rgba(52,178,123,.10);border-color:rgba(52,178,123,.45)}
.mt-bear{background:rgba(208,90,74,.12);border-color:rgba(208,90,74,.5)}
.mt-head{font-size:12px;letter-spacing:.08em;font-weight:700}
.mt-bull .mt-head b{color:#34b27b}.mt-bear .mt-head b{color:#d05a4a}
.mt-since{font-weight:600;color:var(--mut);letter-spacing:0;margin-left:6px}
.mt-body{margin-top:4px;font-size:12px;line-height:1.45;color:var(--mut)}
.chip{display:inline-block;padding:2px 8px;border-radius:10px;background:var(--panel2);border:1px solid var(--line2);margin-right:6px;font-size:10.5px}
.chip.warn{color:var(--weak);border-color:var(--weak)}

/* conviction — collapsed rows (2026-08-02, see renderConviction in app.js).
   A closed row is exactly two visual lines: the head (chevron, ticker, name, score)
   and the divergence bar under it. Eleven of them stack into a readable diverging bar
   chart instead of eleven paragraphs. Everything else lives in .conv-det, which is not
   hidden with CSS — it simply is not rendered unless the row is open, so there is no
   display/attribute fight to lose (the 7/11 lesson: `hidden` carries only UA weight). */
/* zone dividers (2026-08-03): three quiet group labels — Rotating in / No clear read /
   Rotating out — drawn only at zone boundaries (renderConviction skips them entirely on a
   one-zone day). Same visual weight as the Dividend Room's .dvr-sub labels on purpose:
   the bars stay the loudest thing in the panel, the dividers are furniture. The tint is
   30%-ish alpha of the board's own pos/neg colours — legible, never competing. */
.conv-zone{display:flex;align-items:center;gap:8px;font-size:8.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--dim);padding:8px 4px 3px;cursor:help;white-space:nowrap}
.conv-zone::after{content:"";flex:1;height:1px;background:var(--line2)}
.conv-zone.in{color:rgba(52,178,123,.78)}
.conv-zone.in::after{background:rgba(52,178,123,.22)}
.conv-zone.out{color:rgba(255,90,110,.72)}
.conv-zone.out::after{background:rgba(255,90,110,.20)}
/* The 70 line. Gold and dashed so it reads as a THRESHOLD, not another zone header — the
   zone headers say what a block is, this says where the strongest band starts. Sits between
   two rows, so it must not look like a row itself. */
.conv-70{display:flex;align-items:center;gap:8px;padding:7px 4px 5px;cursor:help;white-space:nowrap}
.conv-70::after{content:"";flex:1;height:0;border-top:1px dashed rgba(216,178,74,.42)}
.c70-n{font-family:'JetBrains Mono',monospace;font-size:9.5px;font-weight:700;color:var(--gold);
  border:1px solid rgba(216,178,74,.45);border-radius:4px;padding:0 5px;line-height:15px}
.c70-t{font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:rgba(216,178,74,.62)}

.conv-row{padding:5px 4px;border-bottom:1px solid var(--line);cursor:pointer}
.conv-row:hover{background:var(--panel2)}
/* Above the 70 line: a gold left edge and a faint wash. Enough to separate it from the rest
   at a glance without shouting — it is a rarity marker, not an alert. */
.conv-row.strong70{border-left:2px solid rgba(216,178,74,.55);padding-left:8px;
  background:linear-gradient(90deg,rgba(216,178,74,.055),transparent 70%)}
.conv-row.strong70:hover{background:linear-gradient(90deg,rgba(216,178,74,.10),var(--panel2) 70%)}
.conv-row.sel{background:rgba(216,178,74,.08);box-shadow:inset 2px 0 0 var(--gold)}
.conv-row.open{background:var(--panel2)}
.conv-head{display:flex;align-items:center;gap:6px;min-width:0}
/* the chevron is the only new ink on a closed row — 9px, dim, and it stays dim on hover.
   It marks the row as openable without competing with the score for attention. */
.conv-c{font-size:8px;color:var(--dim);flex:none;width:8px;line-height:1}
.conv-row.open .conv-c{color:var(--gold)}
/* flex:1 + min-width:0 is what lets the NAME be the thing that truncates in a narrow
   rail, rather than the score getting pushed off the end. Ticker and score never shrink. */
.conv-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0;font-size:11.5px}
.conv-name .nm{font-weight:500;color:var(--mut)}
.conv-val{font-variant-numeric:tabular-nums;font-weight:700;white-space:nowrap;flex:none;font-size:12px}
.voladj-val{font-size:9px;color:var(--dim);font-variant-numeric:tabular-nums;letter-spacing:.02em;cursor:help}
/* open-row detail. Indented against the chevron column so it reads as belonging to the
   row above it rather than as a new row. */
.conv-det{padding:6px 0 3px 14px;border-left:1px solid var(--line2);margin:5px 0 2px 3px}
.conv-pill{margin-bottom:5px}
.conv-va{margin-bottom:3px}
/* the drill is a decision now, not a stray click. Full width so it is unmissable, quiet
   so it never outranks the headline above it. */
.conv-drill{display:block;width:100%;margin-top:7px;padding:4px 8px;font:inherit;font-size:10px;
  letter-spacing:.03em;color:var(--gold);background:transparent;border:1px solid var(--line2);
  border-radius:7px;cursor:pointer;text-align:left}
.conv-drill:hover{border-color:var(--gold);background:rgba(216,178,74,.09)}
/* line 2 of a row: the bar takes the room, the tags take what they need and never shrink.
   min-width keeps the bar readable as a proportion even when both tags are present. */
.conv-strip{display:flex;align-items:center;gap:6px;margin:4px 0 1px}
.conv-strip .bar{flex:1;min-width:70px;margin:0}
.conv-strip .neutral-pill.sm{margin:0}
.conv-tags{display:flex;align-items:center;gap:4px;flex:none}
.conv-tags .tag{margin-left:0;font-size:8px;letter-spacing:.03em;padding:0 4px;line-height:13px;white-space:nowrap}
.bar{position:relative;height:6px;background:var(--panel2);border-radius:4px;margin:4px 0 1px;overflow:hidden}
.bar .mid{position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line2)}
.bar .fill{position:absolute;top:0;bottom:0;border-radius:4px}
.neutral-pill{font-size:10px;letter-spacing:.08em;color:var(--neu);border:1px solid var(--line2);
  padding:1px 7px;border-radius:10px;background:var(--panel2)}
/* a CONFLICT zero is the interesting one — two layers actively fighting, not an
   absence of signal. Gold-edged so it reads as information, never as an error. */
.neutral-pill.fight{color:var(--gold,#d4af37);border-color:var(--gold,#d4af37)}
/* closed-row variant: the LABEL only. Which flavour of zero it is takes a sentence, and
   a sentence does not fit a collapsed row — it moves into the open state, and the hover
   title carries it either way, so nothing is lost, only deferred. */
.neutral-pill.sm{display:inline-block;font-size:8.5px;letter-spacing:.09em;padding:0 6px;
  line-height:14px;margin:4px 0 1px}
.decomp{font-size:10px;color:var(--mut);font-variant-numeric:tabular-nums;display:flex;justify-content:space-between;align-items:center;gap:6px}
.decomp .b{color:var(--weak)}

/* "Why?" chips */
.why-chip{font-size:9px;letter-spacing:.04em;color:var(--gold);border:1px solid var(--line2);border-radius:9px;
  padding:0 6px;line-height:15px;cursor:pointer;white-space:nowrap;flex:none}
.why-chip:hover{border-color:var(--gold);background:rgba(216,178,74,.1)}
#p-rotation .why-chip{font-family:'JetBrains Mono',monospace;color:#CBA45A;border-color:#283344;text-align:center;padding:0;width:18px}
#p-rotation .why-chip:hover{border-color:#CBA45A;background:rgba(203,164,90,.12)}

/* ---- Sector News line: what a sector is reacting to (2026-07-30) ----
   Deliberately quiet. It sits UNDER the score because the number is still the
   product and the headline is context for it, never the other way round. */
.news-line{font-size:10.5px;line-height:1.45;color:var(--mut);margin-top:4px;
  padding-left:7px;border-left:2px solid var(--line2);cursor:default}
/* the headline is the only part that gets full ink — everything around it is
   metadata and must stay quieter than the conviction number above it */
.news-line a{color:var(--ink);text-decoration:none;border-bottom:1px solid transparent}
.news-line a:hover{border-bottom-color:var(--gold);color:var(--gold)}
.nl-tag{font-size:8.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--dim);
  margin-right:5px;white-space:nowrap}
.nl-meta{display:inline-flex;gap:5px;align-items:center;flex-wrap:wrap;color:var(--dim);
  font-size:9.5px;margin-left:4px;white-space:nowrap}
.nl-corro{color:var(--pos);border:1px solid rgba(52,178,123,.35);border-radius:8px;
  padding:0 5px;line-height:14px;cursor:help}
.nl-single{color:var(--dim);border:1px solid var(--line2);border-radius:8px;
  padding:0 5px;line-height:14px;cursor:help}
.nl-kind{border-radius:8px;padding:0 5px;line-height:14px;cursor:help}
/* --weak IS the board's amber "caution" tone (lead/weak/lag), so an opinion chip
   is the one place here it genuinely belongs */
.nl-op{color:var(--weak);border:1px solid rgba(211,154,54,.35)}
.nl-age{color:var(--dim)}

/* ---- THE LAYERS: sector-vs-chart reconciliation strip (2026-07-31) ----
   Sits above the setup cards so they arrive framed as the second lens, not a
   contradiction. Quiet by default; the state word is the only loud element. */
.lay-strip{margin:8px 0 10px;padding:8px 10px;border:1px solid var(--line2);
  border-radius:6px;background:var(--panel2)}
.lay-strip.opposed{border-color:rgba(216,178,74,.45)}
.lay-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.lay-title{font-size:9px;letter-spacing:.12em;color:var(--dim);font-weight:600}
.lay-state{font-size:9.5px;letter-spacing:.06em;font-weight:700;border-radius:9px;
  padding:1px 8px;font-family:'JetBrains Mono',monospace}
.lay-state.aligned{color:var(--pos);border:1px solid rgba(52,178,123,.4)}
.lay-state.opposed{color:var(--gold);border:1px solid rgba(216,178,74,.5)}
.lay-state.quiet{color:var(--mut);border:1px solid var(--line2)}
.lay-row{display:flex;gap:8px;font-size:10.5px;line-height:1.5;
  font-variant-numeric:tabular-nums}
.lay-k{flex:none;width:72px;color:var(--dim);font-size:8.5px;letter-spacing:.08em;
  padding-top:2px}
.lay-v{color:var(--ink)}
.lay-prose{margin-top:6px;font-size:10.5px;line-height:1.55;color:var(--mut)}
.lay-why{margin-top:5px;font-size:9.5px;color:var(--dim)}
.lay-why summary{cursor:pointer;color:var(--gold);opacity:.75;list-style:none}
.lay-why summary::before{content:"▸ "}
.lay-why[open] summary::before{content:"▾ "}
.lay-why summary:hover{opacity:1}
.lay-why div{margin-top:4px;line-height:1.55;color:var(--mut)}

/* ---- Premium Sectors: the same why-line the conviction rows carry ---- */
.pm-news{margin-top:6px;padding-top:5px;border-top:1px solid var(--line);
  font-size:9.5px;line-height:1.45;color:var(--ink)}
.pm-news-tag{font-size:8px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--dim);margin-right:5px}
.pm-news-src{display:block;color:var(--dim);font-size:8.5px;margin-top:1px}

/* ---- Index WHY: the driving sectors' headlines ---- */
.idxb-news{margin-top:9px;padding-top:8px;border-top:1px solid var(--line)}
.idxb-news-h{font-size:9px;letter-spacing:.07em;text-transform:uppercase;
  color:var(--dim);margin-bottom:6px}
.idxb-news-row{font-size:11px;line-height:1.5;margin-bottom:8px}
.idxb-news-row a{color:var(--ink);text-decoration:none;border-bottom:1px solid transparent}
.idxb-news-row a:hover{border-bottom-color:var(--gold);color:var(--gold)}
/* STACKED, always. These sit three-across so each card is narrow; an inline label
   with a fixed 76px gutter collided the moment a sector name outgrew it —
   "COMMUNICATIONSBanks in Talks to Lend $15 Billion" with no space (caught in the
   preview 2026-07-30). A label on its own line cannot collide at any width. */
.idxb-news-sec{display:block;color:var(--gold);font-size:9px;letter-spacing:.05em;
  text-transform:uppercase;margin-bottom:1px}
.idxb-news-src{display:block;color:var(--dim);font-size:9.5px;margin-top:1px}
.idxb-news-note{margin-top:6px;font-size:9.5px;line-height:1.5;color:var(--dim);
  font-style:italic}

/* volume confirmation tags (display-only) */
.vol-chip{font-size:9px;letter-spacing:.02em;padding:0 5px;border-radius:8px;border:1px solid var(--line);
  color:var(--dim);white-space:nowrap;font-variant-numeric:tabular-nums;margin-left:2px}
.vol-chip.vc-confirmed{color:var(--pos);border-color:rgba(52,178,123,.5);background:rgba(52,178,123,.08)}
.vol-chip.vc-divergent{color:var(--weak);border-color:rgba(211,154,54,.5);background:rgba(211,154,54,.08)}
.vol-chip.vc-na{display:none}
.dchip.vol-confirmed{color:#2BD576;border-color:rgba(43,213,118,.45);background:rgba(43,213,118,.1)}
.dchip.vol-divergent{color:#E0B83A;border-color:rgba(224,184,58,.45);background:rgba(224,184,58,.1)}
.dchip.vol-unconfirmed{color:#8593A3;border-color:#283344}
.dchip.filing{color:#8593A3;border-color:#283344;text-decoration:none}
.dchip.filing:hover{color:#CBA45A;border-color:#CBA45A}
.drow-best{box-shadow:inset 2px 0 0 #2BD576;background:rgba(43,213,118,.045);border-radius:4px}

/* insider promotion flag (cluster + rotation confluence) */
.drow-promoted{box-shadow:inset 3px 0 0 #CBA45A;background:rgba(203,164,90,.07);border-radius:4px;padding-left:8px}
.drow-insider{margin-top:6px;font-size:10.5px;color:#CBA45A;background:rgba(203,164,90,.1);border:1px solid rgba(203,164,90,.4);
  border-radius:6px;padding:5px 9px;line-height:1.4}

/* insiders overlay */
#ins-btn{font-family:'Archivo',sans-serif;font-weight:700;font-size:10.5px;letter-spacing:.06em;color:var(--gold);
  background:var(--panel2);border:1px solid var(--line2);border-radius:6px;padding:7px 12px;cursor:pointer;white-space:nowrap}
#ins-btn:hover{border-color:var(--gold)}
.ins-card{width:min(860px,100%)}
#ins-overlay{z-index:80}
.ins-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 18px;border-bottom:1px solid #1E2835;
  font-family:'Inter',sans-serif}
#ins-filter{background:#0c121b;color:#E8EEF4;border:1px solid #283344;border-radius:6px;padding:5px 8px;font-size:12px;font-family:'JetBrains Mono',monospace}
.ins-sort{font-size:10.5px;color:#5A6675}
.ins-sort button{background:#0c121b;color:#8593A3;border:1px solid #283344;border-radius:5px;padding:3px 9px;margin-left:5px;cursor:pointer;font-size:10.5px}
.ins-sort button.on{color:#CBA45A;border-color:#CBA45A}
.ins-clusters{margin:4px 0 12px;border:1px solid rgba(203,164,90,.3);border-radius:9px;padding:10px 13px;background:rgba(203,164,90,.05)}
.ins-cl-h{font-family:'Archivo',sans-serif;font-weight:700;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#CBA45A;margin-bottom:6px}
.ins-cl-h span{font-family:'Inter',sans-serif;font-weight:400;font-size:9px;letter-spacing:.02em;text-transform:none;color:#5A6675;margin-left:6px}
.ins-cl{font-size:11.5px;color:#A6B2C0;padding:3px 0}
.ins-cl b{color:#E8EEF4}
.ins-filings{font-size:10.5px;color:#8593A3;margin-bottom:10px}
.ins-filings a{color:#CBA45A;text-decoration:none;font-family:'JetBrains Mono',monospace}
.ins-filings a:hover{text-decoration:underline}
.ins-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.ins-col-h{font-family:'Archivo',sans-serif;font-weight:700;font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  padding-bottom:6px;border-bottom:1px solid #1E2835;margin-bottom:5px;display:flex;justify-content:space-between}
.ins-col-h.buys{color:#2BD576}.ins-col-h.sells{color:#FF5A6E}
.ins-col-h span{font-family:'JetBrains Mono',monospace;font-weight:400;color:#5A6675;font-size:10px}
.ins-row{padding:6px 0;border-bottom:1px solid rgba(30,40,53,.45)}
.ins-r1{display:flex;align-items:baseline;gap:6px;font-size:11.5px}
.ins-tk{font-family:'JetBrains Mono',monospace;font-weight:700;color:#E8EEF4}
.ins-nm{color:#A6B2C0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ins-ti{font-size:9.5px;color:#5A6675;white-space:nowrap}
.ins-r2{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin-top:2px;font-size:10.5px;color:#8593A3;font-variant-numeric:tabular-nums}
.ins-r2 b{color:#E8EEF4}
.ins-d{font-family:'JetBrains Mono',monospace;color:#5A6675}
.tag{font-size:9px;padding:1px 5px;border-radius:8px;border:1px solid var(--line2);color:var(--gold);margin-left:5px}

/* rotation centerpiece — matches the combined mockup (Archivo/Inter/JetBrains Mono) */
#p-rotation{display:flex;flex-direction:column;gap:14px;container-type:inline-size;
  font-family:'Inter',-apple-system,BlinkMacSystemFont,system-ui,sans-serif}
#p-rotation .panel{background:linear-gradient(180deg,#131B26,#0F141C);border:1px solid #1E2835;border-radius:10px;overflow:hidden}
#p-rotation .phead{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:11px 15px;border-bottom:1px solid #1E2835}
#p-rotation .phead .t{font-family:'Archivo',sans-serif;font-weight:700;font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;color:#E8EEF4}
#p-rotation .phead .s{font-size:9px;color:#5A6675;font-family:'JetBrains Mono',monospace;white-space:nowrap}

/* top: gauge + flow board (side by side when the column is wide enough) */
#p-rotation .rot-top{display:grid;grid-template-columns:1fr;gap:14px}
@container (min-width:600px){#p-rotation .rot-top{grid-template-columns:208px 1fr} #p-rotation .rot-top:has(.gaugewrap[hidden]){grid-template-columns:1fr}}   /* 10/31: gauge hidden, no empty column */
#p-rotation .gaugewrap{padding:14px 10px 16px;text-align:center;display:flex;flex-direction:column;align-items:center}
#p-rotation .gauge{width:170px;max-width:100%;height:auto;display:block}
#p-rotation #rot-arc{transition:stroke-dashoffset .8s ease}
#p-rotation #rot-ndl{transition:transform .8s cubic-bezier(.2,.8,.2,1)}
#p-rotation .gaugewrap .lab{font-family:'Archivo',sans-serif;font-weight:700;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:#5A6675;margin-top:2px}
#p-rotation .gaugewrap .big{font-family:'Archivo',sans-serif;font-weight:900;font-size:30px;color:#CBA45A;line-height:1.05}
#p-rotation .gaugewrap .desc{font-size:10.5px;color:#8593A3;margin-top:1px;max-width:190px}
#p-rotation .why-chip.on{border-color:#CBA45A;background:rgba(203,164,90,.14)}
#p-rotation .rot-gexplain{margin-top:11px;max-width:236px;text-align:left;border-top:1px solid #1E2835;padding-top:10px}
#p-rotation .rot-gexplain p{font-size:10.5px;color:#8593A3;line-height:1.5;margin:0 0 7px}
#p-rotation .rot-gexplain ul{list-style:none;margin:0 0 7px;padding:0}
#p-rotation .rot-gexplain li{font-size:10.5px;color:#8593A3;line-height:1.5;margin:0 0 4px}
#p-rotation .rot-gexplain b{color:#CBA45A}
#p-rotation .rot-gexplain .foot{font-style:italic;color:#5A6675;font-size:9.5px;margin:0}

#p-rotation .rot-flow{display:flex;flex-direction:column}
#p-rotation .flowcols{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#1E2835;flex:1}
#p-rotation .fc{background:#0F141C}
#p-rotation .fc .h{padding:9px 13px 7px;font-family:'Archivo',sans-serif;font-weight:700;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase}
#p-rotation .fc.out .h{color:#FF5A6E}
#p-rotation .fc.in .h{color:#2BD576}
#p-rotation .row{display:grid;grid-template-columns:46px 1fr 22px 20px;align-items:center;gap:7px;padding:6px 13px;cursor:pointer}
#p-rotation .row:hover{background:rgba(255,255,255,.03)}
#p-rotation .row.none{display:block;color:#5A6675;font-style:italic;font-size:11px;cursor:default}
#p-rotation .row .tk{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:12px;color:#E8EEF4}
#p-rotation .meter{display:flex;gap:2px}
#p-rotation .seg{flex:1;height:11px;border-radius:2px;background:rgba(255,255,255,.05)}
#p-rotation .val{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:11px;text-align:right}
#p-rotation .rot-note{font-size:9.5px;color:#5A6675;font-style:italic;padding:8px 14px;border-top:1px solid #1E2835}

/* heatmap */
#p-rotation .hm{padding:10px 14px 12px;overflow-x:auto}
#p-rotation .grid{display:grid;gap:3px;min-width:520px}
#p-rotation .hcell{height:22px;border-radius:3px;display:flex;align-items:center;justify-content:center;
  font-family:'JetBrains Mono',monospace;font-size:9px;color:rgba(255,255,255,.65)}
#p-rotation .rowlab{display:flex;align-items:center;font-size:11px;padding-right:8px;white-space:nowrap;cursor:pointer;overflow:hidden}
#p-rotation .rowlab .tk{font-family:'JetBrains Mono',monospace;font-weight:700;margin-right:7px;width:44px;color:#E8EEF4}
#p-rotation .rowlab .nm{color:#8593A3;font-size:10px;overflow:hidden;text-overflow:ellipsis}
#p-rotation .rowlab:hover .nm{color:#E8EEF4}
#p-rotation .collab{font-size:9px;color:#5A6675;text-align:center;font-family:'JetBrains Mono',monospace;padding-bottom:3px}
#p-rotation .collab.now{color:#CBA45A;font-weight:700}
#p-rotation .legend{display:flex;align-items:center;gap:10px;justify-content:flex-end;padding:0 15px 12px;font-size:9.5px;color:#8593A3}
#p-rotation .scale{display:flex;height:8px;width:140px;border-radius:2px;overflow:hidden}

/* macro */
.drv-row,.pair-row{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px solid var(--line)}
.drv-name{color:var(--ink)}
.drv-val{font-variant-numeric:tabular-nums;font-weight:600}
.spark{vertical-align:middle}
.sect-title{color:var(--dim);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;margin:9px 0 3px}
.flow{font-size:11px;color:var(--mut);margin-top:3px}
.flow .into{color:var(--pos)} .flow .from{color:var(--neg)}

/* benchmark */
#benchmark svg{display:block;width:100%;height:auto}

/* lists */
.li{display:flex;justify-content:space-between;gap:8px;padding:4px 0;border-bottom:1px solid var(--line);font-size:11.5px}
.li:last-child{border-bottom:0}
.li .r{color:var(--mut);font-variant-numeric:tabular-nums;white-space:nowrap}
.pos{color:var(--pos)} .neg{color:var(--neg)} .mut{color:var(--mut)} .gold{color:var(--gold)}
.rank{color:var(--dim);width:18px;display:inline-block}
.empty{color:var(--dim);font-style:italic;padding:6px 0}
/* #p-alerts rules removed 7/16 with the Alert Feed panel */
.rtag{display:inline-block;color:var(--mut);border:1px solid var(--line2);border-radius:9px;padding:0 6px;font-size:10px;cursor:help}
.rtag.chop{color:var(--weak);border-color:var(--weak)}
.sc-defs{color:var(--dim);font-size:10px;line-height:1.55;margin:8px 0 2px}
.sc-defs b{color:var(--mut);font-weight:600}

/* breadth */
.breadth-head{font-size:11px;color:var(--mut);margin-bottom:6px;padding-bottom:6px;border-bottom:1px solid var(--line);grid-column:1 / -1}
.breadth-head b{color:var(--weak)}
/* 7/16 (JD: "the Breadth box is extremely large") — 11 sector rows now flow down
   two ranked columns instead of one tall stack: half the height, same data.
   grid-auto-flow:column + 6 fixed rows keeps the ranking readable top-down. */
/* 7/18: back to ONE stacked column. Breadth now lives in the 310px left rail (moved there
   to fill the dead air inside Sector Conviction), and the whole point of the multi-column
   trick above was to keep it short when it was wide. In the rail we WANT its natural
   height — that's what fills the gap. */
#breadth{display:grid;grid-template-columns:1fr;grid-auto-flow:row;align-content:start}
@media(max-width:1100px){#breadth{display:block}}   /* phones: single column again */
.bcell{display:flex;justify-content:space-between;gap:8px;padding:2px 0;font-size:11px;min-width:0}
.bbar{height:5px;border-radius:3px;background:var(--weak);opacity:.55}

/* glossary */
.gloss{display:grid;grid-template-columns:1fr 1fr;gap:1px 10px;font-size:10.5px}
.gloss span{color:var(--gold)}

/* sector drill-down overlay */
.watch-hint{font-size:11px;color:var(--mut);line-height:1.5}
.watch-hint .reopen{color:var(--gold);cursor:pointer}
.drill-overlay{position:fixed;inset:0;z-index:50;background:rgba(4,6,10,.66);
  display:flex;align-items:flex-start;justify-content:center;padding:40px 16px;overflow:auto;
  font-family:'Inter',-apple-system,BlinkMacSystemFont,system-ui,sans-serif}
.drill-overlay[hidden]{display:none}
.drill-card{width:min(680px,100%);background:linear-gradient(180deg,#131B26,#0F141C);
  border:1px solid #283344;border-radius:12px;box-shadow:0 24px 60px rgba(0,0,0,.55);overflow:hidden}
.drill-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 18px;border-bottom:1px solid #1E2835}
.drill-titles{display:flex;flex-direction:column;gap:2px;min-width:0}
.drill-tk{font-family:'Archivo',sans-serif;font-weight:800;font-size:16px;color:#E8EEF4;letter-spacing:.01em}
.drill-ctx{font-family:'JetBrains Mono',monospace;font-size:10px;color:#8593A3}
/* #tkr-close joined this list 2026-08-09: it had never been styled, so the ticker card
   shipped a raw browser button — #efefef fill, black 2px border, square corners — as the
   one light control on a dark card. Same element, same job as the others. */
#drill-close,#pe-close,#read-close,#tkr-close{background:#141a25;color:#8593A3;border:1px solid #283344;border-radius:7px;width:30px;height:30px;font-size:13px;cursor:pointer;flex:none}
#drill-close:hover,#pe-close:hover,#read-close:hover,#tkr-close:hover{color:#E8EEF4;border-color:#CBA45A}
.drill-body{padding:8px 18px 14px;max-height:64vh;overflow:auto}
.dsec-title{font-family:'Archivo',sans-serif;font-weight:700;font-size:11px;letter-spacing:.12em;text-transform:uppercase;
  color:#CBA45A;margin:14px 0 6px;display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.dsec-title span{font-family:'Inter',sans-serif;font-weight:400;font-size:9.5px;letter-spacing:.02em;text-transform:none;color:#5A6675}
.drow{padding:7px 0;border-bottom:1px solid rgba(30,40,53,.6)}
.drow:last-child{border-bottom:0}
.drow-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.dtk{font-family:'Inter',sans-serif;font-size:12px;font-weight:600;color:#E8EEF4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dchips{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end;flex:none}
.dchip{font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.04em;padding:1px 5px;border-radius:4px;border:1px solid transparent;white-space:nowrap}
.dchip.lead{color:#2BD576;border-color:rgba(43,213,118,.4);background:rgba(43,213,118,.08)}
.dchip.lag{color:#FF5A6E;border-color:rgba(255,90,110,.35);background:rgba(255,90,110,.07)}
/* How long a name has HELD leadership. Deliberately NOT green/red: this is not a verdict,
   it is a fact about duration. Gold on the long ones because that is the group the
   2026-08-09 study measured as strongest; grey on the fresh ones so a four-day-old crossing
   stops looking identical to a four-month trend. */
.dchip.held-new{color:#7d8794;border-color:#2a3340;background:rgba(125,135,148,.08)}
.dchip.held-mid{color:#9aa7b6;border-color:#313d4d;background:rgba(154,167,182,.07)}
.dchip.held-long{color:var(--gold);border-color:rgba(216,178,74,.45);background:rgba(216,178,74,.10);font-weight:700}
.dchip.tag{color:#CBA45A;border-color:rgba(203,164,90,.4);background:rgba(203,164,90,.07)}
.dchip.earn{color:#E0B83A;border-color:rgba(224,184,58,.4);background:rgba(224,184,58,.08)}
.drow-bot{display:flex;align-items:center;gap:10px;margin-top:5px}
.dmeter{display:flex;gap:2px;flex:1;min-width:80px}
.dmeter .seg{flex:1;height:10px;border-radius:2px;background:rgba(255,255,255,.05)}
.dmv{font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;width:56px;text-align:right;flex:none}
.dmv.pos{color:#2BD576}.dmv.neg{color:#FF5A6E}.dmv.mut{color:#5A6675}
.dstr{font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;color:#E8EEF4;width:26px;text-align:right;flex:none}
.addbtn{font-family:'JetBrains Mono',monospace;font-size:10px;color:#2BD576;background:rgba(43,213,118,.08);
  border:1px solid rgba(43,213,118,.4);border-radius:6px;padding:3px 8px;cursor:pointer;white-space:nowrap;flex:none}
.addbtn:hover{background:rgba(43,213,118,.16)}
.addbtn:disabled{opacity:.6;cursor:default}
.drill-foot{font-size:9.5px;color:#5A6675;font-style:italic;padding:11px 18px;border-top:1px solid #1E2835;line-height:1.45}
body.drill-open{overflow:hidden}

/* ---- Panel expand: tap a box's ⤢ to open it as a full-screen "room".
   DESKTOP: byte-for-byte unchanged AT REST — the ⤢ is display:none and only fades in
   while you hover the box, so nothing is added to the layout until you reach for it;
   expand opens a large centered room. PHONE: the ⤢ is always shown and expand goes
   edge-to-edge, enlarged, with a PINNED header so ✕ is always reachable. Every rule
   here only styles #pe-* or the injected .pe-btn, so the normal dashboard is untouched. */
.pe-btn{display:none;align-items:center;justify-content:center;vertical-align:middle;
  width:24px;height:24px;margin-left:8px;flex:none;padding:0;font-size:13px;line-height:1;cursor:pointer;
  color:#CBA45A;background:rgba(203,164,90,.10);border:1px solid rgba(203,164,90,.45);border-radius:7px;
  transition:opacity .12s,background .12s}
.pe-btn:hover{background:rgba(203,164,90,.2)}
.pe-head{cursor:pointer}
#pe-overlay{z-index:85}
.pe-card{width:min(640px,94vw)}
/* in the room, the panel's own header is redundant with the room's title bar — hide it so
   the content starts clean (scoped to #pe-body .pe-in, so the dashboard header is untouched) */
#pe-body .pe-in > h2,#pe-body .pe-in > .setups-head{display:none}
/* DESKTOP: the box header itself opens the room — cue is the pointer cursor + a faint hover
   tint (hover-capable pointers only). At rest the dashboard is byte-for-byte unchanged and NO
   icon is added. Room height caps at 80vh, scoped to desktop so the phone override wins. */
@media(min-width:681px){ #pe-body{max-height:80vh} }
@media(hover:hover){ .pe-head:hover{background:rgba(203,164,90,.05)} }
/* PHONE: always-visible ⤢; full-screen expand as a flex column so the header stays pinned
   and only the body scrolls (✕ always reachable); 100dvh tracks the visible viewport. */
@media(max-width:680px){
  .pe-btn{display:inline-flex}
  #pe-overlay{padding:0}
  #pe-overlay .pe-card{width:100%;max-width:none;height:100dvh;border-radius:0;border:0;display:flex;flex-direction:column}
  #pe-overlay .drill-head{flex:none}
  #pe-body{flex:1;min-height:0;max-height:none;overflow-y:auto;overflow-x:hidden;padding:12px 12px 40px}
  /* the enlargement: zoom reflows bigger AND keeps real scroll height; the width
     compensation keeps it from spilling past the screen horizontally. */
  #pe-body .pe-in{width:calc((100% - 2px) / 1.18);zoom:1.18;margin:0;background:transparent;border:0;box-shadow:none}
  #pe-body .pe-in .body,#pe-body .pe-in .setups-row{max-height:none;overflow:visible}
  #pe-body .pe-in .pe-btn{display:none}
}

/* THE 5 · the 5 Percenter lives on the login screen (welcome.html), not the dashboard. */

/* data-source note (top) + the model formula shown in gold, no explanation */
.data-src{font-size:9.5px;color:var(--mut);text-align:right;letter-spacing:.02em;padding:4px 16px 0}
.fx-gold{color:var(--gold2);font-family:'JetBrains Mono',monospace;font-weight:600;letter-spacing:.02em}

.drill-head-btns{display:flex;gap:8px;align-items:center;flex:none;flex-wrap:wrap;justify-content:flex-end}
/* "About the company" — one plain line under the ticker header, above the body.
   Padding cut 9px->6px and margin 10px->7px on 2026-08-09: these two boxes were eating
   207px of a 375px phone before any analysis rendered. */
.tkr-about{display:flex;gap:9px;align-items:baseline;margin:2px 0 7px;padding:6px 10px;
  border:1px solid rgba(216,178,74,.16);border-left:2px solid rgba(216,178,74,.5);
  border-radius:7px;background:rgba(216,178,74,.045)}
.tkr-about[hidden]{display:none}
.tkr-about-lab{flex:0 0 auto;font-family:'Rajdhani',sans-serif;font-size:10px;font-weight:700;
  letter-spacing:2.6px;color:#caa84e}
#tkr-about-txt{font-family:'Inter',sans-serif;font-size:12px;line-height:1.55;color:#b8b09a}
#tkr-about-txt[hidden]{display:none}

/* ABOUT folded: the whole row IS the button, so the tap target is the full width rather
   than a caret a thumb has to hunt for. */
.tkr-abt-wrap{display:block;padding:0}
.tkr-abt-btn{display:flex;width:100%;align-items:baseline;gap:9px;padding:6px 10px;
  background:none;border:0;cursor:pointer;text-align:left;font:inherit;color:inherit}
.tkr-abt-btn:hover .tkr-abt-hint{color:#caa84e}
.tkr-abt-hint{flex:1 1 auto;font-family:'Inter',sans-serif;font-size:11.5px;color:#7d766a}
.tkr-abt-car{flex:0 0 auto;color:#caa84e;font-size:11px;transition:transform .16s ease}
.tkr-abt-wrap.open .tkr-abt-car{transform:rotate(90deg)}
.tkr-abt-wrap #tkr-about-txt{padding:0 10px 8px}

/* DIVIDEND banner: structurally one line, matching the ABOUT row. The ellipsis is the
   guarantee — a long frequency string or a 5-figure annual rate gets trimmed instead of
   wrapping and doubling the banner's height. min-width:0 is required for a flex child to
   be allowed to shrink below its content width, without it the ellipsis never fires. */
.tkr-div{align-items:center}
#tkr-div-txt{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Caret only, because the words "Dividend Room" cost 88px of a 338px row and pushed the
   actual numbers into an ellipsis. The padding/negative-margin pair buys a thumb-sized
   tap target without adding a single pixel to the banner's height. */
.tkr-div-more{flex:0 0 auto;font-size:12px;line-height:1;color:var(--gold);text-decoration:none;
  opacity:.8;padding:9px 8px;margin:-9px -4px -9px 0}
.tkr-div-more:hover{opacity:1}
.tkr-div-more[hidden]{display:none}
.tkr-div-tap{cursor:pointer}
.tkr-div-tap:hover{background:rgba(216,178,74,.075)}
.tkr-div-tap:hover .tkr-div-more{opacity:1}
/* Portrait phone: the header button row ran off the right edge — TradingView AND the
   ✕ (the last two children) were unreachable, with no scroll. flex-wrap:wrap above was
   already set but never fired: flex:none sizes the row to its content and refuses to
   shrink, so the line is never narrow enough to wrap. Below 560px, let it take its own
   full-width line and shrink, so the buttons wrap instead of overflowing. Scoped to
   .tkr-card + inside a media query on purpose: desktop and the other drill cards are
   untouched by construction. */
@media (max-width:560px){
  .tkr-card .drill-head{flex-wrap:wrap}
  .tkr-card .drill-head-btns{flex:1 1 100%;min-width:0;justify-content:flex-start}
  /* ...but wrapping moved the problem rather than solving it: ✕ is the LAST child, so once
     TradingView appeared the row broke to a second line holding one 30px button, and the
     header ran 56px tall to carry it. The close control does not belong in a row of
     research links anyway — pin it to the card corner, out of flow, where it costs zero
     height and cannot be pushed anywhere by a button added later. */
  .tkr-card{position:relative}
  .tkr-card #tkr-close{position:absolute;top:12px;right:12px;z-index:3}
  /* max-width, NOT padding-right: .drill-titles is shrink-to-fit, so padding just made the
     box wider and "TDY — TELEDYNE TECHNOLOGIES INC" still ran 41px under the ✕. A max-width
     is a real ceiling, so a long name wraps instead of sliding beneath the button. */
  .tkr-card .drill-titles{max-width:calc(100% - 42px)}
}
/* Gold "open in TradingView" link on the ticker card header — matches the Today's Read button. */
.tv-btn{font-family:'Archivo',sans-serif;font-weight:800;font-size:10px;letter-spacing:.04em;
  color:#10151d;background:linear-gradient(135deg,var(--gold),var(--gold2));border:1px solid rgba(233,200,96,.5);
  border-radius:7px;padding:5px 10px;cursor:pointer;white-space:nowrap;text-decoration:none;
  box-shadow:0 0 8px rgba(216,178,74,.22)}
.tv-btn:hover{box-shadow:0 0 14px rgba(216,178,74,.45);filter:brightness(1.06)}
.tv-btn[hidden]{display:none}
/* Edge Pro research links (Yahoo · Finviz · SEC) — lighter gold-outline pills so the solid-gold
   TradingView button stays the hero and the header isn't a wall of gold. */
.ext-btn{font-family:'Archivo',sans-serif;font-weight:700;font-size:10px;letter-spacing:.04em;
  color:var(--gold2);background:rgba(216,178,74,.08);border:1px solid rgba(216,178,74,.45);
  border-radius:7px;padding:5px 9px;cursor:pointer;white-space:nowrap;text-decoration:none}
.ext-btn:hover{background:rgba(216,178,74,.16);border-color:var(--gold)}
.ext-btn[hidden]{display:none}
/* Leaders / Laggards switch in the drill head (JD 2026-09-23: "sort by in right corner,
   leaders and laggards", every sector). Same names, the order flips. */
.drill-sort{display:inline-flex;border:1px solid var(--line2);border-radius:7px;overflow:hidden}
.drill-sort button{font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.06em;background:none;
  border:none;color:var(--mut);padding:5px 9px;cursor:pointer}
.drill-sort button+button{border-left:1px solid var(--line2)}
.drill-sort button:hover{color:#E8EEF4}
.drill-sort button.on{background:rgba(203,164,90,.16);color:#E4D5AC}
#drill-why{font-family:'Archivo',sans-serif;font-weight:700;font-size:11px;letter-spacing:.04em;color:#CBA45A;
  background:rgba(203,164,90,.08);border:1px solid rgba(203,164,90,.45);border-radius:7px;padding:6px 12px;cursor:pointer}
#drill-why:hover{background:rgba(203,164,90,.18)}

/* reasons page (direct attribution) */
.rx-card{width:min(640px,100%)}
#reasons-overlay{z-index:60}
.rx-sec{padding:12px 0;border-bottom:1px solid rgba(30,40,53,.55)}
.rx-sec:last-child{border-bottom:0}
.rx-h{font-family:'Archivo',sans-serif;font-weight:700;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:#CBA45A;margin-bottom:7px;display:flex;align-items:center;gap:8px}
.rx-n{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;
  background:rgba(203,164,90,.14);border:1px solid rgba(203,164,90,.5);color:#CBA45A;font-size:9.5px;flex:none}
.rx-lead{margin:0 0 8px;font-size:13px;line-height:1.5;color:#E8EEF4}
.rx-lead b{color:#fff}
.rx-cf{margin:0;font-size:11.5px;line-height:1.55;color:#A6B2C0}
.rx-cf b{color:#E8EEF4}
.rx-tag{font-family:'JetBrains Mono',monospace;font-size:8.5px;font-weight:700;letter-spacing:.06em;padding:1px 6px;border-radius:4px;margin-right:5px}
.rx-tag.broad{color:#2BD576;background:rgba(43,213,118,.1);border:1px solid rgba(43,213,118,.4)}
.rx-tag.conc{color:#FF5A6E;background:rgba(255,90,110,.1);border:1px solid rgba(255,90,110,.4)}
.rx-note{display:block;margin-top:3px;font-size:9px;color:#5A6675;font-style:italic}
.rx-stat{font-size:11.5px;color:#A6B2C0;margin-bottom:4px}
.rx-stat b{color:#E8EEF4;font-variant-numeric:tabular-nums}
.rx-sep{margin:0 8px;color:#3a4655}
.rx-sub{font-size:9.5px;color:#5A6675;font-style:italic;margin:2px 0 6px}
.rx-row{display:flex;align-items:center;gap:9px;padding:4px 0;border-bottom:1px solid rgba(30,40,53,.4);font-size:11.5px}
.rx-row:last-child{border-bottom:0}
.rx-rk{font-family:'JetBrains Mono',monospace;color:#5A6675;font-size:10px;width:22px;flex:none}
.rx-tk{font-family:'JetBrains Mono',monospace;font-weight:700;color:#E8EEF4;min-width:120px;flex:1}
.rx-contrib{font-family:'JetBrains Mono',monospace;color:#A6B2C0;font-size:10.5px;white-space:nowrap}
.rx-mv{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:11px;width:58px;text-align:right;flex:none}
.rx-mv.pos{color:#2BD576}.rx-mv.neg{color:#FF5A6E}
.rx-dval{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:11px;width:62px;text-align:right;flex:none}
.rx-dval.pos{color:#2BD576}.rx-dval.neg{color:#FF5A6E}
.rx-role{font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.04em;width:92px;text-align:right;flex:none}
.rx-role.drag{color:#FF5A6E}.rx-role.boost{color:#2BD576}
.rx-mech{margin-top:9px;padding:9px 11px;background:rgba(203,164,90,.06);border:1px solid rgba(203,164,90,.25);border-radius:8px;
  font-family:'JetBrains Mono',monospace;font-size:12px;color:#E8EEF4}
.rx-mech .pos{color:#2BD576}.rx-mech .neg{color:#FF5A6E}.rx-mech .rx-neu{color:#CBA45A}
.rx-cat{color:#E0B83A;font-size:11.5px}
.rx-news{display:block;margin-top:7px;padding:9px 11px;background:#0c121b;border:1px solid #1E2835;border-radius:8px;text-decoration:none}
.rx-news:hover{border-color:#CBA45A}
.rx-news-t{display:block;font-size:11.5px;color:#E8EEF4;line-height:1.4}
.rx-news-m{display:block;margin-top:4px;font-family:'JetBrains Mono',monospace;font-size:9px;color:#8593A3}

/* track record */
#track-btn{font-family:'Archivo',sans-serif;font-weight:700;font-size:10.5px;letter-spacing:.06em;color:var(--gold);
  background:var(--panel2);border:1px solid var(--line2);border-radius:6px;padding:7px 12px;cursor:pointer;white-space:nowrap}
#track-btn:hover{border-color:var(--gold)}
.tr-card{width:min(900px,100%)}
#track-overlay{z-index:70}
.tr-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:4px 0 12px}
.tr-box{border:1px solid #1E2835;border-radius:10px;padding:14px 16px;background:#0c121b}
.tr-box.live{border-color:rgba(43,213,118,.3)}
.tr-box.back{border-color:rgba(203,164,90,.28)}
.tr-bt{font-family:'Archivo',sans-serif;font-weight:700;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#8593A3;margin-bottom:6px}
.tr-box.live .tr-bt{color:#2BD576}.tr-box.back .tr-bt{color:#CBA45A}
.tr-big{font-family:'Archivo',sans-serif;font-weight:900;font-size:34px;line-height:1}
.tr-bigsub{font-size:10.5px;color:#8593A3;margin-top:2px}
.tr-stats{display:flex;gap:14px;margin-top:9px;font-size:11px;color:#A6B2C0;font-variant-numeric:tabular-nums}
.tr-stats b{color:#E8EEF4}
.tr-ov{margin-top:9px;padding-top:8px;border-top:1px solid #1E2835;font-size:10.5px;color:#8593A3}
.tr-ov b{color:#E8EEF4}
.tr-note{margin-top:8px;font-size:9px;color:#5A6675;font-style:italic;line-height:1.45}
.tr-live-note{margin-top:9px;font-size:11px;color:#8593A3;line-height:1.5}
.tr-live-note b{color:#E8EEF4}
.w-hi{color:#2BD576}.w-mid{color:#E0B83A}.w-lo{color:#FF5A6E}.w-na{color:#5A6675}
.tr-weak{font-size:11.5px;color:#A6B2C0;background:rgba(255,90,110,.06);border:1px solid rgba(255,90,110,.25);
  border-radius:8px;padding:9px 12px;margin-bottom:12px}
.tr-weak b{color:#E8EEF4}
.tr-cats{display:grid;grid-template-columns:1fr 1fr;gap:10px 18px;margin-bottom:10px}
.tr-cat-h{font-family:'Archivo',sans-serif;font-weight:700;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:#CBA45A;margin:8px 0 5px}
.tr-crow{display:grid;grid-template-columns:1fr 70px 42px 40px;align-items:center;gap:8px;padding:3px 0;font-size:11px}
.tr-clab{color:#A6B2C0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tr-bar{height:7px;background:var(--panel2);border-radius:4px;overflow:hidden}
.tr-fill{display:block;height:100%;border-radius:4px}
.tr-fill.w-hi{background:#2BD576}.tr-fill.w-mid{background:#E0B83A}.tr-fill.w-lo{background:#FF5A6E}.tr-fill.w-na{background:#3a4655}
.tr-cw{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:11px;text-align:right}
.tr-cn{font-family:'JetBrains Mono',monospace;font-size:9.5px;color:#5A6675;text-align:right}
.tr-logwrap{margin-top:10px;border-top:1px solid #1E2835;padding-top:8px}
.tr-tbl{width:100%;border-collapse:collapse;font-size:11px;font-variant-numeric:tabular-nums}
.tr-tbl th{text-align:left;font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:500;letter-spacing:.04em;
  color:#5A6675;text-transform:uppercase;padding:4px 8px 4px 0;border-bottom:1px solid #1E2835}
.tr-tbl td{padding:4px 8px 4px 0;border-bottom:1px solid rgba(30,40,53,.4);color:#A6B2C0;white-space:nowrap}
.tr-tbl td:first-child{font-family:'JetBrains Mono',monospace;color:#8593A3}
.tr-tbl .r{text-align:right}
.tr-pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:10px;font-size:10.5px;color:#8593A3}
.tr-pager button{background:var(--panel2);color:var(--gold);border:1px solid #283344;border-radius:6px;padding:4px 12px;cursor:pointer;font-size:11px}
.tr-pager button:hover:not(:disabled){border-color:#CBA45A}
.tr-pager button:disabled{opacity:.4;cursor:default}
@media(max-width:680px){.tr-cards,.tr-cats{grid-template-columns:1fr}}

/* ---- Today's Setups (top-3 confluence suggestion box) ---- */
/* 7/18: 10px -> 12px so every vertical gap on the page is the same 12px the grids
   use (#grid gap/padding, .col gap, #bottom gap). Band-to-band used to be 10 while
   panel-to-panel was 12 — two rhythms one page, close enough to read as "off". */
.setups{margin:12px 12px 0;padding:8px 12px 10px;background:var(--panel);
  border:1px solid var(--line);border-radius:10px}
/* 7/18 (JD: "Intraday Sector and what's beside it — I need it to have distinct features of
   being a label"). The band header used to be a bare flex row: title, badge, subtitle and
   timestamp all sat on one flat line at the same weight, so INTRADAY SECTOR and CATALYSTS
   read as the same thing. Panels already solve this — h2 carries a full-bleed bottom rule.
   Bands now do the same: negative margins pull the head out to the band's inner edge so the
   rule spans edge-to-edge, and the title gets a gold spine so the eye lands on the LABEL
   first and the description reads as description. */
.setups-head{display:flex;align-items:center;gap:10px;
  margin:-8px -12px 10px;padding:9px 12px 8px;
  border-bottom:1px solid var(--line)}
.st-title{font-family:'Archivo',sans-serif;font-weight:800;font-size:12px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gold);
  padding-left:9px;border-left:3px solid var(--gold);line-height:1.15}
.st-sub{font-size:10px;color:var(--mut);letter-spacing:.02em}
.st-sub b{color:var(--ink)}
.setups-row{display:flex;gap:10px;flex-wrap:wrap}
.st-scan,.st-later{font-size:11px;letter-spacing:.04em;padding:9px 4px;color:var(--mut)}
.ids-retry{margin-left:8px;font-size:10.5px;padding:2px 10px;border:1px solid var(--line2);
  border-radius:7px;background:transparent;color:var(--gold);cursor:pointer}
.ids-retry:hover{border-color:rgba(216,178,74,.5);background:rgba(216,178,74,.08)}

/* ---- Trade Ideas (7/17) — Layer 2: strong rotations, named + level ---- */
.tideas{margin:0 12px 12px}
#ti-body{padding:2px 0}
.ti-empty{font-size:12px;color:var(--mut);line-height:1.55;padding:12px 14px;border:1px dashed var(--line2);border-radius:9px;background:rgba(255,255,255,.015)}
.ti-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px}
.ti-card{border:1px solid var(--line2);border-radius:10px;padding:11px 13px;background:var(--panel)}
.ti-card.pos{border-left:3px solid #2bd576} .ti-card.neg{border-left:3px solid #d0503f}
.ti-top{display:flex;align-items:center;gap:8px;font-size:10px}
.ti-dir{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:9.5px;padding:1px 6px;border-radius:6px}
.ti-dir.long{color:#5cf0a0;background:rgba(43,213,118,.1)} .ti-dir.short{color:#e88a7a;background:rgba(208,80,63,.1)}
.ti-sec{color:var(--mut);flex:1;min-width:0;display:flex;align-items:center;gap:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ti-conv{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:12px}
.ti-conv.pos{color:#5cf0a0} .ti-conv.neg{color:#e88a7a}
.ti-name{display:flex;align-items:center;gap:7px;margin:7px 0 5px;font-size:13px}
.ti-nm{color:var(--mut);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ti-rs{margin-left:auto;font-family:'JetBrains Mono',monospace;font-size:9.5px;color:var(--gold)}
.ti-level{font-size:11.5px;color:var(--ink);font-family:'JetBrains Mono',monospace}
.ti-level b{color:var(--gold)}
.ti-lmeta{color:var(--mut);font-size:9.5px}
.ti-nolvl{color:var(--weak);font-style:italic;font-family:inherit}
.ti-foot{font-size:9.5px;color:var(--weak);line-height:1.5;padding:8px 2px 0}

/* ---- Downside Watch (7/17) — proxies WEIGHTED by rotation vs RSP, ranked for puts ---- */
.dnwatch{margin:0 12px 16px}
.dn-read{font-size:11px;color:var(--mut);padding:8px 2px;border-bottom:1px solid var(--line);margin-bottom:4px;line-height:1.5}
.dn-foot{font-size:9.5px;color:var(--weak);padding:8px 2px 2px;line-height:1.5}
.dn-hdr{display:flex;align-items:center;gap:8px;font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--mut);padding:2px 0 4px;border-bottom:1px solid var(--line)}
.dn-hdr .dn-barwrap{height:auto;background:none;text-align:center}
.dn-row{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:11px;border-bottom:1px solid var(--line)}
.dn-row.dn-bearish{background:rgba(208,80,63,.05)}
.od-tags{display:flex;flex-wrap:wrap;gap:4px;flex:1;min-width:0}
.od-tag{font-size:10px;padding:1px 6px;border:1px solid var(--line);border-radius:9px;color:var(--mut);white-space:nowrap}
.od-earn{font-size:10px;color:var(--mut);white-space:nowrap}
.od-stat{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:11px;color:var(--mut);padding:6px 0 8px;border-bottom:1px solid var(--line)}
.od-stat b{color:var(--ink)} .od-stat .pos,.od-stat b.pos{color:var(--pos)} .od-stat .neg,.od-stat b.neg{color:var(--neg)}
.od-side{margin-top:8px} .od-h{font-size:11px;letter-spacing:.08em;color:var(--mut);font-weight:700;padding:4px 0}
.od-moving{font-size:10px;color:var(--mut);padding:6px 0 2px}
.dn-rk{flex:0 0 18px;text-align:center;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--mut)}
.dn-tk{flex:0 0 158px;display:flex;align-items:center;gap:6px;min-width:0}
.dn-nm{color:var(--mut);font-size:9.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* the bar grows from the CENTER: left = bearish (red), right = bullish (green) */
.dn-barwrap{flex:1;height:9px;background:var(--panel2);border-radius:3px;position:relative;overflow:hidden}
.dn-barwrap::before{content:"";position:absolute;left:50%;top:0;bottom:0;width:1px;background:var(--line2)}
.dn-bar{position:absolute;top:1px;bottom:1px;border-radius:2px;transition:width .5s}
.dn-bar.neg{right:50%;background:#d0503f;opacity:.85}
.dn-bar.pos{left:50%;background:#3ab27b;opacity:.7}
.dn-conv{flex:0 0 46px;text-align:right;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:600}
.dn-conv.neg{color:#e88a7a} .dn-conv.pos{color:#5cf0a0}
.dn-dd{flex:0 0 66px;text-align:right;font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--mut)}
@media(max-width:620px){.dn-tk{flex-basis:96px}.dn-nm{display:none}}
.st-later{color:var(--dim)}
.setups-foot{font-size:9.5px;color:var(--dim);margin-top:8px;letter-spacing:.02em}
/* Premium caption — deep gold, with a slow 'lighthouse' gold beam sweeping across every 3 min (180s) */
#premium-foot{
  color:#c8973c;                                   /* deep gold base / fallback */
  background-image:linear-gradient(100deg,
    #b07f2c 0%, #c8973c 38%, #ffe7ac 47%, #fff4d0 50%, #ffe7ac 53%, #c8973c 62%, #b07f2c 100%);
  background-size:250% 100%; background-position:130% 0;   /* beam parked off-screen, text rests deep gold */
  -webkit-background-clip:text; background-clip:text;
  -webkit-text-fill-color:transparent;
  animation:lighthouseSweep 180s linear infinite, lighthouseGlow 180s linear infinite;
}
@keyframes lighthouseSweep{          /* steady deep gold ~2.9 min, then the beam sweeps across in ~7s */
  0%,96% { background-position:130% 0; }
  100%   { background-position:-30% 0; }
}
@keyframes lighthouseGlow{           /* a gold halo blooms as the beam passes the text */
  0%,95.5%,100% { filter:drop-shadow(0 0 0 rgba(245,204,90,0)); }
  98%           { filter:drop-shadow(0 0 9px rgba(245,204,90,.55)); }
}
.setups.premium{margin-top:8px;background:linear-gradient(180deg,#10151f,var(--panel))}

/* ---- Premium Sectors cards ---- */
.pm-card{flex:1 1 0;min-width:188px;background:var(--panel2);border:1px solid var(--line2);
  border-left:3px solid var(--line2);border-radius:9px;padding:8px 11px;cursor:pointer;transition:transform .08s}
.pm-card:hover{transform:translateY(-1px)}
.pm-card.call{border-left-color:var(--rgreen)} .pm-card.put{border-left-color:var(--rred)}
.pm-top{display:flex;align-items:center;gap:7px}
.pm-sec{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:13px;color:var(--ink)}
.pm-dir{font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:700;border-radius:5px;padding:0 5px}
.pm-card.call .pm-dir{color:#5cf0a0;border:1px solid #27502f} .pm-card.put .pm-dir{color:#ff7d8c;border:1px solid #5a2730}
.pm-conv{margin-left:auto;font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:600;color:var(--ink)}
.pm-tier{font-size:8px;letter-spacing:.08em;text-transform:uppercase;border:1px solid var(--line2);border-radius:7px;padding:0 5px;color:var(--mut)}
.pm-tier.t-premium{color:var(--gold);border-color:var(--gold)}
.pm-tier.t-strong{color:#5cf0a0;border-color:#27502f}
.pm-tier.t-building{color:var(--mut)}
.pm-secname{font-size:10px;color:var(--mut);margin:3px 0 5px}
.pm-play{font-size:11px;color:var(--ink);line-height:1.5}
.pm-nm{font-size:10.5px;color:var(--mut)} .pm-nm b{color:var(--ink);font-family:'JetBrains Mono',monospace}
.pm-tied{font-size:8px;color:var(--dim);border:1px solid var(--line2);border-radius:2px;
  padding:0 3px;margin-left:5px;white-space:nowrap;cursor:help}
.pm-setup.ok{color:var(--rgreen)} .pm-setup.forming{color:var(--gold)} .pm-setup.none{color:var(--dim);font-size:10px}
.pm-dots{letter-spacing:1px;font-size:9px}

.setup-card{flex:1 1 0;min-width:208px;background:var(--panel2);border:1px solid var(--line2);
  border-left-width:3px;border-radius:9px;padding:9px 11px;cursor:pointer;position:relative;
  transition:border-color .12s,box-shadow .12s,transform .08s}
.setup-card:hover{transform:translateY(-1px)}
.sc-top{display:flex;align-items:baseline;gap:8px}
.sc-tk{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:16px;color:var(--ink)}
.sc-dir{margin-left:auto;font-family:'Archivo',sans-serif;font-weight:800;font-size:9.5px;
  letter-spacing:.12em;padding:1px 7px;border-radius:6px;border:1px solid currentColor}
.sc-sec{font-size:10px;color:var(--mut);margin:2px 0 6px}
.sc-score{display:flex;align-items:baseline;gap:3px;margin-bottom:6px}
.sc-n{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:18px;color:var(--ink)}
.sc-of{font-size:11px;color:var(--mut)}
.sc-lbl{font-size:8.5px;color:var(--mut);letter-spacing:.09em;text-transform:uppercase;margin-left:5px}
.sc-why{display:flex;flex-wrap:wrap;gap:4px}
.sc-f{font-size:8.5px;letter-spacing:.02em;padding:1px 6px;border-radius:8px;
  border:1px solid var(--line2);color:var(--ink);background:rgba(255,255,255,.02)}
.sc-cat{font-size:9.5px;color:var(--gold);margin-top:6px}
.sc-rec{font-size:9.5px;color:var(--dim);margin-top:6px;letter-spacing:.03em;font-style:italic}

.setup-card.call{border-left-color:var(--rgreen)}
.setup-card.call .sc-tk,.setup-card.call .sc-n,.setup-card.call .sc-dir{color:#5cf0a0;
  text-shadow:0 0 10px rgba(43,213,118,.5)}
.setup-card.call:hover{border-color:var(--rgreen);
  box-shadow:0 0 0 1px rgba(43,213,118,.4),0 0 18px rgba(43,213,118,.22)}
.setup-card.put{border-left-color:var(--rred)}
.setup-card.put .sc-tk,.setup-card.put .sc-n,.setup-card.put .sc-dir{color:#ff7d8c;
  text-shadow:0 0 10px rgba(255,90,110,.45)}
.setup-card.put:hover{border-color:var(--rred);
  box-shadow:0 0 0 1px rgba(255,90,110,.4),0 0 18px rgba(255,90,110,.2)}
@media(max-width:680px){.setup-card{flex:1 1 100%}}

/* ===== Track Record Room (a full page) ===== */
.brand-sub{color:var(--mut);font-weight:500;letter-spacing:.06em;font-size:10.5px}
.tr-chip{font-family:'Archivo',sans-serif;font-weight:800;font-size:11px;letter-spacing:.08em;
  color:var(--ink);background:var(--panel2);border:1px solid var(--line2);border-radius:7px;padding:5px 11px;
  display:flex;align-items:center;gap:7px}
.live-dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.live-dot.in{background:#5cf0a0;box-shadow:0 0 8px rgba(43,213,118,.7);animation:pulse 1.6s infinite}
.live-dot.flat{background:var(--dim)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.backlink{color:var(--gold);text-decoration:none;font-size:11px;border:1px solid var(--line2);border-radius:6px;
  padding:5px 10px}
.backlink:hover{border-color:var(--gold)}
#tr-refresh{background:var(--panel2);color:var(--gold);border:1px solid var(--line2);border-radius:6px;
  width:30px;height:26px;cursor:pointer;font-size:13px}
#tr-refresh:hover{border-color:var(--gold)}
#trackmain{max-width:1080px;margin:0 auto;padding:14px;display:flex;flex-direction:column;gap:12px}
.tr-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:760px){.tr-cols{grid-template-columns:1fr}}
#trackmain .panel .body{padding:10px 12px}
.trackfoot{max-width:1080px;margin:6px auto 24px;padding:0 14px;font-size:9.5px;color:var(--dim);line-height:1.5}
.trackfoot b{color:var(--mut)}

.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media(max-width:620px){.stat-grid{grid-template-columns:repeat(2,1fr)}}
.stat{background:var(--bg2);border:1px solid var(--line);border-radius:8px;padding:8px 10px}
.sl{font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut)}
.sv{font-family:'JetBrains Mono',monospace;font-size:14px;color:var(--ink);margin-top:3px}
.sv.gold{color:var(--gold2)}

.side-badge{font-family:'Archivo',sans-serif;font-weight:800;font-size:9px;letter-spacing:.08em;
  padding:1px 6px;border-radius:5px}
.side-badge.call{background:rgba(43,213,118,.16);color:#5cf0a0}
.side-badge.put{background:rgba(255,90,110,.16);color:#ff7d8c}

.pos-row,.tape-row{background:var(--panel2);border:1px solid var(--line2);border-radius:8px;padding:8px 11px;margin-bottom:8px}
.pos-row{border-left:3px solid var(--gold)}
.tape-row.win{border-left:3px solid var(--rgreen)} .tape-row.lose{border-left:3px solid var(--rred)}
.pos-top,.tape-top{display:flex;align-items:center;gap:8px}
.pos-nm,.tape-nm{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:14px;color:var(--ink)}
.pos-sec,.tape-sec{font-size:10px;color:var(--mut)}
.pos-r,.tape-r{margin-left:auto;font-family:'JetBrains Mono',monospace;font-weight:700;font-size:14px}
.tape-pnl{font-family:'JetBrains Mono',monospace;font-size:12px;min-width:74px;text-align:right}
.pos-meta,.tape-meta{font-size:10px;color:var(--mut);margin-top:4px;font-family:'JetBrains Mono',monospace}
.pos-why,.tape-why{font-size:10px;color:var(--dim);margin-top:3px}

/* ---- Bruce's live open-position card (Real Metrics) ---- */
.pos-card{background:var(--panel2);border:1px solid var(--line2);border-left:3px solid var(--gold);
  border-radius:9px;padding:11px 13px;margin-bottom:9px}
.pos-card.pos{border-left-color:var(--rgreen)} .pos-card.neg{border-left-color:var(--rred)}
.pos-head{display:flex;align-items:center;gap:8px}
.pos-pnl{margin-left:auto;font-family:'JetBrains Mono',monospace;font-weight:700;font-size:16px}
.pos-pnl.pos{color:var(--rgreen)} .pos-pnl.neg{color:var(--rred)} .pos-pnl.mut{color:var(--mut)}
.pos-pnlsub{font-size:11px;font-weight:600;opacity:.8;margin-left:2px}
.pos-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:10px}
.pm{display:flex;flex-direction:column;gap:2px;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:7px 8px}
.pm-l{font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--dim);display:flex;align-items:center;gap:5px}
.pm-v{font-family:'JetBrains Mono',monospace;font-size:13.5px;color:var(--ink);font-weight:600}
.pm-s{font-size:9.5px;color:var(--mut);font-family:'JetBrains Mono',monospace}
.pos-live{display:inline-flex;align-items:center;gap:3px;color:var(--rgreen);font-size:8.5px;letter-spacing:.02em;text-transform:none}
.pos-livedot{width:5px;height:5px;border-radius:50%;background:var(--rgreen);box-shadow:0 0 5px var(--rgreen);animation:posLive 1.6s ease-in-out infinite}
@keyframes posLive{0%,100%{opacity:.35}50%{opacity:1}}
.pos-asof{font-size:8.5px;color:var(--dim);text-transform:none;letter-spacing:.02em}
.pos-cap{display:flex;align-items:center;gap:8px;margin-top:10px}
.pos-capbar{flex:0 0 120px;height:5px;background:var(--line2);border-radius:3px;overflow:hidden}
.pos-capfill{height:100%;background:linear-gradient(90deg,#a07830,#d4a030,#f5cc5a);border-radius:3px}
.pos-capl{font-size:9.5px;color:var(--mut);font-family:'JetBrains Mono',monospace}
.pos-capl b{color:var(--ink)}

/* ---- Options tab (real contract overlay per position) ---- */
.opt-tab-btn{background:linear-gradient(135deg,#3a2f12,#5a4718);border:1px solid rgba(210,160,40,.5);
  color:#f3d68a;border-radius:6px;padding:5px 11px;font-size:12px;font-weight:600;cursor:pointer;letter-spacing:.3px}
.opt-tab-btn:hover{box-shadow:0 0 14px rgba(210,160,40,.35);border-color:rgba(245,204,90,.8)}
.opt-overlay{position:fixed;inset:0;z-index:60;background:rgba(4,4,5,.74);backdrop-filter:blur(3px);
  display:flex;align-items:flex-start;justify-content:center;padding:7vh 16px}
.opt-overlay[hidden]{display:none}
.opt-modal{width:min(640px,94vw);background:#0c0d10;border:1px solid var(--line2);border-radius:13px;
  box-shadow:0 20px 70px rgba(0,0,0,.6);padding:16px 18px;max-height:84vh;overflow-y:auto}
.opt-head{display:flex;align-items:center;gap:10px}
.opt-title{font-family:'Archivo',sans-serif;font-weight:800;font-size:14px;letter-spacing:1px;color:#f3d68a}
.opt-x{margin-left:auto;background:none;border:none;color:var(--mut);font-size:22px;line-height:1;cursor:pointer}
.opt-x:hover{color:var(--ink)}
.opt-note{font-size:10.5px;color:var(--mut);margin:7px 0 12px;line-height:1.45}
.opt-foot{font-size:9.5px;color:var(--dim);margin-top:12px;line-height:1.45;border-top:1px solid var(--line);padding-top:9px}
.opt-card{background:var(--panel2);border:1px solid var(--line2);border-left:3px solid var(--gold);
  border-radius:9px;padding:11px 13px;margin-bottom:9px}
.opt-card.pos{border-left-color:var(--rgreen)} .opt-card.neg{border-left-color:var(--rred)} .opt-card.mut{border-left-color:var(--line2)}
.opt-row1{display:flex;align-items:center;gap:8px}
.opt-nm{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:15px;color:var(--ink)}
.opt-pnl{margin-left:auto;font-family:'JetBrains Mono',monospace;font-weight:700;font-size:16px}
.opt-pnl.pos{color:var(--rgreen)} .opt-pnl.neg{color:var(--rred)} .opt-pnl.mut{color:var(--mut)}
.opt-pnlsub{font-size:11px;font-weight:600;opacity:.8;margin-left:3px}
.opt-contract{font-family:'JetBrains Mono',monospace;font-size:12.5px;color:#e6c878;margin-top:6px;display:flex;align-items:center;gap:8px}
.opt-dte{font-size:10px;color:var(--mut)}
.opt-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:9px}
.og{display:flex;flex-direction:column;gap:2px;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:7px 9px}
.og-l{font-size:9px;letter-spacing:.04em;text-transform:uppercase;color:var(--dim)}
.og-v{font-family:'JetBrains Mono',monospace;font-size:14px;color:var(--ink);font-weight:600}
.opt-warn{color:#caa64e;font-size:11px}
.opt-sub{font-size:11px;color:var(--mut);margin-top:5px}

/* ---- Books tab (two books + ledger) ---- */
.books-summary{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:6px 0 4px}
.book-card{background:var(--panel2);border:1px solid var(--line2);border-radius:9px;padding:11px 12px;border-top:3px solid var(--line2)}
.book-card.shares{border-top-color:#5a8f6a} .book-card.options{border-top-color:#d4a030} .book-card.total{border-top-color:#6c6c8c}
.book-h{font-size:11px;color:var(--mut);letter-spacing:.3px;margin-bottom:5px}
.book-eq{font-family:'JetBrains Mono',monospace;font-size:20px;font-weight:700;color:var(--ink)}
.book-pnl{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:600;margin-top:2px}
.book-pnl.pos{color:var(--rgreen)} .book-pnl.neg{color:var(--rred)}
.book-sub{color:var(--mut);font-weight:400;font-size:10px}
.book-sub2{font-size:9.5px;color:var(--dim);margin-top:5px;font-family:'JetBrains Mono',monospace}
.books-section-h{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--gold);margin:16px 0 8px;font-weight:700}
.book-why{font-size:10px;color:var(--dim);margin-top:6px;line-height:1.45}
.books-ledger{display:flex;flex-direction:column;gap:5px}
.led-row{display:flex;align-items:baseline;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:7px 9px;font-size:10.5px}
.led-kind{font-size:8.5px;text-transform:uppercase;letter-spacing:.4px;font-weight:700;color:#9a8a4a;border:1px solid var(--line2);border-radius:3px;padding:1px 5px;flex:0 0 auto}
.led-kind.transfer{color:#7ab0c0} .led-kind.close{color:var(--rgreen)} .led-kind.open{color:#d4a030} .led-kind.vehicle{color:var(--mut)}
.led-amt{font-family:'JetBrains Mono',monospace;font-weight:700;flex:0 0 auto} .led-amt.pos{color:var(--rgreen)} .led-amt.neg{color:var(--rred)}
.led-cash{font-family:'JetBrains Mono',monospace;font-size:11px;color:var(--mut);flex:0 0 auto} /* cash flow ≠ result — small + gray on purpose */
.led-why{color:var(--mut);line-height:1.4}
.demo-tag{font-family:'Archivo',sans-serif;font-weight:800;font-size:8px;letter-spacing:.1em;color:var(--weak);
  border:1px solid var(--weak);border-radius:4px;padding:0 4px}
.tape-grp{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin:4px 0 7px}

.deck-row{display:flex;flex-direction:column;gap:2px;padding:7px 0;border-bottom:1px solid var(--line);font-size:11px}
.deck-top{display:flex;align-items:center;gap:8px}
.deck-why{font-size:10px;color:var(--dim);font-family:'JetBrains Mono',monospace}
.deck-pick{font-size:9px;color:var(--mut);font-style:italic}
.deck-nm{font-family:'JetBrains Mono',monospace;font-weight:700;color:var(--ink)}
.deck-name{color:var(--mut);font-size:10px}
.deck-core{font-family:'JetBrains Mono',monospace;font-size:10px;color:var(--mut)}
.deck-dec{margin-left:auto;font-size:9.5px;padding:1px 7px;border-radius:8px;border:1px solid var(--line2)}
.deck-dec.take{color:#5cf0a0;border-color:rgba(43,213,118,.4)}
.deck-dec.pass{color:var(--weak)} .deck-dec.deck{color:var(--gold)}
/* 7/16: the chart story behind the fire (bounce / rejection / breakout…) */
.deck-tech{font-size:10px;color:var(--gold);font-family:'JetBrains Mono',monospace}
/* 7/16: contract previews — patched in async by /api/deck_extras */
.deck-ct{display:flex;flex-direction:column;gap:1px;margin-top:1px}
.ct-row{font-size:10px;color:var(--ink);font-family:'JetBrains Mono',monospace}
.ct-row.miss{color:var(--mut);font-style:italic}

/* ---- Deep Look (7/16): read-only glass on the hunter + broker ---- */
.dl-row{padding:5px 0;border-bottom:1px solid var(--line);font-size:10.5px;line-height:1.45}
.dl-row.dim{color:var(--dim)}
.dl-state{display:inline-block;min-width:74px;text-align:center;font-size:8.5px;letter-spacing:.06em;
  padding:1px 6px;border-radius:8px;border:1px solid var(--line2);margin-right:6px;
  font-family:'JetBrains Mono',monospace}
.dl-state.dl-conf{color:var(--gold);border-color:rgba(216,178,74,.5)}
.dl-state.dl-ret{color:#5cf0a0;border-color:rgba(43,213,118,.4)}
.dl-state.dl-broke{color:#e8c46a;border-color:rgba(232,196,106,.35)}
.dl-state.dl-fail{color:var(--weak)}
.dl-ts{float:right;font-size:9px;color:var(--mut);font-family:'JetBrains Mono',monospace}
.dl-out{font-size:9.5px;color:var(--mut);font-family:'JetBrains Mono',monospace;margin-top:1px}
.dl-raw{font-size:9px;color:var(--weak);font-family:'JetBrains Mono',monospace}

/* Operator-only UI styles were moved to operator.css on 7/18 — that file is gitignored,
   never deployed, and injected by app.js only when product_mode is false. Any new
   operator styling belongs there, not in this file. */

.sc-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:620px){.sc-cards{grid-template-columns:1fr}}
.sc-box{border:1px solid var(--line2);border-radius:9px;padding:10px 12px}
.sc-box.live{border-color:rgba(216,178,74,.45);background:rgba(216,178,74,.05)}
.sc-h{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin-bottom:7px}
.sc-rows{display:flex;flex-wrap:wrap;gap:8px 16px}
.sc-rows div{font-size:11px;color:var(--mut)}
.sc-rows b{color:var(--ink);font-family:'JetBrains Mono',monospace;margin-left:5px}
.sc-note{font-size:9px;color:var(--dim);margin-top:6px;font-style:italic}
.sc-box.dollar{grid-column:1 / -1;border-color:rgba(94,159,240,.4);background:rgba(94,159,240,.05);margin-top:2px}
.sc-box.dollar .sc-h{color:#7db3f0}
.sc-box.dollar .sc-rows b.pos{color:var(--pos)} .sc-box.dollar .sc-rows b.neg{color:var(--neg)}
.dollar-note{border-top:1px dashed var(--line2);padding-top:7px;margin-top:6px}
.dollar-note code{font-family:'JetBrains Mono',monospace;font-size:9.5px;color:var(--gold);background:var(--panel2);padding:1px 5px;border-radius:4px}
.runs-wrap{margin:12px 0 2px}
.runs-h{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin-bottom:6px}
.runs-h span{color:var(--dim);text-transform:none;letter-spacing:0;font-size:9.5px;margin-left:6px}
.run-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 12px;padding:7px 4px;border-bottom:1px solid var(--line);font-size:11px;color:var(--mut)}
.run-row:last-child{border-bottom:0}
.run-lab{flex:1;min-width:150px;color:var(--ink);font-family:'JetBrains Mono',monospace;font-size:10.5px}
.run-stat{font-variant-numeric:tabular-nums}
.run-roi,.run-pnl{font-family:'JetBrains Mono',monospace;font-variant-numeric:tabular-nums;font-weight:600}
.run-roi.pos,.run-pnl.pos{color:var(--pos)} .run-roi.neg,.run-pnl.neg{color:var(--neg)}
.cat-item{cursor:pointer;border-radius:5px}
.cat-item:hover{background:var(--panel2)}
.cat-item .cat-more{color:var(--dim);font-size:9px;white-space:nowrap}
.cat-item:hover .cat-more{color:var(--gold)}
.cat-card{max-width:560px}
.cat-sec-h{font-size:9.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);margin:12px 0 5px}
.cat-p{font-size:12px;color:var(--mut);line-height:1.55;margin:0}
.cat-cond{border:1px solid var(--line2);border-radius:8px;padding:8px 10px;margin:6px 0}
.cc-if{font-size:11px;color:var(--ink);font-weight:600}
.cc-tend{font-size:11px;font-weight:700;margin-left:8px}
.cc-tend.pos{color:var(--pos)} .cc-tend.neg{color:var(--neg)} .cc-tend.mix{color:var(--gold)}
.cc-why{font-size:11px;color:var(--mut);line-height:1.5;margin-top:4px}
.cat-meter{display:flex;align-items:center;gap:4px;margin:6px 0 2px}
.cm-bar{width:26px;height:9px;border-radius:3px;background:var(--panel2);border:1px solid var(--line2)}
.cm-bar.on.low{background:#5a8a62;border-color:#5a8a62}
.cm-bar.on.mid{background:var(--gold);border-color:var(--gold)}
.cm-bar.on.hot{background:#ff7d5a;border-color:#ff7d5a}
.cm-lab{font-size:11px;color:var(--ink);margin-left:8px}
.cm-src{font-size:9.5px;color:var(--dim);margin-top:3px}
.cat-srcs{font-size:9.5px;color:var(--dim);margin-top:10px;border-top:1px dashed var(--line2);padding-top:7px}
.cat-line{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;min-width:0}
.cat-type{color:var(--gold);font-size:9px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}
.cat-tk{color:var(--gold2);font-weight:800;font-size:12.5px;letter-spacing:.3px}
/* Catalysts subheadings: the group titles (Earnings / CPI / Fed…) were 9.5px dim — invisible. Gold, ruled, readable. */
#catalysts .sect-title{color:var(--gold);font-size:10.5px;font-weight:700;letter-spacing:.13em;
  margin:11px 0 5px;padding-bottom:3px;border-bottom:1px solid rgba(216,178,74,.22)}
#catalysts .cat-grp:first-child .sect-title{margin-top:2px}
/* 7/18: the group titles fold. Caret left, count right, whole bar is the hit target. */
#catalysts .cat-grp-h{display:flex;align-items:center;gap:7px;cursor:pointer;user-select:none}
#catalysts .cat-grp-h:hover{border-bottom-color:rgba(216,178,74,.55)}
#catalysts .cat-grp-h:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:3px}
.cat-caret{font-size:9px;color:var(--gold);width:9px;flex:0 0 auto}
.cat-grp-t{flex:1 1 auto;min-width:0}
/* count sits right so a folded group still says how much is behind it */
.cat-grp-n{flex:0 0 auto;font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:700;
  color:var(--dim);background:var(--panel2);border:1px solid var(--line2);
  border-radius:9px;padding:1px 6px;letter-spacing:.04em}
#catalysts .cat-grp-h:hover .cat-grp-n{color:var(--gold);border-color:rgba(216,178,74,.4)}
.cat-rest{color:var(--mut);font-size:11px}
/* ===== Universal ticker chips — if a ticker is on screen, it opens (JD's rule) =====
   Quiet at rest so prose stays prose; unmistakably alive on hover/focus. Inherits its
   row's color (pos/neg chips keep their green/red) and only adds the affordance. */
.tk-link{cursor:pointer;border-bottom:1px dotted var(--line2);padding-bottom:0px}
.tk-link:hover,.tk-link:focus{color:var(--gold);border-bottom-color:var(--gold);outline:none}
.tk-link.pos:hover,.tk-link.pos:focus{color:var(--pos);border-bottom-color:var(--pos)}
.tk-link.neg:hover,.tk-link.neg:focus{color:var(--neg);border-bottom-color:var(--neg)}

/* ===== Earnings on the ticker card — next on top, last print under it ===== */
.ern-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:4px 0;font-size:11px}
.ern-row + .ern-row{border-top:1px solid var(--line2)}
.ern-k{color:var(--dim);font-size:9px;letter-spacing:.08em;text-transform:uppercase;min-width:30px}
.ern-d{color:var(--txt);font-weight:600;font-variant-numeric:tabular-nums}
.ern-when{color:var(--gold);font-size:9.5px}          /* the countdown — the actionable half */
.ern-v{color:var(--mut);font-variant-numeric:tabular-nums}
.ern-surp{font-size:9.5px;font-variant-numeric:tabular-nums;border-radius:2px;padding:1px 4px}
.ern-surp.pos{color:var(--pos);background:rgba(78,175,120,.10)}
.ern-surp.neg{color:var(--neg);background:rgba(198,90,90,.10)}
.cat-date{color:var(--dim);font-size:10px;font-variant-numeric:tabular-nums}
/* A catalyst that already FIRED, and what it printed. Deliberately quieter than .cat-est
   (gold = the upcoming consensus you might trade around): this one is history, shown so a
   print stops vanishing the day after it lands. */
.cat-rep{color:var(--mut);font-size:9.5px;font-variant-numeric:tabular-nums;
  background:rgba(255,255,255,.04);border-radius:2px;padding:1px 4px;white-space:nowrap}
/* inline consensus estimate on an earnings catalyst line */
.cat-est{color:var(--gold);font-size:9.5px;font-variant-numeric:tabular-nums;background:rgba(216,178,74,.08);
  border:1px solid var(--line2);border-radius:8px;padding:1px 6px;white-space:nowrap}
/* estimate-vs-actual block inside the catalyst detail overlay */
.en-block{border:1px solid var(--line2);border-radius:8px;padding:7px 10px;margin:0 0 8px}
.en-h{font-size:9px;letter-spacing:.09em;text-transform:uppercase;color:var(--mut);margin-bottom:5px}
.en-row{display:flex;justify-content:space-between;align-items:baseline;gap:10px;font-size:12px;padding:2px 0}
.en-k{color:var(--mut)}
.en-v{color:var(--ink);font-weight:700;font-variant-numeric:tabular-nums;text-align:right}
.en-vs{color:var(--dim);font-weight:400;font-size:10.5px}
.en-surp{font-size:10px;font-weight:800;letter-spacing:.03em;padding:1px 6px;border-radius:8px;margin-left:4px;white-space:nowrap}
.en-surp.pos{color:var(--pos);background:rgba(52,178,123,.12)}
.en-surp.neg{color:var(--neg);background:rgba(208,90,74,.12)}
/* OPTIONS FLOW card (operator-only, gold like the Books button) */
.sc-box.oflow{grid-column:1 / -1;border-color:rgba(212,160,48,.45);background:rgba(212,160,48,.05);margin-top:2px}
.sc-box.oflow .sc-h{color:#d4a030}
.sc-box.oflow .sc-rows b.pos{color:var(--pos)} .sc-box.oflow .sc-rows b.neg{color:var(--neg)}
.of-pos{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px;padding:7px 8px;margin-top:8px;border:1px solid var(--line2);border-radius:7px;font-size:11px;color:var(--mut)}
.of-pos.pos{border-left:3px solid var(--pos)} .of-pos.neg{border-left:3px solid var(--neg)}
.of-nm{color:var(--ink);font-weight:700;font-family:'JetBrains Mono',monospace;font-size:11.5px}
.of-meta{font-variant-numeric:tabular-nums}
.of-pnl{font-family:'JetBrains Mono',monospace;font-weight:700;font-variant-numeric:tabular-nums}
.of-pnl.pos{color:var(--pos)} .of-pnl.neg{color:var(--neg)}
.of-empty{font-size:10.5px;color:var(--dim);font-style:italic;margin-top:8px}
.of-sec{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin:10px 0 3px}
.of-closed{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:10.5px;color:var(--mut);padding:3px 4px;font-variant-numeric:tabular-nums}
.of-closed .pos{color:var(--pos)} .of-closed .neg{color:var(--neg)}
.of-skip{font-size:10px;color:var(--dim);padding:2px 4px}
.of-skip b{color:var(--mut)}
.of-rules{font-size:9.5px;color:var(--dim);border-top:1px dashed var(--line2);padding-top:7px;margin-top:9px;line-height:1.6}
.dollar-actions{display:flex;align-items:center;gap:10px;margin-top:9px;flex-wrap:wrap}
.run-replay{background:rgba(94,159,240,.14);color:#7db3f0;border:1px solid rgba(94,159,240,.4);border-radius:6px;padding:6px 12px;font-size:11px;font-weight:600;cursor:pointer;font-family:inherit}
.run-replay:hover{background:rgba(94,159,240,.22)}
.run-replay:disabled{opacity:.6;cursor:default}
.dollar-hint{font-size:10px;color:var(--dim)}
.cat-wrap{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}
@media(max-width:620px){.cat-wrap{grid-template-columns:1fr}}
.cat-h{font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin-bottom:5px}
.cat-row{display:flex;align-items:center;gap:8px;font-size:10.5px;color:var(--ink);padding:2px 0}
.cat-row b{color:var(--gold2);font-family:'JetBrains Mono',monospace}
.cat-row .mut{margin-left:auto}

/* ===== Bullish / Bearish side pages ===== */
#bull-btn,#bear-btn{font-family:'Archivo',sans-serif;font-weight:700;font-size:10.5px;letter-spacing:.06em;
  background:var(--panel2);border:1px solid var(--line2);border-radius:6px;padding:5px 10px;cursor:pointer}
#bull-btn{color:#5cf0a0} #bull-btn:hover{border-color:var(--rgreen)}
#bear-btn{color:#ff7d8c} #bear-btn:hover{border-color:var(--rred)}
#sidemain{max-width:920px;margin:0 auto;padding:14px;display:flex;flex-direction:column;gap:12px}
#sidemain .panel .body{padding:10px 12px}
body.bull #side-brand{color:#5cf0a0} body.bear #side-brand{color:#ff7d8c}
#flip-link{color:var(--gold)}
.flow-row{display:flex;align-items:center;gap:10px;padding:6px 2px;border-bottom:1px solid var(--line);cursor:pointer}
.flow-row:hover{background:rgba(255,255,255,.02)}
.flow-tk{font-family:'JetBrains Mono',monospace;font-weight:700;color:var(--ink);width:50px}
.flow-nm{font-size:11px;color:var(--mut);flex:0 0 116px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.flow-meter{flex:1;height:8px;background:var(--bg2);border-radius:4px;overflow:hidden}
.flow-meter span{display:block;height:100%}
.flow-c{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:13px;width:48px;text-align:right}
body.bull .flow-c{color:#5cf0a0} body.bear .flow-c{color:#ff7d8c}
#side-setups.setups-row{display:flex;flex-wrap:wrap;gap:10px}

/* ticker S/R levels block */
.lv-row{display:flex;align-items:center;gap:8px;font-size:12px;margin-top:5px;font-family:'JetBrains Mono',monospace}
.lv-lbl{font-size:9.5px;letter-spacing:.05em;width:96px;font-family:'Inter',sans-serif;text-transform:uppercase}
.lv-lbl.up{color:#ff9d7d} .lv-lbl.dn{color:#5cf0a0}
.lv-conf{color:var(--gold);font-size:11px}
.lv-at{background:var(--gold);color:#11161f;font-size:8px;font-weight:800;padding:0 5px;border-radius:4px;letter-spacing:.06em;font-family:'Archivo',sans-serif}
.lv-ladder{font-size:10.5px;color:var(--ink);margin-top:5px;font-family:'JetBrains Mono',monospace}
.lv-ladder .mut{margin-right:6px;font-family:'Inter',sans-serif}
/* ticker confirmation block (brick 2) */
.cf-badges{display:flex;gap:8px;margin-top:5px}
.cf-badge{font-family:'Archivo',sans-serif;font-weight:800;font-size:10px;letter-spacing:.06em;padding:2px 8px;border-radius:6px;border:1px solid var(--line2);color:var(--mut)}
.cf-badge.call.on{color:#5cf0a0;border-color:rgba(43,213,118,.5);background:rgba(43,213,118,.1)}
.cf-badge.put.on{color:#ff7d8c;border-color:rgba(255,90,110,.5);background:rgba(255,90,110,.1)}
.cf-chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.cf-raw{font-size:10px;color:var(--mut);margin-top:6px;font-family:'JetBrains Mono',monospace}
/* entry checklist verdict (assembled setup) */
.tkr-setup{margin-bottom:10px}
.setup-verdict{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:8px;border:1px solid var(--line2);margin-top:5px;background:var(--panel2)}
.setup-verdict.ready.call{border-color:rgba(43,213,118,.6);background:rgba(43,213,118,.08)}
.setup-verdict.ready.put{border-color:rgba(255,90,110,.6);background:rgba(255,90,110,.08)}
.sv-side{font-family:'Archivo',sans-serif;font-weight:800;font-size:11px;letter-spacing:.06em;color:var(--mut)}
.setup-verdict.ready.call .sv-side{color:#5cf0a0} .setup-verdict.ready.put .sv-side{color:#ff7d8c}
.sv-score{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:13px;color:var(--ink)}
.sv-text{font-size:11px;color:var(--ink)}
.sv-checks{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.sv-check{font-size:10px;color:var(--dim)}
.sv-check.ok{color:#5cf0a0}
/* setup board cards (bull/bear co-pilot) */
.board-grp{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--mut);margin:8px 0 6px}
.board-grp.call{color:#5cf0a0} .board-grp.put{color:#ff7d8c}
.board-card{background:var(--panel2);border:1px solid var(--line2);border-left-width:3px;border-radius:8px;padding:8px 11px;margin-bottom:7px;cursor:pointer}
/* 2026-08-07: accent by DIRECTION, not by how many layers hit. The old .ready/.watch
   split highlighted three-layer rows and dimmed the rest to .85 opacity — the study
   measured those highlighted rows as the WEAKEST long-side bucket, so the styling was
   pointing customers at the wrong names. Every row on the board is equally on it. */
.board-card.call{border-left-color:var(--rgreen)}
.board-card.put{border-left-color:var(--rred)}
.board-card:hover{border-color:var(--gold)}
.bc-top{display:flex;align-items:center;gap:8px}
.bc-tk{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:14px;color:var(--ink)}
.bc-sec{font-size:10px;color:var(--mut)}
.bc-verdict{margin-left:auto;font-size:10px;color:var(--ink)}
.board-card.call .bc-verdict{color:#5cf0a0} .board-card.put .bc-verdict{color:#ff7d8c}
.bc-checks{display:flex;flex-wrap:wrap;gap:8px;margin-top:5px}
/* the honesty rail under the board — what was measured, and what the tags are not */
.board-note{font-size:10px;line-height:1.5;color:var(--mut);border-top:1px solid var(--line2);
  margin-top:10px;padding-top:8px}

/* ---- Trade Plan (per-setup stock blueprint, in the ticker view) ---- */
.plan-block{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line2)}
.pl-grid{display:flex;flex-direction:column;gap:4px;margin:7px 0 8px}
.pl-tier{display:grid;grid-template-columns:30px 64px 56px 42px auto;gap:8px;align-items:baseline;
  font-size:11.5px;padding:5px 8px;background:var(--panel);border:1px solid var(--line);border-radius:7px}
.pl-name{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:11px}
.pl-name.call{color:var(--rgreen)} .pl-name.put{color:var(--rred)}
.pl-px{font-family:'JetBrains Mono',monospace;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.pl-mv{color:var(--mut);font-variant-numeric:tabular-nums}
.pl-r{font-weight:700;color:var(--gold);font-variant-numeric:tabular-nums}
.pl-act{font-size:10px;letter-spacing:.02em;color:var(--ink)}
.pl-stopmv{grid-column:2 / -1;font-size:9.5px;color:var(--dim)}
.pl-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:2px}
.pl-stoprow{font-size:10.5px;color:var(--rred);font-variant-numeric:tabular-nums}
.pl-note{font-size:9.5px;color:var(--mut);margin-top:5px;line-height:1.35}
.pl-disc{font-size:9.5px;color:var(--dim);margin-top:8px;padding-top:6px;border-top:1px solid var(--line);line-height:1.4;font-style:italic}
.pl-exp{font-size:10.5px;color:var(--ink);margin:2px 0 6px;cursor:help}
.pl-exp b{color:var(--gold)}
.pl-tag{font-size:8.5px;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--line2);
  border-radius:8px;padding:0 5px;margin-left:4px;color:var(--mut)}
.pl-tag.fast{color:var(--gold);border-color:var(--gold)}
.pl-tag.close{color:var(--rgreen);border-color:#27502f}

/* ---- Setups · the if-then brain (ticker view) ---- */
.ds-block{background:linear-gradient(180deg,var(--panel2),var(--panel));border:1px solid var(--line2)}
.ds-group{font-size:9px;letter-spacing:.08em;color:var(--mut);margin:7px 0 4px;text-transform:uppercase}
.ds-later{font-size:11px;color:var(--mut);padding:5px 2px}
.ds-card{background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--line2);
  border-radius:7px;padding:6px 9px;margin-bottom:5px}
.ds-card.call{border-left-color:var(--rgreen)} .ds-card.put{border-left-color:var(--rred)}
.ds-h{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.ds-name{font-weight:700;font-size:12px;color:var(--ink)}
.ds-side{font-family:'JetBrains Mono',monospace;font-size:9px;font-weight:700;border-radius:5px;padding:0 5px}
.ds-side.call{color:var(--rgreen);border:1px solid #27502f} .ds-side.put{color:var(--rred);border:1px solid #5a2730}
.ds-kind{font-size:9.5px;color:var(--mut)}
.ds-conf{margin-left:auto;font-size:9px;color:var(--gold);letter-spacing:1px}
.ds-against{font-size:8.5px;color:var(--rred);border:1px solid #5a2730;border-radius:8px;padding:0 5px;cursor:help}
.ds-checks{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.ds-c{font-size:9.5px}
.ds-c.ok{color:var(--rgreen)} .ds-c.no{color:var(--dim)}

/* Plain-English "how to read this" line under a panel header (customer clarity) */
.panel-help{font-size:10px;line-height:1.5;color:var(--mut);font-style:italic;padding:7px 12px 3px;border-top:1px solid var(--line2)}

/* ===== PRODUCT MODE — hide the operator-only agent + the scattered grey footnotes =====
   Operator-only UI is also hidden by DEFAULT while the app boots (body.booting, set in
   the HTML), so it never flashes to a customer before JS confirms the mode. It is revealed
   only once we know we're in operator mode (booting removed and no .product class). */
body.booting #track-btn,
body.booting #res-btn,
body.booting .drill-foot,
body.booting .rot-note,
body.booting .setups-foot,
body.booting .caveat,
body.booting #book-panel,
body.product #track-btn,
body.product #res-btn,
/* #idsector (Intraday Sector race) + #hour-btn (Hour Read) became CUSTOMER features in
   v3.5, gated by DEDGE_RACE_ON via the JS reveal. They were left in this operator-hide
   list by mistake, so the race stayed dark on the hosted product even with the flag ON.
   Removed 2026-07-27 — the JS reveal (only fires when the flag is on) is the real gate. */
body.product #bx-alert,
body.product #bxi-overlay,
body.product .news-cmp,
/* 2026-09-21: .drill-foot, .rot-note and .setups-foot came OFF this list. They carry the
   member disclaimers ("correlation, not attribution", "no causation implied", "the call is
   always yours"), and hiding operator notes had hidden those from paying members too. The
   two footers that held operator talk were rewritten the same day (ideal.py, suggestions.py). */
body.product .caveat { display:none !important; }

/* ===== Resources board (OPERATOR-ONLY) — a "need more help" wall of curated people/channels.
   #res-btn is in the hide lists above, so customers never see it until the gate is lifted. ===== */
#res-btn{font-family:'Archivo',sans-serif;font-weight:700;font-size:10.5px;letter-spacing:.05em;color:var(--gold);
  background:var(--panel2);border:1px solid var(--line2);border-radius:6px;padding:0 10px;height:30px;cursor:pointer;white-space:nowrap}
#res-btn:hover{border-color:var(--gold)}
.res-card{width:min(1040px,96vw)}
.res-body{padding:16px 18px 22px;max-height:74vh;overflow:auto}
.res-section{margin-bottom:22px}
.res-sec-h{font-family:'Archivo',sans-serif;font-weight:700;font-size:12px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--gold);margin:2px 0 14px;padding-bottom:6px;border-bottom:1px solid var(--line2)}
.res-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(238px,1fr));gap:14px}
.res-item{position:relative;background:var(--panel2);border:1px solid var(--line2);border-radius:9px;
  padding:15px 13px 12px;box-shadow:0 2px 10px rgba(0,0,0,.28)}
.res-pin{position:absolute;top:-10px;left:50%;transform:translateX(-50%);font-size:15px;filter:drop-shadow(0 2px 2px rgba(0,0,0,.5))}
.res-name{font-family:'Archivo',sans-serif;font-weight:800;font-size:13.5px;color:var(--ink);margin-top:1px}
.res-name-link{color:var(--gold2);text-decoration:none}
.res-name-link:hover{text-decoration:underline}
.res-what{font-size:11.5px;color:var(--mut);margin:6px 0 9px;line-height:1.45}
.res-contact{font-family:'JetBrains Mono',monospace;font-size:10.5px;color:#8593A3;word-break:break-word}
.res-ph{border-style:dashed;opacity:.7}
.res-ph .res-name{color:var(--mut);font-style:italic;font-weight:700}

/* ===== Guide page (Directions / How to use / FAQ / Disclaimer) ===== */
.guide-page{overflow-y:auto}
.g-back{color:var(--gold);text-decoration:none;font-size:12px;font-weight:600}
.g-back:hover{text-decoration:underline}
.guide-wrap{max-width:780px;margin:0 auto;padding:22px 20px 60px}
.g-beta{display:inline-block;font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);
  border:1px solid var(--gold);border-radius:20px;padding:3px 12px;margin-bottom:14px}
.g-h1{font-family:'Archivo',sans-serif;font-weight:900;font-size:30px;letter-spacing:-.01em;margin:0 0 6px}
.g-lede{color:var(--mut);font-size:14px;margin:0 0 24px;line-height:1.5}
.g-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:20px 22px;margin-bottom:16px}
.g-card h2{font-family:'Archivo',sans-serif;font-weight:800;font-size:18px;margin:0 0 12px;color:var(--ink)}
.g-card h3{font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:var(--gold);margin:18px 0 8px}
.g-card p{font-size:13.5px;line-height:1.65;color:var(--ink);margin:0 0 10px}
.g-card b{color:#fff}
.g-line{font-size:14px}
.g-pos{color:var(--rgreen);font-weight:700} .g-neg{color:var(--rred);font-weight:700} .g-neu{color:var(--mut);font-weight:700}
.g-list{margin:0;padding-left:20px} .g-list li{font-size:13.5px;line-height:1.6;color:var(--ink);margin-bottom:9px}
.g-aside{background:var(--panel2);border-left:3px solid var(--gold);border-radius:0 8px 8px 0;
  padding:12px 14px;font-size:12.5px !important;color:var(--mut) !important;line-height:1.6 !important}
.g-aside b{color:var(--ink)}
.g-steps{margin:0;padding-left:22px;counter-reset:none}
.g-steps li{font-size:13.5px;line-height:1.6;color:var(--ink);margin-bottom:12px;padding-left:4px}
.g-qa{margin-bottom:16px} .g-qa:last-child{margin-bottom:0}
.g-q{font-weight:700;font-size:14px;color:#fff;margin-bottom:5px}
.g-qa p{font-size:13px;color:var(--mut);line-height:1.6;margin:0}
.g-disclaimer{background:#0c1119;border-color:var(--line2)}
.g-disclaimer p{font-size:12px;color:var(--mut);line-height:1.7}
.g-foot{margin-top:18px;text-align:center}

/* ===== Chalk Board (black slate, silver frame, gold strong-font notes) ===== */
.chalk-card{
  background:#0f1f18;
  border:2px solid transparent; border-radius:12px;
  background-image:linear-gradient(155deg,#12241c,#0d1a15), linear-gradient(145deg,#eaeaea,#9c9c9c 40%,#d6d6d6 60%,#7e7e7e);
  background-origin:border-box; background-clip:padding-box,border-box;
  box-shadow:0 0 0 1px rgba(200,200,200,.15) inset, 0 0 40px rgba(180,220,200,.03) inset, 0 22px 64px rgba(0,0,0,.65);
}
.chalk-title{font-family:'Archivo',sans-serif;font-weight:900;letter-spacing:.06em;color:#f5cc5a;
  filter:drop-shadow(0 0 10px rgba(210,160,40,.35))}
.chalk-input{display:flex;gap:8px;margin:12px 0 10px}
#chalk-new{flex:1;background:#0b1712;border:1px solid #2b4239;border-radius:6px;padding:11px 13px;
  font-family:'Archivo',sans-serif;font-weight:600;font-size:14px;color:#ffe066;outline:none;letter-spacing:.3px}
#chalk-new::placeholder{color:#555;font-weight:500}
#chalk-new:focus{border-color:rgba(192,192,192,.6)}
#chalk-add{background:linear-gradient(145deg,#a07830,#d4a030,#c89038);color:#0a0a0a;border:none;border-radius:6px;
  padding:0 18px;font-family:'Archivo',sans-serif;font-weight:800;letter-spacing:.08em;cursor:pointer;text-transform:uppercase;font-size:12px}
#chalk-add:hover{filter:brightness(1.08)}
.chalk-body{max-height:46vh;overflow-y:auto;margin-top:4px}
.chalk-note{display:flex;align-items:baseline;gap:12px;padding:11px 6px;border-bottom:1px solid rgba(200,220,210,.09)}
.chalk-txt{flex:1;font-family:'Archivo',sans-serif;font-weight:700;font-size:15px;letter-spacing:.4px;color:#f5cc5a;
  word-break:break-word;line-height:1.4}
.chalk-meta{font-size:10px;color:#5e5e5e;font-family:'JetBrains Mono',monospace;white-space:nowrap}
.chalk-del{background:none;border:none;color:#5e5e5e;cursor:pointer;font-size:13px;padding:2px 4px}
.chalk-del:hover{color:var(--rred)}
.chalk-empty{color:#8a9a92;font-size:13px;padding:18px 6px;text-align:center}
.chalk-colors{display:flex;gap:10px;margin:2px 0 12px;padding-left:2px;align-items:center}
.chalk-sw{width:20px;height:20px;border-radius:50%;border:2px solid rgba(255,255,255,.22);background:var(--sw);cursor:pointer;padding:0;transition:transform .1s}
.chalk-sw:hover{transform:scale(1.15)}
.chalk-sw.active{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,.3),0 0 9px var(--sw)}
.welcome-line{padding:7px 16px;font-size:12px;color:var(--mut);background:linear-gradient(90deg,rgba(216,178,74,.08),transparent);border-bottom:1px solid var(--line)}
.welcome-line b{color:var(--gold);font-weight:700}

/* ===== Futures · the Little Birdie glimpse ===== */
.bird-mini{vertical-align:middle;margin-right:4px}
#fut-btn{display:inline-flex;align-items:center}
.fut-title{display:inline-flex;align-items:center;gap:9px}
.fut-title .bird{filter:drop-shadow(0 0 8px rgba(210,160,40,.45))}
.fut-note{font-family:'Rajdhani','Inter',sans-serif;font-size:12.5px;letter-spacing:.02em;color:#cdb46a;
  background:linear-gradient(145deg,rgba(210,160,40,.08),rgba(210,160,40,.02));
  border-left:3px solid var(--gold);border-radius:0 7px 7px 0;padding:9px 12px;margin:10px 0 4px;line-height:1.5}
.fut-row{display:grid;grid-template-columns:54px 1fr 72px 88px 70px auto;gap:10px;align-items:baseline;
  padding:8px 6px;border-bottom:1px solid var(--line);font-size:12.5px}
.fut-spark{align-self:center;line-height:0;opacity:.92}
.fut-tk{font-family:'JetBrains Mono',monospace;font-weight:700;color:var(--ink)}
.fut-nm{color:var(--mut);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fut-px{font-family:'JetBrains Mono',monospace;color:var(--ink);text-align:right;font-variant-numeric:tabular-nums}
.fut-chg{font-family:'JetBrains Mono',monospace;text-align:right;font-variant-numeric:tabular-nums}
.fut-chg.pos,.fut-glimpse.pos{color:var(--rgreen)} .fut-chg.neg,.fut-glimpse.neg{color:var(--rred)}
.fut-glimpse{font-size:11px;font-variant-numeric:tabular-nums}
.fut-row.fut-head{border-bottom:1px solid var(--line2);padding:4px 6px 3px}
.fut-row.fut-head span{font-family:'Rajdhani','Inter',sans-serif;font-size:10px;font-weight:700;
  letter-spacing:.12em;color:var(--mut);line-height:1.2}

/* ---- Live tape (display-only · 15-min delayed) ---- */
.livetape{display:flex;align-items:center;gap:14px;padding:6px 16px;background:#090d15;
  border-bottom:1px solid var(--line);font-family:'JetBrains Mono',monospace;font-size:12px;
  white-space:nowrap;overflow:hidden}
.lt-status{flex:none;color:var(--mut);font-size:10.5px;letter-spacing:.3px}
.lt-live{color:var(--rgreen);font-weight:700}
.lt-closed{color:var(--mut)}
.lt-track{display:flex;gap:20px;overflow-x:auto;scrollbar-width:none}
.lt-track::-webkit-scrollbar{display:none}
.lt-item{flex:none;color:#C8D2DE;font-variant-numeric:tabular-nums}
.lt-item b{color:var(--ink);font-weight:700;margin-right:2px}
.lt-up{color:var(--rgreen)}
.lt-dn{color:var(--rred)}

/* ---- Live price chip on the ticker card ---- */
.tkr-px{margin-left:12px;font-family:'JetBrains Mono',monospace;font-size:14px;font-variant-numeric:tabular-nums;white-space:nowrap}
.tkr-px-val{color:var(--ink);font-weight:700;margin-right:5px}
.tkr-px .pos{margin-right:5px}.tkr-px .neg{margin-right:5px}
.tkr-px-tag{color:var(--mut);font-size:9.5px;letter-spacing:.3px;text-transform:uppercase}
/* Ticker-card header fix (2026-07-12): with 4 research pills up here, a narrow card used to
   crush the name into a 0-width, unreadable vertical sliver behind the pills. Let the header
   WRAP so the pill row drops to its own line when it can't sit beside a >=180px name, and
   truncate the name with an ellipsis instead of ever stacking it letter-by-letter. */
#tkr-overlay .drill-head{flex-wrap:wrap;gap:8px 10px}
#tkr-overlay .drill-titles{flex:1 1 auto;min-width:180px}
#tkr-overlay .drill-tk{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Index Deep Read (SPY/QQQ) — the macro layer above the Multi-TF, subtle gold tint to set it apart. */
.idx-block{background:linear-gradient(180deg,rgba(203,164,90,.07),rgba(203,164,90,.02));border:1px solid rgba(203,164,90,.30)}
.idx-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:3px 10px;margin:5px 0;font-size:12px}
.idx-k{font-family:'Archivo',sans-serif;font-weight:700;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:#8593A3}
.idx-v{color:var(--ink);font-variant-numeric:tabular-nums}
.idx-cats{margin:9px 0 3px;font-size:11.5px;line-height:1.9}
.idx-cat{display:inline-block;background:var(--panel2);border:1px solid var(--line2);border-radius:5px;padding:2px 7px;margin:0 4px 3px 0;font-size:10.5px}
.idx-note{font-size:10px;margin-top:7px;font-style:italic}

/* ---- News Push (DEDGE_NEWS_ON) — ranked headlines + deterministic rollup on the ticker card ---- */
.news-btn{cursor:pointer;font:inherit}
.news-block{border-color:rgba(58,130,196,.45);background:linear-gradient(180deg,rgba(58,130,196,.06),rgba(58,130,196,.015))}
.news-it{padding:7px 0 5px;border-bottom:1px dashed var(--line)}
.news-it:last-of-type{border-bottom:0}
.news-rank{display:inline-block;min-width:20px;font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--improv);font-weight:700}
.news-hl{color:var(--ink);font-size:12.5px;text-decoration:none;line-height:1.45}
.news-hl:hover{color:var(--gold2);text-decoration:underline}
.news-chips{margin:4px 0 0 20px}
.news-imp{color:var(--mut)} .news-imp.hi{color:var(--gold);border-color:rgba(203,164,90,.45)}
.news-sum{margin-top:10px;padding-top:8px;border-top:1px solid var(--line2)}
.news-head{cursor:pointer;user-select:none}
.news-head:hover{color:var(--gold2)}
.nb-caret{display:inline-block;width:12px;color:var(--improv);font-size:11px}
.news-cmp{display:block;margin-top:9px;background:var(--panel2);color:var(--improv);border:1px solid rgba(58,130,196,.4);
  border-radius:6px;padding:4px 10px;font-size:10.5px;cursor:pointer;font-family:inherit}
.news-cmp:hover{border-color:var(--improv)}

/* ---- Update toast — one-time "new release" nudge on sign-in; click = open the Updates board ---- */
#upd-toast{position:fixed;top:64px;right:14px;z-index:340;max-width:320px;text-align:left;
  background:linear-gradient(180deg,#1a1f2b,var(--panel2));color:var(--ink);
  border:1px solid rgba(203,164,90,.55);border-left:3px solid var(--gold);border-radius:9px;
  padding:10px 13px;font:500 12px/1.5 'Inter',sans-serif;cursor:pointer;
  box-shadow:0 8px 26px rgba(0,0,0,.5);animation:updtoast .4s ease}
#upd-toast b{color:var(--gold2)}
#upd-toast:hover{border-color:var(--gold)}
@keyframes updtoast{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
body.booting #upd-toast{display:none}
@media(max-width:640px){#upd-toast{left:14px;right:14px;max-width:none;top:auto;bottom:18px}}

/* ---- Index Board — the 3 headline benchmarks (Dow · S&P · Nasdaq), Edge+; each card opens the Index Deep Read ---- */
.idxboard{background:linear-gradient(180deg,rgba(203,164,90,.06),var(--panel))}
.idxb-status{margin-left:auto;font-size:10px;color:var(--mut);letter-spacing:.03em;white-space:nowrap}
.idxb-status .lt-live{color:var(--pos);font-weight:700} .idxb-status .lt-closed{color:var(--dim);font-weight:700}
/* four cards since 2026-08-19: the three real index levels plus QQQ on its own.
   auto-fit rather than a fixed 4 so a narrow desktop wraps to two rows of two
   instead of squeezing four cards under a five-figure index level. */
.idxb-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:10px}
.idxb-card{background:var(--panel2);border:1px solid var(--line2);border-left:3px solid var(--gold);
  border-radius:9px;padding:11px 13px;cursor:pointer;transition:border-color .12s,transform .12s;
  display:flex;flex-direction:column;gap:2px}
.idxb-card:hover{border-color:var(--gold);transform:translateY(-1px)}
.idxb-card:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.idxb-top{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.idxb-name{font-family:'Archivo',sans-serif;font-weight:800;font-size:14px;color:var(--ink);letter-spacing:.02em}
.idxb-sym{font-family:'JetBrains Mono',monospace;font-size:9.5px;color:var(--mut);white-space:nowrap}
.idxb-pxrow{display:flex;align-items:baseline;gap:9px;margin-top:3px}
.idxb-px{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:18px;color:var(--ink);font-variant-numeric:tabular-nums}
.idxb-chg{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:13px;font-variant-numeric:tabular-nums}
.idxb-cta{font-size:9.5px;color:var(--gold);letter-spacing:.04em;margin-top:4px;opacity:.85}
.idxb-ctas{display:flex;align-items:center;justify-content:space-between;gap:8px}
.idxb-why{background:transparent;border:1px solid var(--line2);color:var(--gold);cursor:pointer;
  font-size:9px;font-weight:700;letter-spacing:.1em;padding:2px 7px;border-radius:3px;margin-top:4px;
  flex:0 0 auto}
.idxb-why:hover,.idxb-why.on{border-color:var(--gold);background:rgba(216,178,74,.12)}
.idxb-read{margin-top:8px;border-top:1px solid var(--line);padding-top:7px}
.idxb-read-wait{font-size:10px;color:var(--dim)}
.idxb-read-body p{margin:0 0 5px;font-size:11px;line-height:1.5;color:var(--ink)}
.idxb-read-body p:first-child{color:var(--gold);font-weight:600}
.idxb-read-foot{font-size:8.5px;color:var(--dim);font-style:italic;margin-top:4px}
@media(max-width:640px){.idxb-row{grid-template-columns:1fr}}

/* ---- Intraday Sector — the 15m rotation race (LOCAL / operator-only, Stage 1) ---- */
.idsector{background:linear-gradient(180deg,rgba(203,164,90,.05),var(--panel))}
/* 7/18: the race is no longer nested in .rot — it's a full-width band now, so it just
   uses the standard .setups margin like Replay and Downside. Rule kept (harmless, and
   correct) in case it ever moves back into the column. */
.rot .idsector{margin:12px 0 0}
.idsector .setups-head{cursor:pointer;user-select:none}
.ids-asof{margin-left:auto;font-size:10px;color:var(--mut);letter-spacing:.03em;white-space:nowrap}
.ids-ctl{display:flex;gap:6px;padding:2px 12px 9px}
.ids-mbtn{background:var(--panel2);border:1px solid var(--line2);color:var(--mut);font-size:10px;
  letter-spacing:.05em;padding:3px 10px;border-radius:10px;cursor:pointer}
.ids-mbtn.on{color:var(--gold2);border-color:var(--gold);background:rgba(216,178,74,.08)}
#ids-rows{position:relative;margin:0 12px 12px}
.ids-row{position:absolute;left:0;right:0;top:0;height:24px;display:grid;
  grid-template-columns:16px 128px 1fr 62px;align-items:center;gap:8px;
  padding:2px 4px;border-radius:4px;cursor:pointer;
  transition:transform .55s cubic-bezier(.22,.9,.35,1)}   /* the lane-swap glide = the race */
.ids-row.noanim{transition:none}
.ids-playbtn{color:var(--gold2);border-color:var(--gold);font-weight:700;background:rgba(216,178,74,.08)}
.ids-readbtn{margin-left:auto;font-family:'Archivo',sans-serif;font-weight:800;font-size:10px;
  letter-spacing:.04em;color:#10151d;background:linear-gradient(135deg,var(--gold),var(--gold2));
  border:1px solid rgba(233,200,96,.5);border-radius:10px;padding:3px 12px;cursor:pointer;
  white-space:nowrap;box-shadow:0 0 8px rgba(216,178,74,.22)}
.ids-readbtn:hover{box-shadow:0 0 14px rgba(216,178,74,.45);filter:brightness(1.06)}
/* Rotation Intensity — the in-section gauge on the race board */
.ids-intensity{display:flex;align-items:center;gap:9px;margin:0 12px 9px;padding:5px 10px;
  border:1px solid var(--line2);border-radius:9px;background:rgba(216,178,74,.05)}
.ids-int-lab{font-family:'Archivo',sans-serif;font-weight:800;font-size:9px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--gold);white-space:nowrap}
.ids-int-track{position:relative;flex:1;min-width:60px;height:6px;border-radius:4px;background:var(--panel2);
  border:1px solid var(--line);overflow:hidden}
.ids-int-fill{position:absolute;left:0;top:0;height:100%;border-radius:4px;
  background:linear-gradient(90deg,var(--gold),var(--gold2));transition:width .5s ease,opacity .5s ease}
.ids-int-num{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:700;color:var(--gold2);
  min-width:20px;text-align:right}
.ids-int-say{font-size:9.5px;color:var(--mut);white-space:nowrap}
@media(max-width:640px){.ids-int-say{display:none}}
/* Rotation Intensity — inside the Hour Read room */
.hour-int{display:flex;align-items:center;gap:9px;margin-top:5px}
.hour-int-track{position:relative;flex:1;height:7px;border-radius:4px;background:var(--panel2);
  border:1px solid var(--line);overflow:hidden}
.hour-int-fill{position:absolute;left:0;top:0;height:100%;border-radius:4px;
  background:linear-gradient(90deg,var(--gold),var(--gold2))}
.hour-int-num{font-family:'JetBrains Mono',monospace;font-size:14px;font-weight:700;color:var(--gold2)}
.hour-int-say{font-size:11px;color:var(--ink)}
.hour-int-sub{font-size:9.5px;color:var(--mut);margin-top:4px;font-family:'JetBrains Mono',monospace}
/* Intraday sector drill (operator-local) */
.sec-read{font-size:12.5px;line-height:1.7;color:#e4d3a0;margin:0 0 14px;padding-bottom:12px;border-bottom:1px solid var(--line)}
.sec-sec{margin-bottom:16px}
.sec-h{font-family:'Archivo',sans-serif;font-weight:800;font-size:11px;letter-spacing:.07em;text-transform:uppercase;margin-bottom:6px}
.sec-h.up{color:var(--pos)}
.sec-h.down{color:var(--neg)}
.sec-hdr{display:grid;grid-template-columns:1fr 62px 56px 15px 20px 15px;gap:8px;align-items:center;font-size:8.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--dim);padding:0 7px 4px}
.sec-hdr span:nth-child(2),.sec-hdr span:nth-child(3){text-align:right}
.sec-hdr span:nth-child(5){text-align:center}
.sec-row{display:grid;grid-template-columns:1fr 62px 56px 15px 20px 15px;gap:8px;align-items:center;padding:4px 7px;border-radius:6px}
.sec-row:hover{background:rgba(255,255,255,.03)}
.sec-row.hot{background:rgba(216,178,74,.08);box-shadow:inset 2px 0 0 var(--gold)}
.sec-tk{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sec-tk b{font-family:'JetBrains Mono',monospace;font-weight:700;font-size:12px;color:var(--ink)}
.sec-nm{color:var(--mut);font-size:9.5px;margin-left:6px}
.sec-raw{font-family:'JetBrains Mono',monospace;font-size:12px;font-weight:700;text-align:right}
.sec-vs{font-family:'JetBrains Mono',monospace;font-size:11px;text-align:right}
.sec-arr{text-align:center;font-size:10px}
.sec-hot{text-align:center;font-size:11px}
.sec-vol{text-align:center;font-size:9px;color:var(--dim)}
.sec-vol.on{color:var(--gold2)}
.sec-none{font-size:11px;color:var(--mut);padding:2px 7px}
.sec-more{display:none}
.sec-more.open{display:block}
.sec-expand{margin:5px 7px 0;background:var(--panel2);border:1px solid var(--line2);color:var(--gold);font-size:10px;border-radius:6px;padding:3px 10px;cursor:pointer}
.sec-expand:hover{border-color:var(--gold)}
.sec-count{font-size:9.5px;color:var(--dim);text-align:center;margin:8px 0 6px;font-family:'JetBrains Mono',monospace}
.sec-link{font-size:11px;color:var(--gold);cursor:pointer;text-align:center;padding:7px}
.sec-link:hover{text-decoration:underline}
/* Social Studio (admin-only) */
.soc-setup{font-size:11px;line-height:1.6;color:#c9b98a;background:rgba(216,178,74,.06);
  border:1px dashed rgba(216,178,74,.4);border-radius:8px;padding:8px 11px;margin:0 0 12px}
.soc-bar{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-bottom:10px}
.soc-winlab{font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim)}
.soc-win{background:var(--panel2);border:1px solid var(--line2);color:var(--mut);font-size:10px;
  border-radius:8px;padding:3px 10px;cursor:pointer}
.soc-win.on{color:var(--gold2);border-color:var(--gold);background:rgba(216,178,74,.08)}
.soc-genbtn{margin-left:auto;font-family:'Archivo',sans-serif;font-weight:800;font-size:10px;
  letter-spacing:.04em;color:#10151d;background:linear-gradient(135deg,var(--gold),var(--gold2));
  border:1px solid rgba(233,200,96,.5);border-radius:10px;padding:4px 13px;cursor:pointer;
  white-space:nowrap;box-shadow:0 0 8px rgba(216,178,74,.22)}
.soc-genbtn:hover{box-shadow:0 0 14px rgba(216,178,74,.45);filter:brightness(1.06)}
.soc-genbtn:disabled{opacity:.55;cursor:default}
.soc-note{font-size:11.5px;color:#e4d3a0;background:var(--panel2);border:1px solid var(--line);
  border-radius:8px;padding:8px 11px;margin-bottom:10px}
.soc-card{background:var(--panel2);border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;margin-bottom:12px}
.soc-card.approved{border-color:rgba(52,178,123,.45)}
.soc-card.rejected{opacity:.55}
.soc-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:4px}
.soc-daychip{font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.08em;
  color:var(--mut);border:1px solid var(--line2);border-radius:8px;padding:1px 7px}
.soc-story{font-family:'Archivo',sans-serif;font-weight:800;font-size:10px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--gold2)}
.soc-status{margin-left:auto;font-size:8.5px;letter-spacing:.06em;text-transform:uppercase;
  border-radius:8px;padding:1px 8px;border:1px solid var(--line2);color:var(--mut)}
.soc-status.approved{color:var(--pos);border-color:rgba(52,178,123,.5)}
.soc-status.rejected{color:var(--neg);border-color:rgba(208,90,74,.5)}
.soc-status.pending_review{color:var(--gold2);border-color:rgba(233,200,96,.45)}
.soc-why{font-size:10.5px;font-style:italic;color:var(--mut);margin:2px 0 8px}
.soc-tabs{display:flex;gap:5px;margin-bottom:7px}
.soc-tab{background:transparent;border:1px solid var(--line2);color:var(--mut);font-size:9.5px;
  border-radius:7px;padding:2px 9px;cursor:pointer}
.soc-tab.on{color:var(--gold2);border-color:var(--gold)}
.soc-cap{font-size:12.5px;line-height:1.7;color:var(--ink);background:rgba(0,0,0,.25);
  border:1px solid var(--line);border-radius:8px;padding:10px 12px;white-space:pre-wrap}
.soc-row{display:flex;gap:6px;align-items:center;margin-top:8px;flex-wrap:wrap}
.soc-act{background:var(--panel2);border:1px solid var(--line2);color:var(--ink);font-size:10px;
  border-radius:7px;padding:3px 11px;cursor:pointer}
.soc-act:hover{border-color:var(--gold)}
.soc-act.ok{color:var(--pos)} .soc-act.no{color:var(--neg)}
.soc-copied{color:var(--pos);font-size:10px}
.soc-shott{font-size:10px;color:var(--gold);cursor:pointer;margin-top:8px;display:inline-block}
.soc-shots{display:none;margin-top:6px}
.soc-shots.open{display:block}
.soc-shot{font-size:10.5px;color:var(--mut);border-top:1px solid var(--line);padding:6px 0;
  display:flex;gap:8px;align-items:flex-start}
.soc-shot i{flex:0 0 auto;font-style:normal;color:var(--gold);font-size:9px;padding-top:2px;
  width:13px;height:13px;line-height:13px;text-align:center;border:1px solid var(--line);
  border-radius:50%}
.soc-shot b{color:var(--ink);font-weight:600}
.soc-shot em{display:block;font-style:normal;color:var(--dim);font-size:9.5px;margin-top:2px;
  line-height:1.45}
.soc-shotrule{font-size:9.5px;color:var(--dim);border-top:1px solid var(--line);padding-top:6px;
  margin-top:2px}
.soc-audit{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--dim);margin-top:7px}
/* phones: the studio gets the whole screen and the box owns its own scroll. overscroll
   containment stops iOS from handing the gesture to the (locked) page behind the overlay,
   which is what made the studio read as frozen on mobile (MAL-2026-07-19). */
#social-overlay .drill-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
@media (max-width:640px){
  #social-overlay .drill-body{max-height:calc(100dvh - 150px)}
}
/* the tickers window — the one post that names names, so it reads gold even when unselected */
.soc-win-wk{color:var(--gold2);border-color:rgba(216,178,74,.35)}
/* Chart Shot — one chip per roster name; the rendered PNG drops in below, full width */
.soc-chips{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0 2px}
.soc-chip{background:var(--panel2);border:1px solid rgba(216,178,74,.35);color:var(--gold2);
  font-size:10px;padding:4px 9px;border-radius:6px;cursor:pointer}
.soc-chip:hover{border-color:var(--gold)}
.soc-chip.on{background:rgba(216,178,74,.1);border-color:var(--gold);color:var(--gold2)}
.soc-chartwrap{margin-top:8px}
.soc-chartimg{width:100%;max-width:420px;display:block;border-radius:10px;
  border:1px solid var(--line2)}
.soc-charthint{font-size:9.5px;color:var(--dim);margin-top:4px}
/* Watch Tier — rides the dn-* row layout; only the leader cell is its own */
.wt-pick{display:flex;align-items:center;gap:6px;flex:0 0 auto;min-width:150px}
.wt-lvl{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--dim)}
.soc-cap{white-space:pre-wrap}
/* past drafts: folded away by default so the box stays one draft, never a feed */
.soc-past{margin-top:10px;border-top:1px solid var(--line);padding-top:8px}
.soc-pastt{font-size:10px;color:var(--dim);cursor:pointer;letter-spacing:.03em}
.soc-pastt:hover{color:var(--gold)}
.soc-hist{display:none;margin-top:6px}
.soc-hist.open{display:block}
.soc-hrow{display:flex;align-items:center;gap:8px;padding:5px 0;cursor:pointer;
  border-top:1px solid var(--line)}
.soc-hrow:hover .soc-hs{color:var(--gold2)}
.soc-hd{font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--dim);flex:0 0 auto}
.soc-hs{font-size:10.5px;color:var(--mut);flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap}
.soc-hst{font-size:8.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--dim);flex:0 0 auto}
#ids-read{margin:0 12px 10px;padding:9px 11px;background:var(--panel2);border:1px solid var(--line);
  border-left:3px solid var(--gold);border-radius:4px}
.ids-read-chip{font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.14em;
  color:var(--gold);text-transform:uppercase;margin-bottom:3px}
.ids-read-head{font-family:'Archivo',sans-serif;font-size:13px;font-weight:800;color:var(--gold2);
  letter-spacing:.005em;line-height:1.32}
.ids-read-body{margin-top:4px;font-size:11px;color:var(--ink);line-height:1.5}
.ids-read-hrs{margin-top:7px;padding-top:6px;border-top:1px solid var(--line);display:flex;
  flex-direction:column;gap:2px;font-size:9.5px;color:var(--mut);
  font-family:'JetBrains Mono',monospace;line-height:1.5}
.ids-row:hover{background:rgba(216,178,74,.05)}
.ids-row:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.ids-rk{font-family:'JetBrains Mono',monospace;font-size:9.5px;color:var(--dim);text-align:right}
.ids-tk b{font-family:'Archivo',sans-serif;font-weight:800;font-size:12px;color:var(--ink);letter-spacing:.02em}
.ids-nm{font-size:9.5px;color:var(--mut);margin-left:6px}
.ids-barwrap{display:block;height:13px;background:var(--panel2);border:1px solid var(--line);
  border-radius:3px;overflow:hidden}
.ids-bar{display:block;height:100%;border-radius:2px;transition:width .6s ease,background .6s ease}
.ids-val{font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;
  font-variant-numeric:tabular-nums;text-align:right}
@media(max-width:640px){.ids-row{grid-template-columns:14px 60px 1fr 58px}.ids-nm{display:none}}

/* ---- Bruce malfunction alert (operator-only) ---- */
#bx-alert{border-color:rgba(208,90,74,.45);color:#dd9184}
#bx-alert b{color:var(--mut);font-weight:700;margin-left:3px}
#bx-alert.unseen{border-color:var(--neg);color:#f0a89c}
#bx-alert.unseen b{color:var(--neg)}
.bxi-it{padding:8px 10px;border:1px solid var(--line);border-left:3px solid rgba(208,90,74,.55);
  border-radius:4px;background:var(--panel2);margin-bottom:7px}
.bxi-it.bxi-err{border-left-color:var(--neg);background:rgba(208,90,74,.07)}
.bxi-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.bxi-top b{font-family:'Archivo',sans-serif;font-size:12.5px;color:var(--ink)}
.bxi-ts{font-family:'JetBrains Mono',monospace;font-size:9.5px;color:var(--dim)}
.bxi-plain{margin-top:3px;font-size:11.5px;color:var(--ink);line-height:1.45}
.bxi-raw{margin-top:3px;font-family:'JetBrains Mono',monospace;font-size:9px;color:var(--mut);
  line-height:1.45;word-break:break-word}

/* ---- Higher-timeframe context block on the ticker card ---- */
.tf-block .tf-row{display:flex;align-items:baseline;gap:9px;font-family:'JetBrains Mono',monospace;font-size:13px;font-variant-numeric:tabular-nums;margin-top:5px}
.tf-lbl{display:inline-block;min-width:26px;color:var(--ink);font-weight:700}
.tf-win{font-size:10px}

/* ---- 'last update' under the Rotation Intensity gauge ---- */
.gauge-upd{margin-top:5px;font-family:'JetBrains Mono',monospace;font-size:10px;letter-spacing:.3px;color:var(--gold);text-align:center;opacity:.9}

/* ---- Support box ---- */
.sup-card{max-width:480px}
.sup-form{display:flex;flex-direction:column;gap:7px;padding:2px 0}
.sup-lbl{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:var(--mut);margin-top:6px}
.sup-select,.sup-textarea{width:100%;background:var(--panel2);color:var(--ink);border:1px solid var(--line2);border-radius:7px;padding:10px 12px;font-family:'Inter',sans-serif;font-size:13px;outline:none}
.sup-select:focus,.sup-textarea:focus{border-color:var(--gold)}
.sup-textarea{resize:vertical;min-height:96px;line-height:1.5}
.sup-submit{margin-top:9px;padding:11px;cursor:pointer;color:#0a0a0a;font-family:'Rajdhani',sans-serif;font-weight:700;font-size:13px;letter-spacing:3px;text-transform:uppercase;border:none;border-radius:7px;background:linear-gradient(135deg,#a07830,#e0b441,#c89038);box-shadow:0 0 16px rgba(210,160,40,.3)}
.sup-submit:hover{filter:brightness(1.05)}
.sup-submit:disabled{opacity:.55;cursor:default}
.sup-status{min-height:16px;font-size:12px;text-align:center;color:var(--mut);margin-top:2px}
.sup-status.ok{color:var(--rgreen)} .sup-status.err{color:var(--rred)}

/* ---- Guide glossary (moved off the dashboard, into the Guide) ---- */
.g-gloss-btn{font-family:'Rajdhani',sans-serif;font-weight:700;letter-spacing:1px;text-transform:uppercase;font-size:13px;cursor:pointer;color:#0a0a0a;border:none;border-radius:7px;padding:9px 16px;margin-top:8px;background:linear-gradient(135deg,#a07830,#e0b441,#c89038)}
.g-gloss-btn:hover{filter:brightness(1.05)}
.g-gloss{margin-top:14px;display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px 20px}
.g-gloss-row{font-size:13px;color:#bcc6d3}
.g-gloss-tk{font-family:'JetBrains Mono',monospace;font-weight:700;color:var(--gold)}

/* ---- Market Replay (customer strip + modal) — replay-blue identity ---- */
.replaysec{border-color:rgba(94,159,240,.35);margin-top:8px}
.rp-badge{font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:#7db3f0;border:1px solid rgba(94,159,240,.4);border-radius:4px;padding:1px 6px;margin-left:8px;vertical-align:middle;font-weight:700}
.rp-toggle{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--mut);cursor:pointer;margin-left:auto;white-space:nowrap}
.rp-toggle input{accent-color:#7db3f0;cursor:pointer}
#replay .setups-head{gap:10px}
.rp-sumline{display:flex;flex-wrap:wrap;gap:6px;margin:2px 0 8px}
.rp-chip{font-size:10px;color:var(--mut);border:1px solid var(--line2);border-radius:20px;padding:3px 10px;background:var(--panel2)}
.rp-chip .pos{color:var(--pos)} .rp-chip .neg{color:var(--neg)}
.rp-note{font-size:9.5px;color:var(--dim);margin-bottom:8px;font-style:italic}
.rp-match{flex:1 1 0;min-width:196px;max-width:260px;border:1px solid var(--line2);border-left:3px solid rgba(94,159,240,.65);border-radius:9px;padding:8px 10px;cursor:pointer;background:var(--panel)}
.rp-match:hover{background:var(--panel2);border-color:rgba(94,159,240,.5)}
.rp-top{display:flex;align-items:baseline;justify-content:space-between}
.rp-date{font-family:'JetBrains Mono',monospace;font-size:11.5px;color:var(--ink)}
.rp-score{font-family:'JetBrains Mono',monospace;font-size:11px;font-weight:700;color:#7db3f0;cursor:help}
.rp-tags{display:flex;flex-wrap:wrap;gap:4px;margin:5px 0}
.rp-tag{font-size:8.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--gold);border:1px solid rgba(216,178,74,.4);border-radius:4px;padding:1px 5px}
.rp-tag.dim{color:var(--dim);border-color:var(--line2);text-transform:none;letter-spacing:0}
.rp-fwd{font-size:10.5px;color:var(--mut)}
.rp-fwd b{font-family:'JetBrains Mono',monospace;margin-left:4px}
.rp-fwd .pos{color:var(--pos)} .rp-fwd .neg{color:var(--neg)}
.rp-led{font-size:9.5px;color:var(--dim);margin-top:3px}
.rp-bruce{font-size:9px;color:#d4a030;margin-top:4px;border-top:1px dashed var(--line2);padding-top:3px}
.rp-card{max-width:600px}
.rp-fwdgrid{display:flex;gap:18px;flex-wrap:wrap}
.rp-fwdgrid div{font-size:11px;color:var(--mut)}
.rp-fwdgrid b{font-family:'JetBrains Mono',monospace;margin-left:6px}
.rp-fwdgrid .pos{color:var(--pos)} .rp-fwdgrid .neg{color:var(--neg)}
.rp-rt{margin-top:2px}
.rp-rt-h{display:flex;justify-content:space-between;font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin-bottom:4px}
.rp-rt-row{display:flex;align-items:baseline;gap:8px;font-size:11px;color:var(--ink);padding:2px 0;border-bottom:1px solid var(--line)}
.rp-rt-row:last-child{border-bottom:0}
.rp-rt-row b{font-family:'JetBrains Mono',monospace;color:#7db3f0;min-width:26px}
.rp-same{margin-left:auto;font-size:9px;color:var(--dim)}
.rp-shift{margin-left:auto;font-size:9px;color:var(--gold)}
.rp-est{margin-top:12px;border-top:1px dashed var(--line2);padding-top:8px}

/* ---- catalyst characterize→chronological chips ---- */
.cat-secs{font-size:9px;color:var(--mut);font-family:'JetBrains Mono',monospace;letter-spacing:.5px}
.cat-ctx{font-size:8.5px;color:var(--mut);border:1px solid var(--line2);border-radius:5px;padding:1px 5px;text-transform:uppercase;letter-spacing:1px}

/* ---- wizard support inbox ---- */
.sup-badge{margin-left:6px;background:var(--gold);color:#0a0a0a;border-radius:9px;padding:0 6px;font-size:10px;font-weight:700;font-family:'JetBrains Mono',monospace}
.sup-inbox{display:flex;flex-direction:column;gap:7px;max-height:56vh;overflow-y:auto;padding:2px 0}
.sup-list{display:flex;flex-direction:column;gap:8px}
.sup-row{background:var(--panel2);border:1px solid var(--line2);border-radius:7px;padding:9px 11px;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline}
.sup-when{font-size:10px;color:var(--mut);font-family:'JetBrains Mono',monospace}
.sup-cat{font-size:10px;color:var(--gold);text-transform:uppercase;letter-spacing:1px;font-weight:700}
.sup-who{font-size:11px;color:var(--mut)}
.sup-msg{width:100%;font-size:12.5px;line-height:1.5;color:var(--ink);white-space:pre-wrap;word-break:break-word}

/* ---- chalk board: ticker pins, guided prompts, edit-in-place ---- */
#chalk-tkr{background:none;border:1px solid rgba(245,204,90,.45);color:#f5cc5a;border-radius:6px;
  padding:0 14px;font-family:'Archivo',sans-serif;font-weight:800;letter-spacing:.08em;cursor:pointer;text-transform:uppercase;font-size:12px}
#chalk-tkr:hover{background:rgba(245,204,90,.08)}
.chalk-tkrflow{display:flex;flex-direction:column;gap:2px;background:#0b1712;border:1px solid #2b4239;border-radius:8px;padding:12px 13px;margin-bottom:12px}
.chalk-q{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:11px;letter-spacing:1.5px;text-transform:uppercase;color:#8a9a92;margin:7px 0 4px}
.chalk-tkrflow input,.chalk-tkrflow textarea,.ct-editwrap input,.ct-editwrap textarea{width:100%;background:#0f1f18;border:1px solid #2b4239;border-radius:6px;
  padding:9px 11px;font-family:'Archivo',sans-serif;font-weight:600;font-size:13.5px;color:#ffe066;outline:none;resize:vertical}
.chalk-tkrflow input:focus,.chalk-tkrflow textarea:focus,.ct-editwrap input:focus,.ct-editwrap textarea:focus{border-color:rgba(192,192,192,.6)}
.chalk-tkrflow ::placeholder{color:#555;font-weight:500}
.ct-results{display:flex;flex-direction:column}
.ct-hit{display:flex;gap:9px;align-items:baseline;padding:8px 9px;cursor:pointer;border-bottom:1px solid rgba(200,220,210,.07)}
.ct-hit:hover{background:rgba(245,204,90,.07)}
.ct-hit b{color:#f5cc5a;font-family:'JetBrains Mono',monospace;font-size:12.5px}
.ct-nm{color:#8a9a92;font-size:12px;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ct-sec{color:#5e5e5e;font-size:10px;font-family:'JetBrains Mono',monospace}
.ct-none{color:#5e5e5e;font-size:12px;padding:8px 9px}
.ct-picked{margin:2px 0 4px}
.ct-actions{display:flex;gap:8px;margin-top:10px}
/* Backup button — quiet by default, gold on hover. Deliberately understated: it is
   insurance, not a feature to show off, and it must not compete with + Ticker. */
.chalk-export{background:none;border:1px solid var(--line2);border-radius:6px;color:var(--dim);
  font-size:10px;letter-spacing:.04em;padding:3px 8px;cursor:pointer;white-space:nowrap}
.chalk-export:hover{color:var(--gold);border-color:var(--gold)}
.chalk-gold{background:linear-gradient(145deg,#a07830,#d4a030,#c89038);color:#0a0a0a;border:none;border-radius:6px;
  padding:8px 16px;font-family:'Archivo',sans-serif;font-weight:800;letter-spacing:.08em;cursor:pointer;text-transform:uppercase;font-size:12px}
.chalk-gold:hover{filter:brightness(1.08)}
.ct-cancel{background:none;border:1px solid rgba(255,255,255,.18);color:#8a9a92;border-radius:6px;padding:8px 14px;cursor:pointer;font-size:12px}
.ct-cancel:hover{color:#cfd8d2}
.ct-badge{background:#f5cc5a;color:#101010;font-weight:800;border-radius:5px;padding:1px 8px;font-size:12px;font-family:'JetBrains Mono',monospace;margin-right:7px}
.ct-tf{border:1px solid rgba(245,204,90,.4);color:#f5cc5a;border-radius:5px;padding:0 7px;font-size:10px;font-family:'JetBrains Mono',monospace;letter-spacing:.5px}
.ct-see{display:block;margin-top:5px;font-size:13.5px;line-height:1.45}
.ct-conf{display:block;margin-top:3px;font-size:11.5px;color:#8a9a92;font-weight:500}
.chalk-edit{background:none;border:none;color:#5e5e5e;cursor:pointer;font-size:13px;padding:2px 4px}
.chalk-edit:hover{color:#f5cc5a}
.ct-editwrap{flex:1;display:flex;flex-direction:column;gap:2px}

/* ---- updates board ---- */
.upd-dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--gold);margin-left:6px;box-shadow:0 0 6px rgba(216,178,74,.8);vertical-align:middle}
.upd-card{max-width:560px}
.upd-body{max-height:60vh;overflow-y:auto;padding:4px 2px}
.upd-ver{display:flex;align-items:baseline;gap:10px;margin:14px 0 6px}
.upd-ver:first-child{margin-top:2px}
.upd-v{font-family:'Rajdhani',sans-serif;font-weight:700;font-size:14px;letter-spacing:2px;color:var(--gold);text-transform:uppercase}
.upd-date{font-size:10.5px;color:var(--mut);font-family:'JetBrains Mono',monospace}
.upd-list{margin:0 0 4px;padding-left:18px}
.upd-list li{font-size:13px;line-height:1.6;color:var(--ink)}

/* ---- tier lock cards (task #17 — dormant until DEDGE_TIERS_ON) ---- */
.lockcard{display:flex;flex-direction:column;align-items:center;gap:6px;padding:26px 16px;text-align:center;
  background:var(--panel2);border:1px dashed rgba(216,178,74,.35);border-radius:10px;margin:6px 2px}
.lock-ic{font-size:20px;filter:grayscale(.2)}
.lock-t{font-size:13px;color:var(--ink)} .lock-t b{color:var(--gold)}
.lock-s{font-size:11.5px;color:var(--mut)}
.lock-btn{margin-top:7px;background:linear-gradient(135deg,#a07830,#e0b441,#c89038);color:#0a0a0a;border:none;border-radius:6px;
  padding:8px 18px;font-family:'Rajdhani',sans-serif;font-weight:700;font-size:12px;letter-spacing:2px;text-transform:uppercase;cursor:pointer}
.lock-btn:hover{filter:brightness(1.06)}
.lock-mini{font-size:11.5px;color:var(--mut);padding:8px 2px}

/* ---- chosen-name modal + welcome edit pencil ---- */
.name-card{max-width:430px}
.name-form{display:flex;flex-direction:column;gap:8px;padding:2px 0}
#name-input{width:100%;background:var(--panel2);color:var(--ink);border:1px solid var(--line2);border-radius:7px;padding:10px 12px;font-family:'Inter',sans-serif;font-size:14px;outline:none}
#name-input:focus{border-color:var(--gold)}
.name-left{font-size:11px;color:var(--mut)}
.name-edit{background:none;border:none;color:var(--mut);cursor:pointer;font-size:12px;padding:0 3px;vertical-align:baseline}
.name-edit:hover{color:var(--gold)}

/* ---- global page footer: research-not-advice + legal links (every page) ---- */
.page-foot{max-width:1600px;margin:26px auto 0;padding:16px 20px 30px;border-top:1px solid var(--line2);
  display:flex;justify-content:space-between;align-items:baseline;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--mut)}
.page-foot .pf-note{max-width:900px;line-height:1.5} .page-foot .pf-note b{color:var(--mut)}
.page-foot .pf-links{white-space:nowrap} .page-foot a{color:var(--mut)} .page-foot a:hover{color:var(--gold)}
body.product .page-foot{display:flex}

/* ---- Today's Read · the gold button + the room. Additive: the resting page is
   untouched except the ONE intended swap — the conviction h2's formula span is
   now this button. Everything else here styles #read-* only. ---- */
.read-btn{font-family:'Archivo',sans-serif;font-weight:800;font-size:10px;letter-spacing:.05em;
  color:#10151d;background:linear-gradient(135deg,var(--gold),var(--gold2));border:1px solid rgba(233,200,96,.5);
  border-radius:7px;padding:5px 11px;cursor:pointer;white-space:nowrap;
  box-shadow:0 0 8px rgba(216,178,74,.22)}
.read-btn:hover{box-shadow:0 0 14px rgba(216,178,74,.45);filter:brightness(1.06)}
.read-card{width:min(640px,94vw)}
#read-body{padding:12px 20px 18px}
/* JD 7/09: gold-font theme on the dark room — every override scoped to #read-* / .read-* only */
#read-overlay .drill-tk{color:var(--gold2)}
#read-overlay .drill-ctx{color:#9a854e}
/* Today's Read on the Main Board — same read classes, tightened for an inline panel */
.read-board .readb-body{padding:12px 18px 14px}
.read-board .read-hl{font-size:14.5px}
.read-board .read-sec{margin:0 0 11px}
#readb-head{cursor:pointer}
.readb-caret{margin-left:auto;color:var(--mut);font-size:12px}
.read-when{font-family:'JetBrains Mono',monospace;font-size:9.5px;color:#9a854e;margin-bottom:10px}
.read-hl{font-family:'Archivo',sans-serif;font-weight:800;font-size:16.5px;line-height:1.4;color:var(--gold2);
  margin:0 0 14px;padding-left:11px;border-left:3px solid var(--gold)}
.read-sec{margin:0 0 15px}
.read-chip{display:inline-block;font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.08em;
  color:var(--gold);border:1px solid rgba(216,178,74,.32);border-radius:9px;padding:2px 8px;margin-bottom:7px}
.read-chip.live{color:var(--gold2);border-color:rgba(233,200,96,.45)}
.read-chip.closed{color:#9a854e;border-color:rgba(154,133,78,.4)}
.read-p{font-size:12.5px;line-height:1.72;color:#e4d3a0;margin:0}
.read-p b{color:#f6e8b2;font-weight:700}
@media(min-width:681px){ #read-body{max-height:76vh} }
@media(max-width:680px){
  #read-overlay{padding:0}
  #read-overlay .read-card{width:100%;max-width:none;height:100dvh;border-radius:0;border:0;display:flex;flex-direction:column}
  #read-overlay .drill-head{flex:none}
  #read-body{flex:1;min-height:0;max-height:none;overflow-y:auto}
  .read-hl{font-size:17.5px}
  .read-p{font-size:13.5px;line-height:1.75}
}

/* ---- The three bands (2026-08-02): a path through the board, not a map ----
   Deliberately quiet. These are signposts, not another panel competing for attention —
   the moment a band header looks as important as the content under it, it has become
   part of the clutter it exists to fix. No box, no fill, one hairline underneath. */
/* Margins MATCH .setups exactly (12px each side) — do not give this a max-width. It had
   max-width:1180px centered, copied off the Dividend Room's own container, and on a wide
   screen that left the header 756px narrower than the panels underneath it and floating
   in the middle of the page. A signpost that does not line up with the thing it labels
   reads as a stray element, which is worse than no signpost. */
.band{display:flex;align-items:baseline;gap:11px;flex-wrap:wrap;
  margin:26px 12px 9px;padding:0 12px 8px;
  border-bottom:1px solid rgba(203,164,90,.22)}
.band:first-of-type{margin-top:14px}
.band[hidden]{display:none}
.band-n{font-family:'Archivo',sans-serif;font-size:11px;font-weight:800;color:#0f1620;
  background:var(--gold);border-radius:50%;width:18px;height:18px;line-height:18px;
  text-align:center;flex:0 0 auto}
.band-q{font-family:'Archivo',sans-serif;font-size:14px;font-weight:700;color:var(--gold);
  letter-spacing:.02em}
.band-s{font-size:11.5px;color:#5A6675;flex:1 1 260px;line-height:1.5}
@media (max-width:760px){ .band{margin:18px auto 8px} .band-s{flex-basis:100%} }

/* ---- Market Replay v2 (2026-08-02): one picture, not twelve cards ---- */
/* #replay-row is a .setups-row, which is display:flex — correct when it held twelve
   cards, wrong now that it holds a chart, a sentence and a fold button that belong in
   a column. Overridden here rather than by changing .setups-row, which every other
   section on the board still relies on. */
.replaysec .setups-row{display:block}
.rp-evrow{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 9px}
.rp-ev{font-size:12px;padding:5px 11px;border-radius:6px;background:transparent;
  border:1px solid var(--line);color:#8593A3;cursor:pointer;white-space:nowrap}
.rp-ev:hover{border-color:#3a4859;color:var(--ink)}
.rp-ev.on{border-color:var(--gold);color:var(--gold);background:rgba(203,164,90,.08)}
.rp-viz{background:#1E2835;border:1px solid var(--line);border-radius:9px;
  padding:10px 12px 4px;margin:0 0 10px}
/* The spaghetti chart's rules (.rp-svg/.rp-p/.rp-med/.rp-zero/.rp-ax) were deleted with
   the chart on 2026-08-02, rather than left behind styling nothing. */
.rpc{width:100%;border-collapse:collapse;font-size:13px;margin:2px 0 4px}
.rpc th{text-align:left;font-weight:600;color:#5A6675;font-size:10px;letter-spacing:.06em;
  text-transform:uppercase;padding:0 8px 6px;border-bottom:1px solid var(--line)}
.rpc th.r,.rpc td.r{text-align:right}
.rpc td{padding:8px;border-bottom:1px solid rgba(255,255,255,.04);
  font-variant-numeric:tabular-nums;color:#c9d2dc}
.rpc td.dim{color:#5A6675}
.rpc .rpc-l{color:var(--ink)}
/* The baseline row reads as the yardstick, not as another finding. */
.rpc tr.rpc-base td{color:#8593A3;border-bottom:none}
.rpc tr.rpc-base .rpc-l{color:#8593A3;font-style:italic}
.rpc tr.rpc-base b{font-weight:500;color:#8593A3 !important}
.rp-say{font-size:13px;line-height:1.6;color:#c9d2dc;padding:8px 2px 8px}
.rp-say.thin{color:#8593A3}
.rp-cardsbtn{font-size:12px;padding:5px 11px;border-radius:6px;background:transparent;
  border:1px solid var(--line);color:#8593A3;cursor:pointer;margin:0 0 8px}
.rp-cardsbtn:hover{border-color:var(--gold);color:var(--gold)}
.rp-cards{display:flex;flex-wrap:wrap;gap:9px;margin:0 0 8px}
.rp-cards[hidden]{display:none}

/* ---- Dividend Room (2026-08-01) — house palette, no new visual language ---- */
.divroom .divr-body{padding:10px 14px 14px}
/* The single global "if I owned N shares of each" box, its worked-example line and the
   four-stat summary strip were REMOVED 2026-08-02 at JD's call. The share count lives on
   the row now (.dvr-shin below), where the question is a real one. Their rules are gone
   rather than left behind commented out, so nothing here styles an element that no longer
   exists — see the note at the top of dividends.js for the reasoning. */
.divr-chips{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 10px}
.divr-chip{font-size:12px;padding:5px 11px;border-radius:6px;background:transparent;
  border:1px solid var(--line);color:#8593A3;cursor:pointer}
.divr-chip:hover{border-color:#3a4859;color:var(--ink)}
.divr-chip.on{border-color:var(--gold);color:var(--gold);background:rgba(203,164,90,.08)}
/* Links inside the two rooms' prose. The sheet has no `a` rule anywhere, so every link
   I added was falling through to the browser default — blue, underlined, and loud enough
   to pull the eye off the table. Scoped to these blocks rather than a global `a`, so
   nothing else on the board changes underneath. Same treatment as .dvr-link: gold, no
   underline until you hover it. */
.panel-help a,.trackfoot a,.empty a,.fnd-what a,.divr-foot a{
  color:var(--gold);text-decoration:none;border-bottom:1px dotted rgba(203,164,90,.45)}
.panel-help a:hover,.trackfoot a:hover,.empty a:hover,.fnd-what a:hover,.divr-foot a:hover{
  color:#f5cc5a;border-bottom-color:#f5cc5a}
.panel-help a:visited,.trackfoot a:visited,.empty a:visited,.fnd-what a:visited{color:var(--gold)}

/* "What is an ETF" — gold trigger so a first-timer sees it, folded so a regular
   never has to scroll past it twice. */
.fnd-what-btn{display:block;width:100%;text-align:left;font-size:12.5px;padding:8px 12px;
  margin:0 0 10px;border-radius:8px;background:rgba(203,164,90,.06);
  border:1px solid rgba(203,164,90,.35);color:var(--gold);cursor:pointer}
.fnd-what-btn:hover{background:rgba(203,164,90,.11)}
.fnd-what-btn b{color:var(--gold)}
.fnd-what-btn .c{margin-right:6px;font-size:11px}
.fnd-what{background:#1E2835;border:1px solid var(--line);border-radius:8px;
  padding:12px 15px 4px;margin:0 0 12px}
.fnd-what[hidden]{display:none}
.fnd-what p{margin:0 0 11px;font-size:13px;line-height:1.62;color:#c9d2dc}
.fnd-what p.mut{color:#8593A3;font-size:12px}
.fnd-what b{color:var(--ink)}

/* Sector row sits above the schedule row and reads as the wider cut of the two. */
.divr-sec{margin-bottom:7px}
.divr-sec .divr-chip{font-size:11.5px;padding:4px 9px}
.divr-chip .cn{margin-left:6px;color:#5A6675;font-size:10px;font-variant-numeric:tabular-nums}
.divr-chip.on .cn{color:var(--gold);opacity:.75}
.dvr-tbl{width:100%;border-collapse:collapse;font-size:13px}
.dvr-tbl th{text-align:left;font-weight:600;color:#5A6675;font-size:11px;
  letter-spacing:.06em;text-transform:uppercase;padding:6px 8px;border-bottom:1px solid var(--line)}
.dvr-tbl th.r,.dvr-tbl td.r{text-align:right}
.dvr-tbl th.gold{color:var(--gold)}
.dvr-tbl td{padding:8px;border-bottom:1px solid rgba(255,255,255,.04);
  font-variant-numeric:tabular-nums}
.dvr-tbl tr:hover td{background:rgba(255,255,255,.02)}
.dvr-tbl td.b{font-weight:600;color:var(--ink)}
.dvr-tbl td.dim{color:#8593A3}
.dvr-tk b{color:var(--ink)}
.dvr-freq{display:block;font-size:10px;color:#5A6675;text-transform:capitalize}
.dvr-up{color:var(--pos)}
.dvr-dn{color:#FF5A6E}
.dvr-flat{color:#5A6675}
.divr-foot{margin-top:10px;font-size:11px;color:#5A6675;line-height:1.6}

/* ---- Dividend Room page (2026-08-01) — its own view between Bullish and Bearish ---- */
#divmain{max-width:1180px;margin:14px auto 0;padding:0 16px}
#divmain .panel{width:100%}
/* Per-row share box. Sized to the column, not to the page: it has to sit inside a table
   cell across 700+ rows without making the row taller than a row without one. */
.dvr-shin{width:74px;text-align:right;background:#0f1620;color:var(--ink);
  border:1px solid var(--line);border-radius:5px;padding:3px 6px;font-size:12.5px;
  font-variant-numeric:tabular-nums}
.dvr-shin:focus{outline:none;border-color:var(--gold)}
.divr-sortbar{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0 0 10px;
  font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:#5A6675}
/* nowrap on both the label and the buttons: without it a narrow phone breaks "Most cash
   per year" into a four-line tower and the bar becomes taller than the table it sorts. */
.divr-sortbar > :not(button){white-space:nowrap}
.divr-sort{font-size:12px;padding:4px 10px;border-radius:6px;background:transparent;
  border:1px solid var(--line);color:#8593A3;cursor:pointer;text-transform:none;
  letter-spacing:0;white-space:nowrap}
.divr-sort:hover{border-color:#3a4859;color:var(--ink)}
.divr-sort.on{border-color:var(--gold);color:var(--gold)}
.dvr-na{color:#5A6675;cursor:help}
/* Sector rotation on an income row (JD 2026-08-08). Green/red carry the direction, and
   the signed number carries the strength, so the cell reads at a glance without becoming
   a rating. "no read" is deliberately GREY and wordy rather than a neutral 0: the model
   declining to call a direction is a real answer, and a "+0" would look like a weak call
   instead of a refused one.

   PREFIXED dvr- ON PURPOSE (2026-08-09). These shipped as bare `.rot` in 8fe48a5 and
   collided head-on with the main board: #p-rotation has carried class "rot" since long
   before this (see `.rot .idsector` above), so a pill style meant for a table cell was
   landing on a 990px column — align-items:baseline stopped its panels stretching, and
   padding:2px 8px became the column's padding. Never name a new class after a word the
   app already uses structurally. */
.dvr-rot{display:inline-flex;align-items:baseline;gap:6px;font-size:11px;letter-spacing:.02em;
  padding:2px 8px;border-radius:999px;white-space:nowrap;cursor:help}
.dvr-rot b{font-weight:700;font-size:11.5px}
.dvr-rot-in{color:#5cf0a0;background:rgba(43,213,118,.10);border:1px solid rgba(43,213,118,.28)}
.dvr-rot-out{color:#ff7d8c;background:rgba(255,90,110,.09);border:1px solid rgba(255,90,110,.26)}
.dvr-rot-none{color:#6B7787;background:transparent;border:1px solid var(--line)}
/* Share calculator toggle — pushed to the far end of the sort bar so it reads as its
   own control rather than a fifth sort option. */
.divr-calc-btn{margin-left:auto;font-size:12px;padding:4px 11px;border-radius:6px;
  background:transparent;border:1px solid var(--line);color:#8593A3;cursor:pointer;
  text-transform:none;letter-spacing:0;white-space:nowrap}
/* On a phone margin-left:auto would strand it alone on its own line. */
@media (max-width:760px){
  .divr-calc-btn{margin-left:0}
  #divr-q,#fnd-q{width:100%}
  .dvr-sub{white-space:normal}
}
.divr-calc-btn:hover{border-color:#3a4859;color:var(--ink)}
.divr-calc-btn.on{border-color:var(--gold);color:var(--gold);background:rgba(203,164,90,.08)}
/* Schedule blocks. The header is a full-width row inside the table so the columns stay
   locked in one grid — separate tables per group would let them drift apart. */
.dvr-wrap{overflow-x:auto}
.dvr-grp td{padding:14px 8px 6px !important;border-bottom:1px solid var(--gold) !important;
  background:transparent !important}
.dvr-grp{cursor:pointer}
.dvr-grp:hover b{color:#f5cc5a}
.dvr-grp .c{color:var(--gold);margin-right:7px;font-size:11px}
.dvr-grp b{color:var(--gold);font-size:12.5px;letter-spacing:.06em;text-transform:uppercase}
.dvr-more td{padding:9px 8px 12px !important;border-bottom:1px solid rgba(255,255,255,.04)}
.dvr-morebtn{font-size:11.5px;padding:4px 10px;margin-right:7px;border-radius:6px;
  background:transparent;border:1px solid var(--line);color:#8593A3;cursor:pointer}
.dvr-morebtn:hover{border-color:var(--gold);color:var(--gold)}
.dvr-mtxt{font-size:11px;color:#5A6675}
.dvr-grp .d{color:#5A6675;font-size:11px;margin-left:10px}
.dvr-grp .n{float:right;color:#5A6675;font-size:11px;font-variant-numeric:tabular-nums}
.dvr-tbl tbody:first-of-type .dvr-grp td{padding-top:4px !important}
/* The `hidden` ATTRIBUTE only carries UA-stylesheet weight, so any class here that sets
   an explicit display silently beats it. Setting el.hidden = true on the lock path left
   the search box, the sort bar, the chips and the ETF explainer fully visible above the
   lock card — caught 2026-08-02 by looking at the render, after a DOM check that asserted
   the attribute was set and passed while the elements were still on screen. Assert on
   computed display, not on the attribute. */
.divr-search[hidden],.divr-sortbar[hidden],.divr-chips[hidden],
.fnd-what-btn[hidden],.fnd-what[hidden]{display:none !important}

/* Search — open by default, never behind a toggle. */
.divr-search{display:flex;align-items:center;gap:10px;margin:0 0 10px}
/* Both rooms' search boxes. Was id-only and the ETF Room's input fell through to
   browser default, arriving half the width with its placeholder cut off. */
/* flex:0 0 auto + width, NOT a flex-basis: with shrink allowed the input collapsed to
   ~160px and cut its own placeholder off. min() keeps it honest on a phone. */
#divr-q,#fnd-q{flex:0 0 auto;width:min(340px,100%);box-sizing:border-box;
  background:#0f1620;color:var(--ink);border:1px solid var(--line);
  border-radius:7px;padding:7px 11px;font-size:13px}
#divr-q:focus,#fnd-q:focus{outline:none;border-color:var(--gold)}
#divr-q::placeholder,#fnd-q::placeholder{color:#5A6675}
.divr-qhit{font-size:11px;color:#5A6675;font-variant-numeric:tabular-nums}
/* Column sub-labels: the gloss that makes a header word usable without the Guide. */
.dvr-sub{display:block;font-size:9.5px;font-weight:400;letter-spacing:.02em;
  text-transform:none;color:#4C5766;margin-top:2px;white-space:nowrap}
.dvr-link{color:var(--ink);text-decoration:none;border-bottom:1px dotted transparent}
.dvr-link:hover{color:var(--gold);border-bottom-color:var(--gold)}
.tkr-div .tkr-about-lab{color:var(--gold)}
#tkr-div-txt{font-family:'Inter',sans-serif;font-size:12px;line-height:1.55;color:#c9d2dc}
#tkr-div-txt a{color:var(--gold)}

/* "show all N names" — the sector drill defaults to the leaders (see renderDrill). This is
   the way back to the full list; nothing is ever deleted, just folded. */
.drill-more{display:block;width:100%;margin:8px 0 2px;padding:8px 10px;background:var(--panel2);
  border:1px solid var(--line2);border-radius:8px;color:var(--dim);cursor:pointer;
  font-family:'Inter',sans-serif;font-size:11.5px;letter-spacing:.02em}
.drill-more:hover{border-color:var(--gold);color:var(--gold)}

/* ── Weekly Flow (2026-08-20) ─────────────────────────────────────────────
   The missing rung on the time ladder: now -> THIS WEEK -> quarter -> race.
   Design approved by JD after four mockups; sparklines and a fan chart were
   both rejected (a shared scale flattens ten sectors into wallpaper). Bars
   carry the SIZE, day chips carry HOW IT DEVELOPED — two marks, two jobs.
   Colours come from the rotation vocabulary already in use (--rgreen/--rred)
   so this panel and the heatmap speak the same language. */
#p-weekflow .phead{flex-wrap:wrap}
.wf-chip{font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.09em;
  color:#B8A273;border:1px solid rgba(216,178,74,.38);border-radius:999px;
  padding:3px 8px;white-space:nowrap}
.wf-topline{display:flex;gap:9px;padding:11px 15px 3px}
.wf-tbar{width:3px;border-radius:2px;background:var(--gold);flex:none}
.wf-ttxt{font-size:12.5px;font-weight:600;color:#E4D5AC;line-height:1.45}

.wf-cols,.wf-row{display:grid;
  grid-template-columns:17px 92px minmax(0,1fr) 52px 78px 142px;gap:9px;align-items:center}
.wf-cols{padding:9px 15px 5px;font-family:'JetBrains Mono',monospace;font-size:8px;
  letter-spacing:.1em;color:#4E5866}
.wf-cols :nth-child(4){text-align:right}
.wf-dayhdr{display:flex;justify-content:space-between;padding:0 1px;letter-spacing:0}
.wf-row{padding:6px 15px;border-top:1px solid #17202C;grid-template-areas:"rk tk bar pct days rar"}
.wf-row.lead{background:linear-gradient(90deg,rgba(216,178,74,.07),transparent 60%)}
.wf-rk{grid-area:rk;font-family:'JetBrains Mono',monospace;font-size:9.5px;color:#4E5866;text-align:center}
.wf-row.lead .wf-rk{color:var(--gold)}
.wf-tk{grid-area:tk;min-width:0;cursor:pointer;font-weight:700;font-size:12px;color:#E8EEF4;line-height:1.12}
.wf-tk .nm{display:block;font-size:9px;color:var(--mut);font-weight:400;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wf-tk:hover{color:var(--gold)}

/* diverging bar — one scale for every row, zero pinned at the centre */
.wf-bar{grid-area:bar;position:relative;height:9px;min-width:0}
.wf-bar .z{position:absolute;left:50%;top:-4px;width:1px;height:17px;background:#2A3445}
.wf-bar i{position:absolute;top:0;height:9px;border-radius:2px}
.wf-bar i.up{left:50%;background:linear-gradient(90deg,rgba(43,213,118,.5),var(--rgreen))}
.wf-bar i.dn{right:50%;background:linear-gradient(270deg,rgba(255,90,110,.5),var(--rred))}
.wf-bar i.up.fl,.wf-bar i.dn.fl{background:#5A6576}   /* flat mutes COLOUR only — side still follows the sign */
.wf-row.lead .wf-bar i.up{background:linear-gradient(90deg,rgba(216,178,74,.5),var(--gold))}

.wf-pct{grid-area:pct;font-family:'JetBrains Mono',monospace;font-size:11px;text-align:right;
  font-variant-numeric:tabular-nums;white-space:nowrap}
.wf-pct.up{color:var(--rgreen)} .wf-pct.dn{color:var(--rred)} .wf-pct.fl{color:var(--mut)}
.wf-row.lead .wf-pct{color:var(--gold)}

.wf-meta{display:contents}
.wf-days{grid-area:days;display:flex;gap:3px}
.wf-days i{flex:1;height:12px;border-radius:3px;background:#1A2331}
.wf-days i.off{background:none;border:1px dashed #253044}

.wf-rar{grid-area:rar;min-width:0}
.wf-rar .lbl .sm{display:none}
.wf-rar .lbl{display:block;font-family:'JetBrains Mono',monospace;font-size:8.5px;color:#8C97A6;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}
.wf-rar .tr{display:block;position:relative;height:3px;border-radius:2px;background:#1B2432;margin-top:4px}
.wf-rar .tr .mid{position:absolute;left:50%;top:-2px;width:1px;height:7px;background:#333E52}
.wf-rar .tr .dot{position:absolute;top:-2.5px;width:8px;height:8px;border-radius:50%;
  background:var(--gold);transform:translateX(-50%);box-shadow:0 0 0 2.5px rgba(216,178,74,.16)}

.wf-foot{font-size:9px;color:#616B7A;line-height:1.5;padding:9px 15px 11px;border-top:1px solid #17202C}
.wf-foot b{color:#8C97A6;font-weight:600}

/* collapsible heatmap — same idiom as the intraday race (setups-head/caret) */
.hm-head{cursor:pointer;user-select:none}
.hm-head .s{flex:1;text-align:right;overflow:hidden;text-overflow:ellipsis}
.hm-head:hover .t{color:var(--gold)}

/* PHONE: the row folds to three lines so the 52-week context can never run
   off the screen. JD's explicit requirement 2026-08-20. */
@media (max-width:720px){
  .wf-cols{display:none}
  .wf-row{grid-template-columns:17px minmax(0,1fr) 64px;
    grid-template-areas:"rk tk pct" ". bar bar" ". meta meta";row-gap:5px}
  .wf-meta{display:flex;grid-area:meta;align-items:center;gap:9px;min-width:0}
  .wf-days{flex:none;width:88px}
  .wf-rar{flex:1}
  .wf-rar .lbl .lg{display:none}    /* long form off */
  .wf-rar .lbl .sm{display:inline}  /* "weaker than 36 of 52 wks" -> "weaker 36/52" */
}

/* Trade record — JD's sketch 2026-08-20: ticker | call/put | profit or loss. */
.rec-tbl{width:100%;border-collapse:collapse;font-size:12px;margin:2px 0 4px}
.rec-tbl th{font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.11em;
  color:#4E5866;text-align:left;font-weight:400;padding:4px 10px;border-bottom:1px solid #1E2835}
.rec-tbl th.r,.rec-tbl td.r{text-align:right}
.rec-tbl td{padding:7px 10px;border-bottom:1px solid #141C27;vertical-align:top}
.rec-tbl tbody tr:hover{background:rgba(255,255,255,.02)}
.rec-tbl td.r{font-family:'JetBrains Mono',monospace;font-variant-numeric:tabular-nums;
  font-size:12.5px;white-space:nowrap}
.rec-tbl .pos{color:var(--rgreen)} .rec-tbl .neg{color:var(--rred)}
.rec-d{display:block;font-family:'JetBrains Mono',monospace;font-size:8.5px;color:#4E5866;margin-top:2px}
.rec-w{color:#B8C2D0}
.rec-b{display:block;font-family:'JetBrains Mono',monospace;font-size:8.5px;color:#4E5866;margin-top:2px}
.rec-tbl tfoot td{border-top:1px solid #1E2835;border-bottom:none;padding-top:8px;
  font-family:'JetBrains Mono',monospace;font-size:10px;color:#8C97A6}

/* Updates board: recent releases open, the rest behind one button (JD 2026-08-21).
   29 entries back to July 7 buried the newest one, which is the entry a customer
   opens the panel to read. */
.upd-more{display:block;width:100%;margin:14px 0 4px;padding:11px 14px;text-align:left;
  background:rgba(216,178,74,.05);border:1px solid rgba(216,178,74,.32);border-radius:9px;
  color:var(--gold);font-family:'Inter',sans-serif;font-size:12.5px;font-weight:600;
  letter-spacing:.01em;cursor:pointer}
.upd-more:hover{background:rgba(216,178,74,.11);border-color:rgba(216,178,74,.55)}
.upd-more-sub{display:block;margin-top:3px;font-family:'JetBrains Mono',monospace;
  font-size:9.5px;font-weight:400;color:var(--mut);letter-spacing:.03em}
.upd-since{margin:18px 0 2px;padding-top:12px;border-top:1px solid var(--line);
  font-family:'JetBrains Mono',monospace;font-size:8.5px;letter-spacing:.13em;
  text-transform:uppercase;color:#4E5866}

/* ── Nav fold: Reads + Rooms menus (JD 2026-08-21) ────────────────────────────
   The bar carried 12 buttons and scrolled sideways, so Bearish and Insiders were
   off screen. Two menus take it to 7. The folded buttons stay in the DOM — every
   handler, tier lock and deep link targets them by id — they just stop painting. */
.navfolded{display:none !important}

.navmenu{position:relative;display:inline-block}
.navmenu-car{font-size:9px;margin-left:5px;opacity:.75}
.navmenu-btn.open{background:rgba(216,178,74,.16);border-color:var(--gold);color:var(--gold2)}

/* position:FIXED, not absolute. .topright carries `overflow:auto hidden` for the
   horizontal scroll, and overflow-y:hidden clips an absolutely-positioned child to the
   bar's own ~40px height — the menu reported a real 398x420 box and painted nothing
   (caught in local verification 2026-08-21). Fixed escapes every clipping ancestor;
   openNavMenu() sets top/left from the button's rect. */
.navmenu-pop{position:fixed;width:340px;z-index:600;
  background:var(--panel);border:1px solid var(--line2);border-radius:12px;
  box-shadow:0 18px 44px rgba(0,0,0,.62);overflow:hidden;text-align:left}
.navmenu-pop.wide{width:398px}
/* FALLBACK (2026-10-06, web/monitor.js): when a menu opens but is not really on screen, or
   sits where Safari clips it, app.js moves it straight under <body> and adds .dm-sheet:
   centred, above everything, scrolling inside itself. !important because the menu's own
   top/left are inline styles placed from the button. */
.navmenu-pop.dm-sheet{left:50%!important;top:64px!important;transform:translateX(-50%);
  z-index:2147483000;max-height:calc(100vh - 84px);overflow-y:auto}
.nmp-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  padding:10px 14px 9px;border-bottom:1px solid var(--line)}
.nmp-head .t{font-family:'Archivo',sans-serif;font-weight:700;font-size:10.5px;
  letter-spacing:.13em;text-transform:uppercase;color:#E8EEF4}
.nmp-head .s{font:8.5px 'JetBrains Mono',monospace;color:var(--dim);white-space:nowrap}
.nmp-grp{padding:9px 14px 3px;font:8px 'JetBrains Mono',monospace;letter-spacing:.13em;
  text-transform:uppercase;color:#4E5866}
.nmp-row{display:flex;align-items:flex-start;gap:11px;padding:9px 14px;cursor:pointer;
  border-left:2px solid transparent}
.nmp-row:hover{background:rgba(255,255,255,.032);border-left-color:var(--gold)}
.nmp-ic{width:20px;display:flex;align-items:flex-start;justify-content:center;flex:none;padding-top:1px}
.nmp-ic.emo{font-size:13px;line-height:1.3}
.nmp-tx{min-width:0;flex:1}
.nmp-nm{display:block;font-size:12.5px;font-weight:650;color:#E8EEF4;line-height:1.25}
.nmp-ds{display:block;font-size:10.5px;color:var(--mut);line-height:1.42;margin-top:2px}
.nmp-tag{font:7.5px 'JetBrains Mono',monospace;letter-spacing:.09em;padding:2px 6px;
  border-radius:999px;white-space:nowrap;flex:none;margin-top:2px}
.nmp-tag.free{color:#6d7686;border:1px solid #2b3546}
.nmp-tag.edge{color:#7fb2d9;border:1px solid rgba(127,178,217,.4)}
.nmp-tag.pro{color:var(--gold);border:1px solid rgba(216,178,74,.45)}
.nmp-foot{padding:8px 14px 10px;border-top:1px solid var(--line);
  font:9px/1.5 'JetBrains Mono',monospace;color:#5a6576}

@media(max-width:620px){
  .navmenu-pop,.navmenu-pop.wide{width:min(94vw,398px)}
}

/* LEADING, MACRO DISAGREES (2026-09-08): gold, between rotating-in green and NO READ grey. */
.conv-zone.lead{color:rgba(216,178,74,.85)}
.conv-zone.lead::after{background:rgba(216,178,74,.25)}
.neutral-pill.lead{color:var(--gold,#d4af37);border-color:rgba(216,178,74,.6);background:rgba(216,178,74,.08)}
.conv-val.lead{color:var(--gold,#d4af37);font-weight:600}

/* calendar-aware week (2026-09-08): a closed day is struck through, never left looking "not yet" */
.wf-days i.hol{background:transparent!important;border:1px dashed #3A4556;position:relative;opacity:.8}
.wf-days i.hol::after{content:"";position:absolute;left:12%;right:12%;top:50%;height:1px;background:#5A6576;transform:rotate(-45deg)}
.wf-dayhdr .hol{color:#4E5866;text-decoration:line-through;cursor:help}

/* Lenses, operator only (2026-09-28): size/style/biotech scored like the sector cards. */
.lens-tbl{width:100%;border-collapse:collapse;font-size:12px}
.lens-tbl th{text-align:left;font-weight:600;color:#5A6675;font-size:9.5px;letter-spacing:.06em;padding:5px 6px;border-bottom:1px solid var(--line2)}
.lens-tbl th.r,.lens-tbl td.r{text-align:right;font-family:'JetBrains Mono',monospace;font-variant-numeric:tabular-nums}
.lens-tbl td{padding:7px 6px;border-bottom:1px solid #17202C;color:#DCE3EC}
.lens-tbl td.lens-tk b{font-weight:700;color:#E8EEF4;margin-right:7px}
.lens-tbl td.lens-tk span{color:var(--mut);font-size:11px}
.lens-tbl .pos{color:var(--rgreen)} .lens-tbl .neg{color:var(--rred)} .lens-tbl .mut{color:var(--mut)}

/* ON DECK: the Bullish / Bearish switch (the board's On Deck pane AND the room) and the On Deck room
   (rotator/web/ondeck.html, 2026-10-15). New rules only; colours are the app's own variables, the up/down tints the
   rgba forms of --rgreen / --rred already used above (.er-read, .side-badge). */
.od-sw{display:inline-flex;flex:none;border:1px solid var(--line2);border-radius:8px;overflow:hidden;background:var(--panel2)}
.od-sw button{font:600 11px/1 'Inter',sans-serif;letter-spacing:.02em;color:var(--mut);background:transparent;border:0;
  padding:7px 12px;cursor:pointer;white-space:nowrap}
.od-sw button+button{border-left:1px solid var(--line2)}
.od-sw button b{font-family:'JetBrains Mono',monospace;font-weight:700;margin-left:3px;color:var(--ink)}
.od-sw button.bull.on{color:var(--rgreen);background:rgba(43,213,118,.12)}
.od-sw button.bear.on{color:var(--rred);background:rgba(255,90,110,.12)}
.od-sw button.on b{color:inherit}
.od-sw button:focus-visible{outline:1px solid var(--gold);outline-offset:-2px}
.od-swrow{display:flex;justify-content:flex-end;padding:8px 0 2px}
.od-tag.nc{border-style:dashed;color:var(--dim)}
.od-room-link{display:inline-block;margin:10px 0 2px;color:var(--gold);text-decoration:none;font-size:11px;
  border:1px solid var(--line2);border-radius:6px;padding:5px 10px}
.od-room-link:hover{border-color:var(--gold)}

.odr .panel{margin-bottom:12px}
.odr-head{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px;padding:12px 12px 4px}
.odr-ttl{min-width:0;flex:1 1 200px}
.odr-h1{font-family:'Archivo',sans-serif;font-weight:800;font-size:20px;letter-spacing:.04em;color:var(--gold2);line-height:1.15}
.odr-asof{font-size:11px;color:var(--mut);margin-top:4px;line-height:1.45}
.odr-chips,.odr-kinds{display:flex;flex-wrap:wrap;gap:6px;padding:10px 0 4px}
.odr-chip{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px;font-size:11px;color:var(--mut);background:none;
  border:1px solid var(--line2);border-radius:9px;padding:5px 9px;cursor:pointer;text-align:left;max-width:100%}
.odr-chip:hover{border-color:var(--gold)}
.odr-chip.on{background:rgba(216,178,74,.10);border-color:var(--gold);color:var(--gold2)}
.odr-cn{white-space:nowrap}
.odr-cn b{font-family:'JetBrains Mono',monospace;color:var(--ink);margin-left:2px}
.odr-chip.on .odr-cn b{color:var(--gold2)}
.odr-cr{font-size:9.5px;color:var(--mut);font-family:'JetBrains Mono',monospace;white-space:nowrap}
.odr-cr.pos{color:var(--pos)} .odr-cr.neg{color:var(--neg)}
.odr-called{font-style:normal;color:var(--gold);border:1px solid rgba(216,178,74,.5);border-radius:4px;padding:0 4px;margin-left:2px}
.odr-help{font-size:10.5px;color:var(--mut);line-height:1.55;padding:6px 0}
.odr-help b{color:var(--ink);font-weight:600}
.odr-empty{color:var(--mut);font-size:12px;padding:8px 0}
.odr-row{padding:8px 4px;border-bottom:1px solid var(--line);cursor:pointer;border-radius:6px}
.odr-row:hover,.odr-row.open{background:var(--panel2)}
.odr-row:focus-visible{outline:1px solid var(--gold);outline-offset:-1px}
.odr-r1{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 8px;min-width:0}
.odr-r1 .tk-link{font-family:'Archivo',sans-serif;font-size:14.5px;font-weight:800;color:#E8EEF4;letter-spacing:.02em}
.odr-sec{font-size:11px;color:var(--mut)}
.odr-day{margin-left:auto;font-family:'JetBrains Mono',monospace;font-size:10.5px;color:var(--mut);white-space:nowrap}
.odr-day.new{color:var(--gold2)}
.odr-dir{font-size:13px;line-height:1;align-self:center}
.odr-dir.up{color:var(--pos)}
.odr-dir.dn{color:var(--neg)}
.odr-rw{margin-top:3px;font-size:11.5px;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.odr-pt{margin-left:8px;padding:2px 10px;font-size:11px;vertical-align:middle}
.odr-row .od-tags{margin-top:5px}
.odr-card{margin:2px 0 10px;padding:10px 12px;background:var(--bg2);border:1px solid var(--line2);border-radius:8px}
.odr-ch{display:block;width:100%;height:auto;max-width:460px}
.odr-ch .px{fill:none;stroke:var(--gold2);stroke-width:1.5;stroke-linejoin:round}
.odr-ch .lv{stroke:var(--mut);stroke-width:1;stroke-dasharray:4 3}
.odr-ch .en{stroke:var(--improv);stroke-width:1;stroke-dasharray:2 3}
.odr-ch .enp{fill:var(--improv)} .odr-ch .lp{fill:var(--ink)}
.odr-ch text{fill:var(--mut);font-family:'JetBrains Mono',monospace;font-size:9px}
.odr-ch .ent{fill:var(--improv)} .odr-ch .lpt{fill:var(--ink)}
.odr-why{font-size:12.5px;color:var(--ink);line-height:1.55;margin:8px 0}
.odr-nh{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--dim);font-family:'JetBrains Mono',monospace;margin-top:4px}
.odr-next{list-style:none;margin:4px 0 6px;padding:0}
.odr-next li{padding:5px 0;border-bottom:1px solid var(--line);font-size:12px;line-height:1.45}
.odr-next li b{color:var(--ink);font-weight:600;display:block}
.odr-next li small{color:var(--mut);font-size:10.5px}
.odr-cnote{font-size:10.5px;color:var(--mut);line-height:1.5;margin:6px 0 0}
.odr-call{color:var(--weak)}
.odr-cload,.odr-cerr{font-size:11px;color:var(--mut);padding:4px 0}
.odr-folds{padding-top:0}
.odr-fold{border-top:1px solid var(--line);padding:8px 0}
.odr-fold summary{cursor:pointer;font-size:11.5px;color:var(--ink);letter-spacing:.02em}
.odr-fold summary:focus-visible{outline:1px solid var(--gold)}
.odr-mvchips{display:flex;flex-wrap:wrap;gap:6px 10px;padding:8px 0 2px;font-family:'JetBrains Mono',monospace;font-size:12px}
.odr-prow{padding:8px 4px;border-bottom:1px solid var(--line)}
.odr-kind{font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;border-radius:4px;padding:1px 6px;
  border:1px solid var(--line2);color:var(--mut)}
.odr-kind.called{color:var(--gold2);border-color:rgba(216,178,74,.5)}
.odr-what{font-size:12px;color:var(--ink);margin-top:4px;line-height:1.45}
.odr-out{font-size:11px;color:var(--mut);margin-top:3px;line-height:1.5}
.odr-out b.pos{color:var(--pos)} .odr-out b.neg{color:var(--neg)}
.odr-wait{color:var(--dim)}
.odr-more{margin-top:10px;font-size:11px;color:var(--gold);background:none;border:1px solid var(--line2);border-radius:6px;
  padding:6px 12px;cursor:pointer}
.odr-more:hover{border-color:var(--gold)}
.odr-sl{display:grid;grid-template-columns:20px minmax(0,1fr) auto 34px;gap:8px;align-items:center;padding:10px 4px;
  border-bottom:1px solid var(--line);cursor:pointer;border-radius:6px}
.odr-sl:hover,.odr-sl.open{background:var(--panel2)}
.odr-sl:focus-visible{outline:1px solid var(--gold);outline-offset:-1px}
.odr-sv{color:var(--gold);font-size:16px;line-height:1;text-align:center}
.odr-sn{font-size:13.5px;font-weight:600;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.odr-sr .odr-cr{font-size:11px}
.odr-sc{font-family:'JetBrains Mono',monospace;font-size:13px;color:var(--ink);text-align:right}
.odr-sb{padding:0 0 8px 24px}
.odr-sb .odr-row{padding:7px 4px}
.odr-how{font-size:11px;color:var(--mut);line-height:1.65;padding:4px 4px 28px}
.odr-how b{color:var(--ink);font-weight:600}
@media(max-width:620px){
  .odr-head{padding:10px 10px 2px}
  .odr-h1{font-size:18px}
  .od-sw button{padding:7px 10px}
  .odr-card{padding:8px}
}
