:root{color-scheme:light;--bg: #f2f2ef;--dot: rgba(24, 24, 26, .07);--card: #fbfbfa;--card-2: #f4f4f1;--face: #ffffff;--line: #dcdcd8;--line-strong: #c3c3bf;--ink: #18181a;--text: #46464b;--muted: #68686e;--faint: #6c6c72;--accent: #a24e0e;--accent-strong: #8a420b;--accent-ink: #ffffff;--accent-soft: rgba(162, 78, 14, .09);--accent-line: rgba(162, 78, 14, .38);--shadow: 0 0 0 1px rgba(0, 0, 0, .04), 0 1px 1px -.5px rgba(0, 0, 0, .04), 0 3px 3px -1.5px rgba(0, 0, 0, .04), 0 8px 12px -6px rgba(0, 0, 0, .06);--t-kw: #3a4f99;--t-str: #3f6b46;--t-num: #a24e0e;--t-com: #6c6c72;--t-fn: #18181a;--t-const: #7a3f86;--heat-grid: rgba(0, 0, 0, .25);--ft-lesson-1: #bd4238;--ft-lesson-1-soft: rgba(189, 66, 56, .1);--ft-lesson-2: #a65609;--ft-lesson-2-soft: rgba(166, 86, 9, .1);--ft-lesson-3: #886608;--ft-lesson-3-soft: rgba(136, 102, 8, .1);--ft-lesson-4: #4e7707;--ft-lesson-4-soft: rgba(78, 119, 7, .1);--ft-lesson-5: #0d7c59;--ft-lesson-5-soft: rgba(13, 124, 89, .1);--ft-lesson-6: #0b7878;--ft-lesson-6-soft: rgba(11, 120, 120, .1);--ft-lesson-7: #0c7492;--ft-lesson-7-soft: rgba(12, 116, 146, .1);--ft-lesson-8: #186bc5;--ft-lesson-8-soft: rgba(24, 107, 197, .1);--ft-lesson-9: #685cc6;--ft-lesson-9-soft: rgba(104, 92, 198, .1);--ft-lesson-10: #944fb0;--ft-lesson-10-soft: rgba(148, 79, 176, .1);--ft-lesson-11: #af4387;--ft-lesson-11-soft: rgba(175, 67, 135, .1);--ft-lesson-12: #766f02;--ft-lesson-12-soft: rgba(118, 111, 2, .1);--ft-lesson-13: #2e7a3c;--ft-lesson-13-soft: rgba(46, 122, 60, .1);--ft-lesson-14: #ab3a55;--ft-lesson-14-soft: rgba(171, 58, 85, .1);--ft-hotspot: #15918f;--ft-hotspot-soft: rgba(21, 145, 143, .22);--ft-gold-top: #dccaa0;--ft-gold-left: #cdb98c;--ft-gold-right: #b19c6f;--ft-gold-edge: #5c4a28;--ft-gold-shine: #ebdfbf;--ft-gold-shade: #a48e62;--ft-velostat-top: #2c2f3a;--ft-velostat-left: #21242e;--ft-velostat-right: #151720;--ft-velostat-edge: #0f111b;--ft-rubber-top: #4a4542;--ft-rubber-left: #3e3936;--ft-rubber-right: #302c29;--ft-rubber-edge: #15110e;--ft-signal: #c90f78;--ft-signal-soft: rgba(201, 15, 120, .16);--on-lc: #ffffff;--sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "DejaVu Sans", Arial, sans-serif;--mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, "DejaVu Sans Mono", "Liberation Mono", monospace;--radius: 10px;--radius-sm: 7px;--ease: cubic-bezier(.32, .72, 0, 1);--side-w: 76px;--bar-h: 62px;--gutter: clamp(16px, 2.2vw, 28px);--safe-l: env(safe-area-inset-left, 0px);--safe-r: env(safe-area-inset-right, 0px);--gutter-l: var(--gutter);--gutter-r: max(var(--gutter), var(--safe-r))}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg: #0b0b0c;--dot: rgba(255, 255, 255, .06);--card: #131314;--card-2: #19191a;--face: #1c1c1d;--line: #2a2a2c;--line-strong: #3b3b3f;--ink: #ededee;--text: #bdbdc0;--muted: #96969a;--faint: #8a8a8f;--accent: #e8a061;--accent-strong: #f2b57f;--accent-ink: #1b1007;--accent-soft: rgba(232, 160, 97, .12);--accent-line: rgba(232, 160, 97, .45);--shadow: inset 0 1px 0 0 rgba(255, 255, 255, .03), 0 0 0 1px rgba(0, 0, 0, .3), 0 8px 16px -8px rgba(0, 0, 0, .5);--t-kw: #93a8ff;--t-str: #9fd4a5;--t-num: #e8a061;--t-com: #8a8a8f;--t-fn: #ededee;--t-const: #d3a2e0;--ft-lesson-1: #d4675b;--ft-lesson-1-soft: rgba(212, 103, 91, .16);--ft-lesson-2: #c86f25;--ft-lesson-2-soft: rgba(200, 111, 37, .16);--ft-lesson-3: #ac820c;--ft-lesson-3-soft: rgba(172, 130, 12, .16);--ft-lesson-4: #67932c;--ft-lesson-4-soft: rgba(103, 147, 44, .16);--ft-lesson-5: #0a9a70;--ft-lesson-5-soft: rgba(10, 154, 112, .16);--ft-lesson-6: #089696;--ft-lesson-6-soft: rgba(8, 150, 150, .16);--ft-lesson-7: #1394ba;--ft-lesson-7-soft: rgba(19, 148, 186, .16);--ft-lesson-8: #498bdc;--ft-lesson-8-soft: rgba(73, 139, 220, .16);--ft-lesson-9: #827bda;--ft-lesson-9-soft: rgba(130, 123, 218, .16);--ft-lesson-10: #ac70c6;--ft-lesson-10-soft: rgba(172, 112, 198, .16);--ft-lesson-11: #c6669f;--ft-lesson-11-soft: rgba(198, 102, 159, .16);--ft-lesson-12: #928a14;--ft-lesson-12-soft: rgba(146, 138, 20, .16);--ft-lesson-13: #4fa45c;--ft-lesson-13-soft: rgba(79, 164, 92, .16);--ft-lesson-14: #d4627e;--ft-lesson-14-soft: rgba(212, 98, 126, .16);--ft-hotspot: #2cc2bf;--ft-hotspot-soft: rgba(44, 194, 191, .26);--ft-gold-top: #cbb990;--ft-gold-left: #bca97e;--ft-gold-right: #a38e63;--ft-gold-edge: #eaddbd;--ft-gold-shine: #d8ccac;--ft-gold-shade: #978258;--ft-velostat-top: #3f4250;--ft-velostat-left: #2d303d;--ft-velostat-right: #1d1f2a;--ft-velostat-edge: #7e808a;--ft-rubber-top: #5a5450;--ft-rubber-left: #47413e;--ft-rubber-right: #342f2c;--ft-rubber-edge: #989492;--ft-signal: #fc69ab;--ft-signal-soft: rgba(252, 105, 171, .2);--on-lc: #141415}}:root[data-theme=dark]{color-scheme:dark;--bg: #0b0b0c;--dot: rgba(255, 255, 255, .06);--card: #131314;--card-2: #19191a;--face: #1c1c1d;--line: #2a2a2c;--line-strong: #3b3b3f;--ink: #ededee;--text: #bdbdc0;--muted: #96969a;--faint: #8a8a8f;--accent: #e8a061;--accent-strong: #f2b57f;--accent-ink: #1b1007;--accent-soft: rgba(232, 160, 97, .12);--accent-line: rgba(232, 160, 97, .45);--shadow: inset 0 1px 0 0 rgba(255, 255, 255, .03), 0 0 0 1px rgba(0, 0, 0, .3), 0 8px 16px -8px rgba(0, 0, 0, .5);--t-kw: #93a8ff;--t-str: #9fd4a5;--t-num: #e8a061;--t-com: #8a8a8f;--t-fn: #ededee;--t-const: #d3a2e0;--ft-lesson-1: #d4675b;--ft-lesson-1-soft: rgba(212, 103, 91, .16);--ft-lesson-2: #c86f25;--ft-lesson-2-soft: rgba(200, 111, 37, .16);--ft-lesson-3: #ac820c;--ft-lesson-3-soft: rgba(172, 130, 12, .16);--ft-lesson-4: #67932c;--ft-lesson-4-soft: rgba(103, 147, 44, .16);--ft-lesson-5: #0a9a70;--ft-lesson-5-soft: rgba(10, 154, 112, .16);--ft-lesson-6: #089696;--ft-lesson-6-soft: rgba(8, 150, 150, .16);--ft-lesson-7: #1394ba;--ft-lesson-7-soft: rgba(19, 148, 186, .16);--ft-lesson-8: #498bdc;--ft-lesson-8-soft: rgba(73, 139, 220, .16);--ft-lesson-9: #827bda;--ft-lesson-9-soft: rgba(130, 123, 218, .16);--ft-lesson-10: #ac70c6;--ft-lesson-10-soft: rgba(172, 112, 198, .16);--ft-lesson-11: #c6669f;--ft-lesson-11-soft: rgba(198, 102, 159, .16);--ft-lesson-12: #928a14;--ft-lesson-12-soft: rgba(146, 138, 20, .16);--ft-lesson-13: #4fa45c;--ft-lesson-13-soft: rgba(79, 164, 92, .16);--ft-lesson-14: #d4627e;--ft-lesson-14-soft: rgba(212, 98, 126, .16);--ft-hotspot: #2cc2bf;--ft-hotspot-soft: rgba(44, 194, 191, .26);--ft-gold-top: #cbb990;--ft-gold-left: #bca97e;--ft-gold-right: #a38e63;--ft-gold-edge: #eaddbd;--ft-gold-shine: #d8ccac;--ft-gold-shade: #978258;--ft-velostat-top: #3f4250;--ft-velostat-left: #2d303d;--ft-velostat-right: #1d1f2a;--ft-velostat-edge: #7e808a;--ft-rubber-top: #5a5450;--ft-rubber-left: #47413e;--ft-rubber-right: #342f2c;--ft-rubber-edge: #989492;--ft-signal: #fc69ab;--ft-signal-soft: rgba(252, 105, 171, .2);--on-lc: #141415}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background-color:var(--bg);background-image:radial-gradient(var(--dot) 1px,transparent 1.2px);background-size:22px 22px;color:var(--text);font:15px/1.55 var(--sans);-webkit-font-smoothing:antialiased;min-height:100vh;min-height:100dvh}[hidden]{display:none!important}img,video{max-width:100%;display:block}a{color:var(--accent);text-underline-offset:2px;text-decoration-thickness:1px}a:hover{color:var(--accent-strong)}h1,h2,h3{color:var(--ink);margin:0;line-height:1.2}p{margin:0}button{font:inherit;color:inherit}code,kbd,.mono{font-family:var(--mono)}code{font-size:.88em;background:var(--card-2);border:1px solid var(--line);border-radius:4px;padding:.05em .35em;color:var(--ink)}kbd{font-size:.78em;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:4px;padding:0 .35em;background:var(--face);color:var(--ink)}dfn{font-style:normal;font-weight:600;color:var(--ink);border-bottom:1px dotted var(--faint)}dfn.dfn{cursor:help;border-bottom-color:var(--muted)}dfn.dfn:hover,dfn.dfn[aria-describedby]{border-bottom-style:solid;border-bottom-color:var(--accent)}.dfn-tip{position:fixed;z-index:60;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);background:var(--face);color:var(--text);box-shadow:var(--shadow);font-size:13px;line-height:1.5}.dfn-tip b{color:var(--ink)}.dfn-tip-link{display:inline-block;margin-left:2px;font-size:11.5px;white-space:nowrap}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.skip-link{position:absolute;left:12px;top:-60px;z-index:100;background:var(--ink);color:var(--bg);padding:8px 12px;border-radius:6px;font-weight:600}.skip-link:focus{top:calc(12px + env(safe-area-inset-top,0px));color:var(--bg)}.noscript{padding:40px 24px}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.kicker{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);display:flex;align-items:center;flex-wrap:wrap;gap:6px}.section-title,.card-title{font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink)}.icon{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none}.icon .f{fill:currentColor;stroke:none}.btn-primary,.btn-ghost,.btn-run{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:0 14px;border-radius:8px;font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;cursor:pointer;transition:background-color .15s,border-color .15s,color .15s,transform .15s var(--ease)}.btn-primary,.btn-run{background:var(--ink);color:var(--bg);border:1px solid var(--ink)}.btn-primary:hover,.btn-run:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:disabled{background:var(--card-2);color:var(--muted);border-color:var(--line);cursor:default}.btn-ghost{background:var(--face);color:var(--ink);border:1px solid var(--line)}.btn-ghost:hover{border-color:var(--line-strong);color:var(--ink)}.btn-primary .icon,.btn-ghost .icon,.btn-run .icon{width:16px;height:16px}.btn-lg{min-height:44px;padding:0 18px;font-size:13px}.btn-icon{width:34px;height:34px;display:inline-grid;place-items:center;border-radius:8px;border:1px solid var(--line);background:var(--face);color:var(--ink);cursor:pointer}.btn-icon:hover{border-color:var(--line-strong)}.btn-icon .icon{width:17px;height:17px}.btn-icon.is-done{color:var(--accent);border-color:var(--accent-line)}.badge{display:inline-flex;align-items:center;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;line-height:1;padding:3px 6px;border-radius:4px;border:1px solid var(--line-strong);color:var(--muted);white-space:nowrap;vertical-align:.1em;margin-left:4px;cursor:help}.badge-inferred{border-style:dashed}.badge-illustrative{border-style:dotted;border-width:1.5px}.badge-external{background:var(--card-2)}.badge-proposed{border-style:dashed;border-color:var(--accent-line, var(--line-strong))}.badge-draft{border-color:var(--accent-line);color:var(--accent);cursor:default}.chip{display:inline-flex;align-items:center;font-family:var(--mono);font-size:10.5px;letter-spacing:.02em;padding:2px 7px;border-radius:999px;background:var(--card-2);border:1px solid var(--line);color:var(--muted);text-decoration:none;white-space:nowrap}a.chip:hover{color:var(--accent);border-color:var(--accent-line)}.empty{color:var(--muted);font-style:italic}.foot{font-size:12.5px;color:var(--muted);margin-top:14px;line-height:1.6}.prose p+p,.prose p+ul,.prose ul+p{margin-top:.75em}.prose ul,.prose ol{padding-left:1.2em;margin:.5em 0 0}.prose li+li{margin-top:.3em}.prose .aside{color:var(--muted);font-size:13.5px}.draft-note{color:var(--accent);font-family:var(--mono);font-size:12px;letter-spacing:.04em}@keyframes flash{0%{background:var(--accent);color:var(--accent-ink)}}.is-flash{animation:flash .7s var(--ease)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}.is-flash{animation:none}}.only-touch{display:none}@media(pointer:coarse){.only-mouse{display:none}.only-touch{display:inline}}@media(forced-colors:active){.step-dot.is-current:not(:focus-visible),.strip-card.is-current:not(:focus-visible),.tab.is-active:not(:focus-visible),[aria-pressed=true]:not(:focus-visible){outline:2px solid Highlight;outline-offset:-4px}.step-dot.is-current:not(:focus-visible){outline-offset:-2px}:root .side-nav a.is-active:before{forced-color-adjust:none;background:Highlight}}.app{display:grid;grid-template-columns:calc(var(--side-w) + var(--safe-l)) minmax(0,1fr);grid-template-rows:auto 1fr;min-height:100vh;min-height:100dvh}.outlet{grid-column:2;min-width:0;outline:none}.sidebar{grid-row:1 / -1;grid-column:1;position:sticky;top:0;height:100vh;height:100dvh;display:flex;flex-direction:column;align-items:center;gap:18px;padding:calc(16px + env(safe-area-inset-top,0px)) 0 16px var(--safe-l);background:var(--card);border-right:1px solid var(--line);z-index:20}.side-logo{display:grid;place-items:center;border-radius:10px}.side-logo .logo{width:40px;height:40px}.side-nav{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;flex:1;width:100%;align-items:center}.side-lang{margin-top:auto}.side-nav a,.lang-toggle,.theme-toggle{position:relative;display:grid;justify-items:center;gap:3px;width:58px;padding:9px 0 7px;border-radius:10px;color:var(--muted);text-decoration:none;background:none;border:1px solid transparent;cursor:pointer}.side-nav a:hover,.lang-toggle:hover,.theme-toggle:hover{color:var(--ink);background:var(--card-2)}.side-nav a.is-active{color:var(--ink);background:var(--face);border-color:var(--line)}.side-nav a.is-active:before{content:"";position:absolute;left:-9px;top:10px;bottom:10px;width:3px;border-radius:2px;background:var(--accent)}.side-nav .icon{width:22px;height:22px}.side-label{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em;text-transform:uppercase}.lang-label{display:flex;align-items:baseline;gap:2px;white-space:nowrap}.lang-label>span{opacity:.62}.lang-label>.is-on{opacity:1;color:var(--ink);font-weight:600}.lang-label>.lang-sep{opacity:.45}.lang-label>[lang|=zh]{font-family:var(--sans-cjk);font-size:10.5px;letter-spacing:0}.theme-toggle .i-moon,:root[data-theme=dark] .theme-toggle .i-sun{display:none}:root[data-theme=dark] .theme-toggle .i-moon{display:block}.logo-plate{fill:var(--ink)}.logo-sense{stroke:var(--faint);stroke-width:2.4;stroke-linecap:round;fill:none}.logo-drive{stroke:var(--bg);stroke-width:2.4;stroke-linecap:round;fill:none}.logo-dot{fill:var(--accent)}.topbar{grid-column:2;display:flex;align-items:center;gap:16px;padding:calc(14px + env(safe-area-inset-top,0px)) var(--gutter-r) 12px var(--gutter-l);min-width:0;--name-fs: clamp(18px, 2vw, 24px);--tag-fs: 11px;--tag-k: .729;--tag-lead: .392;--name-h: calc(var(--name-fs) * .729);--tag-gap: calc(var(--name-fs) * .154 + 4px + var(--tag-fs) * var(--tag-lead));--tag-h: calc(var(--tag-fs) * var(--tag-k));--ink-h: calc(var(--name-h) + var(--tag-gap) + var(--tag-h))}@supports (width: round(1.5px,1px)){.topbar{--name-h: round(var(--name-fs) * .729, 1px);--tag-gap: round(var(--name-fs) * .154 + 4px + var(--tag-fs) * var(--tag-lead), 1px);--tag-h: round(var(--tag-fs) * var(--tag-k), 1px)}}.brand{display:flex;align-items:center;gap:14px;text-decoration:none;color:var(--ink);min-width:0;flex:none}.brand .logo{display:none}.brand-rule{width:1px;height:34px;background:var(--line-strong);display:none}.brand-text{display:grid;justify-items:start}.brand-tag{margin-top:var(--tag-gap)}.bm{display:block;overflow:visible}.brand-name .bm{height:var(--name-h);fill:currentColor}.brand-tag .bm{height:var(--tag-h);fill:var(--muted)}.bm .bm-dot{fill:var(--accent)}.bm-phone,.bm-tiny{display:none}.brand:hover{color:var(--ink)}.progress-card,.gh-card,.discord-btn{display:flex;align-items:center;flex:none;height:var(--ink-h);border:1px solid var(--line);border-radius:var(--radius-sm);text-decoration:none;color:var(--ink)}.progress-card,.gh-card{height:calc(var(--ink-h) + 4px);background:var(--card)}.progress-card:hover,.gh-card:hover{color:var(--ink);border-color:var(--line-strong)}.progress-label,.gh-name,.discord-label{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;line-height:1;white-space:nowrap}.progress-card{gap:10px;margin-left:clamp(0px,1.25vw,16px);padding:0 14px 0 11px}.progress-icon{width:22px;height:22px;stroke-width:1.4}.progress-body{display:grid;gap:4px;flex:1;min-width:0}.progress-row{display:flex;align-items:center;gap:10px}.progress-track{flex:1;height:6px;border-radius:3px;background:var(--card-2);border:1px solid var(--line);overflow:hidden;min-width:90px}.progress-fill{display:block;height:100%;width:0;background:var(--accent);transition:width .6s var(--ease)}.progress-count{font-size:12px;font-weight:600;line-height:1}.topbar-links{display:flex;align-items:center;gap:8px;margin-left:auto;flex:none}.mark{display:block;flex:none;fill:currentColor}.gh-card{gap:9px;padding:0 13px 0 10px}.gh-card .mark-github{width:22px;height:22px}.gh-text{display:grid;gap:4px}.gh-stats{display:flex;gap:10px;font-size:12px;line-height:1;color:var(--muted)}.gh-stats>span{display:inline-flex;align-items:center;gap:4px}.gh-stats .mark{width:12px;height:12px}.gh-stats b{font-weight:600;color:var(--ink)}.discord-btn{gap:9px;padding:0 14px 0 11px;background:var(--ink);border-color:var(--ink);color:var(--bg);transition:background-color .15s,border-color .15s,color .15s}.discord-btn:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.discord-btn .mark-discord{width:20px;height:20px}@media(max-width:600.98px){:root{--gutter-l: max(var(--gutter), var(--safe-l))}.app{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 1fr;padding-bottom:calc(var(--bar-h) + env(safe-area-inset-bottom,0px))}.outlet,.topbar{grid-column:1}.sidebar{position:fixed;inset:auto 0 0;height:calc(var(--bar-h) + env(safe-area-inset-bottom,0px));padding:0 max(8px,var(--safe-r)) env(safe-area-inset-bottom,0px) max(8px,var(--safe-l));flex-direction:row;border-right:0;border-top:1px solid var(--line);grid-row:auto}.side-logo{display:none}.side-nav{flex-direction:row;justify-content:space-around;gap:0;margin:0;height:100%;min-width:0}.side-nav>li{flex:1 1 0;min-width:0;display:flex;justify-content:center}.side-lang,.side-theme{margin:0}.side-nav a,.lang-toggle,.theme-toggle{width:100%;max-width:64px;min-width:0;padding:7px 0 5px}.side-nav a.is-active:before{inset:-1px 16px auto;width:auto;height:3px}.topbar{flex-wrap:wrap;padding-top:calc(14px + env(safe-area-inset-top,0px));padding-bottom:10px;--name-fs: 17px;--tag-fs: 10px}.brand .logo{display:block;width:36px;height:36px}.brand{gap:10px}.bm-wide{display:none}.bm-phone{display:block}.progress-card{flex:1 0 100%;min-width:0;height:auto;margin-left:0;gap:12px;padding:8px 12px;border-radius:var(--radius)}.progress-icon{width:28px;height:28px}.progress-body{gap:6px}.progress-label{line-height:inherit}.progress-count{font-size:13px;line-height:inherit}}@media(max-width:859.98px){.gh-text,.discord-label{display:none}.gh-card,.discord-btn{width:var(--ink-h);padding:0;justify-content:center}.gh-card{width:calc(var(--ink-h) + 4px)}.gh-card .mark-github,.discord-btn .mark-discord{width:18px;height:18px}.gh-card,.discord-btn{position:relative}.gh-card:after,.discord-btn:after{content:"";position:absolute;inset:-8px -4px}}@media(max-width:359.98px){.topbar{column-gap:10px;--name-fs: 16px}.brand{gap:8px}.brand .logo{width:32px;height:32px}.brand-name .bm-phone{display:none}.brand-name .bm-tiny{display:block}.topbar-links{gap:6px}}@media(min-width:601px)and (max-width:679.98px){.progress-card{margin-left:0}.progress-icon{display:none}.topbar-links{gap:6px}.progress-card .progress-pips{min-width:100px}}@media(min-width:601px)and (max-height:500px){.sidebar{gap:0;padding-top:calc(8px + env(safe-area-inset-top,0px));padding-bottom:8px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}.side-logo{display:none}.side-nav{margin:0;gap:2px}.side-nav a,.lang-toggle,.theme-toggle{gap:1px;padding:5px 0 4px}.side-nav .icon{width:20px;height:20px}}@media(min-width:2200px){.topbar{width:100%;max-width:2560px;margin-inline:auto}}.lesson-view{display:grid;grid-template-columns:minmax(0,1fr) clamp(340px,30vw,440px);grid-template-rows:minmax(0,1fr) auto;grid-template-areas:"stage panel" "strip strip";gap:16px;padding:0 var(--gutter-r) 18px var(--gutter-l)}@media(min-width:1181px)and (min-height:640px),(min-width:1024px)and (min-height:640px)and (min-aspect-ratio:799/1000){body[data-view=lesson] .app{height:100vh;height:100dvh;overflow:hidden;grid-template-rows:auto minmax(0,1fr)}body[data-view=lesson] .outlet{min-height:0;display:flex}.lesson-view{flex:1;min-height:0}}@media(min-width:1024px)and (min-height:640px)and (max-height:820px){body[data-view=lesson] .outlet{display:block;overflow-y:auto;overscroll-behavior-y:contain}body[data-view=lesson] .lesson-view{height:100%;grid-template-rows:100% auto}}.stage{grid-area:stage;display:flex;flex-direction:column;min-height:0;overflow:hidden;position:relative;container:stage / inline-size}.stage.just-done{border-color:var(--accent-line)}.stage-body{background:var(--bg);flex:1;min-height:0;display:flex;flex-direction:column}.stage-body.is-split{display:grid;grid-template-rows:minmax(min(200px,50%),var(--split-fig, 1.15fr)) auto minmax(0,var(--split-widget, 1fr))}.stage-body.is-split[data-fig-mode=fit]{grid-template-rows:minmax(0,var(--split-fig, 3fr)) auto minmax(0,var(--split-widget, 2fr))}.stage-body.is-split[data-fig-mode=stage]{grid-template-rows:minmax(min(300px,64%),1fr) minmax(0,clamp(260px,var(--split-widget-share, 36%),380px))}.stage-body.is-split[data-fig-mode=stage][data-wrow=short]{grid-template-rows:minmax(min(300px,64%),1fr) minmax(0,clamp(168px,26%,236px))}.stage-body.is-split[data-fig-mode=stage][data-wrow=strip]{grid-template-rows:minmax(min(300px,64%),1fr) minmax(0,104px)}.stage-body.is-split[data-fig-mode=stage]>.widget-slot{overflow-y:auto;overscroll-behavior-y:contain}.stage-body.is-split>.widget-slot{container:wslot / size}.stage-body[data-fig-mode=stage]>.figure-readout{display:none}.figure-slot,.widget-slot{position:relative;flex:1;min-height:0}.widget-slot[hidden]{display:none!important}.stage-over{position:absolute;inset:0;z-index:4;overflow:hidden;background:var(--bg);opacity:0;transition:opacity .32s var(--ease)}.stage-over.is-on{opacity:1}.stage-over[hidden]{display:none}@media(prefers-reduced-motion:reduce){.stage-over{transition:none}}.figure-frame{position:absolute;inset:0;width:100%;height:100%;border:0;display:block;background:transparent;opacity:0;transition:opacity .4s var(--ease)}.figure-slot.is-loaded .figure-frame{opacity:1}.figure-status{position:absolute;left:50%;top:14px;transform:translate(-50%);z-index:2;font-size:11px;letter-spacing:.06em;color:var(--muted);background:var(--card);border:1px solid var(--line);border-radius:999px;padding:5px 12px;max-width:calc(100% - 32px);text-align:center}.figure-slot[data-status=loading]:not(.is-loaded) .figure-status{top:50%;transform:translate(-50%,-50%)}.figure-hint{position:absolute;right:12px;bottom:8px;font-size:10.5px;letter-spacing:.06em;color:var(--faint);pointer-events:none}.figure-slot:focus-within .figure-hint{color:var(--accent)}.figure-slot:focus-within{outline:2px solid var(--accent);outline-offset:-3px;border-radius:var(--radius)}.stage-empty{flex:1;display:grid;place-content:center;justify-items:center;gap:10px;text-align:center;padding:40px 24px;color:var(--muted)}.stage-empty .mono{font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}.stage-empty-icon{width:72px;height:72px;display:grid;place-items:center;border:1px dashed var(--line-strong);border-radius:16px;color:var(--ink)}.stage-empty-icon .icon{width:32px;height:32px;stroke-width:1.3}.media-grid{flex:1;overflow:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;padding:16px}.media-grid figure{margin:0}.media-grid figcaption{font-size:12.5px;color:var(--muted);margin-top:6px}.steps{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:16px;padding:12px 16px;border-top:1px solid var(--line);background:var(--card)}.steps-dots{display:flex;gap:6px}.step-dot{width:28px;height:28px;border-radius:50%;border:1px solid var(--line-strong);background:var(--face);color:var(--muted);font-size:11.5px;display:grid;place-items:center;cursor:pointer;padding:0}.step-dot.is-done{border-color:var(--accent-line);color:var(--accent);background:var(--accent-soft)}.step-dot.is-current{border-color:var(--ink);background:var(--ink);color:var(--bg)}.steps-body{min-width:0}.steps-kicker{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);font-weight:600}.steps-text{font-size:13.5px;color:var(--text);margin-top:2px}.steps-textbox{display:grid}.steps-textbox>.steps-text{grid-area:1 / 1}.steps-sizer{visibility:hidden;pointer-events:none}.steps-actions [data-go]{display:inline-grid}.go-label{grid-area:1 / 1;display:inline-flex;align-items:center;justify-content:center;gap:8px}.go-sizer{visibility:hidden}.steps-actions{display:flex;gap:8px}.steps-actions .btn-ghost{width:36px;padding:0}@container stage (max-width: 780px){.steps{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"dots actions" "body body";gap:8px 12px;padding:10px 14px}.steps-dots{grid-area:dots}.steps-body{grid-area:body}.steps-actions{grid-area:actions}}.panel{grid-area:panel;display:flex;flex-direction:column;gap:16px;min-height:0;min-width:0}.info-card{flex:1 1 0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.tabs-row{display:flex;align-items:stretch;border-bottom:1px solid var(--line);flex:none;min-width:0}.tabs-row .read-toggle{margin:0 12px 0 6px}.tabs{flex:1;min-width:0;display:flex;gap:2px;padding:6px 10px 0;overflow-x:auto;scrollbar-width:none;flex:none}.tab{background:none;border:0;border-bottom:2px solid transparent;padding:10px 10px 9px;font-family:var(--mono);font-size:11.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);cursor:pointer;white-space:nowrap;margin-bottom:-1px}.tab:hover{color:var(--ink)}.tab.is-active{color:var(--ink);border-bottom-color:var(--accent)}.tab.is-empty:not(.is-active){color:var(--faint)}.pane{flex:1;min-height:0;overflow-y:auto;padding:18px 20px 22px;overscroll-behavior:contain}.pane:focus-visible{outline-offset:-3px}.lesson-title{font-family:var(--mono);font-size:22px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;margin:8px 0}.lede{font-size:15px;color:var(--text)}.lede b{color:var(--ink)}.lesson-done-chip{display:inline-flex;align-items:center;gap:3px;color:var(--accent)}.lesson-done-chip .icon{width:14px;height:14px}.features{list-style:none;padding:0;margin:16px 0 18px;display:grid;gap:10px}.feature{display:grid;grid-template-columns:40px minmax(0,1fr);align-items:center;gap:12px;font-size:13.5px}.feature b{display:block;color:var(--ink);font-weight:600;font-size:13.5px}.feature-icon{width:40px;height:40px;display:grid;place-items:center;border:1px solid var(--line);border-radius:9px;background:var(--face);color:var(--ink)}.pane .prose{font-size:14.5px;border-top:1px solid var(--line);padding-top:16px}#pane-wiring .prose,#pane-code .prose{border:0;padding:0}.quiz{margin-top:22px;border-top:1px solid var(--line);padding-top:16px;display:grid;gap:14px}.q{border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;margin:0;background:var(--face);min-width:0}.q.is-right{border-color:var(--accent-line)}.q legend{float:left;width:100%;font-weight:600;color:var(--ink);font-size:14px;padding:0 4px;margin-left:-4px}.q legend+*{clear:both}.q-n{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;border:1px solid var(--line-strong);font-size:11px;margin-right:4px;vertical-align:1px}.q-choices{display:grid;gap:6px;margin-top:8px}.q-choice{display:flex;align-items:flex-start;gap:9px;padding:7px 10px;border:1px solid var(--line);border-radius:7px;cursor:pointer;font-size:13.5px}.q-choice:hover{border-color:var(--line-strong)}.q-choice input{accent-color:var(--accent);margin:3px 0 0;flex:none}.q-choice.is-right{border-color:var(--accent);background:var(--accent-soft);color:var(--ink)}.q-choice.is-wrong{border-style:dashed;border-color:var(--line-strong);color:var(--muted);text-decoration:line-through;text-decoration-color:var(--faint)}.q-why{font-size:13px;margin-top:8px;color:var(--text)}.quiz-score{font-size:12px;letter-spacing:.06em;color:var(--muted)}.quiz.is-passed .quiz-score{color:var(--accent)}.table-wrap{overflow-x:auto;margin-top:12px}.pin-table{width:100%;border-collapse:collapse;font-size:13px}.pin-table th{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);text-align:left;font-weight:600;padding:0 8px 8px 0;border-bottom:1px solid var(--line)}.pin-table td{padding:9px 8px 9px 0;border-bottom:1px solid var(--line);vertical-align:top}.pin-table td:first-child,.pin-table td:nth-child(2){color:var(--ink);font-weight:500}.code-notes{margin:12px 0 0;padding-left:1.4em;display:grid;gap:10px;font-size:14px}.code-notes li::marker{font-family:var(--mono);color:var(--accent)}.spec-list{margin:0;display:grid}.spec-row{display:grid;grid-template-columns:minmax(96px,38%) minmax(0,1fr);gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}.spec-row dt{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:2px}.spec-row dd{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px}.spec-value{color:var(--ink);font-weight:600;font-size:14px}.spec-row .badge{margin-left:0}.spec-note{flex-basis:100%;font-size:12.5px;color:var(--muted)}.chips{flex-basis:100%;display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}.code-card{flex:0 1 auto;min-height:0;max-height:40%;display:flex;flex-direction:column;overflow:hidden}.card-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 14px 8px 18px;flex:none}.code-actions{display:flex;gap:6px}.btn-run{min-height:34px;padding:0 12px}.btn-run.is-running{animation:flash .6s var(--ease)}.code-caption{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:0 18px 8px;flex:none}.code-wrap{display:flex;margin:0 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--face);overflow:auto;min-height:0;flex:1 1 auto}.code-gutter{display:flex;flex-direction:column;padding:10px 8px 10px 10px;border-right:1px solid var(--line);color:var(--faint);font-size:12px;line-height:1.75;text-align:right;user-select:none;position:sticky;left:0;background:var(--face);flex:none}.code{margin:0;padding:10px 14px 10px 12px;font-size:12.5px;line-height:1.75;color:var(--ink);white-space:pre;tab-size:4;flex:1;outline-offset:-2px}.code code{background:none;border:0;padding:0;font-size:inherit}.t-kw{color:var(--t-kw)}.t-str{color:var(--t-str)}.t-num{color:var(--t-num)}.t-com{color:var(--t-com);font-style:italic}.t-fn{color:var(--t-fn);font-weight:600}.t-const{color:var(--t-const)}.param{font:inherit;width:calc(var(--w, 3ch) + 14px);padding:0 4px;margin:0 1px;height:1.55em;border:1px solid var(--accent-line);border-radius:4px;background:var(--accent-soft);color:var(--accent);font-weight:600;text-align:center;appearance:textfield;-moz-appearance:textfield;vertical-align:0}.param::-webkit-inner-spin-button,.param::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.param:hover{border-color:var(--accent)}.param:focus-visible{outline:2px solid var(--accent);outline-offset:1px}@media(pointer:coarse){.code,.code-gutter{line-height:27px}.param{font-size:16px;width:calc(var(--w, 3ch) + 22px);min-width:44px;height:25px;padding:0 6px;margin:0 2px;vertical-align:1px}}.code-hint{font-size:12px;color:var(--muted);padding:8px 18px 0;flex:none}.code-card{position:relative}.console{position:absolute;left:12px;right:12px;bottom:12px;z-index:2;max-height:min(9.8em,60%);overflow-y:auto;box-shadow:0 6px 18px -6px #00000059;margin:0;padding:8px 34px 8px 12px;border-radius:var(--radius-sm);background:var(--ink);color:var(--bg);font-size:12px;line-height:1.6;flex:none;overflow-x:auto}.console.is-flash{animation:none}.console-close{position:sticky;float:right;top:0;margin:-4px -26px 0 0;width:24px;height:24px;border:0;border-radius:6px;background:transparent;color:inherit;opacity:.7;font:16px/1 var(--mono);cursor:pointer}.console-close:hover{opacity:1;background:#7f7f7f40}.console-prompt{color:var(--accent)}.code-card{padding-bottom:14px}.strip{grid-area:strip;min-width:0}.strip-title{font-family:var(--mono);font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink);margin-bottom:8px}.strip-row{display:flex;align-items:center;gap:8px}.strip-list{list-style:none;margin:0;padding:2px;display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x proximity;scroll-padding-inline:2px;scroll-behavior:smooth;scrollbar-width:thin;flex:1}.strip-list li{flex:none;scroll-snap-align:start}.strip-list li.strip-new-section{position:relative;margin-left:9px}.strip-list li.strip-new-section:before{content:"";position:absolute;left:-10px;top:10px;bottom:10px;width:1px;background:var(--line-strong)}.strip-list:after{content:"";flex:none;width:var(--strip-end, 0px);margin-left:-10px}.strip-card{display:flex;align-items:center;gap:10px;height:64px;padding:6px 14px 6px 6px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);color:var(--text);text-decoration:none;position:relative;max-width:270px}.strip-card:hover{border-color:var(--line-strong);color:var(--ink)}.strip-card.is-current{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);color:var(--ink)}.strip-thumb{width:72px;height:50px;flex:none;border-radius:6px;overflow:hidden;background:var(--card-2);display:grid;place-items:center}.thumb{width:100%;height:100%;object-fit:cover}.thumb-dark{display:none}:root[data-theme=dark] .thumb-light{display:none}:root[data-theme=dark] .thumb-dark{display:block}.thumb-icon{color:var(--ink);display:grid;place-items:center}.strip-name{font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;max-width:170px}.strip-done{position:absolute;top:5px;right:6px;color:var(--accent)}.strip-done .icon{width:14px;height:14px}.strip-draft{position:absolute;top:4px;right:7px;font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}.strip-arrow{width:36px;height:36px;flex:none;display:grid;place-items:center;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--ink)}.strip-arrow:hover{border-color:var(--line-strong);color:var(--ink)}.strip-arrow.prev .icon{transform:scaleX(-1)}.strip-arrow[aria-disabled=true]{opacity:.35;pointer-events:none}.w-heat{height:100%;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:10px;padding:16px}.w-heat-head{display:flex;align-items:center;gap:8px}.w-kicker{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--ink);font-weight:600}.w-heat-canvas{width:100%;height:100%;object-fit:contain;image-rendering:pixelated;cursor:crosshair;touch-action:none;border-radius:6px;min-height:0}.w-heat-read{font-size:12px;color:var(--muted);min-height:1.6em}.widget-slot.has-card{--stage-card-fixed: 1}.stage-card-wrap{position:absolute;inset:0;display:grid;place-items:center;overflow:auto;overscroll-behavior:contain}.demo-card.stage-card{position:relative;z-index:auto;max-width:calc(100% - 20px);opacity:1;transform:none;box-shadow:0 18px 40px -26px #0006,var(--shadow)}.parts-table td:nth-child(2){font-family:var(--mono);font-size:12px;white-space:nowrap;color:var(--ink)}.parts-table td .chips{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.prose .formula{font-family:var(--mono);font-size:15px;color:var(--ink);text-align:center;padding:8px 12px;border-radius:8px;background:var(--card-2);border:1px solid var(--line)}@media(max-width:1023.98px),(max-height:639.98px),(max-width:1180.98px)and (max-aspect-ratio:799/1000){.lesson-view{grid-template-columns:minmax(0,1fr);grid-template-rows:none;grid-template-areas:"stage" "strip" "panel"}.stage{height:auto}.figure-slot{flex:none;height:var(--fig-h, min(70svh, 640px, 120cqw))}.widget-slot{flex:none;height:min(60vh,460px);height:min(60svh,460px)}.stage-body[data-stage]>.figure-slot{position:absolute;top:0;left:0;right:0}.stage-body[data-stage]{position:relative;overflow:hidden}.stage-body[data-stage]>.stage-over{position:relative;inset:auto;flex:none}.stage-body[data-stage]>.stage-over[data-stage=robot-grasp]:empty{min-height:calc(180px + .772*(100cqw - 24px) + .1875*(100cqw - 42px))}@container stage (min-width: 604px){.stage-body[data-stage]>.stage-over{min-height:0;height:min(70svh,640px)}.stage-body[data-stage]>.stage-over[data-stage]:empty{min-height:0}.stage-body[data-stage]>.stage-over[data-stage=robot-grasp]{height:min(70svh,640px,62cqw + 64px)}}.stage-body.is-split>.widget-slot[data-row]{container-type:inline-size;height:auto}.stage-body.is-split>.widget-slot[data-row=strip]{min-height:96px}.stage-body.is-split>.widget-slot[data-row=short]{height:204px;overflow-y:auto;overscroll-behavior-y:contain}@container stage (max-width: 599px){.stage-body.is-split>.widget-slot[data-row=short]{height:auto;min-height:280px;overflow:visible}}.widget-slot[data-row]>*{height:auto}.widget-slot.has-card{--stage-card-fixed: 0}.stage-card-wrap{position:static;padding:10px 0}.stage-body:not(.is-split)>.widget-slot{height:auto;min-height:240px}.stage-body:not(.is-split)>.widget-slot>*{height:auto;overflow:visible}.stage-body.is-split{display:flex}.info-card{flex:none;max-height:none}.pane{overflow:visible}.code-card{max-height:none}}@media(min-width:601px)and (max-height:639.98px){.figure-slot{height:calc(100vh - 16px);height:max(240px,100svh - 16px)}@container stage (min-width: 604px){.stage-body[data-stage]>.stage-over[data-stage]{height:max(240px,100svh - 16px)}}}@media(max-width:600.98px){.lesson-view{gap:12px}.steps{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"dots actions" "body body";gap:8px 12px;padding:10px 12px}.steps-dots{grid-area:dots}.steps-body{grid-area:body}.steps-actions{grid-area:actions}.figure-hint{display:none}.pane{padding:16px}.lesson-title{font-size:19px}.strip-card{height:58px}.strip-thumb{width:58px;height:44px}.strip-arrow{display:none}.spec-row{grid-template-columns:minmax(0,1fr);gap:4px}}.read-toggle{margin-left:auto;align-self:center;display:inline-flex;align-items:center;gap:6px;background:none;border:1px solid var(--line);border-radius:999px;padding:4px 7px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--muted);cursor:pointer;white-space:nowrap;flex:none}.read-toggle:hover{color:var(--ink);border-color:var(--line-strong)}.read-toggle .icon{width:13px;height:13px;transform:rotate(90deg);transition:transform .2s var(--ease)}.read-toggle[aria-pressed=true] .icon{transform:rotate(-90deg)}.panel.is-reading .code-card{flex:none;max-height:none}.panel.is-reading .code-card>:not(.card-head){display:none}.panel.is-reading .code-card>.card-head{padding-bottom:12px}.figure-readout{flex:none;margin:0;padding:6px 14px;border-top:1px solid var(--line);font-family:var(--mono);font-size:12px;line-height:1.45;color:var(--ink);background:var(--card);height:calc(2.9em + 12px);overflow:hidden;white-space:pre-line}@media(max-width:1023.98px),(max-height:639.98px),(max-width:1180.98px)and (max-aspect-ratio:799/1000){.read-toggle,.figure-readout{display:none}}.pane code,.w-build code{overflow-wrap:anywhere}@media(max-width:1023.98px),(max-height:639.98px),(max-width:1180.98px)and (max-aspect-ratio:799/1000){.console{position:static;max-height:none;margin:8px 12px 0;box-shadow:none}}@media(min-width:1024px)and (min-height:640px)and (max-height:860px){.code-hint{display:none}.code-caption{padding-bottom:6px}}@media(min-width:2200px)and (min-height:640px){.lesson-view{grid-template-columns:minmax(0,1fr) clamp(440px,21vw,560px)}}@media(min-width:2200px){.lesson-view{width:100%;max-width:2560px;margin-inline:auto}.steps-body{max-width:1000px}}.page{padding:8px var(--gutter-r) 48px var(--gutter-l);max-width:1180px;margin-inline:auto;width:100%;box-sizing:border-box}.page-head{margin:18px 0 24px;display:grid;gap:10px;max-width:70ch}.page-title{font-family:var(--mono);font-size:clamp(24px,3vw,32px);font-weight:600;letter-spacing:.08em;text-transform:uppercase}.hero{padding:clamp(20px,5vh,56px) 0 28px;display:grid;grid-template-columns:minmax(0,1fr);align-items:center;gap:24px}.hero-text{display:grid;gap:16px;max-width:760px}.hero-fig{display:none;text-decoration:none;color:var(--muted)}.hero-fig-img{display:block;aspect-ratio:5 / 3;border:1px solid var(--line);border-radius:var(--radius, 12px);background:var(--card);overflow:hidden}.hero-cover{display:block;width:100%;height:100%;object-fit:contain}.hero-fig-cap{display:block;margin-top:8px;font-size:11px;letter-spacing:.1em;text-transform:uppercase}.hero-fig:hover .hero-fig-img{border-color:var(--line-strong)}@media(min-width:1024px){.hero{--hero-col: clamp(430px, 38vw, 500px);--hero-title-em: 12.4;--hero-title-fs: min(46px, 3.9vw, var(--hero-col) / var(--hero-title-em));grid-template-columns:var(--hero-col) minmax(0,1fr);grid-template-rows:repeat(6,auto);column-gap:28px;row-gap:16px;align-items:stretch}html:lang(zh) .hero{--hero-title-em: 7.2}.hero-text{grid-row:1 / -1;grid-template-rows:subgrid;gap:inherit}.hero .hero-title{font-size:var(--hero-title-fs)}.hero-fig{grid-column:2;grid-row:2 / -1;display:flex;flex-direction:column;min-height:0;margin-top:calc(var(--hero-title-fs) * .1)}.hero-fig-img{flex:1 1 0;aspect-ratio:auto;contain:size}}.hero-title{font-size:clamp(28px,3.9vw,46px);line-height:1.08;letter-spacing:-.01em;font-weight:650}.hero-title em{font-style:normal;color:var(--accent)}.hero-title .nw{white-space:nowrap}.hero-lede{font-size:clamp(15px,1.4vw,17.5px);max-width:62ch}.hero-tagline{font-size:clamp(17px,1.7vw,21px);font-weight:600;color:var(--accent);margin-top:-2px}.hero-kw{display:flex;flex-wrap:wrap;gap:10px;margin:2px 0 0;padding:0;list-style:none}.hero-kw li{display:inline-flex;align-items:center;gap:8px;padding:7px 14px 7px 11px;border:1px solid var(--line);border-radius:999px;background:var(--card);font-size:clamp(14px,1.25vw,16px);font-weight:600;cursor:default}.hero-kw li .icon{width:18px;height:18px;color:var(--accent)}.hero-stack{font-size:clamp(14px,1.25vw,16px);color:var(--muted);max-width:62ch}.hero-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:6px}.hero-note{font-size:12px;color:var(--muted);letter-spacing:.04em}.fig-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:12px 0 40px}.fig-card{display:grid;grid-template-rows:auto 1fr;text-decoration:none;color:var(--text);overflow:hidden;transition:border-color .2s,transform .25s var(--ease)}.fig-card:hover{border-color:var(--line-strong);color:var(--text);transform:translateY(-2px)}.fig-card-img{aspect-ratio:16 / 11;background:var(--card-2);border-bottom:1px solid var(--line);overflow:hidden}.fig-card-img .thumb{object-fit:cover}.card-cover{display:block;width:100%;height:100%;object-fit:cover}.fig-card-body{display:grid;gap:8px;padding:14px 16px 16px;align-content:start}.fig-card-text{font-size:14px}.fig-card-go{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);font-weight:600;display:flex;align-items:center;gap:4px;margin-top:4px}.fig-card-go .icon{width:14px;height:14px;color:var(--accent)}.sec-blocks{display:grid;gap:44px;margin:16px 0 48px}.sec-head{display:grid;grid-template-columns:minmax(0,1fr) auto;column-gap:24px;row-gap:6px;align-items:end;padding-top:14px;margin-bottom:16px;background:var(--g, var(--ink)) top left / 100% 3px no-repeat}.sec-title{grid-column:1;display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 14px;margin:0;font-family:var(--mono);font-size:17px;font-weight:650;letter-spacing:.12em;text-transform:uppercase;color:var(--ink)}.sec-n{font-size:11.5px;font-weight:600;letter-spacing:.14em;color:var(--muted)}.sec-blurb{grid-column:1;margin:0;font-size:14.5px;color:var(--muted)}.sec-count{grid-column:2;grid-row:1 / span 2;margin:0;font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);white-space:nowrap}.sec-block .fig-cards{margin:0}.fig-card-img{position:relative}.fig-card-lessons{display:grid;gap:7px;margin-top:4px}.fig-card-lessons .fig-card-go{margin-top:0;min-width:0}.fig-card-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fig-card.is-soon{--lc: var(--line-strong);--lc-soft: var(--card-2);border-style:dashed;cursor:default}.fig-card.is-soon:hover{transform:none;border-color:var(--line-strong)}.fig-card.is-soon .fig-card-img .thumb{opacity:.8;filter:saturate(.55)}.soon-pill{position:absolute;top:12px;left:12px;z-index:2;padding:5px 9px;border-radius:999px;border:1px dashed var(--line-strong);background:var(--face);color:var(--ink);font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}.fig-card-go.is-soon,.fig-card-go.is-soon .icon{color:var(--muted)}.outline .section-title{margin-bottom:14px}.outline-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.outline-col{border-top:2px solid var(--ink);padding-top:10px}.outline-col h3{font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:8px}.outline-col ol{margin:0;padding-left:1.6em;display:grid;gap:6px;font-size:14px}.outline-col li::marker{font-family:var(--mono);font-size:12px;color:var(--muted)}.outline-col a{color:var(--ink);text-decoration:none}.outline-col a:hover{color:var(--accent);text-decoration:underline}.tick{color:var(--accent);display:inline-flex;vertical-align:-3px}.tick .icon{width:15px;height:15px}.lesson-group{margin-bottom:32px}.lesson-group .sec-n{color:var(--muted)}.chapter-groups{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;align-items:start}.chapter-title{margin:0 0 8px;font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.chapter-group .lesson-cards{grid-template-columns:minmax(0,1fr)}.lesson-card.is-soon{--lc: var(--line-strong);--lc-soft: var(--card-2);border-style:dashed}.lesson-card.is-soon .thumb-icon{width:30px;height:30px;color:var(--muted)}@media(max-width:900px){.chapter-groups{grid-template-columns:minmax(0,1fr)}}.lesson-group .section-title{margin-bottom:12px}.lesson-cards{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:12px}.lesson-card{display:flex;gap:14px;padding:10px;text-decoration:none;color:var(--text);height:100%}.lesson-card:hover{border-color:var(--line-strong);color:var(--text)}.lesson-card.is-done{border-color:var(--accent-line)}.lesson-card-thumb{width:104px;height:76px;flex:none;border-radius:7px;overflow:hidden;background:var(--card-2);display:grid;place-items:center}.lesson-card-body{display:grid;gap:4px;align-content:start;min-width:0}.lesson-card-body .kicker .icon{width:13px;height:13px;color:var(--accent)}.lesson-card-title{font-weight:600;color:var(--ink);font-size:15px}.lesson-card-lede{font-size:13px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.search input{width:min(360px,100%);height:40px;border-radius:8px;border:1px solid var(--line);background:var(--face);color:var(--ink);padding:0 12px;font:inherit;margin-top:6px}@media(pointer:coarse){.search input{font-size:16px;height:44px}}.glossary{margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}.term{padding:14px 16px;scroll-margin:80px}.term.is-target{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.term dt{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:6px}.term-link{font-weight:650;color:var(--ink);text-decoration:none;font-size:15.5px}.aka{font-size:11px;color:var(--muted);letter-spacing:.04em}.term dd{margin:0;font-size:14px}.term-lesson{font-size:11px;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap}@media(pointer:coarse){.term-lesson{display:inline-block;padding:8px 6px;margin:-8px -6px}}.about-page{max-width:820px}.about-card{padding:18px 20px;margin-bottom:14px}.about-card .section-title{margin-bottom:10px}.badge-legend{list-style:none;padding:0!important}.badge-legend .badge{margin:0 6px 0 0}.reset-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:12px}.reset-confirm{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px}.reset-done{font-size:12px;color:var(--accent)}@media(max-width:900px){.fig-cards{grid-template-columns:minmax(0,1fr)}.fig-card{grid-template-columns:42% minmax(0,1fr);grid-template-rows:none}.fig-card-img{aspect-ratio:auto;border-bottom:0;border-right:1px solid var(--line)}.outline-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600.98px){.fig-card{grid-template-columns:minmax(0,1fr)}.fig-card-img{aspect-ratio:16 / 9;border-right:0;border-bottom:1px solid var(--line)}.outline-grid,.lesson-cards,.glossary{grid-template-columns:minmax(0,1fr)}.lesson-card-thumb{width:84px;height:64px}}.lesson-view,.strip-card,.lesson-card,.fig-card,.outline-list li,.pip,.det-lesson{--accent: var(--lc, var(--ft-lesson-1));--accent-strong: var(--accent);--accent-soft: var(--lc-soft, var(--ft-lesson-1-soft));--accent-line: var(--accent);--accent-ink: var(--on-lc)}@supports (color: color-mix(in srgb,red 50%,blue)){.lesson-view,.strip-card,.lesson-card,.fig-card,.outline-list li,.pip,.det-lesson{--accent-strong: color-mix(in srgb, var(--accent) 78%, var(--ink));--accent-soft: color-mix(in srgb, var(--accent) 11%, transparent);--accent-line: color-mix(in srgb, var(--accent) 45%, transparent)}}.lesson-num{display:inline-grid;place-items:center;min-width:20px;height:20px;padding:0 5px;border-radius:6px;background:var(--accent);color:var(--on-lc);font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:0;line-height:1;flex:none}.lesson-kicker{color:var(--accent);font-weight:600}.lesson-kicker .lesson-num{margin-right:2px}.lesson-view .stage:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--accent);z-index:6;pointer-events:none}.lesson-view .feature-icon{color:var(--accent);background:var(--accent-soft);border-color:var(--accent-line)}.lesson-view .step-dot.is-current{border-color:var(--accent);background:var(--accent);color:var(--on-lc)}.lesson-view .steps-kicker{color:var(--accent)}.lesson-view .btn-primary:not(:disabled){background:var(--accent);border-color:var(--accent);color:var(--on-lc)}.lesson-view .btn-primary:not(:disabled):hover{background:var(--accent-strong);border-color:var(--accent-strong);color:var(--on-lc)}.lesson-view .q-n{border-color:var(--accent-line);color:var(--accent);background:var(--accent-soft)}.lesson-view .q:focus-within{border-color:var(--accent-line)}.lesson-view .tab.is-active{border-bottom-color:var(--accent)}.lesson-view .stage.just-done{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow)}.strip-card{padding-left:12px;overflow:hidden}.strip-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--accent)}.strip-name{display:flex;align-items:flex-start;gap:7px;-webkit-line-clamp:unset}.strip-title-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;padding-top:2px}.strip-card:hover{border-color:var(--accent-line)}.strip-card.is-current{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:linear-gradient(90deg,var(--accent-soft),transparent 70%),var(--card)}.progress-pips{display:flex;align-items:center;gap:3px;height:10px;min-width:132px;border:0;background:none;overflow:visible;border-radius:0}.pip{flex:1;min-width:6px;height:6px;border-radius:3px;background:var(--line);transition:background-color .4s var(--ease),height .2s var(--ease)}.pip.is-done{background:var(--accent)}.pip.is-current{height:10px;background:var(--accent-line);box-shadow:inset 0 0 0 1.5px var(--accent)}.pip.is-current.is-done{background:var(--accent)}.outline-list{list-style:none;padding:0!important}.outline-list li{display:flex;align-items:flex-start;gap:9px}.outline-list .lesson-num{margin-top:1px}.outline-list a:hover,.outline-list .tick{color:var(--accent)}.outline-col{border-top:0;background:var(--g, var(--ink)) top left / 100% 3px no-repeat;padding-top:12px}.fig-card{position:relative}.fig-card:before,.lesson-card:before{content:"";position:absolute;z-index:1;background:var(--accent);pointer-events:none}.fig-card:before{inset:0 0 auto;height:3px}.fig-card:hover{border-color:var(--accent-line)}.fig-card-go .icon{color:var(--accent)}.fig-card-go{gap:8px}.lesson-card{position:relative;overflow:hidden;padding-left:14px}.lesson-card:before{left:0;top:0;bottom:0;width:4px}.lesson-card:hover{border-color:var(--accent-line)}.lesson-card .kicker{color:var(--accent);font-weight:600}.panel{position:relative}.details{position:absolute;top:0;left:0;right:0;z-index:8;max-height:100%;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;background:var(--face);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:0 24px 48px -24px #00000073,0 10px 18px -12px #0000002e,var(--shadow);opacity:0;transform:translateY(-6px);transition:opacity .18s var(--ease),transform .22s var(--ease)}.details.is-on{opacity:1;transform:none}.details.is-swap .det-head,.details.is-swap .det-body{animation:det-swap .28s var(--ease)}@keyframes det-swap{0%{opacity:0;transform:translateY(4px)}}.det-head{position:sticky;top:0;z-index:1;display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:12px;padding:16px 14px 13px 18px;background:var(--face);border-bottom:2px solid var(--accent)}.det-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:9px;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-line)}.det-icon .icon{width:22px;height:22px}.det-titles{min-width:0}.det-kicker{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}.det-title{font-family:var(--mono);font-size:15px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--ink);line-height:1.25;margin-top:2px;overflow-wrap:anywhere}.det-title:focus,.det-title:focus-visible{outline:none}.det-close{align-self:start;width:32px;height:32px;display:grid;place-items:center;border-radius:8px;border:1px solid transparent;background:none;color:var(--muted);cursor:pointer;margin:-4px -2px 0 0}.det-close:hover{color:var(--ink);background:var(--card-2);border-color:var(--line)}.det-close .icon{width:16px;height:16px}.det-body{display:grid;gap:14px;padding:14px 18px 18px}.det-intro{font-size:14px;line-height:1.6;color:var(--text)}.det-facts{margin:0;display:grid;border-top:1px solid var(--line)}.det-fact{display:grid;gap:3px;padding:8px 0 9px;border-bottom:1px solid var(--line);min-width:0}.det-fact dt{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.det-fact dd{margin:0;display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;min-width:0}.det-fact .chip{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.det-value{color:var(--ink);font-weight:600;font-size:13.5px}.det-fact .badge{margin-left:0}.det-fact .chips{margin-top:0}.det-lesson{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:9px;border:1px solid var(--accent-line);background:var(--accent-soft);color:var(--ink);text-decoration:none;font-size:13px;line-height:1.35}.det-lesson b{color:var(--accent)}.det-lesson:hover{border-color:var(--accent);color:var(--ink)}.det-lesson>.icon{margin-left:auto;width:16px;height:16px;color:var(--accent);flex:none}.det-lesson-n{display:inline-grid;place-items:center;min-width:22px;height:22px;border-radius:6px;background:var(--accent);color:var(--on-lc);font-size:11.5px;font-weight:700;flex:none}@media(max-width:1023.98px),(max-height:639.98px),(max-width:1180.98px)and (max-aspect-ratio:799/1000){.details{position:fixed;top:auto;bottom:12px;left:calc(var(--side-w) + var(--safe-l) + 12px);right:max(12px,var(--safe-r));width:auto;max-width:560px;margin:0 auto;max-height:min(70vh,560px);max-height:min(70svh,560px);z-index:30;border-radius:16px;box-shadow:0 -12px 40px -14px #00000080,var(--shadow);transform:translateY(20px)}.details .det-head{padding-top:22px}.details .det-head:before{content:"";position:absolute;top:8px;left:50%;width:36px;height:4px;margin-left:-18px;border-radius:2px;background:var(--line-strong)}}@media(max-width:600.98px){.details{left:max(8px,var(--safe-l));right:max(8px,var(--safe-r));bottom:calc(var(--bar-h) + env(safe-area-inset-bottom,0px) + 8px);max-height:62vh;max-height:62svh}}@media(min-width:601px)and (max-height:639.98px){.details{left:max(calc(var(--side-w) + var(--safe-l) + 140px),calc((100% + var(--side-w) + var(--safe-l) - max(12px,var(--safe-r)) - 548px) / 2));margin-left:0}}.stage-body{position:relative}.demo-card{position:absolute;z-index:5;overflow:hidden;background:var(--face);color:var(--text);border:1px solid var(--line-strong);border-radius:var(--radius);box-shadow:0 24px 48px -24px #00000073,0 10px 18px -12px #0000002e,var(--shadow);opacity:0;transform:translateY(6px);transition:opacity .2s var(--ease),transform .24s var(--ease)}.demo-card.is-on{opacity:1;transform:none}.demo-card.is-waiting{opacity:0;pointer-events:none}.demo-card[data-capped]{background:linear-gradient(var(--accent),var(--accent)) 0 0 / 100% 2px no-repeat,var(--face)}.demo-card[data-capped]:before{position:sticky;z-index:2;display:block;margin-bottom:-2px}.demo-card:before{content:"";position:absolute;inset:0 0 auto;height:2px;background:var(--accent);pointer-events:none}.demo-card[data-place=side]{right:16px;width:clamp(260px,22vw,340px)}.demo-card[data-place=side][data-edge=left]{right:auto;left:16px}.demo-card[data-place=corner]{right:14px;bottom:64px;width:240px}.demo-close{position:absolute;top:6px;right:6px;z-index:1;width:28px;height:28px;padding:0;display:grid;place-items:center;border-radius:7px;border:1px solid transparent;background:none;color:var(--muted);cursor:pointer}.demo-close:hover{color:var(--ink);background:var(--card-2);border-color:var(--line)}.demo-close .icon{width:15px;height:15px}.demo-card[data-narrow] .demo-close{top:4px;right:4px;width:24px;height:24px}.demo-card[data-narrow] .demo-close .icon{width:13px;height:13px}@media(prefers-reduced-motion:reduce){.demo-card{transition:none;transform:none}}.demo-card[data-place=beside]{right:auto}.demo-card[data-compact] .demo-extra{display:none}.demo-leader{position:absolute;left:0;top:0;z-index:4;overflow:visible;pointer-events:none;opacity:0;transition:opacity .2s var(--ease)}.demo-leader.is-on{opacity:1}.demo-leader.is-hidden{visibility:hidden}.demo-leader-halo{fill:none;stroke:var(--face);stroke-width:4;stroke-opacity:.8}.demo-leader-line{fill:none;stroke:var(--ft-hotspot);stroke-width:1.5}.demo-leader-end{fill:var(--ft-hotspot);stroke:var(--face);stroke-width:1.5}@media(prefers-reduced-motion:reduce){.demo-leader{transition:none}}:root{--sans-cjk: "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Noto Sans SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif}:root:lang(zh){--sans: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Noto Sans SC", "Source Han Sans SC", "Microsoft YaHei", "WenQuanYi Micro Hei", "Noto Sans", "DejaVu Sans", Arial, sans-serif;--mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Mono", Menlo, Consolas, "DejaVu Sans Mono", "Liberation Mono", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Noto Sans SC", "Microsoft YaHei", monospace}html:lang(zh) *:lang(zh),html:lang(zh) *:lang(zh):before,html:lang(zh) *:lang(zh):after{letter-spacing:0!important;text-transform:none!important}html:lang(zh) :is(i,em,cite,dfn,var,address,.empty,.wp-lab-ng,.w-li-ng,.w-li-row.is-guess .w-li-t):lang(zh){font-style:normal}html:lang(zh) body{line-height:1.65}html:lang(zh) :is(h1,h2,h3):lang(zh){line-height:1.3}html:lang(zh) .hero-title:lang(zh){line-height:1.22}html:lang(zh) .side-label:lang(zh){font-family:var(--sans-cjk);font-size:11px}html:lang(zh) .lang-label:lang(zh)>[lang=en]{font-family:var(--mono);font-size:9.5px;letter-spacing:.08em}html:lang(zh) .topbar{--tag-fs: 12px;--tag-k: .923;--tag-lead: .419}html:lang(zh) .strip-name:lang(zh){word-break:keep-all}
