:root{--bg:#fcfdfe;--panel:#fff;--ink-strong:#0a2a7a;--ink:#16358f;--ink-soft:#5b72a6;--ink-muted:#8597c2;--line:#7393c6;--line-mid:#cad7ea;--line-soft:#e5eaf3;--accent:#1a73e8;--active:#2459d6;--ok:#0a9f6a;--warn:#e0a100;--info:#0f8f9c;--kernel:#6d55d8;--neutral:#8a98b3;--font-mono:"JetBrains Mono","Iosevka",ui-monospace,SFMono-Regular,Menlo,monospace;--font-cjk:"PingFang SC","Hiragino Sans GB","Microsoft YaHei UI","Noto Sans SC","Source Han Sans SC",sans-serif;--fs-xs:11px;--fs-sm:12px;--fs-md:13.5px;--fs-lg:15px;--fs-xl:18px;--lh:1.6;--sp-1:4px;--sp-2:6px;--sp-3:10px;--sp-4:12px;--sp-5:16px;--sp-6:24px;--ctl-h:34px;--radius:2px;--radius-lg:8px;--col-left:360px;--col-right:300px;--col-left-xl:440px;--col-right-xl:330px;--ease-out:cubic-bezier(.16,1,.3,1);--ease-in:cubic-bezier(.5,0,.75,0);--dur-fast:.2s;--dur-base:.3s;--dur-move:.45s;--dur-slow:.6s;--stagger:80ms;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0b1020;--panel:#111833;--ink-strong:#e3ebff;--ink:#c9d6f5;--ink-soft:#91a3cf;--ink-muted:#6b7da8;--line:#5b78b0;--line-mid:#2a3a63;--line-soft:#1a2547;--accent:#5b9dff;--active:#7aa8ff;--ok:#34d399;--warn:#fbbf24;--info:#22b8c8;--kernel:#a28bff;--neutral:#7c8bab;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);font-family:var(--font-mono),var(--font-cjk);font-size:var(--fs-sm);line-height:var(--lh);margin:0}a{color:var(--accent)}h1{font-size:var(--fs-xl);color:var(--ink-strong);margin:0 0 var(--sp-2)}h2{font-size:var(--fs-lg);color:var(--ink-strong);margin:0 0 var(--sp-2)}h3{font-size:var(--fs-sm);color:var(--ink-soft);margin:0 0 var(--sp-2);text-transform:uppercase;letter-spacing:.04em}code{font-family:var(--font-mono)}.site-header{padding:var(--sp-3) var(--sp-5);border-bottom:1px solid var(--line-mid);justify-content:space-between;align-items:center;display:flex}.site-header a{color:var(--ink-strong);font-weight:700;text-decoration:none}.hint,.muted{color:var(--ink-muted)}.site-footer{padding:var(--sp-5);border-top:1px solid var(--line-mid);color:var(--ink-soft);font-size:var(--fs-xs)}.card{background:var(--panel);border:1px solid var(--line-mid);border-radius:var(--radius);padding:var(--sp-4)}.eyebrow{color:var(--ink-muted);font-size:var(--fs-xs);margin:0 0 var(--sp-1)}.summary,.tldr{color:var(--ink-soft);margin:0 0 var(--sp-3)}.step .body{font-family:var(--font-cjk);font-size:var(--fs-md);color:var(--ink)}.kv{gap:var(--sp-1);margin:var(--sp-3) 0 0;display:grid}.kv div{gap:var(--sp-3);display:flex}.kv dt{color:var(--ink-muted);min-width:5em}.kv dd{margin:0}.badge{border:1px solid var(--line-mid);border-radius:var(--radius);padding:0 var(--sp-2);font-size:var(--fs-xs);color:var(--ink-soft);display:inline-block}.badge.pending{border-color:var(--warn);color:var(--warn)}.home{max-width:1100px;padding:var(--sp-6) var(--sp-5);margin:0 auto}.subject{margin-top:var(--sp-6)}.cards{gap:var(--sp-4);grid-template-columns:repeat(auto-fill,minmax(260px,1fr));padding:0;list-style:none;display:grid}.topic-card{border:1px solid var(--line-mid);border-radius:var(--radius);background:var(--panel);transition:border-color var(--dur-fast)}.topic-card a{padding:var(--sp-4);color:inherit;text-decoration:none;display:block}.topic-card:hover{border-color:var(--active)}.topic-card.disabled{padding:var(--sp-4);opacity:.6}.topic-card h3{text-transform:none;color:var(--ink-strong);font-size:var(--fs-md)}.player{grid-template-columns:380px minmax(0,1fr) 240px;grid-template-areas:"explain canvas side""nav nav nav";align-items:start;gap:40px;max-width:1680px;margin:0 auto;padding:40px 48px 24px;display:grid}@media (min-width:1360px){.player{grid-template-columns:420px minmax(0,1fr) 260px}}.col-explain{flex-direction:column;grid-area:explain;gap:36px;min-width:0;display:flex}.col-canvas{flex-direction:column;grid-area:canvas;gap:20px;min-width:0;display:flex}.col-side{flex-direction:column;grid-area:side;gap:28px;min-width:0;display:flex}.topic-head h1{margin-bottom:10px;font-size:20px;line-height:1.4}.topic-head .summary{font-family:var(--font-cjk);font-size:var(--fs-md);margin:0;line-height:1.8}.step h2{margin-bottom:12px;font-size:18px;line-height:1.45}.step .tldr{font-family:var(--font-cjk);font-size:var(--fs-md);color:var(--ink-soft);border-left:2px solid var(--active);margin:0 0 20px;padding-left:12px;line-height:1.7}.step .body{font-size:15px;line-height:1.9}.step .body p{margin:0 0 14px}.premise{font-family:var(--font-cjk);color:var(--ink-soft);margin:10px 0}details.more{border-top:1px solid var(--line-soft);margin-top:16px;padding-top:10px}details.more>summary{cursor:pointer;color:var(--ink-muted);font-size:var(--fs-sm);-webkit-user-select:none;user-select:none;list-style:none}details.more>summary:before{content:"▸ ";transition:transform var(--dur-fast);display:inline-block}details.more[open]>summary:before{transform:rotate(90deg)}details.more>summary:hover{color:var(--ink)}details.more[open]>summary{margin-bottom:10px}.kv dt{min-width:6.5em}.kv dd{font-family:var(--font-cjk)}.canvas-wrap{border:1px solid var(--line-soft);border-radius:var(--radius-lg);background:var(--panel);padding:28px 24px}.swimlane{width:100%;height:auto;display:block}.sl-lane-bg{fill:var(--panel)}.sl-lane-bg.alt{fill:var(--line-soft)}.sl-lane-label{height:100%;color:var(--ink-soft);align-items:center;font-size:13px;line-height:1.3;display:flex}.sl-actor{transition:transform var(--dur-move) var(--ease-out)}.sl-actor rect{fill:var(--panel);stroke:var(--line-mid);stroke-width:1px;transition:fill var(--dur-fast),stroke var(--dur-fast)}.sl-actor.hl rect{fill:var(--line-soft);stroke:var(--active);stroke-width:2px}.sl-actor-box{text-align:center;flex-direction:column;justify-content:center;align-items:center;height:100%;padding:0 6px;line-height:1.3;display:flex;overflow:hidden}.sl-actor-label{color:var(--ink-strong);font-size:14px;font-family:var(--font-cjk)}.sl-actor-state{color:var(--ink-muted);font-size:11px}.sl-msg line,.sl-msg path{stroke:var(--line);stroke-width:1.5px;fill:none}.sl-msg.active line,.sl-msg.active path{stroke:var(--active);stroke-width:2px;stroke-dasharray:6 4;animation:dash var(--dur-slow) linear infinite}.sl-msg-label{fill:var(--ink-soft);font-size:13px;font-family:var(--font-cjk);stroke:var(--panel);stroke-width:5px}.sl-msg.active .sl-msg-label,.sl-arrowhead{fill:var(--active)}@keyframes dash{to{stroke-dashoffset:-20px}}.regs{flex-wrap:wrap;gap:8px;margin:16px 0 0;padding:0;list-style:none;display:flex}.regs li{border:1px solid var(--line-mid);border-radius:var(--radius);padding:0 var(--sp-2)}.regs li.changed{border-color:var(--kernel);color:var(--kernel)}.log table{border-collapse:collapse;width:100%;font-family:var(--font-cjk);font-size:var(--fs-md)}.log th,.log td{text-align:left;border-bottom:1px solid var(--line-soft);padding:8px 10px}.log th{color:var(--ink-muted);font-weight:400;font-size:var(--fs-sm)}.log th:first-child,.log td:first-child{white-space:nowrap;width:1%}.log tr.fresh{animation:fadein var(--dur-base) var(--ease-out)}@keyframes fadein{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}.legend{color:var(--ink-soft);font-size:var(--fs-xs);gap:4px;margin:12px 0 0;padding:0;list-style:none;display:grid}.legend b{color:var(--ink-strong);margin-right:var(--sp-2)}.steplist ol{gap:6px;margin:0;padding:0;list-style:none;display:grid}.steplist li a{color:var(--ink-muted);font-family:var(--font-cjk);font-size:var(--fs-md);border-left:2px solid #0000;gap:10px;padding:8px 10px;line-height:1.5;text-decoration:none;display:flex}.steplist .n{font-family:var(--font-mono);color:var(--ink-muted);min-width:1.2em}.steplist li.done a{color:var(--ink-soft)}.steplist li.current a{border-left-color:var(--active);color:var(--ink-strong);background:var(--line-soft)}.sources ol{gap:12px;margin:0;padding:0;list-style:none;display:grid}.sources a{word-break:break-word}.claim{color:var(--ink-soft);font-family:var(--font-cjk);margin:4px 0 0}.report{font-size:var(--fs-xs);color:var(--ink-muted)}.stepnav{border-top:1px solid var(--line-soft);grid-area:nav;justify-content:center;align-items:center;gap:16px;padding-top:20px;display:flex;position:relative}.stepnav button,.stepnav .btn{border:1px solid var(--line-mid);border-radius:var(--radius);background:var(--panel);height:38px;color:var(--ink);font:inherit;cursor:pointer;align-items:center;padding:0 18px;text-decoration:none;display:inline-flex}.stepnav button:hover:not(:disabled),.stepnav .btn:hover{background:var(--line-soft)}.stepnav button:disabled{opacity:.4;cursor:default}.stepnav .count{color:var(--ink-muted);text-align:center;min-width:4em}.progress{background:var(--active);height:2px;transition:width var(--dur-slow) var(--ease-out);position:absolute;top:-1px;left:0}@media (max-width:1023px){.player{padding:var(--sp-3);padding-bottom:calc(var(--ctl-h) + var(--sp-5) + env(safe-area-inset-bottom));grid-template-columns:minmax(0,1fr);grid-template-areas:"canvas""explain""log""side"}.stepnav{background:var(--panel);padding:var(--sp-2) var(--sp-3) calc(var(--sp-2) + env(safe-area-inset-bottom));z-index:10;position:fixed;bottom:0;left:0;right:0}.stepnav .count{margin-left:auto}.hint{display:none}.log{overflow-x:auto}.col-canvas{display:contents}.canvas-wrap{grid-area:canvas;min-width:0}.col-canvas>.log{grid-area:log;min-width:0}}details.terminal ul{gap:14px;margin:0;padding:0;list-style:none;display:grid}details.terminal code{font-family:var(--font-mono,ui-monospace,SFMono-Regular,Menlo,monospace);color:#e2e8f0;white-space:pre-wrap;word-break:break-all;background:#0f172a;border-radius:6px;padding:8px 10px;font-size:12.5px;display:block}details.terminal code:before{content:"$ ";color:#64748b}details.terminal p{font-size:var(--fs-sm);color:var(--ink-muted);margin:6px 0 0;line-height:1.7}.datastate svg{width:100%;height:auto;display:block;overflow:visible}.ds-cell rect{fill:var(--panel);stroke:var(--line-mid);transition:fill var(--dur-fast),stroke var(--dur-fast)}.ds-cell text{fill:var(--ink-strong);font-family:var(--font-mono),var(--font-cjk)}.ds-sub{fill:var(--ink-muted);font-size:11px;font-family:var(--font-mono)}.ds-rowlabel{fill:var(--ink-soft);font-size:13px;font-family:var(--font-cjk)}.ds-range{fill:none;stroke:var(--active);stroke-dasharray:4 4;stroke-width:1.5px}.ds-ptr path{fill:var(--active)}.ds-ptr text{fill:var(--active);font-size:12px;font-family:var(--font-mono),var(--font-cjk)}.ds-node circle{fill:var(--panel);stroke:var(--line-mid);stroke-width:1.5px;transition:fill var(--dur-fast),stroke var(--dur-fast)}.ds-node text{fill:var(--ink-strong);font-size:14px;font-family:var(--font-mono),var(--font-cjk)}.ds-note{stroke:var(--panel);stroke-width:4px;fill:var(--active)!important;font-size:12px!important}.ds-edge{stroke:var(--line-mid);stroke-width:1.5px}.ds-w{fill:var(--ink-soft);stroke:var(--panel);stroke-width:4px;font-size:12px;font-family:var(--font-mono)}#ds-arrow path{fill:var(--line-mid)}.m-active rect,.m-active circle{stroke:var(--active);stroke-width:2.5px;fill:var(--line-soft)}.ds-edge.m-active,.m-active .ds-edge{stroke:var(--active);stroke-width:2.5px}.m-found rect,.m-found circle{fill:var(--active);stroke:var(--active)}.m-found>text:not(.ds-sub):not(.ds-note){fill:#fff}.m-found .ds-edge{stroke:var(--active);stroke-width:3px}.m-done rect,.m-done circle{fill:#e8f3ec;stroke:#3f8f5f}.m-done .ds-edge{stroke:#3f8f5f;stroke-width:2.5px}.m-visited rect,.m-visited circle{fill:var(--line-soft);stroke:var(--ink-muted)}.m-pivot rect,.m-pivot circle{fill:#fff4e5;stroke:#c77700;stroke-width:2.5px}.m-new rect,.m-new circle{stroke:var(--active);stroke-dasharray:4 3;stroke-width:2px}.m-muted{opacity:.35}.ds-caption{text-align:center;color:var(--ink-soft);font-family:var(--font-cjk);font-size:var(--fs-sm);margin:14px 0 0}.ds-aux{font-size:var(--fs-sm);flex-wrap:wrap;justify-content:center;gap:12px 28px;margin-top:16px;display:flex}.ds-aux>div{align-items:baseline;gap:10px;display:flex}.ds-aux-label{color:var(--ink-muted);font-family:var(--font-cjk);white-space:nowrap}.ds-aux ol{flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;display:flex}.ds-aux li{border:1px solid var(--line-mid);font-family:var(--font-mono),var(--font-cjk);color:var(--ink);border-radius:4px;padding:1px 8px}.ds-aux li.empty{color:var(--ink-muted);border-style:dashed}.ds-barval{font-size:12px;fill:var(--ink-soft)!important}.ds-cell.hot rect,.ds-node.hot circle{stroke:#c77700;stroke-width:3px}.ds-cell,.ds-node{cursor:default}.datastate.with-table{grid-template-columns:1fr;justify-items:center;gap:18px;display:grid}.datastate.with-table .ds-main{width:100%}.ds-table{border-collapse:collapse;font-size:13px;font-family:var(--font-mono),var(--font-cjk);min-width:120px}.ds-table caption{color:var(--ink-muted);text-align:left;font-family:var(--font-cjk);padding-bottom:6px}.ds-table th,.ds-table td{border-bottom:1px solid var(--line-soft);text-align:left;white-space:nowrap;padding:5px 10px}.ds-table th{color:var(--ink-muted);font-weight:400}.ds-table tr.hot td{background:var(--line-soft);color:var(--active);font-weight:600}.lab-missing,.lab-loading{color:var(--ink-muted);text-align:center;padding:40px 0}.lab{flex-direction:column;gap:12px;display:flex}.lab-row{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.lab button,.lab select,.lab input[type=text],.lab input:not([type]){font:inherit;font-size:var(--fs-xs);border:1px solid var(--line-mid);border-radius:var(--radius);background:var(--panel);color:var(--ink);padding:4px 10px}.lab button:not(:disabled){cursor:pointer}.lab button:hover:not(:disabled){border-color:var(--accent)}.lab button:disabled{opacity:.45}.lab-out{color:var(--ink-soft);overflow-wrap:anywhere;margin:0}.lab-out b{color:var(--ink)}.lab-warn{color:var(--active)}.lab-loading,.lab-missing{color:var(--ink-soft)}.bitrow{grid-template-columns:repeat(8,1fr);gap:3px;max-width:520px;display:grid}.bitrow.w16,.bitrow.w32{grid-template-columns:repeat(16,1fr)}.bit{text-align:center;font-variant-numeric:tabular-nums;padding:6px 0!important}.bit.on{font-weight:700;background:var(--line-soft)!important}.bit.sign{border-color:var(--active)!important}.bit.exp{border-color:var(--accent)!important}.exact{overflow-wrap:anywhere}.addr-groups{flex-wrap:wrap;gap:6px;display:flex}.addr-g{border:1px solid var(--line-mid);border-radius:var(--radius);flex-direction:column;align-items:center;gap:2px;padding:6px 8px;display:flex}.addr-name{font-size:var(--fs-xs);color:var(--ink-soft)}.addr-bits{letter-spacing:.5px;font-size:11px}.pipe-scroll{overflow-x:auto}.pipe{border-collapse:collapse;font-size:var(--fs-xs)}.pipe th,.pipe td{border:1px solid var(--line-soft);text-align:center;min-width:30px;padding:3px 6px}.pipe tbody th{text-align:left;white-space:nowrap}.pipe td.st{background:var(--line-soft);font-weight:600}.pipe td.EX{outline:1px solid var(--accent)}.pipe td.bubble{color:var(--active)}.race-grid{grid-template-columns:1fr 1fr auto;gap:10px;display:grid}.race-t,.race-mem{border:1px solid var(--line-mid);border-radius:var(--radius);flex-direction:column;gap:6px;padding:8px;display:flex}.race-t.blocked{border-color:var(--active)}.race-t ol{margin:0;padding-left:18px}.race-t li.done{color:var(--ink-soft);text-decoration:line-through}.race-t li.next{font-weight:700}.race-mem{justify-content:center;align-items:center;min-width:80px}.race-mem b{font-size:28px}@media (max-width:560px){.race-grid{grid-template-columns:1fr 1fr}.race-mem{grid-column:1/-1}}.wfg{width:100%;max-width:520px;color:var(--ink-soft)}.wfg-n circle,.wfg-n rect{fill:var(--panel);stroke:var(--line-mid);stroke-width:1.5px}.wfg-n text{text-anchor:middle;fill:var(--ink);font-size:13px}.wfg-n.cyc circle,.wfg-n.cyc rect{stroke:var(--active);stroke-width:2.5px}.wfg-e{fill:none;stroke:currentColor;stroke-width:1.5px}.wfg-e.wait{stroke-dasharray:5 4}.wfg-e.cyc{stroke:var(--active);color:var(--active)}.lab-cases summary{cursor:pointer;color:var(--ink-soft)}.lab-cases ul{font-size:var(--fs-xs);margin:6px 0;padding-left:0;list-style:none}.lab-cases li{overflow-wrap:anywhere}.lab-cases li.bad{color:var(--active)}
