:root{color-scheme:light;--ink:#111417;--paper:#fafaf7;--muted:#5a6068;--link:#0b7a55;--amber:#d08010;--amber-ink:#8a5200;--surface:color-mix(in oklab, var(--ink) 4%, var(--paper));--border:color-mix(in oklab, var(--ink) 14%, var(--paper));--border-strong:color-mix(in oklab, var(--ink) 45%, var(--paper));--focus-ring:var(--ink);--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--step--1:clamp(0.833rem, 0.812rem + 0.107vw, 0.889rem);--step-0:clamp(1rem, 0.964rem + 0.179vw, 1.125rem);--step-1:clamp(1.2rem, 1.132rem + 0.339vw, 1.4rem);--step-2:clamp(1.44rem, 1.322rem + 0.589vw, 1.75rem);--step-3:clamp(1.728rem, 1.532rem + 0.982vw, 2.19rem);--step-4:clamp(2.074rem, 1.757rem + 1.589vw, 2.74rem);--space-xs:0.5rem;--space-s:0.875rem;--space-m:1.5rem;--space-l:2.5rem;--space-xl:4rem;--gutter:clamp(1rem, 4vw, 2rem);--container:72rem;--measure:68ch;--radius:0.375rem;--toggle-size:2.25rem}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--ink:#e8eaed;--paper:#111417;--muted:#98a0a8;--link:#4cc79a;--amber:#e3a33c;--amber-ink:#e3a33c}}:root[data-theme=dark]{color-scheme:dark;--ink:#e8eaed;--paper:#111417;--muted:#98a0a8;--link:#4cc79a;--amber:#e3a33c;--amber-ink:#e3a33c}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body,h1,h2,h3,h4,p,figure,blockquote,dl,dd,ul,ol{margin:0}ul[class],ol[class]{padding:0;list-style:none}img,svg,video{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}html{font-family:var(--font-sans);line-height:1.6}body{display:flex;flex-direction:column;min-height:100vh;min-height:100dvh;background:var(--paper);color:var(--ink);font-size:var(--step-0);-webkit-font-smoothing:antialiased}main{flex:1 0 auto}h1,h2,h3,h4{line-height:1.2;text-wrap:balance}h1{font-size:var(--step-4);letter-spacing:-.02em}h2{font-size:var(--step-3)}h3{font-size:var(--step-2)}h4{font-size:var(--step-1)}p,ul,ol,blockquote,pre,table{margin-top:var(--space-s)}a{color:var(--link);text-decoration-thickness:1px;text-underline-offset:.2em}a:hover{text-decoration-thickness:2px}strong{font-weight:600}time{color:var(--muted);font-size:var(--step--1)}.lede{max-width:var(--measure);margin-top:var(--space-s);font-size:var(--step-1);color:var(--muted)}.eyebrow{font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;color:var(--amber-ink)}.skip-link:not(:focus){position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip-link:focus{position:absolute;top:var(--space-xs);left:var(--space-xs);z-index:10;padding:.6rem .9rem;border-radius:var(--radius);background:var(--link);color:var(--paper);font-weight:600;text-decoration:none}.container{width:100%;max-width:var(--container);margin-inline:auto;padding-inline:var(--gutter)}.page{padding-block:var(--space-l)var(--space-xl)}.page__header{max-width:var(--measure)}.site-header{border-bottom:1px solid var(--border);background:var(--paper)}.site-header__inner{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-s)var(--space-m);padding-block:var(--space-s)}.wordmark{display:inline-flex;align-items:center;gap:.5rem;font-size:var(--step-1);font-weight:700;letter-spacing:-.02em;color:var(--ink);text-decoration:none}.wordmark__mark{display:block;flex:none;width:2.25rem;height:2.25rem}.wordmark:hover{color:var(--link)}.site-nav__list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs)var(--space-m)}.site-nav a{color:var(--muted);font-size:var(--step--1);text-decoration:none}.site-nav a:hover{color:var(--ink);text-decoration:underline;text-decoration-color:var(--border-strong)}.site-nav a[aria-current=page]{color:var(--ink);text-decoration:underline;text-decoration-color:var(--amber);text-decoration-thickness:2px;text-underline-offset:.4em}.site-header__actions{display:flex;align-items:center;gap:var(--space-xs);margin-inline-start:auto}.cta{display:inline-flex;align-items:center;padding:.5rem .9rem;border-radius:var(--radius);background:var(--link);color:var(--paper);font-size:var(--step--1);font-weight:600;text-decoration:none}.cta:hover{background:color-mix(in oklab,var(--link) 82%,var(--ink))}.theme-toggle{position:relative;flex:none;width:var(--toggle-size);height:var(--toggle-size);padding:0;border:1px solid var(--border-strong);border-radius:var(--radius);background:0 0;color:var(--ink);cursor:pointer}.theme-toggle:hover{border-color:var(--ink)}.theme-toggle__icon{position:absolute;inset:50% auto auto 50%;width:1.125rem;height:1.125rem;transform:translate(-50%,-50%)}.theme-toggle__icon--moon{visibility:visible}.theme-toggle__icon--sun{visibility:hidden}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) .theme-toggle__icon--sun{visibility:visible}:root:not([data-theme=light]) .theme-toggle__icon--moon{visibility:hidden}}:root[data-theme=dark] .theme-toggle__icon--sun{visibility:visible}:root[data-theme=dark] .theme-toggle__icon--moon{visibility:hidden}.site-footer{margin-top:var(--space-xl);border-top:1px solid var(--border);background:var(--surface);padding-block:var(--space-l);color:var(--muted);font-size:var(--step--1)}.site-footer__inner{display:flex;flex-direction:column;gap:var(--space-m)}.site-footer__brand{padding-bottom:var(--space-xs)}.wordmark--footer{font-size:var(--step-0)}.site-footer__contact{font-weight:600}.site-footer__legal p{max-width:var(--measure)}.site-footer__legal p+p{margin-top:var(--space-xs)}.page__actions{display:flex;flex-wrap:wrap;gap:var(--space-s);margin-top:var(--space-m)}.page__note{max-width:var(--measure);margin-top:var(--space-s);color:var(--muted);font-size:var(--step--1)}.prose{max-width:var(--measure)}.prose>*+*{margin-top:var(--space-s)}.prose h2,.prose h3,.prose h4{margin-top:var(--space-l)}.prose ul,.prose ol{padding-inline-start:1.25em}.prose li+li{margin-top:.35em}.prose blockquote{padding-inline-start:var(--space-s);border-inline-start:3px solid var(--amber);color:var(--muted)}.prose code{padding:.1em .35em;border:1px solid var(--border);border-radius:.25rem;background:var(--surface);font-family:var(--font-mono);font-size:.9em}.prose pre{overflow-x:auto;padding:var(--space-s);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);font-size:var(--step--1);line-height:1.5}.prose pre code{padding:0;border:0;background:0 0;font-size:1em}.prose img{width:100%;height:auto;aspect-ratio:1344/768;border-radius:var(--radius)}.prose hr{margin-block:var(--space-l);border:0;border-top:1px solid var(--border)}.prose mark{background:color-mix(in oklab,var(--amber) 30%,transparent);color:inherit}.prose table{width:100%;border-collapse:collapse;font-size:var(--step--1)}.prose th,.prose td{padding:.5rem .65rem;border:1px solid var(--border);text-align:start}.prose th{background:var(--surface)}.page-list{display:flex;flex-direction:column;margin-top:var(--space-l);border-top:1px solid var(--border)}.page-list__item{padding-block:var(--space-m);border-bottom:1px solid var(--border)}.page-list__link{font-size:var(--step-2);color:var(--ink);text-decoration:none}.page-list__link:hover{color:var(--link);text-decoration:underline}.page-list__summary{margin-top:var(--space-xs);color:var(--muted)}.page-list__date{display:block;margin-top:var(--space-xs)}.home-hero{padding-block:var(--space-xl)var(--space-l)}.home-hero h1,.home-hero .lede{max-width:var(--measure)}.home-hero__actions{display:flex;flex-wrap:wrap;gap:var(--space-s);margin-top:var(--space-m)}.home-section{padding-block:var(--space-xl);border-top:1px solid var(--border)}.home-section__more{margin-top:var(--space-m)}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));gap:var(--space-m);margin-top:var(--space-m)}.card{height:100%;padding:var(--space-m);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.card a{color:var(--ink);text-decoration:none}.card a:hover{color:var(--link);text-decoration:underline}.post-card__meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .5rem;margin-top:var(--space-xs);color:var(--muted);font-size:var(--step--1)}.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,14rem),1fr));gap:var(--space-m);margin-top:var(--space-m);counter-reset:step}.steps__item{counter-increment:step}.steps__item::before{content:counter(step,decimal-leading-zero);display:block;margin-bottom:var(--space-xs);font-family:var(--font-mono);font-size:var(--step--1);color:var(--amber-ink)}.cta--secondary{border:1px solid var(--border-strong);background:0 0;color:var(--ink)}.cta--secondary:hover{border-color:var(--ink);background:var(--surface)}.home-cta{padding-block:var(--space-xl);border-top:1px solid var(--border);background:var(--surface)}.post-list{display:grid;gap:var(--space-m);margin-top:var(--space-l)}.post-list__item{min-width:0}.post-list__empty{max-width:var(--measure);margin-top:var(--space-l);padding:var(--space-m);border:1px dashed var(--border);border-radius:var(--radius);color:var(--muted)}.pagination{margin-top:var(--space-l)}.pagination__list{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-xs)}.pagination__link{display:inline-flex;align-items:center;justify-content:center;min-width:2.25rem;min-height:2.25rem;padding-inline:.6rem;border:1px solid var(--border);border-radius:var(--radius);color:var(--link);font-size:var(--step--1);text-decoration:none}.pagination__link:hover{border-color:var(--border-strong);text-decoration:underline}.pagination__link[aria-current=page]{border-color:var(--link);background:var(--link);color:var(--paper);font-weight:600}.post-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .5rem;margin-top:var(--space-s);color:var(--muted);font-size:var(--step--1)}.post-disclaimer{max-width:var(--measure);margin-top:var(--space-l);padding-top:var(--space-s);border-top:1px solid var(--border);color:var(--muted);font-size:var(--step--1)}.post-disclaimer p{margin:0}.tag-list{display:flex;flex-wrap:wrap;gap:var(--space-xs);margin-top:var(--space-s)}.tag{display:inline-block;padding:.1rem .6rem;border:1px solid var(--border);border-radius:999px;color:var(--link);font-size:var(--step--1);text-decoration:none}.tag:hover,.tag:focus-visible{border-color:var(--border-strong);text-decoration:underline}.toc{max-width:var(--measure);margin-top:var(--space-l);padding:var(--space-m);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.toc__title{margin:0;font-family:var(--font-mono);font-size:var(--step--1);letter-spacing:.08em;text-transform:uppercase;color:var(--amber-ink)}.toc ul{margin-top:var(--space-xs);padding-inline-start:1.1em}.toc li+li{margin-top:.25rem}.toc a{font-size:var(--step--1)}.post-nav{display:flex;flex-wrap:wrap;gap:var(--space-m);margin-top:var(--space-xl);padding-top:var(--space-m);border-top:1px solid var(--border)}.post-nav__link{display:flex;flex:1 1 min(100%,14rem);flex-direction:column;gap:.15rem;padding:var(--space-s);border:1px solid var(--border);border-radius:var(--radius);text-decoration:none}.post-nav__link:hover{border-color:var(--border-strong);background:var(--surface)}.post-nav__link--next{text-align:end}.post-nav__title{color:var(--ink)}.related{margin-top:var(--space-xl);padding-top:var(--space-m);border-top:1px solid var(--border)}.related h2{font-size:var(--step-2)}.highlight{position:relative}.code-copy{position:absolute;top:.4rem;inset-inline-end:.4rem;z-index:1;padding:.15rem .5rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--paper);color:var(--ink);font-family:var(--font-mono);font-size:var(--step--1);cursor:pointer}.code-copy:hover{border-color:var(--ink);background:var(--surface)}.code-copy[data-copied=true]{border-color:var(--link);color:var(--link)}.code-group__label{margin-top:0;font-family:var(--font-mono);font-size:var(--step--1);color:var(--muted)}.code-tabs{margin-top:var(--space-m)}.code-tabs__list{display:flex;flex-wrap:wrap;gap:.25rem}.code-tabs__tab{padding:.2rem .7rem;border:1px solid var(--border);border-radius:var(--radius)var(--radius)0 0;background:var(--surface);color:var(--muted);font-family:var(--font-mono);font-size:var(--step--1);cursor:pointer}.code-tabs__tab[aria-selected=true]{border-color:var(--border-strong);background:var(--paper);color:var(--ink)}.code-tabs .code-group__label{display:none}.prose .diagram{margin-top:var(--space-m)}@media(min-width:48rem){.prose .diagram{width:calc(100vw - 2rem);margin-inline:calc(1rem - var(--gutter))auto}}@media(min-width:74rem){.prose .diagram{width:72rem;margin-inline-start:calc(var(--gutter) * -1)}}.prose .diagram pre{display:flex;justify-content:center;margin-top:0;padding:0;border:0;background:0 0;color:var(--muted)}.diagram figcaption{margin-top:var(--space-xs);color:var(--muted);font-size:var(--step--1)}.diagram-expand,.diagram-dialog__close{padding:.2rem .7rem;border:1px solid var(--border-strong);border-radius:var(--radius);background:0 0;color:var(--link);font-family:var(--font-mono);font-size:var(--step--1);cursor:pointer}.diagram-expand{margin-top:var(--space-xs)}.diagram-dialog{width:min(96vw,96rem);max-width:none;height:90vh;max-height:none;padding:0;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--paper);color:var(--ink)}.diagram-dialog[open]{display:flex;flex-direction:column}.diagram-dialog::backdrop{background:rgb(0 0 0/55%)}.diagram-dialog__bar{display:flex;justify-content:flex-end;padding:var(--space-xs)var(--space-s);border-bottom:1px solid var(--border)}.diagram-dialog__body{flex:1;padding:var(--space-s);overflow:auto;overscroll-behavior:contain}.diagram-dialog__body svg{width:100%;min-width:48rem;max-width:none;height:auto}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:3px}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}