:root{color-scheme:dark;--bg:#13110f;--bg-raised:#1b1916;--bg-sunken:#0d0c0a;--line:#2a2723;--line-strong:#3b3730;--text:#ddd6c9;--text-strong:#f5efe4;--text-dim:#bdb6a9;--muted:#9b9488;--faint:#6b655c;--accent:#f0a956;--accent-bright:#ffc681;--accent-line:rgb(240 169 86 / .4);--accent-soft:rgb(240 169 86 / .12);--code:#b8d0c9;--serif:Charter, "Bitstream Charter", "Sitka Text", Cambria, serif;--serif-display:Charter, "Bitstream Charter", "Sitka Heading", Cambria, serif;--mono:ui-monospace, "Cascadia Code", "SF Mono", Menlo, Consolas, "DejaVu Sans Mono", monospace;--measure:42rem;--radius:.5rem}*,*::before,*::after{box-sizing:border-box}html{background:var(--bg);scrollbar-color:var(--line-strong)var(--bg);-webkit-text-size-adjust:100%;text-size-adjust:100%;hanging-punctuation:first}body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:radial-gradient(ellipse 60rem 26rem at 50% -9rem,rgb(240 169 86/9%),transparent 70%)no-repeat,var(--bg);color:var(--text);font:1.0625rem/1.7 var(--serif);font-kerning:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}@media(min-width:48rem){body{font-size:1.125rem}}.site-header,main,.site-footer{width:min(100% - 2.5rem,var(--measure));margin-inline:auto}main{flex:1;padding-bottom:5rem}p,li,blockquote{text-wrap:pretty}a{color:var(--accent);text-decoration-line:underline;text-decoration-thickness:1px;text-decoration-color:var(--accent-line);text-underline-offset:.2em;transition:color .15s,text-decoration-color .15s,border-color .15s}a:hover{color:var(--accent-bright);text-decoration-color:initial}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}::selection{background:var(--accent);color:var(--bg)}h1,h2,h3,h4{font-family:var(--serif-display);font-weight:700;color:var(--text-strong);line-height:1.25;letter-spacing:-.01em;text-wrap:balance}h1{margin:0 0 1rem;font-size:clamp(2rem,1.45rem + 2.4vw,2.75rem);line-height:1.12;letter-spacing:-.02em}img,svg,video{max-width:100%;height:auto}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.skip-link{position:absolute;top:-4rem;left:1rem;z-index:10;padding:.55rem .9rem;border-radius:.3rem;background:var(--accent);color:var(--bg);font:600 .8rem/1 var(--mono);text-decoration:none}.skip-link:focus{top:1rem;color:var(--bg)}.site-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1.5rem;margin-bottom:3.5rem;padding-block:2rem 1.25rem;border-bottom:1px solid var(--line)}.brand{display:inline-flex;align-items:center;gap:.7rem;color:var(--text-strong);font:700 1.2rem/1.2 var(--serif-display);letter-spacing:-.01em;text-decoration:none}.brand:hover{color:var(--text-strong)}.brand-mark{flex:none;width:.6rem;height:.6rem;border-radius:50%;background:var(--accent);box-shadow:0 0 .35rem rgb(240 169 86/.8),0 0 1.3rem rgb(240 169 86/.4);transition:box-shadow .3s}.brand:hover .brand-mark{box-shadow:0 0 .45rem rgb(255 198 129/.95),0 0 1.8rem rgb(240 169 86/.6)}.site-nav ul{display:flex;flex-wrap:wrap;gap:1.5rem;margin:0;padding:0;list-style:none}.site-nav a{display:block;padding-block:.35rem;border-bottom:1px solid transparent;color:var(--muted);font:500 .75rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;text-decoration:none}.site-nav a:hover{color:var(--text-strong)}.site-nav a.active,.site-nav a.ancestor{color:var(--accent);border-bottom-color:var(--accent)}.site-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.5rem;padding-block:1.75rem 2.5rem;border-top:1px solid var(--line);color:var(--muted);font:.72rem/1.6 var(--mono);letter-spacing:.1em;text-transform:uppercase}.site-footer p{margin:0}.site-footer a{text-decoration:none}.meta{display:flex;flex-wrap:wrap;gap:.6em;margin:0 0 .7rem;color:var(--muted);font:.75rem/1.5 var(--mono);letter-spacing:.08em;text-transform:uppercase}.meta time{color:var(--accent)}.intro{margin-bottom:3rem}.lede{max-width:34rem;margin:0;color:var(--text-dim);font-size:1.4rem;font-style:italic;line-height:1.45}.entry{padding-block:2.25rem;border-top:1px solid var(--line)}.entry:first-of-type{border-top:0;padding-top:0}.entry-title{margin:0 0 .65rem;font-size:clamp(1.4rem,1.2rem + .8vw,1.7rem)}.entry-title a{color:var(--text-strong);text-decoration:none}.entry-title a:hover{color:var(--accent-bright)}.entry-summary{color:var(--text-dim)}.entry-summary p{margin:0 0 .9rem}.read-more{font:.75rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;text-decoration:none}.read-more span[aria-hidden]{display:inline-block;transition:transform .15s}.read-more:hover span[aria-hidden]{transform:translateX(3px)}.entry-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem 1.5rem}.tag-list{display:flex;flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none}.tag{display:inline-block;padding:.3rem .55rem;border:1px solid var(--line);border-radius:999px;color:var(--muted);font:.72rem/1 var(--mono);letter-spacing:.04em;text-decoration:none}.tag span{color:var(--faint)}.tag:hover{border-color:var(--accent-line);color:var(--accent-bright)}.tag:hover span{color:var(--accent)}.post>.tag-list{margin-top:3rem}.tag-cloud{display:flex;flex-wrap:wrap;align-items:baseline;gap:.9rem 1.6rem;margin:0;padding:2rem 0;border-top:1px solid var(--line);list-style:none}.tag-cloud-link{color:var(--text-dim);font-family:var(--serif-display);line-height:1.2;text-decoration:none}.tag-cloud-link:hover{color:var(--accent-bright)}.tag-count{margin-left:.2em;color:var(--faint);font:.7rem/1 var(--mono);vertical-align:super}.tag-cloud-link:hover .tag-count{color:var(--accent)}.tag-step-1{font-size:1rem;color:var(--muted)}.tag-step-2{font-size:1.2rem}.tag-step-3{font-size:1.45rem}.tag-step-4{font-size:1.75rem;color:var(--text)}.tag-step-5{font-size:2.1rem;font-weight:700;color:var(--accent)}.tag-hash{color:var(--accent);font-weight:400}.page-count{margin:0;color:var(--muted);font:.75rem/1.5 var(--mono);letter-spacing:.08em;text-transform:uppercase}.page-header .meta a{text-decoration:none}.page-header+.archive-list{padding-top:1.5rem;border-top:1px solid var(--line)}.page-header+.archive-list time{width:6.5rem}.search-input{width:100%;padding:.85rem 1rem;border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--bg-sunken);color:var(--text-strong);font:1.125rem/1.4 var(--serif);transition:border-color .15s,box-shadow .15s}.search-input::placeholder{color:var(--faint)}.search-input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft),0 0 1.5rem rgb(240 169 86/.12)}.search-input:disabled{opacity:.5}.search-status{min-height:1.5em;margin:1rem 0 0;color:var(--muted);font:.75rem/1.6 var(--mono);letter-spacing:.06em}.search-results{margin:0;padding:0;list-style:none}.search-result{padding-block:1.75rem;border-top:1px solid var(--line)}.search-result:first-child{margin-top:1rem}.search-result .entry-title{font-size:1.35rem}.search-excerpt{margin:0;color:var(--text-dim)}.search-excerpt mark{background:var(--accent-soft);color:var(--accent-bright)}.post-header{margin-bottom:2.75rem}.post-header h1{margin:0}.post-header::after{content:"";display:block;width:3rem;height:2px;margin-top:1.75rem;background:var(--accent);box-shadow:0 0 .75rem rgb(240 169 86/.45)}.page-header{margin-bottom:2rem}.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:4.5rem;padding-top:2rem;border-top:1px solid var(--line)}.post-nav-link{display:flex;flex-direction:column;gap:.45rem;padding:1rem 1.15rem 1.1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-raised);color:var(--text-strong);text-decoration:none}.post-nav-link:hover{border-color:var(--accent-line);color:var(--text-strong)}.post-nav-link.newer{grid-column:2;text-align:right}.post-nav-label{color:var(--accent);font:.7rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase}.post-nav-title{font:700 1rem/1.35 var(--serif-display)}@media(max-width:36rem){.post-nav{grid-template-columns:1fr}.post-nav-link.newer{grid-column:auto}}.archive-year{display:grid;grid-template-columns:5rem 1fr;gap:.5rem 1.5rem;padding-block:1.5rem;border-top:1px solid var(--line)}.archive-year h2{margin:0;color:var(--accent);font:500 .85rem/2.1 var(--mono);letter-spacing:.08em}.archive-list{margin:0;padding:0;list-style:none}.archive-list li{display:flex;align-items:baseline;gap:1rem;padding-block:.3rem}.archive-list time{flex:none;width:3.75rem;color:var(--muted);font:.75rem/1 var(--mono);letter-spacing:.06em;text-transform:uppercase}.archive-list a{color:var(--text-strong);text-decoration:none}.archive-list a:hover{color:var(--accent-bright)}@media(max-width:36rem){.archive-year{grid-template-columns:1fr}}.not-found{padding-block:2rem 3rem}.not-found-code{margin:0 0 1.5rem;color:var(--accent);font:700 clamp(5rem,3rem + 10vw,8.5rem)/1 var(--mono);letter-spacing:-.04em;text-shadow:0 0 2.5rem rgb(240 169 86/.35)}.prose>*{margin-block:0}.prose>*+*{margin-top:1.25em}.prose h2{margin-top:2.4em;font-size:1.55rem}.prose h3{margin-top:2em;font-size:1.2rem}.prose h4{margin-top:2em;font:600 .8rem/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase}.prose :is(h2,h3,h4){scroll-margin-top:1.5rem}.prose :is(h2,h3,h4)+*{margin-top:.75em}.prose .anchor{margin-left:.35em;color:var(--faint);font-weight:400;text-decoration:none;opacity:0;transition:opacity .15s,color .15s}.prose :is(h2,h3,h4):hover .anchor,.prose .anchor:focus-visible{opacity:1}.prose .anchor:hover{color:var(--accent)}@media(hover:none){.prose .anchor{display:none}}.prose strong{color:var(--text-strong)}.prose del{color:var(--muted);text-decoration-color:var(--accent)}.prose ul,.prose ol{padding-left:1.4em}.prose li+li,.prose li>:is(ul,ol){margin-top:.4em}.prose li::marker{color:var(--accent)}.prose ol>li::marker{font-family:var(--mono);font-size:.85em}.prose blockquote{margin-inline:0;padding:.1em 0 .1em 1.25em;border-left:2px solid var(--accent);color:var(--text-dim);font-style:italic}.prose blockquote>*{margin:0}.prose blockquote>*+*{margin-top:.75em}.prose hr{margin-block:3em;border:0;color:var(--accent);text-align:center}.prose hr::after{content:"\00b7\2002\00b7\2002\00b7";font-size:1.25rem}.prose img{display:block;margin-inline:auto;border-radius:var(--radius)}.prose figure{margin-inline:0}.prose figcaption{margin-top:.75rem;color:var(--muted);font:.8rem/1.5 var(--mono);text-align:center}.prose .table-wrap{overflow-x:auto;scrollbar-width:thin}.prose table{width:100%;border-collapse:collapse;font-size:.92em;font-variant-numeric:tabular-nums}.prose th{padding:.6rem .75rem;border-bottom:1px solid var(--line-strong);color:var(--muted);font:600 .7rem/1.4 var(--mono);letter-spacing:.1em;text-align:left;text-transform:uppercase}.prose td{padding:.65rem .75rem;border-bottom:1px solid var(--line);vertical-align:top}.prose :is(th,td):first-child{padding-left:0}.prose :is(th,td):last-child{padding-right:0}.prose .align-left{text-align:left}.prose .align-center{text-align:center}.prose .align-right{text-align:right}.prose .footnotes{margin-top:3em;color:var(--text-dim);font-size:.9em}.prose .footnotes hr{width:4rem;margin:0 0 1.5em;border-top:1px solid var(--line-strong)}.prose .footnotes hr::after{content:none}.prose .footnote-ref{font-family:var(--mono);font-size:.8em;text-decoration:none}kbd{padding:.1em .4em;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:.3rem;background:var(--bg-raised);font:.8em var(--mono)}mark{padding:0 .15em;border-radius:.15em;background:var(--accent-soft);color:var(--text-strong)}code,pre,samp{font-family:var(--mono);font-size:.875em}:not(pre)>code{padding:.12em .38em;border:1px solid var(--line);border-radius:.3rem;background:var(--bg-raised);color:var(--code);overflow-wrap:break-word}a>code{color:inherit}pre{overflow-x:auto;margin:0;padding:1.1rem 1.25rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--bg-sunken);color:var(--text);font-size:.84rem;line-height:1.6;tab-size:4;scrollbar-width:thin;scrollbar-color:var(--line-strong)transparent}pre code{font-size:inherit}@media(min-width:52rem){.prose pre{margin-inline:-1.25rem}}.highlight pre{position:relative;padding-top:2.2rem}.highlight code[data-lang]::before{content:attr(data-lang);position:absolute;top:.75rem;left:1.25rem;color:var(--faint);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase}.chroma .line{display:flex}.chroma .hl{background:var(--accent-soft)}.chroma .ln,.chroma .lnt{margin-right:.75em;color:var(--faint);white-space:pre;-webkit-user-select:none;user-select:none}.chroma .lntable{border-spacing:0}.chroma .lntd{padding:0;vertical-align:top}.chroma .lnlinks{color:inherit;text-decoration:none}.chroma :is(.c,.ch,.cm,.c1,.cs,.cpf){color:#857d71;font-style:italic}.chroma .cp{color:#d7a6cf}.chroma :is(.k,.kc,.kd,.kn,.kp,.kr,.kt,.ow,.nt){color:#f0a956}.chroma :is(.s,.sa,.sb,.sc,.dl,.sd,.s1,.s2,.sh,.sx,.sr,.ss,.ld){color:#b5cf8f}.chroma :is(.se,.si,.nv,.vc,.vg,.vi,.vm){color:#e6c39a}.chroma :is(.m,.mb,.mf,.mh,.mi,.il,.mo,.l){color:#e59572}.chroma :is(.nf,.fm,.nc,.nn,.ne,.nd,.na,.nx){color:#8cc2d9}.chroma :is(.nb,.bp,.no,.nl){color:#d7a6cf}.chroma :is(.o,.or,.p){color:#a39b8e}.chroma .gd{color:#f2a49a;background:rgb(242 120 100/.1)}.chroma .gi{color:#b5cf8f;background:rgb(150 200 110/.1)}.chroma :is(.gh,.gu){color:#8cc2d9;font-weight:700}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}.chroma .err{color:#f28b82}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media(prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important}}@media print{:root{color-scheme:light;--bg:#fff;--bg-raised:#f4f4f4;--bg-sunken:#f4f4f4;--line:#ccc;--line-strong:#999;--text:#111;--text-strong:#000;--text-dim:#333;--muted:#555;--accent:#000;--code:#111}body{background:#fff}.site-nav,.post-nav,.skip-link,.brand-mark,.prose .anchor,.post-header::after{display:none}pre{white-space:pre-wrap}}