/* Stablify R56 — "Clarity through uncertainty". Warm graphite, one mineral accent, editorial serif headlines,
   tabular figures for every number. No external fonts or requests; no inline styles (CSP style-src 'self'). */
:root{
 --ink:#0d0f0f;--ink-2:#131617;--panel:#171b1c;--panel-2:#1d2223;--line:rgba(236,240,236,.09);--line-2:rgba(236,240,236,.16);
 --text:#f1efe9;--soft:#c9ccc7;--dim:#9aa29f;--mineral:#5fd6bd;--mineral-deep:#2f9c86;--mineral-glow:rgba(95,214,189,.16);
 --band:rgba(95,214,189,.14);--base:#8e9693;--floor:#e9b872;--breach:#ff8d73;
 --paper:#f6f6f3;--paper-ink:#121515;--paper-dim:#4c5452;
 --serif:"Iowan Old Style","Palatino Linotype","Book Antiqua",Palatino,Georgia,serif;
 --sans:-apple-system,BlinkMacSystemFont,"Segoe UI Variable Text","Segoe UI","Helvetica Neue",Arial,sans-serif;
 --mono:ui-monospace,"SF Mono","Cascadia Mono","Roboto Mono",Consolas,monospace;
 --gutter:clamp(16px,4vw,56px);--max:1280px;--ease:cubic-bezier(.2,.7,.2,1);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ink);color:var(--text);font:400 16px/1.6 var(--sans);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums}
a{color:inherit}
:focus-visible{outline:2px solid var(--mineral);outline-offset:3px;border-radius:4px}
.skip{position:absolute;left:-9999px;top:8px;background:var(--mineral);color:var(--ink);padding:8px 14px;border-radius:6px;z-index:10}
.skip:focus{left:16px}
h1,h2{font-family:var(--serif);font-weight:400;letter-spacing:-.022em;margin:0}
h2{font-size:clamp(30px,4.2vw,52px);line-height:1.06;max-width:22ch}
.index,.kicker{font:500 12px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--mineral);margin:0 0 18px}

/* Header */
.top{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px var(--gutter);
 background:rgba(13,15,15,.82);backdrop-filter:saturate(140%) blur(12px);-webkit-backdrop-filter:saturate(140%) blur(12px);border-bottom:1px solid var(--line)}
.brand{display:inline-flex;align-items:center;gap:10px;min-height:40px;font:600 19px/1 var(--serif);letter-spacing:-.01em;text-decoration:none}
.brand-mark{width:18px;height:18px;border-radius:50%;background:conic-gradient(from 200deg,var(--mineral),var(--mineral-deep),var(--ink-2),var(--mineral));box-shadow:0 0 0 1px var(--line-2)}
.top nav{display:flex;align-items:center;gap:clamp(12px,2.4vw,28px);font-size:14px}
.top nav a{text-decoration:none;color:var(--soft);transition:color .2s}
.top nav a:hover{color:var(--text)}
.top .top-cta{color:var(--text);border:1px solid var(--line-2);padding:8px 14px;border-radius:999px}

/* Buttons */
.btn{display:inline-flex;align-items:center;gap:10px;min-height:46px;padding:12px 22px;border-radius:999px;font:600 15px/1 var(--sans);text-decoration:none;cursor:pointer;
 border:1px solid transparent;transition:transform .18s var(--ease),background .2s,border-color .2s,box-shadow .25s}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--mineral);color:#06201b;box-shadow:0 8px 30px -12px var(--mineral)}
.btn-primary:hover{background:#79e2cc;box-shadow:0 10px 36px -10px var(--mineral)}
.btn-quiet{background:transparent;color:var(--text);border-color:var(--line-2)}
.btn-quiet:hover{border-color:var(--soft)}

/* Hero */
.hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:clamp(28px,5vw,72px);align-items:center;max-width:var(--max);margin:0 auto;
 padding:clamp(48px,8vw,104px) var(--gutter) clamp(56px,8vw,96px)}
.hero h1{font-size:clamp(46px,7vw,92px);line-height:.98;max-width:9.5ch}
.hero h1 em{font-style:italic;color:var(--mineral)}
.lede{font-size:clamp(17px,1.5vw,19px);color:var(--soft);max-width:44ch;margin:26px 0 30px}
.hero-actions{display:flex;flex-wrap:wrap;gap:12px}
.hero-note{margin:22px 0 0;font:12px/1.5 var(--mono);color:var(--dim)}
.hero-figure{margin:0;padding:clamp(16px,2vw,24px);border-radius:20px;background:linear-gradient(180deg,var(--panel),var(--ink-2));border:1px solid var(--line);
 box-shadow:0 40px 120px -60px rgba(95,214,189,.35),inset 0 1px 0 rgba(255,255,255,.04)}
.hero-switch{display:inline-flex;gap:4px;padding:4px;border-radius:999px;background:var(--ink);border:1px solid var(--line);margin-bottom:12px}
.hero-switch button,.preset-row button{font:500 13px/1 var(--sans);color:var(--soft);background:transparent;border:0;border-radius:999px;padding:9px 14px;cursor:pointer;transition:background .2s,color .2s}
.hero-switch button[aria-pressed=true],.preset-row button[aria-pressed=true]{background:var(--panel-2);color:var(--text);box-shadow:inset 0 0 0 1px var(--line-2)}
.hero-figure figcaption{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:12.5px;color:var(--dim);margin-top:10px}
.key{display:inline-block;width:16px;height:3px;border-radius:2px;margin-right:6px;vertical-align:middle}
.key-scenario{background:var(--mineral)}.key-band{height:10px;background:var(--band);box-shadow:inset 0 0 0 1px rgba(95,214,189,.35)}
.key-base{background:var(--base)}.key-floor{background:repeating-linear-gradient(90deg,var(--floor) 0 4px,transparent 4px 7px)}

/* Charts */
.chart{display:block;width:100%;height:auto;overflow:visible}
.chart .grid line{stroke:var(--line);stroke-width:1}
.chart .axis text{fill:var(--dim);font:11px var(--mono)}
.chart .band{fill:var(--band);transition:d .45s var(--ease)}
.chart .line{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round;transition:d .45s var(--ease)}
.chart .line-scenario{stroke:var(--mineral);filter:drop-shadow(0 0 6px rgba(95,214,189,.45))}
.chart .line-base{stroke:var(--base);stroke-width:1.6;stroke-dasharray:1 0}
.chart .line-alt{stroke:rgba(236,240,236,.18);stroke-width:1.2}
.chart .floor{stroke:var(--floor);stroke-width:1.4;stroke-dasharray:5 5}
.chart .floor-label{fill:var(--floor);font:11px var(--mono)}
.chart .breach{fill:var(--breach)}
.chart .end-label{font:600 12px var(--mono);fill:var(--text)}
.chart .end-base{fill:var(--base)}
.hero-chart .line-scenario,.hero-chart .line-base,.hero-chart .line-alt{stroke-dasharray:1400;stroke-dashoffset:1400;animation:draw 1.6s var(--ease) forwards}
.hero-chart .line-base{animation-delay:.15s}.hero-chart .line-scenario{animation-delay:.55s}
.hero-chart .band{opacity:0;animation:fade .9s var(--ease) 1.1s forwards}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes fade{to{opacity:1}}

/* Problem */
.problem,.uses,.how,.lab-head{max-width:var(--max);margin:0 auto;padding:clamp(56px,8vw,112px) var(--gutter) 0}
.problem-list{list-style:none;padding:0;margin:40px 0 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(18px,3vw,40px);counter-reset:p}
.problem-list li{position:relative;padding-top:22px;border-top:1px solid var(--line-2);color:var(--soft);font-size:16px}
.problem-list li strong{display:block;font:400 22px/1.25 var(--serif);color:var(--text);margin-bottom:10px;letter-spacing:-.01em}

/* Lab */
.lab{padding-bottom:clamp(40px,6vw,80px)}
.lab-intro{color:var(--soft);max-width:60ch;margin:22px 0 0}
.lab-grid{max-width:var(--max);margin:40px auto 0;padding:0 var(--gutter);display:grid;grid-template-columns:minmax(300px,380px) minmax(0,1fr);gap:clamp(20px,3vw,36px);align-items:start}
.lab-grid[hidden]{display:none}
.lab-controls{position:sticky;top:76px;display:flex;flex-direction:column;gap:14px}
fieldset{margin:0;border:1px solid var(--line);border-radius:16px;padding:16px 18px 6px;background:var(--panel)}
legend{font:600 12px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim);padding:0 6px;display:flex;align-items:center;gap:8px}
.tag{font:600 10px/1 var(--mono);letter-spacing:.08em;color:var(--floor);border:1px solid rgba(233,184,114,.45);padding:3px 6px;border-radius:999px}
.preset-row{display:flex;flex-wrap:wrap;gap:4px;margin:6px 0 4px}
.preset-row button{border:1px solid var(--line)}
.preset-desc{font-size:13px;color:var(--dim);margin:8px 0 10px;line-height:1.5}
.lever{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:4px 12px;padding:10px 0;border-bottom:1px solid var(--line)}
.lever:last-child{border-bottom:0}
.lever label{font-size:14px;color:var(--soft)}
.lever output{font:600 14px var(--mono);color:var(--text);min-width:9ch;text-align:right}
.lever output.changed{color:var(--mineral)}
input[type=range]{grid-column:1/-1;-webkit-appearance:none;appearance:none;width:100%;height:28px;background:transparent;margin:0;cursor:pointer;--fill:50%}
input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:4px;background:linear-gradient(90deg,var(--mineral) 0 var(--fill),var(--line-2) var(--fill) 100%)}
input[type=range]::-moz-range-track{height:4px;border-radius:4px;background:var(--line-2)}
input[type=range]::-moz-range-progress{height:4px;border-radius:4px;background:var(--mineral)}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;margin-top:-7px;border-radius:50%;background:var(--text);border:3px solid var(--ink);box-shadow:0 0 0 1px var(--mineral),0 2px 8px rgba(0,0,0,.5);transition:transform .15s}
input[type=range]::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--text);border:3px solid var(--ink);box-shadow:0 0 0 1px var(--mineral)}
input[type=range]:active::-webkit-slider-thumb{transform:scale(1.18)}
input[type=range]:focus-visible{outline:none}
input[type=range]:focus-visible::-webkit-slider-thumb{box-shadow:0 0 0 3px var(--mineral)}
input[type=range]:focus-visible::-moz-range-thumb{box-shadow:0 0 0 3px var(--mineral)}
.lab-buttons{display:flex;gap:10px;flex-wrap:wrap}
.lab-results{display:flex;flex-direction:column;gap:16px;min-width:0}
.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.kpi{background:var(--panel);padding:16px 16px 14px}
.kpi dt{font:500 11px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.kpi dd{margin:8px 0 0;font:400 clamp(22px,2.4vw,30px)/1.05 var(--serif);letter-spacing:-.01em}
.kpi .delta{display:block;font:600 12px/1.4 var(--mono);margin-top:6px;color:var(--dim)}
.kpi .up{color:var(--mineral)}.kpi .down{color:var(--breach)}.kpi .warn{color:var(--floor)}
.lab-figure{margin:0;border:1px solid var(--line);border-radius:16px;background:var(--panel);padding:16px 18px 18px}
.fig-title{font:600 13px/1.4 var(--sans);color:var(--text);margin:0 0 10px;display:flex;flex-direction:column;gap:2px}
.fig-sub{font:400 12px/1.4 var(--sans);color:var(--dim)}
.sens{display:flex;flex-direction:column;gap:9px}
.sens-row{display:grid;grid-template-columns:150px minmax(0,1fr) 128px;align-items:center;gap:12px;font-size:13px}
.sens-row .name{color:var(--soft)}
.sens-row .track{position:relative;height:12px}
.sens-row .track::before{content:"";position:absolute;left:50%;top:-3px;bottom:-3px;width:1px;background:var(--line-2)}
.sens-row .bar{position:absolute;top:0;height:12px;border-radius:3px;transition:left .4s var(--ease),width .4s var(--ease)}
.sens-row .bar.neg{background:rgba(255,141,115,.75)}.sens-row .bar.pos{background:var(--mineral)}
.sens-row .val{font:12px var(--mono);color:var(--dim);text-align:right}
.compare[hidden]{display:none}
.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px}
table{border-collapse:collapse;width:100%;font-size:13px;min-width:520px}
th,td{padding:10px 12px;text-align:right;border-bottom:1px solid var(--line);white-space:nowrap}
th:first-child,td:first-child{text-align:left}
thead th{font:600 11px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--dim);background:var(--panel)}
td .swatch{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:8px;background:var(--mineral)}
.limits{border:1px solid var(--line);border-radius:16px;padding:14px 18px;background:var(--ink-2);color:var(--soft);font-size:14px}
.limits summary{cursor:pointer;font-weight:600;color:var(--text)}
.limits h3{font:600 12px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--dim);margin:16px 0 6px}
.limits ul{margin:0;padding-left:18px}
.limits li{margin:4px 0}
.noscript{color:var(--floor);font-size:14px;max-width:var(--max);margin:24px auto 0;padding:0 var(--gutter)}

/* Uses: light editorial index, not cards */
.uses{max-width:none;background:var(--paper);color:var(--paper-ink);padding-bottom:clamp(56px,8vw,112px);margin-top:clamp(40px,6vw,80px)}
.uses>*{max-width:var(--max);margin-left:auto;margin-right:auto}
.uses .index{color:#1d6a5a}
.uses-list{margin:44px auto 0;display:grid;grid-template-columns:1fr;border-top:1px solid rgba(18,21,21,.16)}
.uses-list div{display:grid;grid-template-columns:minmax(160px,.7fr) minmax(0,2fr);gap:12px 40px;padding:22px 0;border-bottom:1px solid rgba(18,21,21,.16);transition:padding .25s var(--ease)}
.uses-list div:hover{padding-left:10px}
.uses-list dt{font:400 clamp(22px,2.4vw,30px)/1.1 var(--serif);letter-spacing:-.015em}
.uses-list dd{margin:0;color:var(--paper-dim);font-size:16px;align-self:center;max-width:62ch}

/* How it works */
.flow{list-style:none;padding:0;margin:44px 0 0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.flow li{background:var(--panel);padding:22px 20px 24px;display:flex;flex-direction:column;gap:10px;position:relative}
.flow-n{font:600 12px var(--mono);color:var(--mineral)}
.flow b{font:400 24px/1.1 var(--serif)}
.flow li span:last-child{font-size:14px;color:var(--soft)}
.kinds{display:flex;flex-wrap:wrap;gap:12px 32px;margin:28px 0 0;color:var(--dim);font-size:14px}
.kinds p{margin:0;display:flex;align-items:center;gap:10px}
.kind{font:600 11px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;padding:6px 9px;border-radius:999px;border:1px solid}
.kind-obs{color:var(--text);border-color:var(--line-2)}.kind-hyp{color:var(--floor);border-color:rgba(233,184,114,.5)}.kind-sim{color:var(--mineral);border-color:rgba(95,214,189,.5)}

/* Talk */
.talk{max-width:var(--max);margin:clamp(64px,9vw,120px) auto 0;padding:clamp(40px,6vw,72px) var(--gutter);border-top:1px solid var(--line);
 display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:24px 56px;align-items:end}
.talk h2{font-size:clamp(40px,6vw,78px);max-width:12ch}
.talk p{color:var(--soft);margin:0 0 22px;max-width:46ch}
.talk .btn{justify-self:start}
.foot{max-width:var(--max);margin:0 auto;padding:28px var(--gutter) 40px;display:flex;flex-wrap:wrap;gap:12px 28px;justify-content:space-between;color:var(--dim);font-size:13px;border-top:1px solid var(--line)}
.foot p{margin:0}.foot-note{max-width:60ch}

/* Reveal */
.reveal{opacity:0;transform:translateY(14px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.reveal.in{opacity:1;transform:none}

@media (max-width:1080px){
 .hero{grid-template-columns:1fr}
 .lab-grid{grid-template-columns:1fr}
 .lab-controls{position:static}
 .flow{grid-template-columns:1fr 1fr}
 .kpis{grid-template-columns:1fr 1fr}
}
@media (max-width:720px){
 .top nav a:not(.top-cta){display:none}
 .problem-list{grid-template-columns:1fr}
 .uses-list div{grid-template-columns:1fr}
 .flow{grid-template-columns:1fr}
 .talk{grid-template-columns:1fr}
 .sens-row{grid-template-columns:110px minmax(0,1fr) 92px;font-size:12px}
 .kpi dd{font-size:22px}
}
@media (prefers-reduced-motion:reduce){
 html{scroll-behavior:auto}
 *,*::before,*::after{animation:none!important;transition:none!important}
 .hero-chart .line-scenario,.hero-chart .line-base,.hero-chart .line-alt{stroke-dashoffset:0}
 .hero-chart .band{opacity:1}
 .reveal{opacity:1;transform:none}
}
