@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-wght-normal.BOeWTOD4.woff2)format("woff2-variations");unicode-range:U+460-52F,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(/_astro/inter-cyrillic-wght-normal.DqGufNeO.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-ext-wght-normal.DlzME5K_.woff2)format("woff2-variations");unicode-range:U+1F??}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-greek-wght-normal.CkhJZR-_.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-vietnamese-wght-normal.CBcvBZtf.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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(/_astro/inter-latin-wght-normal.Dx4kXJAl.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,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;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-400-normal.6-qcROiO.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-500-normal.CJOVTJB7.woff)format("woff")}@font-face{font-family:JetBrains Mono;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/jetbrains-mono-latin-700-normal.BYuf6tUa.woff2)format("woff2"),url(/_astro/jetbrains-mono-latin-700-normal.D3wTyLJW.woff)format("woff")}:root{--bg:oklch(98.5% .004 250);--bg-soft:oklch(96.5% .006 250);--surface:oklch(100% 0 0);--surface-2:oklch(97.5% .005 250);--fg:oklch(22% .02 240);--fg-soft:oklch(36% .02 240);--muted:oklch(52% .018 240);--border:oklch(90% .008 240);--border-strong:oklch(82% .012 240);--accent:oklch(55% .16 145);--accent-soft:oklch(96% .04 145);--accent-fg:oklch(28% .1 145);--violet:oklch(52% .18 295);--violet-soft:oklch(96% .04 295);--warn:oklch(70% .14 75);--warn-soft:oklch(96% .05 75);--warn-fg:oklch(50% .12 65);--danger:oklch(60% .2 25);--danger-soft:oklch(96% .04 25);--info:oklch(62% .13 240);--info-soft:oklch(96% .03 240);--font-sans:"Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;--font-mono:"JetBrains Mono", "IBM Plex Mono", ui-monospace, Menlo, monospace;--radius-sm:4px;--radius:6px;--radius-lg:10px;--shadow-sm:0 1px 2px oklch(20% .02 240/.04);--shadow:0 4px 16px oklch(20% .02 240/.06), 0 1px 2px oklch(20% .02 240/.05);--container:1280px;--nav-h:56px;--sidebar-w:264px;--toc-w:220px;color-scheme:light}[data-theme=dark]{--bg:oklch(16% .014 250);--bg-soft:oklch(19% .014 250);--surface:oklch(20% .014 250);--surface-2:oklch(23% .014 250);--fg:oklch(94% .008 240);--fg-soft:oklch(80% .012 240);--muted:oklch(67% .014 240);--border:oklch(28% .016 240);--border-strong:oklch(36% .018 240);--accent:oklch(72% .18 145);--accent-soft:oklch(28% .06 145);--accent-fg:oklch(85% .12 145);--violet:oklch(72% .18 295);--violet-soft:oklch(28% .06 295);--warn:oklch(78% .15 80);--warn-soft:oklch(28% .06 80);--warn-fg:oklch(78% .15 80);--danger:oklch(70% .2 25);--danger-soft:oklch(28% .08 25);--info:oklch(72% .14 240);--info-soft:oklch(28% .06 240);--shadow-sm:0 1px 2px oklch(0% 0 0/.3);--shadow:0 8px 24px oklch(0% 0 0/.4), 0 1px 2px oklch(0% 0 0/.3);color-scheme:dark}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);font-feature-settings:"cv11", "ss01";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-size-adjust:100%;margin:0;padding:0;font-size:14px;line-height:1.55}a{color:inherit;text-decoration:none}a:hover{color:var(--accent)}:focus{outline:0}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.btn-primary:focus-visible,.btn-ghost:focus-visible,.icon-btn:focus-visible,.search-btn:focus-visible,.cmd-inline:focus-visible{outline-offset:2px}.skip-link{background:var(--accent);color:var(--bg);border-radius:var(--radius);z-index:200;padding:8px 12px;font-weight:600;position:absolute;top:0;left:-9999px}.skip-link:focus{top:12px;left:12px}::selection{background:var(--accent-soft);color:var(--accent-fg)}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:0}input,select,textarea{font:inherit;color:inherit}code,pre,kbd,samp{font-family:var(--font-mono)}.numeric{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono)}.nav{z-index:50;height:var(--nav-h);background:color-mix(in oklab, var(--bg) 90%, transparent);-webkit-backdrop-filter:saturate(140%)blur(10px);border-bottom:1px solid var(--border);position:sticky;top:0}.nav-inner{max-width:var(--container);align-items:center;gap:24px;height:100%;margin:0 auto;padding:0 24px;display:flex}.brand{letter-spacing:-.01em;align-items:center;gap:10px;font-weight:600;display:flex}.brand-mark{background:linear-gradient(135deg, var(--accent) 0%, var(--violet) 100%);border-radius:6px;flex:none;width:26px;height:26px;position:relative}.brand-mark:after{content:"";background:var(--bg);border-radius:3px;position:absolute;inset:6px;mask:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'><path d='M2 12 L8 2 L14 12 L11 12 L8 7 L5 12 Z' fill='black'/></svg>") 50%/14px 14px no-repeat}.brand-name{font-size:14px}.brand-name span{color:var(--muted);font-weight:400}.nav-links{align-items:center;gap:4px;margin-left:8px;display:flex}.nav-links a{border-radius:var(--radius);color:var(--fg-soft);padding:6px 10px;font-size:13px}.nav-links a:hover{background:var(--surface-2);color:var(--fg)}.nav-links a[aria-current=page],.nav-links a[aria-current=true]{color:var(--fg);background:var(--surface-2)}.nav-spacer{flex:1}.nav-right{align-items:center;gap:8px;display:flex}.search-btn{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);height:32px;color:var(--muted);align-items:center;gap:10px;min-width:240px;padding:0 10px;font-size:13px;transition:border-color .12s;display:flex}.search-btn:hover{border-color:var(--border-strong)}.search-btn .kbd{font-family:var(--font-mono);border:1px solid var(--border);color:var(--muted);background:var(--surface);border-radius:3px;margin-left:auto;padding:1px 5px;font-size:11px}.icon-btn{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);width:32px;height:32px;color:var(--fg-soft);justify-content:center;align-items:center;transition:border-color .12s,color .12s;display:inline-flex}.icon-btn:hover{border-color:var(--border-strong);color:var(--fg)}.icon-btn svg{width:16px;height:16px}.btn-primary{border-radius:var(--radius);background:var(--fg);height:32px;color:var(--bg);border:1px solid var(--fg);align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:500;transition:opacity .12s;display:inline-flex}.btn-primary:hover{color:var(--bg);opacity:.88}.btn-ghost{border-radius:var(--radius);border:1px solid var(--border);background:var(--surface);height:32px;color:var(--fg);align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:500;display:inline-flex}.btn-ghost:hover{border-color:var(--border-strong);color:var(--fg)}.btn-accent{border-radius:var(--radius);background:var(--accent-soft);height:32px;color:var(--accent-fg);border:1px solid color-mix(in oklab, var(--accent) 30%, transparent);align-items:center;gap:6px;padding:0 12px;font-size:13px;font-weight:600;display:inline-flex}.menu-btn{display:none}.wrap{max-width:var(--container);margin:0 auto;padding:0 24px}.divider{border:0;border-top:1px solid var(--border);margin:32px 0}.pill{height:22px;font-size:11px;font-weight:500;font-family:var(--font-mono);border:1px solid var(--border);background:var(--surface-2);color:var(--fg-soft);letter-spacing:.01em;border-radius:999px;align-items:center;gap:6px;padding:0 8px;display:inline-flex}.pill .dot{background:currentColor;border-radius:999px;width:6px;height:6px}.pill-accent{color:var(--accent-fg);background:var(--accent-soft);border-color:color-mix(in oklab, var(--accent) 25%, transparent)}.pill-violet{color:var(--violet);background:var(--violet-soft);border-color:color-mix(in oklab, var(--violet) 25%, transparent)}.pill-warn{color:var(--warn);background:var(--warn-soft);border-color:color-mix(in oklab, var(--warn) 25%, transparent)}.pill-danger{color:var(--danger);background:var(--danger-soft);border-color:color-mix(in oklab, var(--danger) 25%, transparent)}.pill-info{color:var(--info);background:var(--info-soft);border-color:color-mix(in oklab, var(--info) 25%, transparent)}code:not(pre code){background:var(--surface-2);border:1px solid var(--border);color:var(--fg);border-radius:4px;padding:1px 5px;font-size:.92em}pre{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius);font-variant-ligatures:none;margin:0;padding:16px;font-size:12.5px;line-height:1.6;overflow-x:auto}.astro-code,pre.astro-code,[data-theme=dark] .astro-code,[data-theme=dark] pre.astro-code{background:var(--surface-2)!important}[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important}.code-block{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);margin:16px 0;position:relative;overflow:hidden}.code-block .code-head{background:var(--surface);border-bottom:1px solid var(--border);height:32px;color:var(--muted);font-size:11.5px;font-family:var(--font-mono);align-items:center;padding:0 12px;display:flex}.code-block .code-head .copy{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:4px;margin-left:auto;padding:2px 8px;font-size:11px}.code-block .code-head .copy:hover{background:var(--surface-2);color:var(--fg)}.code-block pre{background:0 0;border:0;border-radius:0}.gh-stars{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);align-items:stretch;height:32px;font-size:12.5px;font-weight:500;transition:border-color .12s;display:inline-flex;overflow:hidden}.gh-stars:hover{border-color:var(--border-strong);color:var(--fg)}.gh-stars .gh-label{color:var(--fg-soft);align-items:center;gap:6px;padding:0 10px;display:inline-flex}.gh-stars .gh-label svg{width:14px;height:14px}.gh-stars .gh-count{background:var(--surface);color:var(--fg);font-family:var(--font-mono);font-variant-numeric:tabular-nums;border-left:1px solid var(--border);justify-content:center;align-items:center;min-width:36px;padding:0 10px;display:inline-flex}.gh-stars[data-loaded=true] .gh-count{color:var(--accent-fg);background:var(--accent-soft)}.gh-stars .gh-count:before{content:"★";color:var(--warn);font-size:12px;font-family:var(--font-sans);margin-right:4px}@media (width<=1080px){.gh-stars .gh-label{padding:0 8px}.gh-stars .gh-label-text{display:none}}.callout{border:1px solid var(--border);border-left:3px solid var(--info);border-radius:var(--radius);background:var(--info-soft);color:var(--fg-soft);grid-template-columns:20px 1fr;gap:12px;margin:14px 0 22px;padding:14px 16px;font-size:13.5px;line-height:1.55;display:grid}.callout>svg{width:18px;height:18px;color:var(--info);flex:none;margin-top:1px}.callout>div{min-width:0}.callout strong{color:var(--fg);font-weight:600}.callout.info{border-left-color:var(--info);background:var(--info-soft)}.callout.tip,.callout.success{border-left-color:var(--accent);background:var(--accent-soft)}.callout.tip>svg,.callout.success>svg{color:var(--accent)}.callout.warn{border-left-color:var(--warn);background:var(--warn-soft)}.callout.warn>svg{color:var(--warn)}.callout.danger{border-left-color:var(--danger);background:var(--danger-soft)}.callout.danger>svg{color:var(--danger)}.cmd-inline{font-family:var(--font-mono);color:var(--fg);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);letter-spacing:-.01em;white-space:nowrap;padding:3px 7px;font-size:12.5px}a.cmd-inline:hover{border-color:var(--accent);color:var(--accent-fg);background:var(--accent-soft)}.status-coming{color:var(--warn-fg);font-family:var(--font-mono);align-items:center;gap:6px;font-size:11.5px;display:inline-flex}.status-coming:before{content:"";background:var(--warn);width:6px;height:6px;box-shadow:0 0 0 3px color-mix(in oklab, var(--warn) 22%, transparent);border-radius:999px}.mobile-menu{inset:var(--nav-h) 0 0 0;z-index:40;background:var(--bg);border-top:1px solid var(--border);flex-direction:column;display:none;position:fixed;overflow-y:auto}.mobile-menu[data-open=true]{display:flex}.mobile-menu nav{flex-direction:column;gap:2px;padding:12px 16px 24px;display:flex}.mobile-menu nav a{border-radius:var(--radius);color:var(--fg);border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:14px;font-size:16px;display:flex}.mobile-menu nav a:last-child{border-bottom:0}.mobile-menu nav a:hover{background:var(--surface-2)}body.menu-open{overflow:hidden}.search-overlay{-webkit-backdrop-filter:blur(2px);z-index:100;background:oklch(15% .01 240/.5);justify-content:center;align-items:flex-start;padding:clamp(20px,8vh,80px) 12px 12px;display:none;position:fixed;inset:0}.search-overlay[data-open=true]{display:flex}.search-panel{background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-lg);width:100%;max-width:600px;box-shadow:var(--shadow);flex-direction:column;max-height:calc(100dvh - 40px);display:flex;overflow:hidden}.search-input-wrap{border-bottom:1px solid var(--border);flex:none;align-items:center;gap:12px;padding:14px 16px;display:flex}.search-input-wrap>svg{color:var(--muted);flex:none}.search-input-wrap input{color:var(--fg);font-size:16px;font-family:var(--font-sans);appearance:none;background:0 0;border:0;outline:0;flex:1;min-width:0}.search-input-wrap input::-webkit-search-cancel-button{display:none}.esc-btn{border:1px solid var(--border);font-family:var(--font-mono);color:var(--muted);background:var(--surface-2);cursor:pointer;border-radius:4px;flex:none;padding:4px 8px;font-size:11px}.esc-btn:hover{color:var(--fg);border-color:var(--border-strong)}.search-results{flex:1;padding:8px;overflow-y:auto}.search-group-label{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);font-size:10.5px;font-family:var(--font-mono);padding:10px 12px 6px}.search-item{border-radius:var(--radius);cursor:pointer;color:inherit;align-items:center;gap:12px;min-height:44px;padding:9px 12px;text-decoration:none;display:flex}.search-item:hover,.search-item:focus-visible{background:var(--surface-2);outline:0}.search-item .search-name{font-family:var(--font-mono);color:var(--fg);flex:none;font-size:13px}.search-item .search-desc{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:12px;overflow:hidden}.search-empty{text-align:center;color:var(--muted);padding:32px 16px;font-size:13px}.site-footer{border-top:1px solid var(--border);color:var(--muted);margin-top:80px;padding:32px 0 40px;font-size:12.5px}.site-footer .wrap{flex-wrap:wrap;align-items:center;gap:16px;display:flex}.site-footer .footer-links{gap:18px;margin-left:auto;display:flex}.site-footer a:hover{color:var(--fg)}@media (width<=900px){.nav-links{display:none}.search-btn{min-width:auto;padding:0 10px}.search-btn .search-label,.search-btn .kbd{display:none}.menu-btn{display:inline-flex}}@media (width<=720px){.nav .btn-primary,.nav .btn-ghost{display:none}.nav-inner{gap:12px;padding:0 16px}.nav-right{gap:6px}}@media (width<=560px){.brand-name span{display:none}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
