@font-face{font-family:"Newsreader";font-style:normal;font-weight:200 800;font-display:swap;src:url(fonts/newsreader-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Newsreader";font-style:normal;font-weight:200 800;font-display:swap;src:url(fonts/newsreader-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,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:"Newsreader";font-style:italic;font-weight:400;font-display:swap;src:url(fonts/newsreader-italic-400-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Newsreader";font-style:italic;font-weight:400;font-display:swap;src:url(fonts/newsreader-italic-400-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,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:"Plex Sans";font-weight:400 600;font-display:swap;src:url(fonts/IBMPlexSans-latin.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Plex Sans";font-weight:400 600;font-display:swap;src:url(fonts/IBMPlexSans-latin-ext.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,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:"Plex Mono";font-weight:400;font-display:swap;src:url(fonts/IBMPlexMono-Regular.woff2) format("woff2")}

/* Light = listing paper with green bands, the precalculated lists the norms describe. Dark = the same page under a lamp at night. */
:root{
  --bg:#f3f0e4;--bg2:#e7ecdc;--card:#fbfaf3;--ink:#16201a;--muted:#334036;--faint:#435046;--line:#c3c9b4;--line-soft:#dce0cd;
  --accent:#a3261c;--accent-ink:#8a1d14;--band:#dbead2;--band-edge:#c6dcbb;--hole:#e3e0d2;--pick:#fff4c7;--ok:#245c33;--bad:#8a1d14;
  --serif:"Newsreader",Georgia,"Times New Roman",serif;--sans:"Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"Plex Mono",ui-monospace,Menlo,monospace;
  --to-top-bg:#f3f0e4;--to-top-fg:#16201a;color-scheme:light;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0c110e;--bg2:#121a15;--card:#131c17;--ink:#e6eee4;--muted:#bfcdc1;--faint:#a8b8ab;--line:#2c3b31;--line-soft:#1b2620;
  --accent:#ff8b74;--accent-ink:#ffa493;--band:#16241b;--band-edge:#1e3125;--hole:#0a0e0c;--pick:#3a3317;--ok:#8fd6a0;--bad:#ffa493;
  --to-top-bg:#0c110e;--to-top-fg:#e6eee4;color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#0c110e;--bg2:#121a15;--card:#131c17;--ink:#e6eee4;--muted:#bfcdc1;--faint:#a8b8ab;--line:#2c3b31;--line-soft:#1b2620;
  --accent:#ff8b74;--accent-ink:#ffa493;--band:#16241b;--band-edge:#1e3125;--hole:#0a0e0c;--pick:#3a3317;--ok:#8fd6a0;--bad:#ffa493;
  --to-top-bg:#0c110e;--to-top-fg:#e6eee4;color-scheme:dark}

*{box-sizing:border-box}
[hidden]{display:none!important}
svg[hidden]{display:none}
html{-webkit-text-size-adjust:100%;scroll-padding-top:92px}
body{margin:0;background:var(--bg);color:var(--ink);font:400 1.0625rem/1.62 var(--sans)}
a{color:var(--accent-ink)}
a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.skip-link{position:absolute;left:-999px;top:8px;background:var(--card);color:var(--ink);padding:8px 12px;z-index:50}
.skip-link:focus{left:8px}
.vh{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.mono,.k{font-family:var(--mono);font-weight:400;letter-spacing:.04em}

/* topbar */
.topbar{position:sticky;top:0;z-index:20;height:44px;display:flex;align-items:center;gap:14px;padding:0 max(14px,env(safe-area-inset-right)) 0 max(14px,env(safe-area-inset-left));background:var(--bg);border-bottom:1px solid var(--line-soft);font:500 .84rem/1 var(--sans)}
.brand{display:flex;align-items:center;gap:8px;color:var(--ink);text-decoration:none;white-space:nowrap}
.brand-mark{font:400 .78rem/1 var(--mono);color:var(--accent-ink);border:1.5px solid currentColor;border-radius:50%;width:24px;height:24px;display:grid;place-items:center}
.topnav{display:flex;gap:14px;overflow:hidden}
.topnav a{color:var(--muted);text-decoration:none;white-space:nowrap}
.topnav a:hover{color:var(--ink)}
.spacer{flex:1}
.chip{color:var(--muted);text-decoration:none;font:500 .78rem var(--mono);padding:4px 6px;border-radius:4px}
.chip[aria-current]{color:var(--ink);background:var(--line-soft)}
.icon-btn{background:none;border:1px solid var(--line);color:var(--ink);border-radius:50%;width:32px;height:32px;display:grid;place-items:center;cursor:pointer}
.progress{position:fixed;top:44px;left:0;right:0;height:1px;z-index:19;pointer-events:none;opacity:.7}
.progress span{display:block;height:100%;background:var(--accent);transform-origin:0 50%;transform:scaleX(0)}
html:not(.past-hero) .topnav{opacity:0;pointer-events:none}
@media (max-width:820px){.topnav{display:none}.brand span:last-child{max-width:46vw;overflow:hidden;text-overflow:ellipsis}}


/* rail */
.rail{position:fixed;right:10px;top:50%;transform:translateY(-50%);z-index:15;display:flex;flex-direction:column;gap:12px;opacity:0;transition:opacity .4s}
.past-hero .rail{opacity:1}
.rail a{position:relative;display:block;width:14px;height:14px}
.rail .dot{position:absolute;inset:5px;border-radius:50%;background:var(--faint);opacity:.7}
.rail a[aria-current] .dot{background:var(--accent);inset:3px;opacity:1}
.rail-label{position:absolute;right:22px;top:50%;transform:translateY(-50%);white-space:nowrap;font:500 .78rem var(--sans);color:var(--ink);background:var(--card);border:1px solid var(--line);padding:3px 8px;border-radius:4px;opacity:0;pointer-events:none}
.rail a:hover .rail-label,.rail a:focus-visible .rail-label{opacity:1}
@media (max-width:1240px){.rail{display:none}}

/* hero */
.hero{max-width:780px;margin:0 auto;padding:34px 20px 18px}
.kicker{font:500 .8rem/1.3 var(--sans);letter-spacing:.06em;text-transform:uppercase;color:var(--accent-ink);margin:0 0 10px}
h1{font:600 clamp(1.85rem,5.6vw,3.05rem)/1.08 var(--serif);margin:0 0 14px;letter-spacing:-.01em;text-wrap:balance}
.deck{font:400 1.15rem/1.55 var(--serif);color:var(--muted);margin:0}

/* the builder */
.build{max-width:1180px;margin:0 auto;padding:10px 20px 30px}
.build-grid{display:grid;gap:22px;grid-template-columns:minmax(0,1fr)}
.build-grid>*{min-width:0}
.ctl select{max-width:100%;text-overflow:ellipsis}
@media (min-width:980px){.build-grid{grid-template-columns:minmax(0,1fr) 430px;align-items:start}}
.shared{font:500 1rem/1.45 var(--serif);background:var(--pick);border-left:3px solid var(--accent);padding:10px 14px;margin:0 0 14px;border-radius:0 6px 6px 0}
.machine{display:flex;flex-wrap:nowrap;gap:clamp(4px,1.2vw,14px);align-items:flex-start;margin:4px 0 6px}
.grp{display:flex;flex-direction:column;align-items:center;gap:6px}
.digs{display:flex;gap:2px}
.d{display:inline-grid;place-items:center;width:clamp(1.3rem,5.2vw,3.3rem);height:clamp(2rem,7.4vw,4.4rem);font:400 clamp(1.2rem,4.8vw,3rem)/1 var(--mono);background:var(--card);border:1px solid var(--line);border-radius:5px;color:var(--ink)}
.grp .lbl{font:500 .72rem/1.15 var(--sans);color:var(--muted);text-align:center;max-width:8.5em;border-top:1.5px solid var(--line);padding-top:4px;width:100%}
.g-C .d{color:var(--accent-ink);border:2px solid var(--accent);border-radius:50%;background:transparent}
.g-C .lbl{color:var(--accent-ink);border-top-color:var(--accent)}
.d.flip{animation:flip .45s ease}
@keyframes flip{0%{transform:rotateX(90deg);background:var(--pick)}100%{transform:none}}
.cnp-text{margin:2px 0 4px;font-size:.92rem;color:var(--muted)}
.cnp-text .mono{font-size:1rem;color:var(--ink);letter-spacing:.12em}
.decoded{font:500 1.2rem/1.45 var(--serif);margin:6px 0 6px;max-width:42em;min-height:3em}
.exnote{font-size:.88rem;color:var(--muted);margin:0 0 12px;max-width:46em}
@media (max-width:600px){.rows{height:340px}}
.badge{display:flex;gap:8px;align-items:flex-start;font-size:.86rem;line-height:1.4;color:var(--muted);margin:0 0 16px;max-width:46em}
.badge svg{flex:none;margin-top:2px;color:var(--ok)}
@media (max-width:420px){.digs{gap:1px}.grp .lbl{font-size:.62rem;letter-spacing:-.01em}}

.ctl{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px 18px;padding:16px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
.ctl fieldset{border:0;margin:0;padding:0;min-width:0}
.ctl legend,.ctl label>span,.f-nnn>span{display:block;font:500 .78rem/1.2 var(--sans);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 6px}
.seg{display:flex;flex-wrap:wrap;gap:6px}
.seg button,.btn,.step button{font:500 .92rem/1 var(--sans);color:var(--ink);background:transparent;border:1px solid var(--line);border-radius:999px;min-height:40px;padding:0 14px;cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:var(--bg)}
.btn{border-color:var(--accent);color:var(--accent-ink)}
.btn.ghost{border-color:var(--line);color:var(--ink)}
.btn:hover,.seg button:hover,.step button:hover{border-color:var(--accent)}
.ctl input,.ctl select{font:500 1rem var(--sans);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:8px;min-height:42px;padding:0 10px;width:100%;color-scheme:inherit}
.step{display:flex;align-items:center;gap:6px}
.step input{width:5.2em;text-align:center;font-family:var(--mono)}
.step button{width:42px;padding:0;font-size:1.2rem}
.f-act{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end}
@media (pointer:coarse){.seg button,.btn,.step button{min-height:44px}.step button{width:44px}}

/* the listing: paper with green bands and tractor holes */
.listing{margin:0}
.paper{position:relative;background:var(--card);border:1px solid var(--line);border-radius:4px;padding:0 30px;overflow:hidden;
  background-image:radial-gradient(circle at 12px 14px,var(--hole) 5px,transparent 5.5px),radial-gradient(circle at calc(100% - 12px) 14px,var(--hole) 5px,transparent 5.5px);background-size:100% 28px;background-repeat:repeat-y}
.lhead{font:400 .78rem/1.3 var(--mono);letter-spacing:.06em;padding:12px 0 6px;color:var(--muted);border-bottom:1px dashed var(--line);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lcols,.row{display:grid;grid-template-columns:3.2em 1fr 1.6em;gap:10px;font:400 .92rem/1 var(--mono);letter-spacing:.05em}
.lcols{color:var(--faint);font-size:.7rem;padding:8px 0 6px}
.rows{height:420px;overflow:auto;overscroll-behavior:contain;background:repeating-linear-gradient(180deg,var(--band) 0 84px,transparent 84px 168px);scrollbar-width:thin}
.row{height:28px;align-items:center;cursor:pointer;padding:0 4px;border-radius:3px}
.row span:first-child{color:var(--faint)}
.row b{font-weight:400;color:var(--muted)}
.row span:last-child{color:var(--faint);text-align:center}
.row:hover{outline:1px solid var(--line)}
.row.on{background:var(--pick);outline:1.5px solid var(--accent)}
.row.on span{color:var(--ink)}
.row.on b,.row.on span:last-child{color:var(--accent-ink)}
.listing figcaption{font-size:.85rem;line-height:1.45;color:var(--muted);margin:8px 2px 0}

/* prose */
.prose{max-width:760px;margin:0 auto;padding:10px 20px 10px}
.sec{padding:40px 0 10px;border-top:1px solid var(--line-soft)}
.sec h2{font:600 clamp(1.45rem,4vw,2rem)/1.15 var(--serif);margin:0 0 12px;text-wrap:balance}
.sec h3{font:600 1.05rem var(--serif);margin:24px 0 8px}
.sec p{max-width:66ch}
.k{color:var(--accent-ink);font-weight:400}
.anchor{margin-left:8px;color:var(--faint);text-decoration:none;font:400 .8em var(--sans);opacity:0}
h2:hover .anchor,.anchor:focus-visible{opacity:1}

/* checksum */
.check{margin:20px 0;padding:16px 14px;background:var(--card);border:1px solid var(--line);border-radius:10px}
.cols{display:grid;grid-template-columns:repeat(12,1fr);gap:4px}
.col{display:grid;grid-template-rows:auto auto auto auto;justify-items:center;gap:2px;font-family:var(--mono);padding:6px 0;border-radius:5px}
.col .cd{font-size:1.35rem}
.col .op{font-size:.75rem;color:var(--faint)}
.col .cw{font-size:1.05rem;color:var(--accent-ink)}
.col .cp{font-size:.9rem;color:var(--muted);border-top:1px solid var(--line);width:80%;text-align:center;padding-top:3px}
.col.hit{animation:hit .7s ease}
@keyframes hit{0%{background:var(--pick)}100%{background:transparent}}
.tot{display:flex;flex-wrap:wrap;gap:10px 26px;margin:14px 0 6px;align-items:flex-end}
.tot span{display:flex;flex-direction:column;gap:2px}
.tot i{font:normal 500 .74rem var(--sans);text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.tot b{font:400 1.6rem/1 var(--mono)}
.tot .cc b{color:var(--accent-ink);border:2px solid var(--accent);border-radius:50%;width:2.1em;height:2.1em;display:grid;place-items:center;font-size:1.3rem}
.r10{margin:6px 0 10px;font-weight:500;color:var(--accent-ink)}
.check.is10 [data-mod]{color:var(--accent-ink)}
@media (max-width:520px){.cols{grid-template-columns:repeat(6,1fr);row-gap:10px}}

/* bars */
.bars{margin:18px 0 6px}
.bars svg{width:100%;height:auto;display:block}
.bar rect{fill:var(--line)}
.bar:nth-child(2) rect{fill:var(--faint)}
.bar.on rect{fill:var(--accent)}
.bv{font:400 15px var(--mono);fill:var(--muted)}
.bl{font:400 20px var(--mono);fill:var(--ink)}
.bar.on .bv,.bar.on .bl{fill:var(--accent-ink)}
.share{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 4px}
.share-label{font-size:.86rem;color:var(--muted)}
.share-row{display:flex;gap:8px}
.sbtn{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--ink);display:grid;place-items:center;cursor:pointer;text-decoration:none}
.sbtn:hover,.sbtn:focus-visible{color:var(--accent-ink);border-color:var(--accent)}
@media (pointer:coarse){.sbtn{width:44px;height:44px}}
.share-msg{min-height:1.2em;font-size:.86rem;color:var(--muted);margin:2px 0 0}

/* typo lab */
.lab{margin:18px 0;padding:16px;background:var(--card);border:1px solid var(--line);border-radius:10px}
.lab-hint{font-size:.9rem;color:var(--muted);margin:10px 0}
.lab-digits{display:flex;flex-wrap:wrap;align-items:center;row-gap:8px}
.ld{font:400 1.5rem/1 var(--mono);width:2.05rem;height:2.7rem;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:5px;padding:0;cursor:pointer}
.lab-digits[data-mode="swap"] .ld{cursor:default}
.ld.lc{border:2px solid var(--accent);color:var(--accent-ink);border-radius:50%;cursor:default;margin-left:6px}
.ld.ch{background:var(--pick);border-color:var(--accent)}
.gap{width:10px;height:2.7rem;border:0;background:transparent;padding:0;display:grid;place-items:center;cursor:default}
.gap span{width:2px;height:60%;background:transparent;border-radius:2px}
.lab-digits[data-mode="swap"] .gap{cursor:pointer;width:16px}
.lab-digits[data-mode="swap"] .gap span{background:var(--line)}
.lab-digits[data-mode="swap"] .gap:hover span,.lab-digits[data-mode="swap"] .gap:focus-visible span{background:var(--accent);width:4px}
.lab-digits[data-mode="sub"] .ld:not(.lc):hover{border-color:var(--accent)}
.gap0{width:4px}
.lab-out{font:500 1.06rem/1.45 var(--serif);min-height:1.5em;margin:12px 0 4px}
.lab-out.ok{color:var(--ok)}
.lab-out.bad{color:var(--bad)}
.lab-count{font-size:.92rem;color:var(--muted);margin:4px 0 8px}
@media (max-width:560px){.lab{padding:12px 10px}.lab-digits{flex-wrap:nowrap}.ld{flex:1 1 0;min-width:0;width:auto;max-width:2.05rem;height:2.4rem;font-size:1.05rem}.ld.lc{margin-left:3px}.gap{flex:none;width:3px}.lab-digits[data-mode="swap"] .gap{width:11px}}

/* map */
.map{position:relative;margin:18px 0 8px;width:min(1000px,calc(100vw - 32px));left:50%;transform:translateX(-50%)}
.map svg{width:100%;height:auto;display:block}
.mscroll{overflow-x:auto;overscroll-behavior-x:contain}
.mobi{display:none}
@media (max-width:700px){.mobi{display:inline}}
@media (max-width:700px){.map svg{width:760px;max-width:none}.cl{font-size:24px}.it{font-size:22px}}
.cty{fill:var(--card);stroke:var(--line);stroke-width:1.2;cursor:pointer;transition:fill .15s}
.cty:hover{stroke:var(--accent);stroke-width:1.8}
.cty.new81{fill:var(--band);stroke-dasharray:5 3}
.cty.on{fill:var(--pick);stroke:var(--accent);stroke-width:2}
.cty.buc{fill:var(--accent)}
.cl{font:400 15px var(--mono);fill:var(--muted);pointer-events:none}
.inset{fill:var(--bg);stroke:var(--line);stroke-dasharray:4 3}
.it{font:500 15px var(--sans);fill:var(--muted)}
.map figcaption{font-size:.88rem;color:var(--muted);margin:6px auto 0;max-width:760px;padding:0 4px}
.mcard{position:absolute;transform:translateX(-50%);background:var(--card);border:1px solid var(--accent);border-radius:8px;padding:10px 34px 10px 12px;font-size:.92rem;line-height:1.4;max-width:280px;box-shadow:0 8px 26px rgba(0,0,0,.16);z-index:3}
.mcard p{margin:0}
.mcard .x{position:absolute;top:4px;right:4px;width:28px;height:28px;border:0;background:none;color:var(--ink);font-size:1.2rem;cursor:pointer}
.codes h3{margin-top:18px}
.clist{list-style:none;padding:0;margin:0;columns:3 13em;column-gap:20px;font-size:.92rem}
.clist li{break-inside:avoid;padding:2px 0}
.clist b{font:400 .92rem var(--mono);color:var(--accent-ink);margin-right:4px}
.clist li.gone{color:var(--muted);text-decoration:line-through;text-decoration-color:var(--faint)}

/* 1979 sectors */
.s79{margin:16px 0}
.s79 svg{width:100%;max-width:560px;height:auto;display:block}
.sb{fill:var(--card);stroke:var(--line)}
.sb.gone{stroke:var(--accent);stroke-dasharray:4 3}
.st{font:500 14px var(--sans);fill:var(--ink)}
.sc{font:400 15px var(--mono);fill:var(--muted)}
.sc.gone{fill:var(--accent-ink)}
.sh{font:600 13px var(--sans);fill:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.sl{fill:none;stroke:var(--faint);stroke-width:1.5}

.method p{font-size:.98rem}
.sources{padding-left:18px;font-size:.92rem}
.sources li{margin:0 0 6px}
.ending{font:500 1.35rem/1.45 var(--serif);margin:46px 0 30px;text-wrap:balance}
.site-footer{max-width:760px;margin:0 auto;padding:24px 20px 70px;display:flex;gap:18px;flex-wrap:wrap;font:400 .86rem var(--sans);color:var(--muted);border-top:1px solid var(--line-soft)}
.site-footer a{color:var(--muted)}

@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
@media print{.topbar,.rail,.progress,.share,.ctl,.lab,.listing{display:none}}

/* ===== the reader's own code: one line on listing paper (25 Oct 2026 v2) ===== */
.sheet{position:relative;max-width:820px;margin:6px auto 0;padding:14px 46px 18px;container-type:inline-size;
  background-color:var(--card);
  background-image:
    radial-gradient(circle at 15px 14px,var(--hole) 5.5px,transparent 6px),
    radial-gradient(circle at calc(100% - 15px) 14px,var(--hole) 5.5px,transparent 6px),
    repeating-linear-gradient(180deg,transparent 0 3px,var(--line) 3px 5px),
    repeating-linear-gradient(180deg,transparent 0 3px,var(--line) 3px 5px);
  background-size:100% 28px,100% 28px,1px 100%,1px 100%;
  background-position:0 0,0 0,30px 0,calc(100% - 30px) 0;
  background-repeat:repeat-y,repeat-y,no-repeat,no-repeat;
  border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft);
  box-shadow:0 1px 0 var(--line-soft),0 18px 40px -22px rgba(30,40,20,.35);transition:box-shadow .3s}
.sheet::before,.sheet::after{content:"";position:absolute;left:0;right:0;height:8px;background:
  linear-gradient(135deg,var(--bg) 33%,transparent 33.5%) 0 0/10px 8px repeat-x,linear-gradient(225deg,var(--bg) 33%,transparent 33.5%) 0 0/10px 8px repeat-x}
.sheet::before{top:-1px}
.sheet::after{bottom:-1px;transform:scaleY(-1)}
.sheet:focus-within{box-shadow:0 1px 0 var(--line-soft),0 0 0 1.5px color-mix(in srgb,var(--accent) 55%,transparent),0 18px 40px -22px rgba(30,40,20,.35)}
.shead{display:flex;justify-content:space-between;gap:10px;margin:4px 0 12px;padding-bottom:6px;border-bottom:1px dashed var(--line);font:400 .72rem/1.3 var(--mono);letter-spacing:.08em;color:var(--faint);white-space:nowrap;overflow:hidden}
.stag{font-weight:500;text-transform:none;letter-spacing:0;color:var(--muted)}
.field-lbl{display:block;font:600 .8rem/1.2 var(--sans);text-transform:uppercase;letter-spacing:.06em;color:var(--accent-ink);margin:0 0 2px}
.comb{--cell:clamp(18px,calc((100vw - 120px) / 14),54px);position:relative;width:calc(13 * var(--cell));margin:4px 0 0}
@supports (width:1cqw){.comb{--cell:clamp(18px,calc(100cqw / 13.6),54px)}}
.cells{position:absolute;left:0;top:0;height:calc(var(--cell) * 1.5);display:grid;grid-template-columns:repeat(13,var(--cell))}
.cell{margin:0 2px;border-bottom:2px solid var(--line);transition:border-color .2s,background .2s}
.cell.g-S,.cell.g-L,.cell.g-J,.cell.g-C{background:color-mix(in srgb,var(--pick) 55%,transparent)}
.cell.on{border-bottom-color:var(--ink)}
.cell.g-C{border-radius:50% 50% 0 0}
.cell.g-C.on{border-bottom-color:var(--accent)}
.cell.err{border-bottom-color:var(--bad);background:color-mix(in srgb,var(--bad) 14%,transparent)}
.cnp-in{position:relative;display:block;width:calc(13.5 * var(--cell));height:calc(var(--cell) * 1.5);margin:0;border:0;border-radius:0;background:transparent;color:var(--ink);caret-color:var(--accent);
  font:400 calc(var(--cell) * .92)/1 var(--mono);letter-spacing:calc(var(--cell) - .6em);padding:0 0 0 calc((var(--cell) - .6em) / 2);outline:none;-webkit-appearance:none;appearance:none}
.cnp-in:focus-visible{outline:none}
.glbl{display:grid;grid-template-columns:repeat(13,var(--cell));margin-top:5px}
.gl{margin:0 2px;padding-top:3px;border-top:1.5px solid var(--line);font:500 clamp(.56rem,1.6vw,.72rem)/1.12 var(--sans);color:var(--muted);text-align:center;overflow-wrap:anywhere}
.gl.g-C{color:var(--accent-ink);border-top-color:var(--accent)}
.sbtns{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px}
.shelp{font-size:.86rem;color:var(--muted);margin:6px 0 0}
.sheet.has .shelp{display:none}
.plines{list-style:none;margin:12px 0 0;padding:0}
.pl{display:grid;grid-template-columns:calc(6.6em + 4px) minmax(0,1fr);column-gap:14px;align-items:baseline;margin:0 -15px;padding:9px 15px 10px;min-height:2.6em}
.pl:nth-child(odd){background:var(--band)}
.plines{border-top:1px dashed var(--line);border-bottom:1px dashed var(--line)}
.pd{font:400 1rem/1.3 var(--mono);letter-spacing:.12em;color:var(--faint);white-space:nowrap}
.pl.done .pd{color:var(--ink)}
.pl[data-pl="C"] .pd{justify-self:start;letter-spacing:0;padding:0 .3em;border-radius:50%;border:1.5px solid transparent}
.pl[data-pl="C"].ok .pd,.pl[data-pl="C"].need .pd{color:var(--accent-ink);border-color:var(--accent)}
.pbody{display:flex;flex-direction:column;gap:2px;min-width:0}
.pg{font:400 .9rem/1.35 var(--sans);color:var(--faint)}
.pl.done .pg{display:none}
.pt{font:400 .9rem/1.35 var(--mono);letter-spacing:.03em;color:var(--ink);overflow-wrap:anywhere}
.pt:empty,.pen:empty{display:none}
.pen{font:italic 400 1.08rem/1.3 var(--serif);color:var(--accent-ink)}
.pen.ink{animation:ink .6s ease-out both}
@keyframes ink{0%{opacity:0;transform:translateX(-4px);clip-path:inset(0 100% 0 0)}100%{opacity:1;transform:none;clip-path:inset(0 0 0 0)}}
.pl.err .pd,.pl.err .pg{color:var(--bad)}
.pl.err .pd{text-decoration:line-through;text-decoration-thickness:1.5px}
.pl.off{opacity:.4}
.sstat{margin:10px 0 0;font:500 1.05rem/1.4 var(--serif);min-height:1.4em}
.sstat.bad{color:var(--bad)}
.sstat.ok{color:var(--ok)}
.sheet .badge{margin:12px 0 0;padding-top:10px;border-top:1px dashed var(--line)}
@media (max-width:600px){.sheet{padding:12px 26px 16px;background-position:0 0,0 0,19px 0,calc(100% - 19px) 0;
  background-image:radial-gradient(circle at 9px 14px,var(--hole) 4px,transparent 4.5px),radial-gradient(circle at calc(100% - 9px) 14px,var(--hole) 4px,transparent 4.5px),repeating-linear-gradient(180deg,transparent 0 3px,var(--line) 3px 5px),repeating-linear-gradient(180deg,transparent 0 3px,var(--line) 3px 5px)}
  .pl{grid-template-columns:minmax(0,1fr);row-gap:2px}.pd{font-size:.92rem}}
@media (max-width:360px){.build{padding-left:12px;padding-right:12px}.sheet{padding-left:22px;padding-right:22px}}

.yours{max-width:820px;margin:22px auto 0}
.yh{font:600 1.3rem/1.2 var(--serif);margin:0 0 10px}
.ycards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));gap:12px}
.yc{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 14px 12px;animation:rise .5s ease-out both}
.yc:nth-child(2){animation-delay:.08s}.yc:nth-child(3){animation-delay:.16s}.yc:nth-child(4){animation-delay:.24s}
@keyframes rise{0%{opacity:0;transform:translateY(8px)}100%{opacity:1;transform:none}}
.yn{display:block;font:600 2rem/1.05 var(--serif);color:var(--ink);font-variant-numeric:lining-nums}
.yn:empty{display:none}
.yl{display:block;font:500 .82rem/1.3 var(--sans);color:var(--accent-ink);margin:2px 0 6px}
.yt{margin:0;font-size:.9rem;line-height:1.45;color:var(--muted)}
.build>.share{max-width:820px;margin:16px auto 0}
.build>.share-msg{max-width:820px;margin:4px auto 0}
.more-h{font:600 1.35rem/1.2 var(--serif);margin:38px 0 4px;padding-top:22px;border-top:1px solid var(--line-soft)}
.more-t{margin:0 0 12px;color:var(--muted);max-width:46em;font-size:.95rem}
.cnow{margin:0 0 2px;font-size:.88rem;color:var(--muted)}
.cnow .mono{font-size:1.05rem;color:var(--ink);letter-spacing:.12em}
.dmy{display:grid;grid-template-columns:3.4em minmax(0,1fr) 4.8em;gap:6px}
.dmy input{text-align:center;font-family:var(--mono)}
@media (prefers-reduced-motion:reduce){.pen.ink,.yc{animation:none}}
.nw{white-space:nowrap}
.stamp{position:absolute;top:3px;right:54px;font:700 .95rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;padding:6px 10px 5px;border:2.5px solid currentColor;border-radius:4px;transform:rotate(-8deg);opacity:.82;pointer-events:none}
.stamp:empty{display:none}
.stamp.ok{color:var(--ok)}
.stamp.bad{color:var(--bad)}
.stamp.hit{animation:stamp .32s cubic-bezier(.2,1.6,.4,1) both}
@keyframes stamp{0%{opacity:0;transform:rotate(-8deg) scale(1.9)}100%{opacity:.82;transform:rotate(-8deg) scale(1)}}
@media (prefers-color-scheme:light){.stamp{mix-blend-mode:multiply}}
@media (max-width:600px){.pl{margin:0 -7px;padding-left:7px;padding-right:7px}.stamp{top:5px;right:30px;font-size:.8rem}.ycards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.yc{padding:12px 11px 10px}.yn{font-size:1.6rem}.yt{font-size:.84rem}}

/* review pass, 25 Oct 2026: ledger rows, the verdict under the digits, fact cards as paper slips */
.sstat{margin:12px 0 0;font:500 1.12rem/1.35 var(--serif)}
.sstat:empty{display:none}
.sstat.ok{font-size:1.4rem;font-weight:600}
.sstat.bad{padding-left:10px;border-left:3px solid var(--bad)}
.gl{font-size:clamp(.64rem,1.7vw,.76rem)}
.gl.g-C{white-space:nowrap;overflow:visible;text-align:left}
.cell.g-S,.cell.g-L,.cell.g-J,.cell.g-C{background:color-mix(in srgb,var(--pick) 100%,transparent)}
@media (max-width:600px){.pl{grid-template-columns:4.6em minmax(0,1fr);column-gap:10px}.pd{font-size:.8rem;letter-spacing:.04em;white-space:normal;word-break:break-all}.pt{font-size:.82rem}.pen{font-size:1rem}.ycards{grid-template-columns:minmax(0,1fr)}}
.yc{position:relative;border-radius:3px;border:1px solid var(--line);border-top:0;padding-top:16px;box-shadow:0 10px 24px -18px rgba(30,40,20,.45)}
.yc::before{content:"";position:absolute;left:0;right:0;top:0;height:6px;background:linear-gradient(135deg,var(--bg) 33%,transparent 33.5%) 0 0/8px 6px repeat-x,linear-gradient(225deg,var(--bg) 33%,transparent 33.5%) 0 0/8px 6px repeat-x}
.yn{font:400 2.4rem/1 var(--mono);letter-spacing:-.02em}
.yl{font:500 .8rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.03em}
.yl:empty{display:none}
@media (max-width:380px){.hx{display:none}}
