@font-face{font-family:Geist Variable;font-style:normal;font-weight:100 900;font-display:optional;src:url(/_astro/geist-latin-wght-normal.BgDaEnEv.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Variable;font-style:normal;font-weight:100 900;font-display:optional;src:url(/_astro/geist-latin-ext-wght-normal.DC-KSUi6.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:optional;src:url(/_astro/jetbrains-mono-latin-400-normal.V6pRDFza.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:400;font-display:optional;src:url(/_astro/jetbrains-mono-latin-ext-400-normal.Bc8Ftmh3.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:optional;src:url(/_astro/jetbrains-mono-latin-500-normal.BWZEU5yA.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:JetBrains Mono;font-style:normal;font-weight:500;font-display:optional;src:url(/_astro/jetbrains-mono-latin-ext-500-normal.Cut-4mMH.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Kalam;font-style:normal;font-weight:700;font-display:optional;src:url(/_astro/kalam-latin-700-normal.D2H-9ISU.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#09090b;--bg-elev:#0c0c0e;--bg-card:#111113;--fg:#fafafa;--fg-muted:#a1a1aa;--fg-dim:#8b8b93;--fg-faint:#52525b;--border:#ffffff14;--border-strong:#ffffff24;--accent-h:250;--accent:oklch(.68 .17 var(--accent-h));--accent-dim:oklch(.68 .17 var(--accent-h) / .15);--accent-ring:oklch(.78 .14 var(--accent-h));--ok:oklch(72% .16 150);--warn:oklch(76% .15 75);--font-sans:"Geist Variable", "Geist", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, monospace;--radius:12px;--radius-sm:8px;--radius-lg:16px;--nav-h:56px;--section-y:5rem;--section-head-gap:2rem}*{box-sizing:border-box;margin:0;padding:0}html{color-scheme:dark;scroll-behavior:smooth;-webkit-text-size-adjust:100%;font-size:112.5%}body{background:var(--bg);color:var(--fg);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-height:100vh;line-height:1.5;overflow-x:hidden}body:after{content:"";pointer-events:none;opacity:.035;z-index:9999;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-repeat:repeat;background-size:256px 256px;position:fixed;inset:0}a{color:inherit;text-decoration:none}button{cursor:pointer;color:inherit;background:0 0;border:0;font-family:inherit}img,svg{max-width:100%;display:block}code,kbd,pre{font-family:var(--font-mono)}kbd{border:1px solid var(--border-strong);color:var(--fg);background:#ffffff0a;border-bottom-width:2px;border-radius:6px;padding:.1em .45em;font-size:.85em}:focus-visible{outline:2px solid var(--accent-ring);outline-offset:3px;border-radius:6px}::selection{background:var(--accent-dim)}.eyebrow{font-family:var(--font-mono);letter-spacing:.14em;text-transform:uppercase;color:var(--fg-dim);font-size:.7rem;font-weight:500}.display{letter-spacing:-.035em;font-weight:500;line-height:1.05}.container{width:100%;max-width:1240px;margin:0 auto;padding:0 32px}.container--narrow{max-width:760px}.muted{color:var(--fg-muted)}.dim{color:var(--fg-dim)}.mono{font-family:var(--font-mono)}.btn{border:1px solid var(--border-strong);background:#ffffff0a;border-radius:999px;justify-content:center;align-items:center;gap:.6rem;padding:.7rem 1.25rem;font-size:.95rem;font-weight:500;transition:background .25s,border-color .25s,transform .2s;display:inline-flex}.btn:hover{background:#ffffff14;border-color:#ffffff38}.btn:active{transform:translateY(1px)}.btn-primary{background:var(--fg);color:var(--bg);border-color:var(--fg)}.btn-primary:hover{background:#fff;border-color:#fff}.btn-lg{padding:.9rem 1.6rem;font-size:1.05rem}.btn svg{flex-shrink:0;width:1.1em;height:1.1em}.link{color:var(--fg-muted);text-underline-offset:3px;text-decoration:underline #a1a1aa66;transition:color .3s,text-decoration-color .3s}.link:hover{color:var(--fg);text-decoration-color:var(--fg)}.prose{color:var(--fg-muted);font-size:1rem}.prose h2{color:var(--fg);letter-spacing:-.02em;scroll-margin-top:calc(var(--nav-h) + 16px);margin:3rem 0 1rem;font-size:1.5rem;font-weight:500}.prose h3{color:var(--fg);scroll-margin-top:calc(var(--nav-h) + 16px);margin:2rem 0 .6rem;font-size:1.1rem;font-weight:500}.prose p,.prose li{margin-bottom:.75rem}.prose ol,.prose ul{padding-left:1.4rem}.prose a{color:var(--fg);text-underline-offset:3px;text-decoration:underline #fafafa59}.prose a:hover{text-decoration-color:var(--fg)}.prose strong{color:var(--fg);font-weight:500}.prose table{border-collapse:collapse;width:100%;margin:1rem 0 1.5rem;font-size:.95rem}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:.6rem .75rem}.prose th{color:var(--fg);font-weight:500}.prose code{overflow-wrap:anywhere;color:var(--fg);border:1px solid var(--border);background:#ffffff0d;border-radius:6px;padding:.1em .4em;font-size:.875em}.callout{border:1px solid var(--border-strong);border-left:3px solid var(--warn);border-radius:var(--radius-sm);background:#ffffff05;margin:1.25rem 0;padding:.9rem 1rem}:root[data-motion=on] [data-reveal]{opacity:0;transform:translateY(16px)}:root[data-motion=on] [data-reveal].is-revealed{opacity:1;transition:opacity .6s cubic-bezier(.2,.7,.2,1),transform .6s cubic-bezier(.2,.7,.2,1);transform:none}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}:root[data-motion=on] [data-reveal]{opacity:1;transform:none}:root[data-motion=on] [data-reveal].is-revealed{transition:none}*,:before,:after{transition-duration:.01ms!important}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.skip-link{z-index:10000;background:var(--fg);color:var(--bg);border-radius:999px;padding:.5rem .9rem;font-weight:500;transition:top .2s;position:absolute;top:-48px;left:16px}.skip-link:focus{top:12px}@media (width<=640px){:root{--section-y:3.5rem}.container{padding:0 20px}}[data-theme=ember]{--bg:#0a0a0b;--bg-elev:#0f0f11;--bg-card:#121214;--fg:#f5f5f4;--fg-muted:#a3a3a0;--fg-dim:#8a8a87;--border:#f5f5f414;--border-strong:#f5f5f429;--accent:#f5f5f4;--accent-dim:#f5f5f41a;--accent-ring:#fff;--rec:#ff3b30;--font-sans:"Geist Variable", "Geist", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;--radius:14px;--radius-lg:22px}[data-theme=ember] .display{letter-spacing:-.045em;font-weight:600;line-height:1}[data-theme=ember] .display .accent{color:var(--fg-muted)}[data-theme=ember] .btn-primary{background:var(--fg);border-color:var(--fg);color:#0a0a0b}[data-theme=ember] .btn-primary:hover{background:#fff;border-color:#fff}[data-theme=ember] .section-title,[data-theme=ember] .prose h2,[data-theme=ember] .heading{letter-spacing:-.03em;font-weight:600}[data-theme=ember] .page{background:var(--bg);position:relative}.page[data-astro-cid-ju4pidww]{flex-direction:column;min-height:100vh;display:flex}.main[data-astro-cid-ju4pidww]{flex-direction:column;flex:1;display:flex}.nav[data-astro-cid-ju4pidww]{z-index:50;height:var(--nav-h);background:color-mix(in srgb, var(--bg) 60%, transparent);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid #0000;align-items:center;transition:border-color .3s,background .3s;display:flex;position:sticky;top:0}.nav[data-astro-cid-ju4pidww].is-scrolled{border-bottom-color:var(--border);background:color-mix(in srgb, var(--bg) 85%, transparent)}.nav-inner[data-astro-cid-ju4pidww]{justify-content:space-between;align-items:center;gap:1rem;display:flex}.nav-brand[data-astro-cid-ju4pidww]{letter-spacing:-.01em;align-items:center;gap:.55rem;font-weight:500;display:inline-flex}.nav-right[data-astro-cid-ju4pidww]{align-items:center;gap:1.4rem;display:flex}.nav-link[data-astro-cid-ju4pidww]{color:var(--fg-muted);align-items:center;gap:.4rem;font-size:.9rem;transition:color .2s;display:inline-flex}.nav-link[data-astro-cid-ju4pidww]:hover{color:var(--fg)}.footer[data-astro-cid-ju4pidww]{border-top:1px solid var(--border);color:var(--fg-dim);padding:2rem 0 2.5rem;font-size:.85rem}.footer-inner[data-astro-cid-ju4pidww]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1.5rem;display:flex}.footer-brand[data-astro-cid-ju4pidww]{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.footer-license[data-astro-cid-ju4pidww]{text-underline-offset:3px;text-decoration:underline #0000;transition:color .2s,text-decoration-color .2s}.footer-license[data-astro-cid-ju4pidww]:hover{color:var(--fg);text-decoration-color:var(--fg)}.footer-warn[data-astro-cid-ju4pidww]{color:var(--warn);font-family:var(--font-mono);font-size:.75rem}.footer-links[data-astro-cid-ju4pidww]{gap:1.25rem;display:flex}.footer-links[data-astro-cid-ju4pidww] a[data-astro-cid-ju4pidww]{transition:color .2s}.footer-links[data-astro-cid-ju4pidww] a[data-astro-cid-ju4pidww]:hover{color:var(--fg)}@supports (height:1cap){.nav-brand[data-astro-cid-ju4pidww] svg,.footer-brand[data-astro-cid-ju4pidww] svg{align-self:baseline;transform:translateY(calc(50% - .5cap))}}@media (width<=640px){.nav-right[data-astro-cid-ju4pidww]{gap:1rem}.nav-github[data-astro-cid-ju4pidww] span[data-astro-cid-ju4pidww],.nav-brand-name[data-astro-cid-ju4pidww]{display:none}.nav-brand[data-astro-cid-ju4pidww] svg{align-self:center;transform:none}}
