@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;--anno-quote-bg: rgba(231, 184, 82, .26);--anno-quote-strong: #8a6a1f;--anno-saved-bg: rgba(95, 142, 117, .16);--anno-saved-strong: #3c6b52;--anno-p0-bg: var(--anno-quote-bg);--anno-p0-strong: var(--anno-quote-strong);--anno-p1-bg: rgba(96, 148, 199, .24);--anno-p1-strong: #35618e;--anno-p2-bg: rgba(224, 122, 95, .24);--anno-p2-strong: #9c4a2c;--anno-p3-bg: rgba(152, 124, 196, .24);--anno-p3-strong: #5a3f92;--anno-p4-bg: rgba(78, 160, 148, .24);--anno-p4-strong: #23685d;--anno-p5-bg: rgba(196, 110, 150, .24);--anno-p5-strong: #8f3a68}.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;--anno-quote-bg: rgba(211, 178, 96, .22);--anno-quote-strong: #d9c07a;--anno-saved-bg: rgba(127, 179, 152, .14);--anno-saved-strong: #8fc0a6;--anno-p0-bg: var(--anno-quote-bg);--anno-p0-strong: var(--anno-quote-strong);--anno-p1-bg: rgba(118, 164, 206, .22);--anno-p1-strong: #8fb7dd;--anno-p2-bg: rgba(223, 140, 115, .22);--anno-p2-strong: #dfa48c;--anno-p3-bg: rgba(165, 139, 206, .22);--anno-p3-strong: #bba3dd;--anno-p4-bg: rgba(109, 179, 166, .22);--anno-p4-strong: #8ec7ba;--anno-p5-bg: rgba(206, 127, 167, .22);--anno-p5-strong: #d9a0c0}*{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;-webkit-tap-highlight-color:transparent}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);text-shadow:none}.night-mode ::selection{background:color-mix(in srgb,var(--coral) 32%,transparent);color:var(--ink);text-shadow:none}::-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}.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);border-radius:10px;background:color-mix(in srgb,var(--surface) 80%,transparent);transition:border-color var(--duration-fast) var(--ease-out),background-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.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:hover{border-color:color-mix(in srgb,var(--ink) 22%,var(--line))}.mini-search:focus-within{border-color:color-mix(in srgb,var(--ink) 38%,var(--line));background:var(--surface);box-shadow:0 0 0 3px color-mix(in srgb,var(--ink) 7%,transparent)}.mini-search input:focus-visible{outline:0;box-shadow:none}.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{width:44px;height:44px;display:grid;place-items:center;border:0;background:transparent;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;color:var(--muted)}.session-button{display:inline-flex;align-items:center;justify-content:center;gap:7px;flex:none;height:38px;padding:0 15px;border:1px solid color-mix(in srgb,var(--ink) 30%,transparent);border-radius:999px;background:transparent;color:var(--ink);font:11px DM Mono,monospace;letter-spacing:.12em;white-space:nowrap;cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.session-button svg{display:block;flex:none}.session-button:hover,.session-button:focus-visible{background:var(--dark);border-color:var(--dark);color:var(--acid)}.session-button-ghost{border-color:transparent;color:var(--muted)}.session-button-ghost:hover,.session-button-ghost:focus-visible{background:transparent;border-color:transparent;color:var(--ink)}.session-button-pending{width:86px;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}.compact-button{min-height:30px;padding:5px 14px;border:1px solid transparent;border-radius:8px;background:var(--reader-accent);color:#fff;font-weight:600;cursor:pointer;font-size:12.5px;transition:background var(--duration-fast) var(--ease-out)}.compact-button:hover{background:color-mix(in srgb,var(--reader-accent) 86%,#1a201c)}.compact-button:active{transform:scale(.98)}.compact-button:focus-visible{outline:2px solid color-mix(in srgb,var(--reader-accent) 55%,transparent);outline-offset:1px}.compact-button:disabled{cursor:not-allowed;opacity:.52;transform:none}.reader-mode.night-mode .compact-button{color:#1b201d}.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{position:relative;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);overflow-x:clip}.hero-curve{position:absolute;right:-6%;bottom:-4%;width:min(72vw,980px);height:auto;pointer-events:none;z-index:0}.hero-curve path{fill:none;stroke:color-mix(in srgb,var(--ink) 6%,transparent);stroke-width:2}.hero-curve circle{fill:color-mix(in srgb,var(--coral) 26%,transparent)}.home-hero>*:not(.hero-curve){position:relative;z-index:1}.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}.recommend-strip{margin-top:26px}.strip-label{margin:0 0 12px;color:var(--soft);font:10px DM Mono,monospace;letter-spacing:.08em}.recommend-grid{display:grid;grid-template-columns: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{scroll-snap-align:none}.home-page>section.section-tree{scroll-snap-align:start}.home-page>section.section-tree .curriculum-section{scroll-snap-align:start;scroll-margin-top:20px}.home-page>section.principles-strip{scroll-snap-align:end}@media(min-width:901px)and (orientation:landscape)and (min-height:520px)and (max-height:1200px){.home-page>section.manifesto,.home-page>section.featured-band{position:relative}.home-page>section.manifesto:after,.home-page>section.manifesto>.manifesto-columns:after,.home-page>section.featured-band:before,.home-page>section.featured-band:after{content:"";position:absolute;left:0;width:1px;height:0;scroll-snap-align:start;pointer-events:none}.home-page>section.manifesto:after,.home-page>section.featured-band:before{top:33.333%}.home-page>section.manifesto>.manifesto-columns:after,.home-page>section.featured-band:after{top:66.667%}}.route-stage-home .home-page{padding-bottom:0}.route-stage-home+.site-footer{margin-top:0;scroll-snap-align:end}@media(max-width:900px),(orientation:portrait),(max-height:519px),(min-height:1201px),(prefers-reduced-motion:reduce){html.home-snap{scroll-snap-type:none}}@media(min-width:901px)and (orientation:portrait),(min-width:901px)and (max-height:519px),(min-width:901px)and (min-height:1201px){.home-hero,.home-page>.manifesto,.home-page>.featured-band,.home-page>.principles-strip{min-height:0}}.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)}}@keyframes curtain-fade{0%{opacity:0}to{opacity:1}}.home-page .section-title>div,.home-page .manifesto-lede,.home-page .manifesto-col,.home-page .manifesto-close,.home-page .feature-card,.home-page .small-course-stack>*,.home-page .recommend-grid>*,.home-page .principles-strip>div{animation:curtain-rise linear both;animation-timeline:view();animation-range:entry 12% entry 48%}.home-page .curriculum-section{animation:curtain-fade 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}.search-term{overflow-wrap:anywhere}.search-subline{margin:10px 0 0;color:var(--muted);font-size:14px}.search-subline .text-button{font-size:inherit}.facet-row{display:flex;gap:6px;flex-wrap:wrap;margin:26px 0 8px}.facet-row button{min-height:36px;padding:6px 12px;display:inline-flex;align-items:center;gap:6px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--muted);cursor:pointer;font-size:12.5px;transition:border-color .14s ease,background-color .14s ease,color .14s ease}.facet-row button em{color:var(--soft);font:10px DM Mono,monospace;font-style:normal}.facet-row button:hover{color:var(--ink);background:var(--surface)}.facet-row button.active{border-color:color-mix(in srgb,var(--acid) 70%,var(--line));background:color-mix(in srgb,var(--acid) 18%,var(--surface));color:var(--ink)}.search-courses{margin-top:46px}.search-courses .explore-grid{margin-top:18px}.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,.skeleton-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}.search-hit{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}.search-skeleton .section-count,.skeleton-bar,.skeleton-big-count{background:var(--surface-alt);border-radius:3px;animation:pending-pulse 1.4s var(--ease-out) infinite}.search-skeleton .section-count{display:block;width:58px;height:10px}.skeleton-big-count{display:block;width:46px;height:37px;margin-bottom:2px}.skeleton-bar{display:block}.skeleton-hit-number{width:20px;height:10px}.skeleton-hit-copy{display:grid;gap:6px;min-width:0}.skeleton-hit-title{width:58%;height:13px}.skeleton-hit-meta{width:34%;height:8px}.skeleton-hit-excerpt{width:86%;height:10px}.skeleton-hit-arrow{width:12px;height:12px;justify-self:end}.skeleton-card{min-height:276px;display:flex;flex-direction:column;padding:18px;border:1px solid var(--line);border-top:3px solid color-mix(in srgb,var(--ink) 12%,transparent);background:var(--surface);position:relative;overflow:hidden}.skeleton-card>.explore-card-top{min-height:40px;align-items:center}.skeleton-card-index{width:22px;height:10px}.skeleton-card-star{width:14px;height:14px}.skeleton-card-kind{width:96px;height:10px;margin:0 0 8px}.skeleton-card-title{width:78%;height:26px;margin:8px 0 10px}.skeleton-card-sub{width:92%;height:12px;margin-bottom:8px}.skeleton-bar-short{width:62%}.skeleton-card-meta{width:84px;height:9px}.skeleton-card-open{width:56px;height:11px}.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 6px 2px;border:1px solid color-mix(in srgb,var(--accent) 50%,transparent);outline:1px solid color-mix(in srgb,var(--accent) 30%,transparent);outline-offset:2px;color:color-mix(in srgb,var(--accent) 72%,var(--ink));font:9px DM Mono,monospace;letter-spacing:.22em;text-indent:.22em}.explore-card.is-private{background:color-mix(in srgb,var(--accent) 5%,var(--surface));outline:1px solid color-mix(in srgb,var(--accent) 30%,transparent);outline-offset:3px}.explore-card.is-private:hover{background:color-mix(in srgb,var(--accent) 9%,var(--surface))}.course-row.is-private{background:color-mix(in srgb,var(--accent) 4%,var(--surface))}.explore-card .private-seal{position:absolute;right:12px;top:42px;padding:4px 9px 3px;border:1px solid color-mix(in srgb,var(--accent) 55%,transparent);outline:1px solid color-mix(in srgb,var(--accent) 40%,transparent);outline-offset:2px;color:color-mix(in srgb,var(--accent) 76%,var(--ink));font:10px/1 DM Mono,monospace;letter-spacing:.2em;text-indent:.2em;transform:rotate(-7deg);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}.uid-badge{display:inline-flex;align-items:center;gap:6px;margin-top:14px;padding:5px 12px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font:11px DM Mono,monospace;letter-spacing:.04em;cursor:pointer;transition:border-color .15s ease,color .15s ease}.uid-badge:hover{border-color:var(--coral);color:var(--ink)}.uid-badge:active{transform:translateY(1px)}.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):not(.activity-block){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 .hover-tip-anchor{flex:1;display:block;height:100%}.weekly-bars i{width:100%;height:16px;display:block;background:var(--line);opacity:.9;transform-origin:bottom;animation:none}.weekly-bars i.active{height:var(--bar-h, 58%);background:var(--coral);opacity:.82}.weekly-bars i.active.l1{background:color-mix(in srgb,var(--coral) 38%,var(--surface-alt))}.weekly-bars i.active.l2{background:color-mix(in srgb,var(--coral) 70%,transparent)}.weekly-bars i[data-today]{outline:1px solid color-mix(in srgb,var(--ink) 35%,transparent);outline-offset:1px}.activity-block{min-width:0}.activity-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.activity-head .overline{margin-bottom:17px}.activity-expand{border:0;background:transparent;padding:2px 0;color:var(--soft);font:10px DM Mono,monospace;letter-spacing:.08em;cursor:pointer;border-bottom:1px solid transparent;touch-action:manipulation}.activity-expand:hover,.activity-expand.active{color:var(--ink);border-bottom-color:var(--line)}.activity-today{margin:8px 0 0;color:var(--muted);font-size:11px}.reading-heatmap{display:grid;grid-template-columns:repeat(15,1fr);gap:5px;margin-top:18px}.reading-heatmap .hover-tip-anchor{display:block}.heat-cell{display:block;width:100%;aspect-ratio:1;background:var(--surface-alt);border-radius:2px}.heat-cell.l1{background:color-mix(in srgb,var(--coral) 38%,var(--surface-alt))}.heat-cell.l2{background:color-mix(in srgb,var(--coral) 70%,transparent)}.heat-cell.l3{background:var(--coral)}.heat-cell[data-today]{outline:1px solid color-mix(in srgb,var(--ink) 35%,transparent);outline-offset:1px}.heatmap-legend{grid-column:1 / -1;display:flex;align-items:center;gap:6px;margin-top:4px;color:var(--soft);font:10px DM Mono,monospace}.heatmap-legend .heat-cell{width:10px;flex:none}.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{position:relative;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}.learning-row:before{content:"";position:absolute;left:0;top:50%;width:2px;height:30px;background:var(--row-accent, var(--accent));transform:translateY(-50%) scaleY(0);transition:transform var(--duration-fast) var(--ease-out)}.learning-row:hover:before,.learning-row:focus-visible:before{transform:translateY(-50%) scaleY(1)}.learning-row:hover .learning-icon,.learning-row:hover .learning-copy{transform:translate(4px)}.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;transition:transform var(--duration-fast) var(--ease-out)}.learning-copy{display:grid;flex:1 1 220px;min-width:0;gap:3px;transition:transform var(--duration-fast) var(--ease-out)}.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:0 1 150px;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{position:relative;isolation:isolate;display:inline-flex;align-items:center;gap:5px;border:0;padding:0 8px;margin-left:-8px;background:transparent;color:var(--muted);cursor:pointer;min-height:44px;font-size:13px;transition:color var(--duration-fast) var(--ease-out)}.back-link:after{content:"";position:absolute;inset:0;margin:auto 0;height:26px;border-radius:2px;background:transparent;transition:background-color var(--duration-fast) var(--ease-out);z-index:-1}.back-link-mark{display:inline-block;flex:0 0 auto;line-height:1;transition:transform var(--duration-fast) var(--ease-out)}.back-link:hover{color:var(--ink)}.back-link:hover:after{background:color-mix(in srgb,var(--ink) 6%,transparent)}.back-link:hover .back-link-mark{transform:translate(-2px)}.back-link:active:after{background:color-mix(in srgb,var(--ink) 10%,transparent)}.back-link:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in srgb,var(--highlight) 34%,transparent)}@media(prefers-reduced-motion:reduce){.back-link-mark{transition:none}.back-link:hover .back-link-mark{transform:none}}.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:12px}.reader-back-group .back-link-label{max-width:min(420px,42vw);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-clock{font-variant-numeric:tabular-nums;white-space:nowrap}.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:0;padding:0;background:transparent;color:var(--reader-text);border-radius:8px;cursor:pointer;transition:background var(--duration-fast) var(--ease-out)}.reader-theme-button:hover,.reader-theme-button:focus-visible{background:color-mix(in srgb,var(--reader-text) 9%,transparent)}.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}.settings-dialog{width:min(100%,460px);max-height:min(84vh,640px);overflow-y:auto}.settings-dialog h2{margin-bottom:4px;font-size:24px}.settings-group{margin-top:22px}.settings-group-label{margin-bottom:4px;color:#6f7771;font-size:11px;font-weight:600;letter-spacing:.1em}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid #e3e8e3}.settings-row:last-child{border-bottom:0}.settings-row-text{min-width:0}.settings-row-text span{display:block;font-size:14px}.settings-row-text small{display:block;margin-top:3px;color:#6f7771;font-size:12px;line-height:1.55}.settings-switch{appearance:none;border:0;background:transparent;padding:4px;cursor:pointer;flex:none;-webkit-tap-highlight-color:transparent}.settings-switch-track{display:block;width:34px;height:20px;border-radius:999px;background:#c3cbc5;position:relative;transition:background var(--duration-fast) var(--ease-out)}.settings-switch-track i{position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fbfcf9;box-shadow:0 1px 2px #0a0f0c40;transition:transform var(--duration-fast) var(--ease-out)}.settings-switch[aria-checked=true] .settings-switch-track{background:var(--dark)}.settings-switch[aria-checked=true] .settings-switch-track i{transform:translate(14px)}.settings-switch:focus-visible{outline:2px solid #ed947f;outline-offset:2px;border-radius:999px}.settings-segment{display:inline-flex;flex:none;border:1px solid #d7dfd9;border-radius:999px;background:#eef1ec;padding:2px}.settings-segment button{appearance:none;border:0;background:transparent;padding:4px 10px;border-radius:999px;color:#6f7771;font-size:12px;white-space:nowrap;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.settings-segment button.active{background:var(--dark);color:var(--acid)}.settings-menu-fixed{margin:10px 0 2px;color:#6f7771;font-size:12px}.settings-engine-row{flex-wrap:wrap}.settings-custom-engine{margin:4px 0 10px}.settings-custom-engine small{display:block;margin-top:4px;color:#6f7771;font-size:12px}.settings-password{display:grid;gap:10px;margin-top:8px}.settings-account-actions{display:flex;align-items:center;gap:14px;margin-top:2px}.settings-logout{appearance:none;border:0;background:transparent;padding:4px 2px;color:#6f7771;font-size:13px;cursor:pointer;transition:color var(--duration-fast) var(--ease-out)}.settings-logout:hover{color:#b0552f}.settings-account-anon{margin-top:8px}.settings-account-anon p{margin-bottom:12px;color:#6f7771;font-size:13px;line-height:1.7}.settings-done{margin-top:8px;padding:10px 12px;border-left:3px solid #4f8169;background:#eef4ee;color:#2c4738;font-size:13px;line-height:1.7}.settings-close{margin-top:20px}.learning-app.night-mode .settings-group-label,.learning-app.night-mode .settings-row-text small,.learning-app.night-mode .settings-menu-fixed,.learning-app.night-mode .settings-custom-engine small,.learning-app.night-mode .settings-account-anon p,.learning-app.night-mode .settings-logout{color:#99a09a}.learning-app.night-mode .settings-row{border-bottom-color:#3f4640}.learning-app.night-mode .settings-switch-track{background:#3f4640}.learning-app.night-mode .settings-switch-track i{background:#202522}.learning-app.night-mode .settings-segment{background:#262b27;border-color:#3f4640}.learning-app.night-mode .settings-segment button{color:#99a09a}.learning-app.night-mode .settings-segment button.active{background:#92cbb2;color:#141b17}.learning-app.night-mode .settings-done{background:#243028;color:#a8cbb2;border-left-color:#4f8169}.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}.notice{display:flex;align-items:center;gap:8px;padding:10px 14px;border:1px solid var(--notice-line);border-radius:2px;background:var(--notice-surface);color:var(--notice-ink);font:11px DM Mono,monospace;max-width:min(520px,calc(100vw - 40px));box-shadow:0 1px 2px var(--notice-shadow-near),0 10px 24px var(--notice-shadow)}.notice:before{content:"";flex:0 0 auto;width:5px;height:5px;border-radius:50%;background:var(--notice-accent)}.notice.error:before{box-shadow:0 0 0 2.5px color-mix(in srgb,var(--notice-accent) 30%,transparent)}.learning-app{--notice-surface: var(--surface);--notice-ink: var(--ink);--notice-line: var(--line);--notice-accent: var(--coral);--notice-shadow-near: color-mix(in srgb, var(--ink) 6%, transparent);--notice-shadow: color-mix(in srgb, var(--ink) 14%, transparent)}.learning-app.night-mode{--notice-surface: var(--surface-alt);--notice-ink: var(--acid);--notice-line: var(--color-border);--notice-shadow-near: transparent;--notice-shadow: rgba(0, 0, 0, .45)}.toast{position:fixed;z-index:150;left:50%;bottom:25px;transform:translate(-50%);animation:toast-in var(--duration-normal) var(--ease-out) both,toast-nudge .46s ease-in-out .3s 1}@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{flex:0 0 auto;width:44px;height:44px}.session-button{flex:0 0 auto;height:38px}.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,.recommend-grid{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-label{max-width:180px}.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,.footer-nav a{border:0;padding:2px 0;background:transparent;color:var(--muted);font-size:14px;cursor:pointer;text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}.footer-nav button:hover,.footer-nav button:focus-visible,.footer-nav a:hover,.footer-nav a: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;max-width:100%;min-width:0;color:var(--muted)}.learning-bookmark-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bookmark-ribbon{width:10px;height:13px;flex:none;color:var(--color-highlight)}.bookmark-info{display:inline-flex;flex:none;color:var(--soft);cursor:help}.bookmark-item .learning-row{display:flex;align-items:center;gap:16px}.bookmark-jump{flex:1;min-width:0;display:flex;align-items:center;gap:16px;padding:0;border:0;background:transparent;text-align:left;cursor:pointer;font:inherit;color:inherit;touch-action:manipulation}.bookmark-label-chip{display:inline-block;padding:1px 7px;border-radius:999px;font:10px DM Mono,monospace}.bookmark-meta{flex:none;display:grid;gap:2px;justify-items:end;color:var(--soft);font:10px DM Mono,monospace}.bookmark-meta .bookmark-jump-hint{font-style:normal;color:var(--soft);transition:color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.bookmark-jump:hover .bookmark-jump-hint{color:var(--coral);transform:translate(3px)}.mark-row .learning-icon{background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent)}.mark-row-quote{margin:0;color:var(--ink);font:italic 13.5px Georgia,Songti SC,serif}.mark-row small{color:var(--soft);font:10px DM Mono,monospace}.mark-row-note{color:var(--muted);font:10px DM Mono,monospace}.bookmark-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:2px 0 14px}.bookmark-filter-chip{display:inline-flex;align-items:center;gap:5px;padding:3px 11px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--soft);font:11px DM Mono,monospace;letter-spacing:.04em;cursor:pointer;touch-action:manipulation;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.bookmark-filter-chip em{font-style:normal;opacity:.65}.bookmark-filter-chip:hover{color:var(--ink);border-color:var(--soft)}.bookmark-filter-chip.active{background:var(--ink);border-color:var(--ink);color:var(--paper)}.bookmark-filter-info{display:inline-flex;color:inherit;opacity:.7;cursor:help}.bookmark-row-tools{flex:none;display:flex;align-items:center;gap:2px}.bookmark-tool.icon-tool{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--soft);cursor:pointer;touch-action:manipulation;transition:color var(--duration-fast) var(--ease-out),background var(--duration-fast) var(--ease-out)}.bookmark-tool.icon-tool:hover{color:var(--ink);background:color-mix(in srgb,var(--ink) 7%,transparent)}.bookmark-tool.icon-tool.is-danger:hover{color:var(--color-highlight);background:color-mix(in srgb,var(--color-highlight) 9%,transparent)}.bookmark-editor{display:grid;gap:12px;padding:14px 0 16px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--surface) 70%,transparent)}.bookmark-editor-field{display:flex;align-items:center;gap:12px;padding:0 16px}.bookmark-editor-field>span{flex:none;width:36px;color:var(--soft);font:10px DM Mono,monospace}.bookmark-editor-field input{flex:1;min-width:0;padding:6px 10px;border:1px solid var(--line);background:var(--paper);color:var(--ink);font:13px/1.4 inherit}.bookmark-editor-field input:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.bookmark-swatches{display:flex;flex-wrap:wrap;gap:8px}.bookmark-swatches.compact{gap:6px}.bookmark-swatch{width:22px;height:22px;border-radius:50%;border:2px solid transparent;cursor:pointer;touch-action:manipulation}.bookmark-swatches.compact .bookmark-swatch{width:19px;height:19px}.bookmark-swatch.active{border-color:var(--ink);box-shadow:inset 0 0 0 2px var(--paper)}.bookmark-swatch.custom{position:relative;display:inline-flex;align-items:center;justify-content:center;background:transparent;border:1px dashed var(--soft);color:var(--soft);overflow:hidden}.bookmark-swatch.custom.active{border-style:solid;border-color:var(--ink);color:transparent}.bookmark-swatch.custom input[type=color]{position:absolute;inset:-4px;width:calc(100% + 8px);height:calc(100% + 8px);opacity:0;cursor:pointer;border:0;padding:0}.bookmark-editor-actions{display:flex;justify-content:flex-end;align-items:center;gap:14px;padding:0 16px}.bookmark-picker{display:grid;gap:8px;padding:4px 6px 6px;min-width:216px;max-width:calc(100vw - 40px)}.bookmark-picker-title{margin:0;padding:2px 4px 0;font:10px DM Mono,monospace;letter-spacing:.1em;color:var(--reader-muted)}.bookmark-picker-list{display:flex;flex-wrap:wrap;gap:6px}.bookmark-picker-option{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border:1px solid var(--reader-border);border-radius:999px;background:transparent;color:var(--reader-body);font:inherit;font-size:12.5px;cursor:pointer;touch-action:manipulation;transition:background var(--duration-fast) var(--ease-out),border-color var(--duration-fast) var(--ease-out)}.bookmark-picker-option i{width:9px;height:9px;border-radius:50%;flex:none}.bookmark-picker-option:hover{background:var(--reader-subtle);border-color:var(--soft)}.bookmark-picker-actions{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:2px 4px}.bookmark-picker-create{border:0;background:transparent;padding:4px 2px;color:var(--reader-body);font:inherit;font-size:12.5px;cursor:pointer;text-decoration:underline dashed;text-underline-offset:3px;touch-action:manipulation}.bookmark-picker-create:hover{color:var(--reader-text)}.bookmark-picker-form{display:grid;gap:10px;padding:4px 6px 6px;min-width:232px;max-width:calc(100vw - 40px)}.bookmark-picker-form input{width:100%;padding:7px 10px;border:1px solid var(--reader-border);border-radius:8px;background:var(--reader-canvas);color:var(--reader-text);font:inherit;font-size:13px}.bookmark-picker-form input:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.bookmark-picker-actions .text-button,.selection-composer-actions .text-button,.mark-note-editor-actions .text-button{min-height:30px;padding:4px 0}.comment-reply-actions .comment-cancel{min-height:30px}.bookmark-search input{width:200px;padding:6px 10px;border:1px solid var(--line);background:var(--surface);color:var(--ink);font:12px/1.4 inherit}.bookmark-search input:focus-visible{outline:2px solid var(--color-accent);outline-offset:1px}.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{position:relative;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-sheet:focus{outline:none}.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}.sheet-close{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}.sheet-close: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}.comments-skeleton{padding:6px 0}.comments-skeleton-item{display:flex;gap:12px;padding:16px 0;border-bottom:1px solid var(--reader-subtle)}.comments-skeleton-avatar{flex:none;width:32px;height:32px;border-radius:50%;background:var(--reader-subtle);animation:comments-skeleton-pulse 1.4s ease-in-out infinite}.comments-skeleton-body{flex:1 1 auto;min-width:0;display:grid;gap:8px;align-content:start}.comments-skeleton-line{height:11px;border-radius:4px;background:var(--reader-subtle);animation:comments-skeleton-pulse 1.4s ease-in-out infinite}.comments-skeleton-line.short{height:9px}.comments-skeleton-item:nth-child(2) .comments-skeleton-line,.comments-skeleton-item:nth-child(2) .comments-skeleton-avatar{animation-delay:.18s}.comments-skeleton-item:nth-child(3) .comments-skeleton-line,.comments-skeleton-item:nth-child(3) .comments-skeleton-avatar{animation-delay:.36s}@keyframes comments-skeleton-pulse{0%,to{opacity:1}50%{opacity:.45}}@media(prefers-reduced-motion:reduce){.comments-skeleton-avatar,.comments-skeleton-line{animation:none}}.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:center;gap:8px;min-height:22px}.comment-main strong{font-size:13.5px;color:var(--reader-text)}.comment-main time{font-size:12px;color:var(--reader-muted)}.comment-actions{display:inline-flex;align-items:center;gap:2px;margin-left:auto}.hover-tip-anchor{display:inline-flex;align-items:center}.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{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;color:var(--reader-muted);font-size:12px;cursor:pointer;padding:3px 4px;border-radius:3px}.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%;height:96px;padding:12px 14px 36px;border:0;background:var(--reader-subtle);color:var(--reader-text);font:inherit;font-size:14.5px;line-height:1.6;border-radius:12px;resize:none;transition:height .32s var(--ease-out),box-shadow .18s var(--ease-out)}.comments-composer textarea:focus-visible,.comments-composer textarea:focus{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--reader-accent) 38%,transparent)}.comments-composer.is-expanded textarea{height:min(42svh,360px)}.comments-input-shell{position:relative}.comments-input-shell .hover-tip-anchor{font-size:0;line-height:0}.comments-composer-max{position:absolute;right:7px;bottom:7px;display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border:0;border-radius:8px;background:transparent;color:var(--reader-muted);cursor:pointer;transition:background .15s var(--ease-out),color .15s var(--ease-out)}.comments-composer-max:hover,.comments-composer-max:focus-visible{color:var(--reader-text);background:color-mix(in srgb,var(--reader-border) 42%,transparent)}.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-composer-tools{display:inline-flex;align-items:center;gap:10px}.comment-item{flex-wrap:wrap}.comment-reply{display:inline-flex;align-items:center;justify-content:center;padding:3px 4px;border:0;background:transparent;color:var(--reader-muted);cursor:pointer;border-radius:3px}.comment-reply:hover,.comment-reply:focus-visible,.comment-reply[aria-expanded=true]{color:var(--reader-accent)}.comment-replies{flex:1 0 100%;margin-top:10px;padding-left:16px;border-left:2px solid var(--reader-subtle)}.comment-item.is-reply{padding:10px 0;border-bottom:0;gap:10px}.comment-item.is-reply .comment-avatar{width:24px;height:24px;font-size:12px}.comment-item.is-reply .comment-main p{font-size:13.5px;margin-top:4px}.comment-replies-extra{display:grid;grid-template-rows:0fr;transition:grid-template-rows var(--duration-slow) var(--ease-out)}.comment-replies-extra.open{grid-template-rows:1fr}.comment-replies-extra-inner{min-height:0;overflow:hidden}.comment-replies-toggle{margin-top:6px;border:0;background:transparent;padding:2px 0;color:var(--reader-accent);font-size:12.5px;font-weight:600;cursor:pointer}.comment-replies-toggle:hover,.comment-replies-toggle:focus-visible{text-decoration:underline;text-underline-offset:3px}.comment-reply-composer{margin-top:8px}.comment-reply-composer textarea{width:100%;min-height:56px;max-height:160px;padding:8px 10px;border:1px solid var(--reader-border);background:var(--reader-canvas);color:var(--reader-text);font:inherit;font-size:13.5px;line-height:1.6;resize:vertical}.comment-reply-composer textarea:focus-visible{outline:2px solid var(--reader-accent);outline-offset:1px}.comment-reply-actions{display:flex;justify-content:flex-end;align-items:center;gap:10px;margin-top:8px}.comment-cancel{border:0;background:transparent;color:var(--reader-muted);font-size:13px;cursor:pointer;padding:4px 6px}.comment-cancel:hover,.comment-cancel:focus-visible{color:var(--reader-text)}.comment-item.is-tombstone{padding:12px 0}.comment-tombstone{margin:0;color:var(--reader-muted);font-size:13px;font-style:italic}.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],.comment-replies-extra{animation:none;transition:none}}.article-content mark.anno-mark{background:transparent;color:inherit;padding:0;border-radius:2px}.article-content mark.anno-quoted{--am-bg: var(--anno-p0-bg);--am-strong: var(--anno-p0-strong);background:var(--am-bg);box-shadow:inset 0 -.42em 0 0 var(--am-bg),0 2px 0 0 var(--am-strong);cursor:pointer}.article-content mark.anno-quoted[data-anno-c="1"]{--am-bg: var(--anno-p1-bg);--am-strong: var(--anno-p1-strong)}.article-content mark.anno-quoted[data-anno-c="2"]{--am-bg: var(--anno-p2-bg);--am-strong: var(--anno-p2-strong)}.article-content mark.anno-quoted[data-anno-c="3"]{--am-bg: var(--anno-p3-bg);--am-strong: var(--anno-p3-strong)}.article-content mark.anno-quoted[data-anno-c="4"]{--am-bg: var(--anno-p4-bg);--am-strong: var(--anno-p4-strong)}.article-content mark.anno-quoted[data-anno-c="5"]{--am-bg: var(--anno-p5-bg);--am-strong: var(--anno-p5-strong)}.article-content mark.anno-saved{background:var(--anno-saved-bg);box-shadow:inset 0 -.42em 0 0 var(--anno-saved-bg);cursor:pointer}.article-content mark.anno-quoted.anno-saved{background:linear-gradient(0deg,var(--anno-saved-bg),var(--anno-saved-bg)),var(--anno-quote-bg)}.article-content button.anno-count,.article-content button.anno-saved-flag{user-select:none;-webkit-user-select:none}.article-content button.anno-count{appearance:none;border:0;padding:0;font:inherit;background:transparent;color:var(--anno-quote-strong);cursor:pointer;line-height:1}.article-content button.anno-count-sup{font-size:.68em;font-weight:700;vertical-align:super;margin-left:2px;min-width:16px;height:16px;display:inline-grid;place-items:center;border-radius:999px;background:var(--anno-quote-bg)}.article-content button.anno-count-end{display:inline-flex;align-items:center;gap:3px;margin-left:8px;font-size:.74em;font-weight:700;padding:2px 8px;border-radius:999px;border:1px solid var(--anno-quote-strong);background:var(--anno-quote-bg);transform:translateY(-2px)}.article-content button.anno-count:hover,.article-content button.anno-count:focus-visible{filter:brightness(1.08)}.article-content button.anno-saved-flag{appearance:none;border:0;padding:0;background:transparent;color:var(--anno-saved-strong);cursor:pointer;display:inline-block;vertical-align:super;width:10px;height:13px;margin-left:3px;position:relative}.article-content button.anno-saved-flag:before{content:"";position:absolute;inset:0;border:1.4px solid currentColor;border-radius:1px 1px 0 0;clip-path:polygon(0 0,100% 0,100% 100%,50% 68%,0 100%);background:currentColor;opacity:.9}.selection-menu{position:fixed;z-index:30;display:flex;flex-direction:column;max-width:calc(100vw - 24px);padding:5px;background:var(--reader-canvas);color:var(--reader-text);border:1px solid var(--reader-border);border-radius:12px;box-shadow:0 1px 2px #0a0f0c0d,0 10px 28px #0a0f0c1f;animation:selection-menu-in var(--duration-fast) var(--ease-out) both}@keyframes selection-menu-in{0%{transform:translateY(4px);opacity:0}}.selection-menu-row{display:flex;align-items:center;flex-wrap:wrap;justify-content:center;gap:2px}.selection-action{appearance:none;border:0;background:transparent;color:var(--reader-body);font:inherit;font-size:13.5px;line-height:1;display:inline-flex;align-items:center;gap:7px;flex:none;white-space:nowrap;padding:8px 13px;border-radius:8px;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.selection-action svg{display:block;flex:none}.selection-action:hover:not(:disabled),.selection-action:focus-visible:not(:disabled){background:var(--reader-subtle);color:var(--reader-text)}.selection-action:disabled{opacity:.4;cursor:not-allowed}.selection-sep{width:1px;height:18px;background:var(--reader-border);margin:0 3px}.selection-menu-hint{margin:0;padding:7px 12px;font-size:13px;color:var(--reader-muted);max-width:220px}.selection-composer{width:min(340px,84vw);display:flex;flex-direction:column;gap:8px;padding:6px}.selection-composer-quote{margin:0;padding:8px 11px;font-size:13px;line-height:1.5;color:var(--reader-body);background:var(--reader-quote-bg);border-left:2px solid var(--anno-quote-strong);border-radius:0 8px 8px 0;max-height:96px;overflow:hidden}.selection-composer textarea{width:100%;font:inherit;font-size:14px;line-height:1.6;color:inherit;background:var(--reader-subtle);border:0;border-radius:10px;padding:9px 11px;resize:none}.selection-composer textarea:focus-visible,.selection-composer textarea:focus{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--reader-accent) 32%,transparent)}.selection-composer-actions{display:flex;align-items:center;gap:10px}.selection-composer-count{margin-right:auto;color:var(--reader-muted);font:10px DM Mono,monospace}.selection-composer-actions .text-button{font-size:13px;padding:4px 6px}.selection-composer-actions>button:disabled{opacity:.5;cursor:not-allowed}.comments-anchor-quote{margin:10px 20px 0;padding:10px 14px;font-size:14px;line-height:1.6;color:var(--reader-body);background:var(--anno-quote-bg);border-left:2px solid var(--anno-quote-strong);border-radius:0 8px 8px 0;max-height:120px;overflow:hidden}.mark-item{display:flex;flex-direction:column;gap:8px}.mark-quote{margin:0;padding:10px 14px;font-size:14px;line-height:1.6;color:var(--reader-text);background:var(--anno-saved-bg);border-left:2px solid var(--anno-saved-strong);border-radius:0 8px 8px 0}.mark-meta{margin:0;font-size:12px;color:var(--reader-muted)}.mark-note{margin:0;font-size:14px;line-height:1.6;color:var(--reader-body);white-space:pre-wrap}.mark-actions{display:flex;gap:4px;flex-wrap:wrap}.mark-action{appearance:none;border:0;background:transparent;color:var(--reader-muted);font:inherit;font-size:13px;display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:999px;cursor:pointer;transition:background var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out)}.mark-action:hover:not(:disabled),.mark-action:focus-visible:not(:disabled){background:var(--reader-subtle);color:var(--reader-text)}.mark-action:disabled{opacity:.4;cursor:not-allowed}.mark-action.is-danger:hover:not(:disabled){color:var(--coral)}.mark-action.is-danger.confirm{background:color-mix(in srgb,var(--coral) 12%,transparent);color:var(--coral);font-weight:600}.mark-note-editor{display:flex;flex-direction:column;gap:8px}.mark-note-editor textarea{width:100%;font:inherit;font-size:14px;line-height:1.6;color:inherit;background:var(--reader-subtle);border:0;border-radius:10px;padding:9px 11px;resize:vertical}.mark-note-editor textarea:focus-visible,.mark-note-editor textarea:focus{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--reader-accent) 32%,transparent)}.mark-note-editor-actions{display:flex;align-items:center;gap:10px}.mark-note-count{margin-right:auto;color:var(--reader-muted);font:10px DM Mono,monospace}.mark-note-editor-actions .text-button{font-size:13px;padding:4px 6px}.clamp-toggle{appearance:none;border:0;background:transparent;padding:2px 0;color:var(--reader-accent);font:inherit;font-size:12.5px;cursor:pointer}.clamp-toggle:hover,.clamp-toggle:focus-visible{text-decoration:underline}.comment-like{appearance:none;border:0;background:transparent;display:inline-flex;align-items:center;gap:4px;padding:3px 5px;border-radius:6px;color:var(--reader-muted);font:inherit;font-size:12px;cursor:pointer;transition:color var(--duration-fast) var(--ease-out)}.comment-like:hover:not(:disabled),.comment-like:focus-visible:not(:disabled){color:var(--coral);background:color-mix(in srgb,var(--coral) 8%,transparent)}.comment-like.is-liked{color:var(--coral)}.comment-like-count{font-variant-numeric:tabular-nums;min-width:1em;text-align:left}.comment-like.is-pop svg{animation:comment-like-pop .42s var(--ease-out)}@keyframes comment-like-pop{0%{transform:scale(1)}40%{transform:scale(1.35) rotate(-6deg)}70%{transform:scale(.94)}to{transform:scale(1)}}@media(prefers-reduced-motion:reduce){.comment-like.is-pop svg{animation:none}}@media(prefers-reduced-motion:reduce){.selection-menu{animation:none}}.load-more-row{display:flex;flex-direction:column;align-items:center;gap:6px;padding:14px 0 4px}.load-more-button{border:0;border-radius:999px;padding:7px 22px;background:transparent;color:var(--reader-text, var(--color-fg));font-size:13.5px;font-weight:600;letter-spacing:.02em;cursor:pointer;transition:background var(--duration-fast) ease}.load-more-button:hover:not(:disabled){background:var(--reader-subtle, var(--surface-alt))}.load-more-button:disabled{cursor:default;opacity:.55}.load-more-count{font-size:11px;letter-spacing:.06em;color:var(--reader-muted, var(--color-muted))}.pagination{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:26px 4px 8px}.pagination-count{font-size:11px;letter-spacing:.08em;color:var(--color-muted)}.pagination-pages{display:flex;align-items:center;gap:4px}.pagination-page{min-width:32px;height:32px;border:0;border-radius:999px;padding:0 6px;background:transparent;color:var(--color-fg);font-size:13.5px;font-variant-numeric:tabular-nums;cursor:pointer;transition:background var(--duration-fast) ease}.pagination-page:hover:not(:disabled):not(.is-current){background:var(--surface-alt)}.pagination-page:disabled{cursor:default;opacity:.35}.pagination-page.is-current{background:var(--dark);color:var(--paper);cursor:default}.pagination-gap{min-width:18px;text-align:center;color:var(--color-soft);font-size:13px}@media(prefers-reduced-motion:reduce){.load-more-button,.pagination-page{transition:none}}.comment-report{appearance:none;border:0;background:transparent;display:inline-flex;align-items:center;gap:3px;padding:3px 5px;border-radius:6px;color:var(--reader-muted);font-size:12px;line-height:1;cursor:pointer;transition:color var(--duration-fast) var(--ease-out)}.comment-report:hover:not(:disabled),.comment-report:focus-visible:not(:disabled){color:var(--coral);background:color-mix(in srgb,var(--coral) 8%,transparent)}.comment-report.is-done{color:var(--reader-muted);opacity:.45;cursor:default}.comments-heading-tools{display:flex;align-items:center;gap:10px}@media(prefers-reduced-motion:reduce){.comment-report{transition:none}}
