:root{--paper:#f3f2f2;--paper-surface:#eae9e9;--ink:#201e1d;--process-cyan:#0088b0;--process-magenta:#d6006c;--process-yellow:#edbb00;--neutral-100:#f8f4f4;--neutral-200:#eae7e7;--neutral-300:#d7d3d3;--neutral-400:#bab6b6;--neutral-500:#9b9797;--neutral-600:#7d7979;--neutral-700:#605d5d;--neutral-800:#444141;--neutral-900:#2d2b2b;--cyan-100:#e9f8ff;--cyan-200:#cbeeff;--cyan-300:#99e0ff;--cyan-400:#62c5ee;--cyan-500:#38a6cf;--cyan-600:#1186ac;--cyan-700:#006786;--cyan-800:#004961;--cyan-900:#0a303e;--magenta-100:#fff1f4;--magenta-200:#ffdee6;--magenta-300:#ffc0d0;--magenta-400:#ff90b1;--magenta-500:#ff458e;--magenta-600:#d82071;--magenta-700:#aa0b56;--magenta-800:#790e3d;--magenta-900:#4b1528;--surface-page:var(--paper);--surface-raised:var(--paper-surface);--text-body:var(--ink);--text-quiet:color-mix(in srgb, var(--ink) 78%, transparent);--text-meta:color-mix(in srgb, var(--ink) 70%, transparent);--text-faint:color-mix(in srgb, var(--ink) 55%, transparent);--link:var(--process-cyan);--link-strong:var(--cyan-700);--link-hover:var(--cyan-600);--link-press:var(--cyan-700);--spot:var(--magenta-700);--rule-ink:var(--ink);--hairline:color-mix(in srgb, var(--ink) 16%, transparent);--focus-ring:var(--process-cyan)}[data-theme=ink]{--paper:#1b1a19;--paper-surface:#262423;--ink:#e9e5e1;--process-cyan:#62c5ee;--process-magenta:#ff90b1;--link:var(--cyan-400);--link-strong:var(--cyan-300);--link-hover:var(--cyan-300);--link-press:var(--cyan-200);--spot:var(--magenta-300);--hairline:color-mix(in srgb, var(--ink) 22%, transparent);--focus-ring:var(--cyan-300)}:root{--font-serif:var(--font-source-serif), var(--font-noto-serif), Georgia, serif;--font-heading:var(--font-serif);--font-body:var(--font-serif);--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, monospace;--weight-regular:400;--weight-semibold:600;--leading:28px;--leading-half:14px;--text-display:80px;--text-display-leading:86px;--text-display-tracking:-.02em;--text-optical-left:-.035em;--text-h1:42px;--text-h2:32px;--text-h3:24px;--text-h4:20px;--text-lead:17px;--text-body-size:17px;--text-small:15.5px;--text-meta-size:13px;--tracking-kicker:.08em;--measure:52ch;--measure-column:48ch;--space-1:5px;--space-2:10px;--space-3:15px;--space-4:20px;--space-6:30px;--space-8:40px;--stack-tight:var(--leading-half);--stack:var(--leading);--stack-section:calc(2.5 * var(--leading));--stack-section-lg:calc(3 * var(--leading));--page-edge:clamp(20px, 5vw, 56px);--page-max:1100px;--page-narrow:680px;--radius-sm:1px;--radius-md:2px;--radius-lg:4px;--shadow-sm:0 1px 2px #2d2b2b24;--shadow-md:0 3px 10px #2d2b2b29;--shadow-lg:0 12px 32px #2d2b2b38}*,:before,:after{box-sizing:border-box}body{background:var(--surface-page);color:var(--text-body);font-family:var(--font-body);font-size:var(--text-body-size);line-height:var(--leading);font-weight:var(--weight-regular);text-wrap:pretty;margin:0}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:var(--weight-semibold);letter-spacing:-.015em;margin:0 0 var(--space-2);line-height:1.12}h1{font-size:var(--text-h1)}h2{font-size:var(--text-h2)}h3{font-size:var(--text-h3)}h4{font-size:var(--text-h4)}p{margin:0 0 var(--stack-tight)}img{max-width:100%;display:block}figure{margin:0}a{color:var(--link);text-underline-offset:3px}a:hover{color:var(--link-hover)!important}a:active{color:var(--link-press)!important}:focus{outline:none}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}::selection{background:color-mix(in srgb, var(--process-cyan) 30%, transparent)}.halftone{filter:grayscale(.35)contrast(1.15);position:relative;overflow:hidden}.halftone:after{content:"";pointer-events:none;mix-blend-mode:multiply;background-image:radial-gradient(circle,#00000038 30%,#0000 32%);background-size:3px 3px;position:absolute;inset:0}.article{font-size:var(--text-body-size);line-height:var(--leading)}.article h2{margin:var(--leading) 0 0;font-size:var(--text-h3)}.article h3{margin:var(--leading-half) 0 0;font-size:var(--text-h4)}.article p{margin:var(--leading-half) 0 0}.article ul,.article ol{margin:var(--leading-half) 0 0;padding-left:1.2em}.article li{font-size:var(--text-small);line-height:var(--leading);color:var(--text-quiet)}.article a{color:var(--link-strong)}.article blockquote{margin:var(--leading-half) 0 0;padding-left:var(--space-4);border-left:2px solid var(--hairline);color:var(--text-quiet)}.article code{font-family:var(--font-mono);background:var(--surface-raised);border-radius:var(--radius-md);padding:1px 5px;font-size:.88em}.article pre{margin:var(--leading-half) 0 0;padding:var(--space-3);background:var(--surface-raised);border-radius:var(--radius-lg);overflow-x:auto}.article pre code{background:0 0;padding:0;font-size:13px;line-height:1.7}.article img{margin:var(--leading-half) 0 0}.article hr{border:0;border-top:1px solid var(--hairline);margin:var(--leading) 0 0}.article table{border-collapse:collapse;margin:var(--leading-half) 0 0;font-size:var(--text-small)}.article th,.article td{border:1px solid var(--hairline);text-align:left;padding:6px 12px}.skip-link{left:var(--page-edge);padding:var(--space-1) var(--space-2);background:var(--surface-page);color:var(--link-strong);font-size:var(--text-meta-size);z-index:10;position:absolute;top:-100px}.skip-link:focus-visible{top:var(--space-2)}.grid-featured{gap:calc(1.5 * var(--leading)) 56px;grid-template-columns:repeat(3,1fr);display:grid}.grid-index{grid-template-columns:repeat(var(--index-columns,2), 1fr);gap:var(--leading-half) calc(2.5 * var(--leading));display:grid}.grid-lead{gap:var(--leading) 56px;grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:start;display:grid}.post-row{gap:var(--space-3);grid-template-columns:110px 1fr auto;align-items:baseline;display:grid}.work-row{scroll-margin-top:var(--leading)}.btn:hover{border-color:var(--text-body)!important}@media (max-width:720px){:root{--text-display:clamp(30px, 9.8vw, 56px);--text-display-leading:1.08;--text-h1:34px;--text-h2:28px}.grid-featured{gap:calc(1.5 * var(--leading));grid-template-columns:1fr}.grid-index,.grid-lead{grid-template-columns:1fr}.post-row{grid-template-columns:1fr auto;row-gap:0}.post-row>.post-row__date{grid-area:1/1}.post-row>.post-row__tag{grid-area:1/2}.post-row>.post-row__title{grid-area:2/1/auto/-1}}
