@font-face{font-family:jetbrains mono;src:url(/fonts/jetbrains-mono-700.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{--bg:#ffffff;--bg-sunk:#f6f6f4;--fg:#16161a;--muted:#6b6b76;--border:#e3e3de;--accent:#d8431c;--accent-fg:#ffffff;--band:#0a0a0c;--band-fg:#f2f2f0;--font-body:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--measure:68ch;--gutter:clamp(1rem, 4vw, 2.5rem);--wide:1360px}@media(prefers-color-scheme:dark){:root{--bg:#0e0e11;--bg-sunk:#17171c;--fg:#e8e8e6;--muted:#9a9aa4;--border:#2a2a32;--accent:#ff6a45}}*,*::before,*::after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:1.125rem;line-height:1.65;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration-thickness:1px;text-underline-offset:2px}a:hover{text-decoration-thickness:2px}img{max-width:100%;height:auto}.shell{max-width:var(--wide);margin-inline:auto;padding-inline:var(--gutter)}.skip{position:absolute;left:-9999px}.skip:focus{left:1rem;top:1rem;z-index:10;background:var(--accent);color:var(--accent-fg);padding:.5rem .9rem;border-radius:4px}.masthead{position:relative;background:var(--band);color:var(--band-fg);overflow:hidden;isolation:isolate}.masthead canvas{position:absolute;inset:0;width:100%;height:100%;z-index:-1;display:block}.masthead-inner{position:relative;text-align:center;padding:clamp(1.1rem,3.2vw,2.15rem)var(--gutter)}.wordmark{font-family:jetbrains mono,var(--font-mono);font-size:clamp(2rem,6.5vw,3.35rem);font-weight:700;letter-spacing:-.03em;margin:0;line-height:1;text-shadow:0 0 4px rgba(0,0,0,.95),0 0 11px rgba(0,0,0,.85),0 0 22px rgba(0,0,0,.6)}.wordmark a{color:inherit;text-decoration:none}.tagline{font-family:var(--font-mono);font-size:clamp(.72rem,1.9vw,.85rem);color:#a8a8b4;margin:.15rem 0 0;text-shadow:0 0 4px rgba(0,0,0,.95),0 0 10px rgba(0,0,0,.7)}.mainnav{border-bottom:1px solid var(--border);background:var(--bg)}.mainnav ul{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:clamp(1rem,4vw,2.25rem);list-style:none;margin:0 auto;padding:.4rem var(--gutter);max-width:var(--wide)}.mainnav a{font-family:var(--font-mono);font-size:.85rem;letter-spacing:.02em;color:var(--fg);text-decoration:none;border-top:2px solid transparent;border-bottom:2px solid transparent}.mainnav a:hover{border-bottom-color:var(--accent)}.mainnav a[aria-current=page]{border-bottom-color:var(--accent)}.landing3{display:grid;grid-template-columns:minmax(0,1fr)minmax(0,2.2fr)minmax(0,1fr);grid-template-areas:"left hero more";gap:clamp(1rem,1.6vw,1.5rem);padding-block:clamp(.75rem,2vw,1.3rem)clamp(1.5rem,3.5vw,2.25rem);align-items:start}.col-left{grid-area:left;display:grid;gap:clamp(1.75rem,4vw,2.5rem)}.hero{grid-area:hero}.col-more{grid-area:more}@media(max-width:62rem){.landing3{grid-template-columns:minmax(0,1fr)minmax(0,1fr);grid-template-areas:"hero hero" "left more"}}@media(max-width:40rem){.landing3{grid-template-columns:minmax(0,1fr);grid-template-areas:"hero" "left" "more"}}.card-cover{display:block;aspect-ratio:16/9;overflow:hidden;background:var(--bg-sunk);border:1px solid var(--border);border-radius:3px}.card-cover img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .35s ease}a.card-cover:hover img{transform:scale(1.02)}.meta{font-family:var(--font-mono);font-size:.74rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.meta a{color:var(--muted)}.hero h2{font-size:clamp(2rem,5vw,3.4rem);line-height:1.08;letter-spacing:-.025em;margin:1.4rem 0 .6rem}.hero h2 a{color:var(--fg);text-decoration:none}.hero h2 a:hover{color:var(--accent)}.hero .dek{font-size:1.28rem;line-height:1.5;color:var(--muted);margin:0 0 1rem;max-width:56ch}.card h3{font-size:1.08rem;line-height:1.3;margin:.8rem 0 .35rem;letter-spacing:-.01em}.card h3 a{color:var(--fg);text-decoration:none}.card h3 a:hover{color:var(--accent)}.card .dek{font-size:.92rem;color:var(--muted);margin:0 0 .5rem}.more-head{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;border-bottom:1px solid var(--border);padding-bottom:.6rem;margin-bottom:.4rem}.more-head h2{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin:0}.more-head a{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);text-decoration:none}.more-head a:hover{color:var(--accent)}.more-list{list-style:none;margin:0;padding:0}.more-item{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.95rem 0;border-bottom:1px solid var(--border);text-decoration:none;color:var(--fg)}.more-item:hover .more-title{color:var(--accent)}.more-text{min-width:0}.more-title{display:block;font-weight:600;font-size:.98rem;line-height:1.25;letter-spacing:-.01em;margin-bottom:.3rem}.more-thumb{flex:none;width:58px;height:58px;object-fit:cover;border-radius:3px;border:1px solid var(--border);background:var(--bg-sunk)}.post{padding-block:clamp(.75rem,2vw,1.3rem)clamp(1.5rem,4vw,2.5rem)}.post-header{max-width:var(--measure);margin-inline:auto}.post-main{display:grid;grid-template-columns:minmax(0,1fr)minmax(0,var(--measure))minmax(0,1fr);gap:clamp(1.25rem,3vw,2.5rem);align-items:start}.post-main .post-body{grid-column:2;grid-row:1;max-width:none;margin-inline:0}@media(max-width:75rem){.post-main{display:block}.post-main .post-body{max-width:var(--measure);margin-inline:auto}.toc{display:none}}.post-header h1{font-size:clamp(1.9rem,5vw,3rem);line-height:1.1;letter-spacing:-.025em;margin:.6rem 0 .75rem}.post-cover{max-width:var(--wide);margin:clamp(1.5rem,4vw,2.5rem)auto;border-radius:3px;overflow:hidden;border:1px solid var(--border)}.post-body{max-width:var(--measure);margin-inline:auto}.post-body>*{margin-block:0 1em}.post-body h2{font-size:1.6rem;line-height:1.25;letter-spacing:-.015em;margin-top:1.7em;padding-top:0}.post-body h3{font-size:1.22rem;margin-top:1.4em}.post-body h4{font-size:1.05rem;margin-top:1.2em}.post-body ul,.post-body ol{padding-left:1.4em}.post-body li{margin-bottom:.25em}.post-body blockquote{margin-inline:0;padding:.2em 0 .2em 1.2em;border-left:3px solid var(--accent);color:var(--muted)}.post-body figure{margin:2em 0;text-align:center}.post-body figure img{border-radius:3px}.post-body figcaption{font-size:.85rem;color:var(--muted);margin-top:.6em}.post-body table{width:100%;border-collapse:collapse;font-size:.93rem}.post-body th,.post-body td{border:1px solid var(--border);padding:.5em .7em;text-align:left}.post-body pre{font-family:var(--font-mono);font-size:.855rem;line-height:1.5;padding:1rem 1.1rem;border:1px solid var(--border);border-radius:3px;overflow-x:auto;background:var(--bg-sunk)}.post-body :not(pre)>code{font-family:var(--font-mono);font-size:.89em;background:var(--bg-sunk);border:1px solid var(--border);border-radius:3px;padding:.1em .35em}.post-body pre code{background:0 0;border:0;padding:0}@media(min-width:60rem){.post-body figure,.post-body .table-wrap{width:min(var(--wide),108%);margin-inline:-4%}}.post-body iframe{max-width:100%}.reslink{display:inline-flex;align-items:center;gap:.3em;margin-right:.8em;font-family:var(--font-mono);font-size:.72em;letter-spacing:.01em;color:var(--muted);text-decoration:none;white-space:nowrap}.reslink:hover{color:var(--accent)}.reslink svg{width:1.1em;height:1.1em;flex:none}.toc{grid-column:3;grid-row:1;position:sticky;top:1.5rem;align-self:start;justify-self:start;max-width:15rem;margin:0;padding-left:1rem;border-left:2px solid var(--border);font-size:.82rem;max-height:calc(100vh - 3rem);overflow-y:auto}.toc>p{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin:0 0 .5rem}.toc ul{margin:0;padding-left:1.1rem}.toc li{margin:.18em 0}.toc a{color:var(--fg);text-decoration:none}.toc a:hover{color:var(--accent);text-decoration:underline}.page-title{font-size:clamp(1.7rem,4.5vw,2.4rem);letter-spacing:-.02em;margin:clamp(2rem,5vw,3rem)0 1.5rem}.archive{list-style:none;padding:0;margin:0 0 4rem;max-width:46rem}.archive li{display:flex;gap:1.25rem;align-items:baseline;padding:.75rem 0;border-bottom:1px solid var(--border)}.archive time{font-family:var(--font-mono);font-size:.78rem;color:var(--muted);flex:none}.archive a{color:var(--fg);text-decoration:none}.archive a:hover{color:var(--accent)}.postnav{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;max-width:var(--measure);margin:3.5rem auto 0;border-top:1px solid var(--border);padding-top:1.5rem}.postnav a{text-decoration:none;color:var(--fg)}.postnav a:hover{color:var(--accent)}.postnav .dir{display:block}.postnav .next{text-align:right}@media(max-width:34rem){.postnav{grid-template-columns:1fr}}.sitefoot{border-top:1px solid var(--border);margin-top:2rem;padding-block:1.25rem 1.5rem;font-size:.88rem;color:var(--muted)}.sitefoot p{margin:0}.social{list-style:none;display:flex;flex-wrap:wrap;gap:1.4rem;padding:0;margin:0 0 .85rem;font-family:var(--font-mono);font-size:.82rem}.social a{display:inline-flex;align-items:center;gap:.45rem;color:var(--muted);text-decoration:none}.social a:hover{color:var(--accent)}.social svg{width:1.05em;height:1.05em;fill:currentColor;flex:none}@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}@media(prefers-color-scheme:light),(prefers-color-scheme:no-preference){.bg{background-color:#f7f7f7}.chroma{background-color:#f7f7f7;-webkit-text-size-adjust:none}.chroma .err{color:#f6f8fa;background-color:#82071e}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#dedede}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#7f7f7f}.chroma .line{display:flex}.chroma .k{color:#cf222e}.chroma .kc{color:#cf222e}.chroma .kd{color:#cf222e}.chroma .kn{color:#cf222e}.chroma .kp{color:#cf222e}.chroma .kr{color:#cf222e}.chroma .kt{color:#cf222e}.chroma .na{color:#1f2328}.chroma .nc{color:#1f2328}.chroma .no{color:#0550ae}.chroma .nd{color:#0550ae}.chroma .ni{color:#6639ba}.chroma .nl{color:#900;font-weight:700}.chroma .nn{color:#24292e}.chroma .nx{color:#1f2328}.chroma .nt{color:#0550ae}.chroma .nb{color:#6639ba}.chroma .bp{color:#6a737d}.chroma .nv{color:#953800}.chroma .vc{color:#953800}.chroma .vg{color:#953800}.chroma .vi{color:#953800}.chroma .vm{color:#953800}.chroma .nf{color:#6639ba}.chroma .fm{color:#6639ba}.chroma .s{color:#0a3069}.chroma .sa{color:#0a3069}.chroma .sb{color:#0a3069}.chroma .sc{color:#0a3069}.chroma .dl{color:#0a3069}.chroma .sd{color:#0a3069}.chroma .s2{color:#0a3069}.chroma .se{color:#0a3069}.chroma .sh{color:#0a3069}.chroma .si{color:#0a3069}.chroma .sx{color:#0a3069}.chroma .sr{color:#0a3069}.chroma .s1{color:#0a3069}.chroma .ss{color:#032f62}.chroma .m{color:#0550ae}.chroma .mb{color:#0550ae}.chroma .mf{color:#0550ae}.chroma .mh{color:#0550ae}.chroma .mi{color:#0550ae}.chroma .il{color:#0550ae}.chroma .mo{color:#0550ae}.chroma .o{color:#0550ae}.chroma .ow{color:#0550ae}.chroma .or{color:#0550ae}.chroma .p{color:#1f2328}.chroma .c{color:#57606a}.chroma .ch{color:#57606a}.chroma .cm{color:#57606a}.chroma .c1{color:#57606a}.chroma .cs{color:#57606a}.chroma .cp{color:#57606a}.chroma .cpf{color:#57606a}.chroma .gd{color:#82071e;background-color:#ffebe9}.chroma .ge{color:#1f2328}.chroma .gi{color:#116329;background-color:#dafbe1}.chroma .go{color:#1f2328}.chroma .gl{text-decoration:underline}.chroma .w{color:#fff}}@media(prefers-color-scheme:dark){.bg{color:#e6edf3;background-color:#0d1117}.chroma{color:#e6edf3;background-color:#0d1117;-webkit-text-size-adjust:none}.chroma .err{color:#f85149}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#6e7681}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#737679}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#6e7681}.chroma .line{display:flex}.chroma .k{color:#ff7b72}.chroma .kc{color:#79c0ff}.chroma .kd{color:#ff7b72}.chroma .kn{color:#ff7b72}.chroma .kp{color:#79c0ff}.chroma .kr{color:#ff7b72}.chroma .kt{color:#ff7b72}.chroma .nc{color:#f0883e;font-weight:700}.chroma .no{color:#79c0ff;font-weight:700}.chroma .nd{color:#d2a8ff;font-weight:700}.chroma .ni{color:#ffa657}.chroma .ne{color:#f0883e;font-weight:700}.chroma .nl{color:#79c0ff;font-weight:700}.chroma .nn{color:#ff7b72}.chroma .nx{color:#e6edf3}.chroma .py{color:#79c0ff}.chroma .nt{color:#7ee787}.chroma .nv{color:#79c0ff}.chroma .vc{color:#79c0ff}.chroma .vg{color:#79c0ff}.chroma .vi{color:#79c0ff}.chroma .vm{color:#79c0ff}.chroma .nf{color:#d2a8ff;font-weight:700}.chroma .fm{color:#d2a8ff;font-weight:700}.chroma .l{color:#a5d6ff}.chroma .ld{color:#79c0ff}.chroma .s{color:#a5d6ff}.chroma .sa{color:#79c0ff}.chroma .sb{color:#a5d6ff}.chroma .sc{color:#a5d6ff}.chroma .dl{color:#79c0ff}.chroma .sd{color:#a5d6ff}.chroma .s2{color:#a5d6ff}.chroma .se{color:#79c0ff}.chroma .sh{color:#79c0ff}.chroma .si{color:#a5d6ff}.chroma .sx{color:#a5d6ff}.chroma .sr{color:#79c0ff}.chroma .s1{color:#a5d6ff}.chroma .ss{color:#a5d6ff}.chroma .m{color:#a5d6ff}.chroma .mb{color:#a5d6ff}.chroma .mf{color:#a5d6ff}.chroma .mh{color:#a5d6ff}.chroma .mi{color:#a5d6ff}.chroma .il{color:#a5d6ff}.chroma .mo{color:#a5d6ff}.chroma .o{color:#ff7b72;font-weight:700}.chroma .ow{color:#ff7b72;font-weight:700}.chroma .or{color:#ff7b72;font-weight:700}.chroma .c{color:#8b949e;font-style:italic}.chroma .ch{color:#8b949e;font-style:italic}.chroma .cm{color:#8b949e;font-style:italic}.chroma .c1{color:#8b949e;font-style:italic}.chroma .cs{color:#8b949e;font-weight:700;font-style:italic}.chroma .cp{color:#8b949e;font-weight:700;font-style:italic}.chroma .cpf{color:#8b949e;font-weight:700;font-style:italic}.chroma .gd{color:#ffa198;background-color:#490202}.chroma .ge{font-style:italic}.chroma .gr{color:#ffa198}.chroma .gh{color:#79c0ff;font-weight:700}.chroma .gi{color:#56d364;background-color:#0f5323}.chroma .go{color:#8b949e}.chroma .gp{color:#8b949e}.chroma .gs{font-weight:700}.chroma .gu{color:#79c0ff}.chroma .gt{color:#ff7b72}.chroma .gl{text-decoration:underline}.chroma .w{color:#6e7681}}