@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff) format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2) format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}@font-face{font-family:"Course Serif TC";font-style:normal;font-weight:500;font-display:swap;src:url(/assets/serif-a-DVd8Klho.woff2) format("woff2");unicode-range:U+20-7E,U+3000-3001,U+4E09-4E0A,U+4E92,U+4EC0,U+4F86,U+4F8B,U+4FEE,U+500B,U+5019,U+505A,U+5148,U+514D,U+5165,U+51FA,U+524D,U+5275,U+52D5,U+5357,U+5404,U+5408,U+54EA,U+554F,U+55CE,U+5716,U+5728,U+5730,U+57FA,U+59CB,U+5B78,U+5B8C,U+5C0E,U+5E2B,U+5E38,U+5F0F,U+5F71,U+5FC3,U+5FC5,U+600E,U+6026,U+6211,U+624B,U+6307,U+6559,U+6574,U+65B0,U+65B9,U+662F,U+6642,U+6703,U+6848,U+6A21,U+6A94,U+6F14,U+7136,U+7247,U+73ED,U+7528,U+7684,U+770B,U+790E,U+7A0B,U+7A2E,U+7AD9,U+7B46,U+7BC4,U+7D44,U+7DB2,U+80FD,U+8868,U+88E1,U+8981,U+898B,U+8A18,U+8A66,U+8AB0,U+8AB2,U+8B1B,U+8CB7,U+8CBB,U+9019,U+9020,U+9054,U+9069,U+9580,U+958B,U+9801,U+984C,U+9996,U+9EBC,U+FF0C,U+FF1F}@font-face{font-family:"Course Serif TC";font-style:normal;font-weight:500;font-display:swap;src:url(/assets/serif-b-DP3RF5Zb.woff2) format("woff2");unicode-range:U+3002,U+300A-300D,U+4E00,U+4E03,U+4E0B,U+4E0D,U+4E16,U+4E2D,U+4E4B,U+4E5F,U+4E82,U+4E86,U+4E8C,U+4E94,U+4E9B,U+4EAE,U+4EBA,U+4ECB,U+4ED6,U+4ED8,U+4EE5,U+4EF6,U+4EFB,U+4EFD,U+4F38,U+4F4D-4F4F,U+4F55,U+4F5C,U+4F60,U+4FE1,U+5011,U+504F,U+50CF,U+5143,U+5149,U+5168-5169,U+516D,U+5176-5177,U+518D,U+51F8-51F9,U+5206-5207,U+5217,U+5225,U+522A,U+5230,U+5236,U+525B,U+5272,U+52A0,U+52FE,U+5316,U+5340,U+5361,U+5373,U+53BB,U+53C3,U+53CA,U+53CD,U+53D6,U+53E5,U+53EA,U+53EF-53F0,U+53F3,U+540C-540D,U+5433,U+547D,U+548C,U+54C1,U+54F2,U+5546,U+55AE,U+5668,U+5674,U+56DB,U+56DE,U+56FA,U+5708,U+5712-5713,U+5718,U+578B,U+5802,U+5834,U+584A,U+5883,U+5916,U+591A,U+5927,U+594F,U+597D,U+5A92,U+5B50,U+5B57-5B58,U+5B83,U+5B87,U+5B9A,U+5BB6,U+5BE6,U+5BEB,U+5BF8,U+5C04,U+5C0D,U+5C0F,U+5C31,U+5C3A,U+5C55,U+5C64,U+5C6C,U+5DE5-5DE6,U+5DEE,U+5DF1,U+5E03,U+5E33,U+5E55,U+5E6B,U+5E74,U+5E7E,U+5E8F,U+5EA6,U+5EF6,U+5EFA,U+5F35,U+5F62,U+5F80,U+5F88,U+5F8C,U+5F91,U+5F97,U+5F9E,U+5FEB,U+6027,U+6046,U+60F3,U+6162,U+61C9,U+6210,U+622A,U+6230,U+6240,U+624D,U+6253,U+626D,U+627E,U+6280,U+628A,U+6293,U+62C6,U+62C9,U+62CD,U+6309,U+6316,U+6377,U+6388-6389,U+6392,U+63A5,U+63A7,U+63DB,U+64CD,U+64DA,U+64EC,U+651D,U+6539,U+653E,U+6548,U+6578,U+6587,U+65C1,U+65CB,U+65CF,U+65E5,U+660E,U+6613,U+666F,U+6688,U+6697,U+66F2,U+66F4,U+6700,U+6708-6709,U+671F,U+672C,U+6735,U+6750,U+677F,U+6790,U+679C,U+67B6,U+67D3,U+67E5,U+683C,U+6846,U+687F,U+689D,U+69CB,U+6A02,U+6A23,U+6A5F,U+6B0A,U+6B21,U+6B63,U+6B65,U+6B98,U+6BB5,U+6BCF,U+6BD4,U+6C34,U+6C38,U+6C42,U+6C7A,U+6C92,U+6CB9,U+6CBF,U+6CC1,U+6CD5,U+6CE2,U+6D3B,U+6D41,U+6D77,U+6DF1,U+6DF7,U+6E32,U+6E38,U+6E90,U+6ED1,U+7058,U+70BA,U+7121,U+7167,U+71C8,U+720D,U+7248,U+7269,U+7279,U+72C0,U+7368,U+73FE,U+7403,U+7406,U+74B0,U+74F6,U+751F,U+754C,U+7559,U+756B,U+7576,U+758A,U+767B-767C,U+76F4,U+77E5,U+78BC,U+79FB,U+7A31,U+7A4D,U+7A7A,U+7A97,U+7ACB,U+7AE0,U+7B2C,U+7B49,U+7B97,U+7BA1,U+7BB1,U+7BC0,U+7BC7,U+7C21,U+7C92,U+7CCA,U+7CFB,U+7D1A,U+7D20,U+7D2F,U+7D39,U+7D42,U+7D50,U+7D66,U+7D71,U+7D81,U+7D93,U+7DA0,U+7DDA,U+7DE8,U+7DF4,U+7E3D,U+7F38,U+7F69,U+7F6E,U+7FD2,U+8072,U+80CC,U+8166,U+81EA,U+8207,U+821E,U+8272,U+82B1,U+8457,U+8549,U+85DD,U+8655,U+865B,U+865F,U+87A2,U+8853,U+88AB,U+88DC-88DD,U+88FD,U+8907,U+8996,U+89BA,U+89BD,U+89E3,U+89F8,U+8A00,U+8A08,U+8A0A,U+8A2D,U+8A3B,U+8A62,U+8A71,U+8A8D,U+8A9E,U+8AAA,U+8ABF,U+8B58,U+8B5C,U+8B70,U+8B80,U+8B8A,U+8B93,U+8C93,U+8CC7,U+8CEA,U+8D70,U+8D77,U+8DD1,U+8DDF,U+8DE1,U+8DEF,U+8E29,U+8ECC,U+8EF8,U+8F09,U+8F2F,U+8F38,U+8F49,U+901F,U+9032,U+904B,U+904E,U+9053,U+906E,U+9078,U+9084,U+908A,U+908F,U+90E8,U+91CD,U+9215,U+9304,U+9322,U+9375,U+93C8,U+93E1,U+9418,U+9577,U+9583,U+9593,U+95DC,U+9650,U+9664,U+9670,U+968E,U+969B,U+96A8,U+96BB,U+96DC,U+96E3,U+96EA,U+96F6,U+96FB,U+9700,U+975E,U+9762,U+97F3,U+97FF,U+9806,U+9810,U+983B,U+9846,U+984F,U+985E,U+9867,U+98A8,U+9999,U+99AC,U+9A5F,U+9AD4,U+9AD8,U+9B5A,U+9EDE,U+9F13,U+9F20,U+9F4A,U+FF08-FF09,U+FF1A}:root{color-scheme:dark;--surface-page: #111214;--surface-zone: #16171b;--surface-card: #1c1d22;--surface-raised: #24252b;--surface-inset: #0a0a0c;--surface-glass: rgb(17 18 20 / .82);--scrim: rgb(10 10 12 / .72);--ink-1: #f1f1ee;--ink-body: #dcdcd7;--ink-2: #c2c3bf;--ink-3: #9a9b9f;--ink-4: #86878c;--ink-5: #55565b;--rule-row: rgb(255 255 255 / .07);--rule-box: rgb(255 255 255 / .13);--rule-strong: rgb(255 255 255 / .24);--grid-dot: rgb(255 255 255 / .06);--accent: #5fe0c8;--accent-ink: #06110f;--accent-soft: color-mix(in srgb, var(--accent) 42%, transparent);--accent-wash: color-mix(in srgb, var(--accent) 9%, transparent);--danger-ink: #eaa49c;--danger-line: #b4524a;--danger-wash: rgb(220 80 80 / .08);--fam-top: #8b8fd6;--fam-top-dim: #585a85;--fam-chop: #6fa868;--fam-chop-dim: #53784d;--fam-sop: #5299dd;--fam-sop-dim: #45739f;--fam-dat: #b07ac4;--fam-dat-dim: #784f85;--fam-mat: #df7844;--fam-mat-dim: #be653f;--fam-comp: #a3a3a6;--fam-comp-dim: #5c5c5d;--fam-pop: #e07a98;--fam-pop-dim: #94506a;--font-display: "Course Serif TC", "Noto Serif TC", "Songti TC", "Source Han Serif TC", serif;--font-body: "IBM Plex Sans", "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--fs-display: clamp(40px, 4.4vw, 72px);--fs-h1: clamp(30px, 3.3vw, 48px);--fs-h2: clamp(22px, 2.1vw, 30px);--fs-h3: clamp(17px, 1.35vw, 20px);--fs-lead: clamp(17px, 1.25vw, 19px);--fs-body: 16px;--fs-reading: clamp(16.5px, .4vw + 11px, 19px);--fs-desc: 15px;--fs-meta: 13px;--fs-label: 12px;--lh-tight: 1.2;--lh-body: 1.75;--lh-reading: 1.9;--tracking-label: .08em;--space-0: 4px;--space-1: 8px;--space-2: 16px;--space-3: 24px;--space-4: 40px;--space-5: 64px;--space-6: 96px;--space-7: 144px;--gap-section: var(--space-6);--gap-block: var(--space-4);--gap-head: var(--space-3);--gap-card: var(--space-2);--pad-card: var(--space-3);--pad-zone: 32px;--gutter: clamp(16px, 4vw, 56px);--page-max: 1520px;--page-w: min(100% - var(--gutter) * 2, var(--page-max));--reading-w: 46em;--rail-w: 208px;--aside-w: 288px;--header-h: 60px;--radius-1: 3px;--radius-2: 6px;--radius-3: 10px;--radius-pill: 999px;--shadow-float: 0 18px 48px rgb(0 0 0 / .55);--dur-press: 90ms;--dur-quick: .16s;--dur-exit: .2s;--dur-base: .28s;--dur-scene: .48s;--dur-signature: .76s;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-move: cubic-bezier(.4, .14, .3, 1);--ease-inout: cubic-bezier(.65, 0, .35, 1);--t-hover: color var(--dur-quick) var(--ease-out), background-color var(--dur-quick) var(--ease-out), border-color var(--dur-quick) var(--ease-out), opacity var(--dur-quick) var(--ease-out);--tap: 44px;--tap-min: 24px}:root[data-accent=gold]{--accent: #d9c267;--accent-ink: #14120a}@media(max-width:700px){:root{--gap-section: var(--space-5);--gap-card: 12px;--pad-card: 18px;--pad-zone: 20px;--header-h: 56px}}[data-family=TOP]{--fam: var(--fam-top);--fam-dim: var(--fam-top-dim)}[data-family=CHOP]{--fam: var(--fam-chop);--fam-dim: var(--fam-chop-dim)}[data-family=SOP]{--fam: var(--fam-sop);--fam-dim: var(--fam-sop-dim)}[data-family=DAT]{--fam: var(--fam-dat);--fam-dim: var(--fam-dat-dim)}[data-family=MAT]{--fam: var(--fam-mat);--fam-dim: var(--fam-mat-dim)}[data-family=COMP]{--fam: var(--fam-comp);--fam-dim: var(--fam-comp-dim)}[data-family=POP]{--fam: var(--fam-pop);--fam-dim: var(--fam-pop-dim)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;background:var(--surface-page);scroll-padding-top:calc(var(--header-h) + 16px)}body{margin:0;background:var(--surface-page);color:var(--ink-1);font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:clip;text-rendering:optimizeLegibility;font-kerning:normal}#root{min-height:100dvh;display:flex;flex-direction:column}main{flex:1}a{color:inherit;text-underline-offset:.28em;text-decoration-thickness:1px;transition:var(--t-hover)}a:hover{color:var(--accent)}h1,h2,h3,h4{font-family:var(--font-display);font-weight:500;margin:0;line-height:1.3;text-wrap:balance}p{margin:0 0 1em;text-wrap:pretty}img,video,canvas,svg{max-width:100%;display:block}img,video{height:auto}button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}code,pre,kbd,samp{font-family:var(--font-mono)}kbd{display:inline-block;min-width:1.6em;padding:1px 6px;border:1px solid var(--rule-box);border-bottom-width:2px;border-radius:var(--radius-1);background:var(--surface-raised);color:var(--ink-1);font-size:.82em;line-height:1.5;text-align:center}::selection{background:var(--accent);color:var(--accent-ink)}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--radius-1)}.num{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.wrap{width:var(--page-w);margin-inline:auto}.kicker{display:flex;flex-wrap:wrap;gap:4px 20px;margin:0;font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--ink-3)}.label{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-label);color:var(--ink-3)}.muted{color:var(--ink-3)}.lede{max-width:40em;margin:0 0 var(--space-4);font-size:var(--fs-lead);line-height:1.8;color:var(--ink-2)}.small{font-size:var(--fs-meta)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:var(--tap);padding:10px 20px;border:1px solid var(--rule-strong);border-radius:var(--radius-2);background:transparent;color:var(--ink-1);font-size:15px;font-weight:500;letter-spacing:.02em;line-height:1.3;text-decoration:none;white-space:nowrap;transition:var(--t-hover),transform var(--dur-press) var(--ease-out)}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:transparent;color:var(--accent)}.btn .arrow{font-family:var(--font-mono);font-weight:400;transition:transform var(--dur-quick) var(--ease-out)}.btn:hover .arrow{transform:translate(3px)}.btn:hover .arrow-out{transform:translate(2px,-2px)}.btn-row{display:flex;flex-wrap:wrap;gap:12px}.text-link{color:var(--ink-1);text-decoration:underline;text-decoration-color:var(--rule-strong);text-underline-offset:.3em}.text-link:hover{color:var(--accent);text-decoration-color:var(--accent)}.pill{display:inline-flex;align-items:center;gap:6px;min-height:var(--tap-min);padding:2px 12px;border:1px solid var(--rule-box);border-radius:var(--radius-pill);background:transparent;color:var(--ink-2);font-size:var(--fs-meta);line-height:1.5;text-decoration:none;white-space:nowrap;cursor:pointer;transition:var(--t-hover)}.pill:hover,.pill[aria-current=page]{border-color:var(--accent);color:var(--accent)}.pill-accent{border-color:var(--accent-soft);color:var(--accent)}.pill-accent:hover{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.tag{display:inline-flex;align-items:center;gap:6px;padding:1px 9px;border:1px solid var(--rule-box);border-radius:var(--radius-pill);font-size:var(--fs-label);line-height:1.6;color:var(--ink-2);white-space:nowrap}.tag-accent{border-color:var(--accent-soft);color:var(--accent)}.notice{padding:12px 16px;border-left:2px solid var(--accent-soft);background:var(--accent-wash);color:var(--ink-1);font-size:var(--fs-desc);border-radius:0 var(--radius-1) var(--radius-1) 0}.notice-err{border-left-color:var(--danger-line);background:var(--danger-wash);color:var(--danger-ink)}.loading{color:var(--ink-3);font-size:var(--fs-desc);padding:40px 0}.card{display:block;padding:var(--pad-card);background:var(--surface-card);border:1px solid var(--rule-box);border-radius:var(--radius-2);color:inherit;text-decoration:none;transition:background-color var(--dur-quick) var(--ease-out),border-color var(--dur-quick) var(--ease-out)}a.card:hover{background:var(--surface-raised);border-color:var(--rule-strong);color:inherit}.zone{background:var(--surface-zone);border:1px solid var(--rule-row);border-radius:var(--radius-2);padding:var(--pad-zone)}.fam-dot{display:inline-block;width:7px;height:7px;border-radius:1px;background:var(--fam, var(--ink-5));flex:none}summary{padding-block:3px;cursor:pointer}.skip-link{position:absolute;left:12px;top:-64px;z-index:1000;padding:10px 16px;border-radius:var(--radius-2);background:var(--accent);color:var(--accent-ink);font-size:14px;font-weight:500;text-decoration:none;transition:transform var(--dur-quick) var(--ease-out)}.skip-link:focus,.skip-link:focus-visible{transform:translateY(74px);color:var(--accent-ink);outline:2px solid var(--ink-1);outline-offset:2px}main:focus{outline:none}main{min-height:calc(100svh - var(--header-h))}.skel{display:block;background:var(--surface-zone);border:1px solid var(--rule-row);border-radius:var(--radius-1);animation:skel-breathe 1.8s var(--ease-inout) infinite}@keyframes skel-breathe{50%{opacity:.55}}.page-wait .bar-head,.page-wait .unit-head-wait{display:grid;gap:14px}.skel-kicker{width:min(260px,60%);height:14px}.skel-title{width:min(520px,80%);height:clamp(34px,3.4vw,48px)}.skel-meta{width:min(420px,70%);height:14px}.skel-watch{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:24px;margin-top:32px}.skel-player{aspect-ratio:16 / 9}.skel-side{min-height:180px}.skel-rows{display:grid;gap:10px;margin-top:28px}.skel-row{height:56px}@media(max-width:991px){.skel-watch{grid-template-columns:1fr}.skel-side{display:none}}@media(prefers-reduced-motion:reduce){.skel{animation:none}*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}:where(.work-card,.unit-nav-link,.course-card,.plan-card,.where-cell){transition:transform var(--dur-press) var(--ease-out)}:where(.work-card,.unit-nav-link,.course-card,.plan-card):active{transform:scale(.985)}.reveal-img{opacity:0;transition:opacity var(--dur-base) var(--ease-out)}.reveal-img.is-loaded{opacity:1}@keyframes overlay-in{0%{opacity:0}}@keyframes sheet-in{0%{opacity:0;transform:translateY(-8px)}}@media(prefers-reduced-motion:reduce){:where(.work-card,.unit-nav-link,.course-card,.plan-card):active{transform:none;opacity:.85}.reveal-img{opacity:1;transition:none}}.site-header{position:sticky;top:0;z-index:900;background:var(--surface-glass);backdrop-filter:blur(14px) saturate(1.2);-webkit-backdrop-filter:blur(14px) saturate(1.2);border-bottom:1px solid var(--rule-row)}.site-nav{display:flex;align-items:center;gap:28px;min-height:var(--header-h)}.brand{display:inline-flex;align-items:center;gap:12px;min-height:var(--tap);margin-right:auto;color:var(--ink-1);text-decoration:none}.brand:hover{color:var(--ink-1)}.brand-logo{height:18px;width:auto;flex:none}.brand-sep{width:1px;height:18px;background:var(--rule-strong);flex:none}.brand-text{font-size:15px;font-weight:500;letter-spacing:.01em;line-height:1;white-space:nowrap;color:var(--ink-1)}.nav-links{display:flex;align-items:center;gap:4px}.nav-links a{position:relative;display:inline-flex;align-items:center;min-height:var(--tap);padding:0 12px;font-size:14.5px;font-weight:500;color:var(--ink-3);text-decoration:none;white-space:nowrap}.nav-links a:after{content:"";position:absolute;left:12px;right:12px;bottom:9px;height:2px;border-radius:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform var(--dur-base) var(--ease-out)}.nav-links a:hover,.nav-links a.active{color:var(--ink-1)}.nav-links a.active:after{transform:scaleX(1)}.burger{display:none;position:relative;width:var(--tap);height:var(--tap);margin-right:-10px;border-radius:var(--radius-2)}.burger span{position:absolute;left:12px;width:20px;height:1.5px;background:var(--ink-1);transition:transform var(--dur-base) var(--ease-out)}.burger span:nth-child(1){top:18px}.burger span:nth-child(2){top:25px}.burger.is-open span:nth-child(1){transform:translateY(3.5px) rotate(45deg)}.burger.is-open span:nth-child(2){transform:translateY(-3.5px) rotate(-45deg)}.menu-overlay{position:fixed;inset:var(--header-h) 0 0;z-index:950;animation:overlay-in var(--dur-base) var(--ease-out)}.menu-scrim{position:absolute;inset:0;z-index:0;width:100%;background:var(--scrim);cursor:default}.menu-sheet{position:relative;z-index:1;display:grid;gap:var(--space-3);padding:var(--space-2) 0 var(--space-4);background:var(--surface-page);border-bottom:1px solid var(--rule-box);box-shadow:var(--shadow-float);animation:sheet-in var(--dur-base) var(--ease-out);width:100%;padding-inline:var(--gutter)}.menu-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--rule-row)}.menu-list li{border-bottom:1px solid var(--rule-row)}.menu-list a{display:flex;align-items:center;justify-content:space-between;min-height:56px;font-family:var(--font-display);font-size:20px;color:var(--ink-1);text-decoration:none}.menu-list a:after{content:"→";font-family:var(--font-mono);font-size:15px;color:var(--ink-4)}.menu-list a.active,.menu-list a:hover{color:var(--accent)}body.menu-open{overflow:hidden}.nav-session{display:flex;align-items:center;gap:10px;flex:none;white-space:nowrap}.nav-session.is-pending{min-width:76px;min-height:1px}.session-name{display:inline-block;max-width:11em;overflow:hidden;text-overflow:ellipsis;font-size:13px;line-height:var(--tap-min);color:var(--ink-2);text-decoration:none}a.session-name:hover{color:var(--accent);text-decoration:underline}.session-login,.session-logout{font-size:13px;padding:3px 14px}.menu-session{display:flex;align-items:center;gap:12px}.menu-session.is-pending{min-height:32px}.menu-session .session-login,.menu-session .session-logout{min-height:var(--tap);padding:6px 18px;font-size:15px}@media(max-width:860px){.nav-links,.nav-session{display:none}.burger{display:block}}@media(max-width:380px){.brand{gap:10px}.brand-logo{height:16px}.brand-text{font-size:14px}}.crumbs-bar{padding-top:6px}.crumbs-list{display:flex;align-items:center;flex-wrap:nowrap;min-width:0;margin:0 -4px;padding:0 4px;list-style:none;overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;font-size:var(--fs-meta);line-height:1.5;color:var(--ink-3)}.crumbs-list::-webkit-scrollbar{display:none}.crumbs-item{flex:none;display:flex;align-items:center;white-space:nowrap}.crumbs-item a{display:block;padding:10px 0;color:var(--ink-3);text-decoration:none}.crumbs-item a:hover{color:var(--accent)}.crumbs-item a:focus-visible{outline-offset:-2px}.crumbs-sep{padding:0 10px;color:var(--ink-4)}.crumbs-current{flex:0 1 auto;min-width:0}.crumbs-here{display:block;min-width:0;padding:10px 0;overflow:hidden;text-overflow:ellipsis;color:var(--ink-2)}.crumbs-more{display:none}@media(max-width:700px){.crumbs-item a,.crumbs-here{padding:12px 0}.crumbs-sep{padding:0 8px}.crumbs-mid{display:none}.crumbs-more{display:flex;align-items:center}}.site-footer{margin-top:var(--space-6);border-top:1px solid var(--rule-row);background:var(--surface-zone)}.footer-inner{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:var(--space-4) var(--space-5);padding:var(--space-5) 0 var(--space-4)}.footer-brand{display:grid;gap:var(--space-2);align-content:start}.brand-footer{margin-right:0;justify-self:start}.footer-line{max-width:30em;margin:0;color:var(--ink-3);font-size:var(--fs-desc);line-height:1.8}.footer-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3)}.footer-title{margin:0 0 10px;font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-label);color:var(--ink-4)}.footer-col a{display:flex;align-items:center;gap:6px;min-height:36px;color:var(--ink-2);font-size:var(--fs-desc);text-decoration:none}.footer-col a:hover{color:var(--accent)}.ext{font-family:var(--font-mono);font-size:.85em;color:var(--ink-4);transition:transform var(--dur-quick) var(--ease-out)}a:hover>.ext{color:inherit;transform:translate(2px,-2px)}.footer-base{display:flex;flex-wrap:wrap;justify-content:space-between;gap:6px 24px;padding:var(--space-3) 0 var(--space-4);border-top:1px solid var(--rule-row)}.footer-base p{margin:0;color:var(--ink-4);font-size:var(--fs-meta)}@media(max-width:860px){.footer-inner{grid-template-columns:minmax(0,1fr)}}@media(max-width:520px){.footer-cols{grid-template-columns:repeat(2,minmax(0,1fr))}.footer-col:last-child{grid-column:1 / -1}}.page{padding:var(--space-5) 0 0}.page-tight{padding-top:var(--space-3)}.section{margin-block:0 var(--gap-section);scroll-margin-top:calc(var(--header-h) + 24px)}.section-head{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:10px 32px;margin:0 0 var(--gap-head);padding-top:var(--space-3);border-top:1px solid var(--rule-strong)}.section-head .kicker{grid-column:1 / -1}.section-head h2{font-size:var(--fs-h2);color:var(--ink-1)}.section-head .section-meta{margin:0;font-size:var(--fs-meta);color:var(--ink-3);text-align:right}.section-lede{max-width:42em;margin:calc(var(--gap-head) * -.5) 0 var(--gap-head);color:var(--ink-2);font-size:var(--fs-desc);line-height:1.85}@media(max-width:700px){.section-head{grid-template-columns:minmax(0,1fr)}.section-head .section-meta{text-align:left}}.bar-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 32px;padding:0 0 var(--space-3);margin-bottom:var(--space-4);border-bottom:1px solid var(--rule-box)}.bar-title{font-size:var(--fs-h1);line-height:var(--lh-tight)}.bar-meta{display:flex;flex-wrap:wrap;gap:4px 20px;margin:0;font-size:var(--fs-meta);color:var(--ink-3)}.notes{--tsg-w: 0px;font-size:var(--fs-reading);line-height:var(--lh-reading);letter-spacing:.01em;color:var(--ink-body);overflow-wrap:anywhere;max-width:calc(var(--reading-w) + var(--tsg-w));padding-right:var(--tsg-w)}.notes>div:first-child>h2:first-child{margin-top:0;border-top:0;padding-top:0}.notes>div:first-child>blockquote:first-child{margin:0 0 28px;padding:0;border:0;font-family:var(--font-body);font-size:var(--fs-meta);line-height:1.6;color:var(--ink-3)}.notes h1{font-size:var(--fs-h2);line-height:1.35;margin:64px 0 24px;scroll-margin-top:100px}.notes h2{font-size:clamp(22px,1.4vw + 4px,28px);line-height:1.4;margin:72px 0 20px;padding-top:24px;border-top:1px solid var(--rule-box);color:var(--ink-1);scroll-margin-top:100px}.notes h3{font-size:clamp(18px,.6vw + 9px,21px);line-height:1.5;margin:44px 0 12px;scroll-margin-top:100px;color:var(--ink-1)}.notes h2+h3{margin-top:24px}.notes p{margin:0 0 1.15em}.notes ul,.notes ol{padding-left:1.4em;margin:0 0 1.3em}.notes li{margin:.4em 0}.notes li::marker{color:var(--ink-4)}.notes li>p{margin-bottom:.5em}.notes strong{color:var(--ink-1);font-weight:500}.notes em{color:var(--ink-2)}.notes code:not(.op){font-size:.86em;background:var(--surface-raised);padding:1px 6px;border-radius:var(--radius-1);color:var(--syn-plain)}.notes pre.code{position:relative;margin:0 0 1.6em;padding:18px 20px;overflow-x:auto;background:var(--surface-inset);border:1px solid var(--rule-box);border-radius:var(--radius-2);font-size:13.5px;line-height:1.75;letter-spacing:0}.notes pre.code code{background:none;padding:0;color:var(--syn-plain)}.notes blockquote{margin:8px 0 1.6em;padding:4px 0 4px 22px;border-left:2px solid var(--accent-soft);color:var(--ink-1);font-family:var(--font-display);font-size:1.04em;line-height:1.8}.notes blockquote p:last-child{margin-bottom:0}.notes a{color:var(--ink-1);text-decoration:underline;text-decoration-color:var(--rule-strong);text-underline-offset:.2em}.notes a:hover{color:var(--accent);text-decoration-color:var(--accent)}.notes a.ts{display:inline-flex;align-items:center;gap:4px;margin:0 2px;padding:0 7px;border:1px solid var(--accent-soft);border-radius:var(--radius-pill);background:var(--accent-wash);font-family:var(--font-mono);font-size:.74em;line-height:1.5;letter-spacing:0;color:var(--accent);text-decoration:none;white-space:nowrap;vertical-align:.1em}.notes a.ts:before{content:"▶";font-size:.72em;opacity:.8}.notes a.ts:hover,.notes a.ts:focus-visible{border-color:var(--accent);color:var(--ink-1)}.notes .has-ts{position:relative}.notes .tsg{position:static;display:inline-flex;flex-wrap:wrap;gap:2px 10px;margin-right:8px;vertical-align:baseline;line-height:1.4}.notes .tsg a.ts{min-height:var(--tap-min);margin:0;padding:4px 0;border:0;background:none;border-radius:0;font-size:12px;color:var(--accent)}.notes .tsg a.ts:hover,.notes .tsg a.ts:focus-visible{color:var(--ink-1);text-decoration:underline;text-underline-offset:3px}.notes .has-ts:has(>.tsg a.ts:hover),.notes .is-cued{background:var(--accent-wash);box-shadow:0 0 0 8px var(--accent-wash)}.notes.is-auto-num{counter-reset:nsec}.notes.is-auto-num h2{counter-increment:nsec}.notes.is-auto-num h2:before{content:counter(nsec,decimal-leading-zero);display:block;margin-bottom:10px;font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:.14em;color:var(--accent)}.notes .callout{position:relative;margin:8px 0 32px;padding:18px 22px 20px;border:1px solid var(--rule-box);border-left:2px solid var(--accent);border-radius:0 var(--radius-2) var(--radius-2) 0;background:var(--surface-zone)}.notes .callout>:last-child{margin-bottom:0}.notes .callout-title{margin:0 0 8px;font-family:var(--font-mono);font-size:12px;letter-spacing:.12em;color:var(--accent)}.notes .callout p.has-ts,.notes .callout li.has-ts{position:static}.notes .callout-key ol,.notes .callout-key ul{margin:0;padding-left:0;list-style:none;counter-reset:key;display:grid;gap:10px}.notes .callout-key li{counter-increment:key;position:relative;margin:0;padding-left:2.2em;color:var(--ink-1)}.notes .callout-key ol>li:before{content:counter(key);position:absolute;left:0;top:.1em;font-family:var(--font-display);font-size:1.15em;line-height:1.6;color:var(--accent)}.notes .callout-key ul>li:before{content:"";position:absolute;left:.5em;top:.85em;width:6px;height:6px;background:var(--accent)}.notes .callout-goal{background:transparent}.notes .callout-goal p{color:var(--ink-1)}.notes .callout-tip{border-left-color:var(--ink-3)}.notes .callout-tip .callout-title{color:var(--ink-2)}.notes .callout-warn,.notes .callout-fix{border-left-color:var(--danger-line)}.notes .callout-warn .callout-title,.notes .callout-fix .callout-title{color:var(--danger-ink)}.notes .callout-extend{border-style:dashed;border-color:var(--ink-5);background:transparent;font-size:.94em;color:var(--ink-2)}.notes .callout-extend .callout-title{color:var(--ink-3)}.notes ol.steps{list-style:none;padding-left:0;margin:8px 0 1.8em;counter-reset:step}.notes ol.steps>li{counter-increment:step;position:relative;margin:0 0 0 15px;padding:0 0 22px 32px;border-left:1px solid var(--rule-box)}.notes ol.steps>li:last-child{border-left-color:transparent;padding-bottom:4px}.notes ol.steps>li:before{content:counter(step);position:absolute;left:-15px;top:.15em;width:29px;height:29px;display:grid;place-items:center;border:1px solid var(--accent-soft);border-radius:50%;background:var(--surface-page);color:var(--accent);font-family:var(--font-mono);font-size:12.5px;letter-spacing:0;line-height:1}.notes ol.steps .step-t{display:block;margin-bottom:2px;font-size:1.02em;color:var(--ink-1)}.notes ol.steps figure.fig{margin:14px 0 6px}.notes ul.qa-list{list-style:none;padding-left:0;margin:4px 0 36px;border-top:1px solid var(--rule-row)}.notes .qa-list>li:not(.qa-item){margin-left:1.4em;list-style:disc}.notes li.qa-item{margin:0;border-bottom:1px solid var(--rule-row)}.notes .qa-card{position:relative;min-width:0}.notes .qa-question{display:grid;grid-template-columns:26px minmax(0,1fr) 18px;gap:0 14px;align-items:start;padding:18px 0;color:var(--ink-1);font-weight:500;line-height:1.65;overflow-wrap:anywhere}.notes div.qa-question{grid-template-columns:26px minmax(0,1fr)}.notes summary.qa-question{cursor:pointer;list-style:none}.notes summary.qa-question::-webkit-details-marker{display:none}.notes summary.qa-question:after{content:"";width:8px;height:8px;margin-top:.55em;justify-self:center;border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:rotate(45deg);transition:transform var(--dur-quick) var(--ease-out)}.notes details:not([open])>summary.qa-question:after{transform:rotate(-45deg)}.notes summary.qa-question:hover{color:var(--accent)}.notes .qa-mark{display:grid;place-items:center;width:26px;height:26px;margin-top:.12em;border:1px solid var(--accent-soft);border-radius:var(--radius-1);font-family:var(--font-mono);font-size:12px;font-weight:500;letter-spacing:0;color:var(--accent)}.notes .qa-answer{display:grid;grid-template-columns:26px minmax(0,1fr);gap:0 14px;padding:0 32px 20px 0;min-width:0}.notes .qa-answer .qa-mark{color:var(--ink-3);border-color:var(--rule-box)}.notes .qa-body{min-width:0;color:var(--ink-body)}.notes .qa-body>:last-child{margin-bottom:0}.notes .qa-empty{color:var(--ink-2)}.notes .vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.notes figure.fig{margin:12px 0 36px}.notes figure.fig img{width:100%;height:auto;background:var(--surface-inset);border:1px solid var(--rule-row);border-radius:var(--radius-2)}.notes figure.fig figcaption{margin-top:10px;font-size:13.5px;line-height:1.6;letter-spacing:0;color:var(--ink-2)}.notes p:has(>figure.fig:only-child){margin:0}.notes table{width:100%;border-collapse:collapse;font-size:.86em;line-height:1.6;margin:0 0 1.6em}.notes th{padding:0 18px 12px 0;border-bottom:1px solid var(--rule-strong);text-align:left;font-weight:500;font-size:12px;letter-spacing:.06em;color:var(--ink-3)}.notes td{vertical-align:top;padding:11px 18px 11px 0;border-bottom:1px solid var(--rule-row)}.notes hr{border:0;border-top:1px solid var(--rule-box);margin:48px 0}.notes hr:has(+h2),.notes hr:has(+h1){display:none}.notes pre.code,.notes figure.fig{max-width:100%}@media(min-width:1500px){.notes{--tsg-w: 84px}.notes .tsg{position:absolute;left:calc(100% + 20px);top:calc(.3em - 3px);display:flex;flex-direction:column;align-items:flex-start;width:calc(var(--tsg-w) - 24px);margin:0}.notes .tsg a.ts{color:var(--ink-4)}.notes .has-ts:hover>.tsg a.ts{color:var(--accent)}}@media(max-width:700px){.notes .callout{padding:16px 16px 18px}.notes ol.steps>li{padding-left:26px}.notes table{font-size:14px}}.lock-link{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-soft);text-underline-offset:4px;cursor:pointer}.notes a.lock-link{color:var(--accent);text-decoration-color:var(--accent-soft)}.lock-link:hover,.notes a.lock-link:hover{color:var(--ink-1);text-decoration-color:var(--ink-1)}.player{position:relative;width:100%;aspect-ratio:16 / 9;background:var(--surface-inset);border-radius:var(--radius-3);overflow:hidden}.player.is-video video{position:absolute;inset:0;width:100%;height:100%;background:var(--surface-inset);display:block}.transcript{margin-top:18px;border-top:1px solid var(--rule-row);border-bottom:1px solid var(--rule-row);padding:12px 0}.transcript summary{font-size:14px;color:var(--ink-2)}.transcript summary:hover,.transcript[open] summary{color:var(--ink-1)}.transcript-body{margin-top:14px}.transcript-body input[type=search]{width:100%;padding:9px 12px;font:inherit;font-size:14px;color:var(--ink-1);background:var(--surface-inset);border:1px solid var(--rule-box);border-radius:var(--radius-1)}.transcript-body input[type=search]:focus-visible{outline:2px solid var(--accent);outline-offset:0}.transcript-body .loading,.transcript-body .muted,.transcript-body .notice{margin:12px 0 0;padding-top:0;padding-bottom:0}.transcript-list{list-style:none;margin:12px 0 0;padding:0;max-height:360px;overflow-y:auto;border-top:1px solid var(--rule-box);scrollbar-width:thin;scrollbar-color:var(--ink-5) transparent}.transcript-list button{display:grid;grid-template-columns:56px minmax(0,1fr);gap:10px;width:100%;padding:8px 4px 8px 0;border-bottom:1px solid var(--rule-row);text-align:left;font-size:14px;line-height:1.6;color:var(--ink-body)}.transcript-list button .num{padding-top:2px;font-family:var(--font-mono);font-size:12px;color:var(--ink-3)}.transcript-list button:hover .tt{color:var(--accent)}.transcript-list li.is-active button{padding-left:10px;background:var(--accent-wash);box-shadow:inset 2px 0 0 var(--accent)}.transcript-list li.is-active button .num{color:var(--accent)}.transcript-list li.is-active button .tt{color:var(--ink-1)}.snip{display:flex;flex-direction:column;min-width:0;padding-bottom:18px;background:var(--surface-card);border:1px solid var(--rule-box);border-radius:var(--radius-2);color:var(--ink-1);font-family:var(--font-body);font-size:15px;line-height:1.7;transition:border-color var(--dur-quick) var(--ease-out)}.snip:hover{border-color:var(--rule-strong)}.snip-head{padding:18px 20px 16px}.snip .snip-cat{margin:0 0 6px;font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-label);color:var(--ink-3)}.snip .snip-title{margin:0;padding:0;border:0;font-family:var(--font-display);font-size:var(--fs-h3);font-weight:500;line-height:1.45;color:var(--ink-1)}.snip .snip-summary{margin:8px 0 0;font-size:14.5px;line-height:1.75;color:var(--ink-2)}.snip-code{border-top:1px solid var(--rule-row);border-bottom:1px solid var(--rule-row);background:var(--surface-inset)}.snip-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:8px 12px 8px 16px;border-bottom:1px solid var(--rule-row)}.snip-lang{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);color:var(--ink-3)}.snip-copy{min-height:32px;padding:5px 14px;border:1px solid var(--rule-box);border-radius:var(--radius-1);background:transparent;color:var(--ink-2);font-size:13px;line-height:1.4;transition:var(--t-hover)}.snip-copy:hover{border-color:var(--accent);color:var(--accent)}.snip-copy.is-done{border-color:var(--accent-soft);color:var(--accent)}.snip .snip-pre{margin:0;padding:14px 16px 16px;overflow-x:auto;background:none;border:0;font-family:var(--font-mono);font-size:13px;line-height:1.75;color:var(--syn-plain);white-space:pre;tab-size:2}.snip .snip-pre code{font:inherit;color:inherit;background:none;padding:0}.snip .snip-usage{margin:0;padding:14px 20px 0;font-size:14px;line-height:1.8;color:var(--ink-body)}.snip-label{display:inline-block;margin-right:10px;font-size:var(--fs-label);letter-spacing:.1em;color:var(--ink-3)}.snip .snip-tags{list-style:none;margin:0;padding:12px 20px 0;display:flex;flex-wrap:wrap;gap:6px}.snip .snip-tags>li{margin:0}.snip-tag{padding:2px 9px;border:1px solid var(--rule-box);border-radius:var(--radius-pill);font-size:12.5px;line-height:1.5;color:var(--ink-2);transition:var(--t-hover)}.snip-tag-fn{font-family:var(--font-mono);font-size:12px;color:var(--ink-3)}.snip-tag:hover{color:var(--accent);border-color:var(--accent-soft)}.snip .snip-foot{margin:0;padding:12px 20px 0;font-size:13.5px}@media(max-width:700px){.snip-head{padding:16px 16px 14px}.snip .snip-usage,.snip .snip-tags,.snip .snip-foot{padding-left:16px;padding-right:16px}.snip .snip-pre{padding:12px;font-size:12.5px}}.wg-frame.is-preview,.wg-frame.is-preview .wg-stage{height:100%}.wg-frame.is-preview .wg-stage{padding:0}.wg-frame.is-preview .wg-canvas{height:100%;aspect-ratio:auto;border:0;cursor:inherit}.wg-frame.is-preview .wg-stage-note{display:none}.boot-seo{animation:boot-seo-reveal 0s linear 3s both}@keyframes boot-seo-reveal{0%{visibility:hidden}to{visibility:visible}}:where(.op){font-family:var(--font-mono);font-size:.9em;font-weight:500;color:var(--fam, var(--ink-1));white-space:nowrap}:where(.net-hero){display:block;width:100%;height:100%}:where(.net-map){display:grid;gap:var(--space-3)}:where(.net-map>div){display:grid;gap:var(--space-1)}:where(.net-map p){margin:0;font-family:var(--font-display);font-size:var(--fs-h3);color:var(--ink-1)}:where(.net-map ul){display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}:where(.net-map a){display:inline-flex;min-height:var(--tap-min);padding:6px 12px;border:1px solid var(--rule-box);border-radius:var(--radius-1);background:var(--surface-card);font-size:var(--fs-meta);color:var(--ink-2);text-decoration:none}:where(.net-map a[aria-current=page]){border-color:var(--accent);color:var(--ink-1)}:where(.net-familybar){display:flex;flex-wrap:wrap;gap:6px 14px;margin:0}:where(.net-rail ol){display:grid;gap:2px;margin:0;padding:0;list-style:none}:where(.net-rail a){display:block;padding:6px 0 6px 14px;border-left:2px solid var(--rule-box);font-size:var(--fs-meta);color:var(--ink-3);text-decoration:none}:where(.net-rail a[aria-current]){border-left-color:var(--fam, var(--accent));color:var(--ink-1)}.grid-bg,.map-stage,.plan-canvas{background-color:var(--surface-inset);background-image:radial-gradient(var(--grid-dot) 1px,transparent 1.3px);background-size:20px 20px}.fam-mix{display:block;width:100%;height:4px;overflow:hidden;border-radius:2px}.fam-mix rect{fill:var(--fam, var(--ink-5))}.fam-legend{margin:var(--space-2) 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:10px 28px}.fam-legend-cap{font-size:var(--fs-meta);color:var(--ink-3)}.fam-legend-list{display:flex;flex-wrap:wrap;gap:6px 18px;margin:0;padding:0;list-style:none}.fam-legend-list li{display:inline-flex;align-items:center;gap:7px;font-size:var(--fs-meta)}.fam-legend-zh{color:var(--ink-3)}.stage{--net-bg: var(--surface-page);position:relative;isolation:isolate;display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:min(88vh,900px);min-height:min(88svh,900px);overflow:hidden}.stage-art{position:absolute;inset:0;z-index:-1}.stage .stage-net{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;min-height:0;max-height:none}.stage-net .net-hero-canvas{z-index:2}.stage-net:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background-image:radial-gradient(var(--grid-dot) 1px,transparent 1.3px);background-size:20px 20px}.stage-art:after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(90deg,color-mix(in srgb,var(--surface-page) 84%,transparent) 0%,color-mix(in srgb,var(--surface-page) 78%,transparent) 34%,transparent 48%),linear-gradient(180deg,transparent 68%,color-mix(in srgb,var(--surface-page) 88%,transparent) 88%,var(--surface-page) 100%)}.stage-path{position:absolute;z-index:4;top:8px;left:max(var(--gutter),calc((100% - var(--page-max)) / 2));margin-left:-4px;padding:0 4px;background:color-mix(in srgb,var(--surface-page) 90%,transparent);font-family:var(--font-mono);font-size:var(--fs-label);line-height:18px;color:var(--ink-3);pointer-events:none}.stage-body{align-self:center;padding:var(--space-5) 0 var(--space-4);pointer-events:none}.stage-body .hero-text,.stage-cap>*{pointer-events:auto}.hero-text{display:grid;gap:0;align-content:center;max-width:min(40vw,560px)}.hero-text .kicker{margin-bottom:var(--space-3)}.hero-title{font-size:var(--fs-display);line-height:1.08;letter-spacing:-.01em;margin:0 0 var(--space-3)}.hero-line{margin:0 0 12px;font-size:var(--fs-lead);line-height:1.75;color:var(--ink-1);max-width:26em;word-break:keep-all;overflow-wrap:anywhere}.hero-sub{margin:0 0 var(--space-3);font-size:var(--fs-desc);line-height:1.8;color:var(--ink-2);max-width:30em}.hero-stats{display:flex;flex-wrap:wrap;gap:4px 18px;margin:0 0 var(--space-4);font-family:var(--font-mono);font-size:var(--fs-meta);color:var(--ink-3)}.hero-stats span+span:before{content:"/";margin-right:18px;color:var(--ink-5)}.stage-cap{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:flex-end;gap:6px 20px;padding:0 0 var(--space-3);pointer-events:none}.stage-chain{display:flex;flex-wrap:wrap;align-items:center;gap:4px 10px;margin:0;font-size:13px}.stage-arrow{color:var(--ink-4);font-family:var(--font-mono)}.stage-cap-text{margin:0;max-width:34em;font-size:var(--fs-meta);line-height:1.7;color:var(--ink-3)}@media(max-width:1099px){.stage{display:block;min-height:0}.stage-art{position:relative;inset:auto;z-index:0;height:clamp(250px,calc(18vw + 140px),320px)}.stage-art:after{background:linear-gradient(180deg,transparent 72%,var(--surface-page) 100%)}.stage-body{position:relative;z-index:1;margin-top:calc(-1 * var(--space-2));padding:0 0 var(--space-3)}.hero-text{max-width:40em}.hero-text .kicker{margin-bottom:var(--space-2)}.hero-stats{margin-bottom:var(--space-3)}.stage-cap{justify-content:flex-start;padding:0}}@media(max-width:599px){.stage-art{height:clamp(322px,calc(88.2vw + 40px),420px)}.stage-art:after{background:linear-gradient(180deg,transparent 90%,var(--surface-page) 100%)}.stage-body{margin-top:0;padding-top:var(--space-1)}.hero-title{line-height:1.12}.btn-row .btn{flex:1 1 auto}.stage-cap-text{font-size:var(--fs-label)}}.map-stage{padding:clamp(16px,3vw,40px);border:1px solid var(--rule-box);border-radius:var(--radius-3);overflow-x:auto}.works-section{overflow:clip}.works{position:relative}.works-track{--edge: max(var(--gutter), (100% - var(--page-max)) / 2);overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:var(--edge);scrollbar-width:none;padding-block:4px 8px;mask-image:linear-gradient(90deg,transparent 0,#000 var(--edge),#000 calc(100% - var(--edge)),transparent 100%);-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 var(--edge),#000 calc(100% - var(--edge)),transparent 100%)}.works-track[data-edge-start]{mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - var(--edge)),transparent 100%);-webkit-mask-image:linear-gradient(90deg,#000 0,#000 calc(100% - var(--edge)),transparent 100%)}.works-track::-webkit-scrollbar{display:none}.works-track:focus-visible{outline-offset:-2px}.works-list{display:flex;gap:var(--space-2);width:max-content;margin:0;padding:0 var(--edge);list-style:none}.works-list>li{width:clamp(188px,17.5vw,264px);scroll-snap-align:start}.work-card{display:grid;gap:10px;color:inherit;text-decoration:none;border-radius:var(--radius-2)}.work-card:hover{color:inherit}.work-media{position:relative;display:block;aspect-ratio:4 / 5;overflow:hidden;border-radius:var(--radius-2);background:var(--surface-zone);border:1px solid var(--rule-row)}.work-media img,.work-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.work-video{opacity:0;transition:opacity var(--dur-base) var(--ease-out)}.work-media.is-playing .work-video{opacity:1}.work-media img{transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-scene) var(--ease-out)}.work-card:hover .work-media img{transform:scale(1.03)}.work-meta{display:flex;justify-content:space-between;align-items:baseline;gap:12px}.work-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:14.5px;font-weight:500;color:var(--ink-1);transition:color var(--dur-quick) var(--ease-out)}.work-card:hover .work-title{color:var(--accent)}.work-date,.work-nodes{flex:none;font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-4)}.work-mix{height:3px}.works-ctl{display:flex;justify-content:flex-end;gap:8px;width:var(--page-w);margin:var(--space-2) auto 0}.works-btn{display:grid;place-items:center;width:var(--tap);height:var(--tap);border:1px solid var(--rule-box);border-radius:50%;font-family:var(--font-mono);color:var(--ink-2);transition:var(--t-hover)}.works-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.works-btn:disabled{opacity:.35;cursor:default}@media(hover:none),(max-width:700px){.works-ctl{display:none}.works-list>li{width:min(62vw,260px)}}.where-table{width:100%;border-collapse:collapse;font-size:var(--fs-desc)}.where-table th,.where-table td{padding:16px 20px 16px 0;border-bottom:1px solid var(--rule-row);text-align:left;vertical-align:top}.where-table thead th{padding-top:0;padding-bottom:12px;border-bottom-color:var(--rule-strong);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;letter-spacing:var(--tracking-label);color:var(--ink-3)}.where-table tbody th{width:28%;font-weight:500;color:var(--ink-1)}.where-table td{width:36%;color:var(--ink-1)}.where-table td[data-state=soon]{color:var(--ink-3)}.where-mark{display:inline-block;width:8px;height:8px;margin-right:10px;border-radius:50%;background:var(--accent);vertical-align:.08em}td[data-state=soon] .where-mark{background:transparent;border:1.5px solid var(--ink-4)}.where-none{color:var(--ink-5)}.where-note{margin:var(--space-2) 0 0;font-size:var(--fs-meta);color:var(--ink-3)}@media(max-width:700px){.where-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.where-table,.where-table tbody,.where-table tr,.where-table th,.where-table td{display:block;width:auto}.where-table tr{padding:14px 0;border-bottom:1px solid var(--rule-row)}.where-table tbody th,.where-table td{padding:0;border:0}.where-table tbody th{margin-bottom:6px;font-size:16px}.where-table td{display:grid;grid-template-columns:5.5em 8px minmax(0,1fr);align-items:baseline;column-gap:10px;padding:3px 0;font-size:14px}.where-table td:before{content:attr(data-label);font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-4)}.where-mark{margin:0;align-self:center}.where-table td[data-state=no]{display:none}}.faq{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 var(--space-5);margin:0}.faq-item{padding:var(--space-3) 0;border-top:1px solid var(--rule-row)}.faq dt{margin:0 0 8px;font-family:var(--font-display);font-size:var(--fs-h3);color:var(--ink-1)}.faq dd{margin:0;max-width:34em;font-size:var(--fs-desc);line-height:1.85;color:var(--ink-2)}@media(max-width:760px){.faq{grid-template-columns:minmax(0,1fr)}}.course-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-card);align-items:start}.course-card{display:grid;gap:10px;padding:clamp(20px,2.4vw,32px);background:var(--surface-card);border:1px solid var(--rule-box);border-radius:var(--radius-2)}.course-card-title{font-size:var(--fs-h2)}.course-card-sub{margin:-4px 0 0;font-size:var(--fs-meta);color:var(--ink-3)}.course-card-line{margin:4px 0 6px;color:var(--ink-2);font-size:var(--fs-desc);line-height:1.8}.course-card-mix{height:4px;margin:4px 0 6px}.course-card-units{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 20px;margin:0 0 var(--space-2);padding:0;list-style:none}.course-card-units a{display:flex;align-items:baseline;gap:8px;min-height:32px;padding:5px 0;border-bottom:1px solid var(--rule-row);font-size:13.5px;line-height:1.5;color:var(--ink-2);text-decoration:none}.course-card-units a:hover{color:var(--ink-1)}.course-card-units .mono{flex:none;min-width:2.6em;font-size:12px;color:var(--ink-3)}.course-card-units .fam-dot{align-self:center}.course-card .btn{justify-self:start}@media(max-width:860px){.course-cards{grid-template-columns:minmax(0,1fr)}}@media(max-width:480px){.course-card-units{grid-template-columns:minmax(0,1fr)}}.course-page .map-stage{margin-top:var(--space-2)}.course-tables{display:grid;gap:var(--space-6);margin-top:var(--space-6)}.course-block-head{display:grid;grid-template-columns:minmax(0,1fr) minmax(220px,320px);align-items:end;gap:var(--space-3) var(--space-5);padding-top:var(--space-3);margin-bottom:var(--space-3);border-top:1px solid var(--rule-strong)}.course-block-head .kicker{margin-bottom:10px}.course-block-title{font-size:var(--fs-h2)}.course-block-title small{display:block;margin-top:6px;font-family:var(--font-body);font-size:var(--fs-meta);color:var(--ink-3)}.course-block-line{margin:10px 0 0;color:var(--ink-2);font-size:var(--fs-desc)}.course-block-side{display:grid;gap:var(--space-2);justify-items:start}.unit-table{width:100%;border-collapse:collapse}.unit-table thead th{padding:0 16px 10px 0;border-bottom:1px solid var(--rule-box);text-align:left;font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;letter-spacing:var(--tracking-label);color:var(--ink-4)}.unit-table .ut-section th{padding:22px 0 8px;border-bottom:1px solid var(--rule-row);text-align:left;font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;letter-spacing:var(--tracking-label);color:var(--ink-3)}.unit-table tbody tr:not(.ut-section)>*{padding:14px 16px 14px 0;border-bottom:1px solid var(--rule-row);vertical-align:baseline;text-align:left}.unit-table tbody tr:not(.ut-section):hover>*{background:var(--surface-zone)}.ut-code{width:7em;white-space:nowrap;font-family:var(--font-mono);font-size:13px;color:var(--ink-3)}.ut-code .fam-dot{margin-right:10px;vertical-align:.1em}.ut-title{font-weight:400}.ut-title a{font-family:var(--font-display);font-size:17px;color:var(--ink-1);text-decoration:none}.ut-title a:hover{color:var(--accent)}.ut-title a:after{content:" →";font-family:var(--font-mono);color:var(--ink-5);transition:color var(--dur-quick) var(--ease-out)}.ut-title a:hover:after{color:var(--accent)}.ut-title .tag{margin-left:10px;vertical-align:.15em}.ut-fams{width:13em}.ut-fams>span{margin-right:10px;font-size:13px}.ut-num{width:5.5em;text-align:right!important;padding-right:0!important;font-family:var(--font-mono);font-size:13px;color:var(--ink-2);white-space:nowrap}@media(max-width:760px){.course-block-head{grid-template-columns:minmax(0,1fr);align-items:start}.unit-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.unit-table tbody tr:not(.ut-section){display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"code fams num" "title title title";gap:4px 12px;padding:14px 0;border-bottom:1px solid var(--rule-row)}.unit-table tbody tr:not(.ut-section)>*{padding:0;border:0;width:auto}.unit-table tbody tr:not(.ut-section):hover>*{background:none}.ut-code{grid-area:code}.ut-fams{grid-area:fams}.ut-num{grid-area:num}.ut-title{grid-area:title}.unit-table .ut-section,.unit-table .ut-section th{display:block}}.unit-head{display:grid;gap:12px;padding:var(--space-3) 0 var(--space-4)}.unit-kicker{margin-top:4px}.unit-title{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;font-size:var(--fs-h1);line-height:1.25}.unit-code{flex:none;padding:3px 12px;border:1px solid color-mix(in srgb,var(--fam) 55%,transparent);border-radius:var(--radius-1);background:color-mix(in srgb,var(--fam-dim) 22%,transparent);font-family:var(--font-mono);font-size:.42em;font-weight:500;letter-spacing:.06em;color:var(--fam)}.title-op{color:color-mix(in srgb,var(--fam) 72%,var(--ink-1));text-decoration:underline;text-decoration-color:var(--fam);text-decoration-thickness:.07em;text-underline-offset:.2em;text-decoration-skip-ink:none}.unit-meta{display:flex;flex-wrap:wrap;align-items:center;gap:6px 18px;margin:0;font-size:var(--fs-meta);color:var(--ink-3)}.unit-grid{display:grid;grid-template-columns:var(--rail-w) minmax(0,1fr) var(--aside-w);grid-template-areas:"rail screen aside" "rail notes aside" "rail login aside" "rail nav nav";align-items:start;gap:var(--space-5) var(--space-5)}.unit-railbox{grid-area:rail;position:sticky;top:calc(var(--header-h) + 24px)}.unit-railbox-sum{display:none}.unit-screen{grid-area:screen;scroll-margin-top:calc(var(--header-h) + 24px)}.unit-notes-sec{grid-area:notes;scroll-margin-top:calc(var(--header-h) + 24px);min-width:0}.unit-aside{grid-area:aside;position:sticky;top:calc(var(--header-h) + 24px)}.login-card{grid-area:login;scroll-margin-top:calc(var(--header-h) + 24px)}.unit-nav{grid-area:nav}@media(max-width:1199px){.unit-grid{grid-template-columns:minmax(0,1fr) 260px;grid-template-areas:"rail rail" "screen aside" "notes aside" "login aside" "nav nav";gap:var(--space-4)}.unit-railbox{position:static;border:1px solid var(--rule-box);border-radius:var(--radius-2);background:var(--surface-zone)}.unit-railbox-sum{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:var(--tap);padding:0 16px;font-size:14px;font-weight:500;color:var(--ink-1);list-style:none}.unit-railbox-sum::-webkit-details-marker{display:none}.unit-railbox-sum .num{margin-left:auto;font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-3)}.unit-railbox-sum:after{content:"";width:7px;height:7px;border-right:1.5px solid var(--ink-3);border-bottom:1.5px solid var(--ink-3);transform:rotate(45deg) translateY(-2px);transition:transform var(--dur-quick) var(--ease-out)}.unit-railbox[open] .unit-railbox-sum:after{transform:rotate(-135deg) translateY(-2px)}.unit-railbox>:not(summary){padding:4px 16px 16px}}@media(max-width:859px){.unit-grid{grid-template-columns:minmax(0,1fr);grid-template-areas:"screen" "rail" "notes" "aside" "login" "nav";gap:var(--space-4)}.unit-aside{position:static}.unit-head{padding:var(--space-2) 0 var(--space-3);gap:10px}}.screen-frame{position:relative;display:grid;border:1px solid var(--rule-box);border-radius:var(--radius-3);overflow:hidden;background:var(--surface-inset)}.screen-art{grid-area:1 / 1;position:relative;aspect-ratio:16 / 9;overflow:hidden;background-image:radial-gradient(110% 90% at 88% 0%,color-mix(in srgb,var(--fam-dim) 78%,transparent),transparent 62%),linear-gradient(var(--grid-dot) 1px,transparent 1px),linear-gradient(90deg,var(--grid-dot) 1px,transparent 1px);background-size:auto,32px 32px,32px 32px}.screen-art:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,var(--scrim) 100%)}.screen-glow-2{position:absolute;inset:0;background:radial-gradient(70% 70% at 0% 100%,color-mix(in srgb,var(--fam-dim) 50%,transparent),transparent 70%)}.screen-code{position:absolute;right:4%;top:6%;font-family:var(--font-mono);font-weight:500;font-size:clamp(64px,11vw,168px);line-height:1;letter-spacing:-.02em;color:color-mix(in srgb,var(--fam) 22%,transparent)}.screen-overlay{grid-area:1 / 1;align-self:end;position:relative;z-index:1;display:grid;gap:8px;justify-items:start;max-width:36em;padding:clamp(18px,3vw,36px)}.screen-kicker{display:flex;align-items:baseline;gap:10px;margin:0;font-size:var(--fs-meta);font-weight:500;color:var(--fam)}.screen-dur{font-family:var(--font-mono);font-weight:400;color:var(--ink-2)}.screen-title{font-size:var(--fs-h2);color:var(--ink-1)}.screen-text{margin:0 0 8px;font-size:var(--fs-desc);line-height:1.75;color:var(--ink-2)}.unit-screen[data-kind=text] .screen-art{aspect-ratio:21 / 9}@media(max-width:700px){.screen-overlay{grid-area:2 / 1;padding:18px 16px 20px;border-top:1px solid var(--rule-row)}.screen-art:after{display:none}.screen-overlay .btn{width:100%}}.unit-sec-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 20px;margin-bottom:var(--space-3);padding-bottom:12px;border-bottom:1px solid var(--rule-box)}.unit-sec-title{color:var(--ink-1)}.unit-sec-meta{margin:0;font-size:var(--fs-meta);color:var(--ink-3)}.unit-notes .notes-html>h2:first-child{margin-top:0;padding-top:0;border-top:0}.locked-sec{margin:var(--space-4) 0 0;padding:18px 20px;border:1px dashed var(--rule-box);border-radius:var(--radius-2);scroll-margin-top:calc(var(--header-h) + 24px)}.notes .locked-title{display:flex;align-items:center;gap:10px;margin:0 0 4px;padding:0;border:0;font-size:var(--fs-h3);color:var(--ink-2)}.notes .locked-title:before{content:none}.lock-ico{flex:none;color:var(--ink-3)}.locked-line{margin:0;font-size:14px;line-height:1.7;color:var(--ink-3)}.locked-line .lock-link{margin-left:8px;font-size:14px}.login-card{display:grid;gap:var(--space-3);padding:clamp(20px,2.6vw,32px);background:var(--surface-card);border:1px solid var(--rule-box);border-radius:var(--radius-2)}.login-card-head .kicker{margin-bottom:8px}.login-card-title{font-size:var(--fs-h3)}.login-card-list{display:grid;margin:0;padding:0;list-style:none;border-top:1px solid var(--rule-row)}.login-card-list li{display:grid;grid-template-columns:6.5em minmax(0,1fr);gap:12px;padding:12px 0;border-bottom:1px solid var(--rule-row);font-size:var(--fs-desc)}.login-item-name{font-weight:500;color:var(--ink-1)}.login-item-text{color:var(--ink-2)}.login-card-foot{display:grid;gap:12px;justify-items:start}.login-card-note{margin:0;font-size:var(--fs-meta);line-height:1.7;color:var(--ink-3)}@media(max-width:480px){.login-card-list li{grid-template-columns:minmax(0,1fr);gap:2px}.login-card-foot .btn{width:100%}}.login-form{display:grid;gap:var(--space-2);width:100%}.login-form form{display:grid;gap:10px}.field-label{font-size:var(--fs-meta);font-weight:500;color:var(--ink-2)}.field-row{display:flex;gap:10px;align-items:stretch}.field{flex:1 1 auto;min-width:0;min-height:var(--tap);padding:8px 14px;border:1px solid var(--rule-strong);border-radius:var(--radius-2);background:var(--surface-inset);color:var(--ink-1);font:inherit;font-size:16px}.field::placeholder{color:var(--ink-4)}.field:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-color:var(--accent-soft)}.field-code{flex:0 1 12em;letter-spacing:.3em;text-align:center;font-size:20px}.field-row .btn{flex:0 0 auto}.login-sent{margin:0;font-size:var(--fs-desc);line-height:1.75;color:var(--ink-2)}.waitlist-form{display:flex;flex-direction:column;gap:8px;max-width:34rem;margin:4px 0 0}.waitlist-done{margin:4px 0 0;font-size:var(--fs-desc);line-height:1.75;color:var(--ink-2)}.login-sent strong{color:var(--ink-1);font-weight:500;overflow-wrap:anywhere}.login-privacy{margin:0;font-size:var(--fs-meta);line-height:1.7;color:var(--ink-3)}.link-btn{justify-self:start;padding:4px 0;border:0;background:none;color:var(--ink-2);font:inherit;font-size:var(--fs-meta);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.link-btn:hover{color:var(--accent)}.login-page,.privacy-page{max-width:44rem}.login-page .login-card{margin-block:var(--space-3) var(--space-2)}.privacy-page .notes h2{margin-top:var(--space-4);font-size:var(--fs-h3)}.privacy-page .notes ul{padding-left:1.2em}.privacy-page .notes li,.privacy-page .notes p{line-height:1.85;color:var(--ink-2)}@media(max-width:480px){.field-row{flex-direction:column}.field-code{flex:1 1 auto}.field-row .btn{width:100%}}.unit-aside{display:grid;gap:var(--space-3);padding-left:var(--space-3);border-left:1px solid var(--rule-row);font-size:14px;line-height:1.7}.aside-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.aside-title{font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;letter-spacing:var(--tracking-label);color:var(--ink-3)}.aside-block{display:grid;gap:8px}.aside-h{font-family:var(--font-body);font-size:13px;font-weight:500;color:var(--ink-1)}.aside-params,.aside-keys{display:grid;gap:10px;margin:0}.aside-params dt,.aside-keys dt{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px}.aside-par{font-family:var(--font-mono);font-size:13px;color:var(--ink-1)}.aside-par:before{content:"·";margin-right:8px;color:var(--ink-4)}.aside-params dd,.aside-keys dd{margin:2px 0 0;color:var(--ink-2)}.aside-stuck{margin:0;padding-left:1.1em;color:var(--ink-2)}.aside-stuck li::marker{color:var(--ink-4)}@media(max-width:859px){.unit-aside{padding:var(--space-3) 0 0;border-left:0;border-top:1px solid var(--rule-box)}}.unit-nav{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--gap-card)}.unit-nav-link{display:grid;gap:6px;align-content:start;min-height:var(--tap);padding:18px 20px;border:1px solid var(--rule-box);border-radius:var(--radius-2);color:var(--ink-1);text-decoration:none;transition:var(--t-hover),transform var(--dur-press) var(--ease-out)}.unit-nav-link:hover{border-color:var(--accent);color:var(--ink-1)}.unit-nav-link.is-next{text-align:right;justify-items:end}.unit-nav-dir{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-label);color:var(--ink-3)}.unit-nav-link:hover .unit-nav-dir{color:var(--accent)}.unit-nav-t{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:baseline;font-family:var(--font-display);font-size:17px;line-height:1.5}.unit-nav-link.is-next .unit-nav-t{justify-content:flex-end}.unit-nav-code{font-family:var(--font-mono);font-size:13px;color:var(--fam)}.unit-nav-fams{display:flex;gap:5px}@media(max-width:600px){.unit-nav{grid-template-columns:minmax(0,1fr)}.unit-nav-link.is-next{text-align:left;justify-items:start}.unit-nav-link.is-next .unit-nav-t{justify-content:flex-start}.unit-nav-empty{display:none}}.planned-head{display:grid;gap:0;max-width:46em;margin-bottom:var(--space-5)}.planned-head .kicker{align-items:center;gap:0;margin-bottom:var(--space-2);color:var(--accent)}.status-dot{display:inline-block;width:7px;height:7px;margin-right:10px;border-radius:50%;background:var(--accent);animation:status-pulse 2.4s var(--ease-inout) infinite}@keyframes status-pulse{50%{opacity:.35}}.planned-head .bar-title{margin-bottom:var(--space-2)}.planned-line{margin:0 0 12px;font-size:var(--fs-lead);color:var(--ink-1)}.planned-head .lede{margin-bottom:0}.plan-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap-card);margin:0;padding:0;list-style:none}.plan-card{display:grid;grid-template-rows:auto 1fr;overflow:hidden;background:var(--surface-card);border:1px solid var(--rule-box);border-radius:var(--radius-2)}.plan-canvas{position:relative;aspect-ratio:16 / 10;border-bottom:1px solid var(--rule-row);background-image:radial-gradient(90% 90% at 80% 10%,color-mix(in srgb,var(--fam-dim) 70%,transparent),transparent 65%),radial-gradient(var(--grid-dot) 1px,transparent 1.3px);background-size:auto,20px 20px}.plan-num{position:absolute;left:16px;bottom:10px;font-family:var(--font-mono);font-size:40px;font-weight:500;line-height:1;color:color-mix(in srgb,var(--fam) 45%,transparent)}.plan-body{display:grid;gap:6px;align-content:start;padding:18px 20px 20px}.plan-fam{margin:0;font-size:13px}.plan-title{font-size:var(--fs-h3)}.plan-text{margin:0;font-size:14.5px;line-height:1.75;color:var(--ink-2)}.plan-unit{margin:6px 0 0;font-size:var(--fs-meta)}.expr-list{display:grid;margin:0;border-top:1px solid var(--rule-row)}.expr-row{display:grid;grid-template-columns:minmax(200px,20em) minmax(0,1fr);gap:8px var(--space-4);align-items:center;padding:14px 0;border-bottom:1px solid var(--rule-row)}.expr-row dt{min-width:0}.expr-code{display:inline-block;max-width:100%;overflow-x:auto;padding:6px 12px;background:var(--surface-inset);border:1px solid var(--rule-box);border-radius:var(--radius-1);font-size:14px;color:var(--syn-plain);white-space:nowrap}.expr-row dd{margin:0;color:var(--ink-2);font-size:var(--fs-desc);line-height:1.8}.planned-foot{margin:var(--space-3) 0 0;font-size:var(--fs-meta);color:var(--ink-3)}@media(max-width:1100px){.plan-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.plan-grid{grid-template-columns:minmax(0,1fr)}.plan-canvas{aspect-ratio:16 / 7}.expr-row{grid-template-columns:minmax(0,1fr)}}.tools-head{display:grid;max-width:52em;margin-bottom:var(--space-4)}.tools-head .kicker,.tools-head .bar-title{margin-bottom:var(--space-2)}.tools-head .lede{margin-bottom:0}.tools-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 24px;padding:var(--space-2) 0;border-top:1px solid var(--rule-strong);border-bottom:1px solid var(--rule-row)}.tools-fams{display:flex;flex-wrap:wrap;gap:8px}.tools-fam{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:6px 14px;border:1px solid var(--rule-box);border-radius:var(--radius-1);background:var(--surface-card);color:var(--ink-2);font-family:var(--font-mono);font-size:13px;font-weight:500;cursor:pointer;transition:var(--t-hover)}.tools-fam:hover{border-color:var(--fam, var(--accent));color:var(--ink-1)}.tools-fam[aria-pressed=true]{border-color:var(--accent);background:var(--accent-wash);color:var(--ink-1)}.tools-fam:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.tools-fam-dot{width:8px;height:8px;border-radius:1px;background:var(--fam)}.tools-fam-zh{font-family:var(--font-body);font-size:12px;font-weight:400;color:var(--ink-3)}.tools-count{margin-left:2px;font-size:12px;font-weight:400;color:var(--ink-3)}.tools-search input{width:min(340px,100%);min-height:40px;padding:8px 12px;border:1px solid var(--rule-box);border-radius:var(--radius-1);background:var(--surface-inset);color:var(--ink-1);font:inherit;font-size:14px}.tools-search input::placeholder{color:var(--ink-4)}.tools-search input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.tools-status{min-height:1.7em;margin:12px 0 var(--space-2);font-size:var(--fs-meta);color:var(--ink-3)}.tools-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3);margin:0;padding:0;list-style:none}.tool{display:grid;gap:var(--space-2);min-width:0;scroll-margin-top:calc(var(--header-h) + 16px)}.tool.is-open{grid-column:1 / -1}.tool-node{display:grid;grid-template-rows:auto auto 1fr;min-width:0;overflow:hidden;background:var(--surface-card);border:1px solid var(--rule-box);border-left:4px solid var(--fam-dim, var(--rule-box));border-radius:var(--radius-2);cursor:pointer;transition:border-color var(--dur-quick) var(--ease-out)}.tool-node:hover{border-color:color-mix(in srgb,var(--fam) 70%,var(--rule-box));border-left-color:var(--fam)}.tool.is-open .tool-node{cursor:default;border-color:var(--accent-soft);border-left-color:var(--fam)}.tool-plate{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:4px 12px;margin:0;padding:9px 14px 9px 12px;border-bottom:1px solid var(--rule-row);background:color-mix(in srgb,var(--fam-dim) 30%,var(--surface-card));font-family:var(--font-mono);font-size:12.5px;line-height:1.4}.tool-code{font-weight:500;color:var(--ink-1)}.tool-fam{font-weight:500;color:var(--fam-ink, var(--ink-2))}.tool-preview{position:relative;aspect-ratio:4 / 3;border-bottom:1px solid var(--rule-row);background:var(--surface-inset)}.tool-preview .wg-frame{position:absolute;inset:0}.tool-body{display:grid;gap:10px;align-content:start;padding:18px 20px 16px}.tool-title{font-size:var(--fs-h3);line-height:1.45;color:var(--ink-1)}.tool-summary{margin:0;font-size:14.5px;line-height:1.75;color:var(--ink-2)}.tool-chain{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:2px 0 0;font-size:13px}.tool-arrow{font-family:var(--font-mono);font-size:12px;color:var(--ink-4)}.tool-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 16px;margin-top:4px;padding-top:12px;border-top:1px solid var(--rule-row)}.tool-unit{min-width:0;font-size:var(--fs-meta);line-height:1.5;color:var(--ink-2);text-decoration:none;transition:var(--t-hover)}.tool-unit .num{margin-right:4px;font-family:var(--font-mono);color:var(--ink-1)}a.tool-unit:hover,a.tool-unit:hover .num{color:var(--accent)}.tool-unit.is-muted{color:var(--ink-3)}.tool-open{min-height:32px;padding:4px 18px}.tool-open.is-on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.tool.is-open .tool-body{grid-template-columns:minmax(0,1fr) auto;align-items:start;column-gap:var(--space-4)}.tool.is-open .tool-title,.tool.is-open .tool-summary,.tool.is-open .tool-chain{grid-column:1}.tool.is-open .tool-foot{grid-column:2;grid-row:1 / span 3;flex-direction:column;align-items:flex-end;margin:0;padding:0;border:0}.tool-full{min-width:0}.tools-empty{display:grid;justify-items:start;gap:12px;padding:var(--space-4) 0;color:var(--ink-2)}.tools-empty p{margin:0}@media(max-width:1100px){.tools-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.tools-grid{grid-template-columns:minmax(0,1fr);gap:var(--space-2)}.tools-bar{align-items:stretch}.tools-search,.tools-search input{width:100%}.tools-fam{flex:1 1 auto;justify-content:center;padding-inline:10px}.tool-body{padding:16px 16px 14px}.tool.is-open .tool-body{grid-template-columns:minmax(0,1fr)}.tool.is-open .tool-foot{grid-column:1;grid-row:auto;flex-direction:row;align-items:center;padding-top:12px;border-top:1px solid var(--rule-row)}}.nf{max-width:960px}.nf-code{margin:var(--space-4) 0 12px;font-family:var(--font-mono);font-size:13px;letter-spacing:.16em;color:var(--ink-3)}.nf .bar-title{margin-bottom:var(--space-2)}.nf-art{width:min(100%,420px);height:auto;margin:0 0 var(--space-4)}.nf-node{fill:var(--surface-card);stroke:var(--rule-strong)}.nf-node.is-err{stroke:var(--danger-line)}.nf-node-bar{fill:var(--fam-top-dim)}.nf-node-t{fill:var(--ink-2);font-family:var(--font-mono);font-size:13px}.nf-wire{fill:none;stroke:var(--ink-3);stroke-width:1.5}.nf-wire.is-loose{stroke-dasharray:3 4}.nf-links{margin:0;padding:0;list-style:none;border-top:1px solid var(--rule-box)}.nf-links li{border-bottom:1px solid var(--rule-row)}.nf-links a{display:flex;align-items:center;min-height:52px;font-size:17px;text-decoration:none}.nf-links a:after{content:"→";margin-left:auto;font-family:var(--font-mono);color:var(--ink-4);transition:transform var(--dur-quick) var(--ease-out),color var(--dur-quick) var(--ease-out)}.nf-links a:hover:after{color:var(--accent);transform:translate(3px)}.guide-head{margin-bottom:var(--space-4)}.guide-head .bar-title,.guide-sec>h2,.guide-card-title{word-break:keep-all;overflow-wrap:anywhere}.guide-head .lede{margin-bottom:var(--space-1)}.guide-updated{margin:0 0 var(--space-2);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-label);color:var(--ink-3)}.guide-toc{max-width:var(--reading-w);margin:0 0 var(--space-4);padding:14px 0;border-top:1px solid var(--rule-row);border-bottom:1px solid var(--rule-row)}.guide-toc ol{display:flex;flex-wrap:wrap;gap:6px 22px;margin:0;padding:0;list-style:none;counter-reset:toc}.guide-toc li{counter-increment:toc;font-size:var(--fs-meta);line-height:1.6}.guide-toc li:before{content:counter(toc,decimal-leading-zero);margin-right:8px;font-family:var(--font-mono);color:var(--ink-4)}.guide-toc a{color:var(--ink-2);text-decoration:none}.guide-toc a:hover{color:var(--accent)}.guide-sec{scroll-margin-top:calc(var(--header-h) + 24px)}.guide-body>.guide-sec:first-child>h2{margin-top:0;padding-top:0;border-top:0}.guide-table{margin:0 0 1.6em}.notes .guide-table table{margin-bottom:10px}.notes .guide-table tbody th{padding:11px 18px 11px 0;border-bottom:1px solid var(--rule-row);vertical-align:top;font-size:inherit;letter-spacing:0;color:var(--ink-1)}.notes .guide-table-note{margin:0;font-size:var(--fs-meta);line-height:1.7;color:var(--ink-3)}.notes .guide-quote .guide-cite{margin-top:8px;font-family:var(--font-body);font-size:var(--fs-meta);color:var(--ink-3)}.notes .guide-res h3{margin:24px 0 8px;font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--tracking-label);color:var(--accent)}.notes .guide-works,.notes .guide-cards{display:grid;gap:var(--gap-card);margin:8px 0 1.6em;padding:0;list-style:none}.notes .guide-works{grid-template-columns:repeat(4,minmax(0,1fr))}.notes .guide-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.notes .guide-works>li,.notes .guide-cards>li{margin:0}.notes a.guide-work-link{display:grid;gap:6px;color:var(--ink-1);text-decoration:none}.guide-work-media{display:block;aspect-ratio:4 / 5;overflow:hidden;border:1px solid var(--rule-row);border-radius:var(--radius-2);background:var(--surface-zone)}.guide-work-media img{display:block;width:100%;height:100%;object-fit:cover;transition:transform var(--dur-scene) var(--ease-out)}.guide-work-link:hover .guide-work-media img{transform:scale(1.03)}.guide-work-title{font-size:15px;font-weight:500;line-height:1.5}.guide-work-link:hover .guide-work-title{color:var(--accent)}.guide-work-meta{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--ink-4)}.notes .guide-work-line{margin:6px 0 0;font-size:14.5px;line-height:1.7;color:var(--ink-2)}.notes a.guide-card{display:grid;gap:8px;align-content:start;height:100%;padding:20px 22px 22px;background:var(--surface-card);border:1px solid var(--rule-box);border-radius:var(--radius-2);color:var(--ink-1);text-decoration:none;transition:var(--t-hover)}.notes a.guide-card:hover{border-color:var(--accent)}.guide-card-num{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--accent)}.guide-card-title{font-family:var(--font-display);font-size:var(--fs-h3);line-height:1.45}.guide-card-text{font-size:14.5px;line-height:1.7;color:var(--ink-2)}.guide-next{max-width:var(--reading-w);margin:var(--space-5) 0 0;padding-top:var(--space-3);border-top:1px solid var(--rule-strong)}.guide-next.is-multi{max-width:none}.guide-next h2{margin:0 0 var(--space-2);font-size:var(--fs-h2)}.guide-next-list{display:grid;gap:var(--gap-card);max-width:var(--reading-w);margin:0;padding:0;list-style:none}.guide-next-list.is-multi{grid-template-columns:repeat(3,minmax(0,1fr));max-width:none}.guide-next-item{display:grid;gap:14px;align-content:start;padding:20px 22px 22px;background:var(--surface-card);border:1px solid var(--rule-box);border-radius:var(--radius-2)}.guide-next-item p{margin:0;font-size:var(--fs-desc);line-height:1.8;color:var(--ink-1)}.guide-next-item .btn{justify-self:start}.guide-cta-wait{visibility:hidden}.guide-series{max-width:var(--reading-w);margin:var(--space-5) 0 var(--space-4)}.guide-series h2{margin:0 0 10px;font-size:var(--fs-h3);color:var(--ink-2)}.guide-series ul{margin:0;padding:0;list-style:none;border-top:1px solid var(--rule-row)}.guide-series li{border-bottom:1px solid var(--rule-row)}.guide-series a{display:block;padding:12px 0;font-size:var(--fs-desc);line-height:1.6;color:var(--ink-1);text-decoration:none}.guide-series a:hover{color:var(--accent)}@media(max-width:900px){.notes .guide-works{grid-template-columns:repeat(2,minmax(0,1fr))}.guide-next-list.is-multi{grid-template-columns:minmax(0,1fr)}}@media(max-width:700px){.notes .guide-cards{grid-template-columns:minmax(0,1fr)}.guide-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.guide-table table,.guide-table tbody,.guide-table tr,.guide-table th,.guide-table td{display:block;width:auto}.guide-table tr{padding:12px 0;border-bottom:1px solid var(--rule-row)}.notes .guide-table tbody th,.notes .guide-table td{padding:0;border:0}.notes .guide-table tbody th{margin-bottom:4px}.notes .guide-table td{display:grid;grid-template-columns:6.5em minmax(0,1fr);column-gap:10px;padding:3px 0}.notes .guide-table td:before{content:attr(data-label);font-family:var(--font-mono);font-size:var(--fs-label);line-height:1.9;color:var(--ink-4)}}.plans-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-3) var(--space-5);margin:0 0 var(--space-4)}.plans-col h3,.plans-offer h3{margin:0 0 12px;font-size:var(--fs-h3);color:var(--ink-1)}.plans-col p{margin:0 0 12px;max-width:40em;font-size:var(--fs-desc);line-height:1.85;color:var(--ink-2)}.plans-ul{margin:0;padding:0;list-style:none;border-top:1px solid var(--rule-row)}.plans-ul li{padding:10px 0;border-bottom:1px solid var(--rule-row);font-size:var(--fs-desc);line-height:1.75;color:var(--ink-2)}.plans-offer{margin:0 0 var(--space-4)}.plans-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--gap-card);margin:0 0 12px;padding:0;list-style:none;counter-reset:plan}.plans-steps li{counter-increment:plan;padding:18px 20px 20px;background:var(--surface-card);border:1px solid var(--rule-box);border-radius:var(--radius-2);font-size:var(--fs-desc);line-height:1.8;color:var(--ink-1)}.plans-steps li:before{content:counter(plan,decimal-leading-zero);display:block;margin-bottom:6px;font-family:var(--font-mono);font-size:var(--fs-label);color:var(--accent)}.plans-note{margin:0;max-width:52em;font-size:var(--fs-meta);line-height:1.8;color:var(--ink-3)}@media(max-width:860px){.plans-pair,.plans-steps{grid-template-columns:minmax(0,1fr)}}.unit-guide{margin:10px 0 0;font-size:var(--fs-meta);color:var(--ink-3)}:root{--syn-plain: #d6d6d1;--syn-comment: #8f8f8a;--syn-string: #cdb08f;--syn-number: #eaa49c;--syn-keyword: #8fc1b5;--syn-function: #a3c1ea;--syn-builtin: #c6b2e8}.tok-c{color:var(--syn-comment);font-style:italic}.tok-s{color:var(--syn-string)}.tok-n{color:var(--syn-number)}.tok-k{color:var(--syn-keyword)}.tok-f{color:var(--syn-function)}.tok-v{color:var(--syn-builtin)}
