@font-face{font-family:fraunces;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/Fraunces-normal-560.woff2)format("woff2")}@font-face{font-family:fraunces;font-style:italic;font-weight:100 900;font-display:swap;src:url(/fonts/Fraunces-italic-520.woff2)format("woff2")}@font-face{font-family:"source sans 3";font-style:normal;font-weight:200 900;font-display:swap;src:url(/fonts/Source-Sans-3-normal.woff2)format("woff2")}@font-face{font-family:"source sans 3";font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/Source-Sans-3-italic-400.woff2)format("woff2")}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/IBM-Plex-Mono-normal-400.woff2)format("woff2")}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/IBM-Plex-Mono-normal-500.woff2)format("woff2")}:root,[data-theme=dark]{--bg:#0c0f0e;--bg-raised:#161b19;--text:#f4f1ea;--text-soft:#d5dbd6;--muted:#a3aea8;--line:rgba(244, 241, 234, 0.12);--accent:#9ddeb8;--accent-ink:#062117;--chip-bg:rgba(157, 222, 184, 0.08);--chip-line:rgba(157, 222, 184, 0.32);--code-bg:#0d1117;--code-inline:rgba(244, 241, 234, 0.08);--glow:rgba(0, 76, 84, 0.45);color-scheme:dark}[data-theme=light]{--bg:#f4f1ea;--bg-raised:#fffdf8;--text:#17201c;--text-soft:#24312b;--muted:#536259;--line:rgba(23, 32, 28, 0.12);--accent:#0b6846;--accent-ink:#f4f1ea;--chip-bg:rgba(11, 104, 70, 0.06);--chip-line:rgba(11, 104, 70, 0.28);--code-bg:#f6f8fa;--code-inline:rgba(23, 32, 28, 0.06);--glow:rgba(11, 104, 70, 0.08);color-scheme:light}*,*::before,*::after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(1100px 560px at -10% -20%,var(--glow),transparent 60%),var(--bg);color:var(--text);font-family:"source sans 3",source sans pro,segoe ui,sans-serif;font-weight:400;font-size:1.0625rem;line-height:1.6;text-rendering:optimizeLegibility}[data-theme=dark] body{-webkit-font-smoothing:antialiased}img{max-width:100%;height:auto;display:block}a{color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:3px}::selection{background:rgba(157,222,184,.35);color:var(--text)}.skip{position:absolute;left:1rem;top:-4rem;z-index:50;background:var(--accent);color:var(--accent-ink);padding:.45rem .75rem;border-radius:8px;text-decoration:none}.skip:focus{top:.75rem}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.wrap{width:min(1040px,calc(100% - 2.5rem));margin-inline:auto}main{flex:1 0 auto}.site-header{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 84%,transparent);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}.bar{display:flex;align-items:center;gap:1rem 1.5rem;min-height:4.25rem}.wordmark{font-family:Fraunces,Georgia,times new roman,serif;font-weight:620;font-size:1.2rem;letter-spacing:-.03em;text-decoration:none;margin-right:auto}.nav ul{display:flex;flex-wrap:wrap;gap:.15rem 1.15rem;list-style:none;margin:0;padding:0}.nav a{text-decoration:none;color:var(--muted);font-size:.98rem;padding:.35rem 0}.nav a:hover,.nav a[aria-current=page]{color:var(--text)}.nav a[aria-current=page]{box-shadow:inset 0 -2px 0 var(--accent)}.theme-toggle{width:2.4rem;height:2.4rem;border-radius:999px;border:1px solid var(--line);background:0 0;color:var(--text);display:grid;place-items:center;cursor:pointer;padding:0;flex:none}.theme-toggle:hover{border-color:var(--accent);color:var(--accent)}.theme-icon{width:1.15rem;height:1.15rem;background:currentColor;-webkit-mask:url(/icons/sun.svg)center/contain no-repeat;mask:url(/icons/sun.svg)center/contain no-repeat}[data-theme=light] .theme-icon{-webkit-mask-image:url(/icons/moon.svg);mask-image:url(/icons/moon.svg)}.hero{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"photo copy" "now now";column-gap:2.25rem;row-gap:2.25rem;align-items:center;padding:3.5rem 0 1rem}.avatar{grid-area:photo;width:132px;height:132px;border-radius:50%;object-fit:cover;background:#efe8dc;box-shadow:0 0 0 1px rgba(244,241,234,.16)}.hero-copy{grid-area:copy;min-width:0}.hero h1,.page-head h1,.section-head h2,.entry-title,.pager strong,.prose h2,.prose h3{font-family:Fraunces,Georgia,times new roman,serif;font-optical-sizing:auto;font-weight:560;letter-spacing:-.03em}.hero h1{margin:0;font-size:clamp(3rem,7vw,5.35rem);font-weight:620;line-height:.94;letter-spacing:-.04em}.handle{margin:.85rem 0 0;font-size:1.15rem}.handle a{color:var(--accent);text-decoration:none}.handle a:hover{text-decoration:underline;text-underline-offset:.18em}.bio{margin:1rem 0 0;max-width:28rem;color:var(--text-soft);font-size:1.28rem;line-height:1.45}.chips{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:1.25rem 0 0;padding:0}.chips a,.tag-index a{display:inline-flex;align-items:center;gap:.45rem;text-decoration:none;border:1px solid var(--chip-line);background:var(--chip-bg);color:var(--accent);border-radius:999px;padding:.32rem .75rem;font-size:.92rem;line-height:1.3}.chips a:hover,.tag-index a:hover{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.socials{display:flex;flex-wrap:wrap;gap:.35rem 1.15rem;list-style:none;margin:1.2rem 0 0;padding:0}.socials a,.section-link,.missing-links a,.site-footer a,.back a{color:var(--text);text-decoration:none}.socials a:hover,.section-link:hover,.missing-links a:hover,.site-footer a:hover,.back a:hover{color:var(--accent)}.now{grid-area:now;margin:0;padding-top:1.25rem;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;gap:.55rem .9rem;align-items:baseline;color:var(--text-soft)}.now a{color:var(--text)}.now a:hover{color:var(--accent)}.now-label,.kicker,.byline,.entry time,.pager span,.copy,.search-status{font-family:ibm plex mono,ui-monospace,SFMono-Regular,Menlo,monospace}.now-label,.kicker{color:var(--accent);font-size:.74rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase}.writing{padding:2.5rem 0 1rem}.section-head{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}.section-head h2,.related h2{margin:0;font-size:2rem;line-height:1.1}.section-link{color:var(--muted)}.entries{margin-top:1rem;border-top:1px solid var(--line)}.entry{display:grid;grid-template-columns:9.25rem minmax(0,1fr);gap:.35rem 1.5rem;align-items:start;padding:1.15rem .7rem;margin:0 -.7rem;border-bottom:1px solid var(--line);border-radius:12px;text-decoration:none;color:inherit}.entry:hover{background:var(--bg-raised)}.entry:hover .entry-title{color:var(--accent)}.entry time{color:var(--muted);font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;padding-top:.4rem}.entry-main{display:grid;gap:.3rem;min-width:0}.entry-title{font-size:1.45rem;line-height:1.2;text-wrap:balance}.entry-summary{color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.page-head{padding:2.75rem 0 .25rem}.page-head h1{margin:0;font-size:clamp(2.3rem,5vw,3.5rem);line-height:1.02;text-wrap:balance}.page-head .kicker{margin:0 0 .55rem}.lede,.byline{color:var(--muted);margin:.75rem 0 0}.byline{display:flex;flex-wrap:wrap;gap:.45rem;font-size:.82rem;letter-spacing:.04em;text-transform:uppercase}.page-head .chips{margin-top:1rem}.back{margin:0 0 1rem;font-size:.95rem}.back a::before{content:"← "}.page-head-profile{display:flex;align-items:center;gap:1.15rem}.page-head-profile .avatar{width:92px;height:92px}.page,.post{max-width:42rem;padding-bottom:1rem}.prose{font-size:1.125rem;line-height:1.7;color:var(--text-soft)}.prose>:first-child{margin-top:1.4rem}.prose p,.prose ul,.prose ol,.prose pre,.prose blockquote{margin:1rem 0}.prose h2,.prose h3{color:var(--text);line-height:1.15;text-wrap:balance}.prose h2{font-size:1.7rem;margin:2.3rem 0 .55rem}.prose h3{font-size:1.28rem;margin:1.7rem 0 .4rem}.prose a{color:var(--text);text-decoration-color:var(--accent);text-decoration-thickness:1px;text-underline-offset:.18em}.prose a:hover{color:var(--accent)}.prose strong{color:var(--text);font-weight:650}.prose ul,.prose ol{padding-left:1.25rem}.prose li+li{margin-top:.35rem}.prose li::marker{color:var(--accent)}.prose blockquote{margin-left:0;padding-left:1rem;border-left:2px solid var(--accent);color:var(--text);font-family:Fraunces,Georgia,serif;font-weight:520;font-style:italic}.prose hr{border:0;border-top:1px solid var(--line);margin:2rem 0}.prose img{border-radius:12px}.prose :not(pre)>code{font-family:ibm plex mono,ui-monospace,monospace;font-size:.88em;background:var(--code-inline);padding:.08em .35em;border-radius:5px}.prose h2 code,.prose h3 code{background:0 0;padding:0;font-size:.95em;color:var(--text)}.highlight{position:relative;margin:1.4rem 0;background:var(--code-bg);border:1px solid var(--line);border-radius:12px}.highlight pre{margin:0;padding:2.35rem 1rem 1rem;overflow-x:auto;background:0 0;font-family:ibm plex mono,ui-monospace,monospace;font-size:.9rem;line-height:1.55}.highlight code[data-lang]::before{content:attr(data-lang);position:absolute;top:.7rem;left:1rem;font-family:ibm plex mono,ui-monospace,monospace;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.prose pre:not(.chroma){overflow-x:auto;padding:1rem;background:var(--code-bg);border:1px solid var(--line);border-radius:12px;font-family:ibm plex mono,ui-monospace,monospace;font-size:.9rem}.copy{position:absolute;top:.45rem;right:.45rem;border:1px solid var(--line);background:0 0;color:var(--muted);border-radius:999px;padding:.15rem .55rem;font-size:.72rem;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.copy:hover{color:var(--text);border-color:var(--accent)}.pager{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:2.75rem;padding-top:1.25rem;border-top:1px solid var(--line)}.pager a{display:grid;gap:.3rem;text-decoration:none;color:inherit}.pager-newer{grid-column:2;text-align:right}.pager span{color:var(--muted);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase}.pager strong{font-size:1.15rem;line-height:1.25}.pager a:hover strong{color:var(--accent)}.related{margin-top:2.75rem}.related h2{font-size:1.6rem}.tag-index{list-style:none;display:flex;flex-wrap:wrap;gap:.6rem;margin:1.5rem 0 2rem;padding:0}.tag-count{color:var(--muted);font-variant-numeric:tabular-nums}.tag-index a:hover .tag-count{color:inherit}.search-form{margin-top:1.25rem}.search-input{width:100%;font:inherit;font-size:1.55rem;color:var(--text);background:0 0;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:.7rem 0}.search-input:focus{outline:none;border-bottom-color:var(--accent)}.search-input::placeholder{color:var(--muted);opacity:1}.search-status{color:var(--muted);font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;min-height:1.2em}.missing-links{display:flex;gap:1.1rem;margin:1.4rem 0 2rem}.site-footer{border-top:1px solid var(--line);margin-top:3rem}.footer-inner{display:flex;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:1.3rem 0 2.2rem;color:var(--muted)}.site-footer nav{display:flex;gap:1rem}.site-footer p{margin:0}@media(max-width:760px){.wrap{width:min(1040px,calc(100% - 1.5rem))}.bar{flex-wrap:wrap;padding:.75rem 0}.nav{order:3;width:100%}.hero{grid-template-columns:1fr;grid-template-areas:"photo" "copy" "now";padding-top:2rem;row-gap:1.25rem}.avatar{width:96px;height:96px}.entry{grid-template-columns:1fr;gap:.25rem}.entry time{padding-top:0}.pager{grid-template-columns:1fr}.pager-newer,.pager-older{grid-column:auto;text-align:left}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important}}@media print{.site-header,.theme-toggle,.copy,.site-footer,.pager,.related{display:none}body{background:#fff;color:#111}.prose a{text-decoration:underline}}[data-theme=dark] .chroma{color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none}[data-theme=dark] .chroma .err{color:#f85149}[data-theme=dark] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}[data-theme=dark] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-theme=dark] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}[data-theme=dark] .chroma .hl{background-color:#6e7681}[data-theme=dark] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}[data-theme=dark] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}[data-theme=dark] .chroma .line{display:flex}[data-theme=dark] .chroma .k{color:#ff7b72}[data-theme=dark] .chroma .kc{color:#79c0ff}[data-theme=dark] .chroma .kd{color:#ff7b72}[data-theme=dark] .chroma .kn{color:#ff7b72}[data-theme=dark] .chroma .kp{color:#79c0ff}[data-theme=dark] .chroma .kr{color:#ff7b72}[data-theme=dark] .chroma .kt{color:#ff7b72}[data-theme=dark] .chroma .nc{color:#f0883e;font-weight:700}[data-theme=dark] .chroma .no{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .nd{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .ni{color:#ffa657}[data-theme=dark] .chroma .ne{color:#f0883e;font-weight:700}[data-theme=dark] .chroma .nl{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .nn{color:#ff7b72}[data-theme=dark] .chroma .py{color:#79c0ff}[data-theme=dark] .chroma .nt{color:#7ee787}[data-theme=dark] .chroma .nv{color:#79c0ff}[data-theme=dark] .chroma .vc{color:#79c0ff}[data-theme=dark] .chroma .vg{color:#79c0ff}[data-theme=dark] .chroma .vi{color:#79c0ff}[data-theme=dark] .chroma .vm{color:#79c0ff}[data-theme=dark] .chroma .nf{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .fm{color:#d2a8ff;font-weight:700}[data-theme=dark] .chroma .l{color:#a5d6ff}[data-theme=dark] .chroma .ld{color:#79c0ff}[data-theme=dark] .chroma .s{color:#a5d6ff}[data-theme=dark] .chroma .sa{color:#79c0ff}[data-theme=dark] .chroma .sb{color:#a5d6ff}[data-theme=dark] .chroma .sc{color:#a5d6ff}[data-theme=dark] .chroma .dl{color:#79c0ff}[data-theme=dark] .chroma .sd{color:#a5d6ff}[data-theme=dark] .chroma .s2{color:#a5d6ff}[data-theme=dark] .chroma .se{color:#79c0ff}[data-theme=dark] .chroma .sh{color:#79c0ff}[data-theme=dark] .chroma .si{color:#a5d6ff}[data-theme=dark] .chroma .sx{color:#a5d6ff}[data-theme=dark] .chroma .sr{color:#79c0ff}[data-theme=dark] .chroma .s1{color:#a5d6ff}[data-theme=dark] .chroma .ss{color:#a5d6ff}[data-theme=dark] .chroma .m{color:#a5d6ff}[data-theme=dark] .chroma .mb{color:#a5d6ff}[data-theme=dark] .chroma .mf{color:#a5d6ff}[data-theme=dark] .chroma .mh{color:#a5d6ff}[data-theme=dark] .chroma .mi{color:#a5d6ff}[data-theme=dark] .chroma .il{color:#a5d6ff}[data-theme=dark] .chroma .mo{color:#a5d6ff}[data-theme=dark] .chroma .o{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .ow{color:#ff7b72;font-weight:700}[data-theme=dark] .chroma .c{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .ch{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cm{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .c1{color:#8b949e;font-style:italic}[data-theme=dark] .chroma .cs{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .cp{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}[data-theme=dark] .chroma .gd{color:#ffa198;background-color:#490202}[data-theme=dark] .chroma .ge{font-style:italic}[data-theme=dark] .chroma .gr{color:#ffa198}[data-theme=dark] .chroma .gh{color:#79c0ff;font-weight:700}[data-theme=dark] .chroma .gi{color:#56d364;background-color:#0f5323}[data-theme=dark] .chroma .go{color:#8b949e}[data-theme=dark] .chroma .gp{color:#8b949e}[data-theme=dark] .chroma .gs{font-weight:700}[data-theme=dark] .chroma .gu{color:#79c0ff}[data-theme=dark] .chroma .gt{color:#ff7b72}[data-theme=dark] .chroma .gl{text-decoration:underline}[data-theme=dark] .chroma .w{color:#6e7681}[data-theme=dark] .chroma{background:0 0}[data-theme=light] .chroma{background-color:#f7f7f7;-webkit-text-size-adjust:none}[data-theme=light] .chroma .err{color:#f6f8fa;background-color:#82071e}[data-theme=light] .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}[data-theme=light] .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}[data-theme=light] .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}[data-theme=light] .chroma .hl{background-color:#dedede}[data-theme=light] .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-theme=light] .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}[data-theme=light] .chroma .line{display:flex}[data-theme=light] .chroma .k{color:#cf222e}[data-theme=light] .chroma .kc{color:#cf222e}[data-theme=light] .chroma .kd{color:#cf222e}[data-theme=light] .chroma .kn{color:#cf222e}[data-theme=light] .chroma .kp{color:#cf222e}[data-theme=light] .chroma .kr{color:#cf222e}[data-theme=light] .chroma .kt{color:#cf222e}[data-theme=light] .chroma .na{color:#1f2328}[data-theme=light] .chroma .nc{color:#1f2328}[data-theme=light] .chroma .no{color:#0550ae}[data-theme=light] .chroma .nd{color:#0550ae}[data-theme=light] .chroma .ni{color:#6639ba}[data-theme=light] .chroma .nl{color:#900;font-weight:700}[data-theme=light] .chroma .nn{color:#24292e}[data-theme=light] .chroma .nx{color:#1f2328}[data-theme=light] .chroma .nt{color:#0550ae}[data-theme=light] .chroma .nb{color:#6639ba}[data-theme=light] .chroma .bp{color:#6a737d}[data-theme=light] .chroma .nv{color:#953800}[data-theme=light] .chroma .vc{color:#953800}[data-theme=light] .chroma .vg{color:#953800}[data-theme=light] .chroma .vi{color:#953800}[data-theme=light] .chroma .vm{color:#953800}[data-theme=light] .chroma .nf{color:#6639ba}[data-theme=light] .chroma .fm{color:#6639ba}[data-theme=light] .chroma .s{color:#0a3069}[data-theme=light] .chroma .sa{color:#0a3069}[data-theme=light] .chroma .sb{color:#0a3069}[data-theme=light] .chroma .sc{color:#0a3069}[data-theme=light] .chroma .dl{color:#0a3069}[data-theme=light] .chroma .sd{color:#0a3069}[data-theme=light] .chroma .s2{color:#0a3069}[data-theme=light] .chroma .se{color:#0a3069}[data-theme=light] .chroma .sh{color:#0a3069}[data-theme=light] .chroma .si{color:#0a3069}[data-theme=light] .chroma .sx{color:#0a3069}[data-theme=light] .chroma .sr{color:#0a3069}[data-theme=light] .chroma .s1{color:#0a3069}[data-theme=light] .chroma .ss{color:#032f62}[data-theme=light] .chroma .m{color:#0550ae}[data-theme=light] .chroma .mb{color:#0550ae}[data-theme=light] .chroma .mf{color:#0550ae}[data-theme=light] .chroma .mh{color:#0550ae}[data-theme=light] .chroma .mi{color:#0550ae}[data-theme=light] .chroma .il{color:#0550ae}[data-theme=light] .chroma .mo{color:#0550ae}[data-theme=light] .chroma .o{color:#0550ae}[data-theme=light] .chroma .ow{color:#0550ae}[data-theme=light] .chroma .p{color:#1f2328}[data-theme=light] .chroma .c{color:#57606a}[data-theme=light] .chroma .ch{color:#57606a}[data-theme=light] .chroma .cm{color:#57606a}[data-theme=light] .chroma .c1{color:#57606a}[data-theme=light] .chroma .cs{color:#57606a}[data-theme=light] .chroma .cp{color:#57606a}[data-theme=light] .chroma .cpf{color:#57606a}[data-theme=light] .chroma .gd{color:#82071e;background-color:#ffebe9}[data-theme=light] .chroma .ge{color:#1f2328}[data-theme=light] .chroma .gi{color:#116329;background-color:#dafbe1}[data-theme=light] .chroma .go{color:#1f2328}[data-theme=light] .chroma .gl{text-decoration:underline}[data-theme=light] .chroma .w{color:#fff}[data-theme=light] .chroma{background:0 0}