:root{--bg:#ffffff;--bg-soft:#fafafa;--text:#242424;--text-mid:#4b4b4b;--text-soft:#6b6b6b;--border:rgba(0,0,0,.10);--border-strong:rgba(0,0,0,.18);--accent:#1a8917;--accent-text:#0f6b0d;--code-bg:#f6f6f4;--code-text:#2b2b2b;--chip-bg:#f2f2f2;--chip-text:#3a3a3a;--sel:rgba(26,137,23,.18);--serif:"Source Serif 4", Georgia, Cambria, "Times New Roman", serif;--sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, sans-serif;--mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;--measure:680px}[data-theme=dark]{--bg:#121212;--bg-soft:#1a1a1a;--text:rgba(255,255,255,.86);--text-mid:rgba(255,255,255,.66);--text-soft:rgba(255,255,255,.50);--border:rgba(255,255,255,.13);--border-strong:rgba(255,255,255,.24);--accent:#4caf50;--accent-text:#6ee07a;--code-bg:#1c1c1c;--code-text:rgba(255,255,255,.82);--chip-bg:#1f1f1f;--chip-text:rgba(255,255,255,.72);--sel:rgba(76,175,80,.26)}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--serif);font-size:18px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:background .25s ease,color .25s ease}::selection{background:var(--sel)}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}.nav{position:sticky;top:0;z-index:50;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(140%)blur(8px);border-bottom:1px solid var(--border)}.nav-inner{max-width:1100px;margin:0 auto;height:64px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{font-family:jetbrains mono,var(--mono);font-weight:700;font-size:21px;letter-spacing:-.02em;white-space:nowrap;display:flex;align-items:baseline;gap:0}.brand .tag{margin-left:9px}.brand .lg-a{color:var(--text)}.brand .lg-b,.brand .lg-c{color:var(--accent-text)}.brand .tag{font-family:var(--sans);font-weight:500;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--text-soft)}.nav-right{display:flex;align-items:center;gap:8px;font-family:var(--sans)}.nav-link{font-size:14.5px;color:var(--text-mid);padding:8px 12px;border-radius:999px;transition:color .15s,background .15s}.nav-link:hover{color:var(--text);background:var(--chip-bg)}.nav-link.cta{color:#fff;background:var(--accent);font-weight:600}[data-theme=dark] .nav-link.cta{color:#0c1f0c}.nav-link.cta:hover{filter:brightness(1.06);background:var(--accent)}.theme-toggle{width:38px;height:38px;flex:none;display:grid;place-items:center;border:1px solid var(--border-strong);border-radius:999px;background:0 0;color:var(--text-mid);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.theme-toggle:hover{background:var(--chip-bg);color:var(--text)}.theme-toggle svg{width:18px;height:18px}.theme-toggle .i-sun{display:none}[data-theme=dark] .theme-toggle .i-sun{display:block}[data-theme=dark] .theme-toggle .i-moon{display:none}.wrap{max-width:1100px;margin:0 auto;padding:0 24px}.chip{font-family:var(--sans);font-size:12.5px;font-weight:500;color:var(--chip-text);background:var(--chip-bg);padding:5px 12px;border-radius:999px;display:inline-block}.meta-row{font-family:var(--sans);font-size:13.5px;color:var(--text-soft);display:flex;align-items:center;gap:8px;flex-wrap:wrap}.meta-row .dotsep{width:3px;height:3px;border-radius:50%;background:var(--text-soft);display:inline-block}.avatar{width:40px;height:40px;border-radius:50%;flex:none;background:var(--accent);color:#fff;display:grid;place-items:center;font-family:var(--sans);font-weight:700;font-size:15px}[data-theme=dark] .avatar{color:#0c1f0c}footer.site{border-top:1px solid var(--border);margin-top:80px;font-family:var(--sans);font-size:13.5px;color:var(--text-soft)}footer.site .wrap{padding-top:28px;padding-bottom:40px;display:flex;justify-content:space-between;flex-wrap:wrap;gap:14px}footer.site a{color:var(--text-mid)}footer.site a:hover{color:var(--accent-text)}footer.site .fnav{display:flex;gap:20px;flex-wrap:wrap}@media(max-width:720px){.nav-inner{padding:0 16px;height:58px}.brand{font-size:20px}.brand .tag{display:none}.nav-link:not(.cta){display:none}.wrap{padding:0 18px}}:root{--tok-kw:#a626a4;--tok-str:#3f8a3a;--tok-com:#a0a1a7;--tok-fn:#3f6fe0;--tok-num:#b3690a;--tok-type:#9a7000;--tok-punct:#6b6b6b;--tok-err:#d14343;--tok-hl:rgba(26, 137, 23, .10)}[data-theme=dark]{--tok-kw:#c678dd;--tok-str:#98c379;--tok-com:#7f848e;--tok-fn:#61afef;--tok-num:#d19a66;--tok-type:#e5c07b;--tok-punct:rgba(255, 255, 255, .45);--tok-err:#e06c75;--tok-hl:rgba(76, 175, 80, .14)}.chroma-wrap{margin:1.7em auto;max-width:760px}.chroma-wrap .chroma{background:var(--code-bg);border:1px solid var(--border);border-radius:8px;padding:18px 20px;overflow-x:auto}.chroma-wrap .chroma code{font-family:var(--mono);font-size:14.5px;line-height:1.65;background:0 0;border:none;padding:0;color:var(--code-text);display:block;white-space:pre}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0;width:auto}.chroma .hl{display:block;width:100%;background:var(--tok-hl)}.chroma .lnt,.chroma .ln{margin-right:.4em;padding:0 .4em;color:var(--text-soft);user-select:none}.chroma .k,.chroma .kc,.chroma .kd,.chroma .kn,.chroma .kp,.chroma .kr,.chroma .ow{color:var(--tok-kw)}.chroma .kt,.chroma .nc,.chroma .nn,.chroma .no,.chroma .ne{color:var(--tok-type)}.chroma .nf,.chroma .nb,.chroma .nt,.chroma .na,.chroma .nd{color:var(--tok-fn)}.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:var(--tok-str)}.chroma .m,.chroma .mb,.chroma .mf,.chroma .mh,.chroma .mi,.chroma .il,.chroma .mo{color:var(--tok-num)}.chroma .c,.chroma .ch,.chroma .cm,.chroma .c1,.chroma .cs,.chroma .cp,.chroma .cpf{color:var(--tok-com);font-style:italic}.chroma .p,.chroma .o{color:var(--tok-punct)}.chroma .err{color:var(--tok-err)}.chroma .gd{color:var(--tok-err)}.chroma .gi{color:var(--tok-str)}.chroma .ge{font-style:italic}.chroma .gs{font-weight:700}.chroma .gu,.chroma .gh{color:var(--tok-com);font-weight:700}@media(max-width:560px){.chroma-wrap .chroma{padding:14px}.chroma-wrap .chroma code{font-size:13.5px}}