@font-face{font-family:IBM Plex Sans;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-sans-latin-400-normal.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:500;font-display:swap;src:url(fonts/ibm-plex-sans-latin-500-normal.woff2) format("woff2")}@font-face{font-family:IBM Plex Sans;font-weight:600 700;font-display:swap;src:url(fonts/ibm-plex-sans-latin-600-normal.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:400;font-display:swap;src:url(fonts/ibm-plex-mono-latin-400-normal.woff2) format("woff2")}@font-face{font-family:IBM Plex Mono;font-weight:500 600;font-display:swap;src:url(fonts/ibm-plex-mono-latin-500-normal.woff2) format("woff2")}@font-face{font-family:Barlow Condensed;font-weight:600;font-display:swap;src:url(fonts/barlow-condensed-latin-600-normal.woff2) format("woff2")}@font-face{font-family:Barlow Condensed;font-weight:700;font-display:swap;src:url(fonts/barlow-condensed-latin-700-normal.woff2) format("woff2")}:root{--paper: #f4f2ec;--panel: #fbfaf6;--ink: #17191b;--ink-2: #3c4145;--muted: #6a7075;--line: #dcd8cd;--line-2: #ebe8df;--accent: #dd4f1b;--accent-ink: #b63c0e;--accent-soft: #fdeee4;--ok: #0f7a45;--ok-soft: #e6f3ea;--pcb: #0d5f33;--stage-a: #efede6;--stage-b: #d9d5ca;--sans: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--disp: "Barlow Condensed", "Arial Narrow", sans-serif;--rail: 272px;--side: 420px}*{box-sizing:border-box}html,body{height:100%;margin:0}body{font-family:var(--sans);font-size:15.5px;line-height:1.5;color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased;overflow:hidden}button{font:inherit;color:inherit;cursor:pointer}a{color:var(--accent-ink);text-underline-offset:2px}code{font-family:var(--mono);font-size:.9em}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}#app{display:grid;grid-template-columns:var(--rail) minmax(0,1fr) var(--side);height:100dvh}.noscript{padding:2rem}#rail{display:flex;flex-direction:column;min-height:0;background:var(--ink);color:#e9e7e1}.brand{display:flex;align-items:center;gap:12px;padding:20px 20px 16px;color:inherit;text-decoration:none}.brand-mark{width:34px;height:34px;border-radius:7px;flex:none;position:relative;background:var(--pcb);box-shadow:inset 0 0 0 1px #ffffff24}.brand-mark:before,.brand-mark:after{content:"";position:absolute;border-radius:50%;border:2px solid var(--accent);border-left-color:transparent;border-bottom-color:transparent;transform:rotate(0)}.brand-mark:before{width:12px;height:12px;left:7px;bottom:7px}.brand-mark:after{width:22px;height:22px;left:2px;bottom:2px;opacity:.75}.brand-text{display:grid;line-height:1.15}.brand-text b{font-family:var(--disp);font-weight:700;font-size:23px;letter-spacing:.04em}.brand-text i{font-style:normal;font-size:12px;color:#a3a7a6;letter-spacing:.02em}.progress{height:2px;background:#2c3033;margin:0 20px}.progress span{display:block;height:100%;width:0;background:var(--accent);transition:width .5s ease}#steplist{flex:1;min-height:0;overflow-y:auto;padding:8px 10px 16px;scrollbar-width:thin;scrollbar-color:#3a3f43 transparent}#steplist h2{font:500 10.5px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#8d9392;margin:18px 10px 6px}#steplist ol{list-style:none;margin:0;padding:0}#steplist a{display:grid;grid-template-columns:28px 1fr auto;align-items:center;gap:8px;padding:7px 10px;border-radius:7px;color:#c9cbc7;text-decoration:none;font-size:14px}#steplist a:hover{background:#24282b;color:#fff}#steplist .n{font:500 12px var(--mono);color:#7f8584}#steplist em{font:500 9.5px var(--mono);font-style:normal;letter-spacing:.08em;text-transform:uppercase;color:#8d9392;border:1px solid #3a3f43;border-radius:99px;padding:2px 6px}#steplist a.done .n{color:#5fb886}#steplist a.current{background:var(--accent);color:#fff}#steplist a.current .n,#steplist a.current em{color:#fff;border-color:#ffffff80}.rail-foot{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:12px 14px 16px;border-top:1px solid #2c3033}.rail-foot button{background:#24282b;border:0;border-radius:7px;padding:8px 6px;font-size:13px;color:#d9dbd7}.rail-foot button:hover{background:#30353a;color:#fff}#stage{position:relative;min-width:0;overflow:hidden;background:radial-gradient(120% 90% at 50% 38%,var(--stage-a) 0%,var(--stage-b) 100%)}#view{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none;cursor:grab}#view:active{cursor:grabbing}#leaders,#labels{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#leaders line{stroke:var(--ink);stroke-width:1.2;opacity:0;transition:opacity .25s}#leaders circle{fill:#fff;stroke:var(--ink);stroke-width:1.6;opacity:0;transition:opacity .25s}#leaders .on{opacity:1}#leaders line.k-skip{stroke:var(--muted);stroke-dasharray:3 3}#leaders circle.k-skip{stroke:var(--muted)}.lbl{position:absolute;left:0;top:0;white-space:nowrap;opacity:0;transition:opacity .25s;background:var(--ink);color:#fff;border-radius:6px;padding:5px 9px;font:500 12.5px/1.15 var(--mono);display:grid;gap:2px;box-shadow:0 6px 18px #14140a2e;will-change:transform}.lbl.on{opacity:1}.lbl b{font-weight:500;letter-spacing:.02em}.lbl span{font:400 11.5px/1.2 var(--sans);color:#c9ccc8}.lbl-skip{background:#fff;color:var(--muted);box-shadow:inset 0 0 0 1px var(--line),0 4px 12px #14140a14}.lbl-skip b{text-decoration:line-through;text-decoration-color:#6a707599}.topbar{display:none}.hud{position:absolute;top:16px;right:16px;display:flex;align-items:center;gap:12px;flex-direction:row-reverse}.hud button{background:#fbfaf6db;border:1px solid var(--line);border-radius:99px;padding:6px 13px;font-size:13px;backdrop-filter:blur(6px)}.hud button:hover{background:#fff}.hint{font-size:12.5px;color:var(--muted)}#transport{position:absolute;left:50%;bottom:20px;transform:translate(-50%);width:min(640px,calc(100% - 32px));display:flex;align-items:center;gap:8px;padding:8px 10px;background:#17191bf0;border-radius:14px;color:#fff;box-shadow:0 14px 40px #14140a42}.t-btn{width:40px;height:40px;flex:none;display:grid;place-items:center;background:transparent;border:0;border-radius:10px;color:#fff}.t-btn:hover:not(:disabled){background:#2d3236}.t-btn:disabled{opacity:.3;cursor:default}.t-btn svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.t-play{background:var(--accent)}.t-play:hover:not(:disabled){background:#ee5d27}.t-play svg{display:none}.t-play .i-play{fill:currentColor;stroke:none}.t-play[data-mode=paused] .i-play,.t-play:not([data-mode]) .i-play{display:block}.t-play[data-mode=playing] .i-pause,.t-play[data-mode=ended] .i-replay{display:block}#scrub{--p: 0%;flex:1;min-width:0;height:40px;margin:0 6px;background:transparent;appearance:none;-webkit-appearance:none;cursor:pointer}#scrub::-webkit-slider-runnable-track{height:4px;border-radius:4px;background:linear-gradient(90deg,#fff var(--p),#4a5055 var(--p))}#scrub::-moz-range-track{height:4px;border-radius:4px;background:#4a5055}#scrub::-moz-range-progress{height:4px;border-radius:4px;background:#fff}#scrub::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;margin-top:-5px;box-shadow:0 0 0 4px #ffffff24}#scrub::-moz-range-thumb{width:14px;height:14px;border:0;border-radius:50%;background:#fff}.t-all{flex:none;background:transparent;border:1px solid #4a5055;border-radius:10px;color:#e9e7e1;padding:0 13px;height:40px;font-size:13.5px;white-space:nowrap}.t-all:hover{border-color:#fff;color:#fff}.t-all[aria-pressed=true]{background:#fff;color:var(--ink);border-color:#fff}#loader{position:absolute;inset:0;display:none;place-content:center;justify-items:center;gap:14px;background:var(--stage-a);color:var(--muted);font-size:14px;text-align:center;padding:24px}#loader p{margin:0;max-width:34ch}#loader span{width:34px;height:34px;border-radius:50%;border:3px solid var(--line);border-top-color:var(--accent);animation:spin .9s linear infinite}[data-loading] #loader{display:grid}[data-loading] #transport,[data-loading] .hud{visibility:hidden}@keyframes spin{to{transform:rotate(360deg)}}#panel{background:var(--panel);border-left:1px solid var(--line);overflow-y:auto;min-height:0;scrollbar-width:thin}.card{padding:26px 28px 28px;display:flex;flex-direction:column;min-height:100%}.card>*{margin-top:0}.card-head{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:end;margin-bottom:16px}.stepno{font:700 76px/.8 var(--disp);color:var(--accent);letter-spacing:-.01em;display:grid}.stepno:empty{display:none}.stepno small{font:500 11px/1 var(--mono);color:var(--muted);letter-spacing:.06em;margin-top:8px}.kicker{margin:0 0 6px;font:500 11px/1 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.card h1{margin:0;font:600 31px/1.04 var(--disp);letter-spacing:.005em;text-wrap:balance}.card[data-step="0"] .card-head{grid-template-columns:1fr}.card[data-step="0"] h1{font-size:46px;font-weight:700}.lead{font-size:16.5px;line-height:1.45;color:var(--ink-2);margin-bottom:16px;text-wrap:pretty}.card p{margin-bottom:12px;text-wrap:pretty}.facts{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:6px 0 18px;border-top:1px solid var(--line)}.facts div{padding:10px 0;border-bottom:1px solid var(--line)}.facts div:nth-child(odd){padding-right:12px}.facts dt{font:500 10.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}.facts dd{margin:0;font:600 21px/1.1 var(--disp)}.chips{list-style:none;margin:0 0 16px;padding:0;display:flex;flex-wrap:wrap;gap:6px}.chips li{display:flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:99px;padding:3px 11px 3px 3px;font-size:13px;background:#fff}.chips b,.letter{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--ink);color:#fff;font:500 12px/1 var(--mono)}.chips i{font-style:normal;color:var(--muted);font-family:var(--mono);font-size:11.5px}.seg{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:16px;font-size:13px}.seg span{color:var(--muted);margin-right:2px;flex-basis:100%}.seg button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:6px 10px}.seg button[aria-pressed=true]{background:var(--ink);color:#fff;border-color:var(--ink)}.todo{list-style:none;counter-reset:t;margin:0 0 14px;padding:0}.todo li{counter-increment:t;position:relative;padding:10px 0 10px 36px;border-top:1px solid var(--line-2)}.todo li:first-child{border-top-color:var(--line)}.todo li:before{content:counter(t);position:absolute;left:0;top:10px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font:500 12px/1 var(--mono);color:var(--accent-ink);box-shadow:inset 0 0 0 1.5px var(--accent)}.after{margin:0 0 14px;padding:0 0 0 18px;color:var(--ink-2)}.after li{margin-bottom:8px}.code{margin:0 0 14px;background:#17191b;color:#e9e7e1;border-radius:10px;overflow:hidden}.code figcaption{display:flex;justify-content:space-between;align-items:center;padding:7px 8px 7px 14px;font:500 10.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:#8d9392;border-bottom:1px solid #2c3033}.code .copy{background:#2c3033;border:0;color:#e9e7e1;border-radius:6px;padding:5px 9px;font:500 11px var(--mono);letter-spacing:0;text-transform:none}.code .copy:hover{background:#3a3f43}.code pre{margin:0;padding:12px 14px 14px;overflow-x:auto;font:400 12.6px/1.6 var(--mono)}.note{display:grid;grid-template-columns:26px 1fr;gap:10px;padding:11px 13px;border-radius:10px;font-size:14.5px;margin-bottom:10px}.note>b{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font:600 13px/1 var(--mono)}.note.warn{background:var(--accent-soft)}.note.warn>b{background:var(--accent);color:#fff}.note.ok{background:var(--ok-soft)}.note.ok>b{background:var(--ok);color:#fff}.note.nok{background:#f6e9e7}.note.nok>b{background:#a52a1f;color:#fff}.note.tip{background:transparent;padding:10px 0 0;border-top:1px dashed var(--line);border-radius:0;grid-template-columns:1fr;gap:3px;color:var(--ink-2);font-size:14px}.note.tip>b{width:auto;height:auto;display:block;border-radius:0;font:500 10.5px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.downloads{list-style:none;padding:0;margin:4px 0 14px;display:grid;grid-template-columns:1fr 1fr;gap:6px}.downloads a{display:block;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:#fff;color:var(--ink);text-decoration:none;font-size:13.5px}.downloads a:before{content:"\2193  ";color:var(--accent);font-weight:600}.downloads a:hover{border-color:var(--ink)}.card-foot{margin-top:auto;padding-top:18px;display:flex;gap:8px;justify-content:space-between}.btn{border-radius:10px;padding:11px 16px;border:1px solid var(--line);background:#fff;font-weight:500;font-size:14.5px}.btn.ghost:hover{border-color:var(--ink)}.btn.primary{background:var(--ink);color:#fff;border-color:var(--ink);flex:1;text-align:left;position:relative;padding-right:38px}.btn.primary:after{content:"\2192";position:absolute;right:15px;top:50%;transform:translateY(-52%);transition:transform .15s}.btn.primary:hover{background:#000}.btn.primary:hover:after{transform:translate(3px,-52%)}dialog#sheet{border:0;padding:0;border-radius:16px;width:min(680px,calc(100vw - 24px));max-height:min(86dvh,820px);background:var(--panel);color:var(--ink);box-shadow:0 30px 80px #00000059}dialog#sheet::backdrop{background:#17191b80}.sheet-inner{position:relative;padding:28px 30px 26px;overflow-y:auto;max-height:inherit}.sheet-close{position:absolute;top:14px;right:14px;width:36px;height:36px;border-radius:50%;border:0;background:var(--line-2);font-size:22px;line-height:1}.sheet-close:hover{background:var(--line)}#sheet-body h2{font:700 34px/1 var(--disp);margin:0 0 10px}.sheet-lead{color:var(--ink-2);margin:0 0 14px}.tbl{width:100%;border-collapse:collapse;margin-bottom:14px}.tbl td,.tbl th{padding:10px 8px 10px 0;border-top:1px solid var(--line);vertical-align:top;text-align:left;font-weight:400}.tbl thead th{border-top:0;font:500 10.5px/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.tbl th:first-child{width:34px}.tbl.pins th:first-child{width:auto}.tbl td strong{display:block;font-weight:600}.tbl td span{display:block;color:var(--muted);font-size:14px}.tbl .q{font-family:var(--mono);font-size:13px;white-space:nowrap;text-align:right;padding-right:0}.fine{font-size:13.5px;color:var(--muted);margin:0 0 10px}.src{list-style:none;padding:0;margin:0 0 14px}.src li{padding:10px 0;border-top:1px solid var(--line)}.src a{font-weight:600;font-family:var(--mono);font-size:14px}.src span{display:block;color:var(--ink-2);font-size:14px}@media(max-width:1240px){:root{--rail: 232px;--side: 372px}.hint{display:none}}@media(max-width:980px){body{overflow:auto}#app{grid-template-columns:1fr;grid-template-rows:min(54dvh,520px) auto;height:auto;min-height:100dvh}#stage{position:sticky;top:0;z-index:5;height:min(54dvh,520px)}#panel{border-left:0;border-top:1px solid var(--line);overflow:visible}.card{padding:20px 18px 28px;min-height:0}.stepno{font-size:60px}.card h1{font-size:27px}.card[data-step="0"] h1{font-size:38px}#rail{position:fixed;z-index:30;inset:0 auto 0 0;width:min(310px,86vw);transform:translate(-102%);transition:transform .25s ease;box-shadow:0 0 60px #0006}.menu-open #rail{transform:none}.topbar{display:flex;align-items:center;gap:10px;position:absolute;top:10px;left:10px;z-index:2;background:#17191beb;color:#fff;border-radius:12px;padding:5px 14px 5px 5px}.topbar-title{font:600 18px/1 var(--disp);letter-spacing:.04em}.topbar-title b{font-weight:700}#menu-btn{width:36px;height:36px;border:0;border-radius:9px;background:#2d3236;display:grid;place-items:center}#menu-btn span,#menu-btn span:before,#menu-btn span:after{display:block;width:16px;height:2px;background:#fff;border-radius:2px;position:relative;content:""}#menu-btn span:before{position:absolute;top:-5px}#menu-btn span:after{position:absolute;top:5px}.hud{top:12px;right:10px}#transport{bottom:10px;padding:6px 8px;gap:4px;border-radius:12px}.t-all{padding:0 10px;font-size:12.5px}.lbl{font-size:11px;padding:4px 7px}.lbl span{font-size:10.5px}}@media(max-width:420px){.t-all{display:none}.downloads{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
