@font-face{font-family:Clarity City;src:local("Clarity City Regular Italic"),local("Clarity City Italic"),url(../_fonts/Kv9eZX0OuxqPZV9UimqKssSSsDanNymL6AlWEzqgyS8-RZ9_NUtOWznZAoWwJMXP5AkZAK3L3G-3MDRLxAHUGw0.woff) format(woff);font-display:swap;font-weight:400;font-style:italic}@font-face{font-family:"Clarity City Fallback: BlinkMacSystemFont";src:local("BlinkMacSystemFont");size-adjust:115.245%;ascent-override:86.251%;descent-override:26.5521%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Segoe UI";src:local("Segoe UI");size-adjust:108.2643%;ascent-override:91.8123%;descent-override:28.2642%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Helvetica Neue";src:local("Helvetica Neue");size-adjust:106.6667%;ascent-override:93.1875%;descent-override:28.6875%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Arial";src:local("Arial");size-adjust:107.6714%;ascent-override:92.3179%;descent-override:28.4198%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Noto Sans";src:local("Noto Sans");size-adjust:101.2658%;ascent-override:98.1575%;descent-override:30.2175%;line-gap-override:0%}@font-face{font-family:Clarity City;src:local("Clarity City Regular"),local("Clarity City"),url(../_fonts/CKOBkLzaAecdW5atiKNihp02PcVYYE1urjTen8pVZt8-jtCjYRTyqersvZYpFBdc9yPdoBD_JBoRtFP4SEhbQPg.woff) format(woff);font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:"Clarity City Fallback: BlinkMacSystemFont";src:local("BlinkMacSystemFont");size-adjust:115.0049%;ascent-override:86.4311%;descent-override:26.6076%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Segoe UI";src:local("Segoe UI");size-adjust:108.0388%;ascent-override:92.004%;descent-override:28.3232%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Helvetica Neue";src:local("Helvetica Neue");size-adjust:106.4444%;ascent-override:93.382%;descent-override:28.7474%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Arial";src:local("Arial");size-adjust:107.4471%;ascent-override:92.5106%;descent-override:28.4791%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Noto Sans";src:local("Noto Sans");size-adjust:101.0549%;ascent-override:98.3624%;descent-override:30.2806%;line-gap-override:0%}@font-face{font-family:Clarity City;src:local("Clarity City Regular Italic"),local("Clarity City Italic"),url(../_fonts/RPc-Tg468GFIn3nfS0lzA7i90fJbw-fzPzs1R9RkccM-qS1qM2Kd5cWhQkmr1kZ8ocv4FaP__j7I2hAk_UYSeUw.woff2) format(woff2);font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:italic}@font-face{font-family:"Clarity City Fallback: BlinkMacSystemFont";src:local("BlinkMacSystemFont");size-adjust:150.5388%;ascent-override:66.0295%;descent-override:20.327%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Segoe UI";src:local("Segoe UI");size-adjust:141.4203%;ascent-override:70.287%;descent-override:21.6376%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Helvetica Neue";src:local("Helvetica Neue");size-adjust:139.3333%;ascent-override:71.3397%;descent-override:21.9617%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Arial";src:local("Arial");size-adjust:140.6458%;ascent-override:70.674%;descent-override:21.7568%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Noto Sans";src:local("Noto Sans");size-adjust:132.2785%;ascent-override:75.1445%;descent-override:23.133%;line-gap-override:0%}@font-face{font-family:Clarity City;src:local("Clarity City Regular Italic"),local("Clarity City Italic"),url(../_fonts/iEUl_QCFguXqOPpIj33yT4H764mNa8oJqQE3B_nDPro-d46P8n4MmZFYUai9SuuNWhoXzVca2VazianVyLU3ky8.woff2) format(woff2);font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:italic}@font-face{font-family:Clarity City;src:local("Clarity City Regular"),local("Clarity City"),url(../_fonts/5kBI6xTJe_lve6ipX0uNdu_KK4QlYo5s_QLbZBVh20w-zFhozbeI4_nZEsi9J_VS4_Y5itM_WVseTQ4x41qvzfY.woff2) format(woff2);font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:normal}@font-face{font-family:"Clarity City Fallback: BlinkMacSystemFont";src:local("BlinkMacSystemFont");size-adjust:149.8185%;ascent-override:66.3469%;descent-override:20.4247%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Segoe UI";src:local("Segoe UI");size-adjust:140.7436%;ascent-override:70.6249%;descent-override:21.7417%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Helvetica Neue";src:local("Helvetica Neue");size-adjust:138.6667%;ascent-override:71.6827%;descent-override:22.0673%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Arial";src:local("Arial");size-adjust:139.9728%;ascent-override:71.0138%;descent-override:21.8614%;line-gap-override:0%}@font-face{font-family:"Clarity City Fallback: Noto Sans";src:local("Noto Sans");size-adjust:131.6456%;ascent-override:75.5058%;descent-override:23.2442%;line-gap-override:0%}@font-face{font-family:Clarity City;src:local("Clarity City Regular"),local("Clarity City"),url(../_fonts/lRYUGLYSJURqhWANC7u59x_bLpnWKsGMKMDH1nXLihk-Y1f3XrETs7vRTsnh8EnkmypRm8DoAVPHYke1rwP9lB4.woff2) format(woff2);font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:normal}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular Italic"),local("Geist Mono Italic"),url(../_fonts/KMzq2wLjxFBuIzbuVlpgfqyZWx0GjZfekjtJfbPRER4-oEVAuKhL3RMMUvhwFMX0_EIzjHcyT2FOSTMV0HtqHqI.woff) format(woff);font-display:swap;font-weight:400;font-style:italic}@font-face{font-family:"Geist Mono Fallback: Courier New";src:local("Courier New");size-adjust:99.9837%;ascent-override:100.5164%;descent-override:29.5048%;line-gap-override:0%}@font-face{font-family:"Geist Mono Fallback: Roboto Mono";src:local("Roboto Mono");size-adjust:99.9837%;ascent-override:100.5164%;descent-override:29.5048%;line-gap-override:0%}@font-face{font-family:"Geist Mono Fallback: Noto Sans Mono";src:local("Noto Sans Mono");size-adjust:100%;ascent-override:100.5%;descent-override:29.5%;line-gap-override:0%}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular"),local("Geist Mono"),url(../_fonts/Ym4gqdSDLZgMRjwqwyHSQbzpuc1rIg_gdyNhfBv6epI-dCtQZPLpqM8WK5gdPlR8deyttimKO6m_7Sz14lcSpGk.woff) format(woff);font-display:swap;font-weight:400;font-style:normal}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular Italic"),local("Geist Mono Italic"),url(../_fonts/J_d9RjWv8lws6b2PdPPpT_39DpdjT9vzYasFcNwGnN0-npPg5ShFIcuQs7FMXSb9OmAdBjS2iJRmZyMlZm5nLAw.woff2) format(woff2);font-display:swap;unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-weight:400;font-style:italic}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular Italic"),local("Geist Mono Italic"),url(../_fonts/v0FRXmKEJHhBfhWV_mS4vmtS3gu8nDWwHzUzq-lKA7A-LcjKGfO9IR41wBW0VDNpMPlxjFPyxifLlPHNQV1Bt7I.woff2) format(woff2);font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-weight:400;font-style:italic}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular Italic"),local("Geist Mono Italic"),url(../_fonts/w_ZXK6yapGE5ElkJClrVS7FN7vVHV1w_8d2ZCP2zCVo-iziBB8I_-2gra7YGmrNnFSP7oNwxU_BFemr7So8_eJ0.woff2) format(woff2);font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:italic}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular Italic"),local("Geist Mono Italic"),url(../_fonts/gHDQgagUgrSL_GFCGJ1TieXb28vd3RXlnED3ipr9i-4-z38FMcmZaJ3ndUayEHaeHfHmHyDW0mjEGM26Vg8w_UM.woff2) format(woff2);font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:italic}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular Italic"),local("Geist Mono Italic"),url(../_fonts/hqReEalYyjU_GFWkawvNmgbyMn-tQ-mQK_YmHCoRDGk-2718LOAc434WJH3x4QZWqAZYEU04YIXJS5RxpEhtorg.woff2) format(woff2);font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:italic}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular"),local("Geist Mono"),url(../_fonts/fW8QX7BZ8eXW9NYH0M8DsKRInSm5YLBKpWemkFnILX4-5ly4beLgvTdeNJCrF37Z4t8MERGTlnJgobDuTYueP5Y.woff2) format(woff2);font-display:swap;unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F;font-weight:400;font-style:normal}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular"),local("Geist Mono"),url(../_fonts/pxXkloUeh1BIcbUzrFsL9EFW0IBUskGRrZNrJsoHtAE-VIs7ZUTQXVR3ZI_aZvlVc97G6REMxdRyXFSzvaz0MPY.woff2) format(woff2);font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116;font-weight:400;font-style:normal}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular"),local("Geist Mono"),url(../_fonts/LfJHceGI6CFd5OV9Fs41-h1lywjwhGYtFJ6GCNdqVDg-q74xddQM_of6dhvbhope_n4H3Kmd3N5MjiTsZLNGfb8.woff2) format(woff2);font-display:swap;unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB;font-weight:400;font-style:normal}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular"),local("Geist Mono"),url(../_fonts/CdBz3PG7SxvL_amFZwgaktWNbBEq8um2qfKIkVF0J-0-J5ZElPj_kotF2RGAJsfVatKCoKD_giaXRwBimt_cfgc.woff2) format(woff2);font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C4,U+2113,U+2C60-2C7F,U+A720-A7FF;font-weight:400;font-style:normal}@font-face{font-family:Geist Mono;src:local("Geist Mono Regular"),local("Geist Mono"),url(../_fonts/oGrDIWlvKBNQty5xPWhPu6aPrsKxcKLzbrDffTJGwOo-0Gf44br7mdGbnm3mzBU4SeUzdYkmggkoB5FRluIPeKc.woff2) format(woff2);font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-weight:400;font-style:normal}*,:after,:before{box-sizing:border-box}blockquote,body,dd,dl,figure,h1,h2,h3,h4,p{margin:0}ol[role=list],ul[role=list]{list-style:none;padding-inline-start:0}html{-webkit-font-smoothing:antialiased}html:focus-within{scroll-behavior:smooth}body{font-family:Clarity City,"Clarity City Fallback: BlinkMacSystemFont","Clarity City Fallback: Segoe UI","Clarity City Fallback: Helvetica Neue","Clarity City Fallback: Arial","Clarity City Fallback: Noto Sans",sans-serif;line-height:1.6;min-height:100vh;text-rendering:optimizeSpeed}a:not([class]){-webkit-text-decoration-skip:ink;text-decoration-skip-ink:auto}img,picture{display:block;max-width:100%}button,input,select,textarea{font:inherit}@media(prefers-reduced-motion:reduce){html:focus-within{scroll-behavior:auto}*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}::view-transition-old(page){animation:fade-out .3s cubic-bezier(.4,0,.2,1) forwards}::view-transition-new(page){animation:slide-fade-in .3s cubic-bezier(.4,0,.2,1)}::view-transition-group(page){background-color:var(--color-bg)}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes slide-fade-in{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@supports not (view-transition-name:none){.page-enter-active,.page-leave-active{transition:opacity .3s cubic-bezier(.4,0,.2,1)}.page-enter-from,.page-leave-to{opacity:0}}:root{--color-primary:#1a8fe3;--color-bg:#121212;--color-text:#efefef;--color-muted:#b9b9b9;--color-surface:#1e1e1e;--color-border:#333;--color-code-bg:#2a2a2a;--color-code-text:#e8e8e8;--size-step-0:clamp(1rem, calc(.96rem + .22vw) ,1.13rem);--size-step-1:clamp(1.25rem, calc(1.16rem + .43vw) ,1.5rem);--size-step-2:clamp(1.56rem, calc(1.41rem + .76vw) ,2rem);--size-step-3:clamp(1.95rem, calc(1.71rem + 1.24vw) ,2.66rem);--size-step-4:clamp(2.44rem, calc(2.05rem + 1.93vw) ,3.55rem);--icon-size-sm:14px}html[data-theme=light]{--color-bg:#efefef;--color-text:#252525;--color-muted:#4a4a4a;--color-surface:#fff;--color-border:#d6d6d6;--color-code-bg:#e0e0e0;--color-code-text:#1a1a1a}body{background:var(--color-bg);color:var(--color-text);font-size:var(--size-step-0);line-height:1.7;padding:2em}h1,h2,h3{font-weight:800;line-height:1.1;text-wrap:balance}.prose p,article p,p{text-wrap:pretty}h1{font-size:var(--size-step-4)}h2{font-size:var(--size-step-3)}h3{font-size:var(--size-step-2)}blockquote,ol,ul{padding-inline-start:1em}blockquote{border-inline-start:.3em solid var(--color-border);font-size:var(--size-step-0);font-style:italic;line-height:1.7}.flow>*+*,.flow>*>*+*{margin-block-start:var(--flow-space,1.5em)}:is(h1,h2,h3){--flow-space:1.5em}:is(h1,h2,h3)+*{--flow-space:.5em}article>*{max-width:80ch}blockquote{max-width:65ch}h1{max-width:20ch}h2,h3{max-width:28ch}a{color:currentColor;text-decoration-color:var(--color-primary);text-decoration-thickness:.3ex;text-underline-offset:.3ex}.lede{font-size:var(--size-step-1);font-style:italic;max-width:50ch;text-wrap:balance}.lede+*{--flow-space:2em}article{margin-inline:auto;max-width:80ch}code,kbd,pre,samp{font-family:Geist Mono,"Geist Mono Fallback: Courier New","Geist Mono Fallback: Roboto Mono","Geist Mono Fallback: Noto Sans Mono",ui-monospace,Cascadia Code,Source Code Pro,Menlo,Consolas,DejaVu Sans Mono,monospace}pre{max-width:100%;overflow-x:auto;padding:1em;-webkit-overflow-scrolling:touch;background:var(--color-code-bg);border-radius:.5em;color:var(--color-code-text)}code{font-size:.9em}:not(pre)>code{background:var(--color-code-bg);border-radius:.25em;color:var(--color-code-text);padding:.15em .4em}pre code{font-size:.875em}.flow>code,blockquote>code{background:var(--color-code-bg);border-radius:.5em;color:var(--color-code-text);display:block;font-size:.875em;max-width:100%;overflow-x:auto;padding:1em;white-space:pre}code.shiki,pre.shiki{background:var(--color-code-bg)!important}:root code.shiki span,:root pre.shiki span,html[data-theme=dark] code.shiki span,html[data-theme=dark] pre.shiki span{color:var(--shiki-dark,var(--color-code-text))}html[data-theme=light] code.shiki span,html[data-theme=light] pre.shiki span{color:var(--shiki-default,var(--color-code-text))}.prose img,article img{outline:1px solid rgba(0,0,0,.1)}html[data-theme=dark] .prose img,html[data-theme=dark] article img{outline:1px solid hsla(0,0%,100%,.1)}@font-face{font-family:Clarity City;font-style:normal;font-weight:100;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-Thin.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:italic;font-weight:100;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-ThinItalic.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:normal;font-weight:200;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-ExtraLight.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:italic;font-weight:200;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-ExtraLightItalic.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:normal;font-weight:300;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-Light.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:italic;font-weight:300;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-LightItalic.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:normal;font-weight:400;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-Regular.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:italic;font-weight:400;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-RegularItalic.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:normal;font-weight:500;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-Medium.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:italic;font-weight:500;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-MediumItalic.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:normal;font-weight:600;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-SemiBold.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:italic;font-weight:600;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-SemiBoldItalic.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:normal;font-weight:700;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-Bold.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:italic;font-weight:700;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-BoldItalic.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:normal;font-weight:800;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-ExtraBold.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:italic;font-weight:800;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-ExtraBoldItalic.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:normal;font-weight:900;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-Black.woff2) format("woff2")}@font-face{font-family:Clarity City;font-style:italic;font-weight:900;src:local("Clarity City"),url(../fonts/clarity-city/ClarityCity-BlackItalic.woff2) format("woff2")}@font-face{font-display:swap;font-family:Geist Mono;font-style:normal;font-weight:100 900;src:url(../fonts/geist-mono/GeistMono-Variable.woff2) format("woff2")}
