@font-face{font-family:Fraunces;font-style:normal;font-weight:300 900;font-display:swap;src:url(fonts/fraunces-normal-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:Fraunces;font-style:normal;font-weight:300 900;font-display:swap;src:url(fonts/fraunces-normal-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:200 900;font-display:swap;src:url(fonts/source-serif-4-normal-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:200 900;font-display:swap;src:url(fonts/source-serif-4-normal-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibmplexsans-normal-500-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:500;font-display:swap;src:url(fonts/ibmplexsans-normal-500-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/ibmplexsans-normal-600-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:600;font-display:swap;src:url(fonts/ibmplexsans-normal-600-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
/* Night switchboard: a lit cell is a month with valid measurements, a dark cell is silence. Amber marks the reader's own stations. */
:root,html[data-theme="dark"]{--bg:#0a0e14;--panel:#111822;--panel-2:#18212d;--ink:#eef2f6;--ink-2:#d5dce4;--muted:#aeb9c6;--line:#2a3646;--line-soft:#1a2330;--accent:#8fd3ff;--focus:#ffd58a;--lit:#8fd3ff;--off:#161e29;--mine:#ffb454;--bad:#ff8f7a;--ok:#7fe0b0;
 --serif:"Source Serif 4",Georgia,serif;--display:Fraunces,"Source Serif 4",Georgia,serif;--sans:"IBM Plex Sans",system-ui,sans-serif;color-scheme:dark}
html[data-theme="light"]{--bg:#f4f1ea;--panel:#fcfaf5;--panel-2:#ebe6db;--ink:#12161b;--ink-2:#252b32;--muted:#444d57;--line:#c5beb0;--line-soft:#e0dacd;--accent:#0d4f7c;--focus:#1a56b0;--lit:#14507e;--off:#e4dfd3;--mine:#a34a00;--bad:#9c2a12;--ok:#0b6146;color-scheme:light}
*{box-sizing:border-box}
[hidden]{display:none!important}
svg[hidden]{display:none}
html{background:var(--bg);-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1.06rem/1.62 var(--serif);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:var(--accent)}
:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.skip{position:absolute;left:-999px;top:0}.skip:focus{left:12px;top:8px;z-index:50;background:var(--panel);padding:8px 12px;border-radius:8px}
.topbar{display:flex;align-items:center;gap:10px;padding:10px 16px;border-bottom:1px solid var(--line-soft);font:500 .9rem/1.2 var(--sans)}
.brand{display:flex;align-items:center;gap:8px;color:var(--ink);text-decoration:none;font-weight:600}
.brand svg{width:20px;height:20px}
.spacer{flex:1}
.chip{color:var(--ink-2);text-decoration:none;padding:6px 9px;border:1px solid var(--line);border-radius:999px;min-height:32px}
.chip[aria-current]{background:var(--panel-2);color:var(--ink)}
.icon-btn{background:none;border:1px solid var(--line);color:var(--ink);border-radius:999px;width:36px;height:36px;display:grid;place-items:center;cursor:pointer}
main{max-width:1060px;margin:0 auto;padding:0 16px 60px}
.hero{padding:34px 0 8px;max-width:820px}
h1{font:600 clamp(1.9rem,5.2vw,3.1rem)/1.08 var(--display);margin:0 0 14px;letter-spacing:-.01em}
.deck{font-size:1.16rem;color:var(--ink-2);margin:0 0 18px}
.deck b,.num{font-family:var(--sans);font-weight:600;color:var(--ink)}
h2{font:600 clamp(1.35rem,3.2vw,1.8rem)/1.2 var(--display);margin:54px 0 12px;max-width:820px}
h2 .anchor{margin-left:8px;font-size:.8em;color:var(--muted);text-decoration:none;opacity:.6}
h3{font:600 1.02rem/1.3 var(--sans);margin:22px 0 6px}
p,ul,ol{max-width:720px}
.small{font:500 .86rem/1.5 var(--sans);color:var(--muted)}
.pick{display:flex;flex-wrap:wrap;gap:10px;align-items:end;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px 16px;margin:10px 0 6px;max-width:820px}
.pick label{font:600 .92rem/1.3 var(--sans);display:grid;gap:6px;flex:1 1 240px}
select,button.btn{font:500 1rem/1.2 var(--sans);color:var(--ink);background:var(--panel-2);border:1px solid var(--line);border-radius:10px;padding:11px 12px;min-height:44px}
button.btn{cursor:pointer}
.result{border-left:3px solid var(--mine);padding:4px 0 4px 16px;margin:18px 0 8px;max-width:820px}
.result p.lead{font-size:1.18rem;margin:0 0 8px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px;margin:14px 0}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 14px;font:500 .9rem/1.45 var(--sans)}
.card h4{font:600 1rem/1.25 var(--sans);margin:0 0 2px}
.card .where{color:var(--muted);margin:0 0 8px}
.yrs{display:grid;grid-template-columns:54px repeat(13,1fr);gap:2px;align-items:center;margin:3px 0}
.yrs span.l{color:var(--ink-2)}
.yrs i{display:block;height:14px;border-radius:2px;background:var(--off);border:1px solid var(--line-soft)}
.yrs i.v{background:var(--lit);border-color:var(--lit)}
.yrs i.p{background:repeating-linear-gradient(135deg,var(--lit) 0 2px,var(--off) 2px 5px)}
.yrs.head i{background:none;border:0;height:auto;font:500 .62rem/1 var(--sans);font-style:normal;color:var(--muted);text-align:center}
.card .facts{margin:8px 0 0;padding:0;list-style:none;color:var(--ink-2)}
.card .facts li{margin:2px 0}
.over{color:var(--bad);font-weight:600}.under{color:var(--ok);font-weight:600}
.share{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:12px 0}
.share .lbl{font:600 .9rem/1.2 var(--sans);margin-right:4px}
.sbtn{display:inline-flex;align-items:center;gap:7px;font:500 .9rem/1 var(--sans);color:var(--ink);background:var(--panel-2);border:1px solid var(--line);border-radius:999px;padding:9px 13px;min-height:40px;text-decoration:none;cursor:pointer}
.board-wrap{position:relative;margin:14px 0 6px;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}
.tabs button{font:600 .9rem/1 var(--sans);color:var(--ink-2);background:none;border:1px solid var(--line);border-radius:999px;padding:9px 13px;min-height:40px;cursor:pointer}
.tabs button[aria-pressed="true"]{background:var(--lit);border-color:var(--lit);color:var(--bg)}
canvas#board{display:block;width:100%;touch-action:pan-y;border-radius:6px}
.tip{position:absolute;pointer-events:none;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:6px 9px;font:500 .82rem/1.35 var(--sans);max-width:240px;z-index:5}
.legend{display:flex;flex-wrap:wrap;gap:14px;font:500 .84rem/1.3 var(--sans);color:var(--ink-2);margin:10px 0 0}
.legend span{display:inline-flex;align-items:center;gap:6px}
.sw{width:22px;height:10px;border-radius:2px;display:inline-block;border:1px solid var(--line)}
.sw.on{background:var(--lit)}.sw.off{background:var(--off)}.sw.me{background:var(--mine)}
.bars{display:grid;grid-template-columns:repeat(13,1fr);gap:4px;align-items:end;height:190px;margin:18px 0 4px;max-width:820px}
.bars div{display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%;font:600 .78rem/1 var(--sans)}
.bars b{display:block;width:100%;background:var(--lit);border-radius:3px 3px 0 0;min-height:2px}
.bars .low b{background:var(--bad)}
.bars span{margin:0 0 4px}
.bars em{font-style:normal;color:var(--muted);margin-top:5px;font-weight:500;font-size:.72rem}
table{border-collapse:collapse;font:500 .88rem/1.35 var(--sans);margin:12px 0;width:100%;max-width:820px}
th,td{padding:6px 8px;border-bottom:1px solid var(--line-soft);text-align:right}
th:first-child,td:first-child{text-align:left}
thead th{color:var(--muted);font-weight:600}
.scroll{overflow-x:auto;max-width:100%}
.verdict{display:inline-block;font:600 .78rem/1 var(--sans);padding:4px 8px;border-radius:999px;border:1px solid currentColor;margin-left:6px}
.verdict.fail{color:var(--bad)}.verdict.pass{color:var(--ok)}
.note{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px 16px;max-width:820px}
.site-footer{max-width:1060px;margin:0 auto;padding:22px 16px 40px;border-top:1px solid var(--line-soft);display:flex;flex-wrap:wrap;gap:8px 18px;font:500 .86rem/1.4 var(--sans);color:var(--muted)}
.site-footer a{color:var(--ink-2)}
@media (max-width:560px){.yrs{grid-template-columns:44px repeat(13,1fr)}.bars{gap:2px}.bars div{font-size:.62rem}.bars em{font-size:.56rem}}
