.article{max-width:none}.article-head{max-width:640px}.article-head .label{margin:0 0 26px}.chapter{margin-top:clamp(64px,10vh,112px);scroll-margin-top:88px}.chapter-title{letter-spacing:-.032em;text-wrap:balance;max-width:26ch;margin:0 0 clamp(28px,4vh,44px);font-size:clamp(23px,2.4vw,30px);font-weight:600;line-height:1.08}.pull{letter-spacing:-.036em;max-width:30ch;margin:0 0 clamp(40px,6vh,64px);font-size:clamp(25px,2.8vw,34px);font-weight:600;line-height:1.1}.rail{z-index:90;top:50%;left:var(--gutter);gap:2px;display:grid;position:fixed;transform:translateY(-50%)}.rail a{align-items:center;gap:12px;height:22px;text-decoration:none;display:flex}.rail-mark{background:var(--line-2);transform-origin:0;width:26px;height:1px;transition:transform .32s var(--ease), background .32s var(--ease);flex:0 0 26px;transform:scaleX(.385)}.rail a:hover .rail-mark,.rail a:focus-visible .rail-mark{background:var(--ink-2);transform:scaleX(.69)}.rail a.is-active .rail-mark{background:var(--ink);transform:scaleX(1)}.rail-label{letter-spacing:-.005em;color:var(--ink-3);opacity:0;transition:opacity .3s var(--ease), transform .3s var(--ease);white-space:nowrap;font-size:12.5px;transform:translate(-5px)}.rail a.is-active .rail-label{opacity:.5;transform:none}.rail a:hover .rail-label,.rail a:focus-visible .rail-label{opacity:1;transform:none}.figure-block{margin-top:clamp(44px,6vh,68px)}.figure-title{letter-spacing:-.02em;color:var(--ink);margin:0 0 22px;font-size:clamp(18px,1.8vw,21px);font-weight:500}.figure-question{color:var(--ink-3);margin:0 0 18px;font-size:15px}.figure-control{margin-bottom:clamp(20px,3vh,30px)}.figure-stage{padding:14px 0}.figure-status{max-width:62ch;color:var(--ink-2);min-height:3em;margin:clamp(20px,3vh,28px) 0 0;font-size:15.5px;line-height:1.62}.figure-status strong{color:var(--ink-strong);font-weight:600}.figure-status em{color:var(--ink);font-style:normal}.figure-status.is-warn{border-left:1px solid var(--ink);padding-left:16px}.figure-footnote{max-width:58ch;color:var(--ink-4);margin:14px 0 0;font-size:13px;line-height:1.55}.glyph-graph{background:var(--surface);border-radius:12px;width:100%;position:relative}.glyph-graph-field{border-radius:inherit;opacity:0;transition:opacity .52s var(--ease);position:absolute;inset:0;overflow:hidden}.glyph-graph-field canvas{display:block;width:100%!important;height:100%!important}.glyph-graph-paper{transition:opacity .52s var(--ease);position:absolute;inset:0}.glyph-graph-paper .graph{width:100%;height:100%}.glyph-graph.is-cross .glyph-graph-paper{opacity:0}.glyph-graph.is-cross .glyph-graph-field,.glyph-graph.is-glyph .glyph-graph-field,.glyph-graph.is-cross .glyph-graph-labels,.glyph-graph.is-glyph .glyph-graph-labels{opacity:1}.glyph-graph-labels{pointer-events:none;opacity:0;transition:opacity .52s var(--ease);position:absolute;inset:0}.gg-anchor{width:0;height:0;position:absolute;top:0;left:0}.gg-name,.gg-sub{white-space:nowrap;text-shadow:0 0 4px var(--surface), 0 1px 10px var(--surface);position:absolute;left:50%;transform:translate(-50%)}.gg-name{color:var(--ink);letter-spacing:-.01em;font-size:14px;bottom:34px}.gg-sub{color:var(--ink-3);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;font-size:10px;top:36px}.gg-anchor[data-place=side] .gg-name,.gg-anchor[data-place=side] .gg-sub{left:34px;transform:none}.gg-anchor[data-place=side] .gg-name{bottom:1px}.gg-anchor[data-place=side] .gg-sub{top:3px}.graph{width:100%;height:auto;display:block;overflow:visible}.figure-stage>.graph{background:var(--surface);border-radius:12px}.graph-edges path{fill:none;stroke:var(--line-2);stroke-width:1px;transition:stroke .4s var(--ease), stroke-opacity .4s var(--ease)}.graph-edges path.is-active{stroke:var(--ink)}.graph-flow{fill:none;stroke:var(--paper);stroke-width:2.4px;stroke-linecap:round;stroke-dasharray:22 2000;animation:2.4s linear infinite flow}@keyframes flow{0%{stroke-dashoffset:22px}to{stroke-dashoffset:-2000px}}.graph-node{transition:transform .62s var(--ease), opacity .4s var(--ease)}.graph-node circle{fill:var(--paper);stroke:var(--line-2);stroke-width:1px;transition:stroke .4s var(--ease), stroke-width .4s var(--ease), fill .4s var(--ease)}.graph-node text{transition:fill .4s var(--ease), opacity .4s var(--ease)}.graph-node-label{fill:var(--ink);font-family:var(--body);letter-spacing:-.01em;font-size:14px}.graph-node-sub{fill:var(--ink-4);font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;font-size:10px}.graph-node.is-active circle{stroke:var(--ink);stroke-width:1.6px}.graph-node.is-done circle{fill:var(--ink);stroke:var(--ink)}.graph-node.is-muted{opacity:.34}.graph-node.is-empty{opacity:0}@media (prefers-reduced-motion:reduce){.graph-flow{display:none}}.concept{display:inline;position:relative}.concept>button{border:0;border-bottom:1px dashed var(--line-2);color:inherit;cursor:pointer;transition:border-color .24s var(--ease);background:0 0;padding:0}.concept>button:hover{border-color:var(--ink)}.concept-note{z-index:40;border:1px solid var(--line-2);background:var(--paper);width:min(280px,74vw);color:var(--ink-2);opacity:0;pointer-events:none;transition:opacity .24s var(--ease), transform .24s var(--ease);border-radius:10px;padding:14px 16px;font-size:13.5px;line-height:1.55;position:absolute;top:calc(100% + 12px);left:0;transform:translateY(6px);box-shadow:0 12px 34px #28262414}.concept.is-open .concept-note{opacity:1;pointer-events:auto;transform:none}@media (max-width:1180px){.rail{display:none}}@media (max-width:700px){.chapter{margin-top:76px}.chapter-title{margin-bottom:22px;font-size:23px}.pull{margin-bottom:32px;font-size:25px}.figure-block{margin-top:40px}.figure-status{min-height:0;font-size:15px}.graph-node-label,.gg-name{font-size:15px}.graph-node-sub,.gg-sub{font-size:11px}.graph-edges path,.graph-node circle{vector-effect:non-scaling-stroke}.concept-note{width:min(280px,100vw - 48px)}}.code-block{margin:clamp(24px,3vh,32px) 0 0}.code-block pre.shiki{border:1px solid var(--line);background:var(--surface);font-family:var(--mono);tab-size:2;border-radius:10px;margin:0;padding:18px 20px;font-size:12.5px;font-weight:400;line-height:1.7;overflow-x:auto}.code-block pre.shiki code{min-width:100%;display:block}.code-block pre.shiki:focus-visible{outline:1.5px solid var(--ink);outline-offset:3px}.code-block figcaption{max-width:58ch;color:var(--ink-4);margin:12px 0 0;font-size:12.5px;line-height:1.55}@media (max-width:700px){.code-block pre.shiki{border-radius:8px;padding:14px 16px;font-size:12px}}
