:root{color-scheme:light;--bg-top: #eaf4f7;--bg-bottom: #f4ece0;--panel: #ffffff;--panel-2: #f6f9fa;--panel-top: #ffffff;--chip-top: #ffffff;--chip-bottom: #eef1f3;--code-bg: #eef1f3;--footer-glow: rgba(255, 255, 255, .6);--line: rgba(20, 45, 55, .13);--ink: #33434c;--ink-soft: #5d6b73;--ink-faint: #8a969d;--link: #15808f;--teal: #1f9fb0;--teal-light: #46c4d3;--teal-dark: #15808f;--orange: #ff8a3d;--orange-light: #ffb265;--orange-dark: #f4711f;--green: #4fae6b;--green-light: #75c98d;--green-dark: #3c9457;--blurple: #5865f2;--blurple-light: #7c86f7;--blurple-dark: #4450d8;--patreon: #f96854;--patreon-light: #ff8a7a;--patreon-dark: #e24f3c;--gold: #f3b23c;--gold-dark: #d8920f;--radius: 14px;--radius-sm: 9px;--shadow: 0 8px 22px rgba(35, 55, 65, .14);--shadow-sm: 0 3px 9px rgba(35, 55, 65, .14);--maxw: 1080px;--font-body: "Open Sans", "Segoe UI", system-ui, -apple-system, sans-serif;--font-display: "Lobster", "Comic Sans MS", "Brush Script MT", cursive}:root[data-theme=dark]{color-scheme:dark;--bg-top: #0f171c;--bg-bottom: #090f13;--panel: #151e24;--panel-2: #1b262d;--panel-top: #1f2b33;--chip-top: #202c34;--chip-bottom: #161f25;--code-bg: #10171c;--footer-glow: rgba(120, 200, 220, .06);--line: rgba(150, 180, 195, .16);--ink: #e8eef1;--ink-soft: #aab8c0;--ink-faint: #7d8b93;--link: #4fc6d6;--teal-dark: #2fa6b6;--shadow: 0 12px 28px rgba(0, 0, 0, .55);--shadow-sm: 0 3px 11px rgba(0, 0, 0, .5)}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}body{margin:0;min-height:100vh;color:var(--ink);font-family:var(--font-body);font-size:16.5px;line-height:1.62;background-color:var(--bg-bottom);background-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='140'%20height='140'%3E%3Cfilter%20id='n'%3E%3CfeTurbulence%20type='fractalNoise'%20baseFrequency='0.9'%20numOctaves='2'%20stitchTiles='stitch'/%3E%3C/filter%3E%3Crect%20width='100%25'%20height='100%25'%20filter='url(%23n)'%20opacity='0.035'/%3E%3C/svg%3E"),linear-gradient(180deg,var(--bg-top) 0%,var(--bg-bottom) 62%);background-attachment:fixed;transition:background-color .25s ease,color .25s ease}img{max-width:100%;height:auto;display:block}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0 0 .5em;line-height:1.2;font-weight:800;letter-spacing:-.01em;color:var(--ink)}h1{font-size:clamp(1.9rem,4.5vw,2.9rem)}h2{font-size:1.55rem}h3{font-size:1.18rem}p{margin:0 0 1rem}.display{font-family:var(--font-display);font-weight:400;letter-spacing:0}.eyebrow{display:inline-block;font-size:.74rem;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--link);margin:0 0 .4rem}.muted{color:var(--ink-soft)}.tiny{font-size:.82rem}.wrap{max-width:var(--maxw);margin:0 auto;padding:0 20px}.section{padding:2.6rem 0}.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.2rem}.section-head h2{margin:0}.stack>*+*{margin-top:1rem}.grid{display:grid;gap:1.2rem}.grid--projects{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.grid--2{grid-template-columns:repeat(auto-fit,minmax(290px,1fr))}.panel{position:relative;background:var(--panel);background-image:linear-gradient(to bottom,var(--panel-top),var(--panel-2));border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.3rem 1.4rem}.panel--lg{padding:1.9rem 2rem}.gloss{position:relative;color:#fff;background-image:linear-gradient(to bottom,#ffffff52,#ffffff0d 48%,#00000012),linear-gradient(to bottom,var(--accent, var(--teal)),color-mix(in srgb,var(--accent, var(--teal)) 68%,#0a1418));text-shadow:0 -1px 0 rgba(0,0,0,.28);box-shadow:inset 0 1px #ffffff73}.btn{--b1: var(--teal-light);--b2: var(--teal-dark);display:inline-flex;align-items:center;justify-content:center;gap:.5em;padding:.62em 1.15em;font-family:var(--font-body);font-weight:700;font-size:.95rem;line-height:1;color:#fff;text-decoration:none;white-space:nowrap;border-radius:var(--radius-sm);border:1px solid rgba(0,0,0,.16);background-image:linear-gradient(to bottom,var(--b1),var(--b2));box-shadow:inset 0 1px #ffffff80,inset 0 -1px #0000001f,0 2px 5px #1428322e;text-shadow:0 -1px 0 rgba(0,0,0,.22);cursor:pointer;transition:filter .12s ease,transform .04s ease,box-shadow .12s ease}.btn:hover{filter:brightness(1.07) saturate(1.04);text-decoration:none}.btn:active{transform:translateY(1px);box-shadow:inset 0 2px 5px #00000040}.btn:focus-visible{outline:3px solid rgba(31,159,176,.5);outline-offset:2px}.btn--primary{--b1: var(--teal-light);--b2: var(--teal-dark)}.btn--accent{--b1: var(--orange-light);--b2: var(--orange-dark)}.btn--green{--b1: var(--green-light);--b2: var(--green-dark)}.btn--discord{--b1: var(--blurple-light);--b2: var(--blurple-dark)}.btn--patreon{--b1: var(--patreon-light);--b2: var(--patreon-dark)}.btn--gold{--b1: #ffd97a;--b2: var(--gold-dark);color:#5b3d06;text-shadow:0 1px 0 rgba(255,255,255,.35)}.btn--ghost{--b1: var(--chip-top);--b2: var(--chip-bottom);color:var(--ink);text-shadow:none;border-color:var(--line)}.btn--lg{padding:.8em 1.5em;font-size:1.05rem}.btn--sm{padding:.45em .8em;font-size:.82rem}.btn--block{width:100%}.btn.is-disabled,.btn[aria-disabled=true]{filter:grayscale(.7);opacity:.55;pointer-events:none;cursor:default;box-shadow:inset 0 1px #ffffff4d}.pill{display:inline-block;padding:.2em .65em;border-radius:999px;font-size:.74rem;font-weight:700;color:var(--ink-soft);background-image:linear-gradient(to bottom,var(--chip-top),var(--chip-bottom));border:1px solid var(--line);box-shadow:inset 0 1px #ffffff80}.pill-row{display:flex;flex-wrap:wrap;gap:.4rem}.badge{display:inline-flex;align-items:center;gap:.4em;padding:.25em .7em;border-radius:999px;font-size:.74rem;font-weight:800;letter-spacing:.02em;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.22);background-image:linear-gradient(to bottom,var(--accent, var(--teal)),color-mix(in srgb,var(--accent, var(--teal)) 70%,#000));box-shadow:inset 0 1px #fff6,var(--shadow-sm)}.status{display:inline-flex;align-items:center;gap:.45em;font-size:.78rem;font-weight:700;color:var(--ink-soft)}.status:before{content:"";width:.6em;height:.6em;border-radius:999px;background:var(--ink-faint);box-shadow:0 0 0 3px color-mix(in srgb,var(--ink-faint) 22%,transparent)}.status--live{color:var(--green-dark)}.status--live:before{background:#36c46a;box-shadow:0 0 0 3px #36c46a38}.status--beta:before,.status--in-development:before{background:var(--orange);box-shadow:0 0 0 3px #ff8a3d38}.status--released:before{background:var(--teal);box-shadow:0 0 0 3px #1f9fb038}.ribbon-wrap{position:absolute;top:-1px;right:-1px;width:96px;height:96px;overflow:hidden;pointer-events:none;border-top-right-radius:var(--radius);z-index:3}.ribbon{position:absolute;top:15px;right:-28px;width:135px;text-align:center;transform:rotate(45deg);font-size:.66rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#fff;padding:.3em 0;background-image:linear-gradient(to bottom,var(--gold),var(--gold-dark));box-shadow:0 2px 4px #00000047;text-shadow:0 -1px 0 rgba(0,0,0,.28)}.prose{font-size:1.02rem}.prose h2{margin-top:1.6em;font-size:1.35rem}.prose h3{margin-top:1.3em}.prose ul,.prose ol{margin:0 0 1rem;padding-left:1.3rem}.prose li{margin:.3em 0}.prose strong{color:var(--ink)}.prose code{font-family:Consolas,SF Mono,ui-monospace,monospace;font-size:.9em;background:var(--code-bg);border:1px solid var(--line);border-radius:5px;padding:.08em .4em}.prose blockquote{margin:1rem 0;padding:.6rem 1rem;border-left:4px solid var(--teal-light);background:var(--panel-2);border-radius:0 var(--radius-sm) var(--radius-sm) 0;color:var(--ink-soft)}.skip-link{position:absolute;left:-999px;top:0;background:var(--panel);color:var(--ink);border:1px solid var(--line);padding:.6rem 1rem;border-radius:0 0 var(--radius-sm) 0;z-index:100}.skip-link:focus{left:0}hr{border:none;border-top:1px solid var(--line);margin:2rem 0}.theme-toggle{position:fixed;right:clamp(.9rem,2.5vw,1.4rem);bottom:clamp(.9rem,2.5vw,1.4rem);z-index:60;width:48px;height:48px;display:grid;place-items:center;border-radius:999px;color:#fff;border:1px solid rgba(0,0,0,.2);background-image:linear-gradient(to bottom,#ffffff52,#ffffff0d 50%,#00000014),linear-gradient(to bottom,var(--teal-light),var(--teal-dark));box-shadow:inset 0 1px #ffffff80,var(--shadow);cursor:pointer;transition:transform .12s ease,filter .12s ease,box-shadow .12s ease}.theme-toggle:hover{filter:brightness(1.07) saturate(1.03);transform:translateY(-2px)}.theme-toggle:active{transform:translateY(0);box-shadow:inset 0 2px 5px #00000040}.theme-toggle:focus-visible{outline:3px solid rgba(31,159,176,.55);outline-offset:3px}.theme-toggle__icon{width:22px;height:22px;filter:drop-shadow(0 -1px 0 rgba(0,0,0,.25))}.theme-toggle__sun{display:none}.theme-toggle__moon{display:block}:root[data-theme=dark] .theme-toggle__sun{display:block}:root[data-theme=dark] .theme-toggle__moon{display:none}@media(max-width:560px){body{font-size:16px}.section{padding:2rem 0}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}.hd[data-astro-cid-ctg3m53h]{position:sticky;top:0;z-index:50;color:#fff;background-image:linear-gradient(to bottom,#ffffff47,#ffffff0a 50%,#00000014),linear-gradient(to bottom,var(--teal-light),var(--teal-dark));border-bottom:1px solid rgba(0,0,0,.22);box-shadow:inset 0 1px #ffffff80,0 3px 10px #14323c40}.hd__inner[data-astro-cid-ctg3m53h]{display:flex;align-items:center;justify-content:space-between;gap:1rem;min-height:58px}.brand[data-astro-cid-ctg3m53h]{display:inline-flex;align-items:center;gap:.5rem;color:#fff;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,.3)}.brand[data-astro-cid-ctg3m53h]:hover{text-decoration:none;filter:brightness(1.05)}.brand__mark[data-astro-cid-ctg3m53h]{font-size:1.1rem;opacity:.9}.brand__name[data-astro-cid-ctg3m53h]{font-size:1.7rem;line-height:1}.nav[data-astro-cid-ctg3m53h]{position:relative}.nav__toggle[data-astro-cid-ctg3m53h]{display:none;width:42px;height:36px;border-radius:var(--radius-sm);border:1px solid rgba(0,0,0,.2);background-image:linear-gradient(to bottom,#ffffff40,#00000014);cursor:pointer;list-style:none;flex-direction:column;align-items:center;justify-content:center;gap:4px}.nav__toggle[data-astro-cid-ctg3m53h]::-webkit-details-marker{display:none}.nav__toggle[data-astro-cid-ctg3m53h] span[data-astro-cid-ctg3m53h]{display:block;width:18px;height:2px;background:#fff;border-radius:2px;box-shadow:0 -1px #00000040}.nav__panel[data-astro-cid-ctg3m53h] ul[data-astro-cid-ctg3m53h]{display:flex;align-items:center;gap:.3rem;list-style:none;margin:0;padding:0}.nav__link[data-astro-cid-ctg3m53h]{display:inline-block;padding:.45rem .8rem;border-radius:var(--radius-sm);color:#fffffff0;font-weight:700;font-size:.95rem;text-decoration:none;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.nav__link[data-astro-cid-ctg3m53h]:hover{text-decoration:none;background:#ffffff29}.nav__link[data-astro-cid-ctg3m53h].is-active{background:#00000029;box-shadow:inset 0 1px 3px #00000047}.nav__support[data-astro-cid-ctg3m53h]{margin-left:.4rem}@media(max-width:740px){.nav__toggle[data-astro-cid-ctg3m53h]{display:flex}.nav__panel[data-astro-cid-ctg3m53h]{position:absolute;right:0;top:calc(100% + 8px);min-width:210px;padding:.5rem;border-radius:var(--radius);background-image:linear-gradient(to bottom,var(--panel-top),var(--panel-2));border:1px solid var(--line);box-shadow:var(--shadow)}.nav[data-astro-cid-ctg3m53h][open] .nav__panel[data-astro-cid-ctg3m53h]{display:block}.nav[data-astro-cid-ctg3m53h]:not([open]) .nav__panel[data-astro-cid-ctg3m53h]{display:none}.nav__panel[data-astro-cid-ctg3m53h] ul[data-astro-cid-ctg3m53h]{flex-direction:column;align-items:stretch;gap:.15rem}.nav__link[data-astro-cid-ctg3m53h]{color:var(--ink);text-shadow:none}.nav__link[data-astro-cid-ctg3m53h]:hover{background:var(--panel-2)}.nav__link[data-astro-cid-ctg3m53h].is-active{background:color-mix(in srgb,var(--teal) 18%,var(--panel));box-shadow:none;color:var(--link)}.nav__support[data-astro-cid-ctg3m53h]{margin:.35rem 0 0}.nav__support[data-astro-cid-ctg3m53h] .btn[data-astro-cid-ctg3m53h]{width:100%}}.socials[data-astro-cid-zamss57n]{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}.social[data-astro-cid-zamss57n]{display:inline-flex;align-items:center;gap:.55rem;color:var(--ink-soft);text-decoration:none;transition:filter .12s ease,transform .04s ease}.social[data-astro-cid-zamss57n] svg[data-astro-cid-zamss57n]{width:20px;height:20px;fill:currentColor}.socials--round[data-astro-cid-zamss57n] .social[data-astro-cid-zamss57n]{width:40px;height:40px;justify-content:center;border-radius:999px;color:var(--ink);border:1px solid var(--line);background-image:linear-gradient(to bottom,var(--chip-top),var(--chip-bottom));box-shadow:inset 0 1px #ffffff80,var(--shadow-sm)}.socials--round[data-astro-cid-zamss57n] .social[data-astro-cid-zamss57n]:hover{filter:brightness(1.03);transform:translateY(-1px);color:var(--link)}.socials--labeled[data-astro-cid-zamss57n] .social[data-astro-cid-zamss57n]{font-weight:700}.socials--labeled[data-astro-cid-zamss57n] .social[data-astro-cid-zamss57n]:hover{color:var(--link)}.ft[data-astro-cid-gcn2mc3v]{margin-top:3rem;color:var(--ink);border-top:1px solid var(--line);background-image:linear-gradient(to bottom,var(--footer-glow),transparent)}.ft__inner[data-astro-cid-gcn2mc3v]{display:grid;grid-template-columns:1.6fr 1fr 1fr;gap:1.5rem;padding:2.2rem 20px 1.4rem}.ft__name[data-astro-cid-gcn2mc3v]{font-size:1.5rem}.ft__brand[data-astro-cid-gcn2mc3v] p[data-astro-cid-gcn2mc3v]{margin:.2rem 0 .9rem;max-width:32ch}.ft__h[data-astro-cid-gcn2mc3v]{font-size:.78rem;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);margin:0 0 .6rem}.ft__list[data-astro-cid-gcn2mc3v]{list-style:none;margin:0;padding:0;display:grid;gap:.35rem}.ft__list[data-astro-cid-gcn2mc3v] a[data-astro-cid-gcn2mc3v]{color:var(--ink-soft);font-weight:600}.ft__list[data-astro-cid-gcn2mc3v] a[data-astro-cid-gcn2mc3v]:hover{color:var(--link)}.ft__base[data-astro-cid-gcn2mc3v]{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:.9rem 20px 1.6rem;border-top:1px solid var(--line);font-size:.85rem;color:var(--ink-soft)}@media(max-width:640px){.ft__inner[data-astro-cid-gcn2mc3v]{grid-template-columns:1fr 1fr}.ft__brand[data-astro-cid-gcn2mc3v]{grid-column:1 / -1}}
