/* Stock forecast dashboard - design tokens and shared components.
   Source of truth: site/DESIGN.md. A change here is a design decision. */
:root{
  --bg:#faf7f1;
  --bg-alt:#f2ede2;
  --card:#ffffff;
  --text:#1b1a17;
  --text-muted:#6e6659;
  --text-faint:#948c7d;
  --border:#e6ddcc;
  --accent:#2b5c8a;
  --accent-dark:#1e3f5e;
  --accent-bg:#e7eef5;
  --amber:#926820;
  --amber-bg:#f7ecd8;
  --red:#a44a3f;
  --red-bg:#f6e6e2;
  --green:#4c7a4f;
  --green-bg:#e9f1e7;
  --grid-line:rgba(34,31,26,0.07);
  --radius:10px;
  --maxprose:70ch;
  /* type scale: exactly four sizes, weights 400/600 (700 for the spot value) */
  --fs-spot:32px;
  --fs-claim:21px;
  --fs-body:15px;
  --fs-label:12px;
  --fs-title:32px;
  /* lens hues, locked page-wide, fixed per source, never per chart index */
  --lens-mine:#2b5c8a;
  --lens-house:#3f8f7a;
  --lens-street:#b0792d;
  --lens-market:#8b8477;
  --lens-valuation:#7a6b9e;
  --lens-composed:#9a4f7a;
  --lens-people:#7d8f3a;
  /* revenue-segment palette, categorical, locked page-wide */
  --seg-search:#2b5c8a;
  --seg-cloud:#3f8f7a;
  --seg-youtube:#c0873a;
  --seg-network:#8a9bb0;
  --seg-other:#b9b1a2;
}
*{box-sizing:border-box;}
button,select,input,textarea{font:inherit;}
html{font-size:15px;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg);
  color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  font-size:var(--fs-body);
  line-height:1.4667;
  -webkit-font-smoothing:antialiased;
}
td,th,.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum" 1;}
a{color:var(--accent);text-decoration:none;}
a:hover{text-decoration:underline;}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
h1,h2,h3{font-weight:600;letter-spacing:-0.01em;margin:0;}
.layout{display:grid;grid-template-columns:200px minmax(0,1fr);column-gap:48px;max-width:1160px;margin:0 auto;}
nav.sidenav{position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto;padding:24px 12px 24px 16px;border-right:1px solid var(--border);}
nav.sidenav .brand{font-size:var(--fs-label);line-height:16px;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);margin-bottom:16px;font-weight:600;}
nav.sidenav .back{display:flex;align-items:center;height:32px;margin-bottom:12px;font-size:var(--fs-label);font-weight:600;color:var(--text-muted);}
nav.sidenav .back::before{content:"\2190";margin-right:6px;}
nav.sidenav .back:hover{color:var(--text);}
nav.sidenav ol,nav.sidenav ul{list-style:none;margin:0;padding:0;}
nav.sidenav li{margin-bottom:2px;}
nav.sidenav a{display:flex;align-items:center;height:44px;padding:0 12px;border-radius:7px;color:var(--text-muted);font-size:var(--fs-body);}
nav.sidenav a:hover{background:var(--bg-alt);text-decoration:none;color:var(--text);}
nav.sidenav a.active{color:var(--text);font-weight:600;}

.mobile-topbar{display:none;}
main{min-width:0;padding:24px 0 64px;}
.pagehead{margin-bottom:16px;padding-bottom:16px;border-bottom:1px solid var(--border);}
.pagehead h1{font-size:var(--fs-title);line-height:38px;}
.pagehead .sub{color:var(--text-muted);font-size:var(--fs-body);line-height:22px;margin-top:4px;}
section{padding:48px 0;border-bottom:1px solid var(--border);scroll-margin-top:16px;}
section:last-of-type{border-bottom:none;}
#overview{padding-top:40px;}
.sec-title{font-size:var(--fs-claim);line-height:29px;font-weight:600;letter-spacing:-0.01em;margin-bottom:8px;}
.sec-readout{font-size:var(--fs-body);line-height:22px;color:var(--text-muted);margin:0 0 16px;max-width:var(--maxprose);}
.empty-state{color:var(--text-muted);font-size:var(--fs-body);line-height:23px;padding:12px 0;}
.openlink{display:inline-flex;align-items:center;gap:4px;min-height:44px;margin-top:8px;font-weight:600;font-size:var(--fs-body);line-height:22px;}
.openlink::after{content:"\2192";}

.strip-row{display:grid;grid-template-columns:180px repeat(auto-fit,minmax(120px,1fr));gap:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--card);}
.strip-item{padding:16px;border-right:1px solid var(--border);min-width:0;min-height:96px;}
.strip-item:last-child{border-right:none;}
.strip-item .lbl{font-size:var(--fs-label);line-height:16px;font-weight:400;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin-bottom:4px;white-space:nowrap;}
.strip-item .val{font-size:var(--fs-claim);line-height:29px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--text);}
.strip-item .val.up{color:var(--green);}
.strip-item .val.down{color:var(--red);}
.strip-item .val.muted{color:var(--text-muted);}
.strip-item.spot .val{font-size:var(--fs-spot);line-height:40px;font-weight:700;}
.strip-item .val-sub{font-size:var(--fs-body);line-height:23px;font-weight:400;color:var(--text-muted);font-variant-numeric:tabular-nums;margin-top:2px;}
.strip-item .val-sub.up{color:var(--green);}
.strip-item .val-sub.down{color:var(--red);}
.fresh-row{margin-top:8px;font-size:var(--fs-label);line-height:16px;color:var(--text-muted);text-align:right;}
.stale-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--amber);margin-right:5px;vertical-align:middle;}

.bullets{margin:16px 0 0;padding-left:16px;max-width:var(--maxprose);}
.bullets li{margin-bottom:8px;color:var(--text);font-size:var(--fs-body);line-height:22px;}

.chart-box{position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 16px 12px;}
.chart-box svg{width:100%;height:auto;display:block;}
.chart-box svg text{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;}
.chart-title-row{display:flex;align-items:center;gap:12px;margin-bottom:8px;flex-wrap:wrap;}
.chart-title-row .t{font-size:var(--fs-label);line-height:16px;font-weight:400;color:var(--text-muted);}
.chart-stamp{font-size:var(--fs-label);line-height:16px;font-weight:400;color:var(--text-muted);text-align:right;margin-top:8px;}
.chart-grid-2{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;}
.chart-grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;}
.legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:12px;font-size:var(--fs-label);line-height:16px;font-weight:400;color:var(--text-muted);}
.legend span{display:inline-flex;align-items:center;gap:8px;}
.legend i{width:10px;height:10px;border-radius:2px;display:inline-block;}
.seg-toggle{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden;height:36px;flex:none;}
.seg-btn{border:none;border-right:1px solid var(--border);background:var(--card);color:var(--text-muted);font-size:var(--fs-label);font-weight:600;padding:0 14px;height:36px;cursor:pointer;font-family:inherit;}
.seg-btn:last-child{border-right:none;}
.seg-btn.active{background:var(--accent-bg);color:var(--accent-dark);}
.h-select{height:36px;font-size:var(--fs-body);font-weight:600;padding:0 26px 0 10px;border:1px solid var(--border);border-radius:8px;background-color:var(--card);color:var(--text);font-family:inherit;cursor:pointer;flex:none;}

/* dual-handle dated range slider */
.rslider-outer{margin-top:46px;position:relative;}
.rslider-wrap{position:relative;}
.rslider-track{position:relative;height:48px;margin:0;}
.rslider-track::before{content:"";position:absolute;top:50%;left:0;right:0;height:28px;transform:translateY(-50%);background:rgba(34,31,26,0.04);border-radius:8px;}
.rslider-fill{position:absolute;top:50%;height:28px;transform:translateY(-50%);background:rgba(43,92,138,0.16);border:1px solid var(--accent);box-sizing:border-box;border-radius:8px;pointer-events:none;}
.rslider-today-line{position:absolute;top:-18px;bottom:8px;width:2px;background:var(--accent-dark);transform:translateX(-50%);pointer-events:none;}
.rslider-today-label{position:absolute;top:-34px;transform:translateX(-50%);font-size:var(--fs-label);line-height:16px;font-weight:600;color:var(--accent-dark);white-space:nowrap;pointer-events:none;}
.rslider-handle{position:absolute;top:50%;width:44px;height:44px;transform:translate(-50%,-50%);cursor:grab;touch-action:none;z-index:2;display:flex;align-items:center;justify-content:center;border-radius:50%;}
.rslider-handle::before{content:"";width:24px;height:24px;border-radius:50%;background:var(--card);border:1.5px solid var(--accent);box-shadow:0 1px 3px rgba(0,0,0,.18);}
.rslider-handle:active{cursor:grabbing;}
.rslider-range-text{font-size:var(--fs-body);line-height:22px;font-weight:400;color:var(--text);margin-top:20px;text-align:left;}

.add-lens-wrap{position:relative;margin:16px 0 8px;padding-left:0;}
.add-lens-btn{border:1px solid var(--border);background:var(--card);color:var(--text);font-size:var(--fs-body);line-height:22px;font-weight:600;padding:8px 16px;border-radius:20px;cursor:pointer;font-family:inherit;}
.add-lens-btn:hover{border-color:var(--accent);}
.add-lens-menu{position:absolute;top:calc(100% + 8px);left:0;background:var(--card);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.12);min-width:260px;z-index:15;padding:4px;max-height:340px;overflow-y:auto;}
.add-lens-item{display:flex;justify-content:space-between;gap:12px;width:100%;border:none;background:none;text-align:left;padding:8px 12px;border-radius:6px;cursor:pointer;font-family:inherit;font-size:var(--fs-body);line-height:22px;color:var(--text);}
.add-lens-item:hover{background:var(--bg-alt);}
.add-lens-empty{padding:12px;font-size:var(--fs-label);line-height:16px;color:var(--text-muted);}
.add-lens-group{padding:4px 0;}
.add-lens-group+.add-lens-group{border-top:1px solid var(--border);margin-top:4px;}
.add-lens-group-label{padding:6px 12px 2px;font-size:var(--fs-label);line-height:16px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:600;}

.legend-table-wrap{margin-top:8px;}
.legend-header{display:grid;grid-template-columns:1fr 64px 150px 130px;gap:12px;align-items:center;padding:0 12px 8px;font-size:var(--fs-label);line-height:16px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:600;border-bottom:1px solid var(--border);}
.legend-row-wrap{border-bottom:1px solid var(--border);}
.legend-row-wrap:last-child{border-bottom:none;}
.legend-row{display:grid;grid-template-columns:1fr 64px 150px 130px;gap:12px;align-items:center;padding:12px;}
.lt-lens{display:flex;align-items:center;gap:8px;min-width:0;font-weight:600;font-size:var(--fs-body);line-height:22px;}
.lt-lens .sw{width:10px;height:10px;border-radius:3px;flex:none;}
.lt-p50{font-variant-numeric:tabular-nums;font-size:var(--fs-body);line-height:22px;}
.lt-range{font-variant-numeric:tabular-nums;font-size:var(--fs-body);line-height:22px;color:var(--text-muted);white-space:nowrap;}
.lt-actions{display:flex;align-items:center;gap:8px;}
.lt-action-link{border:none;background:none;color:var(--accent);font-size:var(--fs-label);line-height:16px;font-weight:600;cursor:pointer;padding:8px 0;font-family:inherit;text-decoration:underline;text-underline-offset:2px;white-space:nowrap;}
.lt-remove{border:none;background:none;color:var(--text-muted);font-size:var(--fs-label);cursor:pointer;padding:4px 8px;font-family:inherit;line-height:16px;border-radius:6px;}
.lt-remove:hover{color:var(--red);background:var(--red-bg);}
.legend-expand{padding:0 12px 16px;}
.lens-config{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:16px;padding:12px 16px;background:var(--bg-alt);border-radius:8px;}
.lens-config label{font-size:var(--fs-label);line-height:16px;color:var(--text-muted);display:block;margin-bottom:4px;}

.table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);}
table{border-collapse:collapse;width:100%;font-size:var(--fs-body);line-height:22px;min-width:420px;}
th,td{padding:8px 12px;text-align:right;border-bottom:1px solid var(--border);white-space:nowrap;height:40px;box-sizing:border-box;}
th:first-child,td:first-child{text-align:left;}
th{background:var(--bg-alt);font-size:var(--fs-label);line-height:16px;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);font-weight:600;position:sticky;top:0;height:auto;}
tr:last-child td{border-bottom:none;}
tbody tr:hover{background:var(--bg-alt);}
.cell-note{display:block;font-size:var(--fs-label);line-height:16px;color:var(--text-muted);white-space:normal;font-weight:400;margin-top:4px;}
.table-narrative table{min-width:0;table-layout:fixed;}
.table-narrative td{white-space:normal;height:auto;padding-top:8px;padding-bottom:8px;}

.moved-filters{position:sticky;top:0;z-index:2;display:flex;gap:8px;flex-wrap:wrap;align-items:center;min-height:44px;padding:6px 0;margin-bottom:16px;background:var(--bg);border-bottom:1px solid var(--border);}
.chip{display:inline-flex;align-items:center;justify-content:center;height:32px;border:1px solid var(--border);background:var(--card);color:var(--text-muted);font-size:var(--fs-label);line-height:16px;text-transform:uppercase;letter-spacing:.06em;padding:0 16px;border-radius:18px;cursor:pointer;font-weight:600;font-family:inherit;}
.chip[data-active="1"]{background:var(--accent);border-color:var(--accent);color:#fff;}
.moved-month-group{margin-top:20px;}
.moved-month-group:first-of-type{margin-top:0;}
.month-header{font-size:var(--fs-label);line-height:16px;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 8px;}

details{margin-top:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--card);}
details summary{padding:12px 16px;cursor:pointer;font-weight:600;font-size:var(--fs-body);line-height:22px;color:var(--accent-dark);list-style:none;}
details summary::-webkit-details-marker{display:none;}
details summary::before{content:"\25b8";margin-right:6px;}
details[open] summary::before{content:"\25be";}
details .inner{padding:0 16px 16px;}

.tag{display:inline-block;font-size:var(--fs-label);line-height:16px;font-weight:600;padding:4px 8px;border-radius:20px;}
.tag.bull{background:var(--green-bg);color:var(--green);}
.tag.bear{background:var(--red-bg);color:var(--red);}
.tag.up{background:var(--green-bg);color:var(--green);}
.tag.down{background:var(--red-bg);color:var(--red);}
.tag.flat{background:var(--bg-alt);color:var(--text-muted);}

.voices-list{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);overflow:hidden;}
.voice-row{border-bottom:1px solid var(--border);padding:12px 16px;}
.voice-row:last-child{border-bottom:none;}
.voice-name{font-weight:600;font-size:var(--fs-body);line-height:22px;}
.voice-claim{font-size:var(--fs-body);line-height:22px;color:var(--text);margin-top:2px;}
.voice-src{font-size:var(--fs-label);line-height:16px;color:var(--text-muted);margin-top:4px;}
.voice-row blockquote{margin:8px 0 0;padding:10px 12px;background:var(--bg-alt);border-left:3px solid var(--accent);border-radius:0 6px 6px 0;font-size:var(--fs-body);line-height:22px;font-style:italic;color:var(--text);}

.kpi-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:16px;}
.kpi{background:var(--card);border:1px solid var(--border);border-radius:var(--radius);padding:16px;}
.kpi .lbl{font-size:var(--fs-label);line-height:16px;font-weight:400;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:8px;}
.kpi .big{font-size:var(--fs-claim);line-height:28px;font-weight:600;font-variant-numeric:tabular-nums;}
.kpi .sub{font-size:var(--fs-label);line-height:16px;color:var(--text-muted);margin-top:4px;}

.case-row td.prob{min-width:200px;}
input[type="range"].case-slider{width:150px;max-width:100%;vertical-align:middle;accent-color:var(--accent);height:32px;}
.prob-val{font-variant-numeric:tabular-nums;font-weight:600;margin-left:8px;font-size:var(--fs-label);line-height:16px;}
.case-title-row{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:start;}
.case-name{font-weight:600;font-size:var(--fs-body);line-height:22px;min-width:0;}
.case-note{display:block;font-size:var(--fs-label);line-height:16px;color:var(--text-muted);font-weight:400;margin-top:4px;white-space:normal;}
.composed-box{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;margin-top:16px;padding:16px;background:var(--accent-bg);border-radius:var(--radius);}
.composed-box .composed-label{font-size:var(--fs-label);line-height:16px;font-weight:400;color:var(--text-muted);}
.composed-box .big{font-size:var(--fs-claim);line-height:28px;font-weight:600;color:var(--accent-dark);font-variant-numeric:tabular-nums;}
.alloc-chip{font-size:var(--fs-label);line-height:16px;font-weight:600;padding:4px 12px;border-radius:20px;background:var(--amber-bg);color:var(--amber);border:1px solid transparent;font-variant-numeric:tabular-nums;}

.calc-control-bar{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:12px;align-items:end;margin:14px 0 20px;}
.cc-dist{grid-column:span 3;}
.cc-horizon{grid-column:span 2;}
.cc-spot{grid-column:span 2;}
.cc-iv{grid-column:span 2;}
.calc-control-bar label{display:block;font-size:var(--fs-label);line-height:16px;font-weight:400;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:4px;}
.calc-control-bar select{width:100%;height:40px;font-size:var(--fs-body);padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--card);color:var(--text);font-family:inherit;}
.cc-input{display:flex;align-items:center;gap:6px;height:40px;border:1px solid var(--border);border-radius:8px;padding:0 12px;background:var(--card);}
.cc-input input{border:none;background:none;width:100%;height:100%;font-size:var(--fs-body);font-variant-numeric:tabular-nums;color:var(--text);font-family:inherit;}
.cc-input input:focus{outline:none;}
.cc-input .unit{font-size:var(--fs-label);color:var(--text-muted);white-space:nowrap;}
tr.best td:first-child{border-left:2px solid var(--accent);}
tr.best{background:var(--accent-bg);}

.ticker-list{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);overflow:hidden;}
.ticker-row{display:grid;grid-template-columns:100px 1fr 120px 100px 120px;gap:12px;align-items:center;padding:12px 16px;border-bottom:1px solid var(--border);}
.ticker-row:last-child{border-bottom:none;}
.ticker-row:hover{background:var(--bg-alt);}
.ticker-row .tk{font-weight:600;}
.ticker-row .num{text-align:right;}

@media (max-width:900px){
  .layout{grid-template-columns:minmax(0,1fr);}
  nav.sidenav{display:none;}
  .mobile-topbar{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:0;z-index:6;height:44px;padding:0 16px;background:var(--bg);border-bottom:1px solid var(--border);}
  .mobile-topbar .name{font-size:var(--fs-body);font-weight:600;color:var(--text);}
  main{padding:16px 16px 64px;}
  .chart-grid-2,.chart-grid-3{grid-template-columns:minmax(0,1fr);}
  .kpi-row{grid-template-columns:minmax(0,1fr);}
  .ticker-row{grid-template-columns:80px 1fr 90px;}
  .ticker-row .hide-mobile{display:none;}
}
@media (max-width:640px){
  .strip-row{grid-template-columns:repeat(2,minmax(0,1fr));}
  .strip-item.spot{grid-column:span 2;}
  .table-scroll.stack-mobile{overflow-x:visible;border:none;background:none;}
  .stack-mobile table{min-width:0;}
  .stack-mobile thead{display:none;}
  .stack-mobile tbody,.stack-mobile tr{display:block;}
  .stack-mobile tr{border:1px solid var(--border);border-radius:var(--radius);background:var(--card);margin-bottom:12px;padding:4px 0;}
  .stack-mobile td{display:flex;justify-content:space-between;align-items:center;text-align:left;border-bottom:1px solid var(--border);padding:0 12px;min-height:44px;height:auto;white-space:normal;}
  .stack-mobile tr td:last-child{border-bottom:none;}
  .stack-mobile td::before{content:attr(data-label);font-size:var(--fs-label);font-weight:400;color:var(--text-muted);margin-right:12px;flex:none;}
  .stack-mobile td:first-child::before{content:none;}
  .calc-control-bar{grid-template-columns:repeat(2,minmax(0,1fr));}
  .cc-dist,.cc-horizon,.cc-spot,.cc-iv{grid-column:span 1;}
  .legend-header{display:none;}
  .legend-row{grid-template-columns:1fr;row-gap:4px;}
  .lt-p50,.lt-range{font-size:var(--fs-label);color:var(--text-muted);}
  .lt-p50::before{content:"P50 ";}
  .lt-range::before{content:"90% band ";}
  .lt-actions{justify-content:space-between;margin-top:4px;}
}
