:root{
  /* LSEG Stock Reports Plus -- light report palette */
  --bg:#f4f5f7; --panel:#ffffff; --ink:#1a1d2b; --mut:#6b7280; --line:#e3e6ec;
  --track:#eef0f3; --hover:#f4f5f7; --accent:#fc6c30; --accentbg:#fff1ea; --topbar-h:50px;
  --data:#0c24b4;                                   /* LSEG chart/data blue */
  --pos:#3c9c28; --neg:#d80000; --neu:#9aa0aa;
  --posbg:#e8f4e3; --posink:#2e7d1f; --negbg:#fde4e4; --negink:#c01313; --neubg:#f1f2f4; --neuink:#6b7280;
}
*{box-sizing:border-box} html,body{margin:0}
body{background:var(--bg);color:var(--ink);font:14px/1.5 Arial,"Helvetica Neue","Segoe UI",system-ui,sans-serif}
.topbar{display:flex;align-items:center;gap:12px;height:var(--topbar-h);padding:0 20px;border-bottom:3px solid var(--accent);position:sticky;top:0;background:var(--panel);z-index:40}
.brand{font-weight:700;letter-spacing:.01em;color:var(--accent);display:flex;align-items:center;text-decoration:none}
.brandlogo{height:32px;width:auto;display:block}
.asof{color:var(--mut);font:12px ui-monospace,Consolas,monospace}
.rolewrap{margin-left:14px;color:var(--mut);font-size:12px}
.rolewrap select{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:3px;padding:3px 6px;margin-left:4px}
.tierwrap{font-size:13px;color:var(--ink)}
.tierwrap select{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:3px;padding:3px 6px;margin-left:4px}
/* rotation-cohort toggles (Energy/Industrials/Comm Services on/off) */
/* +Rotate cohort picker: now a Sector Tilt page-header control (see .pagehead-ctl / renderPage), not topbar */
.pagehead-ctl{margin-left:auto}
.cohort-ctl{display:inline-flex;align-items:center;gap:10px;color:var(--mut);font-size:12px;font-weight:400}
.cohort-lbl{font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:10px;color:var(--accent)}
.cohort-ctl label{display:inline-flex;align-items:center;gap:3px;cursor:pointer;white-space:nowrap}
.cohort-ctl input{accent-color:var(--accent);cursor:pointer;margin:0}
@media(max-width:820px){ .cohort-lbl{display:none} .cohort-ctl{gap:7px;font-size:11px} }
/* account context (institutional / taxable + RIA tax hurdle) */
/* account tax context -- now a trade-desk header control beside the horizon toggle (see .tax-sel near .hzn-sel) */
.tbk-tax{font-size:12px;color:var(--ink);background:var(--accentbg);border:1px solid var(--accent);border-radius:4px;padding:7px 10px;margin:8px 0 2px;line-height:1.45}
.tbk-univ{font-size:11px;color:var(--mut);margin:6px 0 2px}
/* delayed-delivery tier: the per-card banner + the per-alert age stamp on a delayed row */
.tier-banner{font-size:12px;color:var(--ink);background:var(--accentbg);border:1px solid var(--accent);border-radius:4px;padding:7px 10px;margin:8px 0 2px;line-height:1.45}
.tier-banner .tier-ic{color:var(--accent)}
.tier-banner .tier-note{color:var(--mut)}
.tier-age{color:var(--accent);font-weight:700}
.tbk-univ b{color:var(--ink)}
.tbk-flag{flex:0 0 auto;font-size:9px;font-weight:700;padding:1px 5px;border-radius:3px;letter-spacing:.04em}
.tbk-flag.trade{background:var(--posbg);color:var(--posink)} .tbk-flag.defer{background:var(--track);color:var(--mut)}
.tbk-defer{opacity:.5}
.tsig-flag{flex:0 0 auto;font-size:9px;font-weight:700;padding:1px 5px;border-radius:3px;letter-spacing:.04em}
.tsig-flag.trade{background:var(--posbg);color:var(--posink)} .tsig-flag.defer{background:var(--track);color:var(--mut)}
.tsig-defer{opacity:.5}
.ham{display:none;background:none;border:0;color:var(--ink);font-size:20px;cursor:pointer;padding:4px 8px;margin-left:-4px}
/* left sidebar */
.shell{display:flex;align-items:flex-start}
.sidebar{width:240px;flex:0 0 240px;position:sticky;top:var(--topbar-h);height:calc(100vh - var(--topbar-h));overflow:auto;border-right:1px solid var(--line);padding:8px;background:var(--panel)}
.nav-group{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);padding:13px 10px 4px}
.navitem{display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none;padding:9px 10px;border-radius:3px;min-height:44px;line-height:1.2;font-size:14px}
.navitem .ic{width:18px;height:18px;flex:0 0 18px;opacity:.7;color:var(--mut)}
.navitem:hover{color:var(--ink);background:var(--hover)}
.navitem:focus-visible,.ham:focus-visible,.rolewrap select:focus-visible,.btab:focus-visible,.backdrop:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
.navitem.active{color:var(--accent);font-weight:700;background:var(--accentbg);border-left:3px solid var(--accent);padding-left:7px}
.navitem.active .ic{opacity:1;color:var(--accent)}
.main{flex:1;min-width:0;padding:18px 20px;max-width:2200px}   /* fill wide monitors; was a narrow 1180 cap */
.pagehead{font-size:22px;font-weight:700;margin:0 0 14px;color:var(--ink);letter-spacing:0;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.backdrop{display:none}
/* Standard card-width system: the grid is a 3-unit row; each card spans 1x / 2x / full.
   .w1 = a third (three-up), .w2 = two-thirds (a mid card beside a 1x support), .wfull = the whole row.
   align-items:start -> cards keep their natural height (no stretch gaps). */
.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}
.card.w1{grid-column:span 1} .card.w2{grid-column:span 2} .card.wfull{grid-column:1/-1}
@media(max-width:980px){                       /* two columns: a 2x card takes the full row */
  .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .card.w2{grid-column:1/-1}
}
/* split layout: two INDEPENDENT stacking columns (2x main-theme cards left, 1x support cards right).
   Each column flows on its own so a short card never inherits dead space from a tall card opposite it. */
.split{display:flex;gap:16px;align-items:flex-start}
.split-col{display:flex;flex-direction:column;gap:16px;min-width:0}
.split-l{flex:2 1 0} .split-r{flex:1 1 0}
@media(max-width:980px){ .split{flex-direction:column} .split-l,.split-r{flex:1 1 auto;width:100%} }
.card{min-width:0;background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:14px;border-top:3px solid var(--accent);box-shadow:0 1px 2px rgba(20,25,45,.06)}
.card.tone-pos{border-top-color:var(--pos)} .card.tone-neg{border-top-color:var(--neg)} .card.tone-neu{border-top-color:var(--accent)}
.card-h{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;border-bottom:1px solid var(--line);padding-bottom:6px}
.card-t{font-weight:700;font-size:16px;text-transform:uppercase;letter-spacing:.02em} .card-d{margin-left:auto;color:var(--mut);font:12px ui-monospace,monospace}
.muted{color:var(--mut)} .muted code{color:var(--accent)}
/* the LSEG report-style header stats strip */
.statstrip{display:flex;flex-wrap:wrap;gap:0;margin:0 0 10px;border:1px solid var(--line);border-radius:4px;overflow:hidden}
.stat{flex:1 1 auto;min-width:96px;padding:5px 10px;border-right:1px solid var(--line)}
.stat:last-child{border-right:0}
.stat-k{color:var(--mut);font-size:10px;text-transform:uppercase;letter-spacing:.04em;display:block}
.stat-v{font-weight:700;font-size:14px;font-family:ui-monospace,Consolas,monospace}
/* the score badge system (red->amber->green) */
.scorebig{display:inline-flex;align-items:center;justify-content:center;width:46px;height:46px;border-radius:50%;color:#fff;font-weight:700;font-size:22px;flex:0 0 46px}
.scorehead{display:flex;align-items:center;gap:12px;margin:0 0 10px}
.scorehead .sh-t{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut)}
.scorehead .sh-v{font-size:14px;font-weight:700}
.scorecell{display:inline-block;min-width:24px;padding:1px 7px;border-radius:3px;color:#fff;font-weight:700;text-align:center}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0 10px}
.chip{display:inline-flex;flex-direction:column;background:var(--track);border:1px solid var(--line);border-radius:3px;padding:4px 8px;min-width:64px}
.ck{color:var(--mut);font-size:10px;text-transform:uppercase;letter-spacing:.03em}
.cv{font-weight:700;font:13px ui-monospace,Consolas,monospace}
.sub{color:var(--accent);font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;margin:12px 0 5px;border-bottom:1px solid var(--line);padding-bottom:3px}
table{width:100%;border-collapse:collapse;font:12px ui-monospace,Consolas,monospace}
th{text-align:left;color:var(--mut);font-weight:700;border-bottom:1px solid var(--line);padding:3px 6px;font-size:11px}
td{padding:3px 6px;border-bottom:1px solid var(--line)}
td.num{text-align:right;white-space:nowrap}
.tscroll{overflow-x:auto;max-width:100%}
.barwrap{display:inline-block;width:42px;height:7px;background:var(--track);border-radius:3px;overflow:hidden;vertical-align:middle;margin-right:6px}
.bar{display:block;height:100%} .bar.pos{background:var(--pos)} .bar.neg{background:var(--neg);float:right}
.barv{font-size:11px}
.meth{margin-top:10px;color:var(--mut);font-size:12px} .meth summary{cursor:pointer;color:var(--accent)}
.meth-lead{margin:6px 0 0}
.meth-gloss{margin:8px 0 0}
.meth-gloss dt{font-weight:700;color:var(--ink);font-size:12px;margin-top:7px}
.meth-gloss dd{margin:1px 0 0 0;color:var(--mut);font-size:12px;line-height:1.45}
.meth-src{color:var(--accent);white-space:nowrap;text-decoration:none} .meth-src:hover{text-decoration:underline}
.tos{margin-top:6px;border-top:1px solid var(--line);padding-top:6px}
.tos summary{cursor:pointer;color:var(--mut);font-size:10.5px;text-transform:uppercase;letter-spacing:.04em}
.tos p{color:var(--mut);font-size:10.5px;line-height:1.5;margin:6px 0 0}
.tos b{color:var(--ink)}
/* the message layer: lead sentence + stance pill + one chart */
.lead{font-size:15px;line-height:1.5;color:var(--ink);font-weight:700;margin:2px 0 10px}
.stancewrap{display:flex;align-items:center;gap:9px;margin:0 0 12px;flex-wrap:wrap}
.pill{display:inline-block;padding:3px 11px;border-radius:3px;font-size:12px;font-weight:700;letter-spacing:.01em;border:1px solid;text-transform:uppercase}
.pill.tone-pos{background:var(--posbg);color:var(--posink);border-color:var(--pos)}
.pill.tone-neg{background:var(--negbg);color:var(--negink);border-color:var(--neg)}
.pill.tone-neu{background:var(--neubg);color:var(--neuink);border-color:#c8c6c4}
.tchip{display:inline-block;margin-left:7px;padding:0 6px;border-radius:3px;font-size:10px;font-weight:700;letter-spacing:.02em;border:1px solid;vertical-align:middle;white-space:nowrap}
.tchip.ttrap{background:var(--negbg);color:var(--negink);border-color:var(--neg)}
.tchip.tsound{background:var(--posbg);color:var(--posink);border-color:var(--pos)}
.tchip.tinv{background:var(--posbg);color:var(--posink);border-color:var(--pos);box-shadow:0 0 0 1px var(--pos) inset}
.conv{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--mut)}
.conv-firm{color:var(--pos)} .conv-moderate{color:#b8860b} .conv-tentative{color:#c25e00}
.viz{margin:2px 0 10px}
.vsvg{width:100%;height:auto;display:block;font-family:inherit}
.vlbl{font-size:12px;fill:var(--ink)} .vval{font-size:11px;fill:var(--mut);font-family:ui-monospace,Consolas,monospace}
.vcap{font-size:11px;font-weight:700} .vcap.pos{fill:var(--pos)} .vcap.neg{fill:var(--neg)}
.vtick{font-size:10px;fill:var(--mut)} .vseg{font-size:11px;fill:#fff;font-weight:700}
.vlegend{display:flex;flex-wrap:wrap;gap:12px;margin-top:5px;font-size:11px;color:var(--mut)}
.vleg{display:inline-flex;align-items:center;gap:5px} .vdot{width:10px;height:10px;border-radius:2px;display:inline-block}
details.detail{margin-top:6px} details.detail>summary{cursor:pointer;color:var(--mut);font-size:12px}
details.detail[open]>summary{margin-bottom:6px}
@media(max-width:760px){
  .ham{display:block}
  .tierwrap,.rolewrap{display:none}                   /* dev/preview plan+role selectors -> hide so the topbar fits a phone */
  .topbar{gap:8px;padding:0 12px} .asof{font-size:11px}
  .sidebar{position:fixed;top:var(--topbar-h);left:-260px;bottom:0;height:auto;z-index:30;visibility:hidden;transition:left .2s ease,visibility .2s ease;box-shadow:2px 0 14px rgba(0,0,0,.25)}
  body.navopen .sidebar{left:0;visibility:visible}
  body.navopen .backdrop{display:block;position:fixed;inset:var(--topbar-h) 0 0 0;background:rgba(0,0,0,.3);z-index:20}
  .main{padding:14px;overflow-x:hidden}               /* no page-level horizontal scroll; wide tables scroll in .tbl-scroll */
  .grid{grid-template-columns:1fr}
  .card{min-width:0}                                  /* let cards shrink below content width (flex/grid children) */
  .card.w1,.card.w2,.card.wfull{grid-column:auto}     /* single column: every card stacks full-width */
}
/* wide tables scroll INSIDE their card (esp. mobile) instead of pushing the whole page sideways */
.tbl-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
@media(max-width:760px){
  .perf-sel{flex-wrap:wrap} .perf-sel .scard-date{min-width:0;flex:1 1 100%}   /* portfolio dropdown fits phone width */
  .scard-tbl th,.scard-tbl td{padding:5px 4px}                                  /* tighten the 9-col scorecard */
}

/* sector board: site theme. Width comes from the card-width system (defaults to 2x -> sits beside the
   1x sector-stance support); its charts (bsvg/vsvg) scale to width. */
.card.board{background:var(--panel);color:var(--ink);border-color:var(--line);border-top-color:var(--accent)}
.card.board .card-t{color:var(--ink)} .card.board .card-d{color:var(--mut)}
.card.board .chips{margin-bottom:4px}
.card.board .chip{background:var(--track);border-color:var(--line)} .card.board .ck{color:var(--mut)} .card.board .cv{color:var(--ink)}
.card.board .meth{color:var(--mut)} .card.board .meth summary{color:var(--accent)}

/* trade-desk horizon selector (Short | Long) in the trade-signals card header */
.hzn-sel{display:inline-flex;margin-left:10px;border:1px solid var(--line);border-radius:4px;overflow:hidden}
.hzn-btn{background:var(--panel);color:var(--mut);border:0;font:inherit;font-size:11px;font-weight:700;
  padding:3px 10px;cursor:pointer}
.hzn-btn.on{background:var(--accentbg);color:var(--accent)}
.hzn-btn:hover{color:var(--ink)}
/* account tax context: trade-desk header control, sits right beside the horizon toggle */
.tax-sel{display:inline-flex;align-items:center;gap:4px;margin-left:8px;color:var(--mut);font-size:11px}
.tax-sel select{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:3px 6px;font:inherit;font-size:11px;font-weight:700}
.tax-hurdle{display:inline-flex;align-items:center;gap:6px}
.tax-sel .tax-rate{width:90px;accent-color:var(--accent);cursor:pointer;vertical-align:middle;margin:0}
.tax-sel .tax-pct{font-size:11px;white-space:nowrap}
.tax-sel .tax-rate-val{color:var(--ink);font-weight:700}
/* trade-signal book: two-tone consumed/remaining bars (the entry-timing view) */
.tsig-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:11px;color:var(--mut);margin:9px 0 2px}
.tsig-key{display:inline-flex;align-items:center;gap:5px}
.tsig-sw{width:13px;height:10px;border-radius:2px;display:inline-block}
.tsig-sw.consumed{background:var(--track);border:1px solid var(--line)}
.tsig-sw.rem-long{background:var(--pos)} .tsig-sw.rem-short{background:var(--neg)}
.tsig-rows{display:flex;flex-direction:column;gap:10px;margin-top:8px}
.tsig-row{border-bottom:1px solid var(--line);padding-bottom:9px}
.tsig-row:last-child{border-bottom:0;padding-bottom:0}
.tsig-head{display:flex;align-items:center;gap:10px}
.tsig-name{flex:0 0 132px;font-weight:600;font-size:13px;min-width:0;line-height:1.2;overflow-wrap:break-word}
.tsig-pos{flex:0 0 auto;font-size:10px;font-weight:700;padding:2px 6px;border-radius:3px;letter-spacing:.04em}
.tsig-pos.pos-long{background:var(--posbg);color:var(--posink)} .tsig-pos.pos-short{background:var(--negbg);color:var(--negink)}
.tsig-lane{flex:1 1 auto;min-width:54px;display:flex;flex-direction:column;justify-content:center;gap:3px}
.tsig-alloc{display:block;font-size:11px;color:var(--mut);margin-top:4px}
.tsig-alloc b{color:var(--ink)}
.tsig-bar{height:15px;display:flex;border-radius:3px;overflow:hidden;min-width:3px}
.tsig-seg{height:100%;display:block}
.tsig-seg.consumed{background:var(--track)}
.tsig-seg.rem-long{background:var(--pos)} .tsig-seg.rem-short{background:var(--neg)}
/* the three stacked numbers on the right (total / left / range) -- coloured by direction for fast scan */
.tsig-nums{flex:0 0 auto;min-width:96px;display:flex;flex-direction:column;gap:1px}
.tsig-n{display:flex;justify-content:space-between;align-items:baseline;gap:8px;line-height:1.25}
.tsig-n i{font-style:normal;font-size:9.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut)}
.tsig-n b{font-size:12.5px;font-weight:700;font-variant-numeric:tabular-nums}
.tsig-n b.t-long{color:var(--posink)} .tsig-n b.t-short{color:var(--negink)}
.tsig-sub{font-size:11px;color:var(--mut);margin-top:5px;padding-left:142px}
.tsig-sub .tone-pos{color:var(--posink)} .tsig-sub .tone-neg{color:var(--negink)} .tsig-sub .tone-neu{color:var(--ink)}
/* rotation book: stacked buy/short lists (tax-free + tax-impacted) */
.tbk-h{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);font-weight:700;margin:11px 0 5px;border-bottom:1px solid var(--line);padding-bottom:3px}
.tbk-rows{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.tbk-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}   /* wrap gracefully in a tight column instead of crushing the name */
.tbk-size{flex:0 0 auto;min-width:30px;font-size:12px;font-weight:700;color:var(--accent)}
.tbk-peak{flex:0 0 auto;min-width:74px;text-align:right;font-size:10.5px;color:var(--mut);white-space:nowrap}
.tbk-name{flex:1 1 auto;font-size:13px;min-width:64px;line-height:1.2;overflow-wrap:break-word}   /* hold a word-width so names wrap at spaces, never letter-by-letter */
.tbk-pos{flex:0 0 auto;font-size:10px;font-weight:700;padding:1px 7px;border-radius:3px;letter-spacing:.03em}
.tbk-pos.pos-long{background:var(--posbg);color:var(--posink)} .tbk-pos.pos-short{background:var(--negbg);color:var(--negink)}
.tbk-pct{flex:0 0 auto;min-width:50px;text-align:right;font-size:12px;font-weight:700}
.tbk-pct.t-long{color:var(--posink)} .tbk-pct.t-short{color:var(--negink)}
.bconflict{font-size:12px;color:var(--accent);background:var(--accentbg);border:1px solid var(--line);border-radius:3px;padding:5px 9px;margin:4px 0 8px}
.btabs{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.btab{background:var(--track);border:1px solid var(--line);color:var(--mut);border-radius:3px;padding:5px 11px;cursor:pointer;font:inherit;font-size:13px}
.btab.on{background:var(--accentbg);color:var(--accent);border-color:var(--accent);font-weight:700}
.btab:hover{color:var(--ink)}
.bview{margin-top:6px}
/* Clerk auth gate: centered sign-in when signed out; hide the in-app controls until authenticated */
.authwrap{display:flex;justify-content:center;padding:48px 16px}
.userbtn{display:inline-flex;align-items:center;margin-left:4px}
.logout{margin-left:10px;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:3px;padding:4px 10px;font-size:12px;cursor:pointer}
.logout:hover{background:var(--hover);border-color:var(--accent)}
.logout:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
body.signedout .rolewrap,body.signedout .logout{display:none}
/* per-surface title + how-to-read caption shown at the top of every board/bond surface */
.bvhead{margin:2px 0 10px;padding-bottom:7px;border-bottom:1px solid var(--line)}
.bvhead-t{display:block;font-size:15px;font-weight:700;color:var(--ink);letter-spacing:0}
.bvhead-d{display:block;font-size:12px;color:var(--mut);margin-top:3px;line-height:1.5}
.bsvg{width:100%;height:auto;display:block;font-family:inherit}
.blabel{font-size:13px;fill:var(--ink);font-weight:700}
.bval{font-size:12px;fill:var(--mut);font-family:ui-monospace,Consolas,monospace}
.bval-in{fill:#fff;font-weight:700}
.btick{font-size:10px;fill:var(--mut)}
.qlab{font-size:13px;font-weight:700}
.qpt{font-size:11px;fill:var(--ink)}
.blegend{display:flex;gap:14px;margin:2px 0 6px;font-size:12px;color:var(--mut)}
.bleg{display:inline-flex;align-items:center;gap:5px}
.bdot{width:11px;height:11px;border-radius:50%;display:inline-block;border:1px solid rgba(0,0,0,.15)}
/* sector board header: one-line subtitle + 2-col at-a-glance summary grid */
.board-sub{margin:2px 0 6px;font-size:14px;color:var(--ink);font-weight:600}
.board-lead{margin:0 0 14px;font-size:13.5px;line-height:1.5;color:var(--ink)}   /* rubric+matrix summary (replaced the chip grid) */
.sbsum{display:grid;grid-template-columns:1fr 1fr;gap:7px 18px;margin:0 0 14px}
.sbsum-cell{display:flex;align-items:center;gap:10px;min-width:0}
.sbsum-lbl{flex:0 0 92px;text-align:center;padding:4px 8px;border-radius:3px;font-size:12px;font-weight:700;color:#fff;white-space:nowrap}
.sbsum-lbl.tone-pos{background:var(--pos)} .sbsum-lbl.tone-neg{background:#e08020} .sbsum-lbl.tone-neu{background:#9aa0aa}
.sbsum-val{font-size:13px;color:var(--ink);line-height:1.25}
@media(max-width:560px){.sbsum{grid-template-columns:1fr}}
/* rotation on/off toggle pill (next to a toggleable sector name, every board surface) */
.tog{display:inline-block;margin-left:7px;padding:1px 7px;border-radius:9px;border:1px solid var(--line);background:var(--track);color:var(--mut);font:inherit;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;cursor:pointer;vertical-align:middle}
.tog.on{background:var(--pos);border-color:var(--pos);color:#fff}
.tog:hover{border-color:var(--accent);color:var(--ink)}
.tog.on:hover{color:#fff;filter:brightness(1.06)}
.arow.aoff{opacity:.6} .arow.aoff .alabel{color:var(--mut)} .aoff-t{font-size:12px;color:var(--mut);font-style:italic}
/* allocation table (sector + bond Allocation views) */
.aprofrow{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:2px 0 10px}
.aprofrow .aprof{margin:0}
.engtog{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:3px;padding:4px 11px;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.engtog:hover{border-color:var(--accent)} .engtog.on{background:var(--accent);border-color:var(--accent);color:#fff}
.cwslider{display:flex;align-items:center;gap:8px;margin-left:auto;font-size:12px}
.cwslider label{color:var(--mut);white-space:nowrap}
.cwslider input[type=range]{width:130px;accent-color:var(--accent);cursor:pointer;vertical-align:middle}
.aprof{display:flex;gap:6px;margin:2px 0 10px}
.achip{background:var(--track);border:1px solid var(--line);color:var(--mut);border-radius:3px;padding:4px 11px;cursor:pointer;font:inherit;font-size:12px}
.achip.on{background:var(--accentbg);color:var(--accent);border-color:var(--accent);font-weight:700}
.achip:hover{color:var(--ink)}
.arows{display:flex;flex-direction:column}
.arow{display:flex;align-items:center;gap:8px;padding:3px 0;border-bottom:1px solid var(--line)}
.arow.ahead{font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--ink);padding-bottom:5px}
.arow.ahead .alane{justify-content:flex-start}
.alabel{flex:0 0 40%;font-size:13px;color:var(--ink);line-height:1.25;display:flex;align-items:center;gap:6px}
.aname{min-width:0;overflow-wrap:break-word} .alabel .tog{margin-left:auto;flex:0 0 auto}   /* toggles align in a column at the right of the label cell */
.alane{flex:1 1 auto;display:flex;align-items:center;gap:7px;min-width:0}
.abar{height:13px;background:var(--accent);border-radius:2px;min-width:2px;opacity:.8}
.aw{font-size:12px;font-family:ui-monospace,Consolas,monospace;color:var(--ink);font-weight:600;white-space:nowrap}
.atilt{flex:0 0 56px;text-align:right;font-size:12px;font-family:ui-monospace,Consolas,monospace;color:var(--mut)}
.atilt.t-long{color:var(--posink)} .atilt.t-short{color:var(--negink)}
.anm{flex:0 0 44px;text-align:right;font-size:12px;font-family:ui-monospace,Consolas,monospace;color:var(--mut)}
.afoot{margin-top:8px;font-size:11px;color:var(--mut);line-height:1.5}
/* accumulate / reduce — diverging rows, styled like the allocation table */
.acrows{display:flex;flex-direction:column;margin-top:4px}
.acrow{display:flex;align-items:center;gap:8px;padding:3px 0;border-bottom:1px solid var(--line)}
.acrow.achead{font-size:11px;color:var(--mut);text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--ink);padding-bottom:5px}
.acrow.acoff{opacity:.55} .acrow.acoff .alabel{color:var(--mut)}
.aclane{position:relative;flex:1 1 auto;height:15px;min-width:0}
.aclane .acmid{position:absolute;left:50%;top:-1px;bottom:-1px;width:1px;background:var(--mut);opacity:.6}
.acpole{position:absolute;top:1px;font-size:10px;font-weight:700;letter-spacing:.03em}
.acpole-r{left:25%;transform:translateX(-50%);color:var(--neg)}
.acpole-a{left:75%;transform:translateX(-50%);color:var(--pos)}
.acbar{position:absolute;top:1px;height:13px;border-radius:2px;opacity:.85}
.acbar.acadd{background:var(--pos)} .acbar.acred{background:var(--neg)}
.acflag{flex:0 0 100px;display:flex;justify-content:flex-end;align-items:center}
.acflag .tchip{margin-left:0}
.acval{flex:0 0 50px;text-align:right;font-size:12px;font-family:ui-monospace,Consolas,monospace;color:var(--mut)}
.acval.t-long{color:var(--posink)} .acval.t-short{color:var(--negink)}
.actog{font-size:10px;padding:0 6px;border-radius:9px;border:1px solid var(--line);cursor:pointer;color:var(--mut);margin-left:2px}
.actog.on{background:var(--pos);border-color:var(--pos);color:#fff}
/* Allocation table: the value-trap chip gets its own fixed column just left of the on/off toggle (always
   reserved, so the toggle aligns across rows whether or not a row has a chip). */
.arow .alabel{min-width:0;flex-basis:54%}   /* widen the label band (allocation/bond) to fit name + trap column + toggle */
.arow .alabel .aname{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.atrap{flex:0 0 78px;display:flex;justify-content:flex-end;align-items:center}   /* trap chip column, anchored just left of the toggle */
.atrap .tchip{margin-left:0}
/* bond tilt views */
.bgrp{display:flex;justify-content:space-between;align-items:baseline;margin:10px 0 3px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);border-bottom:1px solid var(--ink)}
.bgrp:first-child{margin-top:2px}
.bgrp-p{font-family:ui-monospace,Consolas,monospace;color:var(--ink)}
.bdur{font-style:normal;font-size:11px;color:var(--mut);font-family:ui-monospace,Consolas,monospace}
.bnum{display:flex;align-items:baseline;gap:9px;margin:4px 0 10px}
.bnum-v{font-size:30px;font-weight:800;color:var(--ink);line-height:1}
.bnum-l{font-size:12px;color:var(--mut)}
.bsub{font-size:12px;color:var(--mut);margin:4px 0 6px}
.blegs{display:flex;gap:22px;margin:10px 0 2px;font-size:13px;color:var(--mut)}
.blegs b{font-family:ui-monospace,Consolas,monospace;color:var(--ink)}
.blegs b.t-long{color:var(--posink)} .blegs b.t-short{color:var(--negink)}
/* valuation ledger */
.ledhead{margin:6px 0 8px;font-size:13px;color:var(--mut)}
.ledhead select{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:3px;padding:3px 6px;margin-left:4px}
.ledsec{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);margin:10px 0 3px}
.ledrow{display:flex;align-items:center;gap:8px;padding:2px 0}
.ledlbl{width:170px;text-align:right;font-size:13px;color:var(--ink)}
.ledtrack{flex:1;height:18px;background:var(--track);border-radius:3px;overflow:hidden}
.ledfill{display:block;height:100%}
.ledval{width:34px;text-align:right;font:12px ui-monospace,Consolas,monospace;color:var(--ink)}
/* trend small multiples */
.sparks{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:6px}
.spark{background:var(--track);border:1px solid var(--line);border-radius:3px;padding:6px 8px}
.sparklbl{font-size:12px;color:var(--ink);margin-bottom:2px}
.spk{width:100%;height:auto;display:block}
/* sector stance: stance bar + search-result quotes with links */
/* stance cards flow as a normal grid cell so they sit SIDE-BY-SIDE beside the decision they support
   (Sector Tilt + sector stance, Factor + advisor stance). The quotes view reflows within the column. */
.card.stance{min-width:0}
.sttabs{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}
.sttab{display:inline-flex;align-items:center;gap:6px}
.sttab-dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.stbar{margin:4px 0 2px}
.stmeta{display:flex;align-items:center;gap:10px;margin:0 0 12px;flex-wrap:wrap}
.sresults{display:flex;flex-direction:column;gap:14px;max-width:760px}
.sresult{border-left:3px solid var(--line);padding:8px 12px;border-radius:0 4px 4px 0}
/* each sourced quote box is shaded by the publisher's direction (favored/out-of-favor); neutral stays plain */
.sresult.tone-pos{background:var(--posbg);border-left-color:var(--pos)}
.sresult.tone-neg{background:var(--negbg);border-left-color:var(--neg)}
.sr-h{display:flex;align-items:center;gap:6px;font-size:13px}
.sr-dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:0 0 9px}
.sr-pub{font-weight:600;color:var(--ink)} .sr-date{color:var(--mut);font-size:12px}
.sr-link{display:block;color:#1a7f37;font-size:12px;text-decoration:none;margin:1px 0;font-family:ui-monospace,Consolas,monospace}
.sr-link:hover{text-decoration:underline}
.sr-quote{color:#3c4043;font-size:14px;line-height:1.45;margin-top:2px}
/* allocation balance banner (top of home) */
/* house scorecard band -- the LSEG-style verdict strip at the top of Today */
.card.scorecard{border-top-color:var(--data)}
.sc-head{display:flex;align-items:baseline;gap:8px;border-bottom:1px solid var(--line);padding-bottom:6px;margin-bottom:8px}
.sc-eyebrow{font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--data)}
.sc-lead{font-size:16px;line-height:1.5;color:var(--ink);font-weight:600;margin:0 0 12px}
.sc-scores{display:flex;flex-wrap:wrap;gap:10px}
.sc-item{flex:1 1 160px;display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:4px;padding:8px 12px;background:var(--panel)}
.sc-num{flex:0 0 auto;width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:18px}
.sc-meta{display:flex;flex-direction:column;min-width:0}
.sc-lbl{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);font-weight:700}
.sc-cap{font-size:13px;font-weight:700}
.sc-cap.tone-pos{color:var(--posink)} .sc-cap.tone-neg{color:var(--negink)} .sc-cap.tone-neu{color:var(--ink)}

.bnrow{display:flex;flex-wrap:wrap;align-items:center;gap:20px;margin:8px 0 2px}
.bndwrap{flex:0 0 auto} .bndonut{width:118px;height:118px;display:block}
.bndo-t{font-size:21px;font-weight:700;fill:var(--ink)} .bndo-s{font-size:9px;fill:var(--mut);text-transform:uppercase;letter-spacing:.06em}
.bnmain{flex:1 1 300px;min-width:260px}
.bnleg{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--ink)}
.bnlg{display:inline-flex;align-items:center;gap:6px} .bndot{width:11px;height:11px;border-radius:2px;display:inline-block}
.bntilt{display:flex;align-items:center;gap:10px;margin-top:8px}
.bntilt-k{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);flex:0 0 auto}
.bntilt .vsvg{max-width:360px} .bn-lead{color:var(--mut);font-size:13px;margin:8px 0 0}
/* policy slider: pick the client's equity/bond target; the model tilt applies off it */
.bnslider{margin:12px 0 4px}
.bnsl-l{display:block;font-size:12px;color:var(--mut);margin-bottom:5px} .bnsl-l b{color:var(--ink);font-size:13px}
.bnsl-sub{color:var(--mut);font-weight:400}
.bnslider input[type=range]{width:100%;max-width:440px;accent-color:var(--accent);cursor:pointer}
.bn-read{font-size:13.5px;color:var(--ink);margin:6px 0 0;line-height:1.5}
/* the explicit tilt-outcome box: what the model's lean MEANS for this baseline, live with the slider */
.bnoutcome{flex:0 0 188px;align-self:stretch;display:flex;flex-direction:column;justify-content:center;
  gap:3px;padding:14px 16px;border:1px solid var(--line,#e1dfdd);border-radius:8px;text-align:center}
.bnoc-word{font-size:19px;font-weight:700;line-height:1.15;text-transform:uppercase;letter-spacing:.01em}
.bnoc-verb{font-size:14px;color:var(--mut);font-weight:600}
.bnoc-mag{font-size:24px;font-weight:700;margin-top:2px} .bnoc-mag span{font-size:13px;font-weight:600;color:var(--mut)}
.bnoc-res{font-size:12px;color:var(--mut);letter-spacing:.02em}
.bnoc-word.tone-pos,.bnoc-mag.tone-pos{color:var(--posink)}
.bnoc-word.tone-neg,.bnoc-mag.tone-neg{color:var(--negink)}
.bnoc-word.tone-neu,.bnoc-mag.tone-neu{color:var(--ink)}
/* compact stance variant (score-only bar) for tight side-by-side support slots */
.card.stance.compact .stbar{margin:8px 0 2px} .lead.sm{font-size:13px;color:var(--mut);margin:6px 0 0}
/* context panel (macro / valuation / regime environment format) */
.card.context .ctxhead{display:flex;align-items:center;gap:14px;margin:6px 0 8px;flex-wrap:wrap}
.ctxread{font-size:20px;font-weight:700;letter-spacing:.02em;text-transform:uppercase}
.ctxread.tone-pos{color:var(--posink)} .ctxread.tone-neg{color:var(--negink)} .ctxread.tone-neu{color:var(--accent)}
.ctxgauge{flex:1;min-width:240px} .ctxgauge .vsvg{max-width:440px}
.ctxind{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin:8px 0}
.ctxi{display:flex;flex-direction:column;border:1px solid var(--line);border-radius:4px;padding:6px 9px}
.ctxi-k{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut)}
.ctxi-v{font-weight:700;font:14px ui-monospace,Consolas,monospace}
.ctxi-v.tone-pos{color:var(--posink)} .ctxi-v.tone-neg{color:var(--negink)} .ctxi-v.tone-neu{color:var(--ink)}
.ctxspark{display:flex;align-items:center;gap:10px;margin-top:10px}
.ctxspark-l{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);flex:0 0 auto}
.ctxspark .spk{width:240px;height:42px}
/* rarity: per-measure horizontal magnitude bars (how rare today's reading is over its long history) */
.rarity{margin:4px 0 12px}
.rarity-h{font-size:13px;font-weight:700;color:var(--ink);margin-bottom:9px;line-height:1.45}
.rbar{display:grid;grid-template-columns:minmax(120px,170px) 1fr auto;align-items:center;gap:10px;margin:5px 0}
.rbar-l{font-size:12px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rbar-track{position:relative;height:11px;background:var(--track);border-radius:6px;overflow:hidden}
.rbar-fill{position:absolute;left:0;top:0;height:100%;border-radius:6px}
.rbar-fill.neg{background:var(--neg)} .rbar-fill.pos{background:var(--pos)}
.rbar-v{font-size:11px;color:var(--mut);white-space:nowrap;font-variant-numeric:tabular-nums}
@media(max-width:560px){.rbar{grid-template-columns:1fr auto;gap:4px 8px}.rbar-track{grid-column:1/-1;order:3}}
.sttile-cad{color:var(--mut);margin-left:4px;white-space:nowrap}
.sttile-cad.stale{color:var(--negink);font-weight:700}
/* stance-history sparkline: the panel's composite stance over time + trend word (>=4 records) */
.sttrend{display:flex;align-items:center;gap:10px;margin:6px 0 8px}
.sttrend-l{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);flex:0 0 auto}
.sttrend .spk{width:120px;height:36px;flex:0 0 auto}
.sttrend-d{font-size:12px;font-weight:700;text-transform:capitalize}
.sttrend-d.tone-pos{color:var(--posink)} .sttrend-d.tone-neg{color:var(--negink)} .sttrend-d.tone-neu{color:var(--mut)}
/* stance panel: mode toggle + the SMALL score-focus grid */
.stmode{display:flex;gap:6px;margin:10px 0 4px}
.stgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-top:6px}
.sttile{text-align:left;background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:9px 11px;cursor:pointer;font:inherit;display:flex;flex-direction:column;gap:7px;box-shadow:0 1px 2px rgba(20,25,45,.05)}
.sttile:hover{border-color:var(--accent)}
.sttile-h{display:flex;align-items:center;justify-content:space-between;gap:8px}
.sttile-lbl{font-weight:700;font-size:14px;color:var(--ink)}
.sttile-pill{font-size:10px;font-weight:700;text-transform:uppercase;padding:1px 6px;border-radius:3px;border:1px solid;white-space:nowrap}
.sttile-pill.tone-pos{background:var(--posbg);color:var(--posink);border-color:var(--pos)}
.sttile-pill.tone-neg{background:var(--negbg);color:var(--negink);border-color:var(--neg)}
.sttile-pill.tone-neu{background:var(--neubg);color:var(--neuink);border-color:#c8c6c4}
/* the whole score box is shaded by its direction (overweight/underweight); neutral stays plain */
.sttile.tone-pos{background:var(--posbg);border-color:var(--pos)}
.sttile.tone-neg{background:var(--negbg);border-color:var(--neg)}
.stmini{position:relative;height:8px;background:linear-gradient(90deg,var(--negbg),#ffffff,var(--posbg));border:1px solid var(--line);border-radius:4px}
.stmini-mid{position:absolute;left:50%;top:-2px;bottom:-2px;width:1px;background:var(--mut)}
.stmini-mark{position:absolute;top:-2px;width:4px;height:12px;border-radius:2px;transform:translateX(-2px)}
.sttile-meta{font-size:11px;color:var(--mut)}
.stqh{display:flex;align-items:center;gap:10px;margin:6px 0}
.stback{background:none;border:0;color:var(--accent);cursor:pointer;font:inherit;font-size:13px;padding:0}
.stqname{font-weight:700;font-size:15px;color:var(--ink)}

/* gauge constituent-model legend (clustered markers move here instead of colliding inline) */
.gleg{display:flex;flex-wrap:wrap;gap:7px 14px;margin-top:7px;font-size:11px;color:var(--mut)}
.glegi{display:inline-flex;align-items:center;gap:5px}
.glegi .gdot{width:7px;height:7px;border-radius:50%;background:var(--mut);display:inline-block}
.glegi b{color:var(--ink);font-family:ui-monospace,Consolas,monospace;font-weight:700}
/* diverging-bar value drawn INSIDE a wide bar -> white for contrast */
.vval.vin{fill:#fff;font-weight:700}

/* factor/size x sector heatmap (matrix + rare default to full width via the card-width registry) */
.rview{margin-top:6px}
.mxctl{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin:4px 0 8px}
.mxtoggle{display:inline-flex;gap:6px}
.mxsel{font-size:12px;color:var(--mut);display:inline-flex;align-items:center;gap:6px}
.mxsel select{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:3px;padding:4px 7px;font:inherit;font-size:13px}
.mxdescrow{display:flex;flex-wrap:wrap;align-items:center;gap:14px;margin-bottom:8px;font-size:12px;color:var(--mut)}
.mxscale{display:inline-flex;align-items:center;gap:4px;font-size:11px}
.mxscale .mxsw{width:16px;height:11px;border-radius:2px;display:inline-block}
.mxscroll{overflow-x:auto;max-width:100%}
.mxt{border-collapse:separate;border-spacing:2px;width:100%}
.mxt .mxcorner{background:none;border:0}
.mxt .mxch{font-size:11px;color:var(--mut);font-weight:700;text-align:center;padding:2px 4px;border:0;white-space:nowrap}
.mxt .mxrh{font-size:12px;color:var(--ink);font-weight:700;text-align:right;padding:2px 8px 2px 2px;border:0;white-space:nowrap}
.mxt .mxc{text-align:center;color:#fff;font:600 11px ui-monospace,Consolas,monospace;padding:7px 6px;border-radius:3px;min-width:46px;text-shadow:0 1px 1px rgba(0,0,0,.28)}
.mxt .mxc.mxna{background:var(--track);color:var(--mut);text-shadow:none}

/* ---- LONG TRADE DESK: the active-book performance table ---- */
.ltd .lead{font-size:13px;color:var(--ink);margin:2px 0 10px;line-height:1.5}
.ltd-active{display:flex;align-items:center;gap:8px;margin:12px 2px 4px;color:var(--pos);font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-weight:700}
.ltd-active:before,.ltd-active:after{content:"";flex:1 1 auto;height:0;border-top:1px solid var(--pos);opacity:.5}
.ltd-active.oof{color:var(--mut);margin-top:26px}                               /* breathing room under the active 4 */
.ltd-active.oof:before,.ltd-active.oof:after{border-top-color:var(--line);opacity:1}
.ltd-tbl{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}   /* fixed -> both tables share one grid */
.ltd-tbl td{overflow:hidden;text-overflow:ellipsis}            /* data cells clip; headers wrap (below) */
.ltd-tbl th:nth-child(1),.ltd-tbl td:nth-child(1){width:22%}   /* Sector (longest names clip -> hover tooltip) */
.ltd-tbl th:nth-child(2),.ltd-tbl td:nth-child(2){width:16%}   /* Date */
.ltd-tbl th:nth-child(3),.ltd-tbl td:nth-child(3){width:11%}   /* delta % (total) */
.ltd-tbl th:nth-child(4),.ltd-tbl td:nth-child(4){width:13%}   /* annualized % */
.ltd-tbl th:nth-child(5),.ltd-tbl td:nth-child(5){width:26%}   /* Quality / Trap (right-justified) */
.ltd-tbl th:nth-child(6),.ltd-tbl td:nth-child(6){width:12%}   /* Score -- room for the SCORE header at any width */
.ltd-tbl th{font-size:10px;text-transform:uppercase;letter-spacing:.02em;color:var(--mut);font-weight:700;text-align:right;padding:4px 4px;border-bottom:1px solid var(--line);white-space:normal;vertical-align:bottom;line-height:1.25}
.ltd-tbl th.sc-h,.ltd-tbl td.sc{white-space:nowrap}            /* never break SCORE / the score value */
.ltd-tbl th.l,.ltd-tbl td.l{text-align:left}
.ltd-tbl td{padding:5px 4px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink)}
.ltd-tbl td.sc{font-weight:700;font-family:ui-monospace,Consolas,monospace}
.ltd-tbl td .pos{color:var(--posink);font-weight:700} .ltd-tbl td .neg{color:var(--negink);font-weight:700}
.ltd-tbl tr.inbook{background:var(--posbg)}                                    /* 4 ACTIVE sectors -> green */
.ltd-tbl tr.ondeck{background:var(--hover)}
.ltd-tbl tr.rotated{background:var(--accentbg)}                                /* just ROTATED OUT -> orange */
/* same box border on BOTH halves of the last swap: the one that came IN + the one that went OUT */
.ltd-tbl tr.rotin>td,.ltd-tbl tr.rotated>td{border-top:2px solid var(--accent);border-bottom:2px solid var(--accent)}
.ltd-tbl tr.rotin>td:first-child,.ltd-tbl tr.rotated>td:first-child{border-left:4px solid var(--accent);font-weight:700}
.ltd-tbl tr.rotin>td:last-child,.ltd-tbl tr.rotated>td:last-child{border-right:2px solid var(--accent)}
/* LONG & SHORT view: the short-book table -- red tint + a DISTINCT crimson swap-pair border (vs the long's blue) */
.ltd-modesel{margin-left:10px}
/* selectable desk-model chooser (Sectors-only view): a labelled DROPDOWN (scales as models grow) + its note */
.ltd-modelsel{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:10px 2px 2px}
.ltd-modell{font-size:11px;font-weight:700;color:var(--mut);text-transform:uppercase;letter-spacing:.04em;margin-right:2px}
.ltd-modelselect{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:4px 8px;font:inherit;font-size:12px;font-weight:700;cursor:pointer}
.ltd-modelselect:hover{border-color:var(--accent)}
.ltd-modelnote{font-size:11px;color:var(--mut);margin:4px 2px 6px;line-height:1.45}
.ltd-active.short{color:var(--negink);margin-top:26px}
.ltd-active.short:before,.ltd-active.short:after{border-top-color:var(--negink);opacity:.45}
.ltd-shorttbl tr.shortrow{background:var(--negbg)}                              /* short positions -> red tint */
.ltd-shorttbl tr.rotin-short>td{border-top:2px solid var(--negink);border-bottom:2px solid var(--negink)}
.ltd-shorttbl tr.rotin-short>td:first-child{border-left:4px solid var(--negink);font-weight:700}
.ltd-shorttbl tr.rotin-short>td:last-child{border-right:2px solid var(--negink)}
.ltd-tbl tr.ltd-hdr td{text-align:center;color:var(--pos);font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;padding:8px 4px 4px;border-bottom:1px solid var(--pos)}
.ltd-tbl tr.ltd-seprow td{text-align:center;color:var(--accent);font-size:9px;text-transform:uppercase;letter-spacing:.06em;font-weight:700;padding:6px 4px;border-bottom:1px dashed var(--accent)}
.ltd-tag{font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px;white-space:nowrap}
.ltd-tag.trap{background:var(--negbg);color:var(--negink)}
.ltd-tag.rec{background:var(--accentbg);color:var(--accent)}
.ltd-tag.qual{background:var(--posbg);color:var(--posink)}
.ltd-tag.neu{background:var(--track);color:var(--mut)}
.ltd-note{font-size:10px;color:var(--mut);margin:5px 2px 0}

/* ---- LIVE BOOK: deployed real-money L/S book, marked to market ---- */
.lbk .lead{font-size:13px;color:var(--ink);margin:2px 0 10px;line-height:1.5}
.lbk-sum{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 6px}
.lbk-kpi{flex:1 1 auto;min-width:84px;background:var(--track);border:1px solid var(--line);border-radius:8px;padding:7px 10px;display:flex;flex-direction:column;gap:2px}
.lbk-k{font-size:9px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);font-weight:700}
.lbk-v{font-size:14px;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.lbk-v .pos{color:var(--posink)} .lbk-v .neg{color:var(--negink)}
/* portal boot / no-data-yet state (shown when no run is promoted -> /latest 404) */
.boot-msg{max-width:560px;margin:48px auto;text-align:center;padding:24px;line-height:1.55}
.boot-t{font-size:17px;font-weight:700;color:var(--ink);margin-bottom:8px}
.boot-cta{margin-top:16px}
.lbk-spark{display:flex;align-items:center;gap:8px;margin:8px 2px}
.lbk-spark .lbk-k{flex:0 0 auto}
/* full-width return chart (flagship cards) + brand-new-book placeholder */
.lbk-ret{margin:14px 2px 6px}
.lbk-ret .lbk-k{display:block;margin-bottom:6px;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);font-weight:700}
.retchart{width:100%;height:auto;display:block}
.retchart .retzero{stroke:var(--line);stroke-width:1;stroke-dasharray:3 3}
/* multi-line return chart legend (total / long position / short position) */
.retleg{display:flex;flex-wrap:wrap;gap:14px;margin:6px 2px 0;font-size:11px;color:var(--mut)}
.retleg-i{display:inline-flex;align-items:center;gap:6px}
.retleg-s{display:inline-block;width:15px;height:3px;border-radius:2px;flex:0 0 auto}
/* Return-by-position line items (long vs short leg, each on its own) */
.leg-tbl{width:100%;border-collapse:collapse;font-size:12.5px;font-variant-numeric:tabular-nums;margin:2px 2px 4px}
.leg-tbl th{font-size:10px;text-transform:uppercase;letter-spacing:.02em;color:var(--mut);font-weight:700;text-align:right;padding:5px 6px;border-bottom:1px solid var(--line);white-space:nowrap}
.leg-tbl th.l,.leg-tbl td.l{text-align:left}
.leg-tbl td{padding:7px 6px;text-align:right;border-bottom:1px solid var(--line);color:var(--ink);white-space:nowrap}
.leg-tbl td.l{font-weight:600} .leg-tbl td.mut{color:var(--mut);text-align:center;font-weight:400}
.leg-tbl .pos{color:var(--posink);font-weight:700} .leg-tbl .neg{color:var(--negink);font-weight:700}
.leg-dot{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:7px;vertical-align:middle}
.leg-dot.long{background:var(--pos)} .leg-dot.short{background:var(--data)} .leg-dot.mkt{background:var(--neu)}
.leg-tbl tr.leg-mkt td{border-top:1px solid var(--line)}                /* separate the S&P benchmark from the portfolio legs */
.leg-tbl tr.leg-mkt td.l{color:var(--mut)}
.leg-sub{font-size:10px;color:var(--mut);font-weight:400;margin-left:4px;white-space:nowrap}
.leg-foot{font-size:10.5px;color:var(--mut);line-height:1.45;margin:6px 2px 2px}
.lbk-ret.empty{color:var(--mut);font-size:12px;padding:14px;border:1px dashed var(--line);border-radius:5px;text-align:center;background:var(--track)}
.lbk-sec{display:flex;align-items:center;gap:8px;margin:16px 2px 4px;color:var(--pos);font-size:10px;text-transform:uppercase;letter-spacing:.06em;font-weight:700}
.lbk-sec:before,.lbk-sec:after{content:"";flex:1 1 auto;height:0;border-top:1px solid var(--pos);opacity:.5}
.lbk-sec.short{color:var(--negink)}
.lbk-sec.short:before,.lbk-sec.short:after{border-top-color:var(--negink);opacity:.45}
.lbk-tbl{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}
.lbk-tbl td{overflow:hidden;text-overflow:ellipsis}
.lbk-tbl th:nth-child(1),.lbk-tbl td:nth-child(1){width:34%}    /* Position */
.lbk-tbl th:nth-child(2),.lbk-tbl td:nth-child(2){width:9%}     /* Wt */
.lbk-tbl th:nth-child(3),.lbk-tbl td:nth-child(3){width:12%}    /* Entry */
.lbk-tbl th:nth-child(4),.lbk-tbl td:nth-child(4){width:12%}    /* Last */
.lbk-tbl th:nth-child(5),.lbk-tbl td:nth-child(5){width:10%}    /* delta % */
.lbk-tbl th:nth-child(6),.lbk-tbl td:nth-child(6){width:13%}    /* P&L $ */
.lbk-tbl th:nth-child(7),.lbk-tbl td:nth-child(7){width:10%}    /* Signal */
.lbk-tbl th{font-size:10px;text-transform:uppercase;letter-spacing:.02em;color:var(--mut);font-weight:700;text-align:right;padding:4px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:bottom}
.lbk-tbl th.l,.lbk-tbl td.l{text-align:left}
.lbk-tbl td{padding:5px 4px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink)}
.lbk-tbl td .pos{color:var(--posink);font-weight:700} .lbk-tbl td .neg{color:var(--negink);font-weight:700}
.lbk-tbl.lbk-bench th:nth-child(1),.lbk-tbl.lbk-bench td:nth-child(1){width:70%}
.lbk-tbl.lbk-bench th:nth-child(2),.lbk-tbl.lbk-bench td:nth-child(2){width:30%}
.lbk-bench tr.lbk-port{background:var(--posbg)} .lbk-bench tr.lbk-port td{font-weight:700}
.lbk-shorttbl tr.shortrow{background:var(--negbg)}
.lbk-tbl tr.drift{outline:2px solid var(--accent);outline-offset:-2px}            /* leg drifted out of signal range */
.lbk-hold{font-size:10px;font-weight:700;padding:2px 7px;border-radius:10px;white-space:nowrap}
.lbk-hold.ok{background:var(--posbg);color:var(--posink)}
.lbk-hold.ex{background:var(--accentbg);color:var(--accent)}
.lbk-note{font-size:11px;color:var(--mut);margin:10px 2px 0}

/* ---- FORWARD TEST: 3-variant go-forward scoreboard ---- */
.fwd .lead{font-size:13px;color:var(--ink);margin:2px 0 8px;line-height:1.5}
.fwd-incept{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--mut);font-weight:700;margin:8px 2px 4px}
.fwd-tbl{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed}
.fwd-tbl th:nth-child(1),.fwd-tbl td:nth-child(1){width:40%}
.fwd-tbl th:nth-child(n+2),.fwd-tbl td:nth-child(n+2){width:15%}
.fwd-tbl th{font-size:10px;text-transform:uppercase;letter-spacing:.02em;color:var(--mut);font-weight:700;text-align:right;padding:4px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:bottom}
.fwd-tbl th.l,.fwd-tbl td.l{text-align:left}
.fwd-tbl td{padding:6px 4px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink);vertical-align:top}
.fwd-tbl td .pos{color:var(--posink);font-weight:700} .fwd-tbl td .neg{color:var(--negink);font-weight:700}
.fwd-hold{font-size:10px;color:var(--mut);white-space:normal;line-height:1.35;margin-top:2px;font-weight:400}
.fwd-short{color:var(--negink)}
.fwd-days{color:var(--mut);font-size:10px}
.fwd-note{font-size:10px;color:var(--mut);margin:8px 2px 0;line-height:1.4}
.fwd-pending{font-size:12.5px;color:var(--ink);background:var(--accentbg);border:1px solid var(--accent);border-radius:5px;padding:10px 12px;margin:10px 2px 4px;line-height:1.5}
.fwl .lead{font-size:13px;color:var(--ink);margin:2px 0 8px;line-height:1.5}
.fwl-attr{width:100%;border-collapse:collapse;font-size:12px;table-layout:fixed;margin-top:2px}
.fwl-attr th:nth-child(1),.fwl-attr td:nth-child(1){width:34%}
.fwl-attr th:nth-child(2),.fwl-attr td:nth-child(2),.fwl-attr th:nth-child(4),.fwl-attr td:nth-child(4){width:22%}
.fwl-attr th:nth-child(3),.fwl-attr td:nth-child(3),.fwl-attr th:nth-child(5),.fwl-attr td:nth-child(5){width:11%}
.fwl-attr th{font-size:10px;text-transform:uppercase;letter-spacing:.02em;color:var(--mut);font-weight:700;text-align:right;padding:4px;border-bottom:1px solid var(--line);white-space:nowrap}
.fwl-attr th.l,.fwl-attr td.l{text-align:left}
.fwl-attr td{padding:5px 4px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink)}
.fwl-attr td .pos{color:var(--posink);font-weight:700} .fwl-attr td .neg{color:var(--negink);font-weight:700}
/* the active-portfolios LIST (click a row -> its forward test renders below) */
.fwl-list{width:100%;border-collapse:collapse;font-size:12px;margin:6px 0 4px}
.fwl-list th{font-size:10px;text-transform:uppercase;letter-spacing:.02em;color:var(--mut);font-weight:700;text-align:right;padding:5px 6px;border-bottom:1px solid var(--line);white-space:nowrap}
.fwl-list th.l,.fwl-list td.l{text-align:left}
.fwl-list td{padding:8px 6px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;font-variant-numeric:tabular-nums;color:var(--ink)}
.fwl-list td .pos{color:var(--posink);font-weight:700} .fwl-list td .neg{color:var(--negink);font-weight:700}
.fwl-row{cursor:pointer}
.fwl-row:hover{background:var(--hover)}
.fwl-row.sel{background:var(--posbg)}
.fwl-row.sel>td:first-child{border-left:3px solid var(--accent)}
.fwl-del{text-align:center;width:34px}
.fwl-x{border:0;background:none;color:var(--mut);font-size:16px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:4px}
.fwl-x:hover{background:var(--negbg);color:var(--negink)}
/* Sector Scorecard */
.scard-ctl{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:6px 2px 10px}
.scard-lbl{font-size:10px;color:var(--mut);text-transform:uppercase;letter-spacing:.05em;font-weight:700;margin-right:4px}
.scard-pill{border:1px solid var(--line);background:var(--panel);color:var(--ink);border-radius:999px;padding:4px 12px;font-size:12px;cursor:pointer}
.scard-pill:hover{background:var(--hover)}
.scard-pill.on{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:700}
.scard-date{margin-left:6px;background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:4px 6px;font-size:12px}
.scard-sum{font-size:12.5px;color:var(--ink);margin:2px 2px 8px}
.scard-tbl{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}
.scard-tbl th{font-size:10px;text-transform:uppercase;letter-spacing:.02em;color:var(--mut);font-weight:700;text-align:right;padding:5px 6px;border-bottom:1px solid var(--line);white-space:nowrap}
.scard-tbl th.l{text-align:left}
.scard-tbl td{padding:6px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap;color:var(--ink)}
.scard-tbl td.l{text-align:left;font-weight:600} .scard-tbl td.c{text-align:center}
.scard-tbl .pos{color:var(--posink);font-weight:700} .scard-tbl .neg{color:var(--negink);font-weight:700} .scard-tbl .mut{color:var(--mut)}
.scard-tbl tr.sc-long{background:var(--posbg)} .scard-tbl tr.sc-short{background:var(--accentbg)}
.sc-b{display:inline-block;width:15px;height:15px;line-height:15px;text-align:center;border-radius:3px;font-size:9px;font-weight:700;color:#fff;margin-right:6px}
.sc-b.l{background:var(--pos)} .sc-b.s{background:var(--accent)}
.scard-leg{font-size:10px;color:var(--mut);margin:8px 2px 0}
.sc-key{display:inline-block;width:10px;height:10px;border-radius:2px;vertical-align:middle;margin-right:2px}
.sc-key.l{background:var(--posbg);border:1px solid var(--pos)} .sc-key.s{background:var(--accentbg);border:1px solid var(--accent)}
/* Rotation Changes card (Trade Desk): the swap-execution TIMELINE -- dated event cards, OUT -> IN with
   score moves + rank transition; live age/urgency on the date rail */
.rct{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.rct-ev{display:grid;grid-template-columns:58px minmax(0,1fr);gap:10px;align-items:start}
.rct-date{text-align:center;padding-top:8px}
.rct-date b{display:block;font-size:12px;font-weight:800;color:var(--ink);letter-spacing:.02em;white-space:nowrap}
.rct-date span{display:block;font-size:10px;color:var(--mut);font-variant-numeric:tabular-nums}
.rct-cardbox{border:1px solid var(--line);border-radius:10px;padding:8px 12px;background:var(--panel);min-width:0}
.rct-ev.long .rct-cardbox,.rct-ev.core .rct-cardbox{border-left:3px solid var(--pos)}
.rct-ev.short .rct-cardbox{border-left:3px solid var(--negink)}
.rct-h{display:flex;align-items:center;flex-wrap:wrap;gap:6px 10px;margin-bottom:6px}
.rct-badge{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:10px}
.rct-badge.long,.rct-badge.core{background:var(--posbg);color:var(--posink)}
.rct-badge.short{background:var(--negbg);color:var(--negink)}
.rc-urg{font-size:10px;font-weight:700;padding:2px 8px;border-radius:10px;margin-left:auto}
.rc-urg.fresh{background:var(--posbg);color:var(--posink)}
.rc-urg.ok{background:var(--accentbg);color:var(--accent)}
.rc-urg.stale{background:var(--neubg);color:var(--mut)}
.rct-swap{display:flex;align-items:center;flex-wrap:wrap;gap:5px 10px}
.rct-side{display:inline-flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:12.5px;font-weight:600;color:var(--ink)}
.rct-side b{font-size:9px;font-weight:800;letter-spacing:.04em;padding:1px 6px;border-radius:6px}
.rct-side.out b{background:var(--negbg);color:var(--negink)} .rct-side.in b{background:var(--posbg);color:var(--posink)}
.rct-side.none{color:var(--mut)}
.rct-arr{color:var(--mut);font-size:14px}
.rct-sc{font-size:10px;font-weight:700;padding:1px 7px;border-radius:9px;white-space:nowrap;font-variant-numeric:tabular-nums}
.rct-sc.up{background:var(--posbg);color:var(--posink)} .rct-sc.dn{background:var(--negbg);color:var(--negink)}
.rct-sc.flat{background:var(--track);color:var(--mut)}
.rct-meta{font-size:10.5px;color:var(--mut);margin-top:5px}
.rct-rank{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}
.rct-keepline{display:flex;align-items:center;flex-wrap:wrap;gap:5px 10px;padding:2px 12px 6px;font-size:11.5px}
.rc-chip{font-size:10px;font-weight:700;padding:1px 7px;border-radius:9px;white-space:nowrap}
.rc-chip.trap{background:var(--negbg);color:var(--negink)} .rc-chip.rec{background:var(--accentbg);color:var(--accent)}
.rc-chip.qual{background:var(--posbg);color:var(--posink)} .rc-chip.neu{background:var(--track);color:var(--mut)}
.rc-keep-l{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--mut)}
.rc-kept{font-size:11.5px;color:var(--ink);display:inline-flex;align-items:center;gap:5px}
.rct-lag{font-size:10px;font-weight:700;padding:1px 7px;border-radius:9px;background:var(--accentbg);color:var(--accent);white-space:nowrap}
.rc-keep-l.watch{color:var(--accent)}
.rct-watchnote{font-size:10px;font-style:italic;color:var(--mut);margin-left:auto;white-space:nowrap}
@media(max-width:760px){ .rct-ev{grid-template-columns:44px minmax(0,1fr)} .rc-urg{margin-left:0} }
/* Recent Swaps card (Trade Desk): consolidated 30-day in/out monitor for the 3 trade types -- COLLAPSIBLE */
.rsw-d>summary{cursor:pointer;list-style:none;user-select:none;border-bottom:none}
.rsw-d>summary::-webkit-details-marker{display:none}
.rsw-d>summary::marker{content:""}
.rsw-d:not([open])>:not(summary){display:none}    /* collapsed: only the header status bar shows */
.rsw-sum:hover{background:var(--hover)}
.rsw-d[open]>summary.rsw-sum{border-bottom:1px solid var(--line)}
.rsw-cue{display:inline-flex;align-items:center;gap:6px}
.rsw-chev{display:inline-block;transition:transform .15s}
.rsw-d[open] .rsw-chev{transform:rotate(180deg)}
.rsw-type{border:1px solid var(--line);border-radius:8px;padding:9px 11px;margin:8px 0;background:var(--panel)}
.rsw-type.fresh{border-left:3px solid var(--accent)}
.rsw-th{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:5px}
.rsw-name{font-weight:700;font-size:13px;color:var(--ink)}
.rsw-badge{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:10px;background:var(--accentbg);color:var(--accent)}
.rsw-badge.steady{background:var(--posbg);color:var(--posink)}
.rsw-leg{display:flex;align-items:center;flex-wrap:wrap;gap:5px 7px;padding:3px 0;font-size:12px}
.rsw-leg.none{color:var(--mut)}
.rsw-side{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--mut);min-width:38px}
.rsw-side.long{color:var(--pos)} .rsw-side.short{color:var(--accent)}
.rsw-io{display:flex;align-items:center;flex-wrap:wrap;gap:6px 16px;flex:1 1 auto}
.rsw-grp{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px}
.rsw-tag{font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:9px;white-space:nowrap}
.rsw-tag.in{background:var(--posbg);color:var(--posink)} .rsw-tag.out{background:var(--negbg);color:var(--negink)}
.rsw-when{font-size:10px;color:var(--mut);font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto}
.rsw-mut{font-size:11px}
.rsw-chip{display:inline-block;font-size:11px;padding:2px 8px;border-radius:11px;background:var(--neubg);color:var(--ink);white-space:nowrap}
.rsw-chip.in{background:var(--posbg);color:var(--posink)} .rsw-chip.out{background:var(--negbg);color:var(--negink)}
.rsw-chip.book{background:transparent;border:1px solid var(--line);color:var(--ink)}
.rsw-chip.sbook{background:transparent;border:1px dashed var(--accent);color:var(--accent)}
.rsw-book{display:flex;align-items:center;flex-wrap:wrap;gap:4px 6px;margin-top:6px;padding-top:6px;border-top:1px dashed var(--line)}
.rsw-bk-l{font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--mut);margin-right:2px}
/* Portfolio Performance card (Live Book format, own selector) */
.perf-sel{display:flex;align-items:center;gap:8px;margin:4px 2px 10px}
.perf-sel .scard-date{min-width:260px}
/* Log Selector card (Reporting right column): compact portfolio picker that drives the perf card */
.fwsel-hint{font-size:11px;color:var(--mut);margin:2px 2px 8px}
.fwsel-list{display:flex;flex-direction:column;gap:6px}
.fwsel-row{position:relative;border:1px solid var(--line);border-radius:8px;padding:8px 30px 8px 10px;cursor:pointer;background:var(--panel)}
.fwsel-row:hover{background:var(--hover)}
.fwsel-row.on{border-color:var(--accent);border-left-width:3px;background:var(--accentbg)}
.fwsel-top{display:flex;align-items:center;justify-content:space-between;gap:8px}
.fwsel-name{font-weight:700;font-size:13px;color:var(--ink)}
.fwsel-top .pos{color:var(--posink);font-weight:700} .fwsel-top .neg{color:var(--negink);font-weight:700}
.fwsel-sub{font-size:11px;color:var(--mut);margin-top:2px;font-variant-numeric:tabular-nums}
.fwsel-pend{color:var(--accent);font-weight:700}
.fwsel .fwl-x{position:absolute;top:6px;right:6px}
/* Create-Investment card (its own card on the Reporting page) -- COLLAPSIBLE, collapsed by default */
.fwc{border-top:3px solid var(--accent)}
.fwc-d>summary{cursor:pointer;list-style:none;user-select:none;border-bottom:none}
.fwc-d>summary::-webkit-details-marker{display:none}
.fwc-d>summary::marker{content:""}
.fwc-d:not([open])>:not(summary){display:none}      /* collapsed: hide the lead + form (explicit, not UA-dependent) */
.fwc-sum:hover{background:var(--hover)}
.fwc-d[open]>summary.fwc-sum{border-bottom:1px solid var(--line)}
.fwc-cue{display:inline-flex;align-items:center;gap:5px;color:var(--accent);font-weight:700}
.fwc-d[open] .fwc-cue{color:var(--mut);font-weight:400}
.fwc-chev{display:inline-block;transition:transform .15s}
.fwc-d[open] .fwc-chev{transform:rotate(180deg)}
.fwc-lead{font-size:12px;color:var(--mut);line-height:1.5;margin:2px 2px 10px}
.fwc-form{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,210px));gap:12px 16px;align-items:end}
.fwc-fld{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--mut)}
.fwc-fld>span{font-weight:700;text-transform:uppercase;letter-spacing:.03em;font-size:10px}
.fwc-fld select,.fwc-fld input{background:var(--panel);color:var(--ink);border:1px solid var(--line);border-radius:4px;padding:7px 8px;font-size:13px;font-family:inherit}
.fwc-fld select:focus,.fwc-fld input:focus{outline:none;border-color:var(--accent)}
.fwc-btn{background:var(--accent);color:#fff;border:0;border-radius:4px;padding:9px 16px;font-size:13px;font-weight:700;cursor:pointer;align-self:end;height:fit-content}
.fwc-btn:hover{filter:brightness(1.05)} .fwc-btn:disabled{opacity:.55;cursor:default}
.fwc-status{grid-column:1/-1;font-size:12px;min-height:16px}
.fwc-status .pos{color:var(--posink);font-weight:700} .fwc-status .neg{color:var(--negink);font-weight:700}
/* Investment Logs empty state (no portfolios yet) */
.fwl-empty{text-align:center;padding:26px 16px 22px;border:1px dashed var(--line);border-radius:6px;background:var(--track);margin:4px 0}
.fwl-empty-t{font-size:15px;font-weight:700;color:var(--ink)}
.fwl-empty-s{font-size:12.5px;color:var(--mut);line-height:1.55;max-width:520px;margin:6px auto 0}
.fwl-empty-cue{margin-top:12px;display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--accent);background:var(--accentbg);border:1px solid var(--accent);border-radius:999px;padding:5px 12px}

/* ===== marketing landing (logged-out) + topbar auth buttons ===== */
.authbtns{display:inline-flex;align-items:center;gap:8px;margin-left:auto}
.authbtns[hidden]{display:none}                      /* signed in -> no Sign in/Sign up (hidden attr must beat .authbtns) */
.signedout .ham,.signedout #asof{display:none}       /* logged-out topbar: brand + Sign in / Sign up only */
.signedout .brand{margin-right:auto}
.signedout #sidebar{display:none}                    /* no nav until signed in */
.lp-btn{background:var(--accent);color:#fff;border:0;border-radius:6px;padding:9px 18px;font-size:14px;font-weight:700;cursor:pointer;font-family:inherit}
.lp-btn:hover{filter:brightness(1.05)}
.lp-btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.lp-btn.ghost:hover{background:var(--hover);filter:none}
.lp-btn.sm{padding:6px 13px;font-size:12.5px;border-radius:6px}
.lp-btn.lg{padding:13px 26px;font-size:15px;border-radius:8px}
.lp{max-width:1060px;margin:0 auto;padding:4px 0 44px}
.lp-hero{text-align:center;padding:52px 20px 42px}
.lp-eyebrow{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--accent);margin-bottom:14px}
.lp-h1{font-size:46px;line-height:1.07;font-weight:800;color:var(--ink);margin:0 0 16px;letter-spacing:-.02em}
.lp-sub{font-size:17px;line-height:1.55;color:var(--mut);max-width:640px;margin:0 auto 26px}
.lp-cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.lp-note{font-size:11px;color:var(--mut);margin-top:18px}
.lp-feats{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;padding:0 20px;margin-top:8px}
.lp-feat{background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--accent);border-radius:12px;padding:22px}
.lp-feat-t{font-size:16px;font-weight:700;color:var(--ink);margin-bottom:8px}
.lp-feat-d{font-size:14px;line-height:1.55;color:var(--mut)}
.lp-tiers-h{text-align:center;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);margin:46px 0 16px}
.lp-tiers{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;padding:0 20px}
.lp-tier{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px}
.lp-tier.js-signup{cursor:pointer} .lp-tier.js-signup:hover{border-color:var(--accent)}
/* Plans / billing page (mounts the Clerk PricingTable) */
.pricing-wrap{max-width:960px;margin:0 auto}
.pricing-cur{font-size:13.5px;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-left:3px solid var(--accent);border-radius:8px;padding:12px 14px;margin:2px 0 16px}
.pricing-mount{min-height:120px}
.pricing-fb{font-size:13px;color:var(--mut);padding:18px;border:1px dashed var(--line);border-radius:8px;background:var(--track);display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.pricing-fb[hidden]{display:none}                    /* attribute selector must beat .pricing-fb's display:flex */
.pricing-note{font-size:11px;color:var(--mut);margin-top:16px;text-align:center;opacity:.85}
.lp-tier-n{font-size:14px;font-weight:800;color:var(--ink);margin-bottom:6px}
.lp-tier-d{font-size:12.5px;line-height:1.5;color:var(--mut)}
.lp-foot{text-align:center;margin-top:46px;padding:0 20px}
.lp-foot-cta{display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap;font-size:14px;color:var(--mut);margin-bottom:22px}
.lp-foot-tos{font-size:11px;line-height:1.6;color:var(--mut);max-width:720px;margin:0 auto;opacity:.85}
@media(max-width:760px){
  .lp-h1{font-size:32px} .lp-sub{font-size:15px} .lp-hero{padding:34px 4px 26px}
  .lp-feats{grid-template-columns:1fr} .lp-tiers{grid-template-columns:1fr 1fr}
}

/* Trade Guide -- the validated rotation operating policy, written out above the methodology */
.tguide{margin:10px 0 4px;padding:10px 12px;background:var(--panel2,#f6f7f9);border-left:3px solid var(--accent,#2563eb);border-radius:6px}
.tguide .tg-t{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted,#667085);margin-bottom:6px}
.tguide ol{margin:0;padding-left:18px}
.tguide li{font-size:12.5px;line-height:1.45;margin:3px 0}
