@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)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(data:font/woff2;base64,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)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:40rem;--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{font-size:var(--step-2);margin-block:2.4em 0;font-weight:700}.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{font-family:var(--font-mono);word-spacing:normal;background:var(--hairline);overflow-wrap:anywhere;border-radius:3px;padding:.12em .32em;font-size:.86em}.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)}.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]{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]{font-size:var(--step--1);gap:1.25rem;margin:0;padding:0;font-weight:550;list-style:none;display:flex}nav[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]{color:var(--slate);text-decoration:none}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]{border-top:1px solid var(--hairline);font-size:var(--step--1);color:var(--slate);flex-wrap:wrap;justify-content:space-between;gap:.5rem 2rem;margin-block-start:6rem;padding-block:2rem 2.5rem;display:flex}.site-footer[data-astro-cid-hkbrpulz] p[data-astro-cid-hkbrpulz]{margin:0}
