@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/learning/assets/dm-mono-400-latin-ext-C2zvOubV.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/learning/assets/dm-mono-400-latin-4GdczIuU.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/learning/assets/dm-mono-500-latin-ext-BtRyHRi6.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/learning/assets/dm-mono-500-latin-DRMDZjhP.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/learning/assets/manrope-latin-ext-Ch3YOpNY.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:400;font-display:swap;src:url(/learning/assets/manrope-latin-DHIcAJRg.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(/learning/assets/manrope-latin-ext-Ch3YOpNY.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:500;font-display:swap;src:url(/learning/assets/manrope-latin-DHIcAJRg.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/learning/assets/manrope-latin-ext-Ch3YOpNY.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:600;font-display:swap;src:url(/learning/assets/manrope-latin-DHIcAJRg.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/learning/assets/manrope-latin-ext-Ch3YOpNY.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:700;font-display:swap;src:url(/learning/assets/manrope-latin-DHIcAJRg.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(/learning/assets/manrope-latin-ext-Ch3YOpNY.woff2) format("woff2");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Manrope;font-style:normal;font-weight:800;font-display:swap;src:url(/learning/assets/manrope-latin-DHIcAJRg.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:local("Microsoft YaHei"),local("PingFang SC"),local("Hiragino Sans GB"),local("Noto Sans SC"),local("Source Han Sans SC");unicode-range:U+2E80-2EFF,U+3000-303F,U+31C0-31EF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF,U+20000-2FA1F}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:local("Microsoft YaHei"),local("PingFang SC"),local("Hiragino Sans GB"),local("Noto Sans SC"),local("Source Han Sans SC");unicode-range:U+2E80-2EFF,U+3000-303F,U+31C0-31EF,U+3400-4DBF,U+4E00-9FFF,U+F900-FAFF,U+FE30-FE4F,U+FF00-FFEF,U+20000-2FA1F}:root{color-scheme:light;--color-bg: #f3f5f1;--color-bg: oklch(.965 .008 145);--color-surface: #fafbf8;--color-surface: oklch(.985 .005 145);--color-fg: #202722;--color-fg: oklch(.265 .018 150);--color-muted: #657168;--color-muted: oklch(.54 .022 150);--color-soft: #78847c;--color-soft: oklch(.61 .018 150);--color-border: #d8dfd9;--color-border: oklch(.89 .012 145);--color-accent: #42735c;--color-accent: oklch(.52 .075 155);--color-highlight: #d66f57;--color-highlight: oklch(.65 .13 35);--ink: var(--color-fg);--muted: var(--color-muted);--soft: var(--color-soft);--line: var(--color-border);--paper: var(--color-bg);--surface: var(--color-surface);--surface-alt: #e9efea;--surface-alt: oklch(.935 .016 150);--dark: var(--color-fg);--acid: #c7f36b;--coral: #f1846e;--duration-instant: .1s;--duration-fast: .15s;--duration-normal: .2s;--duration-slow: .28s;--ease-out: cubic-bezier(.23, 1, .32, 1);font-family:Manrope,Microsoft YaHei,PingFang SC,sans-serif;font-synthesis:none}.night-mode{color-scheme:dark;--color-bg: #202522;--color-bg: oklch(.27 .008 150);--color-surface: #292e2a;--color-surface: oklch(.325 .009 150);--color-fg: #d9ded9;--color-fg: oklch(.885 .007 150);--color-muted: #a4aba5;--color-muted: oklch(.72 .012 150);--color-soft: #899089;--color-soft: oklch(.635 .012 150);--color-border: #3a3f3a;--color-border: oklch(.36 .014 150);--color-accent: #80b69a;--color-accent: oklch(.72 .075 155);--color-highlight: #e38d78;--color-highlight: oklch(.72 .105 35);--ink: var(--color-fg);--muted: var(--color-muted);--soft: var(--color-soft);--line: var(--color-border);--paper: var(--color-bg);--surface: var(--color-surface);--surface-alt: #343935;--surface-alt: oklch(.34 .012 150);--dark: #191d1a;--acid: #b9dc73;--coral: #ed947f}.reader-mode{--reader-canvas: #f5f7f3;--reader-surface: #fbfcf9;--reader-text: #222a25;--reader-body: #3f4a43;--reader-muted: #68766d;--reader-border: #d7dfd9;--reader-subtle: #edf2ee;--reader-link: #286b58;--reader-accent: #4f8169;--reader-code-bg: #eaf0ec;--reader-code-text: #244334;--reader-code-border: #cfdad2;--reader-quote-bg: #eef3ef;--reader-quote-border: #5f8e75;--reader-table-head: #e9efea}.reader-mode.night-mode{--reader-canvas: #202522;--reader-surface: #272c28;--reader-text: #d9dfda;--reader-body: #b2bab3;--reader-muted: #99a09a;--reader-border: #383e39;--reader-subtle: #2b302c;--reader-link: #92cbb2;--reader-accent: #7fb398;--reader-code-bg: #2b302c;--reader-code-text: #cdd9d0;--reader-code-border: #3f4640;--reader-quote-bg: #2a2f2a;--reader-quote-border: #79aa91;--reader-table-head: #2b302c}*{box-sizing:border-box}html,body,#root{margin:0;min-width:320px;min-height:100%}html{overflow-x:clip;scroll-padding-top:92px;scrollbar-gutter:stable}body{overflow-x:clip;background:var(--paper);color:var(--ink)}button,input{font:inherit;touch-action:manipulation}button{color:inherit}button:focus-visible,input:focus-visible,a:focus-visible{outline:0;box-shadow:0 0 0 3px color-mix(in srgb,var(--coral) 45%,transparent)}::selection{background:color-mix(in srgb,var(--coral) 32%,transparent);color:var(--ink)}.night-mode ::selection{background:color-mix(in srgb,var(--coral) 40%,#252a26);color:var(--ink)}::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{border:3px solid transparent;border-radius:999px;background:color-mix(in srgb,var(--soft) 38%,var(--line));background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--soft) 72%,var(--line));background-clip:padding-box}::-webkit-scrollbar-thumb:active{background:var(--muted);background-clip:padding-box}::-webkit-scrollbar-button,::-webkit-scrollbar-corner{display:none}html{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--soft) 55%,var(--line)) transparent}.reader-mode{scrollbar-color:color-mix(in srgb,var(--reader-muted) 45%,var(--reader-border)) transparent}.reader-mode ::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--reader-muted) 34%,var(--reader-border));background-clip:padding-box}.reader-mode ::-webkit-scrollbar-thumb:hover{background:color-mix(in srgb,var(--reader-muted) 60%,var(--reader-border));background-clip:padding-box}.learning-app{min-height:100vh;background:var(--paper);color:var(--ink);overflow-x:clip}.skip-link{position:fixed;z-index:30;top:8px;left:8px;transform:translateY(-160%);padding:9px 12px;background:var(--dark);color:var(--acid);font-size:12px;transition:transform .2s ease}.skip-link:focus-visible{transform:translateY(0)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap}.site-header{height:72px;display:flex;align-items:center;gap:44px;max-width:1440px;margin:0 auto;padding:0 42px;border-bottom:1px solid var(--line)}.wordmark{display:flex;align-items:center;gap:9px;border:0;padding:0;background:transparent;color:var(--ink);font:17px Georgia,Songti SC,serif;letter-spacing:.01em;text-decoration:none;touch-action:manipulation}.wordmark-mark{width:21px;height:21px;flex:none}.wordmark-zh{margin-left:2px;color:var(--soft);font:11px DM Mono,Microsoft YaHei,PingFang SC,monospace;letter-spacing:.14em}.main-nav{display:flex;align-self:stretch;gap:28px}.main-nav a{position:relative;display:flex;align-items:center;border:0;padding:2px 0 0;background:transparent;color:var(--muted);cursor:pointer;font-size:13px;text-decoration:none;touch-action:manipulation}.main-nav a:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:transparent;transition:background .2s ease}.main-nav a:hover,.main-nav a.active{color:var(--ink)}.main-nav a.active:after{background:var(--coral)}.main-nav a span{margin-left:4px;color:var(--coral);font:9px DM Mono,monospace}.header-actions{display:flex;align-items:center;gap:14px;margin-left:auto}.mini-search{display:flex;align-items:center;gap:7px;width:168px;min-height:40px;padding:8px 10px;border:1px solid var(--line);background:color-mix(in srgb,var(--surface) 80%,transparent)}.mini-search>span{display:grid;place-items:center;color:var(--muted)}.mini-search input{min-width:0;width:100%;border:0;background:transparent;color:var(--ink);font-size:12px}.mini-search:focus-within{border-color:var(--ink);box-shadow:0 0 0 2px color-mix(in srgb,var(--coral) 34%,transparent)}.mini-search input::placeholder{color:var(--soft)}kbd{border:1px solid var(--line);padding:2px 5px;color:var(--soft);font:9px DM Mono,monospace}.theme-button,.profile-button{width:44px;height:44px;display:grid;place-items:center;border:0;background:transparent;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.theme-button{color:var(--muted)}.profile-button{background:var(--dark);color:var(--acid);font:10px DM Mono,monospace}.profile-button-wide{width:auto;min-width:44px;padding:0 12px;font-size:11px;letter-spacing:.08em}.profile-button-pending{width:48px;min-width:48px;opacity:.3;pointer-events:none}.route-pending{padding-top:64px}.pending-block{background:var(--surface-alt);border-radius:3px;animation:pending-pulse 1.4s var(--ease-out) infinite}.pending-kicker{width:118px;height:11px}.pending-title{width:min(520px,68%);height:34px;margin-top:18px}.pending-line{width:100%;height:13px;margin-top:12px}.pending-line-short{width:62%}@keyframes pending-pulse{0%,to{opacity:.55}50%{opacity:1}}@media(prefers-reduced-motion:reduce){.pending-block{animation:none;opacity:.7}}.page{width:min(1238px,calc(100% - 84px));margin:0 auto;padding:0 0 70px;animation:none}.route-stage{min-height:1px;animation:route-enter .19s var(--ease-out) backwards}.route-stage-reader,.route-stage-resource{animation-duration:.15s}@keyframes route-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.overline{display:flex;align-items:center;gap:9px;margin:0;color:var(--soft);font:10px DM Mono,monospace;letter-spacing:.1em;text-transform:uppercase}.overline i{width:18px;height:1px;display:inline-block;background:var(--coral)}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:Georgia,Songti SC,serif;font-weight:400;letter-spacing:0}h1,h2,h3{text-wrap:balance}h2{margin-bottom:0;font-size:29px}.dark-button{display:inline-flex;align-items:center;justify-content:space-between;gap:30px;min-height:44px;padding:11px 15px;border:1px solid var(--dark);background:var(--dark);color:#fbfcf8;cursor:pointer;font-size:13px;transition:transform var(--duration-instant) var(--ease-out),background var(--duration-fast) var(--ease-out)}.dark-button:hover{transform:translateY(-1px);background:color-mix(in srgb,var(--dark) 88%,var(--color-accent))}.dark-button:active{transform:scale(.98)}.dark-button:disabled{cursor:not-allowed;opacity:.52;transform:none;box-shadow:none}.dark-button span{color:var(--acid);font-size:16px}.text-button{border:0;min-height:44px;padding:8px 0;background:transparent;color:var(--muted);cursor:pointer;font-size:13px;transition:color var(--duration-fast) var(--ease-out),transform var(--duration-instant) var(--ease-out)}.text-button:hover{color:var(--ink)}.text-button:active{transform:translateY(1px)}.text-button span{margin-left:8px;color:var(--coral);font-size:16px}.arrow-button{width:44px;height:44px;border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer;font-size:16px;font-family:Segoe UI Symbol,Arial Unicode MS,sans-serif;transition:background .2s ease,color .2s ease,transform var(--duration-instant) var(--ease-out)}.arrow-button:hover{background:var(--dark);color:var(--acid)}.arrow-button:active{transform:scale(.96)}.route-stage-home .home-hero .hero-copy,.route-stage-home .home-hero .hero-proof{animation:home-anchor-in .42s var(--ease-out) both}.route-stage-home .home-hero .hero-proof{animation-delay:70ms}@keyframes home-anchor-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.home-hero{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:70px;align-content:center;min-height:calc(100vh - 72px);min-height:calc(100svh - 72px);padding:80px 0 72px;border-bottom:1px solid var(--line)}.hero-copy h1{max-width:760px;margin:20px 0;font-size:68px;line-height:1.04;text-wrap:balance}.hero-copy h1 .nb{white-space:nowrap}.hero-copy h1 em{color:#59655d;font-style:normal}.night-mode .hero-copy h1 em{color:#a9b6ac}.hero-text{max-width:530px;margin:0 0 28px;color:var(--muted);font-size:16px;line-height:1.8}.hero-actions{display:flex;align-items:center;gap:23px}.hero-proof{align-self:center;min-height:260px;display:grid;align-content:center;border-left:1px solid var(--line);padding-left:40px}.hero-proof-head{margin:0 0 6px;color:var(--muted);font:10px DM Mono,monospace;text-transform:uppercase;letter-spacing:.08em}.proof-grid{margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.proof-cell{padding:18px 22px 16px 0;border-bottom:1px solid var(--line)}.proof-cell:nth-child(odd){border-right:1px solid var(--line)}.proof-cell:nth-child(2n){padding-left:22px}.proof-cell:nth-last-child(-n+2){border-bottom:0}.proof-cell dt{font:44px Georgia,serif;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink)}.proof-cell dd{margin:9px 0 0;color:var(--muted);font-size:12px}.proof-cell dd small{margin-left:6px;color:var(--soft);font:9px DM Mono,monospace;letter-spacing:.06em}.hero-proof-tail{margin:14px 0 0;color:var(--soft);font:10px DM Mono,Microsoft YaHei,PingFang SC,monospace;letter-spacing:.06em}.feature-grid{display:grid;grid-template-columns:minmax(0,1.46fr) minmax(280px,1fr);grid-template-rows:260px;gap:16px}.feature-card{min-height:260px;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:18px;padding:22px;border:1px solid var(--line);border-top:3px solid var(--accent);background:var(--surface);position:relative;overflow:hidden;transition:transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.card-open-target{position:absolute;z-index:2;inset:0;width:100%;height:100%;border:0;padding:0;background:transparent;cursor:pointer}.card-open-target:focus-visible{box-shadow:inset 0 0 0 3px color-mix(in srgb,var(--coral) 55%,transparent)}.feature-card:after{content:none}.feature-card:hover{transform:translateY(-2px);background:color-mix(in srgb,var(--surface) 88%,var(--surface-alt));box-shadow:7px 7px color-mix(in srgb,var(--ink) 9%,transparent)}.feature-card:active,.explore-card:active{transform:translateY(0) scale(.998)}.feature-index{color:var(--soft);font:10px DM Mono,monospace;letter-spacing:.08em}.feature-content{display:flex;align-items:center;justify-content:space-between;min-height:0;position:relative;z-index:1}.course-kind{margin:0 0 8px;color:var(--soft);font:10px DM Mono,monospace;text-transform:uppercase}.feature-content h3{margin:0 0 7px;font-size:34px}.feature-content p:not(.course-kind){margin:0;color:var(--muted);font-size:13px}.circle-arrow{width:44px;height:44px;display:grid;flex:0 0 44px;place-items:center;border:1px solid var(--ink);background:transparent;color:var(--ink);font-size:17px;transition:background .2s ease,color .2s ease}.feature-card:hover .circle-arrow{background:var(--ink);color:var(--acid);transform:translate(1px,-1px)}.feature-bottom{display:grid;grid-template-columns:auto auto auto minmax(84px,1fr);align-items:center;gap:16px;color:var(--soft);font:9px DM Mono,monospace}.long-progress{grid-column:auto;height:3px;background:var(--surface-alt)}.long-progress i{display:block;height:100%;background:var(--accent)}.small-course-stack{display:grid;grid-template-rows:repeat(2,minmax(0,1fr));gap:16px}.course-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto 40px 40px;align-items:center;gap:12px;min-height:117px;padding:17px;border:1px solid var(--line);box-shadow:inset 2px 0 0 var(--accent);background:var(--surface);position:relative;transition:background var(--duration-fast) var(--ease-out)}.course-row:hover{background:var(--surface-alt)}.course-row:has(.card-open-target:hover) .row-arrow{transform:translate(2px,-1px);color:var(--coral)}.row-number{align-self:start;color:var(--soft);font:10px DM Mono,monospace}.row-copy{min-width:0}.row-copy span{color:var(--soft);font:9px DM Mono,monospace}.row-copy h3{margin:5px 0 4px;font-size:20px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-copy p{margin:0;color:var(--muted);overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.row-stat{display:grid;gap:3px;justify-items:end}.row-stat strong{font:22px Georgia,serif}.row-stat span{color:var(--soft);font:9px DM Mono,monospace}.row-save,.row-arrow{min-width:40px;min-height:40px;display:grid;place-items:center;border:0;background:transparent;cursor:pointer;color:var(--soft);font-size:18px}.row-save.saved{color:var(--ink)}.row-save{position:relative;z-index:3}.row-arrow{color:var(--ink);font-size:16px;pointer-events:none;transition:transform var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.shelf-section{padding-top:68px}.section-title{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:22px}.section-title h2{margin-top:11px}.category-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));border-top:1px solid var(--line);border-left:1px solid var(--line)}.track-section,.section-tree{padding-top:70px}.curriculum-section{padding-top:30px;border-top:1px solid var(--line)}.curriculum-section+.curriculum-section{margin-top:18px}.curriculum-head{display:flex;align-items:flex-start;gap:22px;margin-bottom:18px}.curriculum-index{padding-top:8px;color:var(--soft);font:12px DM Mono,Microsoft YaHei,PingFang SC,monospace}.curriculum-eyebrow{color:color-mix(in srgb,var(--accent) 68%,var(--muted));font:9px DM Mono,Microsoft YaHei,PingFang SC,monospace;letter-spacing:.08em}.curriculum-copy h3{margin-top:8px;font:30px Georgia,Songti SC,serif;font-weight:400;line-height:1.1}.curriculum-copy p{max-width:620px;margin:8px 0 0;color:var(--muted);font-size:13px;line-height:1.7}.curriculum-meta{flex-shrink:0;margin-left:auto;color:var(--soft);font:11px DM Mono,Microsoft YaHei,PingFang SC,monospace;text-align:right;white-space:nowrap}.curriculum-meta small{display:block;margin-top:5px;color:var(--muted);font-size:10px}.track-lines{display:grid}.track-line{display:grid;grid-template-columns:34px minmax(0,auto) minmax(0,1fr) auto;align-items:baseline;gap:18px;padding:13px 6px;border:0;border-top:1px solid var(--line);background:transparent;color:var(--ink);text-align:left;cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.track-line:hover{background:color-mix(in srgb,var(--accent) 7%,var(--surface))}.track-line:hover .track-line-meta b{transform:translate(2px,-2px)}.track-line-index{color:var(--soft);font:10px DM Mono,Microsoft YaHei,PingFang SC,monospace}.track-line strong{font:17px Georgia,Songti SC,serif;font-weight:400;white-space:nowrap}.track-line-copy{overflow:hidden;color:var(--muted);font-size:12.5px;line-height:1.6;white-space:nowrap;text-overflow:ellipsis}.track-line-meta{color:var(--soft);font:10px DM Mono,Microsoft YaHei,PingFang SC,monospace;white-space:nowrap}.track-line-meta b{display:inline-block;margin-left:6px;color:var(--coral);font-size:13px;font-weight:400;transition:transform var(--duration-fast) var(--ease-out)}@media(max-width:900px){.curriculum-head{flex-direction:column;gap:10px}.curriculum-meta{margin-left:0;text-align:left}.track-line{grid-template-columns:34px minmax(0,1fr) auto}.track-line-copy{display:none}}.manifesto{position:relative;isolation:isolate;display:grid;align-content:center;min-height:100vh;min-height:100svh;padding:74px 0 66px;border-bottom:1px solid var(--line)}.manifesto:before{content:"";position:absolute;z-index:-1;inset:0 calc(50% - 50vw);background:color-mix(in srgb,var(--coral) 4%,var(--paper));box-shadow:inset 0 1px 0 var(--line)}.manifesto-lede{max-width:900px;margin:26px 0 0;padding-left:26px;border-left:3px solid color-mix(in srgb,var(--coral) 55%,transparent);font:27px Georgia,Songti SC,serif;line-height:1.5}.manifesto-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:48px;margin-top:44px}.manifesto-col h3{padding-top:16px;border-top:1px solid var(--line);font:12px DM Mono,Microsoft YaHei,PingFang SC,monospace;font-weight:400;letter-spacing:.05em;color:var(--ink)}.manifesto-col p{margin:12px 0 0;color:var(--muted);font-size:13.5px;line-height:1.8}.manifesto-close{margin:44px 0 0;font:21px Georgia,Songti SC,serif}.manifesto-close:before{content:"——";margin-right:10px;color:var(--soft)}@media(max-width:760px){.manifesto-columns{grid-template-columns:1fr;gap:26px}.manifesto-lede{font-size:21px}}.featured-band{display:grid;align-content:center;min-height:100vh;min-height:100svh;padding-top:70px}.category-card{position:relative;min-height:188px;display:flex;flex-direction:column;align-items:flex-start;padding:17px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:transparent;text-align:left;cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.category-card:hover{background:var(--surface)}.category-card:focus-visible,.track-line:focus-visible,.lesson-row:focus-visible,.search-hit:focus-visible,.learning-row:focus-visible,.resource-row:focus-visible{position:relative;z-index:1;box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--coral) 60%,transparent)}.category-number,.category-eyebrow{color:var(--soft);font:9px DM Mono,monospace}.category-eyebrow{margin-top:24px;color:color-mix(in srgb,var(--accent) 62%,var(--muted))}.category-card strong{margin-top:10px;font:21px Georgia,serif;font-weight:400}.category-card p{max-width:190px;margin:8px 0 0;color:var(--muted);font-size:12px;line-height:1.65}.category-card small{margin-top:auto;color:var(--soft);font:9px DM Mono,monospace}.category-arrow{position:absolute;right:16px;bottom:15px;color:var(--ink);font-size:16px;opacity:.55;transition:opacity .2s ease,transform .2s ease}.category-card:hover .category-arrow{opacity:1;transform:translate(1px,-1px)}.principles-strip{position:relative;isolation:isolate;display:grid;grid-template-columns:.7fr repeat(3,1fr);gap:34px;align-content:center;min-height:100vh;min-height:100svh;margin-top:68px;padding:36px 0 40px;border-top:0}.principles-strip:before{content:"";position:absolute;z-index:-1;inset:0 calc(50% - 50vw);background:var(--dark)}.night-mode .principles-strip:before{background:#181c19;box-shadow:inset 0 1px 0 var(--line),inset 0 -1px 0 var(--line)}.principles-strip>span{color:color-mix(in srgb,var(--acid) 72%,transparent);font:9px DM Mono,monospace}.principles-strip strong{color:#fbfcf8;font:16px Georgia,serif;font-weight:400}.principles-strip p{margin:8px 0 0;color:color-mix(in srgb,#fbfcf8 66%,var(--dark));font-size:14px;line-height:1.75}html.home-snap{scroll-snap-type:y proximity;scroll-padding-top:0}.home-page>section{scroll-snap-align:start}.home-page>section.home-hero,.home-page>section.section-tree{scroll-snap-align:none}.home-page>section.principles-strip{scroll-snap-align:end}@media(max-width:900px),(prefers-reduced-motion:reduce){html.home-snap{scroll-snap-type:none}}.home-rail{position:fixed;z-index:25;top:50%;right:20px;display:grid;gap:10px;justify-items:end;transform:translateY(-50%)}.home-rail button{display:flex;align-items:center;gap:9px;border:0;padding:3px 0;background:transparent;cursor:pointer}.home-rail span{color:var(--soft);font:9px DM Mono,Microsoft YaHei,PingFang SC,monospace;letter-spacing:.08em;opacity:0;transform:translate(4px);transition:opacity var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.home-rail i{width:14px;height:1px;background:color-mix(in srgb,var(--soft) 70%,transparent);transition:width var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.home-rail button:hover span,.home-rail button:focus-visible span,.home-rail button.is-active span{opacity:1;transform:none}.home-rail button.is-active span{color:var(--ink)}.home-rail button.is-active i{width:26px;background:var(--coral)}@media(max-width:1200px){.home-rail{display:none}}@media(prefers-reduced-motion:no-preference){@supports (animation-timeline: view()){@keyframes curtain-rise{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.home-page .section-title>div,.home-page .curriculum-section,.home-page .manifesto-lede,.home-page .manifesto-col,.home-page .manifesto-close,.home-page .feature-card,.home-page .small-course-stack>*,.home-page .principles-strip>div{animation:curtain-rise linear both;animation-timeline:view();animation-range:entry 12% entry 48%}}}.page-intro{display:flex;justify-content:space-between;align-items:flex-end;padding:76px 0 44px;border-bottom:1px solid var(--line)}.page-intro h1{margin:17px 0 12px;font-size:68px;line-height:1.02}.page-intro>div:first-child>p:last-child{margin:0;color:var(--muted);font-size:15px}.explore-count{display:flex;align-items:flex-end;gap:10px;padding-bottom:4px}.explore-count strong{font:48px Georgia,serif;line-height:.8}.explore-count span{color:var(--soft);font:10px DM Mono,monospace;line-height:1.4}.filter-row{display:flex;justify-content:space-between;gap:20px;align-items:center;padding:18px 0 22px}.filter-groups{display:grid;gap:12px;min-width:0}.filter-group{display:flex;align-items:center;gap:12px}.filter-label{flex:0 0 52px;color:var(--soft);font:9px DM Mono,monospace;letter-spacing:.08em}.filter-tabs{display:flex;gap:6px;flex-wrap:wrap}.track-tabs button.active,.topic-tabs button.active{border-color:color-mix(in srgb,var(--acid) 70%,var(--line));background:color-mix(in srgb,var(--acid) 18%,var(--surface))}.filter-tabs button{min-height:44px;padding:8px 12px;border:1px solid transparent;background:transparent;color:var(--muted);cursor:pointer;font-size:12px;transition:border-color .14s ease,background-color .14s ease,color .14s ease}.filter-tabs button:hover,.filter-tabs button.active{border-color:var(--line);background:var(--surface);color:var(--ink)}.query-note{color:var(--soft);font:10px DM Mono,monospace}.filter-group.is-scoped .topic-tabs{margin-left:2px;padding-left:10px;border-left:1px solid var(--line)}.filter-group.is-scoped.is-narrowed .topic-tabs{border-left-color:color-mix(in srgb,var(--acid) 55%,var(--line))}.filter-group.is-scoped.is-narrowed .filter-label{color:var(--ink)}.search-hits{padding:26px 0 39px;border-bottom:1px solid var(--line)}.search-hits .section-title{margin-bottom:15px}.search-hit-list{border-top:1px solid var(--line)}.search-hit{width:100%;display:grid;grid-template-columns:36px minmax(0,1fr) 24px;align-items:center;gap:12px;min-height:64px;padding:13px 10px;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),transform var(--duration-instant) var(--ease-out)}.search-hit:hover{background:var(--surface)}.search-hit-number{color:var(--coral);font:10px DM Mono,monospace}.search-hit-copy{min-width:0}.search-hit-copy strong{display:block;overflow:hidden;color:var(--ink);font-size:14px;text-overflow:ellipsis;white-space:nowrap}.search-hit-copy small{display:block;margin-top:3px;color:var(--soft);font:9px DM Mono,monospace}.search-hit-copy p{display:-webkit-box;overflow:hidden;margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.5;-webkit-box-orient:vertical;-webkit-line-clamp:2}.search-hit-arrow{color:var(--coral);text-align:right}.search-status{margin:18px 0;padding:14px 16px;border:1px dashed var(--line);color:var(--muted);font-size:12px}.search-status .text-button{margin-left:10px}.explore-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.explore-card{min-height:276px;display:flex;flex-direction:column;padding:18px;border:1px solid var(--line);border-top:3px solid var(--accent);background:var(--surface);position:relative;overflow:hidden;transition:transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.explore-card:hover{transform:translateY(-2px);background:color-mix(in srgb,var(--surface) 82%,var(--surface-alt));box-shadow:6px 6px color-mix(in srgb,var(--ink) 9%,transparent)}.explore-card:hover .explore-open-label b{transform:translate(2px,-1px)}.explore-card.planned{background:color-mix(in srgb,var(--surface) 72%,var(--surface-alt))}.explore-card-top{display:flex;justify-content:space-between;color:var(--soft);font:10px DM Mono,monospace}.explore-card-top button{min-width:40px;min-height:40px;display:grid;place-items:center;border:0;background:transparent;color:var(--soft);cursor:pointer;font-size:18px;position:relative;z-index:3}.explore-card-top button.saved{color:var(--ink)}.explore-mark{position:absolute;right:15px;top:31px;color:color-mix(in srgb,var(--accent) 70%,var(--soft));opacity:.2;font:96px/.9 Georgia,serif;pointer-events:none}.explore-card .course-kind{position:relative;margin-top:34px}.course-track-badge{color:color-mix(in srgb,var(--accent) 72%,var(--ink));font:9px DM Mono,monospace;letter-spacing:.06em}.private-tag{display:inline-block;margin-left:10px;padding:3px 7px 2px;border:1px solid color-mix(in srgb,var(--accent) 42%,transparent);color:color-mix(in srgb,var(--accent) 58%,var(--ink));font:9px DM Mono,monospace;letter-spacing:.25em;text-indent:.25em;transform:rotate(-2deg)}.explore-card.is-private{outline:1px solid color-mix(in srgb,var(--accent) 30%,transparent);outline-offset:3px}.explore-card .private-seal{position:absolute;right:16px;bottom:46px;padding:10px 7px;border:1px solid color-mix(in srgb,var(--accent) 38%,transparent);color:color-mix(in srgb,var(--accent) 55%,var(--ink));opacity:.26;font:400 15px/1.2 Georgia,Songti SC,STSong,serif;letter-spacing:.3em;text-indent:.3em;writing-mode:vertical-rl;transform:rotate(-4deg);pointer-events:none}.explore-card h3{position:relative;max-width:87%;margin:8px 0 10px;font-size:27px}.explore-subtitle{position:relative;min-height:40px;max-width:92%;margin:0;color:var(--muted);font-size:13px;line-height:1.65}.explore-bottom{position:relative;display:flex;justify-content:space-between;align-items:flex-end;gap:10px;margin-top:auto;padding-top:20px;color:var(--soft);font:9px DM Mono,monospace}.explore-open-label{min-height:36px;display:inline-flex;align-items:center;color:var(--ink);font:12px Manrope,sans-serif;font-weight:700}.explore-bottom b{color:var(--coral);font-size:15px;font-weight:400;display:inline-block;transition:transform var(--duration-fast) var(--ease-out)}.card-line{height:3px;margin-top:14px;background:var(--surface-alt)}.card-line i{display:block;height:100%;background:var(--accent)}.empty-panel{padding:84px 20px;border:1px dashed var(--line);text-align:center}.empty-panel span{display:grid;place-items:center;color:var(--soft)}.empty-panel h3{margin:13px 0 6px;font-size:22px}.empty-panel p{margin:0;color:var(--muted);font-size:12px}.not-found-panel{margin-top:90px}.not-found-panel h1{margin:17px 0 8px;font:42px Georgia,serif}.not-found-panel .dark-button{margin-top:26px}.learning-intro{align-items:center}.streak{display:flex;align-items:center;gap:12px;color:var(--muted);font:10px DM Mono,monospace}.streak strong{color:var(--ink);font:31px Georgia,serif}.streak strong small{color:var(--soft);font:10px DM Mono,monospace}.streak i{color:var(--coral);font-style:normal;font-size:18px}.progress-overview{display:grid;grid-template-columns:1fr 1.2fr 2fr;gap:35px;align-items:end;padding:28px 0;border-bottom:1px solid var(--line)}.progress-overview>div:not(.weekly-bars){padding-right:28px;border-right:1px solid var(--line)}.progress-overview .overline{margin-bottom:17px}.progress-overview strong{display:block;font:46px Georgia,serif}.progress-overview strong span{color:var(--soft);font:16px DM Mono,monospace}.progress-overview p{margin:6px 0 0;color:var(--muted);font-size:11px}.weekly-bars{display:flex;align-items:end;justify-content:space-around;height:92px;gap:10px}.weekly-bars i{width:100%;height:16px;display:block;background:var(--line);opacity:.9;transform-origin:bottom;animation:none}.weekly-bars i.active{height:58px;background:var(--coral);opacity:.82}.learning-section{padding-top:54px}.learning-data-tools{display:flex;align-items:center;gap:10px;margin-top:22px;color:var(--soft);font:10px DM Mono,monospace}.learning-data-tools span{margin-right:auto}.learning-data-tools button{min-height:36px;border:1px solid var(--line);padding:7px 10px;background:transparent;color:var(--ink);cursor:pointer;font:10px DM Mono,monospace}.learning-data-tools button:hover{border-color:var(--coral);color:var(--coral)}.section-count{color:var(--soft);font:10px DM Mono,monospace}.learning-list{border-top:1px solid var(--line)}.learning-row{width:100%;display:flex;align-items:center;gap:16px;padding:17px 0;border:0;border-bottom:1px solid var(--line);background:transparent;text-align:left;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),transform var(--duration-instant) var(--ease-out)}.learning-row:hover{background:color-mix(in srgb,var(--surface) 70%,transparent)}.learning-row:hover .learning-arrow{transform:translate(4px);color:var(--coral)}.learning-icon{width:38px;height:38px;display:grid;place-items:center;color:var(--dark);font:17px Georgia,serif}.learning-copy{display:grid;min-width:220px;gap:3px}.learning-copy small{color:var(--soft);font:9px DM Mono,monospace}.learning-copy strong{font:19px Georgia,serif;font-weight:400}.learning-copy span{color:var(--muted);font:10px DM Mono,monospace}.learning-bar{flex:1;height:3px;background:var(--surface-alt)}.learning-bar i{display:block;height:100%}.learning-arrow{margin-left:auto;color:var(--soft);font-size:17px;transition:transform .2s ease}.saved-section{padding-bottom:40px}.saved-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.back-link{display:inline-flex;border:0;padding:0;background:transparent;color:var(--muted);cursor:pointer;min-height:44px;align-items:center;font-size:13px}.back-link:hover{color:var(--ink)}.course-page{padding-top:31px}.course-hero{display:grid;grid-template-columns:minmax(0,1.22fr) minmax(300px,.78fr);min-height:420px;margin-top:28px;border-top:3px solid var(--accent);border-bottom:1px solid var(--line)}.course-hero-copy{padding:52px 54px 46px 0}.course-flag{display:flex;gap:15px;color:color-mix(in srgb,var(--accent) 62%,var(--ink));font:10px DM Mono,monospace;letter-spacing:.08em;text-transform:uppercase}.course-flag span+span{color:var(--soft)}.course-hero h1{max-width:700px;margin:25px 0 14px;font-size:68px;line-height:1}.course-subtitle{margin:0 0 22px;color:var(--ink);font:20px Georgia,serif}.course-long-copy{max-width:500px;margin:0;color:var(--muted);font-size:15px;line-height:1.8}.course-actions{display:flex;align-items:center;gap:18px;margin-top:28px}.bookmark-button{border:0;background:transparent;color:var(--muted);cursor:pointer;min-height:40px;padding:8px 4px;font-size:13px}.bookmark-button.saved{color:var(--ink)}.course-hero-mark{display:grid;place-items:center;position:relative;border-left:1px solid var(--line);overflow:hidden;background:color-mix(in srgb,var(--accent) 11%,var(--surface));color:color-mix(in srgb,var(--accent) 68%,var(--ink))}.course-hero-mark:before{content:"COURSE / FILE";position:absolute;top:28px;left:28px;color:color-mix(in srgb,var(--accent) 72%,var(--ink));font:10px DM Mono,monospace;letter-spacing:.1em}.course-hero-mark:after{content:"";position:absolute;top:28px;right:28px;width:44px;height:3px;background:var(--accent)}.course-hero-mark span{position:relative;z-index:1;font:140px Georgia,serif;opacity:.42}.course-hero-mark small{position:absolute;right:28px;bottom:26px;font:10px DM Mono,monospace}.course-detail-grid{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:52px;padding-top:52px}.curriculum .section-title{margin-bottom:19px}.lesson-row{width:100%;display:grid;grid-template-columns:42px minmax(0,1fr) 50px 22px;align-items:center;gap:12px;min-height:64px;padding:0 18px 0 22px;border:0;border-left:2px solid transparent;border-top:1px solid var(--line);background:transparent;text-align:left;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),transform var(--duration-instant) var(--ease-out)}.lesson-row:last-child{border-bottom:1px solid var(--line)}.lesson-row:hover{background:var(--surface)}.lesson-row.completed,.lesson-row:focus-visible{border-left-color:color-mix(in srgb,var(--color-accent) 72%,var(--line))}.lesson-number{color:var(--soft);font:10px DM Mono,monospace}.lesson-name,.reader-outline button strong,.chapter-sheet-list button strong{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;overflow-wrap:anywhere}.lesson-name{font-size:14px}.lesson-status{color:var(--soft);font:9px DM Mono,monospace;text-align:right}.lesson-row.completed .lesson-status{color:var(--color-accent);font-weight:600}.lesson-arrow{color:var(--coral);text-align:right;transition:transform var(--duration-fast) var(--ease-out)}.lesson-row:not(.disabled):hover .lesson-arrow{transform:translate(2px,-1px)}.lesson-row.disabled{cursor:default;opacity:.64}.lesson-row.disabled .lesson-arrow{color:var(--soft)}.title-tooltip{position:fixed;z-index:45;max-width:min(420px,calc(100vw - 24px));padding:10px 14px;border:1px solid rgba(243,245,241,.18);background:#202722;color:#f3f5f1;box-shadow:0 12px 32px #0f161247;font:500 12.5px/1.65 Manrope,sans-serif;letter-spacing:.01em;overflow-wrap:anywhere;pointer-events:none;animation:title-tooltip-in var(--duration-fast) var(--ease-out)}.title-tooltip[data-below]{animation-name:title-tooltip-in-below}@keyframes title-tooltip-in{0%{opacity:0;translate:0 3px}}@keyframes title-tooltip-in-below{0%{opacity:0;translate:0 -3px}}.course-aside{border-left:1px solid var(--line);padding-left:28px}.aside-block{padding-bottom:30px;margin-bottom:29px;border-bottom:1px solid var(--line)}.glance-row{display:flex;align-items:baseline;justify-content:space-between;margin-top:19px}.glance-row strong{font:24px Georgia,serif}.glance-row span{color:var(--soft);font:10px DM Mono,monospace}.source-block code{display:block;margin-top:19px;color:var(--muted);font:10px/1.6 DM Mono,monospace;overflow-wrap:anywhere}.source-block small{display:block;margin-top:12px;color:var(--soft);font:9px DM Mono,monospace}.outcome-list{margin:18px 0 0;padding-left:18px;color:var(--muted);font-size:13px;line-height:1.75}.prerequisite-copy{margin:18px 0 0;color:var(--muted);font-size:13px;line-height:1.7}.course-resources{margin-top:58px}.resource-list{border-bottom:1px solid var(--line)}.course-longforms{margin-top:44px;padding-top:24px;border-top:1px solid var(--line)}.course-longforms .resource-row{border-color:color-mix(in srgb,var(--coral) 35%,var(--line))}.resource-row{width:100%;min-height:70px;display:grid;grid-template-columns:84px minmax(0,1fr) 18px;align-items:center;gap:16px;border:0;border-top:1px solid var(--line);padding:10px 0;background:transparent;color:var(--ink);text-align:left;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),transform var(--duration-instant) var(--ease-out)}.resource-row:active{transform:translateY(1px)}.resource-row:hover{background:var(--surface)}.resource-row>span:nth-child(2){display:grid;gap:5px}.resource-row strong{overflow-wrap:anywhere;font-size:12px;font-weight:600}.resource-row small,.resource-type{color:var(--soft);font:9px DM Mono,monospace}.resource-row>span:last-child{color:var(--coral)}.reader-page{--reader-header-h: 69px;--reader-sticky-top: calc(var(--reader-header-h) + 52px);--reader-sticky-gap: 26px;min-height:100vh;overflow-x:clip;background:var(--reader-canvas);color:var(--reader-text);animation:none}.reader-header{position:sticky;z-index:12;top:0;min-height:64px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:18px;padding:12px max(28px,calc((100vw - 1160px)/2));border-bottom:1px solid var(--reader-border);background:var(--reader-surface);background:color-mix(in srgb,var(--reader-surface) 97%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.reader-back-group{display:flex;min-width:0;align-items:center;gap:20px}.reader-back-group .back-link{max-width:min(440px,45vw);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reader-back-group>span,.reader-meta{color:var(--reader-muted);font:10px DM Mono,monospace}.reader-meta{display:flex;align-items:center;gap:18px}.reader-path-bar{position:absolute;right:0;bottom:-1px;left:0;height:2px;background:transparent}.reader-path-bar i{display:block;width:100%;height:100%;background:var(--coral);transform-origin:left center;transition:transform var(--duration-normal) var(--ease-out)}.reader-theme-button{width:44px;height:44px;display:inline-grid;flex:0 0 44px;place-items:center;border:1px solid var(--reader-border);padding:0;background:var(--reader-subtle);color:var(--reader-text);cursor:pointer}.reader-theme-button:hover{border-color:var(--reader-accent);background:color-mix(in srgb,var(--reader-subtle) 72%,var(--reader-accent))}.reader-chapter-select{display:none;min-width:0}.chapter-picker-button{width:100%;min-height:44px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;border:1px solid var(--reader-border);padding:7px 12px;background:var(--reader-surface);color:var(--reader-text);text-align:left;cursor:pointer}.chapter-picker-button strong{min-width:0;overflow:hidden;color:var(--reader-body);font:500 13px/1.4 Manrope,sans-serif;text-overflow:ellipsis;white-space:nowrap}.chapter-picker-button span:first-child{color:var(--reader-muted);font:10px DM Mono,monospace}.chapter-picker-button span:last-child{display:grid;width:26px;height:26px;place-items:center;border:1px solid var(--reader-border);border-radius:999px;background:var(--reader-subtle);color:var(--reader-text);transition:border-color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.chapter-picker-button:hover span:last-child{border-color:var(--reader-accent);background:color-mix(in srgb,var(--reader-subtle) 60%,var(--reader-accent))}.chapter-picker-button:hover{border-color:var(--reader-accent)}.reader-chapter-select select{width:100%;min-height:44px;border:1px solid var(--reader-border);padding:7px 34px 7px 10px;background:var(--reader-surface);color:var(--reader-text);font:13px Manrope,sans-serif}.reader-layout{display:grid;grid-template-columns:244px minmax(0,720px) 210px;justify-content:center;gap:42px;width:min(1320px,calc(100% - 72px));margin:0 auto;padding:52px 0 0}.resource-layout{width:min(760px,calc(100% - 72px));margin:0 auto;padding:58px 0 104px}.resource-header{grid-template-columns:minmax(0,1fr) auto}.project-files{margin-top:56px}.project-files>p{margin:0 0 20px}.project-file-list{border-bottom:1px solid var(--reader-border)}.project-file-list a{min-height:48px;display:flex;align-items:center;justify-content:space-between;gap:18px;border-top:1px solid var(--reader-border);color:var(--reader-text);text-decoration:none}.project-file-list a:hover{background:var(--reader-subtle)}.project-file-list code{min-width:0;overflow-wrap:anywhere;font:11px/1.5 DM Mono,monospace}.project-file-list span{flex:0 0 auto;color:var(--reader-muted);font:9px DM Mono,monospace}.reader-outline{position:sticky;top:var(--reader-sticky-top);align-self:start;display:flex;flex-direction:column;max-height:calc(100vh - var(--reader-sticky-top) - var(--reader-sticky-gap));min-width:0;padding:8px 24px 0 0;border-right:1px solid var(--reader-border)}.reader-outline-title{margin:14px 0 20px;color:var(--reader-text);font:23px Georgia,Songti SC,serif}.reader-outline-list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding-right:5px;scrollbar-width:thin}.reader-outline button{width:100%;display:grid;grid-template-columns:28px minmax(0,1fr) auto;gap:9px;min-height:44px;padding:10px 12px 10px 18px;border:0;border-left:2px solid transparent;background:transparent;color:var(--reader-muted);text-align:left;cursor:pointer;line-height:1.5;transition:background var(--duration-fast) var(--ease-out),border-left-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.reader-outline button span,.reader-outline button em{transition:color var(--duration-fast) var(--ease-out)}.reader-outline button:hover{background:var(--reader-subtle);color:var(--reader-text)}.reader-outline button span{font:9px DM Mono,monospace}.reader-outline button strong{min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:500}.reader-outline button em{align-self:start;padding-top:2px;color:var(--reader-muted);font:9px DM Mono,monospace;font-style:normal;white-space:nowrap}.reader-outline button.completed em{color:var(--reader-accent);font-weight:500}.reader-outline button.active{border-left-color:var(--coral);background:var(--reader-subtle);color:var(--reader-text)}.reader-outline button.active span{color:var(--coral)}.reader-toc{position:sticky;top:var(--reader-sticky-top);align-self:start;display:flex;flex-direction:column;min-width:0;max-height:calc(100vh - var(--reader-sticky-top) - var(--reader-sticky-gap));padding-top:12px}.reader-toc-toggle{width:100%;flex:0 0 auto;min-height:38px;display:flex;align-items:center;justify-content:space-between;border:0;border-bottom:1px solid var(--reader-border);padding:0 0 12px;background:transparent;color:var(--reader-text);text-align:left;cursor:pointer;font:500 13px Manrope,sans-serif}.reader-toc-glyph{position:relative;flex:0 0 auto;width:11px;height:11px;color:var(--reader-muted)}.reader-toc-glyph i{position:absolute;left:0;top:50%;width:100%;height:1.5px;margin-top:-.75px;border-radius:1px;background:currentColor;transition:transform var(--duration-normal) var(--ease-out)}.reader-toc-glyph i:last-child{transform:rotate(90deg)}.reader-toc.open .reader-toc-glyph i:last-child{transform:rotate(90deg) scaleX(0)}.reader-toc-reveal{display:grid;grid-template-rows:1fr;flex:1 1 auto;min-height:0;overflow:hidden;padding-top:14px;transition:grid-template-rows var(--duration-normal) var(--ease-out),padding-top var(--duration-normal) var(--ease-out)}.reader-toc-list{display:grid;align-content:start;gap:4px;min-height:0;overflow-y:auto;scrollbar-width:thin;transition:opacity var(--duration-fast) var(--ease-out),transform var(--duration-normal) var(--ease-out)}.reader-toc-list a,.reader-toc-list>span{display:block;overflow-wrap:anywhere;padding:7px 0;color:var(--reader-muted);font-size:12px;line-height:1.45;text-decoration:none}.reader-toc-list a{position:relative;padding-left:14px;transition:color var(--duration-fast) var(--ease-out)}.reader-toc-list>span{padding-left:14px}.reader-toc-list a:before{content:"›";position:absolute;top:7px;left:0;opacity:0;transform:translate(-4px);transition:opacity var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.reader-toc-list a:hover,.reader-toc-list a:focus-visible{color:var(--reader-link)}.reader-toc-list a.nested{padding-left:26px;color:color-mix(in srgb,var(--reader-muted) 82%,var(--reader-border));font-size:11px}.reader-toc:not(.open) .reader-toc-reveal{grid-template-rows:0fr;padding-top:0}.reader-toc:not(.open) .reader-toc-list{opacity:0;transform:translateY(-6px)}@media(prefers-reduced-motion:reduce){.reader-toc-reveal,.reader-toc-list,.reader-toc-glyph i{transition:none}}.reader-toc-list a.active{color:var(--coral)}.reader-toc-list a.active:before{opacity:1;transform:translate(0)}.article h2,.article h3{scroll-margin-top:96px}.chapter-sheet-backdrop,.copy-fallback-backdrop{position:fixed;z-index:30;inset:0;display:grid;align-items:end;background:#0e15118a;background:color-mix(in srgb,#0e1511 54%,transparent);animation:backdrop-fade var(--duration-normal) var(--ease-out) both}.chapter-sheet,.copy-fallback{width:min(100%,560px);max-height:min(80vh,720px);overflow:auto;margin:0 auto;border-top:1px solid var(--reader-border);padding:22px 18px max(24px,env(safe-area-inset-bottom));background:var(--reader-surface);color:var(--reader-text);overscroll-behavior:contain;animation:sheet-in var(--duration-slow) var(--ease-out) both}@keyframes sheet-in{0%{opacity:0;transform:translateY(48px)}}.chapter-sheet-backdrop.is-closing,.copy-fallback-backdrop.is-closing{animation:backdrop-fade-out var(--duration-fast) var(--ease-out) both}.chapter-sheet-backdrop.is-closing .chapter-sheet,.copy-fallback-backdrop.is-closing .copy-fallback{animation:sheet-out var(--duration-fast) var(--ease-out) both}@keyframes sheet-out{to{opacity:0;transform:translateY(48px)}}.chapter-sheet-heading,.copy-fallback{position:relative}.chapter-sheet-heading{display:flex;align-items:start;justify-content:space-between;gap:20px;padding-bottom:15px;border-bottom:1px solid var(--reader-border)}.chapter-sheet-heading h2,.copy-fallback h2{margin:7px 0 0;font:25px Georgia,Songti SC,serif;font-weight:400}.chapter-sheet-heading button{width:44px;height:44px;border:1px solid var(--reader-border);background:transparent;color:var(--reader-text);cursor:pointer;font-size:22px}.chapter-sheet-list{display:grid;gap:3px;padding-top:12px}.chapter-sheet-list button{width:100%;min-height:52px;display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:10px;border:0;border-left:2px solid transparent;border-bottom:1px solid var(--reader-border);padding:8px 10px 8px 12px;background:transparent;color:var(--reader-body);text-align:left;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),border-left-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.chapter-sheet-list button>span,.chapter-sheet-list button>em{transition:color var(--duration-fast) var(--ease-out)}.chapter-sheet-list button.active{border-left-color:var(--coral);background:var(--reader-subtle);color:var(--reader-text)}.chapter-sheet-list button>span,.chapter-sheet-list button>em{color:var(--reader-muted);font:10px DM Mono,monospace;font-style:normal}.chapter-sheet-list button.active>span{color:var(--coral)}.chapter-sheet-list button>strong{min-width:0;overflow-wrap:anywhere;font-size:13px;font-weight:500}.chapter-sheet-list button>em.completed{color:var(--reader-accent)}.copy-fallback{align-self:center;border:1px solid var(--reader-border);padding:24px}.copy-fallback p{margin:11px 0 16px;color:var(--reader-muted);font-size:13px}.copy-fallback textarea{width:100%;min-height:160px;resize:vertical;border:1px solid var(--reader-border);padding:12px;background:var(--reader-subtle);color:var(--reader-body);font:13px/1.65 DM Mono,monospace}.article{min-width:0;max-width:720px;padding-bottom:104px}.article-kicker{color:var(--reader-muted);font:10px DM Mono,Microsoft YaHei,PingFang SC,monospace;letter-spacing:.08em}.article-kicker span{padding:0 7px;color:var(--reader-border)}.article h1{max-width:720px;margin:22px 0 16px;font-size:44px;line-height:1.15;text-wrap:balance;overflow-wrap:anywhere;color:var(--reader-text)}.article-meta{margin:0;color:var(--reader-muted);font:10px DM Mono,Microsoft YaHei,PingFang SC,monospace}.article-rule{width:100%;height:1px;margin:32px 0 34px;background:var(--reader-border)}.article h2{margin:42px 0 14px;font-size:28px;text-wrap:balance}.article p:not(.article-meta){color:var(--reader-body);font-size:17px;line-height:1.88;letter-spacing:.02em;text-wrap:pretty}.pull-quote{margin:34px 0;padding:19px 0 19px 21px;border-left:2px solid var(--reader-quote-border);color:var(--reader-text);font:20px/1.6 Georgia,serif}.article pre{max-width:100%;margin:30px 0;padding:19px;overflow-x:auto;overscroll-behavior-x:contain;background:var(--reader-code-bg);color:var(--reader-code-text);font:14px/1.75 DM Mono,monospace}.reader-footer{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:60px;padding-top:22px;border-top:1px solid var(--reader-border)}.next-button{min-height:44px;border:1px solid var(--reader-text);padding:10px 13px;background:transparent;color:var(--reader-text);cursor:pointer;font-size:13px}.reading-completion{min-width:0;min-height:44px;display:flex;align-items:center;gap:12px;color:var(--reader-muted);font-size:13px}.reading-completion strong{color:var(--reader-text);font:500 12px DM Mono,monospace;font-variant-numeric:tabular-nums}.reading-completion.complete span{color:var(--reader-accent)}.next-button{border-color:transparent}.next-button span{margin-left:11px;color:var(--coral);font-size:15px}.login-backdrop{position:fixed;z-index:40;inset:0;display:grid;place-items:center;padding:20px}.login-backdrop:before{content:"";position:fixed;z-index:-1;inset:0;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.login-backdrop:after{content:"";position:fixed;z-index:-1;inset:0;background:linear-gradient(160deg,#1d2c23e0,#0c120ff5);background:linear-gradient(160deg,#1d2c2385,#0c120fad);animation:backdrop-fade var(--duration-normal) var(--ease-out) both}@keyframes backdrop-fade{0%{opacity:0}}.login-dialog{width:min(100%,400px);padding:30px 28px 26px;border:1px solid #d7dfd9;border-top:4px solid #ed947f;background:#fbfcf9;color:#222a25;box-shadow:14px 14px #0a0f0c;animation:dialog-in var(--duration-slow) var(--ease-out) both}.login-backdrop.is-closing .login-dialog{animation:dialog-out var(--duration-fast) var(--ease-out) both}.login-backdrop.is-closing:after{animation:backdrop-fade-out var(--duration-fast) var(--ease-out) both}@keyframes dialog-in{0%{opacity:0;transform:translateY(14px) scale(.97)}}@keyframes dialog-out{to{opacity:0;transform:translateY(10px) scale(.98)}}@keyframes backdrop-fade-out{to{opacity:0}}.login-dialog h2{margin-bottom:10px;font-size:24px;letter-spacing:-.01em}.login-field{display:grid;gap:7px;margin-bottom:16px}.login-field span{color:#68766d;font:10px DM Mono,monospace;letter-spacing:.1em;text-transform:uppercase}.login-field input{min-height:44px;padding:0 12px;border:1px solid #cfdad2;background:#fff;color:#222a25;font-size:15px}.login-field input:focus-visible{outline:2px solid #4f8169;outline-offset:1px;border-color:#4f8169}.input-affix{position:relative;display:block}.input-affix input{width:100%;padding-right:42px}.input-affix-button{position:absolute;top:50%;right:5px;display:grid;place-items:center;width:32px;height:32px;transform:translateY(-50%);border:0;border-radius:50%;background:transparent;color:#8b968f;cursor:pointer;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),transform var(--duration-instant) var(--ease-out)}.input-affix-button:hover{background:#f1f4f0;color:#4f8169}.input-affix-button:active{transform:translateY(-50%) scale(.9)}.input-affix-button:focus-visible{outline:2px solid #4f8169;outline-offset:1px}.input-affix-button[aria-pressed=true]{color:#4f8169}.input-affix-button:disabled{cursor:not-allowed;opacity:.45}.login-error{margin-bottom:14px;padding:8px 10px;border-left:2px solid var(--coral);color:var(--coral);font-size:12px}.login-actions{display:flex;align-items:center;gap:10px;margin-top:4px}.login-cancel{min-height:44px;padding:0 14px;border:1px solid #cfdad2;background:#fbfcf9;color:#68766d;cursor:pointer;font-size:13px;touch-action:manipulation}.login-cancel:hover{border-color:#111713;color:#111713}.learning-app.night-mode .login-dialog{background:#252a26;border-color:#383e39;color:#d9dfda;box-shadow:14px 14px #050807}.learning-app.night-mode .login-field span{color:#99a09a}.learning-app.night-mode .login-field input{background:#262b27;border-color:#3f4640;color:#d9dfda}.learning-app.night-mode .input-affix-button{color:#7d8b83}.learning-app.night-mode .input-affix-button:hover,.learning-app.night-mode .input-affix-button[aria-pressed=true]{background:#252a26;color:#92cbb2}.learning-app.night-mode .login-cancel{background:#252a26;border-color:#383e39;color:#99a09a}.learning-app.night-mode .login-cancel:hover{border-color:#92cbb2;color:#92cbb2}.auth-switch{position:relative;display:grid;grid-template-columns:repeat(2,1fr);margin-bottom:22px;border:1px solid #cfdad2;background:#f1f4f0}.auth-switch-pill{position:absolute;top:0;bottom:0;left:0;width:50%;background:#111713;transition:transform var(--duration-slow) var(--ease-out)}.auth-switch-pill.is-right{transform:translate(100%)}.auth-switch button{position:relative;z-index:1;min-height:40px;border:0;background:transparent;color:#68766d;cursor:pointer;font:11px DM Mono,monospace;letter-spacing:.14em;text-transform:uppercase;transition:color var(--duration-slow) var(--ease-out)}.auth-switch button.active{color:#fbfcf9}.auth-hint{margin-bottom:20px;color:#68766d;font-size:12px;line-height:1.6}.auth-note{margin:-6px 0 14px;color:#8b968f;font-size:11px;line-height:1.55}.auth-more{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--duration-slow) var(--ease-out)}.auth-more.is-open{grid-template-rows:1fr}.auth-more>div{min-height:0;overflow:hidden}.auth-field-enter{animation:auth-field-in var(--duration-normal) var(--ease-out) backwards}.auth-flip{margin-top:12px;padding:4px 0;border:0;background:none;color:#4f8169;cursor:pointer;font-size:12px;text-align:left;text-decoration:underline;text-underline-offset:3px}.auth-flip:hover{color:#111713}.auth-dialog .login-error{animation:auth-shake .26s ease-in-out}.auth-dialog.is-register{border-top-color:#4f8169}@keyframes auth-field-in{0%{opacity:0}}@keyframes auth-shake{25%{transform:translate(-4px)}50%{transform:translate(4px)}75%{transform:translate(-2px)}}.learning-app.night-mode .auth-switch{background:#262b27;border-color:#3f4640}.learning-app.night-mode .auth-switch-pill{background:#92cbb2}.learning-app.night-mode .auth-switch button{color:#99a09a}.learning-app.night-mode .auth-switch button.active{color:#141b17}.learning-app.night-mode .auth-hint,.learning-app.night-mode .auth-note{color:#99a09a}.learning-app.night-mode .auth-flip{color:#92cbb2}.learning-app.night-mode .auth-flip:hover{color:#d9dfda}.private-gate{width:min(100%,560px);margin:40px auto 0;padding:36px 28px;border:1px solid var(--line);border-top:4px solid var(--coral);background:var(--surface);box-shadow:10px 10px 0 var(--line)}.private-gate h1{margin-bottom:12px;font-size:32px}.private-gate-lead{margin-bottom:24px;color:var(--muted);font-size:14px;line-height:1.8}.private-gate-actions{display:flex;flex-wrap:wrap;gap:10px}.toast{position:fixed;z-index:20;left:50%;bottom:25px;transform:translate(-50%);padding:10px 14px;background:var(--dark);color:var(--acid);font:11px DM Mono,monospace;box-shadow:0 6px 20px color-mix(in srgb,var(--ink) 16%,transparent);animation:toast-in var(--duration-normal) var(--ease-out) both,toast-nudge .46s ease-in-out .3s 1}.learning-app.night-mode .toast{background:var(--surface-alt);border:1px solid var(--color-border);box-shadow:0 10px 28px #00000073}.toast:before{content:"";display:inline-block;width:5px;height:5px;margin:0 8px 2px 0;border-radius:50%;background:var(--coral)}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@keyframes toast-nudge{0%,to{transform:translate(-50%)}25%{transform:translate(calc(-50% - 5px))}55%{transform:translate(calc(-50% + 5px))}80%{transform:translate(calc(-50% - 3px))}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.route-stage,.route-stage-home .home-hero .hero-copy,.route-stage-home .home-hero .hero-proof{animation:none;transform:none}.page,.reader-page,.explore-card,.toast,.login-dialog,.chapter-sheet,.copy-fallback{animation:none}.login-backdrop,.login-backdrop:after,.chapter-sheet-backdrop,.copy-fallback-backdrop{animation:none}.auth-switch-pill,.auth-more,.title-tooltip,.input-affix-button{transition:none}.title-tooltip{animation:none}.dark-button,.arrow-button,.feature-card,.category-card,.category-arrow,.explore-card,.course-row,.row-arrow,.track-line,.search-hit,.learning-row,.lesson-row,.lesson-arrow,.resource-row,.reader-path-bar i{transition:none;transform:none}}@media(max-width:1080px){.site-header{gap:28px;padding:0 28px}.page{width:min(calc(100% - 56px),920px)}.home-hero{gap:35px}.feature-grid{grid-template-columns:1fr}.small-course-stack,.category-grid,.principles-strip{grid-template-columns:repeat(2,1fr)}.principles-strip>span{grid-column:1 / -1}.explore-grid{grid-template-columns:repeat(2,1fr)}.reader-layout{grid-template-columns:210px minmax(0,1fr) 180px;gap:28px;width:min(1160px,calc(100% - 56px))}}@media(max-width:1240px)and (min-width:901px){.reader-toc{display:none}.reader-layout{grid-template-columns:210px minmax(0,720px);width:min(980px,calc(100% - 56px))}}@media(max-width:900px){.reader-header{grid-template-columns:minmax(0,1fr) auto;padding-inline:24px}.reader-back-group>span{display:none}.reader-chapter-select{display:block;grid-column:1 / -1;grid-row:2}.reader-layout{display:block;width:min(720px,calc(100% - 48px));padding-top:47px}.reader-outline{display:none}.reader-toc{position:static;display:block;max-height:none;margin-top:36px;padding-top:0}.reader-toc-reveal{padding-top:12px}.reader-toc-list{max-height:none;padding:0}.article{max-width:none}}@media(max-width:720px){.site-header{height:auto;min-height:67px;flex-wrap:wrap;gap:15px;padding:15px 18px 0;border-bottom:0}.main-nav{order:3;width:100%;height:42px;gap:23px}.wordmark{flex:0 1 auto;min-width:0;overflow:hidden;white-space:nowrap;font-size:14px}.header-actions{flex:0 0 auto;gap:6px}.mini-search{width:auto;flex:0 1 120px;min-width:68px}.mini-search kbd{display:none}.theme-button,.profile-button{flex:0 0 auto;width:44px;height:44px}.page{width:calc(100% - 36px);padding-bottom:45px}.home-hero{display:block;padding:46px 0 48px}.hero-copy h1{font-size:42px;line-height:1.14}.hero-proof{width:100%;min-height:0;margin-top:28px;border-left:0;border-top:1px solid var(--line);padding-left:0}.proof-cell{padding:14px 16px 12px 0}.proof-cell:nth-child(2n){padding-left:16px}.proof-cell dt{font-size:36px}.hero-actions{flex-wrap:wrap}.manifesto{padding:52px 0 48px}.manifesto-close{font-size:18px}.small-course-stack{grid-template-columns:1fr}.course-row{grid-template-columns:24px minmax(0,1fr) 40px 40px;gap:8px}.row-stat{display:none}.feature-content h3{font-size:30px}.feature-bottom{grid-template-columns:auto auto 1fr;gap:12px}.long-progress{grid-column:1 / -1}.category-grid{grid-template-columns:1fr 1fr}.track-line{grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:12px 2px}.track-line strong{font-size:15px}.track-line-index{display:none}.curriculum-copy h3{font-size:24px}.category-card:last-child:nth-child(odd){grid-column:1 / -1}.category-card{min-height:174px;padding:14px}.category-card strong{font-size:18px}.category-card p{font-size:12px}.principles-strip{grid-template-columns:1fr;gap:22px;margin-top:52px}.principles-strip>span{grid-column:auto}.section-title{align-items:flex-start;gap:12px}.section-title .text-button{white-space:nowrap}.page-intro{display:block;padding:48px 0 34px}.page-intro h1{font-size:42px}.explore-count{margin-top:28px}.filter-row,.filter-group{display:block}.filter-label{display:block;margin-bottom:7px}.filter-group+.filter-group{margin-top:12px}.filter-tabs{overflow-x:auto;overscroll-behavior-x:contain;flex-wrap:nowrap;padding-bottom:5px}.filter-tabs button{flex:0 0 auto}.query-note{display:block;margin-top:16px}.explore-grid{grid-template-columns:1fr}.explore-card{min-height:258px}.learning-intro{display:flex;align-items:flex-end}.learning-intro h1{font-size:50px}.streak{margin-top:26px}.learning-data-tools{flex-wrap:wrap}.learning-data-tools span{width:100%}.progress-overview{grid-template-columns:1fr 1fr;gap:18px}.progress-overview>div:not(.weekly-bars){padding-right:12px}.weekly-bars{grid-column:1 / -1;height:70px}.learning-copy{min-width:0}.learning-copy strong{font-size:16px}.learning-bar{display:none}.saved-grid{grid-template-columns:1fr}.course-page{padding-top:27px}.course-hero{display:block;min-height:0}.course-hero-copy{padding:34px 0 32px}.course-hero h1{font-size:42px;line-height:1.12}.course-subtitle{font-size:18px}.course-actions{flex-wrap:wrap}.course-hero-mark{min-height:138px;border-left:0;border-top:1px solid var(--line)}.course-hero-mark span{font-size:72px}.course-detail-grid{display:block;padding-top:42px}.course-aside{display:grid;grid-template-columns:1fr 1fr;gap:20px;border-left:0;padding:40px 0 0}.source-block{margin:0}.lesson-row{grid-template-columns:30px minmax(0,1fr) 39px 14px;padding-inline:10px}.lesson-name{font-size:13px}.reader-header{min-height:64px;padding:12px 18px;gap:10px}.reader-header .back-link{max-width:210px}.reader-meta>span{display:none}.reader-layout,.resource-layout{width:calc(100% - 36px);padding:38px 0 64px}.resource-row{grid-template-columns:68px minmax(0,1fr) 14px;gap:10px}.article-kicker{font-size:9px}.article h1{margin-top:18px;font-size:34px;line-height:1.18}.article-rule{margin:28px 0}.article p:not(.article-meta),.article-content li{font-size:16px;line-height:1.85}.article h2,.article-content h2{margin-top:38px;font-size:25px}.article-content h3{font-size:21px}.reader-footer{gap:12px}.reading-completion,.next-button{font-size:12px}.toast{width:max-content;max-width:calc(100% - 36px)}}.share-button,.reader-share{color:var(--coral)}.reader-share{border:0;min-height:44px;padding:8px;background:transparent;cursor:pointer;color:var(--reader-text);font-family:Segoe UI Symbol,DM Mono,monospace;font:11px DM Mono,Microsoft YaHei,PingFang SC,monospace}.next-button:disabled{cursor:default;opacity:.38}.article-content .article-skeleton{animation:pending-pulse 1.4s var(--ease-out) infinite}.article-content .skeleton-mark{display:block;width:34px;height:2px;border-radius:1px;background:var(--reader-link);transform-origin:left center;animation:skeleton-mark 1.4s var(--ease-out) infinite}@keyframes skeleton-mark{0%{transform:scaleX(.28)}to{transform:scaleX(1)}}.article-content .article-skeleton .skeleton-bar{height:13px;margin-top:26px;border-radius:3px;background:var(--reader-border)}.article-content .article-skeleton .skeleton-bar+.skeleton-bar{margin-top:13px}.article-content .article-skeleton .skeleton-bar-92{width:92%}.article-content .article-skeleton .skeleton-bar-88{width:88%}.article-content .article-skeleton .skeleton-bar-71{width:71%}.article-content .article-skeleton .skeleton-bar-break{margin-top:32px}.article-content .article-skeleton .skeleton-slab{height:96px;margin-top:30px;border:1px solid var(--reader-border);border-radius:3px;background:var(--reader-subtle)}.article-content .article-fault{padding-left:21px;border-left:2px solid var(--color-highlight)}.article-content .article-fault-title{margin:0;color:var(--reader-text);font:400 24px/1.35 Georgia,Songti SC,STSong,serif}.article-content .article-fault-text{max-width:52ch;margin:10px 0 0;color:var(--reader-body);font-size:16px;line-height:1.8;letter-spacing:.02em}.article-content .article-fault-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin-top:24px}.article-content .article-fault-retry{padding:9px 20px;border:1px solid var(--reader-link);border-radius:2px;background:var(--reader-link);color:var(--reader-surface);font-family:Manrope,Microsoft YaHei,PingFang SC,sans-serif;font-size:13px;font-weight:500;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.article-content .article-fault-retry:hover{background:var(--reader-accent);border-color:var(--reader-accent)}.article-content .article-fault-back{padding:9px 2px;border:0;background:none;color:var(--reader-muted);font-family:Manrope,Microsoft YaHei,PingFang SC,sans-serif;font-size:13px;cursor:pointer;text-decoration:underline;text-decoration-color:var(--reader-border);text-underline-offset:4px;transition:color var(--duration-fast) var(--ease-out)}.article-content .article-fault-back:hover{color:var(--reader-link);text-decoration-color:currentColor}.article-content .article-fault-retry:focus-visible,.article-content .article-fault-back:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--color-highlight) 40%,transparent)}@media(prefers-reduced-motion:reduce){.article-content .article-skeleton{animation:none;opacity:.7}.article-content .skeleton-mark{animation:none;transform:scaleX(1)}}.article-content{min-width:0;overflow-wrap:anywhere}.article-content h2,.article-content h3{margin:46px 0 16px;scroll-margin-top:92px;color:var(--reader-text);font-family:Georgia,Songti SC,serif;font-weight:400}.article-content h3{font-size:23px}.article-content p,.article-content li{color:var(--reader-body);font-size:17px;line-height:1.88}.article-content ul,.article-content ol{margin:18px 0 24px;padding-left:24px}.article-content li+li{margin-top:7px}.article-content a{color:var(--reader-link);text-decoration-thickness:1px;text-underline-offset:3px;transition:text-decoration-thickness var(--duration-fast) ease,color var(--duration-fast) ease}.article-content a:hover{text-decoration-thickness:2px}.article-content blockquote{margin:30px 0;border-left:2px solid var(--reader-quote-border);padding:19px 22px;background:var(--reader-quote-bg);color:var(--reader-body);font-size:17px;line-height:1.82}.article-content blockquote p{margin:0;color:inherit;font-size:inherit;line-height:inherit}.article-content pre{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;margin:28px 0;border:1px solid var(--reader-code-border);padding:19px;background:var(--reader-code-bg);color:var(--reader-code-text);font:14px/1.72 DM Mono,monospace}.article-content .code-block{position:relative}.article-content .code-block>pre{padding-top:40px}.article-content .code-lang{position:absolute;top:9px;left:19px;height:23px;line-height:23px;max-width:calc(100% - 100px);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:color-mix(in srgb,var(--reader-muted) 76%,var(--reader-code-text));font:10px/23px DM Mono,monospace;letter-spacing:.09em;pointer-events:none;-webkit-user-select:none;user-select:none}.code-copy{position:absolute;top:9px;right:9px;display:inline-flex;align-items:center;gap:5px;height:23px;border:1px solid var(--reader-code-border);border-radius:4px;padding:0 8px 0 7px;background:var(--reader-surface);color:var(--reader-muted);cursor:pointer;font:9px/1 DM Mono,Microsoft YaHei,PingFang SC,monospace;letter-spacing:.03em;opacity:.86;transition:opacity .16s ease,color .16s ease,border-color .16s ease}.code-copy-icon{width:10px;height:10px;flex:none}.code-copy-label{position:relative;top:1px}.code-copy:hover,.code-copy:focus-visible{opacity:1;border-color:var(--reader-accent);color:var(--reader-text)}.code-copy[data-state=copied]{opacity:1;border-color:var(--reader-accent);color:var(--reader-accent)}.code-copy[data-state=failed]{opacity:1;border-color:var(--coral);color:var(--coral)}.diagram{position:relative;max-width:100%;margin:28px 0}.diagram>.mermaid-diagram{margin:0}.mermaid-diagram{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;border:1px solid var(--reader-border);padding:42px 22px 22px;background:var(--reader-subtle)}.mermaid-diagram .diagram-light{display:block}.mermaid-diagram .diagram-dark,.night-mode .mermaid-diagram .diagram-light{display:none}.night-mode .mermaid-diagram .diagram-dark{display:block}.diagram-stage{width:calc(100% * var(--diagram-zoom, 1))}.diagram-stage svg{display:block;width:100%;min-width:calc(420px * var(--diagram-zoom, 1));max-width:calc(var(--diagram-natural, 100%) * var(--diagram-zoom, 1))!important;height:auto;margin:0 auto}.diagram-tools{position:absolute;top:9px;right:9px;z-index:2;display:flex;align-items:center;gap:4px}.diagram-tools button{display:inline-flex;align-items:center;justify-content:center;height:23px;min-width:23px;padding:0 6px;border:1px solid color-mix(in srgb,var(--reader-muted) 70%,var(--reader-border));border-radius:4px;background:var(--reader-surface);box-shadow:0 1px 2px color-mix(in srgb,var(--reader-text) 10%,transparent);color:var(--reader-muted);cursor:pointer;font:12px/1 DM Mono,monospace;letter-spacing:.04em;opacity:.9;transition:opacity .16s ease,color .16s ease,border-color .16s ease}.diagram-tools button:hover:not(:disabled),.diagram-tools button:focus-visible{opacity:1;border-color:var(--reader-accent);color:var(--reader-text)}.diagram-tools button:disabled{opacity:.34;cursor:default}.diagram-zoom-level{min-width:46px;font-size:10px}.diagram-zoom-level[data-at-default=true]{color:color-mix(in srgb,var(--reader-muted) 72%,var(--reader-code-text))}.diagram-tool-icon{display:block;width:12px;height:12px}.diagram-viewer{position:fixed;inset:0;z-index:120;display:flex;padding:clamp(10px,2.4vw,28px);background:#0a0e0cb8}.diagram-viewer[hidden]{display:none}.diagram-viewer .diagram{flex:1;min-width:0;margin:0;display:flex;flex-direction:column}.diagram-viewer .mermaid-diagram{flex:1;min-height:0;display:flex;overflow:auto;background:var(--reader-canvas)}.diagram-viewer .diagram-stage{flex:none;width:calc(100% * var(--diagram-zoom, 1));margin:auto 0}.diagram-viewer .diagram-stage svg{min-width:calc(420px * var(--diagram-zoom, 1));max-width:calc(100% * var(--diagram-zoom, 1))!important}body.diagram-viewer-open{overflow:hidden}.article-content pre.shiki{max-width:100%;overflow-x:auto;overscroll-behavior-x:contain;margin:0;border:0;padding:19px;background:var(--reader-code-bg);color:var(--reader-code-text);font:14px/1.72 DM Mono,monospace}.article-content .code-block>pre.shiki{padding-top:40px}.night-mode .article-content pre.shiki{background-color:var(--shiki-dark-bg, var(--reader-code-bg))!important;color:var(--shiki-dark, var(--reader-code-text))!important}.night-mode .article-content pre.shiki span{color:var(--shiki-dark, inherit)!important}.article-content pre.mermaid-error{border-color:var(--coral)}.diagram-note{display:block;margin:-5px 0 12px;color:var(--coral);font:10px DM Mono,Microsoft YaHei,PingFang SC,monospace}.article-content code{font-family:DM Mono,Microsoft YaHei,PingFang SC,monospace;font-size:.9em}.article-content :not(pre)>code{padding:2px 5px;border-radius:3px;background:color-mix(in srgb,var(--reader-code-bg) 82%,var(--reader-code-border));color:var(--reader-code-text)}.article-content h1 code,.article-content h2 code,.article-content h3 code,.article-content h4 code{padding:0;background:none;font-size:1em;color:color-mix(in srgb,var(--reader-code-text) 78%,var(--reader-text))}.article-content img{display:block;max-width:100%;height:auto;margin:28px auto}.article-content hr{margin:40px 0;border:0;border-top:1px solid var(--reader-border)}.article-content table{display:block;width:100%;max-width:100%;margin:25px 0;overflow-x:auto;overscroll-behavior-x:contain;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}.article-content th,.article-content td{border-bottom:1px solid var(--reader-border);padding:11px 9px;color:var(--reader-body);text-align:left}.article-content th{background:var(--reader-table-head);color:var(--reader-text);font-weight:700}.article-content strong{color:var(--reader-text)}.article-content :is(h4,h5,h6){margin:32px 0 12px;scroll-margin-top:92px;color:var(--reader-text)}@media(max-width:720px){.article-content p,.article-content li,.article-content blockquote{font-size:16px;line-height:1.85}.article-content pre,.article-content table{font-size:13px}}.site-footer{margin-top:56px;border-top:1px solid var(--line);background:var(--surface)}.footer-inner{display:grid;gap:26px;padding-top:40px;padding-bottom:34px}.footer-colophon{display:flex;flex-wrap:wrap;gap:26px 60px;align-items:flex-start;justify-content:space-between}.footer-wordmark{color:var(--ink);font:20px Georgia,Songti SC,serif}.footer-wordmark i{margin-left:8px;color:var(--soft);font:12px DM Mono,Microsoft YaHei,monospace;font-style:normal;letter-spacing:.14em}.footer-brand p{max-width:420px;margin:10px 0 0;color:var(--muted);font-size:14px;line-height:1.75}.footer-nav{display:flex;flex-wrap:wrap;gap:8px 26px}.footer-nav button{border:0;padding:2px 0;background:transparent;color:var(--muted);font-size:14px;cursor:pointer;transition:color var(--duration-fast) var(--ease-out)}.footer-nav button:hover,.footer-nav button:focus-visible{color:var(--ink)}.footer-legal{display:flex;flex-wrap:wrap;gap:6px 22px;padding-top:18px;border-top:1px solid var(--line);color:var(--soft);font-size:13px}.footer-legal a{color:var(--soft);text-decoration:none}.footer-legal a:hover,.footer-legal a:focus-visible{color:var(--ink);text-decoration:underline}@media(max-width:720px){.footer-colophon{flex-direction:column;gap:22px}}.legal-page{max-width:760px;margin:0 auto}.legal-head{padding:64px 0 30px;border-bottom:1px solid var(--line)}.legal-head h1{margin:16px 0 0;font:400 clamp(28px,4vw,40px) Georgia,"Songti SC",serif;line-height:1.2}.legal-lede{max-width:620px;margin:16px 0 0;color:var(--muted);font-size:15px;line-height:1.85}.legal-updated{display:inline-block;margin-top:18px;color:var(--soft);font:11px DM Mono,Microsoft YaHei,monospace;letter-spacing:.08em}.legal-body{padding:14px 0 30px}.legal-section{padding:22px 0;border-bottom:1px solid var(--line)}.legal-section:last-child{border-bottom:0}.legal-section h2{margin:0 0 12px;font:400 19px Georgia,Songti SC,serif}.legal-section p{margin:10px 0;color:var(--muted);font-size:14.5px;line-height:1.9}.legal-section ul{margin:10px 0;padding-left:20px}.legal-section li{margin:8px 0;color:var(--muted);font-size:14.5px;line-height:1.85}.legal-section li::marker{color:var(--color-highlight)}.learning-bookmark{display:inline-flex;align-items:center;gap:6px;color:var(--muted)}.bookmark-ribbon{width:10px;height:13px;flex:none;color:var(--color-highlight)}.learning-arrow{white-space:nowrap;font-size:13px;color:var(--soft)}.learning-row:hover .learning-arrow,.learning-row:focus-visible .learning-arrow{color:var(--ink)}.bookmark-line{margin:14px 0 0;color:var(--soft);font-size:13px}.bookmark-line:before{content:"";display:inline-block;width:8px;height:11px;margin-right:7px;background:var(--color-highlight);clip-path:polygon(0 0,100% 0,100% 100%,50% 74%,0 100%)}.reader-fab-group{position:fixed;right:max(18px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom));z-index:30;display:flex;flex-direction:column;gap:10px}.reader-fab{position:relative;width:44px;height:44px;display:grid;place-items:center;border:1px solid var(--reader-border);background:var(--reader-surface);color:var(--reader-body);cursor:pointer;box-shadow:3px 3px #0a0f0c29;transition:transform var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.reader-fab:hover,.reader-fab:focus-visible{color:var(--reader-text);transform:translateY(-2px)}.reader-fab.active{color:var(--reader-accent);border-color:var(--reader-accent)}.reader-fab[aria-hidden=true]{opacity:0;transform:translateY(10px);pointer-events:none}.reader-fab-badge{position:absolute;top:-7px;right:-7px;min-width:18px;height:18px;padding:0 5px;display:grid;place-items:center;background:var(--coral);color:#20130f;font-size:11px;font-weight:700;line-height:1;border-radius:999px}.comments-backdrop{position:fixed;z-index:40;inset:0;display:flex;justify-content:flex-end}.comments-backdrop:before{content:"";position:fixed;z-index:-1;inset:0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.comments-backdrop:after{content:"";position:fixed;z-index:-1;inset:0;background:#0c120f66;animation:backdrop-fade var(--duration-normal) var(--ease-out) both}.comments-backdrop.is-closing:after{animation:backdrop-fade var(--duration-normal) var(--ease-out) reverse both}.comments-sheet{width:min(430px,100%);height:100%;display:flex;flex-direction:column;background:var(--reader-canvas);color:var(--reader-text);border-left:1px solid var(--reader-border);animation:comments-slide-in var(--duration-slow) var(--ease-out) both}.comments-backdrop.is-closing .comments-sheet{animation:comments-slide-in var(--duration-normal) var(--ease-out) reverse both}@keyframes comments-slide-in{0%{transform:translate(48px);opacity:0}}@media(max-width:720px){.comments-backdrop{justify-content:center;align-items:flex-end}.comments-sheet{width:100%;height:min(82svh,640px);border-left:0;border-top:1px solid var(--reader-border);animation-name:comments-rise-in}.comments-backdrop.is-closing .comments-sheet{animation-name:comments-rise-in}}@keyframes comments-rise-in{0%{transform:translateY(56px);opacity:0}}.comments-heading{flex:none;display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:22px 22px 14px;border-bottom:1px solid var(--reader-border)}.comments-heading h2{margin:6px 0 0;font-size:20px}.comments-heading button{flex:none;width:32px;height:32px;display:grid;place-items:center;border:1px solid var(--reader-border);background:transparent;color:var(--reader-muted);font-size:17px;cursor:pointer}.comments-heading button:hover{color:var(--reader-text)}.comments-list{flex:1 1 auto;min-height:0;overflow-y:auto;padding:6px 22px 16px}.comments-status{padding:22px 0;color:var(--reader-muted);font-size:14px}.comment-item{display:flex;gap:12px;padding:16px 0;border-bottom:1px solid var(--reader-subtle)}.comment-item:last-child{border-bottom:0}.comment-avatar{flex:none;width:32px;height:32px;display:grid;place-items:center;background:var(--reader-subtle);border:1px solid var(--reader-border);color:var(--reader-accent);font-size:14px;font-weight:700;border-radius:999px}.comment-item.mine .comment-avatar{background:var(--reader-accent);border-color:var(--reader-accent);color:var(--reader-canvas)}.comment-main{flex:1 1 auto;min-width:0}.comment-main header{display:flex;align-items:baseline;gap:8px}.comment-main strong{font-size:13.5px;color:var(--reader-text)}.comment-main time{font-size:12px;color:var(--reader-muted)}.comment-main p{margin:6px 0 0;color:var(--reader-body);font-size:14.5px;line-height:1.65;overflow-wrap:anywhere;white-space:pre-wrap}.comment-delete{margin-left:auto;border:0;background:transparent;color:var(--reader-muted);font-size:12px;cursor:pointer;padding:2px 4px}.comment-delete:hover,.comment-delete:focus-visible{color:var(--coral)}.comment-delete.confirm{color:var(--coral);font-weight:600;text-decoration:underline}.comments-composer{flex:none;padding:14px 22px calc(18px + env(safe-area-inset-bottom));border-top:1px solid var(--reader-border);background:var(--reader-surface)}.comments-composer textarea{width:100%;min-height:84px;max-height:200px;padding:10px 12px;border:1px solid var(--reader-border);background:var(--reader-canvas);color:var(--reader-text);font:inherit;font-size:14.5px;line-height:1.6;resize:vertical}.comments-composer textarea:focus-visible{outline:2px solid var(--reader-accent);outline-offset:1px}.comments-composer-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:10px}.comment-count-hint{font-size:12px;color:var(--reader-muted)}.comments-login-hint p{margin:0 0 12px;color:var(--reader-muted);font-size:14px}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media(prefers-reduced-motion:reduce){.comments-sheet,.comments-backdrop.is-closing .comments-sheet,.comments-backdrop:after,.comments-backdrop.is-closing:after,.reader-fab,.reader-fab[aria-hidden=true]{animation:none;transition:none}}
