.site-header[data-astro-cid-3ef6ksr2]{position:relative;z-index:10;border-bottom:1px solid var(--rule);background:var(--paper)}.site-header[data-astro-cid-3ef6ksr2].is-overlay{position:absolute;inset:0 0 auto;background:transparent;border-bottom-color:transparent;color:var(--light)}.bar[data-astro-cid-3ef6ksr2]{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;min-height:4.75rem}.brand[data-astro-cid-3ef6ksr2]{display:block;color:inherit}.brand[data-astro-cid-3ef6ksr2] .logo{width:clamp(8.25rem,12vw,10rem);height:auto}ul[data-astro-cid-3ef6ksr2]{list-style:none;display:flex;gap:clamp(1.1rem,3vw,2.5rem)}nav[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{position:relative;display:inline-block;padding-block:.6rem;font-family:var(--display);font-size:1.05rem;font-weight:600;letter-spacing:0;text-decoration:none}nav[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:after{content:"";position:absolute;left:0;right:0;bottom:.25rem;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease-out)}nav[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]:hover:after{transform:scaleX(1)}nav[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2][aria-current=page]:before{content:"";position:absolute;left:50%;bottom:-.15rem;width:5px;height:5px;border-radius:50%;background:var(--tally);transform:translate(-50%)}@media(max-width:30rem){.bar[data-astro-cid-3ef6ksr2]{min-height:4rem}.brand[data-astro-cid-3ef6ksr2] .logo{width:7.25rem}ul[data-astro-cid-3ef6ksr2]{gap:.95rem}nav[data-astro-cid-3ef6ksr2] a[data-astro-cid-3ef6ksr2]{font-size:.94rem}}.site-footer[data-astro-cid-sz7xmlte]{padding-block:clamp(3.5rem,7vw,5.5rem) 2rem}.top[data-astro-cid-sz7xmlte]{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:2rem;padding-bottom:clamp(2.5rem,5vw,4rem);border-bottom:1px solid var(--rule-night)}.brand[data-astro-cid-sz7xmlte]{color:var(--light)}.brand[data-astro-cid-sz7xmlte] .logo{width:9.5rem;height:auto}.tag[data-astro-cid-sz7xmlte]{font-family:var(--display);color:var(--light-2);font-size:1rem}ul[data-astro-cid-sz7xmlte]{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem 2rem}nav[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{font-family:var(--display);font-weight:600;text-decoration:none}nav[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:hover{text-decoration:underline;text-decoration-color:var(--tally)}.bottom[data-astro-cid-sz7xmlte]{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem 2rem;padding-top:1.5rem}.bottom[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]{text-decoration-color:var(--rule-night)}.bottom[data-astro-cid-sz7xmlte] a[data-astro-cid-sz7xmlte]:hover{text-decoration-color:var(--tally);color:var(--light)}@media(max-width:52rem){.top[data-astro-cid-sz7xmlte]{grid-template-columns:1fr;justify-items:start;gap:1.25rem}}:root{--paper: #f2f2f0;--paper-2: #e7e7e4;--ink: #121212;--ink-2: #4a4a47;--ink-3: #6a6a66;--rule: #c9c9c4;--night: #0b0b0b;--night-2: #161615;--light: #ecece9;--light-2: #a9a9a4;--rule-night: #2c2c2a;--tally: #ef4444;--mono: var(--font-mono), ui-monospace, Menlo, monospace;--display: var(--mono);--serif: var(--font-serif), Georgia, serif;--step--1: clamp(.86rem, .82rem + .15vw, .94rem);--step-0: clamp(1rem, .96rem + .18vw, 1.1rem);--step-1: clamp(1.2rem, 1.08rem + .5vw, 1.5rem);--step-2: clamp(1.55rem, 1.3rem + 1vw, 2.2rem);--step-3: clamp(2.1rem, 1.6rem + 2.1vw, 3.3rem);--step-4: clamp(2.75rem, 1.9rem + 3.8vw, 5.5rem);--step-lede: clamp(1.1rem, 1rem + .45vw, 1.35rem);--step-read: clamp(1.05rem, 1rem + .3vw, 1.22rem);--gutter: clamp(1.25rem, 4vw, 3.5rem);--max: 82rem;--section: clamp(5rem, 10vw, 9rem);--ease-out: cubic-bezier(.16, 1, .3, 1);color-scheme:light}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--serif);font-size:var(--step-0);line-height:1.7;font-optical-sizing:auto;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}img,video,svg,iframe{display:block;max-width:100%}img{height:auto}h1,h2,h3,h4{margin:0;font-weight:700;text-wrap:balance}p{margin:0;text-wrap:pretty}ul,ol{margin:0;padding:0}figure{margin:0}button{font:inherit;color:inherit}::selection{background:var(--ink);color:var(--paper)}.on-night ::selection,.on-night::selection{background:var(--light);color:var(--night)}:focus-visible{outline:2px solid var(--tally);outline-offset:3px}html{scrollbar-color:var(--ink-3) var(--paper-2)}a{color:inherit;text-decoration-thickness:1px;text-underline-offset:.22em}a:hover{text-decoration-color:var(--tally)}.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}.section{padding-block:var(--section)}.on-night{background:var(--night);color:var(--light)}.skip{position:absolute;left:var(--gutter);top:-4rem;z-index:50;background:var(--paper);color:var(--ink);padding:.6rem 1rem;font-family:var(--mono);font-size:var(--step--1)}.skip:focus{top:1rem}.display{font-family:var(--display);font-weight:700;letter-spacing:-.03em;line-height:1}.h2{font-family:var(--display);font-size:var(--step-3);font-weight:700;letter-spacing:-.025em;line-height:1.06}.h3{font-family:var(--display);font-size:var(--step-1);font-weight:700;letter-spacing:-.01em;line-height:1.2}.lede{font-family:var(--mono);font-size:var(--step-lede);line-height:1.45;color:var(--ink-2);max-width:44ch}.on-night .lede{color:var(--light-2)}.meta{font-family:var(--mono);font-size:var(--step--1);line-height:1.45;letter-spacing:0;color:var(--ink-3);font-variant-numeric:tabular-nums}.on-night .meta{color:var(--light-2)}.prose{max-width:66ch}.prose>*+*{margin-top:1.1em}.prose em{font-style:italic}.btn{--btn-bg: var(--ink);--btn-fg: var(--paper);display:inline-flex;align-items:center;gap:.6em;min-height:3rem;padding:.75rem 1.35rem;border:1px solid var(--btn-bg);background:var(--btn-bg);color:var(--btn-fg);font-family:var(--display);font-size:1.05rem;font-weight:600;letter-spacing:0;text-decoration:none;transition:background-color .25s var(--ease-out),color .25s var(--ease-out),border-color .25s var(--ease-out)}.btn svg{width:1em;height:1em;flex:none;transition:transform .3s var(--ease-out)}.btn:hover{--btn-bg: #000}.btn:hover svg{transform:translate(3px)}.btn:hover svg.up-right{transform:translate(2px,-2px)}.btn--ghost{background:transparent;color:var(--ink);border-color:currentColor}.btn--ghost:hover{background:var(--ink);color:var(--paper);border-color:var(--ink)}.on-night .btn{--btn-bg: var(--light);--btn-fg: var(--night)}.on-night .btn:hover{--btn-bg: #fff}.on-night .btn--ghost{color:var(--light);border-color:color-mix(in oklab,var(--light) 55%,transparent);background:transparent}.on-night .btn--ghost:hover{background:var(--light);color:var(--night);border-color:var(--light)}.actions{display:flex;flex-wrap:wrap;gap:.75rem}.arrow-link{display:inline-flex;align-items:center;gap:.5em;font-family:var(--display);font-weight:600;text-decoration:underline;text-decoration-color:var(--rule)}.on-night .arrow-link{text-decoration-color:var(--rule-night)}.arrow-link:hover{text-decoration-color:var(--tally)}.arrow-link svg{width:.95em;height:.95em;transition:transform .3s var(--ease-out)}.arrow-link:hover svg{transform:translate(3px)}.page-head{padding-block:clamp(4rem,9vw,7.5rem) clamp(2.5rem,5vw,4rem)}.page-head h1{font-size:var(--step-4)}.page-head .lede{margin-top:1.25rem}.bw{filter:grayscale(1) contrast(1.04)}@media(prefers-reduced-motion:no-preference){.js [data-reveal]{opacity:0;transform:translateY(14px);transition:opacity .9s var(--ease-out),transform .9s var(--ease-out)}.js [data-reveal].is-in{opacity:1;transform:none}}.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}@supports (animation-timeline: view()){@media(prefers-reduced-motion:no-preference){.develop{animation:develop linear both;animation-timeline:view();animation-range:entry 10% cover 45%}}}@keyframes develop{0%{filter:grayscale(1) contrast(1.08) brightness(.86)}to{filter:grayscale(0) contrast(1) brightness(1)}}
