.site-footer:where(.astro-jo6i4kqk){margin-top:var(--space-24);padding-block:var(--space-12) var(--space-8);border-top:1px solid var(--border);color:var(--text-muted);font-size:var(--text-sm)}.grid:where(.astro-jo6i4kqk){gap:var(--space-8);grid-template-columns:repeat(auto-fit,minmax(9rem,1fr));display:grid}.about:where(.astro-jo6i4kqk){grid-column:span 2;max-width:24rem;@media (width<40rem){grid-column:1/-1}}.brand:where(.astro-jo6i4kqk){align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);color:var(--text);font-size:var(--text-base);font-weight:700;text-decoration:none;display:inline-flex}h2:where(.astro-jo6i4kqk){margin-bottom:var(--space-3);color:var(--text);font-size:var(--text-sm);letter-spacing:0;font-weight:600}ul:where(.astro-jo6i4kqk){gap:var(--space-2);margin:0;padding:0;list-style:none;display:grid}nav:where(.astro-jo6i4kqk) a:where(.astro-jo6i4kqk){color:var(--text-muted);text-decoration:none;&:hover{color:var(--text);text-decoration:underline}}.attribution:where(.astro-jo6i4kqk){max-width:48rem;margin-top:var(--space-12);font-size:var(--text-xs)}.copyright:where(.astro-jo6i4kqk){font-size:var(--text-xs);margin:0}.theme-toggle:where(.astro-l6lhmie6){border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:2.75rem;height:2.75rem;color:var(--text);cursor:pointer;place-items:center;padding:0;display:inline-grid;&:hover{background:var(--surface-hover)}}svg:where(.astro-l6lhmie6){fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.75px;width:1.25rem;height:1.25rem}.site-header:where(.astro-nen7h5rs){z-index:50;border-bottom:1px solid var(--border);background:var(--header-bg);backdrop-filter:saturate(1.4)blur(12px);view-transition-name:site-header;position:sticky;top:0}.inner:where(.astro-nen7h5rs){align-items:center;gap:var(--space-4);height:var(--header-height);display:flex}.brand:where(.astro-nen7h5rs){align-items:center;gap:var(--space-2);min-height:2.75rem;color:var(--text);font-size:var(--text-lg);letter-spacing:-.01em;font-weight:700;text-decoration:none;display:inline-flex}nav:where(.astro-nen7h5rs){margin-inline-start:auto}ul:where(.astro-nen7h5rs){margin:0;padding:0;list-style:none}.inline:where(.astro-nen7h5rs){gap:var(--space-1);display:flex}nav:where(.astro-nen7h5rs) a:where(.astro-nen7h5rs){min-height:2.75rem;padding:0 var(--space-3);border-radius:var(--radius);color:var(--text-muted);align-items:center;font-weight:500;text-decoration:none;display:flex;&:hover,&[aria-current=page]{background:var(--surface-hover);color:var(--text)}}.menu-button:where(.astro-nen7h5rs){border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);width:2.75rem;height:2.75rem;color:var(--text);cursor:pointer;place-items:center;padding:0;display:none;& svg{fill:none;stroke:currentColor;stroke-linecap:round;stroke-width:1.75px;width:1.25rem;height:1.25rem}}.menu:where(.astro-nen7h5rs){inset:calc(var(--header-height) + var(--space-2)) var(--gutter) auto auto;min-width:14rem;padding:var(--space-2);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow);color:var(--text);margin:0}@media (width<48rem){@supports selector(:popover-open){.inline:where(.astro-nen7h5rs){display:none}.menu-button:where(.astro-nen7h5rs){display:grid}}@supports not selector(:popover-open){.inline:where(.astro-nen7h5rs){flex-wrap:wrap}}}:root{--indigo-3:#91a7ff;--indigo-5:#5c7cfa;--indigo-6:#4c6ef5;--indigo-7:#4263eb;--indigo-8:#3b5bdb;--violet-6:#7950f2;--violet-7:#7048e8;--ink:#1a1b1e;--paper:#f8f9fa;--night:#0b0d12;--bg-light:var(--paper);--bg-dark:var(--night);--surface-light:#fff;--surface-dark:#141821;--surface-hover-light:#f1f3f5;--surface-hover-dark:#1b202b;--border-light:#dee2e6;--border-dark:#262c3b;--text-light:var(--ink);--text-dark:#e9ebf2;--text-muted-light:#495057;--text-muted-dark:#a6adbd;--link-light:var(--indigo-8);--link-dark:var(--indigo-3);--grid-light:#3b5bdb14;--grid-dark:#91a7ff12;--glow-light:#7950f224;--glow-dark:#7950f24d;--header-bg-light:#f8f9facc;--header-bg-dark:#0b0d12bf;--well-light:#f1f3f5;--well-dark:#1b2030;--success-light:#2b8a3e;--success-dark:#69db7c;--bg:var(--bg-light);--surface:var(--surface-light);--surface-hover:var(--surface-hover-light);--border:var(--border-light);--text:var(--text-light);--text-muted:var(--text-muted-light);--link:var(--link-light);--grid:var(--grid-light);--glow:var(--glow-light);--header-bg:var(--header-bg-light);--well:var(--well-light);--success:var(--success-light);@media (prefers-color-scheme:dark){--bg:var(--bg-dark);--surface:var(--surface-dark);--surface-hover:var(--surface-hover-dark);--border:var(--border-dark);--text:var(--text-dark);--text-muted:var(--text-muted-dark);--link:var(--link-dark);--grid:var(--grid-dark);--glow:var(--glow-dark);--header-bg:var(--header-bg-dark);--well:var(--well-dark);--success:var(--success-dark)}@supports (color:light-dark(white, black)){--bg:light-dark(var(--bg-light),var(--bg-dark));--surface:light-dark(var(--surface-light),var(--surface-dark));--surface-hover:light-dark(var(--surface-hover-light),var(--surface-hover-dark));--border:light-dark(var(--border-light),var(--border-dark));--text:light-dark(var(--text-light),var(--text-dark));--text-muted:light-dark(var(--text-muted-light),var(--text-muted-dark));--link:light-dark(var(--link-light),var(--link-dark));--grid:light-dark(var(--grid-light),var(--grid-dark));--glow:light-dark(var(--glow-light),var(--glow-dark));--header-bg:light-dark(var(--header-bg-light),var(--header-bg-dark));--well:light-dark(var(--well-light),var(--well-dark));--success:light-dark(var(--success-light),var(--success-dark))}--gradient-brand:linear-gradient(135deg, var(--indigo-6), var(--violet-6));--gradient-button:linear-gradient(135deg, var(--indigo-7), var(--violet-7));--text-xs:.8125rem;--text-sm:.875rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.25rem;--text-2xl:clamp(1.5rem, 1.25rem + 1vw, 1.875rem);--text-3xl:clamp(1.875rem, 1.45rem + 1.8vw, 2.5rem);--text-4xl:clamp(2.25rem, 1.6rem + 3vw, 3.5rem);--text-5xl:clamp(2.5rem, 1.6rem + 4.2vw, 4.25rem);--leading-tight:1.1;--leading-snug:1.35;--leading-normal:1.6;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--space-6:1.5rem;--space-8:2rem;--space-12:3rem;--space-16:4rem;--space-24:6rem;--radius-sm:.375rem;--radius:.625rem;--radius-lg:1rem;--radius-full:999px;--container:72rem;--gutter:clamp(1rem, 4vw, 2rem);--header-height:4rem;--shadow:0 1px 2px #00000014, 0 8px 24px #00000014;--ease-out:cubic-bezier(.2, .7, .2, 1)}:root{color-scheme:light dark;&:has(>head>meta[name=color-scheme][content=dark]){color-scheme:dark}&:has(>head>meta[name=color-scheme][content=light]){color-scheme:light}}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}}*,:before,:after{box-sizing:border-box}html{background:var(--bg);accent-color:var(--link);scroll-padding-top:calc(var(--header-height) + var(--space-4));-webkit-text-size-adjust:100%;text-size-adjust:100%}body{min-height:100dvh;color:var(--text);font-family:var(--font-inter);font-size:var(--text-base);line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;flex-direction:column;margin:0;display:flex;position:relative}main{flex:1}main:focus{outline:none}img,svg,video{max-width:100%;height:auto;display:block}h1,h2,h3{margin:0 0 var(--space-4);line-height:var(--leading-tight);letter-spacing:-.02em;text-wrap:balance}p{margin:0 0 var(--space-4);text-wrap:pretty}a{color:var(--link);text-underline-offset:.2em;text-decoration-thickness:1px;&:hover{text-decoration-thickness:2px}}:focus-visible{outline:2px solid var(--link);outline-offset:3px}code,kbd,pre{font-family:var(--font-mono);font-size:.9em}::selection{background:#4c6ef559}.visually-hidden{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{width:min(100% - 2 * var(--gutter), var(--container));margin-inline:auto}.skip-link{top:var(--space-2);left:var(--space-2);z-index:100;padding:var(--space-2) var(--space-4);border-radius:var(--radius);background:var(--surface);color:var(--text);font-weight:600;position:absolute;transform:translateY(-200%);&:focus{transform:none}}.backdrop{z-index:-1;pointer-events:none;background-image:linear-gradient(var(--grid) 1px, transparent 1px), linear-gradient(90deg, var(--grid) 1px, transparent 1px);background-position:top;background-size:48px 48px;height:44rem;position:absolute;inset:0 0 auto;overflow:hidden;mask-image:radial-gradient(70% 70% at 50% 0,#000 30%,#0000 75%);&:after{background:radial-gradient(closest-side, var(--glow), transparent);content:"";width:min(64rem,120vw);height:36rem;position:absolute;top:-16rem;left:50%;transform:translate(-50%)}}.eyebrow{margin:0 0 var(--space-3);color:var(--text-muted);font-size:var(--text-sm);letter-spacing:.06em;text-transform:uppercase;font-weight:600}.gradient-text{background:var(--gradient-brand);color:#0000;background-clip:text}.button{justify-content:center;align-items:center;gap:var(--space-2);border-radius:var(--radius);min-height:2.75rem;font-size:var(--text-base);transition:background-color .15s var(--ease-out), border-color .15s var(--ease-out), transform .15s var(--ease-out);border:1px solid #0000;padding:.625rem 1.125rem;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex;&:active{transform:translateY(1px)}}.button-primary{background:var(--gradient-button);color:#fff;box-shadow:0 6px 20px #4c6ef540}.button-secondary{border-color:var(--border);background:var(--surface);color:var(--text);&:hover{background:var(--surface-hover)}}.astro-code,.astro-code span{color:var(--shiki-light);@media (prefers-color-scheme:dark){color:var(--shiki-dark)}@supports (color:light-dark(white, black)){color:light-dark(var(--shiki-light),var(--shiki-dark))}}@media (prefers-reduced-motion:no-preference){@supports (animation-timeline:view()) and (animation-range:entry){.reveal{animation:linear both reveal view();animation-range:entry entry 60%}}}@keyframes reveal{0%{opacity:0;translate:0 1.5rem}}:root:has(>head>meta[name=color-scheme][content=light]) .when-dark,:root:has(>head>meta[name=color-scheme][content=dark]) .when-light{display:none}@media (prefers-color-scheme:light){:root:has(>head>meta[name=color-scheme][content=light\ dark]) .when-dark{display:none}}@media (prefers-color-scheme:dark){:root:has(>head>meta[name=color-scheme][content=light\ dark]) .when-light{display:none}}@property --animation-reduced{syntax:"*";inherits:false;initial-value:none}@media (prefers-reduced-motion:reduce){*{animation:var(--animation-reduced)!important}}
