:root{--bg:#f1f5fb;--grid:rgba(30,80,160,.09);--ink:#0c2243;--mut:#476080;--card:#fff;--line:#bfd0e8;--blue:#1451b8;--or:#ff6a1f;--ok:#0f9d6a}
@media(prefers-color-scheme:dark){:root{--bg:#0a2a5e;--grid:rgba(255,255,255,.07);--ink:#eaf2ff;--mut:#a8c0e6;--card:#0e336f;--line:#2f5aa3;--blue:#8fb8ff;--or:#ff8a4d;--ok:#4ad8a0}}
*{box-sizing:border-box}html{scroll-behavior:smooth}
body{margin:0;color:var(--ink);background-color:var(--bg);background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:28px 28px;font:17px/1.7 'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',sans-serif;padding-bottom:68px}
h1,h2,h3{font-family:'IBM Plex Mono',ui-monospace,Menlo,Consolas,monospace;line-height:1.15;margin:0 0 .5em;font-weight:600;letter-spacing:-.02em}h1{font-size:clamp(1.9rem,5.2vw,3.3rem)}h2{font-size:clamp(1.3rem,2.8vw,1.8rem);margin-top:1.6em}h3{font-size:1.05rem}
a{color:var(--blue)}p{margin:0 0 1em}.w{max-width:1100px;margin:0 auto;padding:0 20px}
.tb{background:var(--ink);color:var(--bg);font:500 .85rem 'IBM Plex Mono',monospace}@media(prefers-color-scheme:dark){.tb{background:#06193a;color:#eaf2ff}}.tb .w{display:flex;justify-content:space-between;gap:12px;padding:7px 20px;flex-wrap:wrap}.tb a{color:var(--or);text-decoration:none;font-weight:700}
.nv{background:var(--card);border-bottom:2px solid var(--ink);position:sticky;top:0;z-index:30}@media(prefers-color-scheme:dark){.nv{border-color:var(--line)}}.nv .w{display:flex;align-items:center;justify-content:space-between;height:62px;gap:14px}
.lg{font:700 1.1rem 'IBM Plex Mono',monospace;color:var(--ink);text-decoration:none}.lg b{color:var(--or)}.nv nav a{margin-left:18px;color:var(--ink);text-decoration:none;font:600 .86rem 'IBM Plex Mono',monospace}.nv nav a:hover{color:var(--or)}
.bt{display:inline-block;background:var(--or);color:#1a0a00!important;font:700 .95rem 'IBM Plex Mono',monospace;padding:.75rem 1.3rem;border:2px solid var(--ink);box-shadow:4px 4px 0 var(--ink);text-decoration:none;transition:.12s}@media(prefers-color-scheme:dark){.bt{border-color:#06193a;box-shadow:4px 4px 0 #06193a}}.bt:hover{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--ink)}.bt.w2{background:var(--card);color:var(--ink)!important}
.hero{padding:56px 0 44px;border-bottom:2px solid var(--ink)}@media(prefers-color-scheme:dark){.hero{border-color:var(--line)}}.hero .in{display:grid;gap:34px;grid-template-columns:1.5fr 1fr;align-items:center}
.tag{display:inline-block;font:600 .78rem 'IBM Plex Mono',monospace;border:1.5px dashed var(--blue);color:var(--blue);padding:3px 10px;margin-bottom:14px}.hero p.l{font-size:1.15rem;color:var(--mut);max-width:54ch}.row{display:flex;gap:12px;flex-wrap:wrap;margin-top:22px}
.sheet{background:var(--card);border:2px solid var(--ink);box-shadow:6px 6px 0 var(--ink);padding:0}@media(prefers-color-scheme:dark){.sheet{border-color:var(--line);box-shadow:6px 6px 0 #06193a}}.sheet h3{margin:0;background:var(--ink);color:var(--bg);padding:9px 16px;font-size:.9rem}@media(prefers-color-scheme:dark){.sheet h3{background:#06193a;color:#eaf2ff}}
.sheet table{width:100%;border-collapse:collapse;font-size:.95rem}.sheet td,.sheet th{padding:9px 16px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.sheet th{width:34%;font:600 .8rem 'IBM Plex Mono',monospace;color:var(--mut);text-transform:uppercase}.sheet tr:last-child *{border-bottom:0}.sheet td a.n{font:700 1.2rem 'IBM Plex Mono',monospace;color:var(--or);text-decoration:none}
section{padding:46px 0}section.alt{background:color-mix(in srgb,var(--card) 82%,transparent);border-block:2px solid var(--ink)}@media(prefers-color-scheme:dark){section.alt{border-color:var(--line)}}
.g{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.cd{background:var(--card);border:2px solid var(--ink);padding:18px 20px;text-decoration:none;color:var(--ink);display:block}.cd:hover{border-color:var(--or)}@media(prefers-color-scheme:dark){.cd{border-color:var(--line)}}.cd p{margin:4px 0 0;color:var(--mut);font-size:.95rem}.cd .id{font:700 .78rem 'IBM Plex Mono',monospace;color:var(--or)}
.bg2{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.bg2 a{display:flex;align-items:center;gap:8px;background:var(--card);border:1.5px solid var(--line);padding:8px 12px;text-decoration:none;color:var(--ink);font-weight:600;font-size:.92rem}.bg2 a:hover{border-color:var(--or)}.bg2 i{font:700 .72rem 'IBM Plex Mono',monospace;color:var(--or);font-style:normal}
.lt{font:700 1.3rem 'IBM Plex Mono',monospace;color:var(--or);margin:22px 0 8px}.az{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.az a{width:32px;height:32px;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--line);background:var(--card);color:var(--ink);text-decoration:none;font:700 .85rem 'IBM Plex Mono',monospace}
.stp{counter-reset:s;list-style:none;margin:0 0 1.2em;padding:0}.stp li{counter-increment:s;padding:10px 0 10px 50px;position:relative;border-bottom:1px dashed var(--line)}.stp li:before{content:counter(s,decimal-leading-zero);position:absolute;left:0;top:10px;font:700 1rem 'IBM Plex Mono',monospace;color:var(--or)}
.ck{list-style:none;margin:0 0 1.2em;padding:0}.ck li{padding:7px 0 7px 26px;position:relative;border-bottom:1px dotted var(--line)}.ck li:before{content:"[✓]";position:absolute;left:0;font:700 .8rem 'IBM Plex Mono',monospace;color:var(--ok);top:10px}
.fl{background:var(--card);border-left:5px solid var(--or);padding:12px 18px;margin-bottom:12px}.fl b{display:block;font-family:'IBM Plex Mono',monospace}.fl p{margin:3px 0 0;color:var(--mut)}
details{background:var(--card);border:1.5px solid var(--line);padding:12px 18px;margin-bottom:10px}summary{cursor:pointer;font-weight:600}details p{margin:8px 0 0;color:var(--mut)}
.crumb{font:500 .82rem 'IBM Plex Mono',monospace;color:var(--mut);padding:16px 0 0}.crumb a{color:var(--mut)}
.two{display:grid;gap:36px;grid-template-columns:minmax(0,1fr) 320px;align-items:start;padding:34px 0 46px}.sd{position:sticky;top:78px}
.chp{display:flex;flex-wrap:wrap;gap:8px}.chp a,.chp span{background:var(--card);border:1.5px solid var(--line);padding:5px 13px;font-size:.9rem;text-decoration:none;color:var(--ink)}.chp a:hover{border-color:var(--or)}
.dis{font-size:.86rem;color:var(--mut);border-top:1px dashed var(--line);margin-top:16px;padding-top:10px}
footer{background:var(--ink);color:#b9cbe8;padding:42px 0 26px;font-size:.93rem}@media(prefers-color-scheme:dark){footer{background:#06193a}}footer h4{font-family:'IBM Plex Mono',monospace;color:#fff;margin:0 0 8px}footer a{color:#fff;text-decoration:none}.fg{display:grid;gap:26px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}footer ul{list-style:none;margin:0;padding:0;line-height:2}.fine{margin-top:22px;border-top:1px solid #2f4c7c;padding-top:14px;font-size:.82rem}
.fx{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;border-top:2px solid var(--ink)}.fx a{flex:1;text-align:center;padding:15px 6px;font:700 .95rem 'IBM Plex Mono',monospace;text-decoration:none}.fx .a{background:var(--or);color:#1a0a00}.fx .b{background:#25c26a;color:#06210f;flex:.6}
@media(min-width:900px){.fx{display:none}body{padding-bottom:0}}@media(max-width:900px){.hero .in,.two{grid-template-columns:1fr}.sd{position:static}.nv nav{display:none}}
:focus-visible{outline:3px solid var(--or);outline-offset:3px}
