@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-cyrillic-ext-wght-normal.lLTsRRxN.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-vietnamese-wght-normal.qRpaaN48.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-latin-ext-wght-normal.DmpS2jIq.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-latin-wght-normal.eXO_dkmS.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:Plus Jakarta Sans Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-cyrillic-ext-wght-italic.Dr_LULJ2.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:Plus Jakarta Sans Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-vietnamese-wght-italic.CPBsCcxN.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:Plus Jakarta Sans Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-latin-ext-wght-italic.DJWiFoht.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:Plus Jakarta Sans Variable;font-style:italic;font-display:swap;font-weight:200 800;src:url(/_astro/plus-jakarta-sans-latin-wght-italic.DnD1KgkH.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:Commit Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/commit-mono-latin-400-normal.wzhe4RuD.woff2)format("woff2"),url(/_astro/commit-mono-latin-400-normal.s0S3qwFW.woff)format("woff")}@font-face{font-family:Commit Mono;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/commit-mono-latin-400-italic.DjSHLl2N.woff2)format("woff2"),url(/_astro/commit-mono-latin-400-italic.BXinMwCi.woff)format("woff")}:root{color-scheme:light dark;--paper:#f8f9f9;--ink:#18243a;--signal:#1f63fb;--slate:#586274;--rail-pending:#b9bfc8;--rail-strong:#8a929e;--hairline:#e2e6eb;--terminal:#131c2e;--terminal-ink:#d7deea;--terminal-caption:#8f9ab0;--terminal-edge:transparent;--selection:#1f63fb2e;--font-sans:"Plus Jakarta Sans Variable", "Plus Jakarta Sans", system-ui, sans-serif;--font-mono:"Commit Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--step--1:.9375rem;--step-0:1.125rem;--step-1:1.3125rem;--step-2:1.625rem;--step-intro:clamp(1.5rem, 1.1rem + 1.6vw, 2.125rem);--step-title:clamp(2.25rem, 1.45rem + 3.4vw, 3.5rem);--measure:38rem;--gutter:1rem;--rail-width:1.5rem;--rail-line:3px;--rail-node:.875rem}@media (width>=40rem){:root{--gutter:2rem;--rail-width:2.5rem}}@media (prefers-color-scheme:dark){:root{--paper:#0f1726;--ink:#e4e8ef;--signal:#6c9bff;--slate:#9aa4b5;--rail-pending:#3a4660;--rail-strong:#5d6a84;--hairline:#1f2a3e;--terminal:#0a111d;--terminal-edge:#243049;--selection:#6c9bff47}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:1.5rem}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--step-0);word-spacing:.06em;font-optical-sizing:auto;-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;line-height:1.65}::selection{background:var(--selection)}a{color:var(--signal);text-underline-offset:.18em;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:2px}img,svg{max-width:100%;display:block}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{left:var(--gutter);background:var(--ink);color:var(--paper);font-size:var(--step--1);z-index:10;padding:.5rem .75rem;position:absolute;top:-3rem}.skip-link:focus{top:.75rem}.shell{width:100%;max-width:72rem;padding-inline:var(--gutter);margin-inline:auto}.prose{max-width:var(--measure)}.prose>*+*{margin-block-start:1.25em}.prose p,.prose ul,.prose ol{margin-block-end:0}.prose h2,.prose h3{letter-spacing:-.012em;text-wrap:balance;line-height:1.25}.prose h2{margin-block:2.4em 0;font-size:1.4375rem;font-weight:700}@media (width>=40rem){.prose h2{font-size:var(--step-2)}}.prose h3{font-size:var(--step-1);margin-block:2em 0;font-weight:650}.prose h2+*,.prose h3+*{margin-block-start:.6em}.prose ul,.prose ol{padding-inline-start:1.25em}.prose li+li{margin-block-start:.35em}.prose li::marker{color:var(--slate)}.prose blockquote{border-inline-start:var(--rail-line) solid var(--rail-pending);color:var(--slate);margin-inline:0;padding-inline-start:1.25em}.prose hr{height:var(--rail-line);background:repeating-linear-gradient(to right, var(--rail-pending) 0 1rem, transparent 1rem 1.6rem);border:0;margin-block:3em}.prose table{border-collapse:collapse;width:100%;font-size:var(--step--1);font-variant-numeric:tabular-nums}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--hairline);padding:.5em .75em .5em 0}.prose th{font-weight:650}.prose img{border-radius:4px;height:auto}.prose :not(pre)>code,.tldr code{font-family:var(--font-mono);word-spacing:normal;background:var(--hairline);overflow-wrap:anywhere;border-radius:3px;padding:.12em .32em;font-size:.86em}.prose :is(td,th) :not(pre)>code{padding:.06em .18em}.prose figure.code{background:var(--terminal);color:var(--terminal-ink);border:1px solid var(--terminal-edge);border-radius:6px;margin-block-end:0;margin-inline:0;overflow:hidden}@media (width>=48rem){.prose figure.code{margin-inline:-1.25rem}}.prose figure.code figcaption{min-height:2.5rem;color:var(--terminal-caption);justify-content:space-between;align-items:center;gap:1rem;padding:.35rem .5rem 0 1.25rem;font-size:.8125rem;display:flex}.prose figure.code[data-title] figcaption{color:var(--terminal-ink)}.prose figure.code figcaption:empty{display:none}.copy-button{font:inherit;color:var(--terminal-caption);cursor:pointer;background:0 0;border:1px solid #2a3650;border-radius:4px;margin-inline-start:auto;padding:.3rem .6rem}.copy-button:hover{color:var(--terminal-ink);border-color:#3d4b69}.prose pre.astro-code{font-family:var(--font-mono);word-spacing:normal;tab-size:2;margin:0;padding:.75rem 1.25rem 1.1rem;font-size:.875rem;line-height:1.65;overflow-x:auto;background-color:var(--terminal)!important}.prose pre.astro-code code{min-width:max-content;display:block}.prose pre .line{min-width:calc(100% + 2.5rem);margin-inline:-1.25rem;padding-inline:1.25rem;display:inline-block}.prose pre .line.highlighted{background:#7aa2ff1f;box-shadow:inset 3px 0 #7aa2ff}.prose pre .line.diff.add{background:#86d3a41a;box-shadow:inset 3px 0 #86d3a4}.prose pre .line.diff.remove{opacity:.8;background:#f090901a;box-shadow:inset 3px 0 #f09090}.prose pre.has-focused .line:not(.focused){opacity:.45}.rail{margin:0;padding:0;list-style:none}.rail>li{padding-inline-start:var(--rail-width);position:relative}.rail>li:before{content:"";left:0;top:var(--node-top,.45em);width:var(--rail-node);height:var(--rail-node);border:var(--rail-line) solid var(--ink);background:var(--paper);z-index:1;border-radius:50%;position:absolute}.rail>li:after{content:"";left:calc((var(--rail-node) - var(--rail-line)) / 2);top:calc(var(--node-top,.45em) + var(--rail-node));bottom:calc(-1 * var(--node-top,.45em));width:var(--rail-line);background:var(--ink);position:absolute}.rail>li:last-child:after{display:none}.rail>li[data-state=current]:before{border-color:var(--signal)}.rail>li[data-state=current]:after,.rail>li[data-state=pending]:after{background:repeating-linear-gradient(to bottom, var(--rail-pending) 0 .5rem, transparent .5rem .85rem)}.rail>li[data-state=pending]:before{border-color:var(--rail-pending)}@media (prefers-reduced-motion:no-preference){.rail>li:before{transition:border-color .16s ease-out}}.rail.timeline{padding-block-start:2.75rem;position:relative}.rail.timeline:before{content:"";top:0;left:calc((var(--rail-node) - var(--rail-line)) / 2);height:calc(2.75rem + var(--node-top,.45em));width:var(--rail-line);background:repeating-linear-gradient(to top, var(--rail-pending) 0 .5rem, transparent .5rem .85rem);position:absolute}.rail.timeline>li[data-state=current]:after{background:var(--ink)}.prose figure.diagram{margin:2.25rem 0}.prose figure.diagram svg{width:100%;max-width:30rem;height:auto;font-family:var(--font-sans);margin-inline:auto;display:block;overflow:visible}.prose figure.diagram figcaption{max-width:30rem;font-size:var(--step--1);color:var(--slate);margin:.75rem auto 0;line-height:1.5}.prose figure.screenshot{margin:2.25rem 0}.prose figure.screenshot a{border-radius:4px;width:fit-content;max-width:100%;display:block}.prose figure.screenshot img{border:1px solid var(--hairline);width:auto;max-width:100%}@media (width>=64rem){.prose figure.screenshot{margin-inline-end:-10rem}.prose figure.screenshot figcaption{max-width:var(--measure)}}.prose figure.screenshot figcaption{font-size:var(--step--1);color:var(--slate);margin-top:.75rem;line-height:1.5}.diagram text{fill:var(--ink);font-size:14px}.diagram .d-muted{fill:var(--slate)}.diagram .d-small{font-size:12.5px}.diagram .d-bold{font-weight:700}.diagram .d-mono{font-family:var(--font-mono);font-size:12px}.diagram .d-label{letter-spacing:.08em;fill:var(--slate);font-size:11.5px;font-weight:700}.diagram .d-box{fill:none;stroke:var(--rail-strong);stroke-width:1.5px}.diagram .d-box-accent{fill:none;stroke:var(--signal);stroke-width:2px}.diagram .d-dashed{stroke-dasharray:5 4}.diagram .d-line{fill:none;stroke:var(--rail-strong);stroke-width:1.5px}.diagram .d-rail{fill:none;stroke:var(--rail-pending);stroke-width:3px}.diagram .d-head{fill:var(--rail-strong)}.diagram .d-fill{fill:var(--rail-pending)}.diagram .d-outline{fill:none;stroke:var(--rail-strong);stroke-width:1.25px}.diagram .d-accent{fill:var(--signal)}.diagram .d-node{fill:var(--signal);stroke:var(--paper);stroke-width:2px}.diagram .d-grid{fill:none;stroke:var(--rail-pending);stroke-width:1px;opacity:.6}.diagram .d-axis{fill:none;stroke:var(--rail-strong);stroke-width:1px}.diagram .d-ink{fill:none;stroke:var(--ink);stroke-width:1.5px;stroke-linejoin:round}.diagram .d-ink-strong{fill:none;stroke:var(--ink);stroke-width:2px;stroke-linejoin:round}.diagram .d-accent-soft{fill:var(--signal);fill-opacity:.45}@media (prefers-color-scheme:dark){.diagram .d-accent-soft{fill-opacity:.8}}.diagram .d-gap{fill:none;stroke:var(--paper);stroke-width:1.5px;stroke-linejoin:round}.diagram .d-q{stroke:var(--rail-strong);stroke-width:4px;stroke-linecap:round}.diagram .d-q-over{stroke:var(--signal);stroke-width:4px;stroke-linecap:round}.nw{white-space:nowrap}.chip{border:1px solid var(--rail-strong);color:var(--ink);font-size:var(--step--1);border-radius:999px;align-items:center;gap:.4rem;padding:.375rem .75rem;font-weight:600;line-height:1.4;text-decoration:none;display:inline-flex}.chip:hover{border-color:var(--signal);color:var(--signal)}.chip[aria-current=page]{border-color:var(--ink);background:var(--ink);color:var(--paper)}.chip .n{font-family:var(--font-mono);opacity:.8;font-size:.8125rem;font-weight:400}@media (width<=39.99rem){.chip{min-height:2.75rem;padding-inline:.9rem}}.prose figure.code pre:focus-visible{outline:2px solid var(--signal);outline-offset:-3px}footer.site-footer.shell{background:linear-gradient(var(--hairline), var(--hairline)) var(--gutter) 0 / calc(100% - 2 * var(--gutter)) 1px no-repeat;border-top:0}.logo[data-astro-cid-f7espo7c]{height:auto}.logo[data-astro-cid-f7espo7c] .ink{fill:var(--ink)}.logo[data-astro-cid-f7espo7c] .signal{fill:var(--signal)}.logo[data-astro-cid-f7espo7c] .pending{fill:var(--rail-strong)}.logo[data-astro-cid-f7espo7c] .pending-faint{fill:var(--rail-pending)}.logo[data-astro-cid-f7espo7c] .ink-stroke{fill:none;stroke:var(--ink)}.logo[data-astro-cid-f7espo7c] .signal-stroke{fill:none;stroke:var(--signal)}.site-header[data-astro-cid-hkbrpulz]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;padding-block:1.5rem;display:flex}.home[data-astro-cid-hkbrpulz]{flex:none;display:block}.home[data-astro-cid-hkbrpulz] .site-logo{width:10.5rem}@media (width>=40rem){.site-header[data-astro-cid-hkbrpulz]{padding-block:2.25rem}.home[data-astro-cid-hkbrpulz] .site-logo{width:13rem}nav[data-astro-cid-hkbrpulz] ul[data-astro-cid-hkbrpulz]{gap:1.25rem}}nav[data-astro-cid-hkbrpulz] ul[data-astro-cid-hkbrpulz]{font-size:var(--step--1);flex-wrap:wrap;gap:.25rem .9rem;margin:0;padding:0;font-weight:550;list-style:none;display:flex}nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]{min-height:2.75rem;color:var(--slate);align-items:center;text-decoration:none;display:inline-flex}@media (width>=40rem){nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]{min-height:0}}nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]:hover{color:var(--ink)}nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz][aria-current=page]{color:var(--ink);text-underline-offset:.4em;text-decoration:underline 2px}main[data-astro-cid-hkbrpulz]{min-height:60vh}.site-footer[data-astro-cid-hkbrpulz]{font-size:var(--step--1);color:var(--slate);margin-block-start:6rem}.footer-inner[data-astro-cid-hkbrpulz]{border-top:1px solid var(--hairline);flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;padding-block:2rem 2.5rem;display:flex}.site-footer[data-astro-cid-hkbrpulz] p[data-astro-cid-hkbrpulz]{margin:0}.site-footer[data-astro-cid-hkbrpulz] ul[data-astro-cid-hkbrpulz]{flex-wrap:wrap;gap:0 1.5rem;margin:0;padding:0;list-style:none;display:flex}.site-footer[data-astro-cid-hkbrpulz] li[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]{padding-block:.4rem;display:inline-block}
