:root{--bg: #fafafa;--bg-card: #ffffff;--bg-glass: rgba(250, 250, 250, 0.9);--bg-overlay: rgba(0, 0, 0, 0.4);--surface: #f4f4f5;--surface-2: #e4e4e7;--border: #e4e4e7;--border-strong: #a1a1aa;--text: #18181b;--text-secondary: #3f3f46;--muted: #71717a;--accent: #18181b;--accent-hover: #3f3f46;--accent-ink: #fafafa;--accent-soft: rgba(24, 24, 27, 0.08);--accent-subtle: rgba(24, 24, 27, 0.05);--mark-bg: #e4e4e7;--danger: #dc2626;--success: #16a34a;--code-bg: #09090b;--code-header-bg: #18181b;--code-border: #27272a;--code-text: #f4f4f5;--callout-note-bg: #eff6ff;--callout-note-border: #bfdbfe;--callout-note: #1d4ed8;--callout-tip-bg: #ecfdf5;--callout-tip-border: #a7f3d0;--callout-tip: #047857;--callout-important-bg: #fef2f2;--callout-important-border: #fecaca;--callout-important: #b91c1c;--callout-warning-bg: #fffbeb;--callout-warning-border: #fde68a;--callout-warning: #b45309;--callout-caution-bg: #fef2f2;--callout-caution-border: #fecaca;--callout-caution: #b91c1c;--shadow-sm: 0 1px 2px rgba(9, 9, 11, 0.04);--shadow-md: 0 4px 12px rgba(9, 9, 11, 0.05), 0 12px 24px rgba(9, 9, 11, 0.05);--shadow-lg: 0 8px 24px rgba(9, 9, 11, 0.07), 0 24px 48px rgba(9, 9, 11, 0.07);--theme-color: #fafafa;--font-sans: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, "Noto Sans", sans-serif;--font-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, "Liberation Mono", "Noto Sans Mono", monospace;--font-serif: Georgia, Cambria, "Times New Roman", Times, serif;--fs-base: 16px;--fs-sm: 0.85rem;--fs-xs: 0.75rem;--fs-2xs: 0.68rem;--lh: 1.6;--lh-prose: 1.75;--text-md: 1.05rem;--text-lg: 1.2rem;--text-xl: 1.45rem;--text-2xl: clamp(1.5rem, 2.5vw, 1.9rem);--text-3xl: clamp(1.9rem, 3.5vw, 2.5rem);--text-4xl: clamp(2.2rem, 4.5vw, 3rem);--header-h: 44px;--aside-w: 320px;--article-max: 46rem;--radius: 8px;--radius-sm: 6px;--radius-full: 9999px;--gap-1: 0.25rem;--gap-2: 0.5rem;--gap-3: 0.85rem;--gap-4: 1.25rem;--gap-5: 1.75rem}:root[data-theme=dark]{--bg: #09090b;--bg-card: #18181b;--bg-glass: rgba(9, 9, 11, 0.9);--bg-overlay: rgba(0, 0, 0, 0.65);--surface: #18181b;--surface-2: #27272a;--border: #27272a;--border-strong: #52525b;--text: #fafafa;--text-secondary: #d4d4d8;--muted: #a1a1aa;--accent: #fafafa;--accent-hover: #d4d4d8;--accent-ink: #09090b;--accent-soft: rgba(250, 250, 250, 0.1);--accent-subtle: rgba(250, 250, 250, 0.06);--mark-bg: #52525b;--danger: #f87171;--success: #4ade80;--code-bg: #09090b;--code-header-bg: #18181b;--code-border: #27272a;--code-text: #f4f4f5;--callout-note-bg: rgba(37, 99, 235, 0.12);--callout-note-border: rgba(59, 130, 246, 0.35);--callout-note: #93c5fd;--callout-tip-bg: rgba(16, 185, 129, 0.12);--callout-tip-border: rgba(16, 185, 129, 0.35);--callout-tip: #6ee7b7;--callout-important-bg: rgba(239, 68, 68, 0.12);--callout-important-border: rgba(239, 68, 68, 0.35);--callout-important: #fca5a5;--callout-warning-bg: rgba(245, 158, 11, 0.12);--callout-warning-border: rgba(245, 158, 11, 0.35);--callout-warning: #fcd34d;--callout-caution-bg: rgba(239, 68, 68, 0.12);--callout-caution-border: rgba(239, 68, 68, 0.35);--callout-caution: #fca5a5;--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.45);--shadow-lg: 0 16px 40px rgba(0, 0, 0, 0.5);--theme-color: #09090b}@media(prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #09090b;--bg-card: #18181b;--bg-glass: rgba(9, 9, 11, 0.9);--bg-overlay: rgba(0, 0, 0, 0.65);--surface: #18181b;--surface-2: #27272a;--border: #27272a;--border-strong: #52525b;--text: #fafafa;--text-secondary: #d4d4d8;--muted: #a1a1aa;--accent: #fafafa;--accent-hover: #d4d4d8;--accent-ink: #09090b;--accent-soft: rgba(250, 250, 250, 0.1);--accent-subtle: rgba(250, 250, 250, 0.06);--mark-bg: #52525b;--danger: #f87171;--success: #4ade80;--code-bg: #09090b;--code-header-bg: #18181b;--code-border: #27272a;--code-text: #f4f4f5;--callout-note-bg: rgba(37, 99, 235, 0.12);--callout-note-border: rgba(59, 130, 246, 0.35);--callout-note: #93c5fd;--callout-tip-bg: rgba(16, 185, 129, 0.12);--callout-tip-border: rgba(16, 185, 129, 0.35);--callout-tip: #6ee7b7;--callout-important-bg: rgba(239, 68, 68, 0.12);--callout-important-border: rgba(239, 68, 68, 0.35);--callout-important: #fca5a5;--callout-warning-bg: rgba(245, 158, 11, 0.12);--callout-warning-border: rgba(245, 158, 11, 0.35);--callout-warning: #fcd34d;--callout-caution-bg: rgba(239, 68, 68, 0.12);--callout-caution-border: rgba(239, 68, 68, 0.35);--callout-caution: #fca5a5;--shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.4);--shadow-md: 0 4px 16px rgba(0, 0, 0, 0.45);--shadow-lg: 0 16px 40px rgba(0, 0, 0, 0.5);--theme-color: #09090b}}:root[data-theme=dark]{color-scheme:dark}:root[data-theme=light]{color-scheme:light}@media(prefers-color-scheme: dark){:root:not([data-theme]){color-scheme:dark}}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{display:flex;flex-direction:column;min-height:100vh;min-height:100svh;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-base);line-height:var(--lh);text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .25s cubic-bezier(0.16, 1, 0.3, 1),color .25s cubic-bezier(0.16, 1, 0.3, 1),border-color .25s cubic-bezier(0.16, 1, 0.3, 1)}h1,h2,h3,h4,h5,h6{margin:0 0 var(--gap-3);font-family:var(--font-sans);font-weight:700;line-height:1.15;color:var(--text);letter-spacing:-0.02em;text-wrap:balance}h1{font-size:var(--text-3xl);letter-spacing:-0.03em}h2{font-size:var(--text-2xl)}h3{font-size:var(--text-xl)}h4{font-size:var(--text-lg)}h5{font-size:var(--text-md)}h6{font-size:var(--fs-base);text-transform:uppercase;letter-spacing:.05em}p{margin:0 0 var(--gap-3);text-wrap:pretty}a{color:inherit;text-decoration:none;transition:color .2s cubic-bezier(0.16, 1, 0.3, 1),background-color .2s cubic-bezier(0.16, 1, 0.3, 1),border-color .2s cubic-bezier(0.16, 1, 0.3, 1),opacity .2s cubic-bezier(0.16, 1, 0.3, 1)}img,svg,video{display:block;max-width:100%;height:auto}button,input,select,textarea{font:inherit;color:inherit}button{border:none;background:none;cursor:pointer}code,kbd,samp{font-family:var(--font-mono);font-size:.85em}code{padding:.15em .4em;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text)}pre{font-family:var(--font-mono);overflow-x:auto}kbd{padding:.1em .35em;background:var(--bg);border:1px solid var(--border);border-bottom-width:3px;border-radius:4px;box-shadow:0 1px 1px rgba(0,0,0,.05)}::selection{background:var(--text);color:var(--bg)}::placeholder{color:var(--muted)}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:rgba(0,0,0,0)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--muted)}:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:var(--radius-sm)}@media(prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*::before,*::after{transition-duration:.01ms !important;animation-duration:.01ms !important;animation-iteration-count:1 !important;scroll-behavior:auto !important}}mark{background:var(--mark-bg);color:inherit;padding:0 1px;border-radius:2px}hr{border:0;border-top:1px solid var(--border);margin:var(--gap-5) 0}.muted{color:var(--muted)}.skip-link{position:absolute;top:-100px;left:var(--gap-4);padding:var(--gap-2) var(--gap-3);background:var(--accent);color:var(--accent-ink);border-radius:0 0 var(--radius-sm) var(--radius-sm);font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:700;text-transform:uppercase;letter-spacing:.05em;z-index:100}.skip-link:focus{top:0;outline:none;box-shadow:var(--shadow-lg)}.bg{color:#e6edf3;background-color:#0d1117}.chroma{color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none}.chroma .err{color:#f85149}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#6e7681}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em 0 .4em;color:#737679}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em 0 .4em;color:#6e7681}.chroma .line{display:flex}.chroma .k{color:#ff7b72}.chroma .kc{color:#79c0ff}.chroma .kd{color:#ff7b72}.chroma .kn{color:#ff7b72}.chroma .kp{color:#79c0ff}.chroma .kr{color:#ff7b72}.chroma .kt{color:#ff7b72}.chroma .nc{color:#f0883e;font-weight:bold}.chroma .no{color:#79c0ff;font-weight:bold}.chroma .nd{color:#d2a8ff;font-weight:bold}.chroma .ni{color:#ffa657}.chroma .ne{color:#f0883e;font-weight:bold}.chroma .nl{color:#79c0ff;font-weight:bold}.chroma .nn{color:#ff7b72}.chroma .na{color:#79c0ff}.chroma .nb{color:#79c0ff}.chroma .bp{color:#79c0ff}.chroma .nx{color:#e6edf3}.chroma .py{color:#79c0ff}.chroma .nt{color:#7ee787}.chroma .nv{color:#79c0ff}.chroma .vc{color:#79c0ff}.chroma .vg{color:#79c0ff}.chroma .vi{color:#79c0ff}.chroma .vm{color:#79c0ff}.chroma .nf{color:#d2a8ff;font-weight:bold}.chroma .fm{color:#d2a8ff;font-weight:bold}.chroma .l{color:#a5d6ff}.chroma .ld{color:#79c0ff}.chroma .s{color:#a5d6ff}.chroma .sa{color:#79c0ff}.chroma .sb{color:#a5d6ff}.chroma .sc{color:#a5d6ff}.chroma .dl{color:#79c0ff}.chroma .sd{color:#a5d6ff}.chroma .s2{color:#a5d6ff}.chroma .se{color:#79c0ff}.chroma .sh{color:#79c0ff}.chroma .si{color:#a5d6ff}.chroma .sx{color:#a5d6ff}.chroma .sr{color:#79c0ff}.chroma .s1{color:#a5d6ff}.chroma .ss{color:#a5d6ff}.chroma .m{color:#a5d6ff}.chroma .mb{color:#a5d6ff}.chroma .mf{color:#a5d6ff}.chroma .mh{color:#a5d6ff}.chroma .mi{color:#a5d6ff}.chroma .il{color:#a5d6ff}.chroma .mo{color:#a5d6ff}.chroma .p{color:#e6edf3}.chroma .o{color:#ff7b72;font-weight:bold}.chroma .ow{color:#ff7b72;font-weight:bold}.chroma .or{color:#ff7b72;font-weight:bold}.chroma .c{color:#8b949e;font-style:italic}.chroma .ch{color:#8b949e;font-style:italic}.chroma .cm{color:#8b949e;font-style:italic}.chroma .c1{color:#8b949e;font-style:italic}.chroma .cs{color:#8b949e;font-weight:bold;font-style:italic}.chroma .cp{color:#8b949e;font-weight:bold;font-style:italic}.chroma .cpf{color:#8b949e;font-weight:bold;font-style:italic}.chroma .gd{color:#ffa198;background-color:#490202}.chroma .ge{font-style:italic}.chroma .gr{color:#ffa198}.chroma .gh{color:#79c0ff;font-weight:bold}.chroma .gi{color:#56d364;background-color:#0f5323}.chroma .go{color:#8b949e}.chroma .gp{color:#8b949e}.chroma .gs{font-weight:bold}.chroma .gu{color:#79c0ff}.chroma .gt{color:#ff7b72}.chroma .gl{text-decoration:underline}.chroma .w{color:#6e7681}.chroma,.bg{background-color:rgba(0,0,0,0)}.site-header{position:sticky;top:0;z-index:50;background:var(--bg-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--border);transition:background-color .25s cubic-bezier(0.16, 1, 0.3, 1),border-color .25s cubic-bezier(0.16, 1, 0.3, 1)}.site-header__inner{display:flex;align-items:center;gap:var(--gap-3);height:var(--header-h);padding:0 var(--gap-4);max-width:1100px;margin:0 auto;position:relative}.brand{display:inline-flex;align-items:center;flex:none;color:var(--text);transition:opacity .2s cubic-bezier(0.16, 1, 0.3, 1)}.brand:hover{text-decoration:none;opacity:.75}.brand:hover .brand__mark{opacity:1}.brand__mark{display:block;border-radius:var(--radius-sm)}.brand__name{margin-left:var(--gap-2);font-size:.92rem;font-weight:750;line-height:1}.header-cats-scroll{display:flex;align-items:stretch;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-ms-overflow-style:none;overscroll-behavior-x:contain}.header-cats-scroll::-webkit-scrollbar{display:none}.header-cats{display:flex;align-items:stretch;align-self:stretch;flex:none;width:max-content}.header-cat{position:relative;display:inline-flex}.header-cat__btn{display:inline-flex;align-items:center;gap:5px;padding:0 10px;font-family:var(--font-mono);font-size:.78rem;font-weight:500;letter-spacing:.04em;color:var(--text-secondary);background:none;border:none;border-bottom:2px solid rgba(0,0,0,0);margin-bottom:-1px;white-space:nowrap;cursor:pointer;transition:color .2s cubic-bezier(0.16, 1, 0.3, 1),border-color .2s cubic-bezier(0.16, 1, 0.3, 1)}.header-cat__btn:hover{color:var(--text);text-decoration:none}.header-cat__btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.header-cat.is-active .header-cat__btn{color:var(--text);font-weight:600;border-color:var(--text)}.header-cat__chevron{flex:none;opacity:.55;transition:transform .18s ease}.header-cat.is-open .header-cat__chevron{transform:rotate(180deg)}.header-cat__sub{display:none;position:fixed;top:var(--cat-sub-top, 0px);left:var(--cat-sub-left, 8px);min-width:250px;max-width:330px;padding:var(--gap-2);background:var(--bg-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:65}.header-cat__sub::before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px}.header-cat.is-open .header-cat__sub,.header-cat__sub.is-open{display:block;animation:cat-sub-in .16s ease}.header-cat__all{display:block;padding:6px 8px;margin-bottom:var(--gap-1);border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);white-space:nowrap}.header-cat__all:hover{color:var(--text);text-decoration:none}.header-cat__list{list-style:none;margin:0;padding:0}.header-cat__track{display:flex;align-items:baseline;justify-content:space-between;gap:var(--gap-3);padding:8px;border-radius:var(--radius-sm);color:var(--text)}.header-cat__track:hover{background:var(--surface);color:var(--text);text-decoration:none}.header-cat__track:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.header-cat__tracktitle{min-width:0;font-family:var(--font-mono);font-size:var(--fs-sm);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-cat__trackcount{flex:none;font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted);white-space:nowrap}@keyframes cat-sub-in{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.searchbox--header{flex:none;display:flex;align-items:center;width:32px;margin-left:0;position:relative;transition:width .25s ease}.searchbox--header .searchbox__toggle{display:inline-flex;align-items:center;justify-content:center;flex:none;width:32px;height:32px;padding:0;font:inherit;color:var(--text-secondary);background:rgba(0,0,0,0);border:none;border-radius:var(--radius-full);cursor:pointer;transition:color .2s cubic-bezier(0.16, 1, 0.3, 1),background-color .2s cubic-bezier(0.16, 1, 0.3, 1)}.searchbox--header .searchbox__toggle:hover{color:var(--text);background:var(--surface)}.searchbox--header .searchbox__toggle:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.searchbox--header .searchbox__input{flex:1 1 auto;min-width:0;height:32px;padding:0;opacity:0;border-width:0;border-color:rgba(0,0,0,0);transition:padding .25s ease,opacity .18s ease}.searchbox--header .searchbox__input:focus{outline:none;border-color:var(--border)}.searchbox--header.is-open{position:absolute;right:68px;top:0;bottom:0;width:min(340px,100vw - 100px);z-index:60;background:var(--bg)}.searchbox--header.is-open .searchbox__input{opacity:1;padding:0 10px;border-width:1px;border-color:var(--border)}@media(pointer: coarse){.searchbox--header.is-open{right:72px}}@media(max-width: 560px){.searchbox--header.is-open{left:var(--gap-4);right:var(--gap-4);width:auto}}.searchbox--header.is-open+.header-link--icon{margin-left:auto}.searchbox__input{width:100%;height:32px;padding:0 10px;font-family:var(--font-mono);font-size:.8rem;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-sm);transition:border-color .2s cubic-bezier(0.16, 1, 0.3, 1),box-shadow .2s cubic-bezier(0.16, 1, 0.3, 1)}.searchbox__input::placeholder{color:var(--muted)}.searchbox__input:focus{outline:none;border-color:var(--text);background:var(--bg);box-shadow:var(--shadow-sm)}.searchbox--page{position:relative;max-width:none;margin-bottom:var(--gap-3)}.searchbox--page .searchbox__input{height:36px;font-size:.9rem;padding:0 14px;padding-right:38px}.searchbox--page .searchbox__submit{position:absolute;top:50%;right:5px;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;color:var(--muted);background:rgba(0,0,0,0);border:none;border-radius:var(--radius-sm);cursor:pointer}.searchbox--page .searchbox__submit:hover{color:var(--text)}.searchbox--page .searchbox__submit:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.header-link--icon{display:inline-flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;color:var(--text-secondary);border-radius:var(--radius-full);transition:color .2s cubic-bezier(0.16, 1, 0.3, 1),background-color .2s cubic-bezier(0.16, 1, 0.3, 1)}.header-link--icon:hover{color:var(--text);text-decoration:none;background:var(--surface)}@media(pointer: coarse){.header-link--icon{width:40px;height:40px}}.icon-bookmark{display:block}.icon-bookmark path{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linejoin:round}.shell{display:grid;grid-template-columns:minmax(0, 1fr) var(--aside-w);max-width:1100px;margin:0 auto;width:100%;flex:1 0 auto}.shell--wide{grid-template-columns:minmax(0, 1fr)}.site-header{flex:none}.site-footer{flex:none}.main{padding:var(--gap-4) var(--gap-5) var(--gap-5);min-width:0}.aside{border-left:1px solid var(--border);padding:var(--gap-4) var(--gap-4) var(--gap-5)}.widget{margin-bottom:var(--gap-3);padding:var(--gap-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius)}.widget:last-child{margin-bottom:0}.widget__title{margin:0 0 var(--gap-2);padding-bottom:var(--gap-2);border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.widget__title a{color:inherit}.widget__title a:hover{color:var(--text);text-decoration:none}.widget__list{list-style:none;margin:0;padding:0}.widget__list li{display:flex;align-items:baseline;gap:var(--gap-2);padding:3px 0}.widget__list--pages li{display:block}.widget__link{color:var(--text-secondary);font-family:var(--font-mono);font-size:.8rem;font-weight:500}.widget__link:hover{color:var(--text);text-decoration:none}.widget__link.is-active{color:var(--text);font-weight:600}.widget__count{margin-left:auto;font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted)}.widget__crumb{display:block;font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted)}.widget__empty{font-size:var(--fs-sm);color:var(--muted)}.widget__text{margin:2px 0;font-size:var(--fs-sm);font-weight:400;color:var(--muted)}.widget__text a{color:var(--text-secondary);text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--border-strong)}.widget__text a:hover{color:var(--text)}.widget--track .widget__title{display:flex;align-items:center;justify-content:space-between;gap:var(--gap-2)}.aside .widget--track{position:sticky;top:calc(var(--header-h) + var(--gap-3))}.wtree__head-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wtree__badge{flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:2px 7px;font-family:var(--font-mono);font-size:.7rem;font-weight:600;line-height:1.2;text-transform:none;letter-spacing:0;color:var(--text-secondary);background:var(--surface-2);border-radius:4px}.wtree__nav{display:flex;flex-direction:column;gap:var(--gap-2);padding-right:4px}.aside .widget--track .wtree__nav{max-height:calc(100vh - 14rem);overflow-y:auto;scrollbar-width:thin}.wtree__chapter-btn{display:flex;align-items:center;justify-content:space-between;gap:.4rem;width:100%;padding:6px 7px;font-family:var(--font-mono);font-size:.8rem;font-weight:700;line-height:1.35;text-align:left;color:var(--text);text-decoration:none;border-radius:4px;transition:color .2s cubic-bezier(0.16, 1, 0.3, 1),background-color .2s cubic-bezier(0.16, 1, 0.3, 1)}.wtree__chapter-btn:hover{color:var(--text);background:var(--surface-2);text-decoration:none}.wtree__chapter-btn:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.wtree__chapter-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wtree__chapter-arrow{flex:none;font-size:.6rem;color:var(--muted)}.wtree__chapter-items{display:none;flex-direction:column;gap:2px;margin-left:10px;padding-left:10px;border-left:1px solid var(--border)}.wtree__chapter.is-open .wtree__chapter-items{display:flex}.wtree__page{display:block;padding:5px 8px;font-family:var(--font-mono);font-size:.76rem;line-height:1.35;color:var(--muted);border-left:2px solid rgba(0,0,0,0);border-radius:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:color .2s cubic-bezier(0.16, 1, 0.3, 1),background-color .2s cubic-bezier(0.16, 1, 0.3, 1),border-color .2s cubic-bezier(0.16, 1, 0.3, 1)}.wtree__page:hover{color:var(--text);background:var(--surface-2);text-decoration:none}.wtree__page.is-active{color:var(--text);font-weight:600;border-left-color:var(--text);background:var(--accent-soft)}.wtree__page--part{padding-left:20px;font-size:.72rem}.site-footer{border-top:1px solid var(--border)}.site-footer__inner{max-width:1100px;margin:0 auto;padding:var(--gap-3) var(--gap-4);display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-2) var(--gap-3);font-family:var(--font-mono);font-size:.78rem;color:var(--muted)}.site-footer a{color:var(--muted)}.site-footer a:hover{color:var(--text);text-decoration:underline}.site-footer__sep{color:var(--border-strong)}.site-footer__actions{margin-left:auto;display:inline-flex;align-items:center}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;padding:0;color:var(--text-secondary);background:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:var(--radius-full);cursor:pointer;transition:color .2s cubic-bezier(0.16, 1, 0.3, 1),background-color .2s cubic-bezier(0.16, 1, 0.3, 1),transform .2s cubic-bezier(0.16, 1, 0.3, 1)}.theme-toggle:hover{color:var(--text);background:var(--surface);transform:rotate(15deg)}.theme-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.theme-toggle svg{display:block}.theme-toggle .theme-toggle__sun{display:none}.theme-toggle .theme-toggle__moon{display:block}:root[data-theme=dark] .theme-toggle .theme-toggle__sun{display:block}:root[data-theme=dark] .theme-toggle .theme-toggle__moon{display:none}@media(prefers-color-scheme: dark){:root:not([data-theme]) .theme-toggle .theme-toggle__sun{display:block}:root:not([data-theme]) .theme-toggle .theme-toggle__moon{display:none}}.list-reset{list-style:none;margin:0;padding:0}.mobile-nav{display:none}.mobile-nav__summary{cursor:pointer;list-style:none;font-family:var(--font-mono);font-size:.78rem;font-weight:500;color:var(--text-secondary);padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm)}@media(pointer: coarse){.mobile-nav__summary{padding:10px 14px}}.mobile-nav__summary::-webkit-details-marker{display:none}.mobile-nav__summary:hover{color:var(--text);background:var(--surface)}.mobile-nav[open] .mobile-nav__summary{background:var(--surface)}.mobile-nav__panel{position:absolute;left:var(--gap-4);right:var(--gap-4);top:calc(var(--header-h) - 2px);background:var(--bg-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);padding:var(--gap-3);max-height:70vh;overflow-y:auto}.mobile-nav__cats{list-style:none;margin:0 0 var(--gap-2);padding:0;display:flex;flex-wrap:wrap;gap:var(--gap-1) var(--gap-3)}.mobile-nav__cats a{font-family:var(--font-mono);font-size:.78rem;font-weight:500;color:var(--text-secondary)}.mobile-nav__cats a:hover{color:var(--text);text-decoration:none}@media(max-width: 919px){.shell,.shell--wide{grid-template-columns:minmax(0, 1fr)}.aside{display:none}.header-cats-scroll{display:none}.mobile-nav{display:block}.main{padding:var(--gap-3) var(--gap-4) var(--gap-5)}.searchbox__input{height:36px}}@media(max-width: 560px){.site-header__inner{gap:var(--gap-2)}.searchbox{max-width:none}.site-footer__sep{display:none}}.breadcrumbs{margin-bottom:var(--gap-4);padding-bottom:var(--gap-3);border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:.8rem;letter-spacing:.01em;color:var(--muted)}.breadcrumbs__list{list-style:none;display:flex;flex-wrap:wrap;align-items:center;gap:var(--gap-1);margin:0;padding:0;color:var(--muted)}.breadcrumbs__item{display:inline-flex;align-items:center}.breadcrumbs__item::after{content:"/";margin-left:var(--gap-1);color:var(--border)}.breadcrumbs__item:last-child::after{content:none}.breadcrumbs__item[aria-current=page]{color:var(--text);font-weight:600}.breadcrumbs a{color:var(--muted)}.breadcrumbs a:hover{color:var(--text)}.callout{margin:var(--gap-4) 0;padding:.9rem 1.15rem;background:var(--callout-note-bg);border:1px solid var(--callout-note-border);border-left-width:4px;border-radius:var(--radius)}.callout__title{margin:0;font-family:var(--font-mono);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--callout-note)}.callout>*:not(.callout__title){margin-top:var(--gap-2)}.callout>*:last-child{margin-bottom:0}.callout p.callout__title{margin:0}.callout p:not(.callout__title){color:var(--text-secondary)}.callout p:last-child{margin-bottom:0}.callout code{background:var(--surface)}.callout--tip{background:var(--callout-tip-bg);border-color:var(--callout-tip-border)}.callout--tip .callout__title{color:var(--callout-tip)}.callout--important{background:var(--callout-important-bg);border-color:var(--callout-important-border)}.callout--important .callout__title{color:var(--callout-important)}.callout--warning{background:var(--callout-warning-bg);border-color:var(--callout-warning-border)}.callout--warning .callout__title{color:var(--callout-warning)}.callout--caution{background:var(--callout-caution-bg);border-color:var(--callout-caution-border)}.callout--caution .callout__title{color:var(--callout-caution)}.blockquote{margin:var(--gap-4) 0;padding:var(--gap-2) var(--gap-4);border-left:3px solid var(--text);font-family:var(--font-serif);font-size:var(--text-lg);font-style:italic;line-height:1.35;color:var(--text)}.blockquote p:last-child{margin-bottom:0}.codeblock{position:relative;margin:var(--gap-4) 0;background:var(--code-bg);border:1px solid var(--code-border);border-radius:var(--radius);overflow:hidden;color:var(--code-text)}.codeblock__bar{display:flex;align-items:center;gap:var(--gap-2);padding:.35rem .75rem;background:var(--code-header-bg);border-bottom:1px solid var(--code-border)}.codeblock__lang{flex:none;font-family:var(--font-mono);font-size:.68rem;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.codeblock__label{min-width:0;max-width:60%;font-family:var(--font-mono);font-size:.75rem;font-weight:500;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.codeblock__label--file{color:var(--muted);text-decoration:underline;text-underline-offset:2px;cursor:pointer}.codeblock__label--file:hover{color:var(--code-text)}.codeblock__copy{display:inline-flex;align-items:center;justify-content:center;flex:none;width:26px;height:26px;margin-left:auto;padding:0;color:var(--muted);background:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:var(--radius-sm);cursor:pointer;transition:color .2s cubic-bezier(0.16, 1, 0.3, 1),background-color .2s cubic-bezier(0.16, 1, 0.3, 1),border-color .2s cubic-bezier(0.16, 1, 0.3, 1)}.codeblock__copy:hover{color:var(--code-text);background:hsla(0,0%,100%,.06);border-color:var(--code-border)}.codeblock__copy:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.codeblock__copy.is-copied{color:#4ade80;border-color:rgba(74,222,128,.35)}.codeblock__copy.is-copied .codeblock__copy-icon--copy{display:none}.codeblock__copy.is-copied .codeblock__copy-icon--check{display:block}.codeblock__copy.is-copy-failed{color:#f87171}@media(pointer: coarse){.codeblock__copy{width:32px;height:32px}}.codeblock__copy-icon{display:block;width:15px;height:15px}.codeblock__copy-icon path,.codeblock__copy-icon rect{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}.codeblock__copy-icon--check{display:none}.codeblock.is-collapsed pre{max-height:350px;overflow-y:hidden}.codeblock.is-collapsed .codeblock__expand{display:flex}.codeblock__expand{display:none;position:absolute;left:0;right:0;bottom:0;height:120px;align-items:flex-end;justify-content:center;padding-bottom:1.5rem;background:linear-gradient(to bottom, transparent, var(--code-bg));z-index:10;pointer-events:none}.codeblock__expand-btn{pointer-events:auto;max-width:calc(100% - 2rem);padding:.5rem 1rem;font-family:var(--font-sans);font-size:.85rem;font-weight:500;white-space:nowrap;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-full);box-shadow:var(--shadow-sm);cursor:pointer;transition:background-color .2s cubic-bezier(0.16, 1, 0.3, 1),border-color .2s cubic-bezier(0.16, 1, 0.3, 1)}.codeblock__expand-btn:hover{background:var(--surface);border-color:var(--border-strong)}.codeblock__expand-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.codeblock pre{margin:0;padding:1rem;background:var(--code-bg);border:0;border-radius:0;color:var(--code-text);overflow-x:auto;scrollbar-width:thin;font-size:.875rem;line-height:1.65}.codeblock code{display:block;min-width:max-content;padding:0;background:rgba(0,0,0,0);border:0;border-radius:0;color:inherit;font-size:1em}.article__body code,.article__lead code,.page-list__desc code{padding:.2em .4em;background:var(--surface-2);border:0;border-radius:4px;color:var(--text);font-size:.85em}.article__body .codeblock code{padding:0;background:rgba(0,0,0,0);border:0;border-radius:0;color:inherit;font-size:1em}.table-wrap{margin:var(--gap-4) 0;overflow-x:auto;scrollbar-width:thin;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg)}.table-wrap table{width:100%;border-collapse:collapse;font-family:var(--font-sans);font-size:.95rem;line-height:var(--lh);color:var(--text-secondary)}.table-wrap th,.table-wrap td{text-align:left;padding:var(--gap-2) var(--gap-3);border-bottom:1px solid var(--border)}.table-wrap th{background:var(--surface);color:var(--text);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;border-bottom:2px solid var(--border-strong);white-space:nowrap}.table-wrap tbody tr{transition:background-color .2s cubic-bezier(0.16, 1, 0.3, 1)}.table-wrap tbody tr:hover{background:var(--surface)}.table-wrap td code{background:rgba(0,0,0,0);padding:0;border:0;color:var(--text);font-weight:500}.figure{margin:var(--gap-4) 0}.figure img,.figure>.figure__svg{display:block}.figure img{margin:0;border:1px solid var(--border);border-radius:var(--radius-sm)}.figure--bare{margin:var(--gap-4) 0}.figure figcaption{margin-top:var(--gap-2);font-size:var(--fs-sm);font-style:italic;color:var(--muted);text-align:center}.figure__svg{padding:var(--gap-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.figure__svg svg{width:100%;height:auto;display:block}.demo{margin:var(--gap-4) 0}.demo__frame{width:100%;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg)}.demo__code{margin-top:var(--gap-2);font-size:var(--fs-sm)}.demo__code summary{cursor:pointer;color:var(--muted);font-family:var(--font-mono);font-size:.75rem;user-select:none}.demo__code summary:hover{color:var(--text)}.demo__code .chroma{border:1px solid var(--code-border);border-radius:var(--radius-sm);margin-top:var(--gap-1);font-size:var(--fs-xs)}.h-anchor{margin-left:.4em;color:var(--border-strong);opacity:0;font-weight:400;font-size:.85em;text-decoration:none;transition:opacity .2s cubic-bezier(0.16, 1, 0.3, 1),color .2s cubic-bezier(0.16, 1, 0.3, 1)}.h-anchor:hover{color:var(--text);text-decoration:none}h2:hover .h-anchor,h2:focus-within .h-anchor,h3:hover .h-anchor,h3:focus-within .h-anchor,h4:hover .h-anchor,h4:focus-within .h-anchor,h5:hover .h-anchor,h5:focus-within .h-anchor,h6:hover .h-anchor,h6:focus-within .h-anchor{opacity:1}.h-anchor:focus-visible{opacity:1}.toc{margin:0 0 var(--gap-5);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:var(--fs-sm)}.toc__summary{cursor:pointer;user-select:none;padding:.6rem 1rem;font-family:var(--font-mono);font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);list-style:none}.toc__summary::-webkit-details-marker{display:none}.toc__summary::before{content:"▸ ";color:var(--muted)}.toc[open] .toc__summary::before{content:"▾ "}.toc__body{padding:.25rem 1rem .75rem}.toc__body nav{font-family:var(--font-mono);font-size:.9rem}.toc__body ul,.toc__body ol{list-style:none;margin:0;padding-left:1rem}.toc__body ul ul,.toc__body ul ol,.toc__body ol ul,.toc__body ol ol{padding-left:.9rem}.toc__body>nav>ul,.toc__body>nav>ol{padding-left:.25rem}.toc__body li{margin-top:.45rem}.toc__body a{color:var(--muted)}.toc__body a:hover{color:var(--text)}.bookmark-btn,.share-btn{position:relative;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;color:var(--muted);background:rgba(0,0,0,0);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:color .2s cubic-bezier(0.16, 1, 0.3, 1),border-color .2s cubic-bezier(0.16, 1, 0.3, 1),background-color .2s cubic-bezier(0.16, 1, 0.3, 1),transform .2s cubic-bezier(0.16, 1, 0.3, 1)}.bookmark-btn:hover,.share-btn:hover{color:var(--text);border-color:var(--muted);background:var(--surface);transform:translateY(-1px)}.bookmark-btn:focus-visible,.share-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.bookmark-btn__icon,.share-btn__icon{display:block;flex:none}@media(pointer: coarse){.bookmark-btn,.share-btn{width:40px;height:40px}}.bookmark-btn.is-copied,.share-btn.is-copied{color:var(--accent)}.bookmark-btn.is-copy-failed,.share-btn.is-copy-failed{color:#f87171}.bookmark-btn.is-saved,.share-btn.is-saved{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.bookmark-btn.is-saved .bookmark-btn__icon path,.share-btn.is-saved .bookmark-btn__icon path{fill:currentColor}.bookmark-btn__badge,.share-btn__badge{display:none;position:absolute;top:-5px;right:-5px;width:13px;height:13px;align-items:center;justify-content:center;color:var(--accent-ink);background:var(--accent);border-radius:50%;border:1.5px solid var(--bg)}.bookmark-btn.is-saved .bookmark-btn__badge,.share-btn.is-saved .bookmark-btn__badge{display:inline-flex}.article__meta{display:flex;align-items:center;gap:var(--gap-2);margin-top:var(--gap-2)}.lesson-badge{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;margin-left:7px;vertical-align:middle;color:var(--bg);background:var(--text);border-radius:50%}.lesson-badge[hidden]{display:none}.track-progress{display:flex;align-items:center;gap:var(--gap-2);margin:0 0 var(--gap-2)}.track-progress__bar{flex:1;max-width:220px;height:6px;background:var(--surface-2);border-radius:var(--radius-full);overflow:hidden}.track-progress__fill{display:block;width:0;height:100%;background:var(--text);border-radius:inherit}.track-progress__label{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted);white-space:nowrap}.home-hero{padding:var(--gap-4) 0 var(--gap-2)}.home-hero__title{font-size:var(--text-4xl);font-weight:700;letter-spacing:-0.03em;line-height:1.15;margin:0 0 var(--gap-2)}.home-hero__desc{color:var(--muted);font-size:var(--text-md);font-weight:300;line-height:var(--lh-prose);margin:0;max-width:42rem}.track-grid{margin-top:var(--gap-4);display:grid;grid-template-columns:repeat(auto-fill, minmax(240px, 1fr));gap:var(--gap-3)}.track-card{display:flex;flex-direction:column;gap:var(--gap-1);padding:var(--gap-4);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);color:inherit;text-decoration:none;transition:border-color .2s cubic-bezier(0.16, 1, 0.3, 1),box-shadow .2s cubic-bezier(0.16, 1, 0.3, 1),transform .2s cubic-bezier(0.16, 1, 0.3, 1)}.track-card:hover,.track-card:focus-visible{border-color:var(--text);box-shadow:var(--shadow-sm);text-decoration:none}.track-card__title{margin:0;font-family:var(--font-mono);font-size:var(--text-md);font-weight:700;letter-spacing:-0.02em}.track-card:hover .track-card__title{text-decoration:underline;text-underline-offset:3px}.track-card__desc{margin:0;color:var(--muted);font-size:var(--fs-sm);font-weight:300;line-height:var(--lh);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.track-card__meta{margin-top:auto;padding-top:var(--gap-3);display:flex;align-items:center;gap:var(--gap-2);flex-wrap:wrap;border-top:1px solid var(--border);font-family:var(--font-mono);font-size:.72rem}.track-card__cat{font-size:.68rem;font-weight:500;color:var(--muted);background:rgba(0,0,0,0);border:1px solid var(--border);padding:2px 8px;border-radius:var(--radius-sm);white-space:nowrap}.track-card__count{margin-left:auto;font-size:.72rem;color:var(--muted);white-space:nowrap}.track-tree{margin-top:var(--gap-4)}.track-tree__module{padding:var(--gap-4) 0;border-top:1px solid var(--border)}.track-tree__module:last-child{border-bottom:1px solid var(--border)}.track-tree__modhead{display:flex;align-items:baseline;gap:var(--gap-2)}.track-tree__modno{flex:none;padding:3px 8px;font-family:var(--font-mono);font-size:.72rem;font-weight:600;color:var(--text-secondary);background:var(--surface-2);border-radius:4px;font-variant-numeric:tabular-nums;align-self:center}.track-tree__modlink{font-family:var(--font-mono);font-size:var(--text-lg);font-weight:700;color:var(--text)}.track-tree__modlink:hover{color:var(--text);text-decoration:underline}.track-tree__modcount{margin-left:auto;flex:none;font-family:var(--font-mono);font-size:.72rem;color:var(--muted);white-space:nowrap}.track-tree__moddesc{margin:var(--gap-1) 0 0;font-size:var(--fs-sm);font-weight:300;color:var(--muted)}.track-tree__lessons{list-style:none;counter-reset:lesson;margin:var(--gap-2) 0 0;padding:0}.track-tree__lesson{counter-increment:lesson;position:relative;padding:5px 0 5px 30px}.track-tree__lesson::before{content:counter(lesson, decimal-leading-zero);position:absolute;left:0;top:7px;font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted);font-variant-numeric:tabular-nums}.track-tree__lesson.is-done::before{color:var(--text);font-weight:700}.track-tree__lessonlink{display:block;font-weight:700;color:var(--text);font-size:var(--fs-sm)}.track-tree__lessonlink:hover{color:var(--text);text-decoration:underline}.track-tree__lesson.is-done .track-tree__lessonlink{color:var(--muted)}.track-tree__lessondesc{display:-webkit-box;margin-top:2px;font-size:var(--fs-xs);color:var(--muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.section-header{margin-bottom:var(--gap-4)}.section-header__cat{margin:0 0 var(--gap-1);font-family:var(--font-mono);font-size:var(--fs-2xs);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.section-header__cat a{color:inherit}.section-header__cat a:hover{color:var(--text);text-decoration:none}.section-header__title{font-size:var(--text-3xl);font-weight:700;letter-spacing:-0.03em;margin:0 0 var(--gap-2)}.section-header__desc{color:var(--muted);font-size:var(--text-md);font-weight:300;line-height:var(--lh-prose);margin:0}.page-list{list-style:none;counter-reset:lesson;margin:var(--gap-3) 0 0;padding:0}.page-list__item{padding:var(--gap-3) 0;border-bottom:1px solid var(--border)}.page-list__item:last-child{border-bottom:0}.page-list__item--lesson{counter-increment:lesson;position:relative;padding-left:30px}.page-list__item--lesson::before{content:counter(lesson, decimal-leading-zero);position:absolute;left:0;top:calc(var(--gap-3) + 2px);font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted);font-variant-numeric:tabular-nums}.page-list__item--lesson.is-done::before{color:var(--text);font-weight:700}.page-list__item--lesson.is-done .page-list__title{color:var(--muted)}.page-list__link{display:flex;align-items:baseline;justify-content:space-between;gap:var(--gap-2);color:var(--text)}.page-list__link:hover{color:var(--text);text-decoration:none}.page-list__link:hover .page-list__title{text-decoration:underline;text-underline-offset:2px}.page-list__title{font-weight:700}.page-list__count{font-family:var(--font-mono);font-size:.72rem;color:var(--muted);white-space:nowrap}.page-list__desc{margin:2px 0 0;font-size:var(--fs-sm);font-weight:300;color:var(--muted);max-width:40rem}.page-list__desc a{color:var(--text-secondary);text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--border-strong)}.page-list__desc a:hover{color:var(--text)}.search-suggest{position:absolute;top:calc(100% + 6px);left:0;width:max(100%,300px);background:var(--bg-glass);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:70;overflow:hidden}.search-suggest[hidden]{display:none}.search-suggest__list{list-style:none;margin:0;padding:4px;max-height:min(60vh,380px);overflow-y:auto;scrollbar-width:thin}.search-suggest__item a{display:flex;flex-direction:column;gap:1px;padding:8px 10px;border-radius:var(--radius-sm);color:var(--text)}.search-suggest__item a:hover,.search-suggest__item a.is-active{background:var(--surface);text-decoration:none}.search-suggest__title{font-size:var(--fs-sm);font-weight:600}.search-suggest__title b{color:var(--text);font-weight:700}.search-suggest__crumb{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted)}.search-suggest__all{display:block;padding:8px 14px;border-top:1px solid var(--border);font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted)}.search-suggest__all b{font-weight:700;color:var(--text)}.search-suggest__all:hover{background:var(--surface);text-decoration:none}.search-page{max-width:var(--article-max)}.search-status{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--muted);margin:0 0 var(--gap-3)}.search-notice{margin:0 0 var(--gap-3);padding:var(--gap-2) var(--gap-4);border-left:3px solid var(--text);background:var(--accent-subtle);border-radius:var(--radius-sm);font-size:var(--fs-sm)}.search-notice[hidden]{display:none}.search-notice p{margin:0}.search-notice p+p{margin-top:var(--gap-1)}.search-notice__suggest{color:var(--muted)}.search-notice__fix{padding:0;border:0;background:none;color:var(--text);font:inherit;font-style:italic;font-weight:600;text-decoration:underline;cursor:pointer}.search-notice__fix:hover{color:var(--text);text-decoration:none}.search-results{list-style:none;margin:0;padding:0}.search-results li{padding:var(--gap-3) 0;border-bottom:1px solid var(--border)}.search-results a{font-weight:600;color:var(--text)}.search-results a:hover{text-decoration:underline;text-underline-offset:2px}.search-results__crumb{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted);margin:1px 0}.search-results__snippet{margin:2px 0 0;font-size:var(--fs-sm);color:var(--muted)}.search-pager{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:4px;margin:var(--gap-4) 0 0;font-family:var(--font-mono)}.search-pager[hidden]{display:none}.search-pager__page{min-width:32px;height:32px;padding:0 6px;font:inherit;font-size:var(--fs-sm);font-weight:600;color:var(--muted);background:rgba(0,0,0,0);border:1px solid rgba(0,0,0,0);border-radius:var(--radius-sm);cursor:pointer;transition:color .2s cubic-bezier(0.16, 1, 0.3, 1),background-color .2s cubic-bezier(0.16, 1, 0.3, 1),border-color .2s cubic-bezier(0.16, 1, 0.3, 1)}.search-pager__page:hover:not(:disabled):not(.is-current){color:var(--text-secondary);border-color:var(--border)}.search-pager__page:disabled{color:var(--muted);opacity:.4;cursor:default}.search-pager__page.is-current{color:var(--accent-ink);font-weight:600;background:var(--accent);border-color:var(--accent);cursor:default}.search-pager__page:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.search-pager__dots{padding:0 2px;color:var(--muted);user-select:none}.bookmark-toolbar{display:flex;align-items:center;gap:var(--gap-2);margin:var(--gap-3) 0 0}.bookmark-toolbar__label{font-family:var(--font-mono);font-size:var(--fs-sm);color:var(--muted)}.bookmark-toolbar__select{font-family:var(--font-mono);font-size:.8rem;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 8px;cursor:pointer;box-shadow:var(--shadow-sm)}.bookmark-toolbar__select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.bookmark-group+.bookmark-group{margin-top:var(--gap-4)}.bookmark-group__title{margin:0;padding-bottom:var(--gap-2);border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);display:flex;align-items:baseline;gap:var(--gap-2)}.bookmark-group__count{font-family:var(--font-mono);font-weight:400;text-transform:none;letter-spacing:0}.bookmark-group__list{list-style:none;margin:0;padding:0}.bookmark-list{list-style:none;margin:0;padding:0}.bookmark-list .bookmark-item{display:flex;align-items:baseline;gap:var(--gap-3);padding:var(--gap-3) 0;border-bottom:1px solid var(--border)}.bookmark-list .bookmark-item a{flex:1;min-width:0;display:flex;flex-direction:column}.bookmark-list .bookmark-item__title{font-weight:600;color:var(--text)}.bookmark-list .bookmark-item a:hover .bookmark-item__title{color:var(--text);text-decoration:underline;text-underline-offset:2px}.bookmark-list .bookmark-item__crumb{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted)}.bookmark-list .bookmark-item__remove{font-family:var(--font-mono);font-size:var(--fs-2xs);color:var(--muted);background:rgba(0,0,0,0);border:1px solid var(--border);border-radius:var(--radius-sm);padding:2px 8px;cursor:pointer;flex:none;transition:color .2s cubic-bezier(0.16, 1, 0.3, 1),border-color .2s cubic-bezier(0.16, 1, 0.3, 1)}.bookmark-list .bookmark-item__remove:hover{color:var(--danger);border-color:var(--danger)}.article{max-width:var(--article-max)}.article__header{margin-bottom:var(--gap-4)}.article__title{font-size:var(--text-3xl);font-weight:700;letter-spacing:-0.03em;line-height:1.15;margin:0 0 var(--gap-2)}.article__lead{color:var(--muted);font-size:var(--text-md);font-weight:300;line-height:var(--lh-prose);margin:0 0 var(--gap-3);max-width:42rem}.article__lead a{color:var(--text-secondary);text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--border-strong)}.article__lead a:hover{color:var(--text)}.article__meta{display:flex;align-items:center;gap:var(--gap-2)}.article__body{font-size:var(--text-md);font-weight:400;line-height:var(--lh-prose);color:var(--text)}.article__body p{margin:0 0 var(--gap-4);color:var(--text-secondary)}.article__body strong{color:var(--text);font-weight:600}.article__body a{color:var(--text);text-decoration:underline;text-decoration-color:var(--border-strong);text-decoration-thickness:1.5px;text-underline-offset:.2em;font-weight:500}.article__body a:hover{color:var(--text);background:var(--accent-subtle);text-decoration-color:var(--text)}.article__body h2{font-size:var(--text-2xl);margin:var(--gap-5) 0 var(--gap-2);padding-bottom:0;border-bottom:0}.article__body h3{font-size:var(--text-xl);margin:var(--gap-4) 0 var(--gap-2)}.article__body h4{font-size:var(--text-lg);margin:var(--gap-3) 0 var(--gap-1)}.article__body h5,.article__body h6{margin:var(--gap-3) 0 var(--gap-1)}.article__body ul,.article__body ol{margin:0 0 var(--gap-4);padding-left:1.35rem}.article__body ul{list-style-type:square}.article__body li{margin:0 0 var(--gap-1);padding-left:.2rem}.article__body li>ul,.article__body li>ol{margin:2px 0 4px}.article__body ul li::marker,.article__body ol li::marker{color:var(--muted)}.article__body dl{margin:0 0 var(--gap-4)}.article__body dt{font-weight:600;color:var(--text)}.article__body dd{margin:0 0 var(--gap-2) 1.35rem}.article__body math{font-size:1.06em}.article__body math[display=block]{margin:var(--gap-2) 0}.article__body mtable{column-gap:1.25em;row-gap:.3em}.article__body .math--block{margin:var(--gap-4) 0;overflow-x:auto;text-align:center}.article__body kbd{background:var(--surface-2);border:1px solid var(--border-strong);border-bottom-width:3px;border-radius:4px;padding:.1em .35em;font-size:.8em;box-shadow:0 1px 1px rgba(0,0,0,.05)}.article__body img{margin:var(--gap-4) 0;border:1px solid var(--border);border-radius:var(--radius-sm)}.article__body figure{margin:var(--gap-4) 0}.article__body figcaption{margin-top:var(--gap-2);font-size:var(--fs-sm);font-style:italic;color:var(--muted);text-align:center}.article__body blockquote:not(.callout){border-left:3px solid var(--text);padding:var(--gap-2) var(--gap-4);margin:var(--gap-4) 0;font-family:var(--font-serif);font-size:var(--text-lg);font-style:italic;line-height:1.35;color:var(--text)}.article__body blockquote:not(.callout) p{color:inherit;margin-bottom:0}.article__body>hr{margin:var(--gap-5) 0}.article__body>*:last-child{margin-bottom:0}.article__body--section{max-width:var(--article-max);margin-bottom:var(--gap-2);font-size:var(--text-md);line-height:var(--lh-prose)}.article__body--section p:last-child{margin-bottom:0}