@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono-Regular.woff2)format('woff2');font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono-Bold.woff2)format('woff2');font-weight:700;font-style:normal;font-display:swap}:root{color-scheme:light;--bg:#fafbf9;--ink:#25332e;--muted:#68756e;--accent:#18745a;--line:#dbe2dc;--soft:#edf2ed;--code:#eff3ee;--focus:#13674f}:root[data-theme=dark]{color-scheme:dark;--bg:#121212;--ink:#e3eae5;--muted:#a2afa6;--accent:#73d5ac;--line:#363636;--soft:#1e1e1e;--code:#1b1b1b;--focus:#9ceac5}@media(prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]){color-scheme:dark;--bg:#121212;--ink:#e3eae5;--muted:#a2afa6;--accent:#73d5ac;--line:#363636;--soft:#1e1e1e;--code:#1b1b1b;--focus:#9ceac5}}*{box-sizing:border-box}html{scroll-padding-top:2rem}body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.8 jetbrains mono,monospace;-webkit-font-smoothing:antialiased}button{font:inherit}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:4px}a:hover{text-decoration-thickness:2px}button,a{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--focus);outline-offset:5px;border-radius:2px}::selection{background:var(--accent);color:var(--bg)}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:700;line-height:1.45}h1{font-size:32px;letter-spacing:-1.4px}h2{font-size:18px;letter-spacing:-.35px}h3{font-size:17px;letter-spacing:-.4px}.site-shell{max-width:788px;margin:auto;padding:70px 34px 30px}.site-header{margin-bottom:70px}.identity-row{display:flex;align-items:center;justify-content:space-between;gap:20px}.identity{display:flex;align-items:center;gap:15px;color:var(--ink);text-decoration:none;font-size:23px;font-weight:700;letter-spacing:-1px}.identity-accent{color:var(--accent)}.avatar{width:43px;height:48px;object-fit:contain;mix-blend-mode:multiply}:root[data-theme=dark] .avatar{mix-blend-mode:normal;border-radius:3px;background:#fff}@media(prefers-color-scheme:dark){:root:not([data-theme=light]):not([data-theme=dark]) .avatar{mix-blend-mode:normal;border-radius:3px;background:#fff}}.theme-toggle{display:flex;align-items:center;justify-content:center;gap:7px;min-height:44px;min-width:74px;padding:5px 9px;border:1px solid var(--line);border-radius:5px;color:var(--muted);background:0 0;font-size:11px;cursor:pointer}.theme-toggle[hidden]{display:none}.theme-toggle:hover{color:var(--ink);border-color:var(--accent)}.theme-toggle>span:first-child{font-size:17px}.primary-nav{display:flex;gap:26px;margin-top:25px;padding-bottom:22px;border-bottom:1px solid var(--line);font-size:13px}.primary-nav a{color:var(--muted);text-decoration:none;padding:5px 0}.primary-nav a[aria-current]{color:var(--accent);text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:10px}.primary-nav a:hover{color:var(--accent)}.intro{margin-bottom:65px}.eyebrow{font-size:10px;line-height:1.6;letter-spacing:1.3px;text-transform:uppercase;color:var(--muted)}.intro .eyebrow{margin-bottom:19px}.intro h1{font-size:31px;line-height:1.6;letter-spacing:-1.35px}.accent{color:var(--accent)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}.small-link{font-size:11px}.post-list{padding:0;list-style:none;margin:0}.post-row{display:grid;grid-template-columns:113px minmax(0,1fr);gap:23px;padding:27px 0;border-bottom:1px solid var(--line)}.post-date{font-size:10px;color:var(--muted);padding-top:7px;white-space:nowrap}.post-row h3 a{color:var(--ink);text-decoration:none}.post-row h3 a:hover{color:var(--accent);text-decoration:underline}.post-excerpt{color:var(--muted);font-size:12px;line-height:1.9;margin-top:10px}.post-row-meta{display:flex;flex-wrap:wrap;gap:14px;margin-top:11px;font-size:10px;color:var(--muted)}.post-row-meta a{text-decoration:none}.post-row-meta a:hover{text-decoration:underline}.project-note{display:flex;align-items:flex-start;gap:18px;margin-top:42px;color:var(--muted);font-size:11px}.project-note>span{color:var(--accent);font-size:24px;line-height:1.2}.project-note p{line-height:2}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:86px;padding-top:22px;border-top:1px solid var(--line);font-size:10px;color:var(--muted)}.site-footer nav{display:flex;gap:20px}.site-footer a{color:var(--muted);text-decoration:none}.site-footer a:hover{color:var(--accent);text-decoration:underline}.page-heading{margin-bottom:37px}.page-heading .eyebrow{margin-bottom:12px}.page-description{max-width:620px;margin-top:17px;color:var(--muted);font-size:13px;line-height:1.9}.archive-year+.archive-year{margin-top:38px}.year-label{color:var(--accent);font-size:13px;padding-bottom:4px}.archive-year .post-row{padding:22px 0}.project-list{list-style:none;margin:0;padding:0}.project-list li{padding:23px 0;border-bottom:1px solid var(--line)}.project-list h3{font-size:15px}.project-list h3 a{color:var(--ink);text-decoration:none}.project-list h3 a:hover{color:var(--accent);text-decoration:underline}.project-list h3 span{font-size:12px;color:var(--accent);margin-left:3px}.project-list p{margin-top:8px;font-size:13px;color:var(--muted)}.project-section+.project-section{margin-top:48px}.taxonomy-list{list-style:none;margin:0;padding:0}.taxonomy-list li{border-bottom:1px solid var(--line)}.taxonomy-list a{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:23px 0;text-decoration:none}.taxonomy-list a:hover>span:first-child{text-decoration:underline}.term-count{font-size:11px;color:var(--muted)}.term-count span{margin-left:15px;color:var(--accent)}.back-link{display:inline-block;font-size:11px;margin-bottom:23px}.post-heading{margin-bottom:40px}.post-heading h1{font-size:30px;line-height:1.5;letter-spacing:-1px}.article-meta{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px;font-size:10px;color:var(--muted)}.article-meta a{text-decoration:none}.post-content{font-size:15px;line-height:1.95;overflow-wrap:break-word}.post-content p{margin:24px 0}.post-content h2,.post-content h3{margin:38px 0 18px}.post-content img{display:block;max-width:100%;height:auto;margin:30px auto;border-radius:3px}.post-content pre{position:relative;max-width:100%;overflow-x:auto;padding:48px 24px 24px;background:var(--code);border:1px solid var(--line);border-radius:5px;font-size:12px;line-height:1.7;tab-size:4}.post-content code{font-family:inherit}.post-content :not(pre)>code{background:var(--code);border-radius:3px;padding:2px 5px;font-size:.9em}.post-content blockquote{margin:30px 0;padding:0 22px;border-left:2px solid var(--accent);color:var(--muted)}.copy-button{position:absolute;top:10px;right:12px;padding:3px 10px;color:var(--muted);background:var(--bg);border:1px solid var(--line);border-radius:3px;font-size:10px;cursor:pointer}.copy-button:hover{color:var(--accent)}.article-end{border-bottom:1px solid var(--line);padding:30px 0 28px;font-size:11px;color:var(--muted)}.article-end>span{display:block;color:var(--accent);font-size:22px;margin-bottom:20px}.post-navigation{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:25px;padding-top:27px;font-size:13px}.post-navigation a{display:flex;flex-direction:column;gap:9px;text-decoration:none}.post-navigation a:hover>span:last-child{text-decoration:underline}.not-found p:not(.eyebrow){margin:20px 0 30px;color:var(--muted)}.not-found h1{margin-top:15px}.skip-link{position:fixed;top:10px;left:10px;transform:translateY(-150%);padding:10px 16px;background:var(--bg);z-index:10}.skip-link:focus{transform:translateY(0)}.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}.chroma .k,.chroma .kd,.chroma .kn{color:var(--accent)}.chroma .c,.chroma .c1,.chroma .cm{color:var(--muted)}.chroma .s,.chroma .s1,.chroma .s2{color:var(--accent)}.chroma .err{background:0 0;color:inherit}@media(max-width:600px){.site-shell{padding:30px 22px 25px}.site-header{margin-bottom:43px}.identity{font-size:21px;gap:11px}.avatar{width:35px;height:42px}.primary-nav{gap:23px;font-size:12px;margin-top:20px;padding-bottom:18px}.intro{margin-bottom:45px}.intro h1{font-size:25px;letter-spacing:-1px;line-height:1.65}.intro .eyebrow{font-size:9px;letter-spacing:1px}.desktop-break{display:none}.post-row{grid-template-columns:minmax(0,1fr);gap:9px;padding:23px 0}.post-date{padding:0}.post-row h3{font-size:16px}.section-heading h2{font-size:16px}.small-link{font-size:10px}.post-excerpt{font-size:12px}.site-footer{align-items:flex-start;flex-direction:column;gap:10px;margin-top:60px}.site-footer nav{gap:24px;flex-wrap:wrap}.post-heading h1{font-size:26px;letter-spacing:-.8px}.post-content{font-size:14px;line-height:1.95}.post-content pre{font-size:11px;padding-left:16px;padding-right:16px}.page-heading h1{font-size:29px}.article-meta{gap:9px}.post-navigation{grid-template-columns:1fr}}@media print{.theme-toggle,.primary-nav,.site-footer,.post-navigation,.copy-button,.skip-link{display:none}body{background:#fff;color:#000}.site-shell{max-width:none;padding:0}.site-header{margin-bottom:25px}.post-content a{color:inherit}.post-content img{max-height:80vh;object-fit:contain}}