@font-face{font-family:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-ext-wght-normal.B5bTHO_g.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:Instrument Sans Variable;font-style:normal;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-wght-normal.BbzFLZTg.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:Instrument Sans Variable;font-style:italic;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-ext-wght-italic.CTF9u33F.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:Instrument Sans Variable;font-style:italic;font-display:swap;font-weight:400 700;src:url(/_astro/instrument-sans-latin-wght-italic.BlcgWI5J.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(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: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:light dark;--paper:#fbfaf7;--paper-raised:#fff;--ink:#1a1917;--ink-muted:#5f5b55;--hairline:#e4e1da;--signal:#1d52d6;--on-signal:#fff;--signal-tint:#e1e9fb;--edge:#c4c6cc;--todo-bg:#fff8e1;--todo-border:#e0b84a;--todo-fg:#6b5000;--space-half:4px;--space-1:8px;--space-2:16px;--space-3:32px;--space-4:64px;--nudge:6px;--measure:680px;--page:920px;--gutter:20px;--radius-sm:4px;--radius-md:10px;--radius-pill:999px;--font-sans:"Instrument Sans Variable", "Instrument Sans", "Helvetica Neue", Arial, sans-serif;--font-mono:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, Menlo, monospace;--display-size:clamp(44px, 11vw, 64px);--title-size:clamp(32px, 7.5vw, 40px);--heading-size:24px;--subheading-size:19px;--lede-size:21px;--body-size:17px;--small-size:14px;--mono-size:14px;--label-size:12px}@media (prefers-color-scheme:dark){:root{--paper:#121110;--paper-raised:#1c1a18;--ink:#f1ede6;--ink-muted:#a39e95;--hairline:#2c2925;--signal:#7aa7ff;--on-signal:#0d1424;--signal-tint:#15223f;--edge:#3a3d45;--todo-bg:#2a2412;--todo-border:#8c7429;--todo-fg:#f0d68a}}@media (width<=640px){:root{--lede-size:19px;--heading-size:22px}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:var(--body-size);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;line-height:1.7}h1,h2,h3,h4{text-wrap:balance;margin:0;font-weight:600}h1{font-size:var(--title-size);letter-spacing:-.015em;line-height:1.15}h2{font-size:var(--heading-size);letter-spacing:-.01em;line-height:1.3}h3{font-size:var(--subheading-size);letter-spacing:-.005em;line-height:1.35}p{text-wrap:pretty;margin:0}a{color:var(--signal);text-decoration:underline 1px;text-decoration-color:color-mix(in srgb, var(--signal) 40%, transparent);text-underline-offset:3px;transition:background-color .1s,text-decoration-color .1s,color .1s}a:hover{background:var(--signal-tint);text-decoration-color:currentColor}:focus-visible{outline:2px solid var(--signal);outline-offset:3px;border-radius:var(--radius-sm)}img,video,iframe{max-width:100%}img{height:auto;display:block}hr{border:0;border-top:1px solid var(--hairline);margin:var(--space-4) 0}code,kbd,pre{font-family:var(--font-mono);font-size:.88em}::selection{background:var(--signal-tint);color:var(--ink)}.container{width:100%;max-width:calc(var(--page) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.lib{font-family:var(--font-mono);letter-spacing:-.02em;font-weight:500}.page-header{margin-bottom:var(--space-4)}.page-header .lede{margin-top:var(--space-2)}@media (width<=640px){.page-header{margin-bottom:var(--space-3)}}.lede{max-width:var(--measure);font-size:var(--lede-size);line-height:1.55}.section{margin-top:var(--space-4)}.section-header{justify-content:space-between;align-items:baseline;gap:var(--space-2);margin-bottom:var(--space-2);display:flex}.section-header h2,.label{font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);font-weight:500;line-height:1.3}.section-header a{font-size:var(--small-size);white-space:nowrap}.intro{max-width:var(--measure);margin-top:var(--space-2)}.meta{font-size:var(--small-size);color:var(--ink-muted);font-variant-numeric:tabular-nums;line-height:1.55}.linked-row{position:relative}.row-link{color:var(--ink);text-decoration:none}.row-link:after{content:"";position:absolute;inset:0}.row-link:hover,.linked-row:hover .row-link{color:var(--signal);background:0 0}.row-link:focus-visible{outline:none}.row-link:focus-visible:after{outline:2px solid var(--signal);outline-offset:3px;border-radius:var(--radius-sm)}.tap,.crumb a{position:relative}.tap:before,.crumb a:before{content:"";position:absolute;inset:-6px -4px}.crumb{font-size:var(--small-size);margin-bottom:var(--space-3)}.crumb a{color:var(--ink-muted);text-decoration:none}.crumb a:hover{color:var(--ink);background:0 0}.button{align-items:center;gap:var(--space-1);border-radius:var(--radius-pill);border:1px solid var(--signal);background:var(--signal);color:var(--on-signal);font:500 var(--body-size) / 1 var(--font-sans);cursor:pointer;padding:12px 20px;text-decoration:none;transition:filter .1s,border-color .1s;display:inline-flex}.button:hover{background:var(--signal);color:var(--on-signal);filter:brightness(.94)}.button.secondary{color:var(--ink);border-color:var(--hairline);background:0 0}.button.secondary:hover{color:var(--ink);border-color:var(--ink);filter:none;background:0 0}.badge{align-items:center;gap:var(--space-half);padding:1px var(--space-1);border:1px solid var(--hairline);border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:var(--label-size);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-muted);white-space:nowrap;font-weight:500;line-height:1.6;display:inline-flex}.badge.live{color:var(--ink);border-color:var(--edge)}.badge.live:before{content:"";border-radius:var(--radius-pill);background:currentColor;width:6px;height:6px}.badge.draft{color:var(--todo-fg);background:var(--todo-bg);border-color:var(--todo-border)}.prose{max-width:var(--measure);font-size:var(--body-size);overflow-wrap:break-word;line-height:1.7}.prose a{overflow-wrap:anywhere}.prose pre{max-width:100%}.prose>*+*{margin-top:1.1em}.prose h2{margin-top:2em}.prose h3{margin-top:1.8em}.prose h4{font-size:var(--body-size);margin-top:1.6em}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.4em}.prose li>*+*{margin-top:.6em}.prose li::marker{color:var(--ink-muted)}.prose blockquote{padding-left:var(--space-2);border-left:2px solid var(--edge);margin-inline:0}.prose img{border-radius:var(--radius-md);border:1px solid var(--hairline);width:auto;max-width:100%;height:auto;max-height:min(70vh,34rem)}.prose :not(pre)>code{background:var(--paper-raised);border:1px solid var(--hairline);border-radius:var(--radius-sm);padding:.1em .3em}.prose pre{padding:var(--space-2);border:1px solid var(--hairline);border-radius:var(--radius-md);font-size:var(--mono-size);line-height:1.7;overflow-x:auto}.prose figure{margin-inline:0}.prose figcaption{margin-top:var(--space-1);font-size:var(--small-size);color:var(--ink-muted)}.prose hr{margin:var(--space-3) 0}.prose table{border-collapse:collapse;width:100%;font-size:var(--small-size);display:block;overflow-x:auto}.prose th,.prose td{text-align:left;vertical-align:top;padding:var(--space-1) var(--space-2);border-bottom:1px solid var(--hairline)}.prose th{font-weight:600}.prose .footnotes{margin-top:var(--space-4);font-size:var(--small-size);color:var(--ink-muted)}.prose .footnotes pre{white-space:pre-wrap;overflow-wrap:anywhere}.prose p:has(>img:nth-of-type(2)),.prose p:has(>a:nth-of-type(2)>img){gap:var(--space-2);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.prose p:has(>a:nth-of-type(3)>img){grid-template-columns:repeat(3,minmax(0,1fr))}.prose p:has(>img:nth-of-type(2)) img,.prose p:has(>a:nth-of-type(2)>img) img{object-fit:cover;width:100%;height:100%}.prose a:has(>img):hover{background:0 0}.prose video{border-radius:var(--radius-md);background:#000;width:100%;height:auto;display:block}.prose .embed{aspect-ratio:16/9;border-radius:var(--radius-md);background:#000;position:relative;overflow:hidden}.prose .embed iframe{border:0;width:100%;height:100%;position:absolute;inset:0}@media (prefers-color-scheme:light){.prose pre.astro-code{background-color:var(--paper-raised)!important}}@media (prefers-color-scheme:dark){.astro-code,.astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}}#cac-newsletter-form input[type=email]{font:inherit;font-size:var(--small-size);padding:var(--space-1) var(--space-2);border:1px solid var(--hairline);border-radius:var(--radius-sm);background:var(--paper-raised);color:var(--ink)}#cac-newsletter-form input[type=submit]{font:inherit;font-size:var(--small-size);padding:var(--space-1) var(--space-2);margin-left:var(--space-1);border:1px solid var(--hairline);border-radius:var(--radius-pill);color:var(--ink);cursor:pointer;background:0 0;font-weight:500}.site-header[data-astro-cid-nen7h5rs]{border-bottom:1px solid var(--hairline)}.inner[data-astro-cid-nen7h5rs]{justify-content:space-between;align-items:baseline;gap:var(--space-1) var(--space-3);padding-block:var(--space-3) var(--space-2);display:flex}a[data-astro-cid-nen7h5rs]{text-decoration:none}a[data-astro-cid-nen7h5rs]:hover{background:0 0}.name[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-1);font-weight:600;font-size:var(--body-size);letter-spacing:-.01em;color:var(--ink);white-space:nowrap;display:inline-flex}.dot[data-astro-cid-nen7h5rs]{border-radius:var(--radius-pill);background:var(--signal);width:8px;height:8px}ul[data-astro-cid-nen7h5rs]{gap:var(--space-1) var(--space-3);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{color:var(--ink);font-size:var(--small-size);white-space:nowrap;padding:2px 0;display:inline-block}nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover,nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current=page]{color:var(--signal)}@media (width<=1000px){ul[data-astro-cid-nen7h5rs]{column-gap:var(--space-2)}}@media (width<=560px){.inner[data-astro-cid-nen7h5rs]{align-items:stretch;gap:var(--space-1);padding-block:var(--space-2) var(--space-1);flex-direction:column}ul[data-astro-cid-nen7h5rs]{gap:0 var(--space-2)}}@media (width<=359px){ul[data-astro-cid-nen7h5rs]{column-gap:12px}}@media (width<=640px){nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{padding-block:var(--space-1);line-height:28px}}.site-footer[data-astro-cid-jo6i4kqk]{margin-top:var(--space-4);border-top:1px solid var(--hairline);padding-block:var(--space-3) var(--space-4);font-size:var(--small-size)}.note[data-astro-cid-jo6i4kqk]{max-width:var(--measure)}.name[data-astro-cid-jo6i4kqk]{color:var(--ink);font-weight:600}.line[data-astro-cid-jo6i4kqk]{color:var(--ink-muted);margin-top:4px}.links[data-astro-cid-jo6i4kqk]{gap:var(--space-1) var(--space-3);margin:var(--space-2) 0 0;flex-wrap:wrap;padding:0;list-style:none;display:flex}.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk],.small[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:var(--ink);text-decoration:none}.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover,.small[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--signal);background:0 0}.small[data-astro-cid-jo6i4kqk]{margin-top:var(--space-3)}.small[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:inherit}@media (width<=640px){.links[data-astro-cid-jo6i4kqk]{margin-top:var(--space-1);flex-direction:column;gap:0}.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{padding-block:10px;line-height:24px;display:block}.small[data-astro-cid-jo6i4kqk]{margin-top:var(--space-2)}.small[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{padding-block:10px;display:inline-block}}main[data-astro-cid-z4jru4n3]{padding-top:var(--space-4)}@media (width<=640px){main[data-astro-cid-z4jru4n3]{padding-top:var(--space-3)}}.skip[data-astro-cid-z4jru4n3]:focus{top:var(--space-2);left:var(--space-2);clip:auto;width:auto;height:auto;padding:var(--space-1) var(--space-2);background:var(--paper);z-index:10;position:fixed}
