.site-footer{border-top:1px solid var(--line);padding-block:var(--sp-5)}.site-footer-inner{justify-content:space-between;align-items:center;gap:var(--sp-4);display:flex}@media (max-width:480px){.site-footer-inner{align-items:flex-start;gap:var(--sp-4);flex-direction:column}}
:root{--font-sans:var(--font-inter), -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono:var(--font-jetbrains-mono), ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;--fs-micro:.6875rem;--fs-mono:.8125rem;--fs-sm:.875rem;--fs-base:1.0625rem;--fs-lg:1.1875rem;--fs-xl:1.5rem;--fs-2xl:2rem;--sp-1:.25rem;--sp-2:.5rem;--sp-3:.75rem;--sp-4:1rem;--sp-5:1.5rem;--sp-6:2rem;--sp-7:3rem;--sp-8:4rem;--sp-9:6rem;--measure:42rem;--radius:4px;--radius-lg:8px;--dur:.16s;--ease:cubic-bezier(.4, 0, .2, 1)}:root,:root[data-theme=dark]{--bg:#0e0f11;--bg-subtle:#15171a;--bg-inset:#1b1e22;--text:#e8e8e6;--text-muted:#8a8f98;--text-faint:#5c6169;--line:#22252a;--line-strong:#313640;--accent:#7ea6d9;--accent-quiet:#7ea6d924;--selection:#7ea6d942;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#fbfbfa;--bg-subtle:#f3f3f1;--bg-inset:#ecece9;--text:#16181b;--text-muted:#6b7076;--text-faint:#9aa0a6;--line:#e4e4e1;--line-strong:#cfcfca;--accent:#2f5d8a;--accent-quiet:#2f5d8a1a;--selection:#2f5d8a2e;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}
*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{background-color:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--fs-base);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;margin:0;font-weight:400;line-height:1.7;overflow-x:hidden}::selection{background:var(--selection)}h1,h2,h3,h4{letter-spacing:-.02em;color:var(--text);text-wrap:balance;margin:0;font-weight:600;line-height:1.25}h1{font-size:var(--fs-2xl)}h2{font-size:var(--fs-xl)}h3{font-size:var(--fs-lg)}h4{font-size:var(--fs-base)}p{margin:0}a{color:var(--accent);text-underline-offset:3px;transition:color var(--dur) var(--ease);text-decoration:none;text-decoration-thickness:1px}a:hover{text-decoration:underline}strong{color:var(--text);font-weight:600}img{max-width:100%;display:block}code,pre,kbd{font-family:var(--font-mono)}button{font:inherit;color:inherit;cursor:pointer}hr{border:0;border-top:1px solid var(--line);margin:var(--sp-6) 0}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}:focus:not(:focus-visible){outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important}}
.wrap{width:100%;max-width:var(--measure);padding-inline:var(--sp-5);margin:0 auto}@media (max-width:480px){.wrap{padding-inline:var(--sp-4)}}.stack{gap:var(--sp-4);flex-direction:column;display:flex}.stack-lg{gap:var(--sp-7);flex-direction:column;display:flex}.eyebrow{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);font-weight:500}.mono{font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted);font-variant-numeric:tabular-nums}.section-head{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-5);display:flex}.section-head .rule{background:var(--line);flex:1;height:1px}.section-head .more{font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted);white-space:nowrap}.section-head .more:hover{color:var(--accent);text-decoration:none}.tag-row{gap:var(--sp-2);flex-wrap:wrap;display:flex}.tag{font-family:var(--font-mono);font-size:var(--fs-micro);color:var(--text-muted);padding:2px var(--sp-2);border:1px solid var(--line);border-radius:var(--radius);white-space:nowrap}.tech-inline{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--text-faint)}.link-quiet{color:var(--text);text-decoration:none}.link-quiet:hover{color:var(--accent);text-decoration:none}.back-link{align-items:center;gap:var(--sp-2);font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted);transition:color var(--dur) var(--ease);background:0 0;border:0;padding:0;display:inline-flex}.back-link:hover{color:var(--accent)}.state{font-family:var(--font-mono);font-size:var(--fs-mono);color:var(--text-muted);padding:var(--sp-6) 0}.state-error{color:var(--text)}.state-error:before{content:"! ";color:var(--accent)}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.prose{color:var(--text);font-size:var(--fs-base);overflow-wrap:break-word;line-height:1.75}.prose>*+*{margin-top:var(--sp-4)}.prose h1,.prose h2,.prose h3,.prose h4{margin-top:var(--sp-7);margin-bottom:var(--sp-3);line-height:1.3}.prose h1{font-size:1.625rem}.prose h2{font-size:var(--fs-xl)}.prose h3{font-size:var(--fs-lg)}.prose h4{font-size:var(--fs-base)}.prose a{text-decoration:underline}.prose ul,.prose ol{padding-left:var(--sp-5)}.prose li+li{margin-top:var(--sp-2)}.prose li::marker{color:var(--text-faint)}.prose blockquote{margin:var(--sp-5) 0;padding-left:var(--sp-4);border-left:2px solid var(--line-strong);color:var(--text-muted)}.prose blockquote p+p{margin-top:var(--sp-3)}.prose :not(pre)>code{background:var(--bg-inset);border:1px solid var(--line);border-radius:var(--radius);color:var(--text);padding:.1em .35em;font-size:.875em}.prose pre{margin:var(--sp-5) 0;padding:var(--sp-4);background:var(--bg-subtle);border:1px solid var(--line);border-radius:var(--radius-lg);font-size:var(--fs-mono);tab-size:2;line-height:1.65;overflow-x:auto}.prose pre code{font-size:inherit;background:0 0;border:0;padding:0}.prose img{border:1px solid var(--line);border-radius:var(--radius-lg);margin:var(--sp-5) 0}.prose hr{margin:var(--sp-7) 0}.prose .table-scroll{margin:var(--sp-5) 0;overflow-x:auto}.prose table{border-collapse:collapse;width:100%;font-size:var(--fs-sm)}.prose th,.prose td{text-align:left;padding:var(--sp-2) var(--sp-3);border-bottom:1px solid var(--line)}.prose th{font-family:var(--font-mono);font-size:var(--fs-micro);letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);font-weight:500}.prose kbd{border:1px solid var(--line-strong);border-radius:var(--radius);border-bottom-width:2px;padding:.1em .4em;font-size:.8em}.sweep-text{--sweep-blue:#4285f4;--sweep-red:#ea4335;--sweep-yellow:#fbbc05;--sweep-green:#34a853;--sweep:linear-gradient(90deg, var(--sweep-blue), var(--sweep-red), var(--sweep-yellow), var(--sweep-green), var(--sweep-blue))}:root[data-theme=light] .sweep-text{--sweep-blue:#1a73e8;--sweep-red:#d93025;--sweep-yellow:#e37400;--sweep-green:#188038}@keyframes sweep-text{0%{background-position:0%}to{background-position:200%}}@supports ((-webkit-background-clip:text) or (background-clip:text)){.sweep-text.sweep-text,.sweep-text.sweep-text:hover{background:var(--sweep);color:#0000;background-size:200% 100%;-webkit-background-clip:text;background-clip:text}.sweep-text.sweep-text{animation:9s linear infinite sweep-text}.sweep-text.sweep-text:hover{animation-duration:2.5s}}@media (prefers-reduced-motion:reduce){.sweep-text.sweep-text,.sweep-text.sweep-text:hover{animation:none}}

.site{flex-direction:column;min-height:100vh;display:flex}.site-main{padding-block:var(--sp-8) var(--sp-9);flex:1}@media (max-width:640px){.site-main{padding-block:var(--sp-6) var(--sp-8)}}
