footer[data-astro-cid-nns7i3if]{padding-block:var(--space-8);border-top:1px solid var(--line);font-size:var(--type-ui)}.wrap[data-astro-cid-nns7i3if]{align-items:center;gap:var(--space-4) var(--space-8);flex-wrap:wrap;display:flex}.brand[data-astro-cid-nns7i3if]{align-items:center;gap:var(--space-2);color:var(--ink);font-weight:600;text-decoration:none;display:flex}.mark[data-astro-cid-nns7i3if]{width:1rem;display:flex}nav[data-astro-cid-nns7i3if]{gap:var(--space-2) var(--space-5);flex-wrap:wrap;display:flex}nav[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{color:var(--ink-2);text-decoration:none}nav[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:hover{color:var(--ink);text-decoration:underline}p[data-astro-cid-nns7i3if]{color:var(--ink-3);flex-basis:100%;margin:0}.bar[data-astro-cid-fzpbxy5g]{border-bottom:1px solid var(--line)}.wrap[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--space-6);height:56px;display:flex}.brand[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--space-3);min-width:0;color:var(--ink);margin-right:auto;text-decoration:none;display:flex}.mark[data-astro-cid-fzpbxy5g]{flex:none;width:1.25rem;display:flex}.name[data-astro-cid-fzpbxy5g]{font-size:var(--type-name);white-space:nowrap;font-weight:600;overflow:hidden}nav[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--space-6);font-size:var(--type-ui);display:flex}nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{color:var(--ink-2);text-decoration:none}nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]:hover{color:var(--ink)}.github[data-astro-cid-fzpbxy5g]{color:var(--ink);display:flex}.github[data-astro-cid-fzpbxy5g] svg{width:20px;height:20px}.theme[data-astro-cid-fzpbxy5g]{padding:var(--space-1);margin:calc(-1 * var(--space-1));border-radius:var(--radius);color:var(--ink-2);cursor:pointer;background:0 0;border:0;display:flex}.theme[data-astro-cid-fzpbxy5g]:hover{color:var(--ink)}.theme[data-astro-cid-fzpbxy5g] svg[data-astro-cid-fzpbxy5g]{fill:none;stroke:currentColor;stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round;width:20px;height:20px}.sun[data-astro-cid-fzpbxy5g]{display:none}:root[data-theme=dark] .sun[data-astro-cid-fzpbxy5g]{display:block}:root[data-theme=dark] .moon[data-astro-cid-fzpbxy5g]{display:none}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .sun[data-astro-cid-fzpbxy5g]{display:block}:root:not([data-theme=light]) .moon[data-astro-cid-fzpbxy5g]{display:none}}@media (width<=559px){.wrap[data-astro-cid-fzpbxy5g]{gap:var(--space-4)}.name[data-astro-cid-fzpbxy5g]{font-size:1.05rem}nav[data-astro-cid-fzpbxy5g]{gap:var(--space-4)}.wide[data-astro-cid-fzpbxy5g]{display:none}}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-cyrillic-ext-opsz-normal.CfYZpDVp.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-opsz-normal.BFQXbQ-f.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-opsz-normal.BmPQvyvo.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-opsz-normal.BM0NlUE_.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-opsz-normal.Ci9T9ieq.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-opsz-normal.DpK-iCPk.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-opsz-normal.BwkfbSeq.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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.xuaO2J-f.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-400-normal.DMdlQ8Kv.woff)format("woff");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 Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-cyrillic-400-normal.BSMlKf0J.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-400-normal.CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-vietnamese-400-normal.BulugwFq.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-400-normal.DDuiU_S-.woff)format("woff");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 Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff)format("woff");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 Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff");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:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BqneJy0T.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-ext-500-normal.BIfNGwUT.woff)format("woff");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 Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-cyrillic-500-normal.Bq9vWWag.woff2)format("woff2"),url(/_astro/ibm-plex-mono-cyrillic-500-normal.Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-vietnamese-500-normal.DZ4AoWbu.woff2)format("woff2"),url(/_astro/ibm-plex-mono-vietnamese-500-normal.C8zxqsMH.woff)format("woff");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 Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-ext-500-normal.CAhNIIs5.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-500-normal.CZ70TYgx.woff)format("woff");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 Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-mono-latin-500-normal.DSY6xOcd.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-500-normal.CB9ihrfo.woff)format("woff");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:light;--bg:#f6f6f4;--surface:#fff;--raised:#ececea;--canvas:#e8e9e4;--line:#dededa;--line-strong:#c9c9c4;--line-control:#838680;--ink:#161716;--ink-2:#464946;--ink-3:#5c5f5b;--accent:#1f4a3a;--accent-hover:#131b17;--accent-soft:#d5e0d8;--on-accent:#f6f6f4;--out:#9a2f22;--select:#16171624;--scrim:#1617164d;--shadow:0 1px 1px #1617160a, 0 14px 40px #16171612;--shadow-sheet:0 0 0 1px #16171612, 0 1px 2px #1617160d, 0 10px 30px #1617160d;--font-text:"Inter Variable", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, monospace;--type-title:28px;--type-heading:18px;--type-body:15px;--type-ui:13px;--type-meta:12px;--type-label:11px;--type-display:clamp(2.2rem, 1.5rem + 2.6vw, 3.25rem);--type-lede:clamp(1.125rem, 1.02rem + .48vw, 1.4rem);--type-name:1.3rem;--measure:38rem;--section-y:clamp(2.5rem, 5.5vw, 6.5rem);--radius:2px;--radius-sheet:8px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-7:28px;--space-8:32px;--rail-width:220px;--tree-width:268px;--assistant-width:360px;--page-min:480px;--bar-height:48px;--read-max:860px;--tap:44px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px);--safe-right:env(safe-area-inset-right,0px);--page-max:66rem;--page-pad:clamp(1.25rem, 4vw, 3rem)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#0b0d0f;--surface:#16191d;--raised:#1d2126;--canvas:#0b0d0f;--line:#24292e;--line-strong:#343b42;--line-control:#6b737a;--ink:#e9ecef;--ink-2:#a7b0b8;--ink-3:#8c949b;--accent:#8fc1a6;--accent-hover:#a3cfb6;--accent-soft:#1b2321;--on-accent:#0b0d0f;--out:#d98a80;--select:#e9ecef2e;--scrim:#0009;--shadow:0 1px 2px #0006, 0 10px 30px #0000004d;--shadow-sheet:0 0 0 1px #e9ecef14, 0 1px 2px #0006, 0 10px 30px #0000004d}}:root[data-theme=dark]{color-scheme:dark;--bg:#0b0d0f;--surface:#16191d;--raised:#1d2126;--canvas:#0b0d0f;--line:#24292e;--line-strong:#343b42;--line-control:#6b737a;--ink:#e9ecef;--ink-2:#a7b0b8;--ink-3:#8c949b;--accent:#8fc1a6;--accent-hover:#a3cfb6;--accent-soft:#1b2321;--on-accent:#0b0d0f;--out:#d98a80;--select:#e9ecef2e;--scrim:#0009;--shadow:0 1px 2px #0006, 0 10px 30px #0000004d;--shadow-sheet:0 0 0 1px #e9ecef14, 0 1px 2px #0006, 0 10px 30px #0000004d}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink-2);font-family:var(--font-text);font-size:var(--type-body);margin:0;line-height:1.55}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}code,pre{font-family:var(--font-mono)}.wrap{max-width:var(--page-max);padding-inline:var(--page-pad);margin:0 auto}.skip{left:var(--space-4);padding:var(--space-2) var(--space-4);background:var(--accent);color:var(--on-accent);border-radius:var(--radius);position:absolute;top:-100px}.skip:focus{top:var(--space-4)}.btn{align-items:center;gap:var(--space-2);min-height:40px;padding:0 var(--space-5);border-radius:var(--radius);font-size:var(--type-ui);border:1px solid #0000;font-weight:600;text-decoration:none;display:inline-flex}.btn svg{width:16px;height:16px}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{border-color:var(--line-control);color:var(--ink)}.btn-secondary:hover{background:var(--raised)}@media (pointer:coarse){.btn{min-height:var(--tap)}}.sheet{background:var(--surface);border-radius:var(--radius-sheet);box-shadow:var(--shadow-sheet);margin:0;overflow:hidden}.sheet-head{justify-content:space-between;gap:var(--space-4);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--line);font:500 var(--type-label) / 1.4 var(--font-mono);color:var(--ink-3);display:flex}.code{position:relative}.code pre{padding:var(--space-4) var(--space-5);color:var(--ink);margin:0;font-size:12.5px;line-height:1.75;overflow-x:auto}.code .prompt,.code .comment{color:var(--ink-3)}.code .prompt{user-select:none}.copy{top:var(--space-2);right:var(--space-2);padding:3px var(--space-2);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);font:500 var(--type-label) var(--font-mono);color:var(--ink-3);cursor:pointer;position:absolute}.copy:hover{color:var(--ink);border-color:var(--line-strong)}@media (width<=559px){.code pre{padding-top:var(--space-8)}}.part{padding-block:var(--section-y);border-top:1px solid var(--line)}h1,h2,h3{color:var(--ink);text-wrap:balance}h2{letter-spacing:-.02em;margin:0;font-size:clamp(1.5rem,1.2rem + 1.1vw,2.125rem);font-weight:650;line-height:1.15}.intro{max-width:var(--measure);margin:var(--space-4) 0 0;text-wrap:pretty;font-size:1.0625rem}.more{margin:var(--space-8) 0 0;font-size:var(--type-ui)}.more a{color:var(--accent);font-weight:600}.split{margin-top:var(--space-8);grid-template-columns:minmax(0,1fr);align-items:start;gap:clamp(2rem,4vw,4rem);display:grid}@media (width>=960px){.split{grid-template-columns:minmax(0,24rem) minmax(0,1fr)}}.ruled{margin:0;padding:0;list-style:none}.ruled>*{padding-block:var(--space-4);border-bottom:1px solid var(--line);font-size:var(--type-ui)}.ruled>:first-child{padding-top:0}.ruled b,.ruled dt,.ruled h3{color:var(--ink);font-weight:600}.ruled dt,.ruled h3{font-size:var(--type-body);margin:0}.ruled dd,.ruled p{margin:var(--space-1) 0 0}.ruled code,.inline-code{background:var(--raised);border-radius:var(--radius);color:var(--ink);padding:1px 5px;font-size:12px}.rows{margin-top:var(--space-8);border-top:1px solid var(--line-strong)}.rows .row{gap:var(--space-1) var(--space-6);padding-block:var(--space-4);border-bottom:1px solid var(--line);font-size:var(--type-ui);grid-template-columns:minmax(0,1fr);display:grid}.rows .head{padding-block:var(--space-3);font:500 var(--type-label) / 1.4 var(--font-mono);color:var(--ink-3)}.rows b{color:var(--ink);font-size:var(--type-body);display:block}.rows a b{color:var(--accent)}.rows code{color:var(--ink-3);font-size:12px}@media (width<=759px){.rows .head{display:none}}@media (width>=760px){.rows.two .row{grid-template-columns:18rem minmax(0,1fr) 14rem}}
