
/* Layout: newsroom masthead + live ticker band, then a trading desk grid (watchlist | chart terminal), then movers, news, smart money, calendar */
:root{
  --bg:#ffffff; --surface:#f5f7fa; --line:#e3e8ef; --ink:#0c1a2e; --muted:#5b6b80;
  --accent:#0a4fa3; --accent-soft:#e8f0fb; --band:#0c1a2e; --band-ink:#ffffff;
  --up:#00843d; --up-soft:#e5f4ec; --down:#d0201b; --down-soft:#fbe9e8; --flat:#6b7a8f;
  --f-display:"Archivo","Arial Narrow",Arial,sans-serif;
  --f-body:"IBM Plex Sans",-apple-system,"Segoe UI",Roboto,sans-serif;
  --f-data:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,monospace;
  --r:6px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0b1220; --surface:#121b2c; --line:#22304a; --ink:#e8eef7; --muted:#93a3ba;
  --accent:#5aa2ff; --accent-soft:#16284a; --band:#050a14; --band-ink:#ffffff;
  --up:#2fcf7b; --up-soft:#0f2f20; --down:#ff5a52; --down-soft:#3a1514; --flat:#8796ab; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0b1220; --surface:#121b2c; --line:#22304a; --ink:#e8eef7; --muted:#93a3ba;
  --accent:#5aa2ff; --accent-soft:#16284a; --band:#050a14; --band-ink:#ffffff;
  --up:#2fcf7b; --up-soft:#0f2f20; --down:#ff5a52; --down-soft:#3a1514; --flat:#8796ab; color-scheme:dark}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:14px;line-height:1.5;margin:0}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--band)}
.wrap{max-width:1440px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
.num{font-family:var(--f-data);font-variant-numeric:tabular-nums}
.up{color:var(--up)} .down{color:var(--down)} .flat{color:var(--flat)}
button{font:inherit;color:inherit;cursor:pointer}
button:focus-visible,a:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
a{color:var(--accent)}

/* Ticker band */
.ticker{position:sticky;top:env(safe-area-inset-top,0px);z-index:9;background:var(--band);color:var(--band-ink);border-bottom:3px solid var(--accent);overflow:hidden}
.ticker-row{display:flex;align-items:stretch}
.live{flex:none;display:flex;align-items:center;gap:6px;padding:0 12px 0 max(12px,env(safe-area-inset-left,0px));background:var(--accent);font:700 11px var(--f-display);letter-spacing:.1em;text-transform:uppercase;color:#fff}
.live i{width:7px;height:7px;border-radius:50%;background:#fff;animation:pulse 1.6s infinite}
@keyframes pulse{50%{opacity:.25}}
.track{flex:1;overflow:hidden;mask-image:linear-gradient(90deg,transparent,#000 24px,#000 calc(100% - 24px),transparent)}
.belt{display:flex;width:max-content;animation:belt var(--dur,120s) linear infinite}
.ticker:hover .belt{animation-play-state:paused}
@keyframes belt{to{transform:translateX(-50%)}}
.tk{display:flex;align-items:baseline;gap:8px;padding:9px 18px;border-right:1px solid rgba(255,255,255,.12);white-space:nowrap;font-family:var(--f-data);font-size:13px;background:none;border-top:0;border-bottom:0;border-left:0;color:#fff}
.tk b{font-family:var(--f-display);font-weight:700;letter-spacing:.02em}
.tk .u{color:#3ee08a} .tk .d{color:#ff6b63}
.tk .arr{font-size:10px}
@media (prefers-reduced-motion:reduce){.belt{animation:none}.track{overflow-x:auto}}

/* Masthead */
.mast{border-bottom:1px solid var(--line)}
.mast .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding-block:18px}
.brand{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.brand h1{margin:0;font:800 30px/1 var(--f-display);letter-spacing:-.02em;text-transform:uppercase}
.brand h1 span{color:var(--accent)}
.brand p{margin:0;color:var(--muted);font-size:13px}
.status{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.sess{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;font-size:12px;white-space:nowrap}
.sess i{width:7px;height:7px;border-radius:50%;background:var(--flat)}
.sess.open i{background:var(--up)} .sess.open{border-color:var(--up);color:var(--up)}
.asof{font-size:12px;color:var(--muted)}

.tabs{display:flex;gap:4px;flex-wrap:wrap;padding-block:12px}
.tab{border:1px solid var(--line);background:var(--bg);padding:6px 14px;border-radius:999px;font-weight:600;font-size:13px}
.tab[aria-pressed="true"]{background:var(--ink);color:var(--bg);border-color:var(--ink)}

h2{font:800 15px var(--f-display);text-transform:uppercase;letter-spacing:.06em;margin:0;display:flex;align-items:center;gap:10px}
h2::before{content:"";width:4px;height:16px;background:var(--accent)}
.sechead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:12px}
.sub{color:var(--muted);font-size:12px}
section{padding-block:20px;border-bottom:1px solid var(--line)}

/* Index board */
.idx-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.idx{background:var(--bg);padding:10px 12px;display:grid;gap:2px}
.idx .n{font-size:12px;font-weight:600;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.idx .p{font-size:18px;font-weight:600}
.idx .c{font-size:12px}
.idx .bar{height:3px;border-radius:2px;background:var(--surface);margin-top:4px;position:relative;overflow:hidden}
.idx .bar i{position:absolute;top:0;bottom:0;left:50%}
.summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin-top:14px}
.summary div{min-width:0}
.summary h3{margin:0 0 4px;font:700 12px var(--f-display);text-transform:uppercase;letter-spacing:.08em;color:var(--accent)}
.summary p{margin:0;max-width:62ch}

/* Desk */
.desk{display:grid;grid-template-columns:minmax(0,380px) minmax(0,1fr);gap:16px}
@media (max-width:980px){.desk{grid-template-columns:1fr}}
.panel{border:1px solid var(--line);border-radius:var(--r);background:var(--bg);min-width:0}
.panel-h{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--line)}
.wl{max-height:640px;overflow:auto}
table{width:100%;border-collapse:collapse}
.wl th{position:sticky;top:0;background:var(--surface);text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:7px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.wl th button{background:none;border:0;padding:0;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit}
.wl th.r,.wl td.r{text-align:right}
.wl td{padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.wl tr{cursor:pointer}
.wl tbody tr:hover{background:var(--surface)}
.wl tr.sel{background:var(--accent-soft)}
.sym{font:700 13px var(--f-display)}
.nm{display:block;font-size:11px;color:var(--muted);max-width:140px;overflow:hidden;text-overflow:ellipsis}
.chip{display:inline-block;padding:1px 7px;border-radius:4px;font:600 11px var(--f-data)}
.chip.up{background:var(--up-soft)} .chip.down{background:var(--down-soft)} .chip.flat{background:var(--surface)}
.score{display:inline-flex;align-items:center;gap:4px;font:600 11px var(--f-data);color:var(--muted)}
.score i{display:block;width:34px;height:5px;border-radius:3px;background:var(--surface);overflow:hidden;position:relative}
.score i b{position:absolute;inset:0 auto 0 0;background:var(--accent)}

.term-h{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:12px;padding:14px 16px 8px}
.term-h .t{font:800 26px/1.1 var(--f-display)}
.term-h .t small{font:500 13px var(--f-body);color:var(--muted);margin-left:8px}
.px{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.px .big{font:600 30px var(--f-data)}
.tf{display:flex;gap:2px;border:1px solid var(--line);border-radius:var(--r);padding:2px}
.tf button{border:0;background:none;padding:4px 10px;border-radius:4px;font:600 12px var(--f-data)}
.tf button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.chart{height:380px;margin:0 8px;position:relative}
.legend{display:flex;flex-wrap:wrap;gap:14px;padding:6px 16px;font-size:12px;color:var(--muted)}
.legend span::before{content:"";display:inline-block;width:14px;height:0;border-top:2px solid var(--c);margin-right:6px;vertical-align:middle}
.legend .dash::before{border-top-style:dashed}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:1px;background:var(--line);border-top:1px solid var(--line)}
.stats div{background:var(--bg);padding:10px 14px}
.stats dt{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.stats dd{margin:0;font:600 15px var(--f-data)}
.insight{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;padding:16px;border-top:1px solid var(--line)}
.insight > div{min-width:0}
.insight h3{margin:0 0 8px;font:700 12px var(--f-display);text-transform:uppercase;letter-spacing:.08em}
.proj{display:grid;gap:6px}
.proj .row{display:flex;justify-content:space-between;gap:8px;border-bottom:1px dashed var(--line);padding-bottom:4px}
.verdict{display:inline-block;padding:3px 10px;border-radius:999px;font:700 12px var(--f-display);text-transform:uppercase;letter-spacing:.06em}
.verdict.up{background:var(--up-soft)} .verdict.down{background:var(--down-soft)} .verdict.flat{background:var(--surface);color:var(--muted)}
.mini-news{display:grid;gap:8px;margin:0;padding:0;list-style:none}
.mini-news a{font-weight:600;text-decoration:none;color:var(--ink)}
.mini-news a:hover{text-decoration:underline}
.ai-btn{border:1px solid var(--accent);color:var(--accent);background:var(--bg);border-radius:var(--r);padding:6px 12px;font-weight:600;font-size:13px}
.ai-btn:hover{background:var(--accent-soft)}
.ai-out{white-space:pre-wrap;font-size:13px;margin-top:8px;max-width:70ch}
.note{font-size:11px;color:var(--muted)}

/* Movers */
.movers{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.mv{border:1px solid var(--line);border-radius:var(--r);overflow:hidden}
.mv h3{margin:0;padding:8px 12px;font:700 12px var(--f-display);text-transform:uppercase;letter-spacing:.08em;color:#fff}
.mv.g h3{background:var(--up)} .mv.l h3{background:var(--down)}
.mv ol{list-style:none;margin:0;padding:0}
.mv li{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:2px 10px;padding:8px 12px;border-top:1px solid var(--line)}
.mv li p{grid-column:1/-1;margin:0;font-size:12px;color:var(--muted)}

/* News */
.news{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.story{border-top:3px solid var(--line);padding-top:10px;display:grid;gap:6px;align-content:start;min-width:0}
.story.bullish{border-top-color:var(--up)} .story.bearish{border-top-color:var(--down)}
.story .meta{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.story h3{margin:0;font:700 16px/1.3 var(--f-display);text-wrap:balance}
.story h3 a{color:var(--ink);text-decoration:none}
.story h3 a:hover{text-decoration:underline}
.story p{margin:0;font-size:13px}
.story .imp{color:var(--muted);font-size:12px}
.tags{display:flex;gap:4px;flex-wrap:wrap}
.tag{border:1px solid var(--line);background:var(--bg);border-radius:4px;padding:1px 6px;font:600 11px var(--f-data)}
.tag:hover{border-color:var(--accent);color:var(--accent)}
.sent{font-weight:700}

/* Smart money */
.sm-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.inv{border:1px solid var(--line);border-radius:var(--r);padding:14px;display:grid;gap:10px;align-content:start;min-width:0}
.inv header{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}
.inv h3{margin:0;font:800 17px var(--f-display)}
.inv .fund{font-size:12px;color:var(--muted)}
.inv .worth{text-align:right;font-size:11px;color:var(--muted)}
.inv .worth b{display:block;font:600 14px var(--f-data);color:var(--ink)}
.hold{display:grid;grid-template-columns:62px minmax(0,1fr) 48px 70px;gap:8px;align-items:center;font-size:12px}
.hold .bar{height:8px;background:var(--surface);border-radius:4px;overflow:hidden}
.hold .bar i{display:block;height:100%;background:var(--accent)}
.act{font:600 10px var(--f-data);text-transform:uppercase;padding:1px 5px;border-radius:3px;text-align:center;background:var(--surface);color:var(--muted)}
.act.new,.act.added{background:var(--up-soft);color:var(--up)}
.act.trimmed,.act.sold{background:var(--down-soft);color:var(--down)}
.inv .moves{font-size:12px;margin:0}
.consensus{margin-top:16px;border:1px solid var(--line);border-radius:var(--r);overflow-x:auto}
.consensus table td,.consensus table th{padding:8px 12px;border-bottom:1px solid var(--line);text-align:left;font-size:13px}
.consensus th{background:var(--surface);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}

/* Calendar */
.cal{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}
.ev{display:grid;grid-template-columns:64px minmax(0,1fr);gap:10px;align-items:start;border:1px solid var(--line);border-radius:var(--r);padding:10px}
.ev .d{font:700 12px var(--f-data);color:var(--accent);text-transform:uppercase}

.empty{padding:28px 16px;text-align:center;color:var(--muted)}
footer{padding-block:24px;color:var(--muted);font-size:12px}
footer p{max-width:90ch;margin:0 0 6px}
.banner{background:var(--accent-soft);border:1px solid var(--line);border-radius:var(--r);padding:10px 14px;font-size:13px;margin-top:12px}
