@font-face{font-family:Instrument Serif;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/instrument-serif-italic.woff2)format("woff2");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 Serif;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/instrument-serif.woff2)format("woff2");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;font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/instrument-sans.woff2)format("woff2");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;font-style:normal;font-weight:100 800;font-display:swap;src:url(/fonts/jetbrains-mono.woff2)format("woff2");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{--font-display:"Instrument Serif", ui-serif, Georgia, serif;--font-body:"Instrument Sans", system-ui, -apple-system, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--text-2xs:.66rem;--text-xs:.72rem;--text-sm:.82rem;--text-code:.78rem;--text-base:1rem;--text-md:1.125rem;--text-lg:1.22rem;--text-xl:1.42rem;--text-2xl:1.75rem;--text-3xl:clamp(2rem, 4.5vw, 2.6rem);--text-4xl:clamp(2.3rem, 6.2vw, 3.5rem);--text-5xl:clamp(2.6rem, 7.4vw, 4.4rem);--lh-tight:1.02;--lh-title:1.12;--lh-snug:1.3;--lh-body:1.68;--lh-loose:1.75;--track-display:-.012em;--track-title:-.008em;--track-label:.15em;--track-meta:.02em;--s1:.25rem;--s2:.5rem;--s3:.75rem;--s4:1rem;--s5:1.5rem;--s6:2rem;--s7:3rem;--s8:4rem;--s9:6rem;--s10:8rem;--measure:66ch;--measure-narrow:52ch;--page-max:940px;--page-pad:clamp(1.1rem, 4vw, 2.5rem);--r-sm:3px;--r:6px;--r-lg:10px;--paper:#f0f1ee;--surface:#f7f8f6;--surface-high:#fff;--ink:#16201d;--muted:#616d69;--faint:#8a9691;--line:#d6dcd8;--line-strong:#c2cac5;--accent:#1f7a6e;--accent-hover:#185f56;--accent-soft:#1f7a6e14;--mark-sup:.1;--mark-tip:.58;--mark-end:.92}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--paper:#0c1412;--surface:#131c1a;--surface-high:#1a2422;--ink:#dce5e1;--muted:#869590;--faint:#6a7975;--line:#223029;--line-strong:#2e3e38;--accent:#3fa795;--accent-hover:#55bca9;--accent-soft:#3fa7951a;--mark-sup:.13;--mark-tip:.52;--mark-end:.9}}:root[data-theme=dark]{--paper:#0c1412;--surface:#131c1a;--surface-high:#1a2422;--ink:#dce5e1;--muted:#869590;--faint:#6a7975;--line:#223029;--line-strong:#2e3e38;--accent:#3fa795;--accent-hover:#55bca9;--accent-soft:#3fa7951a;--mark-sup:.13;--mark-tip:.52;--mark-end:.9}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:var(--font-body);font-size:var(--text-base);line-height:var(--lh-body);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0}h1,h2,h3,h4,p,figure,blockquote,ul,ol,dl{margin:0}ul,ol{padding:0;list-style:none}img,svg,video{max-width:100%;display:block}button{font:inherit}a{color:inherit;text-decoration:none}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:var(--r-sm)}::selection{background:var(--accent-soft)}.skip{left:var(--s4);top:calc(var(--s4) * -8);z-index:10;background:var(--surface-high);border:1px solid var(--accent);border-radius:var(--r-sm);padding:var(--s2) var(--s4);font-family:var(--font-mono);font-size:var(--text-xs);transition:top .16s;position:absolute}.skip:focus{top:var(--s4)}.page{width:100%;max-width:var(--page-max);padding:0 var(--page-pad);margin:0 auto}.site{flex-direction:column;min-height:100vh;display:flex}.site>main{flex:1}.mark{display:block}.mark .sup{opacity:var(--mark-sup)}.mark .tip{opacity:var(--mark-tip)}.mark .end{opacity:var(--mark-end)}.mark .ctr{fill:var(--accent)}.masthead{align-items:center;gap:var(--s5);padding:var(--s5) 0;border-bottom:1px solid var(--line);flex-wrap:wrap;display:flex}.brand{align-items:center;gap:var(--s3);display:flex}.brand .mark{width:26px;height:26px;color:var(--ink)}.brand .name{font-family:var(--font-display);letter-spacing:var(--track-title);font-size:1.12rem}.nav{align-items:center;gap:var(--s5);flex-wrap:wrap;margin-left:auto;display:flex}.nav a{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:var(--track-meta);color:var(--muted);transition:color .14s}.nav a:hover{color:var(--accent)}.nav a[aria-current=page]{color:var(--ink)}.theme-btn{border:1px solid var(--line);color:var(--muted);cursor:pointer;font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--track-meta);padding:var(--s1) var(--s3);background:0 0;border-radius:999px;transition:color .14s,border-color .14s}.theme-btn:hover{color:var(--accent);border-color:var(--accent)}.nav a,.foot a,.section-head a.aside{align-items:center;min-height:28px;display:inline-flex}@media (pointer:coarse){.nav a,.foot a,.section-head a.aside,.theme-btn,.brand{min-height:44px}.section-head a.aside,.theme-btn{align-items:center;display:inline-flex}}.section{padding:var(--s7) 0}.section-head{align-items:baseline;gap:var(--s4);padding-bottom:var(--s3);border-bottom:1px solid var(--line);margin-bottom:var(--s5);display:flex}.section-head h2,.section-head .h{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--muted);font-weight:400}.section-head .aside{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--track-meta);color:var(--faint);margin-left:auto}.kicker{font-family:var(--font-mono);font-size:var(--text-2xs);letter-spacing:var(--track-label);text-transform:uppercase;color:var(--accent)}.page-head{padding:var(--s8) 0 var(--s6)}.page-head h1{font-family:var(--font-display);font-weight:400;font-size:var(--text-4xl);line-height:var(--lh-title);letter-spacing:var(--track-display);text-wrap:balance;max-width:20ch;margin-top:var(--s4)}.page-head .deck{font-family:var(--font-display);font-style:italic;font-size:var(--text-lg);color:var(--muted);max-width:var(--measure-narrow);margin-top:var(--s4);text-wrap:pretty;line-height:1.42}.index{flex-direction:column;display:flex}.entry{gap:var(--s4);padding:var(--s4) var(--s3);margin:0 calc(var(--s3) * -1);border-radius:var(--r-sm);border-bottom:1px solid var(--line);grid-template-columns:13rem 1fr auto;align-items:baseline;transition:background .14s;display:grid}.entry:hover{background:var(--accent-soft)}.entry:hover .title{color:var(--accent)}.entry .title{font-weight:600;transition:color .14s}.entry .desc{color:var(--muted);font-size:var(--text-sm);max-width:54ch}.entry .spec{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--faint);letter-spacing:var(--track-meta);white-space:nowrap;font-variant-numeric:tabular-nums}@media (width<=700px){.entry{gap:var(--s1);grid-template-columns:1fr}.entry .spec{white-space:normal}}.piece{gap:var(--s4);padding:var(--s4) var(--s3);margin:0 calc(var(--s3) * -1);border-radius:var(--r-sm);border-bottom:1px solid var(--line);grid-template-columns:1fr auto;align-items:baseline;transition:background .14s;display:grid}.piece:hover{background:var(--accent-soft)}.piece:hover .ptitle{color:var(--accent)}.ptitle{font-family:var(--font-display);font-size:var(--text-xl);line-height:var(--lh-snug);letter-spacing:var(--track-title);max-width:42ch;transition:color .14s}.piece .psum{color:var(--muted);font-size:var(--text-sm);max-width:var(--measure);margin-top:var(--s1);grid-column:1/-1}.piece .pmeta{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--faint);white-space:nowrap;font-variant-numeric:tabular-nums}.piece .pmeta .off{color:var(--accent)}@media (width<=620px){.piece{gap:var(--s1);grid-template-columns:1fr}}.prose{max-width:var(--measure);font-size:var(--text-md)}.prose>*+*{margin-top:var(--s5)}.prose h2{font-family:var(--font-display);font-weight:400;font-size:var(--text-2xl);line-height:var(--lh-title);letter-spacing:var(--track-title);margin-top:var(--s8)}.prose h3{font-family:var(--font-display);font-weight:400;font-size:var(--text-xl);line-height:var(--lh-snug);margin-top:var(--s7)}.prose a{color:var(--accent);text-underline-offset:2px;text-decoration:underline 1px}.prose a:hover{color:var(--accent-hover)}.prose strong{font-weight:600}.prose em{font-family:var(--font-display);font-size:1.06em;font-style:italic}.prose ul,.prose ol{padding-left:var(--s5)}.prose ul{list-style:none}.prose ul li{position:relative}.prose ul li:before{content:"";left:calc(var(--s4) * -1);background:var(--accent);opacity:.7;border-radius:1px;width:5px;height:5px;position:absolute;top:.68em}.prose ol{list-style:decimal}.prose ol li::marker{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--faint)}.prose li+li{margin-top:var(--s2)}.prose blockquote{border-left:2px solid var(--accent);padding-left:var(--s5);font-family:var(--font-display);font-style:italic;font-size:var(--text-lg);color:var(--muted);line-height:1.45}.prose code{font-family:var(--font-mono);font-size:var(--text-code);background:var(--accent-soft);border-radius:var(--r-sm);padding:.12em .34em}.prose pre{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:var(--s4) var(--s5);font-size:var(--text-code);line-height:1.6;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;padding:0}.prose hr{border:0;border-top:1px solid var(--line);margin:var(--s8) 0}.prose figure figcaption{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--faint);margin-top:var(--s2)}:root[data-theme=dark] .astro-code,:root[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:#0000!important}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .astro-code,:root:not([data-theme=light]) .astro-code span{color:var(--shiki-dark)!important;background-color:#0000!important}}.foot{border-top:1px solid var(--line);margin-top:var(--s8);padding:var(--s6) 0 var(--s8);gap:var(--s5);flex-wrap:wrap;align-items:center;display:flex}.foot .links{gap:var(--s5);flex-wrap:wrap;display:flex}.foot a,.foot span{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--muted);letter-spacing:var(--track-meta);transition:color .14s}.foot a:hover{color:var(--accent)}.foot .sig{color:var(--faint);margin-left:auto}
