.text-action[data-astro-cid-6mw62nsg]{align-items:center;gap:var(--space-1);min-block-size:2.75rem;color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--text-sm);font-weight:var(--font-weight-regular);line-height:var(--line-height-snug);max-inline-size:100%;padding-inline:var(--space-1);text-decoration:none;display:inline-flex}.text-action--slash[data-astro-cid-6mw62nsg]{gap:0}.text-action__label[data-astro-cid-6mw62nsg]{overflow-wrap:anywhere;text-align:center;min-inline-size:0}.text-action[data-astro-cid-6mw62nsg]:hover{color:var(--color-accent-hover)}.text-action[data-astro-cid-6mw62nsg][aria-current]{color:var(--color-heading);font-weight:var(--font-weight-medium)}.text-action[data-astro-cid-6mw62nsg][aria-current] .text-action__label[data-astro-cid-6mw62nsg]{text-decoration:underline;text-decoration-color:var(--color-accent);text-decoration-thickness:var(--border-width-strong);text-underline-offset:var(--space-2)}.site-footer__inner[data-astro-cid-qup6pdxl]{justify-items:center;gap:var(--space-2);border-block-start:var(--border-width) solid var(--color-border);padding-block:var(--space-6);text-align:center;display:grid}.site-footer__links[data-astro-cid-qup6pdxl] ul[data-astro-cid-qup6pdxl]{justify-content:center;gap:0 var(--space-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}ul[data-astro-cid-fipn66cj]{align-items:center;gap:0 var(--space-1);flex-wrap:wrap;margin:0;padding:0;list-style:none;display:flex}a[data-astro-cid-fipn66cj]{min-block-size:2.75rem;padding-inline:var(--space-2);color:var(--color-text-muted);font-weight:var(--font-weight-regular);text-decoration-color:#0000;text-decoration-thickness:var(--border-width-strong);text-underline-offset:var(--space-2);align-items:center;display:inline-flex}a[data-astro-cid-fipn66cj]:hover{color:var(--color-accent-hover);text-decoration-color:currentColor}a[data-astro-cid-fipn66cj][aria-current=page]{color:var(--color-heading);font-weight:var(--font-weight-medium);text-decoration-color:var(--color-accent)}.site-header__inner[data-astro-cid-vwn3tmth]{justify-content:space-between;align-items:center;gap:var(--space-1) var(--space-6);border-block-end:var(--border-width) solid var(--color-border);padding-block:var(--space-5);flex-wrap:wrap;display:flex}.site-title[data-astro-cid-vwn3tmth]{min-block-size:2.75rem;color:var(--color-heading);font-size:var(--text-site-title);font-weight:var(--font-weight-medium);line-height:var(--line-height-snug);flex:14rem;align-items:center;text-decoration-color:#0000;display:inline-flex}.site-title[data-astro-cid-vwn3tmth]:hover{color:var(--color-accent-hover);text-decoration-color:currentColor}@media (width<=47.99rem){.site-header__inner[data-astro-cid-vwn3tmth]{text-align:center;justify-content:center}.site-title[data-astro-cid-vwn3tmth]{flex-basis:100%;justify-content:center}}@font-face{font-family:Geist;src:url(/fonts/geist/geist-variable.woff2)format("woff2-variations");font-style:normal;font-weight:400 600;font-display:swap}@font-face{font-family:Geist;src:url(/fonts/geist/geist-variable-italic.woff2)format("woff2-variations");font-style:italic;font-weight:400;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/jetbrains-mono/jetbrains-mono-variable.woff2)format("woff2-variations");font-style:normal;font-weight:400 500;font-display:swap}*,:before,:after{box-sizing:border-box}html{text-size-adjust:100%}body,body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd{margin:0}h1,h2,h3,h4,h5,h6,p{overflow-wrap:break-word}img,picture,video,canvas,svg{max-inline-size:100%;display:block}img,picture,video{block-size:auto}button,input,textarea,select{color:inherit;font:inherit}button{text-align:inherit}table{border-collapse:collapse;border-spacing:0}a{color:inherit}pre{margin:0}[hidden]{display:none}:root{color-scheme:light;--font-sans:"Geist", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", Consolas, monospace;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--text-xs:.75rem;--text-sm:.875rem;--text-base:1rem;--text-site-title:1.125rem;--text-reading:clamp(1rem, .975rem + .1vw, 1.0625rem);--text-heading-sm:clamp(1.1rem, 1.05rem + .25vw, 1.25rem);--text-heading-md:clamp(1.375rem, 1.275rem + .35vw, 1.65rem);--text-post-title:clamp(1.875rem, 1.7rem + .9vw, 2.625rem);--text-title:clamp(2rem, 1.65rem + 1.45vw, 3rem);--line-height-compact:1.2;--line-height-post-title:1.15;--line-height-snug:1.4;--line-height-base:1.62;--line-height-reading:1.68;--letter-spacing-tight:-.025em;--letter-spacing-label:.055em;--page-width:72rem;--article-width:44rem;--archive-list-width:48rem;--post-shell-width:64rem;--toc-width:14rem;--toc-gap:3rem;--post-shell-with-toc-width:calc(var(--article-width) + (2 * var(--toc-width)) + (2 * var(--toc-gap)));--toc-sticky-offset:var(--space-6);--article-anchor-offset:var(--space-8);--page-gutter:clamp(1rem, 4vw, 2rem);--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.25rem;--space-6:clamp(1.5rem, 1.35rem + .6vw, 2rem);--space-8:clamp(2rem, 1.7rem + 1.2vw, 3rem);--space-10:clamp(2.5rem, 2rem + 2vw, 4rem);--space-12:clamp(3rem, 2.4rem + 2.4vw, 4.5rem);--space-16:clamp(4rem, 3rem + 4vw, 6.5rem);--color-canvas:#f7f7f4;--color-surface:#fcfcfa;--color-surface-raised:#fff;--color-text:#303633;--color-text-muted:#626b67;--color-heading:#1c211f;--color-border:#d9dedb;--color-border-strong:#b8c1bd;--color-accent:#315f56;--color-accent-hover:#244b44;--color-focus:#17695b;--color-code-background:#eef2ef;--color-code-text:#27332f;--color-selection:#cfe3dc;--color-note:#55757a;--color-note-surface:#edf3f3;--color-tip:#52725a;--color-tip-surface:#eef4ef;--color-important:#6b5c7c;--color-important-surface:#f2eff5;--color-warning:#87622f;--color-warning-surface:#f7f2e8;--color-danger:#8a4c4c;--color-danger-surface:#f7eeee;--border-width:.0625rem;--border-width-strong:.125rem;--radius-sm:.25rem;--radius-md:.5rem;--focus-ring-width:.1875rem;--focus-ring-offset:.1875rem;--duration-fast:.14s;--duration-normal:.22s;--ease-standard:cubic-bezier(.2, 0, 0, 1)}@media (width<=47.99rem){:root{--text-xs:.6875rem;--text-sm:.8125rem;--text-base:.9375rem;--text-site-title:1rem;--text-reading:.9375rem;--text-heading-sm:1rem;--text-heading-md:1.25rem;--text-post-title:1.625rem;--text-title:1.75rem}}html{background:var(--color-canvas);scroll-behavior:smooth;text-rendering:optimizelegibility;scroll-padding-block-start:var(--space-6)}body{background:var(--color-canvas);min-block-size:100vh;color:var(--color-text);font-family:var(--font-sans);font-size:var(--text-base);font-weight:var(--font-weight-regular);line-height:var(--line-height-base);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}::selection{background:var(--color-selection);color:var(--color-heading)}a{color:var(--color-accent);text-underline-offset:.18em;transition:color var(--duration-fast) var(--ease-standard), text-decoration-color var(--duration-fast) var(--ease-standard);text-decoration-color:currentColor;text-decoration-thickness:.075em}a:hover{color:var(--color-accent-hover)}.text-row-indicator{padding-inline-start:var(--space-5);position:relative}.text-row-indicator:before,.text-row-indicator__marker{color:var(--color-accent);font-family:var(--font-mono);line-height:var(--line-height-snug);opacity:0;pointer-events:none;transform:translateX(calc(-1 * var(--space-1)));transition:opacity var(--duration-fast) var(--ease-standard), transform var(--duration-fast) var(--ease-standard);position:absolute;inset-block-start:0;inset-inline-start:0}.text-row-indicator:before{content:">"}.text-row-indicator:is(:hover,:focus-within):before,.text-row-indicator:is(:hover,:focus-within) .text-row-indicator__marker{opacity:1;transform:translate(0)}:where(a,button,input,textarea,select,summary):focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--focus-ring-offset)}img{color:var(--color-text-muted);font-style:italic}hr{border:0;border-block-start:var(--border-width) solid var(--color-border);margin:0}button{border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface-raised);min-block-size:2.5rem;color:var(--color-heading);cursor:pointer;font-weight:var(--font-weight-medium);line-height:var(--line-height-snug);padding:var(--space-2) var(--space-4);transition:background-color var(--duration-fast) var(--ease-standard), border-color var(--duration-fast) var(--ease-standard), color var(--duration-fast) var(--ease-standard);justify-content:center;align-items:center;text-decoration:none;display:inline-flex}button:hover{border-color:var(--color-accent);background:var(--color-surface);color:var(--color-accent-hover)}button:disabled,input:disabled,textarea:disabled,select:disabled{cursor:not-allowed;opacity:.6}input,textarea,select{border:var(--border-width) solid var(--color-border-strong);border-radius:var(--radius-sm);background:var(--color-surface-raised);max-inline-size:100%;padding:var(--space-2) var(--space-3)}textarea{resize:vertical}@media (prefers-reduced-motion:reduce){.text-row-indicator:before,.text-row-indicator__marker{transition:none}:root{--duration-fast:.01ms;--duration-normal:.01ms}html{scroll-behavior:auto}*,:before,:after{scroll-behavior:auto;animation-duration:.01ms;animation-iteration-count:1}}h1,h2,h3,h4,h5,h6{color:var(--color-heading);font-weight:var(--font-weight-semibold);line-height:var(--line-height-compact);text-wrap:balance}h1{font-size:var(--text-title);letter-spacing:var(--letter-spacing-tight)}h2{font-size:var(--text-heading-md);letter-spacing:-.018em}h3{font-size:var(--text-heading-sm);letter-spacing:-.012em}h4,h5,h6{font-size:var(--text-base);line-height:var(--line-height-snug)}p{line-height:var(--line-height-base)}strong,b{font-weight:var(--font-weight-semibold)}small,.metadata{color:var(--color-text-muted);font-size:var(--text-sm);line-height:var(--line-height-base)}.eyebrow{color:var(--color-text-muted);font-size:var(--text-xs);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-label);line-height:var(--line-height-snug);text-transform:uppercase}.page-title{max-inline-size:24ch}.prose{color:var(--color-text);font-size:var(--text-reading);line-height:var(--line-height-reading)}.prose p{line-height:inherit}.prose>*+*{margin-block-start:var(--space-5)}.prose>:first-child{margin-block-start:0}.prose>:where(h2,h3){scroll-margin-block-start:var(--article-anchor-offset)}.prose>:where(h4,h5,h6){scroll-margin-block-start:var(--space-8)}.prose>h2{margin-block-start:var(--space-8)}.prose>h3,.prose>:where(h4,h5,h6){margin-block-start:var(--space-6)}.prose :where(p,li,blockquote,figcaption,td,th,h2,h3,h4,h5,h6,a){overflow-wrap:anywhere}.prose a{font-weight:var(--font-weight-medium);text-decoration-line:underline}.prose :where(ul,ol){margin-block:var(--space-5);padding-inline-start:1.4em}.prose li+li{margin-block-start:var(--space-2)}.prose li>:where(ul,ol){margin-block:var(--space-2) 0}.prose li::marker{color:var(--color-text-muted)}.prose blockquote{border-inline-start:var(--border-width-strong) solid var(--color-accent);color:var(--color-text-muted);margin-inline:0;padding-inline-start:var(--space-5)}.prose blockquote>*+*{margin-block-start:var(--space-3)}.prose hr{margin-block:var(--space-10)}.prose figure{margin-inline:0}.prose :where(img,figure){margin-block:var(--space-8)}.prose img{border-radius:var(--radius-sm);object-fit:contain;block-size:auto;max-block-size:min(75vh,42rem);inline-size:auto;max-inline-size:100%;margin-inline:auto;display:block}.prose .article-image-link{inline-size:fit-content;max-inline-size:100%;margin-block:var(--space-8);margin-inline:auto;display:block}.prose .article-image-link img{margin:0}.prose figcaption,.prose img+em,.prose .article-image-link+em{color:var(--color-text-muted);font-size:var(--text-sm);line-height:var(--line-height-base);text-align:center;margin-block-start:var(--space-2);display:block}.prose .article-image-link+em{margin-block-start:calc(-1 * var(--space-6))}.prose :not(pre)>code{box-decoration-break:clone;border:var(--border-width) solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-code-background);color:var(--color-code-text);font-family:var(--font-mono);font-size:.88em;font-weight:var(--font-weight-medium);overflow-wrap:anywhere;padding:.12em .32em}.prose kbd{border:var(--border-width) solid var(--color-border-strong);border-block-end-width:var(--border-width-strong);border-radius:var(--radius-sm);background:var(--color-surface-raised);color:var(--color-heading);font-family:var(--font-mono);font-size:.78em;font-weight:var(--font-weight-medium);overflow-wrap:anywhere;vertical-align:.08em;white-space:normal;max-inline-size:100%;padding:.2em .42em;line-height:1;display:inline-block}.prose .table-scroll{border:var(--border-width) solid var(--color-border);border-radius:var(--radius-sm);scrollbar-color:var(--color-border-strong) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;max-inline-size:100%;overflow-x:auto}.prose .table-scroll:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:var(--focus-ring-offset)}.prose table{inline-size:max-content;min-inline-size:100%;font-size:var(--text-sm);line-height:var(--line-height-base)}.prose :where(th,td){border-inline-end:var(--border-width) solid var(--color-border);border-block-end:var(--border-width) solid var(--color-border);min-inline-size:8rem;padding:var(--space-3) var(--space-4);text-align:start;vertical-align:top}.prose th{background:var(--color-code-background);color:var(--color-heading);font-weight:var(--font-weight-semibold)}.prose :where(th,td)[align=center]{text-align:center}.prose :where(th,td)[align=right]{text-align:end}.prose tr>:last-child{border-inline-end:0}.prose tbody tr:last-child>*{border-block-end:0}.prose td code{white-space:nowrap}.prose pre{border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);max-inline-size:100%;padding:var(--space-5);background:var(--color-code-background);color:var(--color-code-text);font-family:var(--font-mono);tab-size:2;scrollbar-color:var(--color-border-strong) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;font-size:clamp(.79rem,.76rem + .12vw,.875rem);line-height:1.7;overflow-x:auto}.prose pre.astro-code{background:var(--color-code-background)!important}.prose pre code{min-inline-size:max-content;color:inherit;font:inherit;background:0 0;border:0;padding:0;display:block}.prose .code-block{margin-block:var(--space-6);border:var(--border-width) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-code-background);overflow:hidden}.prose .code-block__header{justify-content:flex-end;align-items:center;gap:var(--space-3);border-block-end:var(--border-width) solid var(--color-border);background:var(--color-surface);min-block-size:2.75rem;color:var(--color-text);font-size:inherit;padding:var(--space-1) var(--space-2) var(--space-1) var(--space-4);text-align:start;margin-block-start:0;display:flex}.prose .code-block__label{min-inline-size:0;color:var(--color-text-muted);font-family:var(--font-mono);font-size:var(--text-xs);line-height:var(--line-height-snug);overflow-wrap:anywhere;margin-inline-end:auto}.prose .code-block__copy{min-block-size:2.25rem;font-family:var(--font-mono);font-size:var(--text-xs);padding:var(--space-1) var(--space-3);background:0 0;border-color:#0000;flex:none}.prose .code-block__copy[data-copy-state=success]{color:var(--color-accent)}.prose .code-block__copy[data-copy-state=failure]{color:var(--color-danger)}.prose .code-block__viewport{overscroll-behavior-inline:contain;scrollbar-color:var(--color-border-strong) transparent;scrollbar-width:thin;-webkit-overflow-scrolling:touch;max-inline-size:100%;overflow-x:auto}.prose .code-block__viewport:focus-visible{outline:var(--focus-ring-width) solid var(--color-focus);outline-offset:calc(-1 * var(--focus-ring-width))}.prose .code-block pre{min-inline-size:max-content;padding:var(--space-4) 0;background:0 0;border:0;border-radius:0;overflow:visible}.prose .code-block pre.astro-code{background:0 0!important}.prose .code-block pre code{counter-reset:code-line;grid-auto-rows:1lh;display:grid}.prose .code-block__line{min-block-size:1lh;padding-inline:var(--space-4);white-space:pre;display:block}.prose [data-line-numbers] .code-block__line{--code-number-cell-width:4ch;--code-number-cell-gap:var(--space-1);--code-number-divider-width:var(--border-width);--code-number-to-code-gap:var(--space-4);background-image:linear-gradient(to right, var(--color-border), var(--color-border));background-position:calc(var(--code-number-cell-gap) + var(--code-number-cell-width) + var(--code-number-cell-gap)) 0;background-repeat:no-repeat;background-size:var(--code-number-divider-width) 100%;counter-increment:code-line;padding-inline-start:var(--code-number-cell-gap)}.prose [data-line-numbers] .code-block__line:before{inline-size:var(--code-number-cell-width);color:var(--color-text-muted);content:counter(code-line);font-variant-numeric:tabular-nums;text-align:center;user-select:none;border:0;margin-inline-end:calc(var(--code-number-cell-gap) + var(--code-number-divider-width) + var(--code-number-to-code-gap));padding:0;display:inline-block}.prose .footnotes{border-block-start:var(--border-width) solid var(--color-border);font-size:var(--text-sm);margin-block-start:var(--space-10);padding-block-start:var(--space-5)}.prose :where([data-footnote-ref],[data-footnote-backref]){white-space:nowrap}.admonition{--admonition-accent:var(--color-note);--admonition-surface:var(--color-note-surface);border-inline-start:var(--border-width-strong) solid var(--admonition-accent);border-radius:0 var(--radius-sm) var(--radius-sm) 0;background:var(--admonition-surface);font-size:inherit;font-weight:var(--font-weight-regular);line-height:inherit;padding:var(--space-4) var(--space-5)}.admonition>*+*{margin-block-start:var(--space-2)}.admonition__label{color:var(--admonition-accent);font-size:var(--text-sm);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-label);line-height:var(--line-height-snug)}.admonition__content>*+*{margin-block-start:var(--space-3)}.admonition__content{font-size:inherit;font-weight:inherit;line-height:inherit}.admonition__content>:where(p,ul,ol){margin-block:0}.admonition:is([data-admonition=tip],.admonition--tip){--admonition-accent:var(--color-tip);--admonition-surface:var(--color-tip-surface)}.admonition:is([data-admonition=important],.admonition--important){--admonition-accent:var(--color-important);--admonition-surface:var(--color-important-surface)}.admonition:is([data-admonition=warning],.admonition--warning){--admonition-accent:var(--color-warning);--admonition-surface:var(--color-warning-surface)}.admonition:is([data-admonition=danger],.admonition--danger){--admonition-accent:var(--color-danger);--admonition-surface:var(--color-danger-surface)}.site-container{inline-size:min(calc(100% - (2 * var(--page-gutter))), var(--page-width));margin-inline:auto}.article-container{inline-size:min(100%, var(--article-width));margin-inline:auto}.post-shell{inline-size:min(100%, var(--post-shell-width));margin-inline:auto}.flow>*+*{margin-block-start:var(--flow-space,var(--space-5))}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;block-size:1px;inline-size:1px;position:absolute;overflow:hidden}.skip-link{z-index:10;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);background:var(--color-heading);color:var(--color-surface-raised);font-weight:var(--font-weight-medium);transform:translateY(calc(-100% - var(--space-6)));transition:transform var(--duration-fast) var(--ease-standard);position:fixed;inset-block-start:var(--space-3);inset-inline-start:var(--space-3)}.skip-link:focus{color:var(--color-surface-raised);transform:translateY(0)}@media (prefers-reduced-motion:reduce){.skip-link{transition:none}}.site-shell[data-astro-cid-z4jru4n3]{grid-template-rows:auto 1fr auto;grid-template-columns:minmax(0,1fr);min-block-size:100svh;display:grid}.site-main[data-astro-cid-z4jru4n3]{padding-block:var(--space-10) var(--space-12)}
