@charset "UTF-8";:root{color-scheme:dark;--background:#101114;--surface:#17191e;--text:#ededf0;--muted:#a3a5af;--subtle:#858894;--line:#2b2d35;--accent:#ef656b;--focus:#ff9095;--font:-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;font-family:var(--font);font-size:16px;background:var(--background);color:var(--text);-webkit-text-size-adjust:100%;text-size-adjust:100%;font-synthesis:none}*,*::before,*::after{box-sizing:border-box}body{margin:0;min-height:100vh;min-height:100svh;display:flex;flex-direction:column}main{flex:1;width:100%}a{color:inherit;text-underline-offset:.22em;text-decoration-thickness:1px}a:hover{color:var(--accent)}a:focus-visible{outline:2px solid var(--focus);outline-offset:5px;border-radius:2px}::selection{color:var(--text);background:#7e303a}h1,h2,h3,h4,p{margin:0}img,svg{max-width:100%}img{height:auto}button,input,textarea,select{font:inherit}.shell{width:min(100% - 64px,1040px);margin-inline:auto}.reading-shell{width:min(100% - 64px,736px);margin-inline:auto}.skip-link{position:fixed;top:12px;left:12px;z-index:10;padding:12px 18px;color:var(--text);background:var(--surface);border:1px solid var(--focus);transform:translateY(-180%)}.skip-link:focus{transform:translateY(0)}.site-header{display:flex;align-items:center;justify-content:space-between;min-height:100px;border-bottom:1px solid var(--line);gap:24px}.wordmark{padding-block:12px;text-decoration:none;font-size:23px;font-weight:650;letter-spacing:-.9px;white-space:nowrap}.wordmark span{color:var(--accent)}.wordmark:hover{color:var(--text)}.nav-link{display:inline-flex;align-items:center;min-height:44px;color:var(--muted);font-size:14px;text-decoration:none}.nav-link[aria-current=page]{color:var(--text)}.site-footer{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:20px;margin-top:88px;border-top:1px solid var(--line);color:var(--subtle);font-size:13px}.site-footer a{display:inline-flex;align-items:center;gap:8px;min-height:44px;text-decoration:none;color:var(--muted)}.site-footer a:hover{color:var(--accent)}.index-page{padding-top:60px}.page-heading{margin-bottom:36px}.page-heading h1{font-size:clamp(32px,4.5vw,44px);line-height:1.15;letter-spacing:-.045em;font-weight:600;overflow-wrap:anywhere}.heading-prefix{color:var(--muted);font-weight:400}.index-page>.back-link{margin-bottom:28px}.empty-state{padding-block:10px 72px;color:var(--muted);font-size:17px;line-height:1.65}.post-row{display:grid;grid-template-columns:116px minmax(0,1fr);column-gap:40px;padding-block:30px 27px;border-top:1px solid var(--line)}.post-date{color:var(--subtle);font-family:var(--mono);font-size:13px;line-height:1.6;font-variant-numeric:tabular-nums}.post-row>.post-date{padding-top:6px}.post-summary h2{font-size:clamp(22px,2.7vw,27px);font-weight:550;line-height:1.3;letter-spacing:-.025em;overflow-wrap:anywhere}.post-summary h2 a{text-decoration:none}.post-description{margin-top:10px;max-width:64ch;color:var(--muted);font-size:16px;line-height:1.65;overflow-wrap:anywhere}.tags{display:flex;flex-wrap:wrap;list-style:none;gap:2px 16px;padding:0;margin:10px 0 0}.tags a{display:inline-flex;align-items:center;min-height:36px;color:var(--subtle);font-size:13px;line-height:1.4;text-decoration:none;overflow-wrap:anywhere}.tags a::before{content:"#";margin-right:2px;color:var(--accent)}.tags a:hover{color:var(--text)}.pagination{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;column-gap:16px;border-top:1px solid var(--line);padding-top:22px;margin-top:16px;font-size:14px}.pagination>div:last-child{text-align:right}.pagination a{display:inline-flex;align-items:center;gap:9px;min-height:44px;text-decoration:none}.page-number{color:var(--subtle);font-family:var(--mono);font-size:12px;white-space:nowrap}.term-list{list-style:none;padding:0;margin:0}.term-list li{border-top:1px solid var(--line)}.term-list a{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-block:19px;min-height:60px;text-decoration:none;font-size:20px}.term-list a>span:first-child{overflow-wrap:anywhere}.term-count{color:var(--subtle);font-family:var(--mono);font-size:13px}.article-page{padding-top:36px}.back-link{display:inline-flex;align-items:center;gap:10px;min-height:44px;color:var(--muted);font-size:14px;text-decoration:none}.article-heading{margin-top:34px;padding-bottom:32px;margin-bottom:34px;border-bottom:1px solid var(--line)}.article-heading h1{margin-top:14px;font-size:clamp(34px,5.3vw,52px);font-weight:600;line-height:1.13;letter-spacing:-.045em;text-wrap:pretty;overflow-wrap:anywhere}.article-description{margin-top:24px;color:var(--muted);font-size:21px;line-height:1.6;text-wrap:pretty;overflow-wrap:anywhere}.article-heading .tags{margin-top:18px}.prose{font-size:18px;line-height:1.8;color:#d9dbe1;overflow-wrap:anywhere}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.prose p,.prose ul,.prose ol,.prose dl{margin-block:0 1.35em}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{color:var(--text);font-weight:600;line-height:1.3;letter-spacing:-.025em;scroll-margin-top:24px}.prose h1,.prose h2{margin-block:2em .75em;font-size:1.65em}.prose h3{margin-block:1.8em .65em;font-size:1.3em}.prose h4,.prose h5,.prose h6{margin-block:1.6em .6em;font-size:1.06em}.prose a{color:var(--text);text-decoration-color:var(--accent)}.prose a:hover{color:var(--accent)}.prose strong{color:var(--text);font-weight:650}.prose ul,.prose ol{padding-left:1.5em}.prose li{padding-left:.15em;margin-block:.25em}.prose li>ul,.prose li>ol{margin-block:.35em .65em}.prose li::marker{color:var(--muted)}.prose dt{font-weight:600;color:var(--text)}.prose dd{margin:.35em 0 1em 1.5em}.prose blockquote{margin:1.8em 0;padding:.15em 0 .15em 1.2em;border-left:2px solid var(--accent);color:var(--muted)}.prose blockquote>:last-child{margin-bottom:0}.prose hr{margin-block:2.5em;border:0;border-top:1px solid var(--line)}.prose img{display:block;max-width:100%;margin-block:1.8em;border-radius:3px}.prose figure{margin:1.8em 0}.prose figure img{margin-block:0}.prose figcaption{margin-top:.75em;color:var(--muted);font-size:.8em;line-height:1.6}.prose code,.prose kbd,.prose samp,.prose pre{font-family:var(--mono);font-size:.82em;font-variant-ligatures:none}.prose :not(pre)>code{padding:.2em .4em;border:1px solid var(--line);border-radius:3px;background:var(--surface);color:var(--text);box-decoration-break:clone;-webkit-box-decoration-break:clone}.prose pre{padding:20px 22px;margin:1.8em 0;max-width:100%;overflow-x:auto;border:1px solid var(--line);border-radius:4px;background:var(--surface);line-height:1.75;tab-size:2}.prose pre code{padding:0;font-size:1em;color:inherit}.prose kbd{padding:.15em .35em;border:1px solid var(--line);border-bottom-width:2px;border-radius:3px}.prose table{display:block;width:max-content;max-width:100%;margin-block:1.8em;border-collapse:collapse;overflow-x:auto;font-size:.9em;line-height:1.6}.prose th,.prose td{padding:12px 18px 12px 0;min-width:110px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.prose th{color:var(--text);font-weight:600}.prose td{color:var(--muted)}.prose .footnotes{margin-top:3em;color:var(--muted);font-size:.85em}.prose .footnotes hr{margin-bottom:1.5em}.prose sup{font-size:.7em;line-height:0}.prose .highlight{margin:1.8em 0}.prose .highlight pre{margin:0}.prose .highlight table{display:table;width:100%;margin:0;font-size:1em}.prose .highlight td{border:0;min-width:0;padding:0}.prose .highlight td:first-child pre{padding-right:12px}.chroma{color:#d9dbe1;background:var(--surface)}.chroma .err{color:#ff8d93}.chroma .lnt,.chroma .ln{margin-right:1em;color:var(--subtle)}.chroma .hl{background:#282d37}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .kt,.chroma .nt{color:#f58c94}.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:#b5c69c}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:#d3b88b}.chroma .na,.chroma .nb,.chroma .nc,.chroma .nf,.chroma .fm{color:#a8bfda}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:#9295a2}.chroma .gd{color:#ff9c9c;background:#352327}.chroma .gi{color:#b6d2aa;background:#233129}.article-footer{margin-top:56px;padding-top:22px;border-top:1px solid var(--line)}.error-code{color:var(--accent);font-family:var(--mono);font-size:14px;margin-bottom:18px}.not-found .page-heading{margin-bottom:22px}@media(max-width:640px){.shell,.reading-shell{width:calc(100% - 40px)}.site-header{min-height:78px}.wordmark{font-size:22px}.site-footer{margin-top:64px;padding-block:14px}.index-page{padding-top:38px}.page-heading{margin-bottom:28px}.empty-state{font-size:16px;padding-block:2px 48px}.post-row{grid-template-columns:minmax(0,1fr);gap:10px;padding-block:23px 18px}.post-row>.post-date{padding-top:0}.post-description{margin-top:8px}.tags{gap:0 17px;margin-top:6px}.tags a{min-height:44px}.article-page{padding-top:20px}.article-heading{margin-top:24px;padding-bottom:23px;margin-bottom:28px}.article-heading h1{margin-top:12px}.article-description{margin-top:20px;font-size:19px}.article-heading .tags{margin-top:13px}.prose{font-size:17px;line-height:1.8}.prose h1,.prose h2{font-size:1.5em}.prose pre{padding:16px;font-size:.8em}.prose blockquote{padding-left:1em}.article-footer{margin-top:42px}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}@media print{:root{color-scheme:light;--text:#111;--muted:#444;--subtle:#555;--line:#ccc;--accent:#a3202c;--background:#fff;--surface:#f5f5f5}body{display:block}.site-header,.site-footer,.skip-link,.back-link,.article-footer{display:none}.reading-shell,.shell{width:100%}.article-page,.index-page{padding-top:0}.article-heading{margin-top:0}.article-heading h1{font-size:30pt}.prose{color:#222;font-size:11pt}.prose pre{white-space:pre-wrap;overflow-wrap:anywhere}.prose table{width:auto;display:table;font-size:10pt}.prose img{max-height:22cm;object-fit:contain}h1,h2,h3{break-after:avoid}img,blockquote,pre{break-inside:avoid}}