:root{color-scheme:dark;--bg:#070B0F;--fg:#F4F1E8;--mu:#A6B2B5;--ln:#2A3744;--cy:#79DFEE;--am:#ffb347;--vi:#b69cff;--gr:#8b98a8;--pk:#ff7aa8}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font:16px/1.65 system-ui,-apple-system,'Segoe UI','Hiragino Sans','Noto Sans JP',Roboto,sans-serif}
main{max-width:56rem;margin:0 auto;padding:1.5rem 1rem 3rem}a{color:var(--cy)}h1{font-size:clamp(1.7rem,5vw,2.5rem);line-height:1.2;margin:.3rem 0 .8rem}
h2{font-size:1.3rem;margin:0 0 .5rem}h3{font-size:1rem;margin:1rem 0 .4rem}section{margin-top:2.2rem;padding-top:1.4rem;border-top:1px solid var(--ln);scroll-margin-top:1rem}
.k{color:var(--cy);font-size:.8rem;letter-spacing:.1em;margin:0}.muted{color:var(--mu);font-size:.9rem}
.note{border:1px solid #FFD16666;background:#FFD1660d;color:#ffe8a8;border-radius:.5rem;padding:.7rem .8rem;font-size:.92rem}
.tag{display:inline-block;border:1px solid #FFD166;border-radius:.3rem;padding:0 .35rem;margin-inline-end:.4rem;font-size:.8rem;color:#FFD166}
nav{display:flex;flex-wrap:wrap;gap:.25rem .9rem;font-size:.92rem}nav a{min-height:44px;display:inline-flex;align-items:center}nav a[aria-current]{color:var(--fg);font-weight:600;text-decoration:none}
.toc a{border:1px solid var(--ln);border-radius:.4rem;padding:0 .7rem;text-decoration:none}
.ctl{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:.6rem 1rem;margin:.8rem 0}
.rng{display:grid;grid-template-columns:1fr auto;align-items:center;font-size:.88rem;color:#c9d4e3}.rng input{grid-column:1/-1;width:100%;min-height:44px;accent-color:var(--cy)}
.rng.num input{min-height:44px;background:#0b141c;color:var(--fg);border:1px solid var(--ln);border-radius:.4rem;padding:0 .5rem;font:inherit}
.val{font-family:ui-monospace,Menlo,monospace;color:var(--fg)}
.row{display:flex;flex-wrap:wrap;gap:.5rem;margin:.6rem 0}
button{font:inherit;min-height:44px;min-width:44px;border-radius:.4rem;border:1px solid var(--ln);background:#0b141c;color:var(--fg);padding:0 .8rem;cursor:pointer}
button:hover{border-color:var(--cy)}button:disabled{opacity:.5;cursor:default}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid var(--cy);outline-offset:2px}
.cta{background:var(--cy);color:var(--bg);border-color:var(--cy);font-weight:600}
.cv{display:block;width:100%;height:260px;background:#0b141c;border:1px solid var(--ln);border-radius:.5rem}
.lg{display:flex;flex-wrap:wrap;gap:.2rem 1rem;font-size:.875rem;color:var(--mu);margin:.3rem 0}.lg i{display:inline-block;width:1.2rem;height:3px;vertical-align:middle;margin-inline-end:.3rem}
.verdict{border:2px solid var(--gr);border-radius:.6rem;padding:.6rem .8rem;margin:.8rem 0}.verdict h3{margin:0;font-size:.8rem;color:var(--mu);font-weight:400}
#v-word{font-size:1.5rem;font-weight:700;display:block}.v-leak{border-color:var(--am)}.v-leak #v-word{color:var(--am)}.v-clock{border-color:var(--vi)}.v-clock #v-word{color:var(--vi)}
.v-undec #v-word{color:#c9d4e3}.v-none{border-color:var(--cy)}.v-none #v-word{color:var(--cy)}
.truth{font-size:.9rem;margin:.3rem 0 0}.truth.ng{color:#ffb3a1}.truth.ok{color:#c9d4e3}
.chip{display:inline-block;font:13px/1.9 ui-monospace,Menlo,monospace;border:1px solid var(--ln);border-radius:.3rem;padding:0 .4rem;margin:.15rem .25rem .15rem 0}.chip.pos{border-color:var(--am);color:var(--am)}.chip.neg{border-color:var(--vi);color:var(--vi)}
.meas{font-size:.875rem;border-radius:.4rem;padding:.35rem .6rem;margin:.5rem 0}.meas.yes{background:#79DFEE14;border:1px solid #79DFEE55}.meas.no{background:#8b98a822;border:1px dashed var(--gr);color:#c9d4e3}
.tw{overflow-x:auto;overscroll-behavior-x:contain}
#modes{display:flex;flex-wrap:wrap;gap:.35rem}#modes button{font-family:ui-monospace,Menlo,monospace;font-size:.85rem;padding:0 .55rem}#modes [aria-pressed=true]{border-color:var(--cy);background:#79DFEE26;font-weight:700}#modes .cls{border-style:dashed}
.grid{border-collapse:separate;border-spacing:3px;font-size:.78rem;min-width:40rem}.grid caption{text-align:start;color:var(--mu);font-size:.875rem;padding-bottom:.2rem}
.grid th{font-weight:400;color:var(--mu);padding:0 .2rem;white-space:nowrap}.grid thead th.in{color:#e8eef2;text-decoration:underline dashed #c9d4e3;text-underline-offset:3px}.grid tbody th,.grid thead th:first-child{position:sticky;left:0;background:var(--bg);text-align:start;z-index:1}
.cell{width:100%;min-width:3.1rem;min-height:48px;padding:.15rem;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid transparent;line-height:1.15}
.cell b{font-size:.9rem}.cell small{font-size:.75rem;color:inherit}.cell.na{background:repeating-linear-gradient(135deg,#1a232c 0 6px,#141c24 6px 12px);color:var(--gr)}.cell.na small{color:var(--gr)}
td.in .cell{border:1px dashed #c9d4e3cc}
.strip{display:flex;flex-wrap:wrap;gap:.35rem;margin:.6rem 0}.sc{display:flex;flex-direction:column;border-radius:.35rem;padding:.25rem .5rem;font-size:.82rem;min-width:7.5rem}.sc.na{background:#1a232c;color:#b8c3c6}.sc small{color:inherit;font-size:.75rem}
progress{width:100%;height:10px;accent-color:var(--cy)}
.hrow{border-left:3px solid var(--gr);padding:.3rem .6rem;margin:.4rem 0;display:flex;flex-direction:column}.hrow.ok{border-color:var(--cy)}.hrow.ng{border-color:#ff7a59}
.hrow code,code{font:12px/1.5 ui-monospace,Menlo,monospace;word-break:break-all;color:#c9d4e3}
.res{font-weight:700}.res.ok{color:var(--cy)}.res.ng{color:#ff7a59}
.vt{border-collapse:collapse;font-size:.8rem;margin-top:.4rem}.vt th,.vt td{border-top:1px solid var(--ln);padding:.25rem .45rem;text-align:start;white-space:nowrap}.vt tr.bad td{color:#ff7a59}
td.hit{color:var(--cy)}td.miss{color:#ffb3a1;text-decoration:line-through dotted}
.g{flex:1;min-height:52px;font-size:1.05rem;font-weight:700}.gl{border-color:var(--am);color:var(--am)}.gc{border-color:var(--vi);color:var(--vi)}
.score{font-size:1.05rem}
ul{padding-inline-start:1.2rem}li{margin:.25rem 0}
footer{margin-top:3rem;border-top:1px solid var(--ln);padding-top:1rem;color:var(--mu);font-size:.9rem}footer p{margin:.3rem 0}

/* 3D view of map (2)*/
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.src{font:12px/1.5 ui-monospace,Menlo,monospace;color:var(--mu);margin:.2rem 0}.vw button{font-size:.85rem}.vw [aria-pressed=true]{border-color:var(--cy);background:#79DFEE26}
/*: WebGL bar field; hidden = existing 2D table only */
.m3w{position:relative;margin:.7rem 0 .2rem;overflow:hidden;border:1px solid var(--ln);border-radius:.5rem;background:#0b141c}
.m3w canvas{display:block;width:100%;height:300px;touch-action:pan-y;cursor:grab;outline-offset:-2px}.m3w canvas:active{cursor:grabbing}
.l3{position:absolute;inset:0;pointer-events:none;font:12px/1 ui-monospace,Menlo,monospace;color:var(--mu)}.l3 span{position:absolute;left:0;top:0;white-space:nowrap;text-shadow:0 0 3px #0b141c}
.l3 .in{color:#e8eef2;text-decoration:underline dashed}.l3 .ax{font-family:system-ui,sans-serif;color:#c9d4e3;font-size:12px}.l3 .pc{color:#8b98a8;font-size:11px}
.m3tip{display:flex;flex-wrap:wrap;align-items:center;gap:.3rem .8rem;min-height:2rem;font-size:.88rem}.m3tip b{font-family:ui-monospace,Menlo,monospace}
/* line schematic (CSS 3D, example) */
.rig{margin:.6rem 0}.rs{perspective:900px;height:170px;display:flex;align-items:center;justify-content:center;overflow:hidden;border:1px solid var(--ln);border-radius:.5rem;background:radial-gradient(ellipse at 50% 60%,#13202b,#0b141c 70%)}
.rp{position:relative;width:316px;height:90px;transform-style:preserve-3d;transform:rotateX(56deg) rotateZ(-24deg) translateY(-6px)}
.bx{position:absolute;left:var(--x);top:var(--y);width:var(--w);height:var(--d);transform-style:preserve-3d;--t:#2b3a48;--f:#1d2834;--s:#16202a}
.bx i{position:absolute;left:0;top:0;border:1px solid #3d4f60;font:700 10px/1 ui-monospace,Menlo,monospace;font-style:normal;color:#c9d4e3;display:flex;align-items:center;justify-content:center}
.bx .t{width:var(--w);height:var(--d);background:var(--t);transform:translateZ(var(--h))}
.bx .f{width:var(--w);height:var(--h);background:var(--f);transform-origin:0 0;transform:translateY(var(--d)) rotateX(90deg)}
.bx .s{width:var(--h);height:var(--d);background:var(--s);transform-origin:0 0;transform:translateX(var(--w)) rotateY(-90deg)}
.tk{--t:#1f4650;--f:#173740;--s:#112a31}.tk i,.vh i{border-radius:3px}.vh{--t:#26323e}.sn{--t:#33414f}
.pp.ln{--t:#3a4652}.rig.lkon .pp.ln{--t:#5a4526;--f:#45351d}
.ot.clk{--t:#3c3260;--f:#2c2547;--s:#221d38}.ot.clk i{border-color:var(--vi)}
.lk{position:absolute;left:var(--x);top:var(--y);width:calc(7px + 7px*var(--k,0));height:calc(7px + 7px*var(--k,0));margin:calc(-3.5px - 3.5px*var(--k,0));border-radius:50%;background:var(--am);opacity:0;transform:translateZ(14px) rotateX(-56deg);}
.lk::after{content:'';position:absolute;inset:-2px;border:2px solid var(--am);border-radius:50%;opacity:0}
.rig.lkon .lk::after{animation:ring 2.4s ease-out infinite}@keyframes ring{0%{transform:scale(1);opacity:.9}100%{transform:scale(2.5);opacity:0}}
.rig.lkon .lk{opacity:1}
.ck{position:absolute;left:var(--x);top:var(--y);transform:translateZ(58px) rotateX(-56deg);font:700 11px/1 ui-monospace,Menlo,monospace;color:var(--vi);border:1px dashed var(--vi);border-radius:.3rem;padding:.15rem .3rem;background:#0b141ccc;white-space:nowrap;display:none}.ck.on{display:block}
.rgs:empty{display:none}.rgs{display:inline-block;font:12px/1.8 ui-monospace,Menlo,monospace;border:1px solid var(--ln);border-radius:.3rem;padding:0 .4rem;margin-inline-start:.2rem}#rg-lk{color:var(--am);border-color:var(--am)}#rg-ck{color:var(--vi);border-color:var(--vi)}
/* WebGL H₂ view (replaces the CSS schematic while it owns the page's one WebGL context) */
.h2w{display:none;position:relative;overflow:hidden;border:1px solid var(--ln);border-radius:.5rem;background:#0b141c}.rig.gl .h2w{display:block}.rig.gl .rs{display:none}
.h2w canvas{display:block;width:100%;height:260px;touch-action:pan-y;cursor:grab;background-size:cover;outline-offset:-2px}.m3w canvas{background-size:cover}
.h2m button{font-size:.88rem}.h2m [aria-pressed=true]{border-color:var(--cy);background:#79DFEE26}.h2m .pz{margin-inline-start:auto}
.l3.h2l span{color:#c9d4e3;font-size:12px;font-family:system-ui,sans-serif}.l3 .h2tag,.l3 .h2vis,.l3 .h2tl{transform:none!important;font:11px/1.3 system-ui,sans-serif}
.l3 .h2tag{left:.5rem;top:.45rem;color:#FFD166}.l3 .h2vis{left:.5rem;top:auto;bottom:.45rem;color:var(--mu)}.l3 .h2tl{left:auto;right:.5rem;top:.45rem;font-family:ui-monospace,Menlo,monospace;color:var(--mu)}
@media (max-width:600px){.l3 .h2tl{top:1.9rem}}
.l3 .h2lk{color:var(--am)!important;font:700 11px ui-monospace,Menlo,monospace!important}.l3 .h2dt{color:var(--vi)!important;font:700 11px ui-monospace,Menlo,monospace!important;border:1px dashed var(--vi);border-radius:.3rem;padding:.1rem .3rem;background:#0b141ccc}.l3 .h2dt:empty,.l3 .h2lk:empty{display:none}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}.rs{perspective:none;height:auto;padding:1rem 0}.rp,.bx{transform:none;transform-style:flat}.bx .f,.bx .s{display:none}.bx .t{transform:none}.lk{transform:none}.rig.lkon .lk::after{animation:none}.ck{display:none!important}}
/* v2: bounds on the offset slider, fallback notices, inspector, mass budget, clock correction */
.sm{font-size:.875rem}.trk{grid-column:1/-1;position:relative;display:block}
.trk::before,.trk::after{content:'';position:absolute;top:50%;pointer-events:none}
.trk::before{left:calc(8px + (100% - 16px)*.35);width:calc((100% - 16px)*.3);height:14px;margin-top:-7px;background:rgba(201,212,227,.22);border-radius:3px}
.trk::after{left:calc(8px + (100% - 16px)*.3);width:calc((100% - 16px)*.4);height:24px;margin-top:-12px;border-left:2px dotted #c9d4e3;border-right:2px dotted #c9d4e3}
.oor{grid-column:1/-1;font-size:.85rem;color:var(--mu)}.oor.out{color:#FFD166}
.fb{border:1px dashed var(--gr);border-radius:.4rem;padding:.35rem .6rem;font-size:.85rem;color:#c9d4e3;margin:.4rem 0}
.wait{position:relative}.wait::after{content:attr(data-wait);position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:1rem;color:var(--mu);font-size:.85rem;pointer-events:none}
.m3.still .m3w canvas{pointer-events:none;cursor:default}.m3.still .vw,.m3.still.nosnap .m3w,.m3.still.nosnap #m3-h{display:none}
.cell.sel{outline:2px solid var(--fg);outline-offset:1px}
.gbox{border:1px solid var(--ln);border-radius:.5rem;padding:.5rem .8rem;margin:.8rem 0}.gbox h3{margin:.1rem 0 .4rem}
.insp{display:grid;grid-template-columns:minmax(8rem,auto) 1fr;gap:.2rem .8rem;font-size:.9rem;margin:.2rem 0}.insp dt{color:var(--mu)}.insp dd{margin:0}@media (max-width:480px){.insp{grid-template-columns:1fr}.insp dd{margin-bottom:.3rem}}
.gr{display:grid;grid-template-columns:1fr auto;gap:0 .6rem;font-size:.9rem;margin:.3rem 0}.gr .num{font-family:ui-monospace,Menlo,monospace;font-weight:400}.gr>i{grid-column:1/-1;display:block;height:6px;border-radius:2px;background:#79DFEE99}
.gr>i.gz{position:relative;height:10px;background:#1a232c}.gz::before{content:'';position:absolute;left:50%;top:-2px;bottom:-2px;border-left:1px solid var(--mu)}.gz i{position:absolute;top:0;bottom:0;background:#c9d4e3;border-radius:2px}
#cor .lg i{background:#c9d4e3}#cor .lg i.fa{opacity:.5;background:repeating-linear-gradient(90deg,#c9d4e3 0 3px,transparent 3px 6px)}.ctag{font-size:.88rem;margin:.3rem 0}
.l3 .h2vis{white-space:normal;right:.5rem}
.l3 .h2dt{white-space:pre;text-align:center;line-height:1.35!important}
/* v2.1 */
.why{border-left:3px solid var(--cy);padding:.2rem .8rem;margin:.8rem 0;color:#dfe7ef}
.tagp{margin:-.2rem 0 .4rem}
.chart{margin:.6rem 0}.cvt{font-size:.9rem;color:var(--mu);margin:.3rem 0}.cvt summary{min-height:44px;display:flex;align-items:center;cursor:pointer}
#v-rec{display:block;font-size:.9rem}#v-rec:empty{display:none}#v-why{display:block}
.rig.paused .lk::after{animation-play-state:paused}
.gz{overflow:visible}.gz .clip{position:absolute;top:-5px;font:700 14px/1 system-ui;color:#ffb3a1}.gz .clip.r{right:-4px}.gz .clip.l{left:-4px}
.iv{margin:.1rem 0 .4rem}
.lgd{border:1px solid var(--ln);border-radius:.4rem;padding:.4rem .6rem}
.scale{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .6rem;margin:.5rem 0}.scale p{margin:0;flex:1 1 16rem}
.scale .ramp{display:inline-block;width:9rem;height:12px;border-radius:2px;background:linear-gradient(90deg,#00224e,#35456c,#666970,#958f78,#cbba69,#fee838)}
.scale .sw{display:inline-block;width:1.4rem;height:1rem;border-radius:2px}.scale .sw.na{background:repeating-linear-gradient(135deg,#1a232c 0 4px,#2a333c 4px 8px)}.scale .sw.in{border:1px dashed #c9d4e3}
.ver{font-family:ui-monospace,Menlo,monospace;font-size:.85rem}.chg summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.chg{font-size:.9rem}
#insp-b>button{margin-top:.5rem}
#fwarn .fb{margin-bottom:.4rem}
/* fixes-7-1027 */
.intro{font-size:1.05rem;color:#e8eef2;margin:.2rem 0 .8rem}
.k{font-size:.875rem}.src{font-size:14px}
.note,.ctag,#cor .muted,.fb,.limits li,#lims li{font-size:15px}
.fl{display:flex;flex-wrap:wrap;gap:0 1rem;align-items:center}.fl a{min-height:44px;display:inline-flex;align-items:center}
.swipe{display:none}
.grid tbody th,.grid thead th:first-child{position:sticky;inset-inline-start:0;z-index:1;background:var(--bg,#070B0F)}
@media (max-width:599px){.full{display:none!important}.swipe{display:block;margin:.2rem 0}}
.capv{display:none}@media (max-width:599px){.capv{display:block;margin:.4rem 0 .1rem}.grid caption{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}
