:root{color-scheme:light;--paper:#F7F3EB;--paper-2:#EEE8DB;--paper-3:#E1D8C8;--rule:#CFC5B3;--rule-2:#B9AE9A;--ink:#1C1A17;--ink-2:#433E37;--ink-3:#625A4F;--rust:#B4451C;--rust-2:#8E3614;--verdigris:#2E6E68;--wash:#E4ECEA;--selection:#F1D8C8;--shadow:0 1px 2px rgb(28 26 23 / .08), 0 14px 36px -14px rgb(28 26 23 / .28);--font-serif:"Literata", "Iowan Old Style", "Palatino Linotype", "Book Antiqua", Georgia, serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--font-display:"Fraunces", "Literata", "Iowan Old Style", Georgia, serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji";--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--text-scale:1;--text:clamp(1.125rem, 1rem + 0.6vw, 1.4rem);--text-sm:0.9em;--text-xs:0.82em;--leading:1.7;--measure:36em;--para:1.35em;--rail-w:12rem;--margin-w:13rem;--gutter:clamp(1rem, 4vw, 3rem);--gap:clamp(1.25rem, 2.5vw, 2.75rem);--radius:6px;--ease:cubic-bezier(.2, .7, .2, 1)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--paper:#181614;--paper-2:#23201C;--paper-3:#302B26;--rule:#3F3933;--rule-2:#5A524A;--ink:#EDE6D9;--ink-2:#C4BBAC;--ink-3:#9E9587;--rust:#E5824F;--rust-2:#F0A078;--verdigris:#74B7AF;--wash:#1E2B29;--selection:#3A2A22;--shadow:0 1px 2px rgb(0 0 0 / .4), 0 14px 36px -14px rgb(0 0 0 / .7)}}:root[data-theme=dark]{color-scheme:dark;--paper:#181614;--paper-2:#23201C;--paper-3:#302B26;--rule:#3F3933;--rule-2:#5A524A;--ink:#EDE6D9;--ink-2:#C4BBAC;--ink-3:#9E9587;--rust:#E5824F;--rust-2:#F0A078;--verdigris:#74B7AF;--wash:#1E2B29;--selection:#3A2A22;--shadow:0 1px 2px rgb(0 0 0 / .4), 0 14px 36px -14px rgb(0 0 0 / .7)}@font-face{font-family:literata;src:url(/fonts/Literata-Roman.woff2)format("woff2");font-weight:300 800;font-style:normal;font-display:swap}@font-face{font-family:literata;src:url(/fonts/Literata-Italic.woff2)format("woff2");font-weight:300 800;font-style:italic;font-display:swap}@font-face{font-family:fraunces;src:url(/fonts/Fraunces-Roman.woff2)format("woff2");font-weight:300 900;font-style:normal;font-display:swap}@font-face{font-family:jetbrains mono;src:url(/fonts/JetBrainsMono-Roman.woff2)format("woff2");font-weight:300 800;font-style:normal;font-display:swap}*,*::before,*::after{box-sizing:border-box}html{font-size:calc(var(--text) * var(--text-scale));-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:1.5rem;scrollbar-color:var(--paper-3)transparent}body{margin:0;min-height:100dvh;background:var(--paper);color:var(--ink);font-family:var(--font-serif);font-weight:400;line-height:var(--leading);letter-spacing:.002em;font-kerning:normal;font-feature-settings:"kern","liga","calt";text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;overflow-wrap:break-word}img,svg,video,iframe{max-width:100%}img,video{height:auto}button{font:inherit;color:inherit;background:0 0;border:0;padding:0;cursor:pointer}input,textarea{font:inherit;color:inherit}::selection{background:var(--selection);color:var(--ink)}:focus-visible{outline:3px solid var(--rust);outline-offset:3px;border-radius:3px}[hidden]{display:none!important}.mono{font-family:var(--font-mono);font-size:var(--text-xs);letter-spacing:.01em;font-variant-ligatures:none;line-height:1.5}.muted{color:var(--ink-3)}.display{font-family:var(--font-display);font-weight:600;line-height:1.08;letter-spacing:-.012em}.skip{position:absolute;left:var(--gutter);top:-3rem;z-index:100;padding:.4rem .7rem;background:var(--ink);color:var(--paper);font-family:var(--font-mono);font-size:var(--text-xs);text-decoration:none;border-radius:var(--radius);transition:top .15s var(--ease)}.skip:focus{top:.5rem}@media(prefers-color-scheme:dark){:root:not([data-theme=light]) body{font-weight:430}}:root[data-theme=dark] body{font-weight:430}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}.site{min-height:100dvh;display:flex;flex-direction:column}.site>main{flex:1 0 auto}.shell{width:100%;max-width:96rem;margin-inline:auto;padding-inline:var(--gutter)}.site-header{display:flex;align-items:baseline;justify-content:space-between;gap:1rem 2rem;flex-wrap:wrap;padding-block:1.2rem 1rem;border-bottom:1px solid var(--rule)}.brand{display:flex;align-items:baseline;gap:.6em;min-width:0;flex:1 1 24rem}.wordmark{font-family:var(--font-display);font-weight:700;font-size:1.2rem;line-height:1.15;color:var(--ink);text-decoration:none;letter-spacing:-.01em;white-space:nowrap}.wordmark:hover{color:var(--rust)}.crumbs{display:flex;gap:.45em;min-width:0;color:var(--ink-3);white-space:nowrap;overflow:hidden}.crumbs a{color:var(--ink-2);text-decoration:none;flex:initial;max-width:12em;overflow:hidden;text-overflow:ellipsis}.crumbs a:hover{color:var(--rust)}.crumbs .sep{color:var(--rule-2)}.crumbs .here{flex:auto;min-width:6em;overflow:hidden;text-overflow:ellipsis;color:var(--ink-3)}.site-nav{display:flex;align-items:baseline;gap:.55em;flex:none;margin-left:auto}.site-nav a,.site-nav button{color:var(--ink-2);text-decoration:none;text-transform:lowercase;padding:.3em .6em;border:1px solid transparent;border-radius:var(--radius);line-height:1.2}.site-nav a:hover,.site-nav a:focus-visible{color:var(--ink);background:var(--paper-2)}.site-nav a[aria-current=page]{color:var(--ink);background:var(--paper-2);border-color:var(--rule)}.site-nav button,.site-footer button{color:var(--ink-2);background:var(--paper-2);border:1px solid var(--rule-2)}.site-nav button:hover,.site-footer button:hover{color:var(--ink);border-color:var(--ink-3);background:var(--paper-3)}.site-nav kbd{font:inherit;color:var(--ink-3);margin-left:.35em;padding:0 .3em;border:1px solid var(--rule-2);border-radius:3px}@media(max-width:40em){.site-header{padding-block:1rem .8rem;gap:.6rem 1rem}.brand{flex-basis:100%}.wordmark{white-space:normal;font-size:1.15rem}.crumbs{display:none}.site-nav{margin-left:0;gap:.4em}.site-nav kbd{display:none}}.site-footer{margin-top:5rem;padding-block:1.6rem 2.4rem;border-top:1px solid var(--rule);color:var(--ink-3);display:flex;flex-wrap:wrap;justify-content:space-between;gap:.8rem 2rem}.site-footer a{color:var(--ink-2);text-decoration:none}.site-footer a:hover{color:var(--rust)}.site-footer .row{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5em 1em}.site-footer .row.links{width:100%}.site-footer .sep{color:var(--rule-2)}.site-footer button{padding:.25em .6em;border-radius:var(--radius);line-height:1.2}.page{display:grid;grid-template-columns:minmax(0,1fr);column-gap:var(--gap);padding-block:2.4rem 1rem}.page>.main{min-width:0;max-width:var(--measure)}.page>.rail{min-width:0}@media(min-width:64em){.page{grid-template-columns:var(--rail-w)minmax(0,var(--measure));justify-content:center;padding-block:3.2rem 1rem}.page>.rail{grid-column:1;grid-row:1}.page>.main{grid-column:2;grid-row:1;max-width:none}.rail-inner{position:sticky;top:1.5rem;max-height:calc(100dvh - 3rem);overflow:auto;scrollbar-width:thin;padding-right:.5rem}}@media(min-width:96em){.page{grid-template-columns:var(--rail-w)minmax(0,var(--measure))var(--margin-w)}}.page.no-rail{grid-template-columns:minmax(0,var(--measure))}@media(min-width:64em){.page.no-rail>.main{grid-column:1}.page.no-rail.wide{grid-template-columns:minmax(0,42em)}}.toc{margin:0 0 1.5rem}.toc>summary{list-style:none;cursor:pointer;user-select:none;color:var(--ink-2);text-transform:lowercase;letter-spacing:.04em;display:flex;align-items:center;gap:.5em;padding:.2em 0}.toc>summary::-webkit-details-marker{display:none}.toc>summary::before{content:"▸";font-size:.8em;transition:transform .15s var(--ease);color:var(--rust)}.toc[open]>summary::before{transform:rotate(90deg)}.toc nav{border-left:2px solid var(--rule);margin-top:.6rem}.toc nav ul{list-style:none;margin:0;padding:0}.toc nav ul ul{margin-left:.9em}.toc nav li{margin:0}.toc nav a{position:relative;display:block;padding:.32em 0 .32em 1em;margin-left:-2px;color:var(--ink-2);text-decoration:none;line-height:1.4;font-family:var(--font-mono);font-size:var(--text-xs);border-left:2px solid transparent;transition:color .15s var(--ease),border-color .15s var(--ease)}.toc nav a::before{content:"";position:absolute;left:-2px;top:50%;width:.45em;height:2px;background:var(--rule);transform:translateY(-50%)}.toc nav a:hover{color:var(--ink)}.toc nav a.active{color:var(--ink);border-left-color:var(--rust);font-weight:600}.toc nav a.active::before{width:.7em;background:var(--rust)}@media(max-width:63.99em){.rail{margin-bottom:1.6rem}.toc{border:1px solid var(--rule-2);border-radius:var(--radius);padding:.7rem 1rem;background:var(--paper-2)}.toc nav{margin-top:.6rem}}.rail-extra{display:none}@media(min-width:64em){.rail-extra{display:block;color:var(--ink-2);margin-top:1rem;line-height:1.9}.rail-extra a{color:inherit;text-decoration:none}.rail-extra a:hover{color:var(--rust)}}.article-header{margin-bottom:2.6rem}.article-header .title{font-family:var(--font-display);font-weight:700;font-size:clamp(1.7rem,1.25rem + 1.3vw,2.4rem);line-height:1.12;letter-spacing:-.012em;margin:0 0 1rem;text-wrap:balance;color:var(--ink)}.article-header .title.title--long{font-size:clamp(1.5rem,1.15rem + 1vw,1.95rem);line-height:1.18}.article-header .title.title--xlong{font-size:clamp(1.35rem,1.1rem + .8vw,1.65rem);line-height:1.22}.article-header .title a{color:inherit;text-decoration:none}.article-header .title a:hover{color:var(--rust)}.article-header .desc{font-size:1.12em;color:var(--ink-2);margin:0 0 .8rem;font-weight:350}.meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5em .9em;margin:0;color:var(--ink-2);line-height:1.6}.meta>*{margin:0}.meta>*+*::before{content:"·";color:var(--rule-2);margin-right:.9em}.meta a{color:inherit;text-decoration:none;border-bottom:1px solid var(--rule-2)}.meta a:hover{color:var(--rust);border-bottom-color:var(--rust)}.badge{display:inline-block;padding:0 .45em;border:1px solid var(--rust);border-radius:3px;color:var(--rust);text-transform:uppercase;letter-spacing:.08em;font-size:.85em}.prose{font-size:1em}.prose>*+*{margin-top:var(--para)}.prose p{margin:0}.prose p+p{margin-top:var(--para)}.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{font-family:var(--font-display);color:var(--ink);line-height:1.2;letter-spacing:-.01em;margin-bottom:.55em;text-wrap:balance;scroll-margin-top:1.5rem}.prose h2{font-size:1.5em;font-weight:600;margin-top:2.6em;padding-top:1em;border-top:1px solid var(--rule)}.prose h3{font-size:1.22em;font-weight:600;margin-top:2.2em}.prose h4{font-size:1.05em;font-weight:700;margin-top:1.9em;font-family:var(--font-serif)}.prose h5,.prose h6{font-family:var(--font-mono);font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-2);margin-top:1.8em}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:0}.prose h2:first-child{margin-top:0;padding-top:0;border-top:0}.anchor{font-family:var(--font-mono);font-weight:400;font-size:.7em;color:var(--ink-3);text-decoration:none;margin-left:.45em;opacity:0;transition:opacity .15s var(--ease),color .15s var(--ease)}h2:hover>.anchor,h3:hover>.anchor,h4:hover>.anchor,h5:hover>.anchor,h6:hover>.anchor,.anchor:focus-visible{opacity:1}.anchor:hover{color:var(--rust)}@media(hover:none){.anchor{opacity:.45}}.prose a,.lead a,.profile a{color:var(--ink);text-decoration:underline;text-decoration-color:var(--rust);text-decoration-thickness:1.5px;text-underline-offset:.18em;transition:color .15s var(--ease)}.prose a:hover,.lead a:hover,.profile a:hover{color:var(--rust);text-decoration-thickness:2px}a.ext::after{content:"↗";font-family:var(--font-mono);font-size:.72em;font-weight:600;vertical-align:.3em;margin-left:.15em;color:var(--ink-3);text-decoration:none;display:inline-block}a.ext:hover::after{color:var(--rust)}a.ext>img+::after{content:none}.prose strong{font-weight:650}.prose em{font-style:italic}.prose small{font-size:var(--text-sm)}.prose mark{background:var(--wash);color:inherit;padding:0 .15em;border-radius:2px}.prose abbr[title]{text-decoration:underline dotted;text-decoration-color:var(--ink-3);cursor:help}.prose kbd{font-family:var(--font-mono);font-size:.78em;padding:.05em .4em;border:1px solid var(--rule);border-bottom-width:2px;border-radius:3px;background:var(--paper-2)}.prose ul,.prose ol{padding-left:1.5em}.prose li{margin:.5em 0}.prose li::marker{color:var(--rust)}.prose ul ul,.prose ol ol,.prose ul ol,.prose ol ul{margin-top:.3em}.prose li>p{margin:0}.prose li>p+p{margin-top:.6em}.prose dt{font-weight:650}.prose dd{margin:.2em 0 .8em 1.5em}.prose blockquote{margin:1.6em 0;padding:.3em 0 .3em 1.2em;border-left:3px solid var(--rust);color:var(--ink-2)}.prose blockquote>*+*{margin-top:.8em}.prose blockquote cite{display:block;margin-top:.5em;font-family:var(--font-mono);font-size:var(--text-xs);font-style:normal;color:var(--ink-3)}.prose hr{border:0;margin:2.6em 0;text-align:center;color:var(--ink-3);line-height:1}.prose hr::before{content:"⁂";font-size:1.2em;letter-spacing:.3em}.prose code,.lead code{font-family:var(--font-mono);font-size:.88em;font-variant-ligatures:none;color:var(--verdigris);background:var(--paper-2);border:1px solid var(--rule);padding:.08em .4em;border-radius:4px;overflow-wrap:anywhere}.prose pre code{color:inherit;background:0 0;border:0;padding:0;font-size:inherit}.prose a code{color:inherit}.prose figure{margin:2em 0}.prose figure img,.prose>p>img,.prose img{display:block;max-width:100%;height:auto;margin-inline:auto;border-radius:4px;border:1px solid var(--rule)}.prose figure.zoomable img{cursor:zoom-in}.prose figcaption,.prose .caption{margin-top:.6em;text-align:center;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-3);line-height:1.5}.prose figcaption a{color:inherit}.prose picture{display:contents}.table-wrap{overflow-x:auto;margin:1.6em 0;-webkit-overflow-scrolling:touch}.prose table{border-collapse:collapse;width:100%;font-size:var(--text-sm);line-height:1.45}.prose th{text-align:left;font-family:var(--font-mono);font-size:.82em;font-weight:600;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-2);padding:.5em .75em;border-bottom:1px solid var(--ink)}.prose td{padding:.6em .75em;border-bottom:1px solid var(--rule);vertical-align:top}.prose tr:hover td{background:var(--paper-2)}.footnotes{margin-top:3em;font-size:var(--text-sm);color:var(--ink-2)}.footnotes hr{display:none}.footnotes::before{content:"notes";display:block;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-3);letter-spacing:.04em;padding-top:.8em;border-top:1px solid var(--rule)}.footnotes ol{padding-left:1.4em;margin:.6em 0 0}.footnotes li{margin:.4em 0}.footnotes li p{display:inline}.footnote-ref{font-family:var(--font-mono);font-size:.7em;text-decoration:none;color:var(--rust);padding:0 .1em}.footnote-ref:hover{color:var(--rust-2);text-decoration:none}.footnote-backref{font-family:var(--font-mono);text-decoration:none;margin-left:.3em;color:var(--ink-3)}.footnotes.moved{display:none}.sidenote{display:none}@media(min-width:88em){.sidenote{display:block;float:right;clear:right;width:var(--margin-w);margin-right:calc(-1 * (var(--margin-w) + var(--gap)));margin-top:.3em;margin-bottom:.8em;font-size:var(--text-sm);line-height:1.5;color:var(--ink-2)}.sidenote .sn-num{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--rust);margin-right:.4em}.sidenote p{display:inline;margin:0}.sidenote .footnote-backref{display:none}.sidenote.is-active{color:var(--ink)}}.lead{font-size:1.18em;line-height:1.6;font-style:italic;font-weight:400;color:var(--ink-2);margin:0 0 1.4em;text-wrap:pretty}.prose details{border:1px solid var(--rule-2);border-radius:var(--radius);padding:.6em 1em}.prose summary{cursor:pointer;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-2)}.katex-display{overflow-x:auto;overflow-y:hidden;padding:.4em 0}.katex{font-size:1.05em}.prose iframe{border:0;border-radius:3px}.tweet-embed{margin:1.6em auto;max-width:550px}.tweet-embed .twitter-tweet{margin:0 auto}.tweet-embed blockquote.twitter-tweet:not(.twitter-tweet-rendered){border-left:3px solid var(--rust);padding:.15em 0 .15em 1.15em;color:var(--ink-2)}.tweet-embed blockquote.twitter-tweet:not(.twitter-tweet-rendered) a{font-family:var(--font-mono);font-size:var(--text-xs)}.masthead{margin-bottom:2.8rem}.masthead .kicker{margin:0 0 .6rem;color:var(--ink-3)}.masthead .headline{font-family:var(--font-display);font-weight:500;font-style:normal;font-size:clamp(1.6rem,1.1rem + 1.8vw,2.6rem);line-height:1.14;letter-spacing:-.015em;margin:0 0 1rem;text-wrap:balance;color:var(--ink)}.masthead .headline em{font-style:normal;color:var(--rust)}.masthead .bio{font-size:1em;color:var(--ink-2);margin:0;max-width:36em}.section-title{font-family:var(--font-display);font-weight:600;font-size:1.35em;letter-spacing:-.01em;margin:0 0 .9rem;display:flex;align-items:baseline;gap:.8em}.section-title .mono{color:var(--ink-3);font-weight:400}.home-recent{margin-top:3rem}.more{margin:1.2rem 0 0 calc(var(--date-w) + 1.9rem)}.more a{color:var(--ink-2);text-decoration:none;padding:.3em .8em;border:1px solid var(--rule-2);border-radius:var(--radius)}.more a:hover{color:var(--ink);background:var(--paper-2);border-color:var(--ink-3)}.chain{--date-w:5.6rem;list-style:none;margin:0;padding:0;position:relative}.chain>li{position:relative;display:grid;grid-template-columns:var(--date-w)minmax(0,1fr);column-gap:1.9rem;padding-block:.7rem}.chain>li::before{content:"";position:absolute;top:0;bottom:0;left:calc(var(--date-w) + .95rem);width:1px;background:var(--rule)}.chain>li:first-child::before{top:.9rem}.chain>li:last-child::before{bottom:auto;height:1.2rem}.chain>li::after{content:"";position:absolute;top:calc(.7rem + .55em);left:calc(var(--date-w) + .95rem - 4.5px);width:9px;height:9px;border-radius:50%;background:var(--paper);border:2px solid var(--ink-3);transition:transform .15s var(--ease),background .15s var(--ease)}.chain>li.is-essay::after{background:var(--rust);border-color:var(--rust)}.chain>li:hover::after{transform:scale(1.35)}.chain time,.chain .date{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-3);text-align:right;padding-top:.3em;white-space:nowrap}.chain .entry{min-width:0}.chain .entry-title{margin:0;font-size:1.05em;font-weight:500;line-height:1.38}.chain .is-essay .entry-title{font-size:1.2em;font-weight:600;font-family:var(--font-display);letter-spacing:-.01em}.chain .entry-title a{color:var(--ink);text-decoration:none}.chain .entry-title a:hover{color:var(--rust);text-decoration:underline;text-decoration-color:var(--rust);text-underline-offset:.15em;text-decoration-thickness:1px}.chain .entry .meta{margin-top:.3em;color:var(--ink-3)}.chain .summary{margin:.45em 0 0;font-size:var(--text-sm);color:var(--ink-2);line-height:1.55;max-width:62ch}.chain>li.chain-year{padding-block:2.2rem .7rem;align-items:end}.chain>li.chain-year:first-child{padding-top:.4rem}.chain>li.chain-year::after{width:13px;height:13px;left:calc(var(--date-w) + .95rem - 6.5px);top:auto;bottom:.85rem;background:var(--paper);border:2px solid var(--ink)}.chain>li.chain-year:hover::after{transform:none}.chain .year{grid-column:2;margin:0;font-family:var(--font-display);font-weight:600;font-size:1.3em;line-height:1;color:var(--ink)}.chain .year .mono{color:var(--ink-3);font-weight:400;margin-left:.6em}@media(max-width:40em){.chain{--date-w:0rem}.chain>li{grid-template-columns:minmax(0,1fr);padding-left:1.6rem;column-gap:0}.chain>li::before{left:.35rem}.chain>li::after{left:calc(.35rem - 4.5px)}.chain>li.chain-year::after{left:calc(.35rem - 6.5px)}.chain time,.chain .date{text-align:left;padding-top:0;order:-1}.chain .year{grid-column:1}.more{margin-left:1.6rem}}.pagination{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.8rem 1rem;margin-top:2.8rem;padding-top:1.2rem;border-top:1px solid var(--rule);color:var(--ink-3)}.pagination a,.pagination .cur,.pagination .gap{display:inline-block;min-width:2.2em;padding:.3em .6em;text-align:center;color:var(--ink-2);text-decoration:none;border:1px solid var(--rule-2);border-radius:var(--radius);line-height:1.3}.pagination a:hover{color:var(--ink);background:var(--paper-2);border-color:var(--ink-3)}.pagination .cur{color:var(--paper);background:var(--ink);border-color:var(--ink);font-weight:600}.pagination .gap{border-color:transparent;min-width:1.4em;padding-inline:.2em}.pagination .pages{display:flex;flex-wrap:wrap;gap:.35em;justify-content:center}.pagination .step{white-space:nowrap}.pagination .step.off{visibility:hidden}@media(max-width:40em){.pagination{justify-content:center}.pagination .pages .far{display:none}}.article-footer{margin-top:4rem}.article-footer>*+*{margin-top:2.2rem}.sharing{display:flex;flex-wrap:wrap;gap:.5em .6em;color:var(--ink-3);align-items:center}.sharing span{margin-right:.4em}.sharing a{color:var(--ink-2);text-decoration:none;padding:.25em .7em;border:1px solid var(--rule-2);border-radius:var(--radius);line-height:1.3}.sharing a:hover{color:var(--ink);background:var(--paper-2);border-color:var(--ink-3)}.neighbours{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem;padding-top:1.6rem;border-top:1px solid var(--rule)}.neighbours a{display:block;color:var(--ink);text-decoration:none}.neighbours .label{display:block;color:var(--ink-3);margin-bottom:.35em}.neighbours .ttl{font-family:var(--font-display);font-weight:600;font-size:1.05em;line-height:1.3}.neighbours a:hover .ttl{color:var(--rust)}.neighbours .next{text-align:right}@media(max-width:40em){.neighbours{grid-template-columns:1fr}.neighbours .next{text-align:left}}.author-card{display:grid;grid-template-columns:4.5rem 1fr;gap:1.1rem;align-items:start;padding:1.2rem 0 0;border-top:1px solid var(--rule);color:var(--ink-2);font-size:var(--text-sm)}.author-card img{width:4.5rem;height:4.5rem;object-fit:cover;border-radius:6px;border:1px solid var(--rule-2)}.author-card .name{font-family:var(--font-display);font-weight:600;font-size:1.1rem;color:var(--ink);margin:0 0 .25em}.author-card p{margin:0}.profile{display:grid;grid-template-columns:7.5rem 1fr;gap:1.6rem;align-items:center;margin:0 0 2.2rem}.profile img{width:7.5rem;height:7.5rem;object-fit:cover;border-radius:8px;border:1px solid var(--rule-2);box-shadow:var(--shadow)}.profile .name{font-family:var(--font-display);font-weight:700;font-size:1.6em;line-height:1.1;margin:0 0 .3em;letter-spacing:-.01em}.profile .headline{margin:0 0 .7em;color:var(--ink-2);font-style:italic}.links-row{display:flex;flex-wrap:wrap;gap:.3em .9em;color:var(--ink-3)}.links-row a{color:var(--ink-2);text-decoration:none;border-bottom:1px solid var(--rule-2)}.links-row a:hover{color:var(--rust);border-bottom-color:var(--rust)}@media(max-width:40em){.profile{grid-template-columns:1fr;justify-items:start;gap:1rem}}dialog.search{border:0;padding:0;background:0 0;color:var(--ink);width:min(40rem,94vw);margin:8vh auto 0;max-height:84vh}dialog.search::backdrop{background:rgb(12 10 8/.6);backdrop-filter:blur(3px)}.search-box{background:var(--paper);border:2px solid var(--rule-2);border-radius:10px;box-shadow:var(--shadow),0 0 0 1px var(--paper);overflow:hidden}.search-box .field{display:flex;align-items:center;gap:.6em;padding:0 1rem;border-bottom:1px solid var(--rule-2);background:var(--paper-2)}.search-box .field .glyph{color:var(--rust);font-family:var(--font-mono)}.search-box input{flex:1;min-width:0;padding:1rem 0;border:0;background:0 0;outline:none;font-family:var(--font-mono);font-size:1.05rem;color:var(--ink)}.search-box input::placeholder{color:var(--ink-3)}.search-box .esc{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-3);padding:.1em .45em;border:1px solid var(--rule-2);border-radius:4px}.search-results{list-style:none;margin:0;padding:.35rem;max-height:58vh;overflow:auto}.search-results:empty{display:none}.search-results li+li{border-top:1px solid var(--rule)}.search-results a{display:block;padding:.7rem .9rem;border-radius:6px;color:var(--ink);text-decoration:none;border-left:3px solid transparent}.search-results a:hover,.search-results a:focus{background:var(--paper-2);border-left-color:var(--rust);outline:none}.search-results .t{font-size:1.02em;line-height:1.3}.search-results .m{margin-top:.15em;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-3)}.search-results .s{margin-top:.15em;font-size:var(--text-sm);color:var(--ink-2);line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.search-results mark{background:var(--selection);color:inherit;padding:0}.search-status{padding:.7rem 1rem;font-family:var(--font-mono);font-size:var(--text-xs);color:var(--ink-2);border-top:1px solid var(--rule);background:var(--paper-2)}.search-status:empty{display:none}.hud{position:fixed;right:1rem;bottom:1rem;z-index:40;font-family:var(--font-mono);font-size:.8rem;line-height:1;letter-spacing:.02em;color:var(--ink-2);background:color-mix(in srgb,var(--paper) 92%,transparent);border:1px solid var(--rule-2);border-radius:var(--radius);padding:.55rem .7rem;pointer-events:none;user-select:none;opacity:0;transform:translateY(.3rem);transition:opacity .3s var(--ease),transform .3s var(--ease);backdrop-filter:blur(6px)}.hud.is-visible{opacity:1;transform:none}.hud b{color:var(--ink);font-weight:500}.hud .bar{display:none}.hud .blocks{color:var(--rust);letter-spacing:-.05em}@media(max-width:64em){.hud{inset:0 0 auto 0;border:0;border-radius:0;background:0 0;padding:0;height:2px;backdrop-filter:none;transform:none}.hud .txt{display:none}.hud .bar{display:block;height:3px;width:var(--p,0%);background:var(--rust);transition:width .1s linear}}dialog.lightbox{border:0;padding:0;background:0 0;max-width:100vw;max-height:100vh;width:100vw;height:100vh;margin:0;display:none;place-items:center}dialog.lightbox[open]{display:grid}dialog.lightbox::backdrop{background:rgb(15 13 11/.88)}dialog.lightbox img{max-width:96vw;max-height:92vh;width:auto;height:auto;object-fit:contain;cursor:zoom-out;box-shadow:var(--shadow);border-radius:3px}dialog.lightbox figcaption{position:fixed;left:0;right:0;bottom:1rem;text-align:center;color:#eae3d6;font-family:var(--font-mono);font-size:var(--text-xs);padding:0 1rem}.comments{margin-top:3rem;padding-top:1.4rem;border-top:1px solid var(--rule)}.comments .giscus{margin-top:1rem}.terms{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5em .9em}.terms a{color:var(--ink-2);text-decoration:none;border-bottom:1px solid var(--rule-2)}.terms a:hover{color:var(--rust);border-bottom-color:var(--rust)}.terms .count{color:var(--ink-3);font-family:var(--font-mono);font-size:var(--text-xs);margin-left:.3em}.notfound .code{font-family:var(--font-display);font-size:clamp(4rem,10vw,8rem);font-weight:700;line-height:1;color:var(--paper-3);margin:0}:root{--c-kw:#8E3614;--c-str:#2E6E68;--c-num:#7A5A0A;--c-fn:#1C1A17;--c-cm:#7B7468;--c-op:#4A453D;--c-ty:#4C3C8E;--c-var:#1C1A17;--c-err:#B4451C;--c-hl:#EFE4D2}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--c-kw:#F0915F;--c-str:#86CBC2;--c-num:#E4BB57;--c-fn:#F3EDE1;--c-cm:#9C9285;--c-op:#C9C0B1;--c-ty:#C0B4F0;--c-var:#EDE6D9;--c-err:#F4A87F;--c-hl:#302B26}}:root[data-theme=dark]{--c-kw:#F0915F;--c-str:#86CBC2;--c-num:#E4BB57;--c-fn:#F3EDE1;--c-cm:#9C9285;--c-op:#C9C0B1;--c-ty:#C0B4F0;--c-var:#EDE6D9;--c-err:#F4A87F;--c-hl:#302B26}figure.code{margin:1.8em 0;background:var(--paper-2);border:1px solid var(--rule-2);border-radius:var(--radius);overflow:hidden;font-size:.88em}figure.code>figcaption{display:flex;justify-content:space-between;align-items:center;gap:1em;padding:.45em .95em;border-bottom:1px solid var(--rule-2);text-align:left;background:var(--paper-3);font-family:var(--font-mono);font-size:.82em;color:var(--ink-2);margin:0}figure.code .lang{text-transform:lowercase;letter-spacing:.04em}figure.code .ttl{color:var(--ink-2)}figure.code .copy{color:var(--ink-2);font-family:var(--font-mono);font-size:inherit;padding:.15em .55em;border-radius:4px;border:1px solid var(--rule-2);background:var(--paper-2)}figure.code .copy:hover{color:var(--ink);border-color:var(--ink-3)}figure.code .copy.done{color:var(--verdigris)}figure.code pre,.prose pre{margin:0;padding:1em 1.1em;overflow-x:auto;line-height:1.6;tab-size:4;font-family:var(--font-mono);font-variant-ligatures:none;color:var(--ink);scrollbar-width:thin}.prose>pre{background:var(--paper-2);border:1px solid var(--rule-2);border-radius:var(--radius);font-size:.88em}figure.code .chroma{background:0 0}.chroma .hl{display:block;background:var(--c-hl);margin:0 -1.05em;padding:0 1.05em}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:auto}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lnt,.chroma .ln{color:var(--ink-3);margin-right:.8em;padding:0 .4em 0 0;user-select:none}.chroma .err{color:var(--c-err);text-decoration:underline wavy}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr{color:var(--c-kw)}.chroma .kt,.chroma .nb,.chroma .bp,.chroma .nd,.chroma .nc,.chroma .ne,.chroma .nn,.chroma .nx{color:var(--c-ty)}.chroma .nc,.chroma .nn{font-weight:500}.chroma .nf,.chroma .fm{color:var(--c-fn);font-weight:600}.chroma .na,.chroma .nt{color:var(--c-kw)}.chroma .nv,.chroma .vc,.chroma .vg,.chroma .vi,.chroma .vm,.chroma .n,.chroma .p,.chroma .nl,.chroma .no,.chroma .ni{color:var(--c-var)}.chroma .o,.chroma .ow,.chroma .pi{color:var(--c-op)}.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(--c-str)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:var(--c-num)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:var(--c-cm);font-style:italic}.chroma .gd{color:var(--c-err)}.chroma .gi{color:var(--c-str)}.chroma .ge{font-style:italic}.chroma .gs{font-weight:600}.chroma .gh,.chroma .gu{color:var(--c-kw);font-weight:600}.chroma .gp{color:var(--c-cm)}.chroma .w{color:inherit}@media print{:root{--paper:#fff;--paper-2:#f4f4f4;--ink:#000;--ink-2:#222;--ink-3:#555;--rule:#bbb;--rust:#000}html{font-size:11pt}body{background:#fff;color:#000}.site-header,.site-footer,.rail,.hud,.sharing,.neighbours,.comments,.skip,.anchor,.pdf-link,.print\:hidden,dialog{display:none!important}.page{display:block;padding:0}.page>.main{max-width:none}.prose a{color:#000;text-decoration:underline}.prose a.ext::after{content:" (" attr(href)")";font-size:.75em;vertical-align:baseline;color:#444}figure.code,.prose pre{border:1px solid #bbb;break-inside:avoid}.prose img{max-height:80vh}h1,h2,h3{break-after:avoid}.footnotes.moved{display:block}.sidenote{display:none}}