@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-ext-wght-normal.d45eAU9y.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-cyrillic-wght-normal.BAAhND-U.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-greek-wght-normal.CmyJS8uq.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-vietnamese-wght-normal.Dg1JeJN0.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-ext-wght-normal.CIII54If.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:IBM Plex Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/_astro/ibm-plex-sans-latin-wght-normal.IvpUvPa2.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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-ext-wght-normal.EocZY2iu.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-cyrillic-wght-normal.D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-greek-wght-normal.Bw9x6K1M.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-vietnamese-wght-normal.Bt-aOZkq.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.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}:root{color-scheme:dark;--bg:#0e0d16;--bg-rgb:14 13 22;--bg-sunk:#0a0911;--surface:#15141f;--surface-2:#1c1a29;--line:#272536;--line-strong:#363349;--text:#d9d8ea;--text-strong:#f0f0fb;--muted:#9a97b3;--faint:#817e9e;--accent:#c4a0fb;--accent-hover:#d7beff;--accent-dim:#8e6fd0;--accent-ink:#150b26;--accent-wash:#c4a0fb14;--accent-line:#c4a0fb66;--blue:#8cc8f2;--blue-wash:#8cc8f214;--pink:#ee9fd5;--pink-wash:#ee9fd514;--indigo:#7a7cf0;--amber:#f0c27a;--amber-wash:#f0c27a14;--red:#f0919b;--neon:linear-gradient(90deg, #c084fc, #6366f1 55%, #38bdf8);--sans:"IBM Plex Sans Variable", "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--mono:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--step--1:.8125rem;--step-0:1.0625rem;--step-1:1.25rem;--step-2:clamp(1.4rem, 1.2rem + .8vw, 1.75rem);--step-3:clamp(1.75rem, 1.4rem + 1.5vw, 2.5rem);--step-4:clamp(2.5rem, 1.6rem + 4vw, 4.6rem);--gutter:clamp(1rem, 4vw, 2.5rem);--max:76rem;--measure:40rem;--radius:3px;--header-h:3.5rem}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 1.5rem)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:var(--step-0);font-feature-settings:"kern", "liga";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;line-height:1.65}figure{margin:0}img,svg,video{max-width:100%;height:auto;display:block}h1,h2,h3,h4{color:var(--text-strong);letter-spacing:-.015em;text-wrap:balance;margin:0;font-weight:600;line-height:1.15}p{text-wrap:pretty;margin:0}ul,ol{margin:0;padding:0}a{color:var(--accent);text-underline-offset:.2em;text-decoration:underline 1px;text-decoration-color:var(--accent-line);transition:text-decoration-color .12s,color .12s}a:hover{text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:1px}::selection{color:var(--text-strong);background:#c4a0fb4d}code,kbd,pre,samp{font-family:var(--mono);font-variant-ligatures:none;font-size:.875em}hr{border:0;border-top:1px solid var(--line);margin:0}[hidden]{display:none!important}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.skip-link{left:var(--gutter);z-index:100;background:var(--accent);color:var(--accent-ink);font-family:var(--mono);font-size:var(--step--1);border-radius:var(--radius);padding:.5rem .875rem;text-decoration:none;position:absolute;top:-4rem}.skip-link:focus{top:.75rem}.wrap{width:100%;max-width:var(--max);padding-inline:var(--gutter);margin-inline:auto}.section{border-top:1px solid var(--line);padding-block:clamp(3.5rem,8vw,6.5rem)}.split{gap:1.25rem 3rem;display:grid}@media (width>=60rem){.split{grid-template-columns:minmax(10rem,15rem) minmax(0,1fr)}}.split>*,.two>*,.hero-grid>*{min-width:0}.stack>*+*{margin-top:var(--space,1.25rem)}.label{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:500}.label .n{color:var(--accent);margin-right:.6em}.lede{font-size:var(--step-1);color:var(--text);max-width:38rem;line-height:1.55}.muted{color:var(--muted)}.mono{font-family:var(--mono);font-size:.9em}.h2{font-size:var(--step-3)}.h3{font-size:var(--step-1)}:not(pre)>code{color:var(--text-strong);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);white-space:break-spaces;overflow-wrap:anywhere;padding:.08em .36em;font-size:.84em}a>code,a:not(.btn) code{color:inherit}.btn{border-radius:var(--radius);border:1px solid var(--line-strong);min-height:2.75rem;color:var(--text-strong);font-family:var(--mono);background:0 0;align-items:center;gap:.55rem;padding:.55rem 1.1rem;font-size:.875rem;font-weight:500;text-decoration:none;transition:background-color .12s,border-color .12s,color .12s;display:inline-flex}.btn:hover{border-color:var(--muted);background:var(--surface)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.btn .arrow{transition:transform .14s}.btn:hover .arrow{transform:translate(2px)}.btn-row{flex-wrap:wrap;gap:.75rem;display:flex}.more{font-family:var(--mono);align-items:baseline;gap:.5rem;font-size:.875rem;text-decoration:none;display:inline-flex}.more:after{content:"→";transition:transform .14s}.more:hover:after{transform:translate(3px)}.dot{background:var(--accent);border-radius:50%;flex:none;width:.45rem;height:.45rem;display:inline-block}.dot.blue{background:var(--blue)}.dot.amber{background:var(--amber)}.dot.off{box-shadow:inset 0 0 0 1px var(--faint);background:0 0}.code{background:var(--bg-sunk);border:1px solid var(--line);border-radius:var(--radius);margin-inline:0;min-width:0;margin-bottom:0;position:relative}.code-head{border-bottom:1px solid var(--line);min-height:2.25rem;font-family:var(--mono);color:var(--muted);justify-content:space-between;align-items:center;gap:1rem;padding:0 .5rem 0 .9rem;font-size:.75rem;display:flex}.code-head .file{color:var(--text)}.code pre,.prose pre{color:var(--text);tab-size:2;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;margin:0;padding:.95rem 1.1rem;font-size:.8125rem;line-height:1.7;overflow-x:auto}.code pre code,.prose pre code{font-size:inherit}.copy{font-family:var(--mono);color:var(--muted);border-radius:var(--radius);cursor:pointer;background:0 0;border:1px solid #0000;padding:.2rem .5rem;font-size:.72rem}.copy:hover{color:var(--text-strong);border-color:var(--line-strong)}.copy[data-state=done]{color:var(--accent)}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:var(--faint);font-style:italic}.token.punctuation{color:#8f8ca8}.token.property,.token.attr-name,.token.variable,.token.parameter{color:var(--blue)}.token.string,.token.char,.token.attr-value,.token.url{color:var(--pink)}.token.keyword,.token.important,.token.atrule,.token.selector{color:var(--accent)}.token.function,.token.builtin,.token.class-name{color:#e6ddff}.token.number,.token.boolean,.token.constant,.token.symbol{color:var(--amber)}.token.operator,.token.entity{color:#b1aec8}.token.antiquotation,.token.interpolation{color:var(--blue)}.callout{--c:var(--blue);--w:var(--blue-wash);border:1px solid var(--line);border-left:2px solid var(--c);background:var(--w);border-radius:0 var(--radius) var(--radius) 0;padding:.95rem 1.15rem;font-size:.975rem}.callout>.label{color:var(--c);margin-bottom:.35rem;display:block}.callout.warn{--c:var(--amber);--w:var(--amber-wash)}.callout.ok{--c:var(--accent);--w:var(--accent-wash)}.callout p+p{margin-top:.5rem}.table-wrap{border:1px solid var(--line);border-radius:var(--radius);scrollbar-width:thin;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.9375rem;line-height:1.5}th,td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:.7rem .95rem}tr:last-child td{border-bottom:0}th{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:var(--surface);white-space:nowrap;font-size:.72rem;font-weight:500}td code{white-space:nowrap}.prose{max-width:var(--measure);min-width:0}.prose>*+*{margin-top:1.1rem}.prose h2{font-size:var(--step-2);border-top:1px solid var(--line);margin-top:3rem;padding-top:1.5rem}.prose h3{font-size:var(--step-1);margin-top:2.25rem}.prose h4{margin-top:1.75rem;font-size:1rem}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:.75rem}.prose ul,.prose ol{padding-left:1.25rem}.prose li+li{margin-top:.4rem}.prose ul>li::marker{color:var(--faint);content:"–  "}.prose ol>li::marker{color:var(--muted);font-family:var(--mono);font-size:.85em}.prose strong{color:var(--text-strong);font-weight:600}.prose pre{background:var(--bg-sunk);border:1px solid var(--line);border-radius:var(--radius)}.prose table{font-size:.9rem}.prose blockquote{border-left:2px solid var(--blue);background:var(--blue-wash);border-radius:0 var(--radius) var(--radius) 0;margin-inline:0;padding:.85rem 1.1rem}.prose blockquote>*+*{margin-top:.5rem}.prose img{border:1px solid var(--line);border-radius:var(--radius)}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.site-header[data-astro-cid-nen7h5rs]{z-index:50;background:rgb(var(--bg-rgb) / .92);border-bottom:1px solid var(--line);position:sticky;top:0}.site-header[data-astro-cid-nen7h5rs]:after{content:"";background:var(--neon);opacity:.5;pointer-events:none;height:1px;position:absolute;bottom:-1px;left:0;right:0}@supports (backdrop-filter:blur(1px)){.site-header[data-astro-cid-nen7h5rs]{background:rgb(var(--bg-rgb) / .8);backdrop-filter:blur(10px)}}.bar[data-astro-cid-nen7h5rs]{height:var(--header-h);align-items:center;gap:2rem;display:flex}.brand[data-astro-cid-nen7h5rs]{color:var(--text-strong);flex:none;align-items:center;gap:.6rem;text-decoration:none;display:inline-flex}.word[data-astro-cid-nen7h5rs]{font-family:var(--mono);letter-spacing:-.01em;font-size:.9375rem;font-weight:600}.dim[data-astro-cid-nen7h5rs]{color:var(--faint);margin-inline:.05em}.nav-desktop[data-astro-cid-nen7h5rs]{display:none}.nav-desktop[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{gap:.25rem;list-style:none;display:flex}.nav-desktop[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{color:var(--muted);border-radius:var(--radius);padding:.4rem .7rem;font-size:.9rem;text-decoration:none;display:block}.nav-desktop[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover{color:var(--text-strong)}.nav-desktop[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current=page]{color:var(--text-strong);box-shadow:inset 0 -1px 0 var(--accent);border-radius:0}.actions[data-astro-cid-nen7h5rs]{align-items:center;gap:1rem;margin-left:auto;display:none}.gh[data-astro-cid-nen7h5rs]{color:var(--muted);font-family:var(--mono);align-items:center;gap:.6rem;font-size:.78rem;text-decoration:none;display:inline-flex}.gh[data-astro-cid-nen7h5rs]:hover{color:var(--text-strong)}.ver[data-astro-cid-nen7h5rs]{border:1px solid var(--line);border-radius:999px;align-items:center;gap:.4rem;padding:.15rem .5rem;display:inline-flex}.btn-sm[data-astro-cid-nen7h5rs]{min-height:2.1rem;padding:.3rem .85rem;font-size:.8125rem}.nav-mobile[data-astro-cid-nen7h5rs]{margin-left:auto}.nav-mobile[data-astro-cid-nen7h5rs] summary[data-astro-cid-nen7h5rs]{border:1px solid var(--line-strong);border-radius:var(--radius);min-height:2.5rem;font-family:var(--mono);color:var(--text);cursor:pointer;align-items:center;gap:.5rem;padding:0 .75rem;font-size:.8125rem;list-style:none;display:inline-flex}.nav-mobile[data-astro-cid-nen7h5rs] summary[data-astro-cid-nen7h5rs]::-webkit-details-marker{display:none}.nav-mobile[data-astro-cid-nen7h5rs][open] summary[data-astro-cid-nen7h5rs]{border-color:var(--accent);color:var(--accent)}.nav-mobile[data-astro-cid-nen7h5rs] nav[data-astro-cid-nen7h5rs]{left:0;right:0;top:var(--header-h);background:var(--bg);border-bottom:1px solid var(--line);padding:.5rem var(--gutter) 1.25rem;max-height:calc(100dvh - var(--header-h));position:absolute;overflow-y:auto}.nav-mobile[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{list-style:none}.nav-mobile[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{border-bottom:1px solid var(--line);color:var(--text);padding:.8rem 0;text-decoration:none;display:block}.nav-mobile[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current=page]{color:var(--accent)}@media (width>=64rem){.nav-desktop[data-astro-cid-nen7h5rs],.actions[data-astro-cid-nen7h5rs]{display:flex}.nav-mobile[data-astro-cid-nen7h5rs]{display:none}}.site-footer[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--line);margin-top:0;padding-top:3.5rem;font-size:.9rem}.grid[data-astro-cid-jo6i4kqk]{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:2.5rem;display:grid}.about[data-astro-cid-jo6i4kqk]{grid-column:1/-1;max-width:24rem}@media (width>=60rem){.grid[data-astro-cid-jo6i4kqk]{grid-template-columns:1.6fr repeat(3,1fr)}.about[data-astro-cid-jo6i4kqk]{grid-column:auto}}.brand[data-astro-cid-jo6i4kqk]{color:var(--text-strong);align-items:center;gap:.55rem;margin-bottom:.85rem;font-weight:600;text-decoration:none;display:inline-flex}.about[data-astro-cid-jo6i4kqk] p[data-astro-cid-jo6i4kqk]+p[data-astro-cid-jo6i4kqk]{margin-top:1rem}.rel[data-astro-cid-jo6i4kqk]{color:var(--muted);flex-wrap:wrap;gap:.4rem 1.25rem;font-size:.8rem;display:flex}.rel[data-astro-cid-jo6i4kqk]>span[data-astro-cid-jo6i4kqk]{align-items:center;gap:.45rem;display:inline-flex}nav[data-astro-cid-jo6i4kqk] ul[data-astro-cid-jo6i4kqk]{margin-top:.85rem;list-style:none}nav[data-astro-cid-jo6i4kqk] li[data-astro-cid-jo6i4kqk]+li[data-astro-cid-jo6i4kqk]{margin-top:.45rem}nav[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:var(--text);text-decoration:none}nav[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--accent)}.base[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--line);color:var(--faint);flex-wrap:wrap;justify-content:space-between;gap:.75rem 2rem;margin-top:3rem;padding-block:1.5rem 2rem;font-size:.8rem;display:flex}.base[data-astro-cid-jo6i4kqk] p[data-astro-cid-jo6i4kqk]:first-child{max-width:44rem}.base[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:var(--muted)}main[data-astro-cid-hkbrpulz]:focus{outline:none}
