@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(data:font/woff2;base64,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) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2) format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(./jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2) format("woff2-variations");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:Lexend;font-style:normal;font-display:swap;font-weight:400;src:url(./lexend-vietnamese-400-normal-DoLa7jNB.woff2) format("woff2"),url(./lexend-vietnamese-400-normal-mPlHoWg5.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:400;src:url(./lexend-latin-ext-400-normal-D38JI5AK.woff2) format("woff2"),url(./lexend-latin-ext-400-normal-D9P7pMo-.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:400;src:url(./lexend-latin-400-normal-CwRJVcUA.woff2) format("woff2"),url(./lexend-latin-400-normal-CHypAkT3.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:500;src:url(./lexend-vietnamese-500-normal-Bos7Oy9U.woff2) format("woff2"),url(./lexend-vietnamese-500-normal-EFAPmUTE.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:500;src:url(./lexend-latin-ext-500-normal-Bo17xs96.woff2) format("woff2"),url(./lexend-latin-ext-500-normal-DbCmXT_D.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:500;src:url(./lexend-latin-500-normal-Dl-X5nog.woff2) format("woff2"),url(./lexend-latin-500-normal-D9x1QWTH.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:600;src:url(./lexend-vietnamese-600-normal-Cr1ePs6O.woff2) format("woff2"),url(./lexend-vietnamese-600-normal-BxEVPgxw.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:600;src:url(./lexend-latin-ext-600-normal-hDcqLAH9.woff2) format("woff2"),url(./lexend-latin-ext-600-normal-BXtyp5LP.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:600;src:url(./lexend-latin-600-normal-DdvlkEkX.woff2) format("woff2"),url(./lexend-latin-600-normal-DSBzZxpA.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(./lexend-vietnamese-700-normal-BrGlFDtO.woff2) format("woff2"),url(./lexend-vietnamese-700-normal-NEp7hM5T.woff) format("woff");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(./lexend-latin-ext-700-normal-CcWyeg4T.woff2) format("woff2"),url(./lexend-latin-ext-700-normal-iR1cPiNX.woff) format("woff");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:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(./lexend-latin-700-normal-DqO8md6r.woff2) format("woff2"),url(./lexend-latin-700-normal-DVyJlN8t.woff) format("woff");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}:root{--font-sans: "Inter Variable", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-display: "Lexend", "Inter Variable", system-ui, sans-serif;--font-mono: "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "Cascadia Code", "Fira Code", Consolas, monospace;--radius-xs: 6px;--radius-sm: 9px;--radius: 13px;--radius-lg: 18px;--radius-xl: 26px;--sidebar-w: 310px;--toc-w: 250px;--header-h: 60px;--ease: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(.16, 1, .3, 1);--step--1: clamp(.79rem, .77rem + .09vw, .84rem);--step-0: clamp(.94rem, .91rem + .14vw, 1.02rem);--step-1: clamp(1.13rem, 1.08rem + .24vw, 1.27rem);--step-2: clamp(1.35rem, 1.27rem + .39vw, 1.59rem);--step-3: clamp(1.62rem, 1.49rem + .63vw, 1.99rem);--step-4: clamp(1.94rem, 1.74rem + .98vw, 2.49rem);--step-5: clamp(2.33rem, 2.03rem + 1.48vw, 3.11rem)}:root,[data-accent=violet]{--a-50: 263 90% 97%;--a-200: 259 90% 84%;--a-400: 258 90% 70%;--a-500: 258 84% 62%;--a-600: 257 74% 54%;--a-700: 256 68% 46%}[data-accent=ocean]{--a-50: 200 95% 96%;--a-200: 199 94% 80%;--a-400: 199 92% 60%;--a-500: 200 92% 48%;--a-600: 201 90% 42%;--a-700: 202 88% 34%}[data-accent=emerald]{--a-50: 152 76% 95%;--a-200: 152 70% 76%;--a-400: 158 74% 48%;--a-500: 160 84% 39%;--a-600: 161 88% 32%;--a-700: 163 88% 26%}[data-accent=amber]{--a-50: 45 96% 95%;--a-200: 44 96% 76%;--a-400: 38 95% 56%;--a-500: 35 92% 48%;--a-600: 32 94% 42%;--a-700: 28 92% 35%}[data-accent=rose]{--a-50: 356 100% 97%;--a-200: 353 96% 84%;--a-400: 351 94% 68%;--a-500: 349 89% 60%;--a-600: 347 77% 50%;--a-700: 345 75% 42%}[data-theme=dark]{color-scheme:dark;--bg: #0b0d12;--bg-alt: #0f1219;--bg-elev: #141824;--bg-elev-2: #1a1f2d;--bg-hover: #1e2433;--bg-code: #10141e;--bg-inline: #1c2231;--border: #232a3a;--border-soft: #1a2030;--border-strong: #333c52;--text: #e6e9f2;--text-strong: #f7f9ff;--text-muted: #98a1b8;--text-faint: #6b768f;--accent: hsl(var(--a-400));--accent-strong: hsl(var(--a-200));--accent-bg: hsl(var(--a-500) / .14);--accent-border: hsl(var(--a-400) / .36);--on-accent: #ffffff;--accent-solid: hsl(var(--a-500));--accent-solid-hover: hsl(var(--a-400));--ok: #34d399;--ok-bg: #34d3991f;--warn: #fbbf24;--warn-bg: #fbbf241f;--danger: #f87171;--danger-bg: #f871711f;--info: #60a5fa;--info-bg: #60a5fa1f;--shadow-sm: 0 1px 2px rgb(0 0 0 / .4);--shadow: 0 6px 24px -8px rgb(0 0 0 / .6);--shadow-lg: 0 24px 64px -16px rgb(0 0 0 / .72);--ring: 0 0 0 3px hsl(var(--a-400) / .3);--grad-hero: radial-gradient(1200px 500px at 12% -10%, hsl(var(--a-500) / .24), transparent 60%), radial-gradient(900px 420px at 92% 0%, hsl(var(--a-400) / .14), transparent 55%)}[data-theme=light]{color-scheme:light;--bg: #fbfbfd;--bg-alt: #f4f5f9;--bg-elev: #ffffff;--bg-elev-2: #f7f8fc;--bg-hover: #eef0f7;--bg-code: #f8f9fc;--bg-inline: #eef0f7;--border: #e2e5ee;--border-soft: #ecedf4;--border-strong: #cbd0de;--text: #2c3345;--text-strong: #0d1220;--text-muted: #636c81;--text-faint: #8b93a7;--accent: hsl(var(--a-600));--accent-strong: hsl(var(--a-700));--accent-bg: hsl(var(--a-500) / .1);--accent-border: hsl(var(--a-500) / .3);--on-accent: #ffffff;--accent-solid: hsl(var(--a-600));--accent-solid-hover: hsl(var(--a-700));--ok: #059669;--ok-bg: #05966914;--warn: #b45309;--warn-bg: #d9770614;--danger: #dc2626;--danger-bg: #dc262614;--info: #2563eb;--info-bg: #2563eb14;--shadow-sm: 0 1px 2px rgb(16 24 40 / .06);--shadow: 0 8px 28px -12px rgb(16 24 40 / .18);--shadow-lg: 0 24px 60px -18px rgb(16 24 40 / .22);--ring: 0 0 0 3px hsl(var(--a-500) / .25);--grad-hero: radial-gradient(1200px 500px at 12% -10%, hsl(var(--a-500) / .14), transparent 60%), radial-gradient(900px 420px at 92% 0%, hsl(var(--a-400) / .1), transparent 55%)}[data-density=compact]{--step-0: .9rem}*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 20px);-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--step-0);line-height:1.65;font-feature-settings:"cv02","cv03","cv04","ss01";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .25s var(--ease),color .25s var(--ease)}#root{min-height:100vh}h1,h2,h3,h4,h5{font-family:var(--font-display);color:var(--text-strong);font-weight:600;letter-spacing:-.018em;line-height:1.25;margin:0}a{color:var(--accent);text-decoration:none;transition:color .15s var(--ease)}a:hover{color:var(--accent-strong)}button{font-family:inherit;font-size:inherit;cursor:pointer}:focus-visible{outline:none;box-shadow:var(--ring);border-radius:var(--radius-xs)}code,pre,kbd{font-family:var(--font-mono);font-variant-ligatures:none}::selection{background:hsl(var(--a-500) / .3)}*{scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:99px;border:3px solid transparent;background-clip:content-box}*::-webkit-scrollbar-thumb:hover{background:var(--text-faint);background-clip:content-box}.btn{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-elev);color:var(--text);font-size:.82rem;font-weight:500;line-height:1.3;white-space:nowrap;transition:all .16s var(--ease)}.btn:hover{background:var(--bg-hover);border-color:var(--border-strong);color:var(--text-strong)}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--accent-solid);border-color:var(--accent-solid);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-solid-hover);border-color:var(--accent-solid-hover);color:var(--on-accent)}.btn-ghost{background:transparent;border-color:transparent;color:var(--text-muted)}.btn-ghost:hover{background:var(--bg-hover);color:var(--text-strong)}.btn-icon{padding:7px;width:34px;height:34px;justify-content:center}.btn.is-active{color:var(--accent);border-color:var(--accent-border);background:var(--accent-bg)}.btn[disabled]{opacity:.5;pointer-events:none}.chip{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;font-size:.7rem;font-weight:600;letter-spacing:.02em;border-radius:99px;border:1px solid var(--border);background:var(--bg-elev-2);color:var(--text-muted);white-space:nowrap}.chip-accent{background:var(--accent-bg);border-color:var(--accent-border);color:var(--accent)}.chip-ok{background:var(--ok-bg);border-color:transparent;color:var(--ok)}.chip-warn{background:var(--warn-bg);border-color:transparent;color:var(--warn)}.chip-danger{background:var(--danger-bg);border-color:transparent;color:var(--danger)}kbd{display:inline-block;padding:2px 6px;font-size:.7rem;line-height:1.4;border-radius:5px;border:1px solid var(--border-strong);border-bottom-width:2px;background:var(--bg-elev-2);color:var(--text-muted);font-weight:500}.muted{color:var(--text-muted)}.faint{color:var(--text-faint)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.progress-track{height:6px;border-radius:99px;background:var(--bg-hover);overflow:hidden}.progress-fill{height:100%;border-radius:99px;background:linear-gradient(90deg,hsl(var(--a-500)),hsl(var(--a-400)));transition:width .5s var(--ease-out)}@keyframes fade-up{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes pop-in{0%{opacity:0;transform:translateY(-6px) scale(.985)}to{opacity:1;transform:none}}@keyframes spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.app{min-height:100vh}.header{position:sticky;top:0;z-index:50;height:var(--header-h);display:flex;align-items:center;gap:14px;padding:0 18px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:saturate(180%) blur(14px);-webkit-backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--border-soft)}.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:600;font-size:.98rem;color:var(--text-strong);letter-spacing:-.02em;flex-shrink:0}.brand:hover{color:var(--text-strong)}.brand-mark{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(145deg,hsl(var(--a-400)),hsl(var(--a-600)));color:#fff;box-shadow:0 4px 14px -4px hsl(var(--a-500) / .7);flex-shrink:0}.brand-sub{font-size:.66rem;font-weight:500;color:var(--text-faint);letter-spacing:.06em;text-transform:uppercase;font-family:var(--font-sans)}.header-spacer{flex:1}.search-trigger{display:flex;align-items:center;gap:9px;width:min(340px,38vw);padding:7px 11px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-elev);color:var(--text-faint);font-size:.83rem;transition:all .16s var(--ease)}.search-trigger:hover{border-color:var(--accent-border);background:var(--bg-elev-2)}.search-trigger .st-label{flex:1;text-align:left}.header-nav{display:flex;gap:2px}.header-nav a{padding:6px 11px;border-radius:var(--radius-sm);font-size:.84rem;font-weight:500;color:var(--text-muted)}.header-nav a:hover{background:var(--bg-hover);color:var(--text-strong)}.header-nav a.active{color:var(--accent);background:var(--accent-bg)}.menu-btn{display:none}.shell{display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);align-items:start}.sidebar{position:sticky;top:var(--header-h);height:calc(100vh - var(--header-h));display:flex;flex-direction:column;border-right:1px solid var(--border-soft);background:var(--bg-alt)}.sidebar-head{padding:14px 16px 10px;border-bottom:1px solid var(--border-soft);display:flex;flex-direction:column;gap:10px}.sidebar-filter{position:relative;display:flex;align-items:center}.sidebar-filter svg{position:absolute;left:10px;color:var(--text-faint);pointer-events:none}.sidebar-filter input{width:100%;padding:8px 10px 8px 32px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--bg-elev);color:var(--text);font-family:inherit;font-size:.82rem}.sidebar-filter input::placeholder{color:var(--text-faint)}.sidebar-filter input:focus{border-color:var(--accent-border)}.sidebar-progress{display:flex;flex-direction:column;gap:6px}.sidebar-progress-row{display:flex;justify-content:space-between;font-size:.71rem;color:var(--text-muted);font-weight:500}.sidebar-scroll{flex:1;overflow-y:auto;overscroll-behavior:contain;padding:10px 10px 40px}.nav-group-label{padding:14px 8px 6px;font-size:.64rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--text-faint)}.nav-section{margin-bottom:2px}.nav-section-btn{width:100%;display:flex;align-items:center;gap:9px;padding:7px 9px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-size:.845rem;font-weight:550;text-align:left;transition:background .14s var(--ease)}.nav-section-btn:hover{background:var(--bg-hover)}.nav-section-btn .ns-icon{display:grid;place-items:center;width:24px;height:24px;border-radius:7px;background:hsl(var(--sec-hue) 70% 55% / .14);color:hsl(var(--sec-hue) 72% 62%);flex-shrink:0}[data-theme=light] .nav-section-btn .ns-icon{color:hsl(var(--sec-hue) 62% 42%);background:hsl(var(--sec-hue) 70% 50% / .12)}.nav-section-btn .ns-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-section-btn .ns-count{font-size:.68rem;color:var(--text-faint);font-variant-numeric:tabular-nums;font-weight:500}.nav-section-btn .ns-caret{color:var(--text-faint);transition:transform .2s var(--ease);flex-shrink:0}.nav-section-btn[aria-expanded=true] .ns-caret{transform:rotate(90deg)}.nav-section-btn.has-current .ns-title{color:var(--accent)}.nav-items{margin:2px 0 6px 20px;padding-left:10px;border-left:1px solid var(--border);display:flex;flex-direction:column;gap:1px;animation:fade-in .18s var(--ease)}.nav-item{display:flex;align-items:center;gap:8px;padding:5px 9px;border-radius:var(--radius-xs);font-size:.805rem;color:var(--text-muted);line-height:1.4;transition:all .13s var(--ease)}.nav-item:hover{background:var(--bg-hover);color:var(--text-strong)}.nav-item.active{background:var(--accent-bg);color:var(--accent);font-weight:550}.nav-item .ni-num{font-size:.68rem;color:var(--text-faint);font-variant-numeric:tabular-nums;min-width:16px;flex-shrink:0}.nav-item .ni-text{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-item .ni-dot{width:6px;height:6px;border-radius:99px;background:var(--ok);flex-shrink:0}.nav-subgroup+.nav-subgroup{margin-top:1px}.nav-group-btn{width:100%;display:flex;align-items:center;gap:6px;padding:5px 8px 5px 4px;border:none;border-radius:var(--radius-xs);background:transparent;color:var(--text-muted);font-size:.755rem;font-weight:600;letter-spacing:.012em;text-align:left;transition:all .13s var(--ease)}.nav-group-btn:hover{background:var(--bg-hover);color:var(--text-strong)}.nav-group-btn.has-current{color:var(--accent)}.nav-group-btn .ng-caret{color:var(--text-faint);transition:transform .18s var(--ease);flex-shrink:0}.nav-group-btn[aria-expanded=true] .ng-caret{transform:rotate(90deg)}.nav-group-btn .ng-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-group-btn .ng-count{font-size:.65rem;font-weight:500;color:var(--text-faint);font-variant-numeric:tabular-nums}.nav-group-items{margin:1px 0 4px 7px;padding-left:9px;border-left:1px solid var(--border-soft);display:flex;flex-direction:column;gap:1px;animation:fade-in .16s var(--ease)}.nav-item-deep{font-size:.785rem;padding:4px 8px}.main{min-width:0;min-height:calc(100vh - var(--header-h))}.page{animation:fade-up .3s var(--ease-out)}.topic-layout{display:grid;grid-template-columns:minmax(0,1fr) var(--toc-w);gap:36px;max-width:1320px;margin:0 auto;padding:30px 34px 90px}.topic-main{min-width:0}.toc{position:sticky;top:calc(var(--header-h) + 24px);max-height:calc(100vh - var(--header-h) - 48px);overflow-y:auto;padding-bottom:20px}.toc-title{font-size:.66rem;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--text-faint);margin-bottom:10px}.toc-list{list-style:none;margin:0;padding:0;border-left:1px solid var(--border)}.toc-list a{display:block;padding:4px 0 4px 13px;margin-left:-1px;border-left:2px solid transparent;font-size:.79rem;line-height:1.45;color:var(--text-muted);transition:all .14s var(--ease)}.toc-list a:hover{color:var(--text-strong)}.toc-list a.depth-3{padding-left:26px;font-size:.755rem}.toc-list a.active{color:var(--accent);border-left-color:var(--accent);font-weight:550}.toc-actions{margin-top:20px;padding-top:16px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:7px}.toc-actions .btn{justify-content:flex-start;width:100%}.topic-head{padding-bottom:22px;margin-bottom:26px;border-bottom:1px solid var(--border)}.breadcrumb{display:flex;align-items:center;gap:7px;font-size:.76rem;color:var(--text-faint);margin-bottom:12px;flex-wrap:wrap}.breadcrumb a{color:var(--text-muted)}.breadcrumb a:hover{color:var(--accent)}.topic-title{font-size:var(--step-4);margin-bottom:10px}.topic-desc{font-size:var(--step-1);color:var(--text-muted);line-height:1.55;max-width:68ch;margin-bottom:16px}.topic-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.topic-toolbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:16px}.pager{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:46px}.pager-card{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-elev);transition:all .16s var(--ease)}.pager-card:hover{border-color:var(--accent-border);background:var(--bg-elev-2);transform:translateY(-1px)}.pager-card.next{text-align:right;align-items:flex-end}.pager-label{font-size:.7rem;color:var(--text-faint);font-weight:600;letter-spacing:.04em;text-transform:uppercase}.pager-title{font-size:.9rem;font-weight:550;color:var(--text-strong)}.qa-block{margin-top:48px;scroll-margin-top:calc(var(--header-h) + 20px)}.qa-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:16px 18px;border-radius:var(--radius) var(--radius) 0 0;border:1px solid var(--accent-border);background:var(--accent-bg)}.qa-head h2{font-size:var(--step-2);display:flex;align-items:center;gap:10px;margin:0}.qa-list{border:1px solid var(--border);border-top:none;border-radius:0 0 var(--radius) var(--radius);overflow:hidden;background:var(--bg-elev)}.qa-item+.qa-item{border-top:1px solid var(--border-soft)}.qa-q{width:100%;display:flex;align-items:flex-start;gap:12px;padding:14px 18px;border:none;background:transparent;color:var(--text-strong);font-size:.92rem;font-weight:550;line-height:1.5;text-align:left;transition:background .14s var(--ease)}.qa-q:hover{background:var(--bg-hover)}.qa-num{display:grid;place-items:center;min-width:24px;height:24px;border-radius:7px;background:var(--accent-bg);color:var(--accent);font-size:.7rem;font-weight:700;font-variant-numeric:tabular-nums;flex-shrink:0;margin-top:1px}.qa-q-text{flex:1}.qa-caret{color:var(--text-faint);transition:transform .22s var(--ease);flex-shrink:0;margin-top:3px}.qa-item.open .qa-caret{transform:rotate(180deg)}.qa-a{padding:0 18px 16px 54px;animation:fade-in .2s var(--ease)}.qa-a>.prose>:first-child{margin-top:0}.note-box{margin-top:34px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);overflow:hidden}.note-box-head{display:flex;align-items:center;gap:9px;padding:11px 16px;border-bottom:1px solid var(--border-soft);font-size:.82rem;font-weight:600;color:var(--text-muted)}.note-box textarea{width:100%;min-height:110px;padding:14px 16px;border:none;background:transparent;color:var(--text);font-family:inherit;font-size:.88rem;line-height:1.6;resize:vertical}.note-box textarea:focus{outline:none;box-shadow:none}.note-box textarea::placeholder{color:var(--text-faint)}.toast-wrap{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none}.toast{display:flex;align-items:center;gap:9px;padding:10px 16px;border-radius:99px;border:1px solid var(--border);background:var(--bg-elev);color:var(--text-strong);font-size:.84rem;font-weight:500;box-shadow:var(--shadow-lg);animation:pop-in .2s var(--ease-out)}.toast svg{color:var(--ok)}.palette-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;background:#03050a8c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;justify-content:center;padding:10vh 18px 18px;animation:fade-in .15s var(--ease)}.palette{width:min(680px,100%);max-height:70vh;display:flex;flex-direction:column;border-radius:var(--radius-lg);border:1px solid var(--border-strong);background:var(--bg-elev);box-shadow:var(--shadow-lg);overflow:hidden;animation:pop-in .2s var(--ease-out)}.palette-input-row{display:flex;align-items:center;gap:11px;padding:14px 18px;border-bottom:1px solid var(--border)}.palette-input-row svg{color:var(--text-faint);flex-shrink:0}.palette-input-row input{flex:1;border:none;background:transparent;color:var(--text-strong);font-family:inherit;font-size:1rem}.palette-input-row input:focus{outline:none;box-shadow:none}.palette-input-row input::placeholder{color:var(--text-faint)}.palette-results{flex:1;overflow-y:auto;padding:8px}.palette-group{padding:10px 12px 5px;font-size:.64rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint)}.palette-item{display:flex;align-items:center;gap:12px;width:100%;padding:9px 12px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text);text-align:left;font-size:.87rem}.palette-item.selected{background:var(--accent-bg);color:var(--accent)}.palette-item .pi-body{flex:1;min-width:0}.palette-item .pi-title{font-weight:550;color:var(--text-strong);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-item.selected .pi-title{color:var(--accent)}.palette-item .pi-sub{font-size:.74rem;color:var(--text-faint);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.palette-item mark{background:hsl(var(--a-400) / .28);color:inherit;border-radius:3px;padding:0 1px}.palette-foot{display:flex;align-items:center;gap:14px;padding:9px 16px;border-top:1px solid var(--border);background:var(--bg-alt);font-size:.72rem;color:var(--text-faint)}.palette-empty{padding:42px 20px;text-align:center;color:var(--text-faint);font-size:.88rem}.popover{position:absolute;top:calc(100% + 8px);right:0;z-index:80;width:250px;padding:14px;border-radius:var(--radius);border:1px solid var(--border-strong);background:var(--bg-elev);box-shadow:var(--shadow-lg);animation:pop-in .16s var(--ease-out)}.popover-label{font-size:.66rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--text-faint);margin-bottom:8px}.popover-row+.popover-row{margin-top:16px}.swatches{display:flex;gap:8px}.swatch{width:30px;height:30px;border-radius:9px;border:2px solid transparent;background:var(--sw);transition:all .15s var(--ease)}.swatch:hover{transform:scale(1.08)}.swatch.active{border-color:var(--text-strong);box-shadow:0 0 0 2px var(--bg-elev) inset}.seg{display:flex;padding:3px;border-radius:var(--radius-sm);background:var(--bg-alt);border:1px solid var(--border)}.seg button{flex:1;padding:5px 9px;border:none;border-radius:var(--radius-xs);background:transparent;color:var(--text-muted);font-size:.78rem;font-weight:500}.seg button.active{background:var(--bg-elev);color:var(--text-strong);box-shadow:var(--shadow-sm)}.read-bar{position:fixed;top:var(--header-h);left:0;height:2px;z-index:60;background:linear-gradient(90deg,hsl(var(--a-500)),hsl(var(--a-400)));transition:width .1s linear}@media (max-width: 1180px){.topic-layout{grid-template-columns:minmax(0,1fr);padding:26px 24px 80px}.toc{display:none}}@media (max-width: 900px){.menu-btn{display:inline-flex}.shell{grid-template-columns:minmax(0,1fr)}.sidebar{position:fixed;top:var(--header-h);left:0;width:min(320px,86vw);z-index:45;transform:translate(-100%);transition:transform .25s var(--ease-out);box-shadow:var(--shadow-lg)}.sidebar.open{transform:none}.sidebar-backdrop{position:fixed;inset:var(--header-h) 0 0;z-index:44;background:#03050a80;animation:fade-in .18s var(--ease)}.header-nav{display:none}.search-trigger{width:auto;flex:1}.search-trigger .st-kbd,.brand-text{display:none}.pager{grid-template-columns:1fr}}@media (max-width: 560px){.topic-layout{padding:20px 16px 70px}.qa-a{padding-left:18px}}@media print{.header,.sidebar,.toc,.topic-toolbar,.pager,.note-box,.read-bar,.toast-wrap{display:none!important}.shell,.topic-layout{display:block;padding:0}.qa-a{display:block!important}}.prose{font-size:var(--step-0);line-height:1.72;color:var(--text);max-width:78ch}.prose>*:first-child{margin-top:0}.prose h1{font-size:var(--step-4);margin:2.2em 0 .6em}.prose h2{font-size:var(--step-3);margin:2.1em 0 .75em;padding-bottom:.35em;border-bottom:1px solid var(--border);scroll-margin-top:calc(var(--header-h) + 20px)}.prose h3{font-size:var(--step-2);margin:1.85em 0 .6em;scroll-margin-top:calc(var(--header-h) + 20px)}.prose h4{font-size:var(--step-1);margin:1.6em 0 .5em;color:var(--text-strong)}.prose h5{font-size:var(--step-0);margin:1.4em 0 .4em;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);font-size:.78rem}.prose p{margin:0 0 1.15em}.prose strong{color:var(--text-strong);font-weight:620}.prose em{font-style:italic}.prose a{text-decoration:underline;text-decoration-color:var(--accent-border);text-underline-offset:3px;text-decoration-thickness:1.5px}.prose a:hover{text-decoration-color:var(--accent)}.prose ul,.prose ol{margin:0 0 1.15em;padding-left:1.4em}.prose li{margin:.35em 0}.prose li::marker{color:var(--accent);font-weight:600}.prose ul ul,.prose ol ol,.prose ul ol,.prose ol ul{margin:.35em 0}.prose li>p{margin:0 0 .5em}.prose hr{height:1px;border:none;background:var(--border);margin:2.4em 0}.prose :not(pre)>code{font-size:.855em;padding:.16em .4em;border-radius:5px;background:var(--bg-inline);border:1px solid var(--border-soft);color:var(--accent-strong);white-space:break-spaces;font-weight:500}[data-theme=light] .prose :not(pre)>code{color:var(--accent-strong)}.code-block{position:relative;margin:1.5em 0;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-code);overflow:hidden;box-shadow:var(--shadow-sm)}.code-block-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 10px 7px 14px;border-bottom:1px solid var(--border-soft);background:var(--bg-elev)}.code-lang{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);font-family:var(--font-sans)}.code-copy{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:var(--radius-xs);border:1px solid transparent;background:transparent;color:var(--text-faint);font-size:.7rem;font-family:var(--font-sans);font-weight:500;transition:all .14s var(--ease)}.code-copy:hover{background:var(--bg-hover);color:var(--text-strong);border-color:var(--border)}.code-copy.copied{color:var(--ok)}.code-block pre{margin:0;padding:14px 16px;overflow-x:auto;font-size:.825rem;line-height:1.62;-moz-tab-size:2;tab-size:2}.code-block pre code{background:none;border:none;padding:0;font-size:inherit;color:var(--text);display:block;min-width:fit-content}.table-wrap{margin:1.5em 0;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);box-shadow:var(--shadow-sm)}.prose table{width:100%;border-collapse:collapse;font-size:.855rem;line-height:1.55}.prose thead{background:var(--bg-elev-2)}.prose th{padding:10px 14px;text-align:left;font-weight:650;color:var(--text-strong);font-size:.78rem;letter-spacing:.02em;border-bottom:1px solid var(--border);white-space:nowrap}.prose td{padding:10px 14px;border-bottom:1px solid var(--border-soft);vertical-align:top}.prose tbody tr:last-child td{border-bottom:none}.prose tbody tr{transition:background .12s var(--ease)}.prose tbody tr:hover{background:var(--bg-hover)}.prose td code,.prose th code{white-space:nowrap}.prose blockquote{margin:1.4em 0;padding:13px 18px;border-left:3px solid var(--accent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--accent-bg);color:var(--text)}.prose blockquote>:first-child{margin-top:0}.prose blockquote>:last-child{margin-bottom:0}.callout{display:flex;gap:13px;margin:1.5em 0;padding:14px 17px;border-radius:var(--radius);border:1px solid var(--cal-border, var(--border));background:var(--cal-bg, var(--bg-elev));border-left-width:3px}.callout-icon{color:var(--cal-color, var(--accent));flex-shrink:0;margin-top:2px}.callout-body{flex:1;min-width:0}.callout-body>:first-child{margin-top:0}.callout-body>:last-child{margin-bottom:0}.callout-title{font-weight:650;color:var(--cal-color, var(--accent));margin-bottom:3px;font-size:.87rem;letter-spacing:.01em}.callout.tip{--cal-color: var(--ok);--cal-bg: var(--ok-bg);--cal-border: color-mix(in srgb, var(--ok) 34%, transparent)}.callout.warning{--cal-color: var(--warn);--cal-bg: var(--warn-bg);--cal-border: color-mix(in srgb, var(--warn) 34%, transparent)}.callout.danger{--cal-color: var(--danger);--cal-bg: var(--danger-bg);--cal-border: color-mix(in srgb, var(--danger) 34%, transparent)}.callout.note{--cal-color: var(--info);--cal-bg: var(--info-bg);--cal-border: color-mix(in srgb, var(--info) 34%, transparent)}.callout.key{--cal-color: var(--accent);--cal-bg: var(--accent-bg);--cal-border: var(--accent-border)}.mermaid-block{position:relative;margin:1.6em 0;padding:20px 16px;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-elev);overflow-x:auto;text-align:center;box-shadow:var(--shadow-sm)}.mermaid-block svg{max-width:100%;height:auto}.mermaid-block.loading{min-height:90px;display:grid;place-items:center;color:var(--text-faint);font-size:.82rem}.mermaid-placeholder{color:var(--text-faint);font-size:.82rem}.mermaid-canvas{display:block}.mermaid-canvas svg{max-width:100%;height:auto}.mermaid-tools{position:absolute;top:8px;right:8px;display:flex;gap:4px;opacity:0;transition:opacity .16s var(--ease)}.mermaid-block:hover .mermaid-tools{opacity:1}.prose h2,.prose h3{position:relative}.heading-anchor{position:absolute;left:-.85em;opacity:0;color:var(--text-faint)!important;text-decoration:none!important;font-weight:400;transition:opacity .15s var(--ease)}.prose h2:hover .heading-anchor,.prose h3:hover .heading-anchor{opacity:1}.prose img{max-width:100%;border-radius:var(--radius);border:1px solid var(--border)}.prose details{margin:1.3em 0;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-elev);padding:0 16px}.prose details summary{cursor:pointer;padding:12px 0;font-weight:600;color:var(--text-strong);list-style-position:inside}.prose details[open] summary{border-bottom:1px solid var(--border-soft);margin-bottom:12px}.prose details>:last-child{margin-bottom:14px}.prose .task-list-item{list-style:none;margin-left:-1.2em}.prose input[type=checkbox]{margin-right:8px;accent-color:var(--accent-solid)}[data-theme=dark] .hljs-comment,[data-theme=dark] .hljs-quote{color:#5d6a86;font-style:italic}[data-theme=dark] .hljs-keyword,[data-theme=dark] .hljs-selector-tag,[data-theme=dark] .hljs-literal,[data-theme=dark] .hljs-type{color:#c792ea}[data-theme=dark] .hljs-string,[data-theme=dark] .hljs-regexp,[data-theme=dark] .hljs-addition{color:#a5e075}[data-theme=dark] .hljs-number,[data-theme=dark] .hljs-symbol,[data-theme=dark] .hljs-bullet{color:#f78c6c}[data-theme=dark] .hljs-title,[data-theme=dark] .hljs-section,[data-theme=dark] .hljs-title.function_{color:#82aaff}[data-theme=dark] .hljs-attr,[data-theme=dark] .hljs-attribute,[data-theme=dark] .hljs-variable,[data-theme=dark] .hljs-template-variable{color:#ffcb6b}[data-theme=dark] .hljs-built_in,[data-theme=dark] .hljs-class .hljs-title,[data-theme=dark] .hljs-title.class_{color:#4ec9b0}[data-theme=dark] .hljs-meta,[data-theme=dark] .hljs-meta .hljs-keyword{color:#89ddff}[data-theme=dark] .hljs-name,[data-theme=dark] .hljs-selector-id,[data-theme=dark] .hljs-selector-class,[data-theme=dark] .hljs-deletion{color:#f07178}[data-theme=dark] .hljs-property,[data-theme=dark] .hljs-params{color:#d6deeb}[data-theme=dark] .hljs-operator,[data-theme=dark] .hljs-punctuation{color:#89ddff}[data-theme=light] .hljs-comment,[data-theme=light] .hljs-quote{color:#7c8496;font-style:italic}[data-theme=light] .hljs-keyword,[data-theme=light] .hljs-selector-tag,[data-theme=light] .hljs-literal,[data-theme=light] .hljs-type{color:#8250df}[data-theme=light] .hljs-string,[data-theme=light] .hljs-regexp,[data-theme=light] .hljs-addition{color:#0a7d40}[data-theme=light] .hljs-number,[data-theme=light] .hljs-symbol,[data-theme=light] .hljs-bullet{color:#b5501a}[data-theme=light] .hljs-title,[data-theme=light] .hljs-section,[data-theme=light] .hljs-title.function_{color:#0550ae}[data-theme=light] .hljs-attr,[data-theme=light] .hljs-attribute,[data-theme=light] .hljs-variable,[data-theme=light] .hljs-template-variable{color:#953800}[data-theme=light] .hljs-built_in,[data-theme=light] .hljs-class .hljs-title,[data-theme=light] .hljs-title.class_{color:#0f7490}[data-theme=light] .hljs-meta,[data-theme=light] .hljs-meta .hljs-keyword{color:#0550ae}[data-theme=light] .hljs-name,[data-theme=light] .hljs-selector-id,[data-theme=light] .hljs-selector-class,[data-theme=light] .hljs-deletion{color:#b21c4a}[data-theme=light] .hljs-operator,[data-theme=light] .hljs-punctuation{color:#24292f}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.wrap{max-width:1180px;margin:0 auto;padding:34px 34px 90px}.wrap-narrow{max-width:900px}@media (max-width: 700px){.wrap{padding:24px 16px 70px}}.hero{position:relative;padding:56px 34px 46px;background:var(--grad-hero);border-bottom:1px solid var(--border-soft);overflow:hidden}.hero:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:radial-gradient(circle at 1px 1px,var(--border) 1px,transparent 0);background-size:26px 26px;opacity:.4;pointer-events:none;-webkit-mask-image:linear-gradient(to bottom,black,transparent 80%);mask-image:linear-gradient(to bottom,black,transparent 80%)}.hero-inner{position:relative;max-width:1180px;margin:0 auto;z-index:1}.hero-badge{display:inline-flex;align-items:center;gap:8px;padding:5px 13px 5px 6px;border-radius:99px;border:1px solid var(--accent-border);background:var(--accent-bg);color:var(--accent);font-size:.75rem;font-weight:600;margin-bottom:20px}.hero-badge .hb-pill{padding:2px 8px;border-radius:99px;background:var(--accent-solid);color:var(--on-accent);font-size:.66rem;letter-spacing:.04em}.hero h1{font-size:var(--step-5);max-width:19ch;margin-bottom:16px;letter-spacing:-.032em}.hero h1 .grad{background:linear-gradient(110deg,hsl(var(--a-400)),hsl(var(--a-600)) 60%,hsl(var(--a-400)));-webkit-background-clip:text;background-clip:text;color:transparent}.hero p.lede{font-size:var(--step-1);color:var(--text-muted);max-width:62ch;line-height:1.6;margin:0 0 26px}.hero-cta{display:flex;gap:11px;flex-wrap:wrap;margin-bottom:34px}.hero-cta .btn{padding:10px 18px;font-size:.9rem}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;max-width:760px}.stat{padding:14px 16px;border-radius:var(--radius);border:1px solid var(--border);background:color-mix(in srgb,var(--bg-elev) 78%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.stat-value{font-family:var(--font-display);font-size:1.6rem;font-weight:600;color:var(--text-strong);letter-spacing:-.02em;line-height:1.1;font-variant-numeric:tabular-nums}.stat-label{font-size:.74rem;color:var(--text-muted);margin-top:3px}.block-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin:46px 0 18px}.block-head:first-child{margin-top:0}.block-head h2{font-size:var(--step-2)}.block-head p{margin:5px 0 0;color:var(--text-muted);font-size:.88rem;max-width:62ch}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(292px,1fr));gap:15px}.sec-card{position:relative;display:flex;flex-direction:column;gap:11px;padding:18px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--bg-elev);overflow:hidden;transition:all .2s var(--ease-out);color:var(--text)}.sec-card:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,hsl(var(--sec-hue) 78% 58%),hsl(var(--sec-hue) 78% 58% / 0))}.sec-card:hover{transform:translateY(-3px);border-color:hsl(var(--sec-hue) 60% 55% / .5);box-shadow:var(--shadow);color:var(--text)}.sec-card-top{display:flex;align-items:flex-start;gap:12px}.sec-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:hsl(var(--sec-hue) 74% 55% / .14);color:hsl(var(--sec-hue) 74% 62%);flex-shrink:0}[data-theme=light] .sec-icon{color:hsl(var(--sec-hue) 66% 42%);background:hsl(var(--sec-hue) 72% 50% / .12)}.sec-card h3{font-size:1.02rem;margin-bottom:3px}.sec-card .sec-blurb{font-size:.845rem;color:var(--text-muted);line-height:1.55;margin:0;flex:1}.sec-card-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.74rem;color:var(--text-faint);padding-top:10px;border-top:1px solid var(--border-soft)}.sec-card-foot .pct{font-variant-numeric:tabular-nums;font-weight:600;color:var(--text-muted)}.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:14px}.feature{display:flex;gap:12px;padding:16px;border-radius:var(--radius);border:1px solid var(--border-soft);background:var(--bg-alt)}.feature svg{color:var(--accent);flex-shrink:0;margin-top:2px}.feature h4{font-size:.9rem;margin-bottom:3px}.feature p{margin:0;font-size:.81rem;color:var(--text-muted);line-height:1.5}.topic-rows{display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg-elev)}.topic-row{display:flex;align-items:center;gap:14px;padding:13px 16px;color:var(--text);transition:background .14s var(--ease)}.topic-row+.topic-row{border-top:1px solid var(--border-soft)}.topic-row:hover{background:var(--bg-hover);color:var(--text)}.tr-num{display:grid;place-items:center;min-width:30px;height:30px;border-radius:9px;background:var(--bg-alt);border:1px solid var(--border-soft);color:var(--text-faint);font-size:.74rem;font-weight:650;font-variant-numeric:tabular-nums;flex-shrink:0}.topic-row.done .tr-num{background:var(--ok-bg);color:var(--ok);border-color:transparent}.tr-body{flex:1;min-width:0}.tr-title{font-weight:550;color:var(--text-strong);font-size:.92rem;display:flex;align-items:center;gap:8px}.tr-desc{font-size:.81rem;color:var(--text-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tr-meta{display:flex;align-items:center;gap:10px;font-size:.74rem;color:var(--text-faint);flex-shrink:0}@media (max-width: 640px){.tr-meta .tr-hide{display:none}}.group-stack{display:flex;flex-direction:column;gap:30px}.group-block{scroll-margin-top:calc(var(--header-h) + 20px)}.group-head{display:flex;align-items:center;gap:13px;margin-bottom:11px;flex-wrap:wrap}.group-index{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:hsl(var(--sec-hue, 258) 70% 55% / .14);color:hsl(var(--sec-hue, 258) 72% 62%);font-family:var(--font-display);font-size:.74rem;font-weight:700;font-variant-numeric:tabular-nums;flex-shrink:0}[data-theme=light] .group-index{color:hsl(var(--sec-hue, 258) 62% 42%);background:hsl(var(--sec-hue, 258) 70% 50% / .12)}.group-head-body{flex:1;min-width:180px}.group-head h2{font-size:var(--step-1);margin:0;letter-spacing:-.012em}.group-meta{display:block;font-size:.75rem;color:var(--text-faint);margin-top:1px}.group-bar{width:120px;flex-shrink:0}.group-bar .progress-track{height:5px}@media (max-width: 560px){.group-bar{width:100%}}.sec-hero{padding:34px 34px 26px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,hsl(var(--sec-hue) 70% 55% / .08),transparent)}.sec-hero-inner{max-width:1180px;margin:0 auto}.sec-hero h1{font-size:var(--step-4);margin:10px 0;display:flex;align-items:center;gap:14px}.sec-hero p{color:var(--text-muted);font-size:var(--step-1);max-width:68ch;margin:0 0 18px;line-height:1.55}@media (max-width: 700px){.sec-hero{padding:24px 16px 20px}}.ring{position:relative;display:grid;place-items:center}.ring svg{transform:rotate(-90deg)}.ring-track{stroke:var(--bg-hover)}.ring-fill{stroke:url(#ringGrad);stroke-linecap:round;transition:stroke-dashoffset .7s var(--ease-out)}.ring-label{position:absolute;font-family:var(--font-display);font-weight:600;color:var(--text-strong);font-variant-numeric:tabular-nums}.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:15px;margin-bottom:30px}.panel{padding:18px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--bg-elev)}.panel h3{font-size:.96rem;margin-bottom:12px;display:flex;align-items:center;gap:8px}.panel-center{display:flex;flex-direction:column;align-items:center;gap:12px;text-align:center}.bar-list{display:flex;flex-direction:column;gap:11px}.bar-row{display:grid;grid-template-columns:1fr auto;gap:6px 10px;font-size:.8rem}.bar-row .bar-name{color:var(--text);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-row .bar-val{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:.74rem}.bar-row .progress-track{grid-column:1 / -1;height:5px}.flash{min-height:300px;display:flex;flex-direction:column;gap:18px;padding:28px;border-radius:var(--radius-lg);border:1px solid var(--border);background:var(--bg-elev);box-shadow:var(--shadow)}.flash-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:.76rem;color:var(--text-faint)}.flash-q{font-family:var(--font-display);font-size:var(--step-2);color:var(--text-strong);line-height:1.4;font-weight:600}.flash-a{border-top:1px solid var(--border);padding-top:18px;animation:fade-up .24s var(--ease-out)}.flash-controls{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin-top:20px}.flash-hint{display:grid;place-items:center;flex:1;min-height:120px;border:1px dashed var(--border-strong);border-radius:var(--radius);color:var(--text-faint);font-size:.86rem;cursor:pointer;transition:all .16s var(--ease)}.flash-hint:hover{border-color:var(--accent-border);color:var(--accent);background:var(--accent-bg)}.empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:70px 20px;text-align:center;color:var(--text-faint)}.empty svg{opacity:.45}.empty h3{color:var(--text-muted);font-size:1.05rem}.empty p{margin:0;font-size:.88rem;max-width:44ch}.loader{display:flex;align-items:center;justify-content:center;gap:10px;padding:70px 20px;color:var(--text-faint);font-size:.88rem}.spinner{width:17px;height:17px;border-radius:99px;border:2px solid var(--border-strong);border-top-color:var(--accent);animation:spin .7s linear infinite}.skeleton{border-radius:var(--radius-xs);background:linear-gradient(90deg,var(--bg-hover) 25%,var(--bg-elev-2) 50%,var(--bg-hover) 75%);background-size:200% 100%;animation:shimmer 1.4s infinite}@keyframes shimmer{to{background-position:-200% 0}}.filter-bar{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:18px}.filter-bar .spacer{flex:1}.roadmap{position:relative;padding-left:30px}.roadmap:before{content:"";position:absolute;left:9px;top:8px;bottom:8px;width:2px;background:var(--border)}.rm-item{position:relative;padding-bottom:26px}.rm-item:before{content:"";position:absolute;left:-26px;top:6px;width:12px;height:12px;border-radius:99px;background:var(--bg);border:2px solid var(--accent)}.rm-item.done:before{background:var(--accent)}.rm-week{font-size:.68rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--accent);margin-bottom:4px}.rm-item h4{font-size:1rem;margin-bottom:5px}.rm-item p{margin:0 0 8px;font-size:.86rem;color:var(--text-muted)}.rm-tags{display:flex;gap:6px;flex-wrap:wrap}
