:root{
  --ink:#000000; --paper:#ffffff; --slate:#33373d; --mist:#badbde; --mist-soft:#e6f2f3;
  --sand:#d1c9b8; --red:#bb2121; --terra:#e15d42; --sage:#649367; --line:#e6e6e6;
  --wrap:1280px;
  --fs-eyebrow:12px; --fs-body:15px; --fs-small:13px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  font-family:'Outfit',system-ui,-apple-system,sans-serif;
  color:var(--ink); background:var(--paper);
  font-size:var(--fs-body); line-height:1.6; font-weight:400;
  font-variant-numeric:tabular-nums;
}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 40px}
.eyebrow{font-size:var(--fs-eyebrow);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--slate)}

/* header */
header{padding:28px 0 0}
.head-row{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.logo{height:26px;width:auto;display:block}
.head-meta{font-size:var(--fs-small);color:var(--slate);text-align:right}
.rule{height:1px;background:var(--ink);margin-top:20px}

/* hero */
.hero{background:var(--mist);padding:56px 0 60px;margin-bottom:0}
h1{font-size:clamp(32px,4.4vw,58px);font-weight:600;line-height:1.06;letter-spacing:-.02em;max-width:20ch}
.hero p.lede{margin-top:20px;max-width:62ch;font-size:17px;color:#16181b}

/* controls */
.controls{position:sticky;top:0;z-index:40;background:var(--paper);border-bottom:1px solid var(--line)}
.controls-inner{display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:14px 0}
.seg{display:flex;border:1px solid var(--ink);border-radius:2px;overflow:hidden}
.seg button{font:inherit;font-size:var(--fs-small);font-weight:500;padding:7px 14px;background:var(--paper);
  border:0;border-right:1px solid var(--ink);cursor:pointer;color:var(--ink);transition:background .15s}
.seg button:last-child{border-right:0}
.seg button:hover{background:var(--mist-soft)}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.custom{display:flex;align-items:center;gap:8px;font-size:var(--fs-small);color:var(--slate)}
.custom input{font:inherit;font-size:var(--fs-small);padding:6px 8px;border:1px solid var(--line);border-radius:2px;color:var(--ink)}
.range-label{margin-left:auto;font-size:var(--fs-small);color:var(--slate)}

/* nav */
.tabs{display:flex;gap:0;border-bottom:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs button{font:inherit;font-size:14px;font-weight:500;padding:14px 20px 12px;background:none;border:0;
  border-bottom:2px solid transparent;cursor:pointer;color:var(--slate);white-space:nowrap}
.tabs button:hover{color:var(--ink)}
.tabs button[aria-selected="true"]{color:var(--ink);border-bottom-color:var(--ink)}

/* sections */
section.panel{padding:44px 0 8px}
section.panel[hidden]{display:none}
.sec-head{margin-bottom:24px}
.sec-head h2{font-size:26px;font-weight:600;letter-spacing:-.01em;margin-top:6px}
.sec-head p{color:var(--slate);max-width:70ch;margin-top:8px;font-size:var(--fs-small)}

/* kpi */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:32px}
.kpi{border:1px solid var(--line);border-radius:2px;padding:20px}
.kpi .k-label{font-size:var(--fs-eyebrow);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--slate)}
.kpi .k-value{font-size:36px;font-weight:600;line-height:1.1;margin-top:10px;letter-spacing:-.02em}
.kpi .k-delta{font-size:var(--fs-small);font-weight:500;margin-top:8px;display:flex;align-items:center;gap:6px}
.up{color:var(--sage)} .down{color:var(--red)} .flat{color:var(--slate)}
.k-sub{font-size:12px;color:var(--slate);font-weight:400}

/* cards + charts */
.card{border:1px solid var(--line);border-radius:2px;padding:22px 22px 18px;background:var(--paper)}
.card h3{font-size:16px;font-weight:600;margin-bottom:4px}
.card .card-sub{font-size:12px;color:var(--slate);margin-bottom:16px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.grid-3{display:grid;grid-template-columns:2fr 1fr;gap:16px}
.chart-box{position:relative;height:320px}
.chart-box.sm{height:260px}
.chart-box.tall{height:420px}
.narrative{font-size:15px;line-height:1.65;color:var(--slate)}
.narrative h4{font-size:14px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink);margin:20px 0 6px}
.narrative h4:first-child{margin-top:4px}
.narrative p{margin:0 0 10px}
.narrative ul{margin:0 0 12px 18px;padding:0}
.narrative li{margin:0 0 6px}
.filter-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.filter-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--slate);font-weight:600}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips button{background:#fff;border:1px solid var(--line);color:var(--ink);font:500 13px/1.2 'Outfit',system-ui,sans-serif;padding:7px 12px;border-radius:999px;cursor:pointer;transition:background .15s,border-color .15s}
.chips button:hover{background:var(--mist-soft)}
.chips button[aria-pressed="true"]{background:var(--ink);color:#fff;border-color:var(--ink)}
.chips .count{opacity:.6;margin-left:6px;font-size:11px}
.chips button[aria-pressed="true"] .count{opacity:.75}
.recs{display:flex;flex-direction:column;gap:20px}
.rec-cal{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.rec-cal.four{grid-template-columns:repeat(4,1fr)}
@media (max-width:1000px){.rec-cal.four{grid-template-columns:repeat(2,1fr)}}
.rec-phase{border:1px solid var(--line);border-radius:2px;padding:16px;background:#fff}
.rec-phase.lead{background:var(--mist-soft)}
.rec-phase.peak{background:var(--ink);color:#fff}
.rec-phase.peak .p-label,.rec-phase.peak .p-months{color:#fff}
.rec-phase.sustain{background:var(--sand);color:var(--ink)}
.p-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:var(--slate);margin:0 0 6px}
.p-months{font-family:'Outfit',system-ui,sans-serif;font-size:20px;font-weight:600;color:var(--ink);margin:0 0 8px}
.p-note{font-size:13px;line-height:1.55;margin:0;color:inherit}
.rec-angles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.rec-angle{border:1px solid var(--line);border-radius:2px;padding:14px 16px;background:#fff}
.rec-angle h5{margin:0 0 6px;font-size:13px;font-weight:600;color:var(--ink);letter-spacing:.02em}
.rec-angle p{margin:0;font-size:13px;line-height:1.55;color:var(--slate)}
.rec-actions{border-top:1px solid var(--line);padding-top:14px}
.rec-actions h4{margin:0 0 8px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--slate);font-weight:600}
.rec-actions ol{margin:0;padding-left:20px;font-size:14px;line-height:1.6;color:var(--ink)}
.rec-actions ol li{margin:0 0 6px}
@media (max-width:800px){.rec-cal{grid-template-columns:1fr}.rec-angles{grid-template-columns:1fr}}
.rec-ideas{border-top:1px solid var(--line);padding-top:14px}
.rec-ideas-sub{margin:0 0 12px;font-size:12.5px;line-height:1.55;color:var(--slate)}
.rec-ideas-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.rec-ideas-col{border:1px solid var(--line);border-radius:2px;padding:14px 16px;background:#fff}
.rec-ideas-col h5{margin:0 0 10px;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--slate);font-weight:600}
.idea-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:12px}
.idea-list li{padding:0;border-top:1px dashed var(--line);padding-top:10px}
.idea-list li:first-child{border-top:none;padding-top:0}
.idea-title{margin:0 0 4px;font-size:13.5px;line-height:1.4;font-weight:600;color:var(--ink)}
.idea-meta{margin:0;font-size:12.5px;line-height:1.55;color:var(--slate)}
.idea-empty{color:var(--slate);font-style:italic;font-size:12.5px}
@media (max-width:800px){.rec-ideas-grid{grid-template-columns:1fr}}
.link-btn{background:none;border:0;padding:0;margin-left:6px;font:inherit;font-size:12px;color:var(--slate);cursor:pointer;text-decoration:underline}
.link-btn:hover{color:var(--ink)}
.stack{display:flex;flex-direction:column;gap:16px}
.mb{margin-bottom:16px}

/* chart legend toggles */
.toggles{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}
.toggles button{font:inherit;font-size:12px;font-weight:500;padding:5px 11px;border:1px solid var(--line);
  background:var(--paper);border-radius:999px;cursor:pointer;color:var(--slate);display:flex;align-items:center;gap:7px}
.toggles button[aria-pressed="true"]{border-color:var(--ink);color:var(--ink)}
.toggles .dot{width:9px;height:9px;border-radius:50%;display:inline-block}

/* tables */
.tbl-tools{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}
.tbl-tools input,.tbl-tools select{font:inherit;font-size:var(--fs-small);padding:7px 10px;border:1px solid var(--line);
  border-radius:2px;color:var(--ink);background:var(--paper)}
.tbl-tools input{min-width:220px}
.tbl-scroll{max-height:460px;overflow:auto;border-top:1px solid var(--line)}
table{width:100%;border-collapse:collapse;font-size:var(--fs-small)}
thead th{position:sticky;top:0;background:var(--paper);text-align:left;font-weight:600;font-size:11px;
  letter-spacing:.08em;text-transform:uppercase;color:var(--slate);padding:11px 10px;border-bottom:1px solid var(--ink);
  cursor:pointer;white-space:nowrap;user-select:none}
thead th.na{cursor:default}
thead th .arw{opacity:.35;margin-left:4px}
thead th[data-dir] .arw{opacity:1;color:var(--ink)}
tbody td{padding:10px;border-bottom:1px solid var(--line);vertical-align:top}
tbody tr:hover{background:var(--mist-soft)}
td.num,th.num{text-align:right;font-weight:500;white-space:nowrap}
td.kw{max-width:340px;word-break:break-word}
td.path{max-width:400px;word-break:break-all;color:var(--slate)}
.pill{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.04em;padding:2px 8px;border-radius:999px;
  background:var(--mist-soft);color:#1d3a3c;white-space:nowrap}
.empty{padding:32px 10px;color:var(--slate);font-size:var(--fs-small)}

/* callouts */
.callouts{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.callout{border:1px solid var(--ink);border-radius:2px;padding:24px;background:var(--paper);display:flex;flex-direction:column}
.callout.fill{background:var(--mist);border-color:var(--mist)}
.callout.sand{background:var(--sand);border-color:var(--sand)}
.callout .c-stat{font-size:42px;font-weight:600;line-height:1.05;letter-spacing:-.025em;margin:12px 0 10px}
.callout p{font-size:var(--fs-small);color:#16181b}
.callout .c-note{margin-top:auto;padding-top:14px;font-size:11px;color:var(--slate);letter-spacing:.04em;text-transform:uppercase;font-weight:600}

.notes{border-top:1px solid var(--ink);margin-top:52px;padding:24px 0 60px;font-size:12px;color:var(--slate)}
.notes h4{font-size:var(--fs-eyebrow);font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--slate);margin-bottom:10px}
.notes ul{list-style:none;display:grid;gap:6px;max-width:90ch}
.notes li::before{content:"—";margin-right:8px;color:var(--ink)}
.notes a{color:var(--ink)}

.skeleton{background:linear-gradient(90deg,#f2f2f2 25%,#e9e9e9 37%,#f2f2f2 63%);background-size:400% 100%;
  animation:sk 1.4s ease infinite;border-radius:2px}
@keyframes sk{0%{background-position:100% 50%}100%{background-position:0 50%}}
#loading{padding:80px 0}
#loading .kpis .kpi{height:126px;border:0}

@media (max-width:1000px){
  .kpis{grid-template-columns:repeat(2,1fr)}
  .grid-2,.grid-3{grid-template-columns:1fr}
  .callouts{grid-template-columns:1fr}
}
@media (max-width:640px){
  .wrap{padding:0 20px}
  .kpis{grid-template-columns:1fr}
  .kpi .k-value{font-size:30px}
  .hero{padding:38px 0 40px}
  .range-label{margin-left:0;width:100%}
  .chart-box{height:280px}
}
