.astro-route-announcer{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;top:0;left:0;overflow:hidden}header[data-astro-cid-fzpbxy5g]{border-bottom:1px solid var(--line)}.bar[data-astro-cid-fzpbxy5g]{justify-content:space-between;align-items:center;gap:var(--space-5);padding-block:var(--space-4);display:flex}.brand[data-astro-cid-fzpbxy5g]{color:var(--ink);letter-spacing:-.01em;font-weight:600;text-decoration:none}.brand[data-astro-cid-fzpbxy5g]:hover{color:var(--accent)}.main-nav[data-astro-cid-fzpbxy5g]{justify-content:flex-end;align-items:center;gap:var(--space-1) var(--space-5);flex-wrap:wrap;display:flex}.nav-link[data-astro-cid-fzpbxy5g]{color:var(--ink-soft);font-family:var(--font-mono);font-size:var(--t-meta);letter-spacing:.02em;text-decoration:none}.nav-link[data-astro-cid-fzpbxy5g]:hover,.nav-link[data-astro-cid-fzpbxy5g][aria-current=page]{color:var(--ink)}button[data-astro-cid-fzpbxy5g]{width:2rem;height:2rem;color:var(--ink-soft);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:8px;place-items:center;display:grid}button[data-astro-cid-fzpbxy5g]:hover{color:var(--ink);border-color:var(--ink-soft)}@media (width<=560px){.bar[data-astro-cid-fzpbxy5g]{align-items:flex-start;gap:var(--space-2);padding-block:var(--space-3);flex-direction:column}.main-nav[data-astro-cid-fzpbxy5g]{justify-content:flex-start;gap:0 var(--space-4);width:100%}.nav-link[data-astro-cid-fzpbxy5g]{align-items:center;min-height:2.25rem;display:flex}}html[data-theme=dark] .moon[data-astro-cid-fzpbxy5g],html:not([data-theme=dark]) .sun[data-astro-cid-fzpbxy5g]{display:none}footer[data-astro-cid-nns7i3if]{border-top:1px solid var(--line);margin-top:var(--space-8)}.inner[data-astro-cid-nns7i3if]{padding-block:var(--space-6) var(--space-5)}.top[data-astro-cid-nns7i3if]{justify-content:space-between;align-items:flex-start;gap:var(--space-5);display:flex}.name[data-astro-cid-nns7i3if]{letter-spacing:-.01em;font-weight:600}.where[data-astro-cid-nns7i3if]{font-family:var(--font-mono);font-size:var(--t-meta);color:var(--ink-soft);margin-top:.15rem}.social[data-astro-cid-nns7i3if]{gap:var(--space-1);display:flex}.social[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{width:2.25rem;height:2.25rem;color:var(--ink-soft);border-radius:8px;place-items:center;text-decoration:none;display:grid}.social[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:hover{color:var(--ink);background:var(--bg-raised)}.links[data-astro-cid-nns7i3if]{gap:var(--space-1) var(--space-4);margin-top:var(--space-5);font-family:var(--font-mono);font-size:var(--t-meta);flex-wrap:wrap;display:flex}.links[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{color:var(--ink-soft);text-decoration:none}.links[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:hover{color:var(--accent);text-decoration:underline}.colophon[data-astro-cid-nns7i3if]{gap:0 var(--space-4);margin-top:var(--space-5);padding-top:var(--space-4);border-top:1px solid var(--line);font-family:var(--font-mono);font-size:var(--t-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);flex-wrap:wrap;display:flex}@media (width<=520px){.top[data-astro-cid-nns7i3if]{gap:var(--space-4);flex-direction:column}.social[data-astro-cid-nns7i3if]{margin-left:calc(-1 * var(--space-2))}}:root{--bg:oklch(96.6% .008 82);--bg-raised:oklch(93.8% .011 82);--ink:oklch(26% .018 250);--ink-soft:oklch(50% .014 250);--line:oklch(87% .01 82);--accent:oklch(50% .13 233);--accent-soft:oklch(50% .13 233/.1);--flag:oklch(53% .13 58);--t-display:clamp(2.5rem, 7vw, 3.75rem);--t-h1:clamp(1.875rem, 5vw, 2.625rem);--t-h2:1.375rem;--t-figure:1.5rem;--t-lead:1.1875rem;--t-h3:1.0625rem;--t-body:1.0625rem;--t-read:1rem;--t-meta:.8125rem;--t-micro:.6875rem;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--gutter:1.25rem}html[data-theme=dark]{--bg:oklch(27% .013 258);--bg-raised:oklch(31.5% .015 258);--ink:oklch(93% .008 250);--ink-soft:oklch(73% .013 250);--line:oklch(38% .015 258);--accent:oklch(80% .11 225);--accent-soft:oklch(80% .11 225/.16);--flag:oklch(82% .11 70);color-scheme:dark}*{box-sizing:border-box;margin:0}html{color-scheme:light;scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans);font-size:var(--t-body);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-weight:400;line-height:1.75}::selection{background:var(--accent-soft);color:var(--ink)}a{color:var(--accent);text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}.display,h1{font-family:var(--font-serif);font-weight:400;font-size:var(--t-h1);letter-spacing:-.015em;text-wrap:balance;line-height:1.08}.display-xl{font-size:var(--t-display)}h2,h3{font-family:var(--font-sans);letter-spacing:-.01em;text-wrap:balance;font-weight:600;line-height:1.25}h2{font-size:var(--t-h2)}h3{font-size:var(--t-h3)}p{text-wrap:pretty}.eyebrow{font-family:var(--font-mono);font-size:var(--t-micro);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft);font-weight:500}.eyebrow .count{color:var(--flag)}.meta{font-family:var(--font-mono);font-size:var(--t-meta);font-variant-numeric:tabular-nums;color:var(--ink-soft);font-weight:400;line-height:1.5}.meta .fig{color:var(--ink)}.lede{font-size:var(--t-read);color:var(--ink-soft)}time,.numeric{font-variant-numeric:tabular-nums}code,pre{font-family:var(--font-mono);font-size:.9em}:not(pre)>code{background:var(--accent-soft);color:var(--ink);border-radius:4px;padding:.1em .35em}pre{border:1px solid var(--line);border-radius:10px;padding:1rem 1.25rem;line-height:1.6;position:relative;overflow-x:auto}html[data-theme=dark] .astro-code,html[data-theme=dark] .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}.container{max-width:44rem;padding-inline:var(--gutter);margin-inline:auto}.skip-link{z-index:20;background:var(--ink);color:var(--bg);border-radius:6px;padding:.45rem .7rem;position:fixed;top:.75rem;left:.75rem;transform:translateY(-200%)}.skip-link:focus{transform:none}.prose>*+*{margin-top:1.1em}.prose :not(pre)>code,.prose a{overflow-wrap:anywhere}.prose h2{margin-top:2.4em}.prose h3{margin-top:1.8em}.prose ul,.prose ol{padding-left:1.4rem}.prose li+li{margin-top:.4em}.prose blockquote{border-left:2px solid var(--flag);color:var(--ink-soft);padding-left:1rem;font-style:italic}.prose img{border-radius:10px;max-width:100%}.prose hr{border:0;border-top:1px solid var(--line)}.prose table{border-collapse:collapse;width:max-content;max-width:100%;font-size:var(--t-meta);font-family:var(--font-mono);line-height:1.5;display:block;overflow-x:auto}.prose th{text-align:left;font-family:var(--font-sans);color:var(--ink-soft);font-weight:600;font-size:var(--t-micro);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.prose th,.prose td{border-bottom:1px solid var(--line);padding:.5rem 1rem .5rem 0}.prose td{font-variant-numeric:tabular-nums}.back{font-family:var(--font-mono);font-size:var(--t-meta);color:var(--ink-soft);text-decoration:none;display:inline-block}.back:hover{color:var(--accent)}.progress{background:var(--accent);transform-origin:0;z-index:10;height:2px;position:fixed;inset:0 0 auto;transform:scaleX(0)}.prose .heading-anchor{color:var(--ink-soft);opacity:0;margin-left:.4em;text-decoration:none;transition:opacity .15s}.prose .heading-anchor:after{content:"#"}.prose :is(h2,h3,h4):hover .heading-anchor,.prose .heading-anchor:focus-visible{opacity:1}.prose .heading-anchor:hover{color:var(--accent)}.copy-btn{font:500 var(--t-micro) var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);background:var(--bg-raised);border:1px solid var(--line);cursor:pointer;opacity:0;border-radius:6px;padding:.25rem .55rem;transition:opacity .15s;position:absolute;top:.5rem;right:.5rem}pre:hover .copy-btn,.copy-btn:focus-visible{opacity:1}.copy-btn:hover{color:var(--ink);border-color:var(--ink-soft)}@media (hover:none){.copy-btn{opacity:1}.prose .heading-anchor{opacity:.55}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}}@media print{body>header,footer,.progress,.back,.copy-btn,.heading-anchor{display:none!important}body{color:#000;background:#fff}a{color:#000}.prose a[href^=http]:after{content:" (" attr(href) ")";color:#555;font-size:.875em}}
