@font-face{font-family:'source serif 4';src:url(/fonts/SourceSerif4-Variable.woff2)format('woff2');font-weight:200 900;font-style:normal;font-display:swap}@font-face{font-family:'source serif 4';src:url(/fonts/SourceSerif4-Variable-Italic.woff2)format('woff2');font-weight:200 900;font-style:italic;font-display:swap}@font-face{font-family:inconsolata;src:url(/fonts/Inconsolata-Regular.woff2)format('woff2');font-weight:400;font-display:swap}@font-face{font-family:inconsolata;src:url(/fonts/Inconsolata-Bold.woff2)format('woff2');font-weight:700;font-display:swap}:root{--serif:'Source Serif 4', 'Source Serif Pro', Georgia, 'Times New Roman', serif;--mono:Inconsolata, 'SF Mono', Menlo, Consolas, monospace;--measure:none}html,html[data-color-mode=light]{--text:#1c1813;--background:#f6eedc;--muted:#6e6355;--surface:#ece1c8;--accent:#FF7900;--secondary:#4a433a;--success:#1a6e3c;--error:#b3261e;--placeholder:#9a9a9a;color-scheme:light}html[data-color-mode=dark]{--text:#ece3cf;--background:#141210;--muted:#9c917f;--surface:#211d18;--accent:#FF7900;--secondary:#c9bfa9;--success:#5fd38d;--error:#ff6b61;--placeholder:#6e6e6e;color-scheme:dark}@media(prefers-color-scheme:dark){html:not([data-color-mode=light]){--text:#ece3cf;--background:#141210;--muted:#9c917f;--surface:#211d18;--accent:#FF7900;--secondary:#c9bfa9;--success:#5fd38d;--error:#ff6b61;--placeholder:#6e6e6e;color-scheme:dark}}*,*::before,*::after{box-sizing:border-box}html{font-family:var(--serif);font-weight:400;font-size:18px;line-height:1.5;background-color:var(--background);color:var(--text);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-feature-settings:'kern','liga','onum'}body{margin:0;font:inherit;color:inherit;background:inherit}::selection{background-color:var(--accent);color:#111}.site{display:flex;flex-direction:column;min-height:100vh}.container{max-width:880px;width:100%;padding-left:16px;padding-right:16px;margin-left:auto;margin-right:auto}@media(min-width:40em){.container{padding-left:24px;padding-right:24px}}.site-header{border-bottom:2px solid var(--text);background-color:var(--background)}.site-header .container{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;column-gap:24px;row-gap:8px;padding-top:16px;padding-bottom:16px}.site-name{font-weight:600;font-variant-caps:small-caps;letter-spacing:.04em;font-size:21px;white-space:nowrap;color:inherit;text-decoration:none}.site-name:hover{background-color:var(--accent);color:#111}.site-header .right{display:flex;align-items:center;column-gap:24px;margin-left:auto}.site-nav .nav-link{font-weight:700;display:inline-block}.site-nav{display:flex;flex-wrap:wrap;align-items:baseline;column-gap:16px;row-gap:4px}main.container{flex:1 0 auto;padding-top:48px;padding-bottom:48px}@media(min-width:40em){main.container{padding-top:64px;padding-bottom:64px}}.site-footer{border-top:2px solid var(--text)}.site-footer .container{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;column-gap:24px;row-gap:8px;padding-top:24px;padding-bottom:24px}.site-footer .copy{color:var(--text)}.site-footer ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;column-gap:16px;row-gap:4px;max-width:none}.site-footer li{margin:0}a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--text);outline-offset:2px}h1,h2,h3,h4,h5,h6{font-family:var(--serif);font-weight:600;line-height:1.1}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit;text-decoration:none}h1 a:hover,h2 a:hover,h3 a:hover,h4 a:hover{background:0 0;color:inherit}h1{font-size:32px;font-variant-caps:small-caps;letter-spacing:.01em;margin:0 0 32px}@media(min-width:40em){h1{font-size:42px}}@media(min-width:52em){h1{font-size:60px}}h2{font-size:32px;font-variant-caps:small-caps;letter-spacing:.02em;border-top:2px solid var(--text);padding-top:16px;margin:64px 0 24px}h3{font-size:25px;font-variant-caps:small-caps;margin:48px 0 16px}h4,h5,h6{font-family:var(--mono);font-size:15px;text-transform:uppercase;letter-spacing:.08em;margin:32px 0 8px}h5,h6{color:var(--muted)}p{margin:0 0 24px;max-width:var(--measure)}small{color:var(--muted);font-size:13px;font-family:var(--mono)}strong{font-weight:700}a{color:var(--text);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px}a:hover{background-color:var(--accent);color:#111}code{font-family:var(--mono);font-size:.92em;color:inherit;background-color:var(--surface);padding:1px 4px}pre{font-family:var(--mono);font-size:14px;line-height:1.5;color:var(--text);background-color:var(--surface);border:2px solid var(--text);border-radius:0;overflow:auto;padding:16px;margin:32px 0}pre code{background-color:transparent;padding:0;font-size:inherit}.highlight pre{margin:32px 0}.chroma .c,.chroma .c1,.chroma .cm,.chroma .cp,.chroma .cs,.chroma .ch,.chroma .cpf{color:var(--muted);font-style:italic}.chroma .p,.chroma .o,.chroma .ow{color:var(--muted)}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt{font-weight:700}.chroma .nf,.chroma .fm,.chroma .nc,.chroma .nt,.chroma .nb,.chroma .bp{font-weight:700}.chroma .s,.chroma .s1,.chroma .s2,.chroma .sb,.chroma .sc,.chroma .sd,.chroma .se,.chroma .sh,.chroma .si,.chroma .sx,.chroma .sr,.chroma .ss,.chroma .dl,.chroma .na,.chroma .gi{color:var(--success)}.chroma .m,.chroma .mi,.chroma .mf,.chroma .mh,.chroma .mo,.chroma .il,.chroma .no,.chroma .nv,.chroma .py{color:var(--text)}.chroma .gd{color:var(--error)}.chroma .hl{background-color:var(--background)}hr{border:none;margin:48px 0;text-align:center;height:auto}hr::after{content:'❦';font-size:25px;line-height:1;color:var(--muted)}ol{margin:0 0 24px;padding-left:24px;max-width:var(--measure)}ul{margin:0 0 24px;padding-left:24px;list-style:square;max-width:var(--measure)}li{margin-bottom:8px}li p{margin-bottom:8px}blockquote{margin:32px 0;padding-left:24px;border-left:4px solid var(--text);font-style:italic;font-size:21px;line-height:1.4;max-width:var(--measure)}blockquote p{margin-bottom:0}table{width:100%;border-collapse:collapse;border:2px solid var(--text);margin-bottom:32px;font-size:15px}thead th{text-align:left;font-family:var(--mono);text-transform:uppercase;letter-spacing:.08em;font-size:13px;border-bottom:2px solid var(--text);border-right:1px solid var(--text);padding:8px}thead th:last-of-type{border-right:none}tbody td{padding:8px;border-bottom:1px solid var(--text);border-right:1px solid var(--text);vertical-align:top}tbody td:last-of-type{border-right:none}tbody tr:last-of-type td{border-bottom:none}img{max-width:100%;height:auto;display:block}.label{font-family:var(--mono);font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.mono{font-family:var(--mono);font-size:15px}.lede{font-size:21px;font-style:italic;line-height:1.4;max-width:var(--measure);margin-bottom:32px}p.lede{margin-bottom:32px}p.label{max-width:none}.nav-link{font-family:var(--serif);font-size:18px;font-variant-caps:small-caps;letter-spacing:.04em;color:var(--muted);text-decoration:none;position:relative;padding:4px 8px;margin-left:-8px;margin-right:-8px}.nav-link::before,.nav-link::after{content:'';position:absolute;width:0;height:0;box-sizing:border-box;border:2px solid transparent;pointer-events:none;transition:width 140ms ease-out,height 140ms ease-out 140ms,border-color 0s linear 0s}.nav-link::before{top:0;left:0}.nav-link::after{bottom:0;right:0}.nav-link:hover,.nav-link:focus-visible{color:var(--text);background-color:transparent}.nav-link:hover::before,.nav-link:focus-visible::before{width:100%;height:100%;border-top-color:var(--accent);border-right-color:var(--accent)}.nav-link:hover::after,.nav-link:focus-visible::after{width:100%;height:100%;border-bottom-color:var(--accent);border-left-color:var(--accent)}@media(prefers-reduced-motion:reduce){.nav-link::before,.nav-link::after{transition:none}}.nav-link[aria-current=page]{color:var(--text);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}.plain-link{color:inherit;text-decoration:none}.color-mode-toggle{background:0 0;border:none;padding:0;margin:0;cursor:pointer;color:var(--text);font-family:var(--serif);font-size:25px;line-height:1;width:1.4em;height:1.4em;display:inline-flex;align-items:center;justify-content:center}.color-mode-toggle:hover{color:var(--accent)}.color-mode-toggle svg{display:block;width:1em;height:1em;fill:currentColor}.color-mode-toggle .sun{display:none}.color-mode-toggle .moon{display:block}html[data-color-mode=dark] .color-mode-toggle .sun{display:block}html[data-color-mode=dark] .color-mode-toggle .moon{display:none}@media(prefers-color-scheme:dark){html:not([data-color-mode=light]) .color-mode-toggle .sun{display:block}html:not([data-color-mode=light]) .color-mode-toggle .moon{display:none}}.post-list{list-style:none;margin:0;padding:0;border-top:2px solid var(--text);max-width:none}.post-list li{border-bottom:1px solid var(--text);margin:0}.post-list a{display:grid;grid-template-columns:1fr;column-gap:24px;row-gap:4px;padding:16px 8px;margin:0 -8px;color:inherit;text-decoration:none}@media(min-width:40em){.post-list a{grid-template-columns:11ch 1fr}}.post-list a:hover{background-color:var(--accent);color:#111}.post-list a:hover .meta{color:#111}.post-list time{font-family:var(--mono);font-size:15px;color:var(--muted);padding-top:2px}.post-list .title{font-weight:700;font-size:21px;line-height:1.2}.post-list .excerpt{color:var(--muted);margin:8px 0 0;font-size:15px;max-width:none}.post-list .tags{margin-top:8px}.post-list-empty{padding:24px 0;border-top:2px solid var(--text)}.posts-toolbar{display:flex;align-items:baseline;gap:16px;margin-bottom:24px;flex-wrap:wrap}.posts-toolbar .search{flex:1 1 240px}.posts-toolbar .count{white-space:nowrap}input[type=search],input[type=text]{display:block;width:100%;font-family:var(--mono);font-size:15px;color:var(--text);background-color:var(--background);border:2px solid var(--text);border-radius:0;padding:8px 16px;margin:0;line-height:inherit;-webkit-appearance:none;appearance:none}input::placeholder{color:var(--placeholder);text-transform:uppercase;letter-spacing:.08em}input:focus{outline:none;background-color:var(--surface)}.article .back{margin-bottom:24px}.article h1.post-title{margin-bottom:24px;font-size:32px;letter-spacing:-.02em}@media(min-width:40em){.article h1.post-title{font-size:42px}}.article .meta-list{display:flex;flex-wrap:wrap;column-gap:32px;row-gap:8px;margin:0 0 32px;padding:16px 0;border-top:2px solid var(--text);border-bottom:1px solid var(--text)}.article .meta-list dt{font-family:var(--mono);font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:4px}.article .meta-list dd{margin:0;font-family:var(--mono);font-size:15px}.article .meta-list .tags-item{flex-basis:100%}@media(min-width:40em){.article .meta-list .tags-item{flex-basis:auto}}.article .featured{margin-bottom:48px}.article .featured img{width:100%;height:auto;border:2px solid var(--text)}.prose{text-align:justify;hyphens:auto;max-width:var(--measure)}.prose>p:first-of-type::first-letter{float:left;font-size:3.9em;line-height:.78;font-weight:600;padding-right:8px;padding-top:.08em;color:var(--accent)}.prose img{margin-left:auto;margin-right:auto}.img-center{display:flex;justify-content:center;margin-bottom:24px}.img-center img{height:auto}.framed{border:2px solid var(--text);margin:32px auto}.grid-2{display:grid;grid-template-columns:1fr;gap:16px;margin-bottom:24px}@media(min-width:52em){.grid-2{grid-template-columns:1fr 1fr}}.prewrap{white-space:pre-wrap;text-align:left;font-size:18px}.elsewhere{list-style:none;padding:0;margin:0;border-top:2px solid var(--text);max-width:none}.elsewhere li{display:grid;grid-template-columns:1fr;column-gap:24px;padding:8px 0;margin:0;border-bottom:1px solid var(--text)}@media(min-width:40em){.elsewhere li{grid-template-columns:11ch 1fr}}.elsewhere .label{padding-top:3px}.all-posts{margin-top:16px}.about-grid{display:grid;grid-template-columns:1fr;gap:16px;margin-bottom:24px}@media(min-width:52em){.about-grid{grid-template-columns:1fr 1fr}}.about-grid img.portrait{object-fit:cover;width:100%;height:100%;border:2px solid var(--text)}.about-grid .bio{margin-bottom:24px}.stats{display:grid;grid-template-columns:1fr;gap:0;margin:0 0 32px;border-top:2px solid var(--text)}@media(min-width:40em){.stats{grid-template-columns:1fr 1fr}}@media(min-width:52em){.stats{grid-template-columns:1fr 1fr 1fr}}.stats>div{padding:16px 16px 16px 0;border-bottom:1px solid var(--text)}.stats dt{font-family:var(--mono);font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:4px}.stats dd{margin:0;font-family:var(--mono);font-size:25px;line-height:1}img.banner{width:100%;height:auto;margin-bottom:24px;border:2px solid var(--text)}img.hero{aspect-ratio:16/9;object-fit:cover;margin-bottom:32px}.cv-lede{margin-bottom:24px}.cv-list{border-top:2px solid var(--text);margin-bottom:32px}.cv-list>*{border-bottom:1px solid var(--text)}.cv-entry{display:grid;grid-template-columns:1fr;column-gap:24px;row-gap:4px;padding:16px 0}@media(min-width:40em){.cv-entry{grid-template-columns:18ch 1fr}}.cv-entry .when{font-family:var(--mono);font-size:15px;color:var(--muted);padding-top:2px;white-space:nowrap}.cv-entry .title{font-weight:700;font-size:18px;line-height:1.25}.cv-entry .org{font-weight:400;color:var(--muted)}.cv-entry .org a{color:var(--text)}.cv-entry .details{margin-top:8px;font-size:15px}.cv-entry .details ul{margin:0;padding-left:16px;max-width:none;list-style:disc}.cv-entry .details li{margin-bottom:4px}.cv-entry .details p{margin-bottom:0}.cv-tags{display:grid;grid-template-columns:1fr;column-gap:24px;row-gap:4px;padding:8px 0}@media(min-width:40em){.cv-tags{grid-template-columns:18ch 1fr}}.cv-tags .label{padding-top:3px}@media(min-width:40em){.w-25{width:25%}.w-30{width:30%}.w-33{width:33%}.w-40{width:40%}.w-75{width:75%}.w-70{width:70%}.w-60{width:60%}.w-50{width:50%}.w-80{width:80%}.w-90{width:90%}}.alert-error{font-family:var(--mono);font-size:13px;text-transform:uppercase;letter-spacing:.08em;border:2px solid var(--error);color:var(--error);padding:8px 16px;margin-bottom:24px}.toc{display:none}@media(min-width:1280px){.article{position:relative}.toc{display:block;position:absolute;top:0;bottom:0;right:100%;margin-right:24px;width:min(220px,calc((100vw - 880px)/2 - 48px))}.toc-inner{position:sticky;top:50vh;transform:translateY(-50%);font-size:14px;line-height:1.35}.toc .label{margin-bottom:8px;padding-bottom:8px;border-bottom:2px solid var(--text)}.toc ul{list-style:none;margin:0;padding:0;max-width:none}.toc ul ul{padding-left:12px}.toc li{margin:0}.toc a{display:block;padding:3px 0 3px 10px;margin-left:-12px;border-left:2px solid transparent;color:var(--muted);text-decoration:none}.toc a:hover{color:var(--text);background:0 0;border-left-color:var(--text)}.toc a[aria-current]{color:var(--text);border-left-color:var(--accent)}}