@font-face{font-family:Public Sans;src:url(/fonts/PublicSans-Regular.3cc1ee02eeoe.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Public Sans;src:url(/fonts/PublicSans-Bold.56251ea10a5c.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Iosevka;src:url(/fonts/Iosevka-Regular.001doeo1c2oa.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Iosevka;src:url(/fonts/Iosevka-Bold.16ade2c5ce5d.woff2)format("woff2");font-weight:700;font-style:normal;font-display:swap}:root{color-scheme:light dark;--bg:light-dark(#fafafa,#0a0a0a);--bg-raised:light-dark(#fff,#111);--fg:light-dark(#1a1a1a,#d4d4d4);--fg-muted:light-dark(#6b6b6b,#737373);--accent:light-dark(#2d8a2d,#7aba7a);--accent-dim:light-dark(#236623,#5d8a5d);--code-bg:light-dark(#f0f0f0,#161616);--border:light-dark(#e0e0e0,#262626);--font-sans:"Public Sans",-apple-system,BlinkMacSystemFont,sans-serif;--font-mono:"Iosevka","SF Mono",Consolas,monospace;--sidebar-width:220px;--content-max:720px}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px}body{font-family:var(--font-sans);background:var(--bg);color:var(--fg);line-height:1.6;min-height:100vh;display:flex;flex-direction:column}.site-nav{display:flex;align-items:center;gap:1.5rem;padding:.75rem 1.5rem;border-bottom:1px solid var(--border);background:var(--bg);position:sticky;top:0;z-index:100}.site-nav-brand{display:flex;align-items:center;gap:.5rem;font-size:1.25rem;font-weight:700;color:var(--fg);text-decoration:none}.site-nav-logo{flex-shrink:0}.site-nav-spacer{flex:1}.site-nav-search{width:240px;height:36px;position:relative}.site-nav-github{color:var(--fg-muted);transition:color .2s}.site-nav-github:hover{color:var(--fg)}.hero{padding:4rem 2rem;text-align:center;border-bottom:1px solid var(--border);background:linear-gradient(180deg,var(--bg)0%,var(--bg-raised)100%)}.hero-content{max-width:600px;margin:0 auto}.hero-title{font-size:3.5rem;font-weight:700;color:var(--fg);margin-bottom:.5rem;letter-spacing:-.02em}.hero-tagline{font-size:1.5rem;color:var(--accent);margin-bottom:.5rem;font-weight:500}.hero-sub{font-size:1rem;color:var(--fg-muted);margin-bottom:2rem}.hero-actions{display:flex;gap:1rem;justify-content:center;flex-wrap:wrap}.btn{display:inline-block;padding:.75rem 1.5rem;border-radius:6px;font-weight:600;text-decoration:none;transition:all .2s}.btn-primary{background:var(--accent);color:light-dark(#fff,#000)}.btn-primary:visited{color:light-dark(#fff,#000)}.btn-primary:hover{background:var(--accent-dim)}.btn-secondary{background:0 0;color:var(--fg);border:1px solid var(--border)}.btn-secondary:hover{border-color:var(--fg-muted)}.layout{display:flex;flex:1;max-width:1100px;margin:0 auto;width:100%}.sidebar{width:var(--sidebar-width);flex-shrink:0;padding:2rem 1.5rem;border-right:1px solid var(--border);position:sticky;top:53px;height:calc(100vh - 53px);overflow-y:auto}.sidebar-nav{display:flex;flex-direction:column;gap:1.5rem}.sidebar-section h3{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;margin-bottom:.75rem}.sidebar-section h3 a{color:var(--fg-muted);text-decoration:none;transition:color .15s}.sidebar-section h3 a:hover{color:var(--fg)}.sidebar-section ul{list-style:none}.sidebar-section li{margin-bottom:.25rem}.sidebar-section a{display:block;padding:.375rem .75rem;color:var(--fg-muted);text-decoration:none;font-size:.9rem;border-radius:4px;transition:all .15s}.sidebar-section a:hover{color:var(--fg);background:var(--bg-raised)}.sidebar-section a.active{color:var(--accent);background:light-dark(#2d8a2d1a,#7aba7a1a)}.content{flex:1;min-width:0;padding:2rem 3rem;max-width:var(--content-max)}article h1{font-size:2rem;margin-bottom:1.5rem;font-weight:700;color:var(--fg)}article h2{font-size:1.35rem;margin-top:2.5rem;margin-bottom:1rem;font-weight:600;color:var(--fg);padding-bottom:.5rem;border-bottom:1px solid var(--border)}article h3{font-size:1.1rem;margin-top:2rem;margin-bottom:.75rem;font-weight:600}article p{margin-bottom:1rem}article ul,article ol{margin-bottom:1rem;padding-left:1.5rem}article li{margin-bottom:.5rem}article a{color:var(--accent);text-decoration:none}article a:hover{text-decoration:underline}article img{max-width:100%;height:auto;border-radius:8px;margin:1rem 0}article code{font-family:var(--font-mono);font-size:.875em;background:var(--code-bg);padding:.2em .4em;border-radius:4px}article pre,.code-block{background:var(--code-bg);padding:.75rem 1rem;border-radius:6px;overflow-x:auto;margin-bottom:1rem;border:1px solid var(--border)}.code-block pre{background:0 0;padding:0;margin:0;border:none;border-radius:0}article pre code{background:0 0;padding:0;font-size:.85rem;line-height:1.5}article strong{font-weight:600;color:var(--fg)}article em{color:var(--fg-muted)}article table{width:100%;border-collapse:collapse;margin:1.5rem 0;font-size:.9rem}article th,article td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid var(--border)}article th{font-weight:600;color:var(--fg);background:var(--bg-raised)}article tr:hover td{background:light-dark(#00000005,#ffffff05)}footer{border-top:1px solid var(--border);padding:1.5rem;text-align:center;color:var(--fg-muted);font-size:.8rem}footer a{color:var(--accent-dim);text-decoration:none;transition:color .15s}footer a:hover{color:var(--accent)}@media (width<=768px){.sidebar{display:none}.layout{display:block}.content{padding:1.5rem;max-width:100%}.hero{padding:3rem 1.5rem}.hero-title{font-size:2.5rem}.hero-tagline{font-size:1.25rem}.site-nav{padding:.75rem 1rem}.site-nav-search{width:180px}article h1{font-size:1.75rem}}@view-transition{navigation:auto}::view-transition-old(root){animation:.15s ease-out fade-out}::view-transition-new(root){animation:.15s ease-in fade-in}@keyframes fade-out{0%{opacity:1}to{opacity:0}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.sidebar a:visited,.sidebar-nav a:visited,.sidebar-section a:visited{color:inherit}pre,.code-block{position:relative}.code-block .copy-btn{position:absolute;top:.5rem;right:.5rem;padding:.25rem .5rem;font-size:.75rem;background:light-dark(#dcdce6e6,#3c3c46e6);border:1px solid light-dark(#0003,#ffffff4d);border-radius:.25rem;color:light-dark(#3a3a4a,#c0caf5);cursor:pointer;opacity:0;transition:opacity .15s}.code-block:hover .copy-btn{opacity:1}.code-block .copy-btn:hover{background:light-dark(#c8c8d7f2,#50505ff2)}.code-block .copy-btn.copied{background:#32a032e6}