@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-wght-normal.Dx4kXJAl.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:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/_astro/inter-latin-ext-wght-normal.DO1Apj_S.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 Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-wght-normal.B9CIFXIH.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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/_astro/jetbrains-mono-latin-ext-wght-normal.DBQx-q_a.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}:root{color-scheme:dark;--bg:#0b0b0c;--surface-1:#111113;--surface-2:#17171a;--surface-3:#202023;--bg-elev:var(--surface-1);--bg-muted:var(--surface-2);--stroke:#26262a;--stroke-strong:#3a3a40;--text:#ececee;--muted:#a1a1aa;--faint:#8b8b94;--accent:#4c82f7;--accent-bg:color-mix(in srgb, var(--accent) 16%, transparent);--danger:#e5484d;--danger-fill:#d13438;--on-solid:#fff;--danger-bg:color-mix(in srgb, var(--danger) 10%, transparent);--ok:#46a758;--ok-bg:color-mix(in srgb, var(--ok) 10%, transparent);--warn:#ef9f27;--warn-bg:color-mix(in srgb, var(--warn) 10%, transparent);--info-bg:color-mix(in srgb, var(--muted) 12%, transparent);--hover-bg:color-mix(in srgb, var(--text) 5%, transparent);--selected-bg:color-mix(in srgb, var(--text) 9%, transparent);--selected-ink:var(--text);--selected-marker:var(--text);--btn:#fafafa;--btn-fg:#0a0a0a;--btn-hover:#e5e5e5;--ghost-hover:var(--hover-bg);--user:var(--surface-2);--code-bg:var(--surface-2);--input-bg:var(--surface-2);--diff-add:#46a758;--diff-del:#e5484d;--diff-add-bg:color-mix(in srgb, var(--diff-add) 14%, transparent);--diff-del-bg:color-mix(in srgb, var(--diff-del) 14%, transparent);--scrim:#0000009e;--segment-bg:var(--surface-3);--glass-bg:color-mix(in srgb, var(--surface-1) 82%, transparent);--hairline:inset 0 1px 0 #ffffff0f;--scrollbar:color-mix(in srgb, var(--text) 18%, transparent);--s-05:2px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:20px;--s-6:24px;--s-7:32px;--s-8:48px;--fs-xs:11px;--fs-sm:12px;--fs-base:14px;--fs-chat:15px;--fs-lg:17px;--fs-xl:20px;--fs-2xl:24px;--fs-code:13px;--fs-mono-sm:12px;--lh-tight:1.3;--lh-ui:1.4;--lh-body:1.6;--track-tight:-.011em;--r-sm:6px;--r-md:8px;--r-lg:12px;--r-xl:16px;--r-full:999px;--e-1:0 1px 2px #0006, 0 4px 12px #00000047;--e-2:0 2px 6px #00000070, 0 12px 32px #0000005c;--e-3:0 4px 12px #0000007a, 0 24px 64px #00000070;--dur-fast:.12s;--dur:.18s;--ease:cubic-bezier(.2, 0, 0, 1);--font:"Inter Variable", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--mono:"JetBrains Mono Variable", ui-monospace, "SF Mono", Menlo, Consolas, monospace;--content-max:760px;--page-gutter:var(--s-4);--rail-w:268px;--rail-w-sm:208px;--rail-w-mini:56px;--inspector-w:320px;--topbar-h:56px;--dot:8px;--dot-sm:6px;--lh-code:1.55;--tabbar-h:56px;--control-h-lg:40px;--control-h:32px;--control-h-sm:28px;--control-h-xs:24px;--row-h:32px;--w-panel:400px;--w-panel-wide:520px;--w-dialog:880px;--w-dialog-sm:400px;--h-dialog:680px;--w-palette:36rem;--h-palette:26rem;--h-palette-inline:15rem;--w-sheet:22rem;--w-pop:16rem;--w-control:15rem;--w-measure:600px;--w-host:960px;--w-chip-max:12rem;--w-hint-max:18rem;--code-max:22rem;--composer-max:160px;--qr-size:9rem;--thumb:56px;--badge:18px;--switch-w:32px;--switch-h:18px;--switch-knob:14px;--switch-travel:calc(var(--switch-w) - var(--switch-knob) - 4px);--ring-w:3px;--z-sticky:2;--z-pop:5;--z-tabbar:16;--z-drawer:18;--z-settings:20;--z-palette:40;--z-confirm:60;--icon-xs:12px;--icon-sm:14px;--icon-md:16px;--icon-lg:18px;--icon-xl:20px;--composer-btn:32px;--composer-pad:var(--s-1);--tap:40px;--chevron:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23a1a1a1' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E")}html[data-theme=light]{color-scheme:light;--bg:#fafafa;--surface-1:#fff;--surface-2:#f4f4f5;--surface-3:#e9e9ec;--bg-elev:var(--surface-1);--bg-muted:var(--surface-2);--stroke:#e4e4e7;--stroke-strong:#d4d4d8;--text:#18181b;--muted:#52525b;--faint:#6b6b74;--accent:#2563eb;--danger:#c62828;--danger-fill:#c62828;--ok:#2f7d32;--warn:#9a5800;--hover-bg:color-mix(in srgb, var(--text) 4%, transparent);--selected-bg:color-mix(in srgb, var(--text) 7%, transparent);--btn:#18181b;--btn-fg:#fafafa;--btn-hover:#3f3f46;--ghost-hover:var(--hover-bg);--user:var(--surface-2);--code-bg:var(--surface-2);--input-bg:var(--surface-2);--diff-add:#2f7d32;--diff-del:#c62828;--diff-add-bg:color-mix(in srgb, var(--diff-add) 10%, transparent);--diff-del-bg:color-mix(in srgb, var(--diff-del) 10%, transparent);--scrim:#18181b66;--segment-bg:var(--surface-1);--glass-bg:color-mix(in srgb, var(--surface-1) 80%, transparent);--hairline:inset 0 1px 0 #ffffffb3;--scrollbar:color-mix(in srgb, var(--text) 22%, transparent);--e-1:0 1px 2px #18181b14, 0 4px 12px #18181b0f;--e-2:0 2px 6px #18181b1a, 0 12px 32px #18181b1a;--e-3:0 4px 12px #18181b1f, 0 24px 64px #18181b24;--chevron:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%2352525b' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 6l4 4 4-4'/%3E%3C/svg%3E")}:root{--fs-display:clamp(2.5rem, 1.6rem + 3.9vw, 4.25rem);--fs-h2:clamp(1.75rem, 1.35rem + 1.6vw, 2.5rem);--fs-h3:var(--fs-lg);--fs-lead:clamp(1.0625rem, 1rem + .3vw, 1.1875rem);--fs-body:1rem;--track-display:-.035em;--track-h2:-.025em;--page-max:1160px;--gutter:clamp(var(--s-4), 4vw, var(--s-7));--section-y:clamp(72px, 9vw, 128px);--header-h:60px;--target:44px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + var(--s-4))}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--bg);min-height:100dvh;color:var(--text);font-family:var(--font);font-size:var(--fs-body);line-height:var(--lh-body);font-feature-settings:"cv05", "cv11", "ss03";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;margin:0;overflow-x:clip}img,svg,video{max-width:100%;display:block}img{height:auto}.icon{flex:none;display:inline-block}h1,h2,h3,h4{line-height:var(--lh-tight);letter-spacing:var(--track-tight);text-wrap:balance;margin:0;font-weight:600}p{text-wrap:pretty;margin:0}a{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:var(--mono)}button{font:inherit;color:inherit;touch-action:manipulation}::selection{background:color-mix(in srgb, var(--accent) 28%, transparent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}*{scrollbar-width:thin;scrollbar-color:var(--scrollbar) transparent}.skip-link{left:var(--s-4);top:var(--s-3);z-index:100;padding:var(--s-2) var(--s-4);border-radius:var(--r-md);background:var(--btn);color:var(--btn-fg);font-size:var(--fs-base);font-weight:500;position:absolute;transform:translateY(-200%)}.skip-link:focus{transform:none}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.container{width:min(var(--page-max), 100% - 2 * var(--gutter));margin-inline:auto}.section{padding-block:var(--section-y);position:relative}.section+.section{border-top:1px solid var(--stroke)}.section-head{align-content:start;gap:var(--s-4);max-width:44rem;margin-bottom:clamp(var(--s-7), 5vw, 56px);display:grid}.section-head.center{text-align:center;justify-items:center;margin-inline:auto}.eyebrow{align-items:center;gap:var(--s-2);color:var(--muted);font-size:var(--fs-xs);letter-spacing:.06em;text-transform:uppercase;margin:0;font-weight:600;display:inline-flex}.eyebrow:before{content:"";width:var(--dot-sm);height:var(--dot-sm);border-radius:var(--r-full);background:currentColor}.display{font-size:var(--fs-display);letter-spacing:var(--track-display);font-weight:600;line-height:1.04}.h2{font-size:var(--fs-h2);letter-spacing:var(--track-h2);line-height:1.12}.h3{font-size:var(--fs-h3);line-height:var(--lh-tight)}.lead{color:var(--muted);font-size:var(--fs-lead);max-width:40rem;line-height:1.6}.muted{color:var(--muted)}.faint{color:var(--faint)}.mono{font-family:var(--mono);font-size:var(--fs-code)}.ink-fade{background:linear-gradient(100deg, var(--text) 20%, var(--muted) 95%);-webkit-box-decoration-break:clone;box-decoration-break:clone;color:#0000;-webkit-background-clip:text;background-clip:text}.prose-link,.prose a{color:var(--accent);text-decoration:underline;text-decoration-color:color-mix(in srgb, var(--accent) 40%, transparent);text-underline-offset:3px;transition:text-decoration-color var(--dur) var(--ease)}.prose-link:hover,.prose a:hover{text-decoration-color:var(--accent)}.inline-code,.prose code{border-radius:var(--r-sm);background:var(--surface-3);overflow-wrap:anywhere;padding:.1em .35em;font-size:.875em}.prose pre code{font-size:inherit;background:0 0;border-radius:0;padding:0}.btn{justify-content:center;align-items:center;gap:var(--s-2);min-height:var(--target);padding:0 var(--s-5);border-radius:var(--r-md);font-size:var(--fs-base);white-space:nowrap;cursor:pointer;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease), color var(--dur) var(--ease), transform var(--dur-fast) var(--ease);border:1px solid #0000;font-weight:500;line-height:1;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--btn);color:var(--btn-fg)}.btn-primary:hover{background:var(--btn-hover)}.btn-ghost{border-color:var(--stroke);color:var(--text);background:0 0}.btn-ghost:hover{border-color:var(--stroke-strong);background:var(--hover-bg)}.btn-quiet{color:var(--muted);background:0 0}.btn-quiet:hover{color:var(--text);background:var(--hover-bg)}.btn-sm{min-height:var(--control-h);padding:0 var(--s-3);font-size:var(--fs-sm)}.btn .arrow{transition:transform var(--dur) var(--ease)}.btn:hover .arrow{transform:translate(2px)}.icon-btn{width:var(--control-h);height:var(--control-h);border-radius:var(--r-md);color:var(--muted);cursor:pointer;transition:color var(--dur) var(--ease), background var(--dur) var(--ease);background:0 0;border:0;place-items:center;padding:0;display:inline-grid}.icon-btn:hover{color:var(--text);background:var(--hover-bg)}.kbd{min-width:20px;height:20px;padding:0 var(--s-1);border:1px solid var(--stroke);border-radius:var(--r-sm);background:var(--surface-2);color:var(--muted);font-family:var(--mono);font-size:var(--fs-mono-sm);place-items:center;line-height:1;display:inline-grid}.badge{align-items:center;gap:var(--s-1);height:22px;padding:0 var(--s-2);border:1px solid var(--stroke);border-radius:var(--r-full);background:var(--surface-1);color:var(--muted);font-size:var(--fs-xs);white-space:nowrap;font-weight:500;display:inline-flex}.badge-dot:before{content:"";width:var(--dot-sm);height:var(--dot-sm);border-radius:var(--r-full);background:var(--accent);animation:1.6s ease-in-out infinite pulse}.chip{align-items:center;gap:var(--s-2);min-height:36px;padding:0 var(--s-3);border:1px solid var(--stroke);border-radius:var(--r-full);background:var(--surface-1);color:var(--text);font-size:var(--fs-base);white-space:nowrap;font-weight:500;display:inline-flex}.chip .faint{font-family:var(--mono);font-size:var(--fs-mono-sm);font-weight:400}.card{align-content:start;gap:var(--s-3);padding:var(--s-6);border:1px solid var(--stroke);border-radius:var(--r-lg);background:var(--surface-1);transition:border-color var(--dur) var(--ease), background var(--dur) var(--ease);display:grid;position:relative}.card:hover{border-color:var(--stroke-strong)}.card p{color:var(--muted);font-size:var(--fs-base);line-height:var(--lh-body)}.card-icon{width:36px;height:36px;margin-bottom:var(--s-1);border:1px solid var(--stroke);border-radius:var(--r-md);background:var(--surface-2);color:var(--text);place-items:center;display:grid}.callout{gap:var(--s-3);padding:var(--s-3) var(--s-4);border:1px solid var(--stroke);border-radius:var(--r-md);background:var(--info-bg);font-size:var(--fs-base);line-height:var(--lh-body);display:flex}.callout>.icon{color:var(--muted);margin-top:3px}.callout.warn{border-color:color-mix(in srgb, var(--warn) 22%, transparent);background:var(--warn-bg)}.callout.warn>.icon{color:var(--warn)}.vf{--vf-size:clamp(28px, 4vw, 44px);--vf-gap:clamp(10px, 1.6vw, 18px);--vf-radius:clamp(14px, 2vw, 22px);position:relative}.vf:before,.vf:after{content:"";width:var(--vf-size);height:var(--vf-size);border:2px solid var(--stroke-strong);pointer-events:none;position:absolute}.vf:before{top:calc(var(--vf-gap) * -1);left:calc(var(--vf-gap) * -1);border-top-left-radius:var(--vf-radius);border-bottom:0;border-right:0}.vf:after{right:calc(var(--vf-gap) * -1);bottom:calc(var(--vf-gap) * -1);border-bottom-right-radius:var(--vf-radius);border-top:0;border-left:0}.window{border:1px solid var(--stroke);border-radius:var(--r-xl);background:var(--bg);box-shadow:var(--e-3), var(--hairline);position:relative;overflow:hidden}.window-bar{height:36px;padding:0 var(--s-3);border-bottom:1px solid var(--stroke);background:var(--surface-1);grid-template-columns:1fr auto 1fr;align-items:center;display:grid}.window-dots{gap:6px;display:flex}.window-dots span{border-radius:var(--r-full);background:var(--surface-3);border:1px solid var(--stroke-strong);width:10px;height:10px}.window-url{align-items:center;gap:var(--s-1);padding:0 var(--s-3);border-radius:var(--r-sm);background:var(--surface-2);height:22px;color:var(--faint);font-family:var(--mono);font-size:var(--fs-xs);display:inline-flex}.phone{border:1px solid var(--stroke-strong);background:var(--surface-1);box-shadow:var(--e-3), var(--hairline);border-radius:40px;padding:8px;position:relative}.phone img{border-radius:32px}html.js [data-reveal]{opacity:0;transform:translateY(12px)}html.js [data-reveal].is-in{opacity:1;transition:opacity .64s var(--ease) var(--d,0s), transform .64s var(--ease) var(--d,0s);transform:none}@keyframes pulse{50%{opacity:.35;transform:scale(.8)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{to{background-position:-200% 0}}@keyframes rise{0%{opacity:0;transform:translateY(8px)scale(.98)}}@keyframes fade-in{0%{opacity:0}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important}html.js [data-reveal]{opacity:1;transform:none}}.lang-link[data-astro-cid-rkhrbmqw]{align-items:center;gap:var(--s-1);height:var(--control-h);padding:0 var(--s-2);border-radius:var(--r-md);color:var(--muted);font-size:var(--fs-sm);transition:color var(--dur) var(--ease), background var(--dur) var(--ease);font-weight:600;display:inline-flex}.lang-link[data-astro-cid-rkhrbmqw]:hover{color:var(--text);background:var(--hover-bg)}@media (pointer:coarse){.lang-link[data-astro-cid-rkhrbmqw]{height:var(--target);padding:0 var(--s-3)}}.theme-toggle[data-astro-cid-l6lhmie6]{width:var(--control-h);height:var(--control-h);border-radius:var(--r-md);color:var(--muted);cursor:pointer;transition:color var(--dur) var(--ease), background var(--dur) var(--ease);background:0 0;border:0;place-items:center;padding:0;display:inline-grid}.theme-toggle[data-astro-cid-l6lhmie6]:hover{color:var(--text);background:var(--hover-bg)}.glyph[data-astro-cid-l6lhmie6]{grid-area:1/1;display:none}html:not([data-theme-pref]) .glyph-system[data-astro-cid-l6lhmie6],html[data-theme-pref=system] .glyph-system[data-astro-cid-l6lhmie6],html[data-theme-pref=dark] .glyph-dark[data-astro-cid-l6lhmie6],html[data-theme-pref=light] .glyph-light[data-astro-cid-l6lhmie6]{animation:rise var(--dur) var(--ease);display:grid}@media (pointer:coarse){.theme-toggle[data-astro-cid-l6lhmie6]{width:var(--target);height:var(--target)}}.site-header[data-astro-cid-fzpbxy5g]{z-index:30;border-bottom:1px solid var(--stroke);background:var(--bg);position:sticky;top:0}@supports (backdrop-filter:blur(1px)){.site-header[data-astro-cid-fzpbxy5g]{background:var(--glass-bg);-webkit-backdrop-filter:blur(12px)saturate(1.4)}}.inner[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--s-4);width:min(var(--page-max), 100% - 2 * var(--gutter));height:var(--header-h);margin-inline:auto;display:flex}.brand[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--s-2);min-height:var(--target);flex:none;display:inline-flex}.name[data-astro-cid-fzpbxy5g]{font-size:var(--fs-lg);letter-spacing:var(--track-tight);font-weight:600}.version[data-astro-cid-fzpbxy5g]{height:20px;padding:0 var(--s-2);border:1px solid var(--stroke);border-radius:var(--r-full);color:var(--faint);font-family:var(--mono);font-size:var(--fs-xs);align-items:center;display:inline-flex}nav[data-astro-cid-fzpbxy5g]{flex:1;min-width:0}ul[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--s-1);margin:0;padding:0;list-style:none;display:flex}nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{height:var(--control-h);padding:0 var(--s-3);border-radius:var(--r-md);color:var(--muted);font-size:var(--fs-base);transition:color var(--dur) var(--ease), background var(--dur) var(--ease);align-items:center;font-weight:500;display:inline-flex}nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]:hover,nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g][aria-current=page]{color:var(--text)}nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]:hover{background:var(--hover-bg)}.actions[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--s-1);flex:none;display:flex}.star[data-astro-cid-fzpbxy5g]{align-items:center;gap:var(--s-2);height:var(--control-h);padding:0 var(--s-3);margin-right:var(--s-1);border:1px solid var(--stroke);border-radius:var(--r-md);color:var(--text);font-size:var(--fs-sm);transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease);font-weight:500;display:inline-flex}.star[data-astro-cid-fzpbxy5g]:hover{background:var(--hover-bg);border-color:var(--stroke-strong)}@media (width<=720px){.hide-sm[data-astro-cid-fzpbxy5g],.version[data-astro-cid-fzpbxy5g],.star-label[data-astro-cid-fzpbxy5g]{display:none}.inner[data-astro-cid-fzpbxy5g]{gap:var(--s-2)}nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g]{padding:0 var(--s-2)}.star[data-astro-cid-fzpbxy5g]{padding:0 var(--s-2);margin-right:0}}@media (width<=380px){.name[data-astro-cid-fzpbxy5g]{display:none}}@media (pointer:coarse){nav[data-astro-cid-fzpbxy5g] a[data-astro-cid-fzpbxy5g],.star[data-astro-cid-fzpbxy5g]{height:var(--target)}}.kofi{align-items:center;gap:var(--s-2);min-height:44px;padding:0 var(--s-4);border:1px solid var(--stroke);border-radius:var(--r-md);color:var(--text);font:inherit;font-size:var(--fs-base);cursor:pointer;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease);background:0 0;font-weight:500;text-decoration:none;display:inline-flex}.kofi:hover{background:var(--hover-bg);border-color:var(--stroke-strong);color:var(--text)}.kofi-mark{flex:none}.kofi-overlay{z-index:50;background:var(--scrim);animation:kofi-fade-in var(--dur) var(--ease);justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.kofi-overlay[data-state=closed]{animation:kofi-fade-out var(--dur) var(--ease) forwards}.kofi-overlay[hidden]{display:none}.kofi-dialog{border:1px solid var(--stroke);border-radius:var(--r-xl) var(--r-xl) 0 0;background:var(--surface-1);width:100%;max-height:92dvh;box-shadow:var(--e-3), var(--hairline);animation:kofi-rise var(--dur) var(--ease);flex-direction:column;display:flex;overflow:hidden}.kofi-dialog[data-state=closed]{animation:kofi-sink var(--dur) var(--ease) forwards}.kofi-dialog-head{justify-content:space-between;align-items:center;gap:var(--s-3);min-height:var(--topbar-h);padding:0 var(--s-2) 0 var(--s-4);border-bottom:1px solid var(--stroke);display:flex}.kofi-dialog-head h3{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--fs-base);margin:0;font-weight:600;overflow:hidden}.kofi-dialog-close{border-radius:var(--r-md);width:44px;height:44px;color:var(--muted);cursor:pointer;transition:color var(--dur) var(--ease), background var(--dur) var(--ease);background:0 0;border:0;flex:none;place-items:center;padding:0;display:grid}.kofi-dialog-close:hover{color:var(--text);background:var(--hover-bg)}.kofi-dialog-body{background:var(--surface-2);flex:1;min-height:0;position:relative;overflow-y:auto}.kofi-frame{width:100%;padding:var(--s-1);opacity:0;pointer-events:none;border:0;position:absolute;inset:0}.kofi-frame.is-ready{opacity:1;pointer-events:auto;display:block;position:static}.kofi-dialog-foot{padding:var(--s-3) var(--s-4);padding-bottom:max(var(--s-3), env(safe-area-inset-bottom));border-top:1px solid var(--stroke)}.kofi-dialog-foot[hidden]{display:none}.kofi-dialog-foot a{align-items:center;gap:var(--s-2);min-height:44px;font-size:var(--fs-sm);color:var(--muted);text-decoration:none;display:inline-flex}.kofi-dialog-foot a:hover{color:var(--text)}.kofi-skeleton{padding:var(--s-6)}.kofi-skeleton-bars{gap:var(--s-4);flex-direction:column;animation:2s ease-in-out infinite kofi-pulse;display:flex}.kofi-bar{background:var(--surface-3);border-radius:var(--r-md)}.kofi-bar-avatar{border-radius:var(--r-full);width:64px;height:64px;margin:0 auto}.kofi-bar-title{border-radius:var(--r-sm);width:192px;height:16px;margin:0 auto}.kofi-bar-pill{border-radius:var(--r-full);height:44px}.kofi-bar-row{height:44px}.kofi-bar-note{height:96px}.kofi-bar-cta{border-radius:var(--r-full);background:var(--stroke-strong);height:48px}.kofi-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.kofi-unavailable{align-items:center;gap:var(--s-3);padding:var(--s-6);text-align:center;flex-direction:column;display:flex}.kofi-unavailable-icon{color:var(--faint)}.kofi-unavailable h4{font-size:var(--fs-chat);margin:0;font-weight:600}.kofi-unavailable p{max-width:24rem;font-size:var(--fs-base);color:var(--muted);margin:0}.kofi-unavailable-actions{gap:var(--s-2);padding-top:var(--s-1);flex-direction:column-reverse;width:100%;display:flex}.kofi-btn{justify-content:center;align-items:center;gap:var(--s-2);width:100%;min-height:44px;padding:0 var(--s-4);border-radius:var(--r-md);font:inherit;font-size:var(--fs-base);cursor:pointer;transition:background var(--dur) var(--ease), border-color var(--dur) var(--ease);font-weight:500;text-decoration:none;display:inline-flex}.kofi-btn-ghost{border:1px solid var(--stroke);color:var(--text);background:0 0}.kofi-btn-ghost:hover{background:var(--hover-bg)}.kofi-btn-primary{border:1px solid var(--btn);background:var(--btn);color:var(--btn-fg)}.kofi-btn-primary:hover{background:var(--btn-hover);border-color:var(--btn-hover);color:var(--btn-fg)}@media (width>=640px){.kofi-overlay{padding:var(--s-4);align-items:center}.kofi-dialog{border-radius:var(--r-xl);max-width:512px;max-height:min(90dvh,90vh)}.kofi-unavailable-actions{flex-direction:row;width:auto}.kofi-btn{width:auto}}@keyframes kofi-fade-in{0%{opacity:0}}@keyframes kofi-fade-out{to{opacity:0}}@keyframes kofi-rise{0%{opacity:0;transform:translateY(8px)scale(.98)}}@keyframes kofi-sink{to{opacity:0;transform:translateY(8px)scale(.98)}}@keyframes kofi-pulse{50%{opacity:.5}}@media (prefers-reduced-motion:reduce){.kofi-overlay,.kofi-overlay[data-state=closed],.kofi-dialog,.kofi-dialog[data-state=closed],.kofi-skeleton-bars{animation:none}}.site-footer[data-astro-cid-nns7i3if]{border-top:1px solid var(--stroke);background:var(--surface-1)}.inner[data-astro-cid-nns7i3if],.base[data-astro-cid-nns7i3if]{width:min(var(--page-max), 100% - 2 * var(--gutter));margin-inline:auto}.inner[data-astro-cid-nns7i3if]{gap:var(--s-7);padding-block:var(--s-8);grid-template-columns:minmax(0,2fr) repeat(2,minmax(0,1fr));display:grid}.about[data-astro-cid-nns7i3if]{align-content:start;justify-items:start;gap:var(--s-4);display:grid}.brand[data-astro-cid-nns7i3if]{align-items:center;gap:var(--s-2);font-size:var(--fs-chat);font-weight:600;display:inline-flex}.about[data-astro-cid-nns7i3if] p[data-astro-cid-nns7i3if]{max-width:22rem;color:var(--muted);font-size:var(--fs-base)}h2[data-astro-cid-nns7i3if]{margin-bottom:var(--s-3);color:var(--faint);font-size:var(--fs-xs);letter-spacing:.06em;text-transform:uppercase;font-weight:600}ul[data-astro-cid-nns7i3if]{gap:var(--s-1);margin:0;padding:0;list-style:none;display:grid}nav[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]{min-height:32px;color:var(--muted);font-size:var(--fs-base);transition:color var(--dur) var(--ease);align-items:center;display:inline-flex}nav[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if]:hover{color:var(--text)}.base[data-astro-cid-nns7i3if]{justify-content:space-between;gap:var(--s-2) var(--s-6);padding-block:var(--s-4);border-top:1px solid var(--stroke);font-size:var(--fs-sm);flex-wrap:wrap;display:flex}.copy[data-astro-cid-nns7i3if]{color:var(--muted);font-weight:500}.copy[data-astro-cid-nns7i3if]:hover{color:var(--text)}@media (width<=720px){.inner[data-astro-cid-nns7i3if]{grid-template-columns:repeat(2,minmax(0,1fr))}.about[data-astro-cid-nns7i3if]{grid-column:1/-1}}@media (pointer:coarse){nav[data-astro-cid-nns7i3if] a[data-astro-cid-nns7i3if],.brand[data-astro-cid-nns7i3if],.copy[data-astro-cid-nns7i3if]{min-height:var(--target)}.copy[data-astro-cid-nns7i3if]{align-items:center;margin-block:-12px;display:inline-flex}}
