
/* Light daylight look, deliberately not theme-switched */
:root{
  color-scheme:light;
  --bg:#f6f4ef; --panel:#ffffff; --panel2:#eeebe4; --line:#dcd7cc; --ink:#1d2329; --muted:#56606a; --faint:#838c94;
  --A:#e5483d; --B:#e0a000; --C:#2f6fdb; --N:#5f6a73; --accent:#c8652a; --ok:#1f9a6f; --bad:#d63a2f;
  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --cond:"IBM Plex Sans Condensed","IBM Plex Sans",system-ui,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--ink)}
html{overflow-x:clip}
body{font-family:var(--sans);font-size:15px;line-height:1.55;padding-inline:16px;padding-block:28px 64px}
[hidden]{display:none!important}
.wrap{max-width:1180px;margin:0 auto;display:flex;flex-direction:column;gap:28px}
h1,h2,h3{font-family:var(--cond);font-weight:600;margin:0;text-wrap:balance}
h1{font-size:clamp(28px,4.4vw,44px);line-height:1.05;letter-spacing:.005em}
h2{font-size:clamp(20px,2.4vw,26px);line-height:1.15}
h3{font-size:15px}
p{margin:0}
.eyebrow{font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.lede{max-width:70ch;color:var(--muted);font-size:16px}
.num,.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}
header{display:flex;flex-direction:column;gap:12px}

/* readout strip */
.readouts{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden}
@media (max-width:900px){.readouts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:901px) and (max-width:1100px){.readouts{grid-template-columns:repeat(3,minmax(0,1fr))}}
.ro{background:var(--panel);padding:12px 14px;display:flex;flex-direction:column;gap:2px;min-width:0}
.ro .l{font-size:12px;color:var(--muted)}
.ro .v{font-family:var(--mono);font-size:22px;font-weight:500;font-variant-numeric:tabular-nums;line-height:1.2}
.ro .s{font-size:11.5px;color:var(--faint);font-family:var(--mono)}

.card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px 16px;display:flex;flex-direction:column;gap:10px;min-width:0}
.card-h{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap}
.card-h .hint{font-size:12px;color:var(--faint)}
svg{display:block;width:100%;height:auto}
.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--muted)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:16px;height:3px;border-radius:2px;display:inline-block}

/* controls */
.controls{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center;background:var(--panel2);border:1px solid var(--line);border-radius:8px;padding:12px 14px;position:sticky;top:env(safe-area-inset-top,0px);z-index:5}
.btn{font:inherit;font-size:13.5px;padding:8px 12px;border-radius:6px;border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.btn:hover{border-color:#c4beb2}
.btn:focus-visible,input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#1b0f07;font-weight:500}
.btn kbd{font-family:var(--mono);font-size:11px;color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:0 4px}
.btn.primary kbd{color:#3b2415;border-color:#b5673a}
.grow{display:flex;align-items:center;gap:10px;margin-left:auto;min-width:260px;flex:0 1 340px}
.grow label{font-size:13px;color:var(--muted);white-space:nowrap}
.grow input{flex:1;accent-color:var(--accent)}
.grow .v{font-family:var(--mono);font-size:13px;min-width:70px;text-align:right}
.toast{font-size:12.5px;color:var(--accent);min-height:1.2em;font-family:var(--mono)}

/* street */
.street-wrap{overflow-x:auto}
.house{cursor:pointer}
.house:focus-visible rect.roof{stroke:var(--ink);stroke-width:2}
@media (prefers-reduced-motion:no-preference){.house .roof,.house .tap{transition:fill .35s ease,stroke .35s ease,y1 .35s ease}}

/* explainer */
.explain{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
@media (max-width:900px){.explain{grid-template-columns:minmax(0,1fr)}}
.explain .card p{font-size:14px;color:var(--muted)}
.explain .card .big{font-family:var(--mono);font-size:24px;font-weight:500}
.method{border-top:3px solid var(--mc)}
.prose{display:flex;flex-direction:column;gap:12px;max-width:70ch}
.prose p{color:var(--ink)}
.prose p.muted{color:var(--muted)}
.keys{font-size:12.5px;color:var(--faint);font-family:var(--mono)}
.stage{position:relative;width:100vw;margin-inline:calc(50% - 50vw);height:clamp(420px,52vw,780px);border-radius:0;border-left:0!important;border-right:0!important;overflow:hidden;background:linear-gradient(180deg,#d7e6f2 0%,#e9eff1 55%,#e4e9e0 100%);border:1px solid var(--line)}
.stage canvas{display:block;width:100%;height:100%;cursor:grab;touch-action:none}
.stage canvas:active{cursor:grabbing}
.tag{position:absolute;left:0;top:0;transform:translate(-50%,-100%);font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;padding:2px 6px;border-radius:4px;background:rgba(255,255,255,.88);border:1px solid rgba(0,0,0,.12);pointer-events:none}
.tag.bad{border-color:var(--bad);color:var(--bad)!important}
.stage-legend{position:absolute;left:12px;bottom:10px;display:flex;gap:12px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);pointer-events:none;max-width:calc(100% - 330px)}
.stage-legend span{display:inline-flex;align-items:center;gap:6px}
.stage-legend i{width:14px;height:8px;border-radius:2px;display:inline-block}
.tag.v{font-size:11px;padding:1px 5px;background:rgba(255,255,255,.8)}
.stage-tools{position:absolute;left:12px;top:12px;display:flex;gap:8px;z-index:2}
.pill{font:inherit;font-size:12px;padding:5px 10px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.92);color:var(--muted);cursor:pointer;display:inline-flex;align-items:center;gap:6px}
.pill[aria-pressed="true"]{color:var(--ink);border-color:#c4beb2}
.pill .dot{width:8px;height:8px;border-radius:50%;background:var(--faint)}
.pill[aria-pressed="true"] .dot{background:var(--accent)}
.pill kbd{font-family:var(--mono);font-size:10.5px;color:var(--faint)}
.hmenu{position:absolute;z-index:4;min-width:220px;background:rgba(255,255,255,.98);border:1px solid #c4beb2;border-radius:8px;padding:6px;display:flex;flex-direction:column;gap:2px;box-shadow:0 8px 24px rgba(0,0,0,.14)}
.hmenu .hm-t{font-size:12px;color:var(--muted);padding:4px 8px 6px;font-family:var(--mono)}
.hmenu button{font:inherit;font-size:13px;text-align:left;background:none;border:0;color:var(--ink);padding:7px 8px;border-radius:5px;cursor:pointer}
.hmenu .sw{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:8px;vertical-align:-1px}
.hmenu button:hover,.hmenu button:focus-visible{background:#eef1f4;outline:none}
.stage-actions{position:absolute;right:12px;bottom:12px;left:12px;display:flex;gap:8px;z-index:3;flex-wrap:wrap;justify-content:flex-end}
.stage-toast{position:absolute;left:260px;right:400px;top:14px;text-align:center;background:rgba(255,255,255,.92);border-radius:6px;padding:0 10px;z-index:3;pointer-events:none}
.stage-toast:empty{display:none}
.stage-legend.under{position:static;max-width:none;margin-top:-16px}
@media (max-width:760px){.stage-hint{display:none}.stage-toast{top:auto;bottom:170px;left:12px;right:12px;max-width:none}.stage-actions .btn{font-size:12.5px;padding:6px 9px}.stage-actions kbd{display:none}}
.stage-actions .btn{box-shadow:0 3px 10px rgba(0,0,0,.12)}
.inset-row{display:flex;align-items:stretch}
.inset-row svg{flex:none;width:auto;height:auto}
.inset-sep{width:1px;background:var(--line);margin:6px 4px 10px}
.inset-note{font-size:11.5px;color:var(--ink);padding:0 6px 6px;max-width:360px}
.inset-warn{max-width:360px;display:flex;align-items:center;gap:8px;font-size:12px;font-weight:500;color:#8f1d14;background:rgba(214,58,47,.09);border:1px solid rgba(214,58,47,.45);border-radius:6px;padding:4px 8px;margin:4px 2px 2px}
.inset-warn .wi{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border-radius:50%;background:var(--bad);color:#fff;font-weight:700;font-size:11px;flex:none}
.inset-ok{font-size:12px;color:var(--ok);padding:4px 8px 0}
.inset.alarm{border-color:var(--bad)}
@media (prefers-reduced-motion:no-preference){
  .inset .pulse{animation:pulse 1.1s ease-in-out infinite}
  .inset.alarm{animation:alarm 1.6s ease-in-out infinite}
  .inset-warn .wi{animation:pulse 1.1s ease-in-out infinite}
}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.15}}
@keyframes alarm{0%,100%{box-shadow:0 0 0 0 rgba(255,107,95,0)}50%{box-shadow:0 0 0 4px rgba(255,107,95,.28)}}
.flexbox{position:absolute;left:12px;bottom:12px;background:rgba(255,255,255,.93);border:1px solid var(--line);border-radius:8px;padding:6px 8px 8px;z-index:3;width:252px;box-shadow:0 3px 10px rgba(0,0,0,.12)}
.fb-chart{pointer-events:none}
.fb-btns{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.fb-btns .btn{white-space:nowrap;justify-content:space-between;box-shadow:none;font-size:13px;padding:7px 10px}
.fb-h{white-space:nowrap;display:flex;justify-content:space-between;align-items:baseline;gap:6px;font-size:11px;color:var(--muted)}
.fb-k{white-space:nowrap;display:inline-flex;align-items:center;gap:4px;font-size:10.5px}
.fb-k i{display:inline-block;width:12px;height:8px;border-radius:2px;background:var(--muted);margin-left:6px;box-sizing:border-box}
.fb-k i.o{background:rgba(95,106,115,.35);border:1.2px solid var(--muted)}
.fb-n{font-size:11.5px;color:var(--ink);line-height:1.35}
@media (max-width:760px){.flexbox{bottom:64px;width:auto}.fb-chart{display:none}.fb-btns{margin-top:0}}
.inset{position:absolute;right:12px;top:12px;background:rgba(255,255,255,.93);border:1px solid var(--line);border-radius:8px;padding:4px 6px 0;z-index:3;pointer-events:none}
@media (max-width:760px){.inset{transform:scale(.62);transform-origin:top right}}
.stage-hint{position:absolute;left:14px;top:14px;font-size:11.5px;color:var(--faint);pointer-events:none;font-family:var(--mono)}
.nogl{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:14px;padding:20px;text-align:center}
.vrow{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}
@media (max-width:900px){.vrow{grid-template-columns:minmax(0,1fr)}}
.vside{display:flex;flex-direction:column;gap:12px}
.vside .ctl{display:flex;flex-direction:column;gap:4px}
.vside .ctl-top{display:flex;justify-content:space-between;font-size:13px;color:var(--muted)}
.vside input{accent-color:var(--accent);width:100%}
.vtab{display:grid;grid-template-columns:auto 1fr auto;gap:6px 10px;font-size:13px;align-items:baseline}
.vtab .mono{text-align:right}
.vside p{font-size:13.5px;color:var(--muted)}
.foot{font-size:12.5px;color:var(--faint);max-width:90ch}
.thesis{font-family:var(--cond);font-size:clamp(18px,2vw,22px);color:var(--accent);max-width:60ch}
.step-n{font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.block{display:flex;flex-direction:column;gap:16px}
.valstrip{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden;margin-top:-12px}
@media (max-width:900px){.valstrip{grid-template-columns:repeat(2,minmax(0,1fr))}}
.valstrip>div{background:var(--panel);padding:12px 14px;display:flex;flex-direction:column;gap:2px;min-width:0}
.valstrip .vs-sep{font-size:12px;color:var(--muted);font-family:var(--sans)}
.valstrip .hl{background:#fbf0e6;box-shadow:inset 0 3px 0 var(--accent)}
.valstrip .l,.kpi .l{font-size:12px;color:var(--muted)}
.valstrip .v{font-family:var(--mono);font-size:22px;font-weight:500;font-variant-numeric:tabular-nums;line-height:1.2}
.valstrip .s,.kpi .s{font-size:11.5px;color:var(--faint);font-family:var(--mono)}
.eqs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:900px){.eqs{grid-template-columns:minmax(0,1fr)}}
.eq{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px;display:flex;flex-direction:column;gap:6px}
.eq-l{font-size:12px;color:var(--muted)}
.eq-m{font-family:"Cambria Math","STIX Two Math",Georgia,serif;font-size:19px;color:var(--ink)}
.eq-w{font-size:12px;color:var(--faint)}
.kpis{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
@media (max-width:760px){.kpis{grid-template-columns:minmax(0,1fr)}}
.kpi{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px 16px;display:flex;flex-direction:column;gap:4px}
.kpi .v{font-family:var(--mono);font-size:28px;font-weight:500;font-variant-numeric:tabular-nums}
.kpi.lead{border-color:var(--accent);background:#fbf0e6}
.chart-scroll,.table-scroll{overflow-x:auto}
#chart{min-width:560px}
table{width:100%;border-collapse:collapse;font-size:13.5px;font-variant-numeric:tabular-nums}
th,td{padding:7px 10px;border-bottom:1px solid var(--line);text-align:right;white-space:nowrap}
th{font-weight:500;color:var(--muted);font-size:12px}
th.grp{text-align:center;border-bottom:1px solid #c4beb2}
td:first-child,th:first-child{text-align:left}
td{font-family:var(--mono)}
td:first-child{font-family:var(--sans)}
tr.now td{color:var(--ink)}
.tcard{padding:6px 8px 12px}
.tnote{font-size:12.5px;color:var(--muted);padding:0 10px}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;vertical-align:-1px}
.fleet-h{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:flex-end}
.fleet .big{font-family:var(--mono);font-size:clamp(30px,4vw,42px);font-weight:500;line-height:1.1;margin-top:4px}
.fleet .s{font-size:12px;color:var(--faint);font-family:var(--mono)}
.fleet-note{max-width:62ch;color:var(--muted);font-size:14px}
.twocol{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px}
@media (max-width:900px){.twocol{grid-template-columns:minmax(0,1fr)}}
.sense{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:8px;overflow:hidden}
@media (max-width:900px){.sense{grid-template-columns:repeat(2,minmax(0,1fr))}}
.sense>div{background:var(--panel2);padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.sense .l{font-size:12px;color:var(--muted)}.sense .v{font-family:var(--mono);font-size:19px}.sense .s{font-size:11.5px;color:var(--faint);font-family:var(--mono)}
.src{font-size:12.5px;color:var(--faint);max-width:90ch}
.notes-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
@media (max-width:900px){.notes-grid{grid-template-columns:minmax(0,1fr)}}
.notes ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:14px;color:var(--muted)}
.notes ol b{color:var(--ink);font-weight:500}
.facts{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto;gap:8px 16px;margin:0;font-size:13.5px}
@media (max-width:1000px){.facts{grid-template-columns:1fr auto 1fr auto}}
@media (max-width:640px){.facts{grid-template-columns:1fr auto}}
.notes ol:not(.refs){columns:2 380px;column-gap:32px;display:block}
.notes ol:not(.refs) li{break-inside:avoid;margin-bottom:8px}
.facts dt{color:var(--muted)}.facts dd{margin:0;font-family:var(--mono);text-align:right}
.notes .refs{font-size:12.5px;margin-top:6px}
.notes a,.src a{color:var(--accent)}
.foot a{color:var(--accent)}

.balance-brand{display:flex;justify-content:space-between;align-items:center;gap:20px}.balance-brand a{color:var(--ink);font-size:14px}.balance-brand img{display:block;max-width:180px;height:auto}.snapshot-note{font-size:16px;line-height:1.65;padding:18px 20px;border-left:4px solid var(--accent);background:#fff}.snapshot-note strong{display:block;margin-bottom:6px}.snapshot-status{font:14px var(--mono);padding:12px 16px;background:var(--panel2);border-radius:6px}.inset-row{flex-wrap:wrap}.inset{max-width:550px}.inset-note{max-width:530px}.inset-warn{max-width:530px}.lede{font-size:17px}.prose{font-size:16px}.balance-brand{margin-bottom:8px}@media(max-width:760px){.inset{max-width:550px;transform:scale(.48);width:550px}.stage{height:620px}.stage-actions{bottom:14px;justify-content:flex-start}.stage-tools{top:190px}.stage-legend{font-size:13px}.valstrip .l{font-size:14px}}

/* Fit the three inset charts together instead of wrapping the current chart. */
.inset{width:clamp(390px,38vw,550px);max-width:calc(100% - 24px);transform:none}
.inset-row{display:grid;grid-template-columns:minmax(0,150fr) minmax(0,176fr) minmax(0,210fr);gap:5px;align-items:start}
.inset-row svg{width:100%;height:auto;min-width:0}
.inset-sep{display:none}
.inset-note,.inset-warn{max-width:none}
.flexbox{width:230px}
.fb-chart>svg{width:100%;height:auto;max-height:112px}
.stage-hint{max-width:calc(60% - 32px);white-space:normal}
.chart-drawer{border:1px solid var(--line);border-radius:8px;background:var(--panel);margin-top:-12px}
.chart-drawer summary{cursor:pointer;padding:12px 16px;font-size:14px;font-weight:500}
.chart-drawer summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.chart-drawer-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(200px,1fr);gap:16px;padding:0 12px 12px;align-items:start}
.chart-drawer .inset{position:static;width:100%;max-width:none;transform:none;box-shadow:none;animation:none;pointer-events:auto}
.chart-drawer .fb-chart{display:block;padding:8px;min-width:0}
.chart-drawer .fb-chart>svg{max-height:130px}
.chart-drawer .fb-h{flex-wrap:wrap;white-space:normal;gap:6px}
.compact-charts .stage-hint{max-width:calc(100% - 28px)}
.compact-charts .stage-actions{justify-content:center}
.compact-charts .stage-toast{left:12px;right:12px;top:auto;bottom:100px}
@media(max-width:760px){
  .stage{height:clamp(360px,65svh,500px)}
  .stage-tools{top:12px}
  .chart-drawer-grid{grid-template-columns:minmax(0,1fr)}
  .chart-drawer .fb-chart{border-top:1px solid var(--line)}
  .chart-drawer .fb-chart>svg{max-height:112px}
  .compact-charts .stage-actions .btn{font-size:13px;min-height:40px;padding:8px 10px}
}
@media(max-width:420px){
  .chart-drawer .inset-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .chart-drawer .inset-row svg:last-child{grid-column:1/-1;width:min(100%,260px);justify-self:center}
}

.tag.hv{font-size:11px;font-weight:600;padding:1px 6px;border-width:1.5px;z-index:1}
.tag.hv.bad{background:var(--bad);color:#fff!important;border-color:var(--bad)}
.tag.hv.warn{background:#fff3e6;color:#b25400;border-color:#e07a2e}

/* The homepage uses the same live demo, without the long-form analysis. */
body.embed{padding:0;overflow:hidden}
body.embed .wrap{max-width:none;gap:16px}
body.embed .wrap>*:not(.stage):not(.chart-drawer):not(.stage-legend):not(.snapshot-status){display:none!important}
body.embed .stage{width:100%;margin:0;height:clamp(400px,55vw,620px);border:0;border-radius:0}
body.embed .stage-legend.under{padding:0 16px;font-size:13px}
body.embed .snapshot-status{margin:0 16px 16px}
body.embed .chart-drawer{margin:0 12px}
@media(max-width:760px){body.embed .stage{height:clamp(380px,65svh,500px)}}

/* hover tips on the lab buttons */
.btn[data-tip]{position:relative}
.btn[data-tip]::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 10px);right:0;width:260px;white-space:normal;text-align:left;font-size:12.5px;line-height:1.4;font-weight:400;color:#fff;background:rgba(29,35,41,.94);padding:8px 10px;border-radius:6px;box-shadow:0 6px 18px rgba(0,0,0,.2);opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity .15s ease .35s,transform .15s ease .35s;z-index:10}
.fb-btns .btn[data-tip]::after{right:auto;left:0}
.btn[data-tip]:hover::after,.btn[data-tip]:focus-visible::after{opacity:1;transform:none}
@media (hover:none){.btn[data-tip]::after{display:none}}
@media print{.btn[data-tip]::after{display:none}}

/* Reserve space for the supplied branding alongside the live controls. */
.stage-logo{position:absolute;right:16px;bottom:14px;width:130px;height:auto;z-index:2;pointer-events:none}
.stage-actions{right:164px}
.compact-charts .stage-logo{width:96px;right:12px;bottom:118px}
.compact-charts .stage-actions{right:12px;left:12px}
.stage-actions .btn[data-tip]:first-child::after{left:0;right:auto}
.btn[data-tip]::after{width:min(260px,80vw)}
@media print{.stage-logo{width:160px}}

.voltage-info{padding:14px 18px;border-left:3px solid var(--accent);background:var(--panel);font-size:14px;line-height:1.65}.voltage-info strong{display:block}.voltage-info a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
