@font-face{font-family:archivo;src:url(/fonts/archivo.woff2)format('woff2-variations');font-weight:400 700;font-style:normal;font-display:swap}@font-face{font-family:'source serif 4';src:url(/fonts/serif-400.woff2)format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:'source serif 4';src:url(/fonts/serif-400-italic.woff2)format('woff2');font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:'source serif 4';src:url(/fonts/serif-600.woff2)format('woff2');font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:jetbrains mono;src:url(/fonts/jetbrains-mono.woff2)format('woff2-variations');font-weight:400 600;font-style:normal;font-display:swap}:root{--sans:'Archivo', ui-sans-serif, system-ui, -apple-system, sans-serif;--serif:'Source Serif 4', Charter, Cambria, Georgia, serif;--mono:'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;--paper:#0f0e14;--raised:#17161f;--sunken:#0a0910;--rule:#262432;--rule-lit:#37344a;--ink:#eceaf4;--ink-mid:#a7a3b8;--ink-low:#6f6b83;--iris:#9d8cff;--iris-dim:#5b4fb0;--citron:#d4e05a;--mint:#7fd4b0;--amber:#e8b86d;--step--2:0.75rem;--step--1:0.875rem;--step-0:1.1875rem;--step-1:1.375rem;--step-2:1.75rem;--step-3:2.25rem;--shell:78rem;--measure:37rem;--rail:10rem;--span:3.5rem;--gutter:2rem;--bar:3rem}@media(prefers-color-scheme:light){:root{--paper:#f7f6fa;--raised:#eeecf4;--sunken:#e6e3ee;--rule:#dcd9e6;--rule-lit:#c3bed4;--ink:#16151d;--ink-mid:#4d4a5e;--ink-low:#797491;--iris:#5240c4;--iris-dim:#b3a9f0;--citron:#5f6b0d;--mint:#1d7a57;--amber:#8a5b0d}}*,*::before,*::after{box-sizing:border-box}@view-transition{navigation: auto; }html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--bar) + 1.5rem)}@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-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}a{color:var(--iris)}a:hover{color:var(--ink)}:focus-visible{outline:2px solid var(--iris);outline-offset:3px;border-radius:1px}.skip{position:absolute;left:-9999px}.skip:focus{left:1rem;top:1rem;z-index:20;background:var(--raised);color:var(--ink);font-family:var(--sans);font-size:var(--step--1);padding:.6rem 1rem;border:1px solid var(--rule-lit)}.wrap{max-width:var(--shell);margin-inline:auto;padding-inline:var(--gutter)}.bar{position:sticky;top:0;z-index:10;height:var(--bar);background:var(--paper)}.bar__progress{position:absolute;inset-inline:0;bottom:-1px;height:2px;background:var(--iris);transform:scaleX(0);transform-origin:0 50%}@supports(animation-timeline:scroll()){@media(prefers-reduced-motion:no-preference){.bar__progress{animation:read-progress linear both;animation-timeline:scroll(root block)}}}@keyframes read-progress{to{transform:scaleX(1)}}.bar__inner{position:relative;max-width:var(--shell);margin-inline:auto;padding-inline:var(--gutter);height:100%;display:flex;align-items:center;justify-content:flex-end;gap:1.5rem}.bar__inner::after{content:"";position:absolute;left:var(--gutter);right:var(--gutter);bottom:0;height:1px;background:var(--rule);opacity:1}@supports(animation-timeline:scroll()){.bar__inner::after{opacity:0;animation:bar-rule linear both;animation-timeline:scroll(root block);animation-range:0 4rem}}@keyframes bar-rule{to{opacity:1}}@media(prefers-reduced-motion:reduce){.bar__inner::after{opacity:1}}.bar__home{font-family:var(--sans);font-size:var(--step--1);font-weight:600;letter-spacing:-.01em;color:var(--ink);text-decoration:none}.bar__home{margin-right:auto}.bar__home:hover{color:var(--iris)}.bar__nav{display:flex;gap:1.75rem;font-family:var(--sans);font-size:var(--step--1);font-weight:500}.bar__nav a{position:relative;color:var(--ink-mid);text-decoration:none;padding-block:.35rem;transition:color 140ms ease}.bar__nav a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:0 50%;transition:transform 180ms cubic-bezier(.2,.7,.3,1)}.bar__nav a:hover{color:var(--ink)}.bar__nav a:hover::after{transform:scaleX(1)}.bar__nav a[aria-current]{color:var(--iris)}.bar__nav a[aria-current]::after{transform:scaleX(1)}.hero{display:flex;flex-wrap:wrap;align-items:baseline;gap:.6rem 2.25rem;padding:4rem 0 0}.hero__name{font-family:var(--sans);font-size:clamp(2rem,4.2vw,3rem);font-weight:700;letter-spacing:-.03em;line-height:1;margin:0;color:var(--ink);white-space:nowrap}.hero__line{flex:1 1 22rem;margin:0;max-width:60ch;font-size:var(--step-0);line-height:1.45;color:var(--ink-mid);text-wrap:pretty}.feed{margin:3.5rem 0 0}.feed__year{display:flex;align-items:baseline;gap:1.25rem;font-family:var(--sans);font-size:var(--step--1);font-weight:600;letter-spacing:.04em;color:var(--ink-low);margin:0 0 .5rem}.feed__year::after{content:"";flex:1;height:1px;background:var(--rule)}.feed__group+.feed__group{margin-top:4rem}.feed__list{list-style:none;margin:0;padding:0}.entry{position:relative;display:grid;grid-template-columns:var(--rail)minmax(0,1fr)auto;column-gap:var(--span);align-items:start;padding:1.6rem var(--gutter);margin-inline:calc(var(--gutter) * -1);border-radius:10px;text-decoration:none;color:inherit;transition:background-color 140ms ease}.entry:hover,.entry:focus-visible{background:var(--raised)}.entry__edge{position:absolute;left:0;top:.75rem;bottom:.75rem;width:3px;border-radius:3px;background:var(--iris);transform:scaleY(0);transform-origin:50% 0;transition:transform 180ms cubic-bezier(.2,.7,.3,1)}.entry:hover .entry__edge,.entry:focus-visible .entry__edge{transform:scaleY(1)}.entry__date{font-family:var(--sans);font-size:var(--step--1);font-weight:500;color:var(--ink-low);font-variant-numeric:tabular-nums;padding-top:.5rem;transition:color 140ms ease}.entry:hover .entry__date{color:var(--ink-mid)}.entry__title{margin:0;font-family:var(--sans);font-size:clamp(1.5rem,2.6vw,2rem);font-weight:600;letter-spacing:-.028em;line-height:1.14;color:var(--ink);text-wrap:pretty;transition:color 140ms ease}.entry:hover .entry__title{color:var(--iris)}.entry__note{margin:.7rem 0 0;max-width:62ch;color:var(--ink-mid);font-size:1rem;line-height:1.55}.entry__meta{display:flex;flex-direction:column;align-items:flex-end;gap:.6rem;padding-top:.45rem;font-family:var(--sans);font-size:var(--step--1);color:var(--ink-low);white-space:nowrap}.entry__tag{padding:.2rem .65rem;border:1px solid var(--rule-lit);border-radius:100px;transition:border-color 140ms ease,color 140ms ease}.entry:hover .entry__tag{border-color:var(--iris-dim);color:var(--ink-mid)}@supports(animation-timeline:view()){@media(prefers-reduced-motion:no-preference){.entry{animation:entry-rise linear both;animation-timeline:view();animation-range:entry 0% cover 20%}}}@keyframes entry-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.post{display:grid;grid-template-columns:var(--rail)minmax(0,1fr);column-gap:var(--span);margin-top:4.5rem}.post__head,.prose,.post__foot{grid-column:2}.post__title{font-family:var(--sans);font-size:clamp(2.125rem,5vw,3.5rem);font-weight:700;letter-spacing:-.026em;word-spacing:.04em;line-height:1.06;margin:0;text-wrap:balance}.post__standfirst{margin:1.5rem 0 0;font-size:var(--step-1);line-height:1.45;color:var(--ink-mid)}.post__head{padding-bottom:2.75rem;border-bottom:1px solid var(--rule)}.rail{grid-column:1;font-family:var(--sans);font-size:var(--step--1);color:var(--ink-low);line-height:1.5;padding-top:2.5rem}.rail__inner{position:sticky;top:calc(var(--bar) + 2rem)}.rail__meta{margin:0 0 1.75rem}.rail__meta>*{display:block}.rail__meta time{font-variant-numeric:tabular-nums}.rail__heading{margin:0 0 .75rem;font-size:var(--step--2);font-weight:600;letter-spacing:.06em;color:var(--ink-low)}.rail nav ul{list-style:none;margin:0;padding:0}.rail nav li{margin-bottom:.6rem}.rail nav a{display:block;color:var(--ink-mid);text-decoration:none;border-left:2px solid var(--rule);padding-left:.75rem;margin-left:-.75rem}.rail nav a:hover{color:var(--ink);border-left-color:var(--iris)}.rail__toggle{display:none}.prose{display:grid;grid-template-columns:minmax(0,1fr);row-gap:1.3em;align-content:start;padding-top:2.75rem;line-height:1.78}.prose>*{grid-column:1;margin:0}.prose .highlight pre{margin:0}.prose h2,.prose h3{font-family:var(--sans);letter-spacing:-.024em;color:var(--ink)}.prose h2{font-size:var(--step-2);font-weight:600;line-height:1.18;margin-top:2.6rem;margin-bottom:-.45rem}.prose h3{font-size:var(--step-1);font-weight:600;line-height:1.28;margin-top:1.6rem;margin-bottom:-.5rem}.prose ul,.prose ol{padding-left:1.2em}.prose li::marker{color:var(--ink-low)}.prose li+li{margin-top:.4em}.prose blockquote{padding:.15rem 0 .15rem 1.35rem;border-left:2px solid var(--iris-dim);color:var(--ink-mid);font-style:italic}.prose img{max-width:100%;height:auto;display:block;border-radius:4px}.prose figure{margin:0}.prose figcaption{margin-top:.7rem;font-family:var(--sans);font-size:var(--step--1);color:var(--ink-low)}.prose hr{width:100%;border:0;border-top:1px solid var(--rule);margin-block:1.4rem}.anchor{margin-left:.45rem;color:var(--ink-low);text-decoration:none;opacity:0;font-weight:400}.prose h2:hover .anchor,.prose h3:hover .anchor,.anchor:focus-visible{opacity:1}.prose pre{background:var(--sunken);border:1px solid var(--rule);border-radius:6px;padding:1.1rem 1.25rem;overflow-x:auto;font-size:.875rem;line-height:1.6;tab-size:2}.prose code{font-family:var(--mono);font-variant-ligatures:none}.prose :not(pre)>code{background:var(--raised);border:1px solid var(--rule);padding:.1em .35em;border-radius:4px;font-size:.8em;color:var(--ink)}.prose pre code{background:0 0;border:0;padding:0;font-size:1em}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:var(--ink-low);font-style:italic}.chroma .s,.chroma .sa,.chroma .sb,.chroma .sc,.chroma .dl,.chroma .sd,.chroma .s2,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .s1,.chroma .ss{color:var(--mint)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo,.chroma .kc{color:var(--amber)}.chroma .k,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt,.chroma .nt,.chroma .nb,.chroma .nf,.chroma .nc{color:var(--iris);font-weight:500}.chroma .nv,.chroma .na,.chroma .no{color:var(--ink)}.chroma .o,.chroma .ow,.chroma .p{color:var(--ink-low)}.chroma .err{color:var(--ink);text-decoration:underline wavy var(--amber)}.chroma .gd{color:var(--ink-low)}.chroma .gi{color:var(--mint)}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}.prose table{width:100%;border-collapse:collapse;font-family:var(--sans);font-size:var(--step--1)}.prose th,.prose td{text-align:left;padding:.6rem .9rem .6rem 0;border-bottom:1px solid var(--rule);vertical-align:top}.prose th{font-weight:600;color:var(--ink)}.post__foot{margin-top:4rem;padding-top:1.5rem;border-top:1px solid var(--rule);font-family:var(--sans);font-size:var(--step--1)}.tag{display:inline-block;margin-right:.5rem;padding:.3rem .7rem;border:1px solid var(--rule-lit);border-radius:100px;color:var(--ink-mid);text-decoration:none}.tag:hover{border-color:var(--iris);color:var(--iris)}.page-title{font-family:var(--sans);font-size:clamp(2rem,5vw,3.25rem);font-weight:700;letter-spacing:-.035em;line-height:1.05;margin:4.5rem 0 0}.page-lede{margin:1.1rem 0 0;max-width:44ch;color:var(--ink-mid);font-size:var(--step-1)}.empty{color:var(--ink-mid);margin-top:1.5rem;max-width:var(--measure)}.footer{margin-top:7rem;padding:2rem 0 5rem;border-top:1px solid var(--rule);font-family:var(--sans);font-size:var(--step--1);color:var(--ink-low);display:flex;flex-wrap:wrap;gap:.75rem 2rem;align-items:baseline}.footer a{color:var(--ink-mid);text-decoration:none}.footer a:hover{color:var(--iris)}.footer__sig{margin-left:auto;color:var(--ink-low)}@media(max-width:56rem){:root{--measure:100%;--gutter:1.5rem}.post{grid-template-columns:minmax(0,1fr)}.post__head,.prose,.post__foot,.rail{grid-column:1}.rail{padding-top:1.75rem;margin-bottom:.5rem}.rail__inner{position:static}.rail__heading{display:none}.rail nav a{border-left:0;padding-left:0;margin-left:0}.rail__toggle{display:list-item;cursor:pointer;color:var(--ink-mid);font-weight:500;margin-bottom:.6rem}.prose{padding-top:2rem}.entry{grid-template-columns:minmax(0,1fr);row-gap:.55rem}.entry__date,.entry__body,.entry__meta{grid-column:1}.entry__date{padding-top:0}.entry__meta{flex-direction:row;align-items:center;justify-content:flex-start;gap:.85rem;padding-top:.35rem}}@media(max-width:34rem){:root{--gutter:1.15rem}.hero{padding-top:3rem}.bar__nav{gap:1.1rem}.prose pre{font-size:.8125rem}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}@media print{:root{--paper:#fff;--ink:#000;--raised:#f4f4f4;--sunken:#f7f7f7;--measure:100%}.bar,.footer,.rail{display:none}.post{grid-template-columns:1fr}.post__head,.prose,.post__foot{grid-column:1}.prose pre{break-inside:avoid}}