:root{--fp-black: #0c0714;--fp-navy: #130550;--fp-purple: #45108a;--fp-pink: #b4299a;--fp-blue: #4153bf;--fp-teal: #3796b4;--fp-orange: #ff7e17;--fp-red: #ef2619;--bg: #0a0612;--bg-raised: #110b1d;--surface: #150e24;--surface-2: #1c1430;--line: rgb(232 224 255 / .08);--line-strong: rgb(232 224 255 / .16);--text: #f4f1fb;--text-2: #bdb4d1;--text-3: #8a809f;--violet: #9b6bff;--magenta: #e45bc8;--teal: #5cc6e0;--orange: var(--fp-orange);--spectrum: linear-gradient(100deg, #9b6bff 0%, #e45bc8 48%, #ff7e17 100%);--paper: #f6f3fb;--paper-2: #ece6f6;--ink: #0c0714;--ink-2: #4a4060;--ink-3: #7a7090;--paper-line: rgb(12 7 20 / .1);--font-sans: "Geist", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-serif: "Instrument Serif", ui-serif, Georgia, serif;--font-mono: "Geist Mono", ui-monospace, "SF Mono", Menlo, monospace;--step--1: clamp(.8rem, .78rem + .1vw, .86rem);--step-0: clamp(1rem, .97rem + .15vw, 1.08rem);--step-1: clamp(1.15rem, 1.08rem + .35vw, 1.35rem);--step-2: clamp(1.4rem, 1.25rem + .7vw, 1.85rem);--step-3: clamp(1.8rem, 1.5rem + 1.4vw, 2.7rem);--step-4: clamp(2.3rem, 1.75rem + 2.6vw, 4rem);--step-5: clamp(2.7rem, 1.8rem + 4.2vw, 5.6rem);--gutter: clamp(1rem, .5rem + 2.5vw, 2.5rem);--max: 1240px;--radius: 14px;--radius-lg: 22px;--header-h: 72px;--ease: cubic-bezier(.22, 1, .36, 1);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 16px)}@media(prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--step-0);line-height:1.6;font-feature-settings:"ss01","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden}img,svg,video{display:block;max-width:100%}img{height:auto}input,button,textarea,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}p,h1,h2,h3,h4{overflow-wrap:break-word}h1,h2,h3,h4{font-weight:550;line-height:1.05;letter-spacing:-.035em;text-wrap:balance}p{text-wrap:pretty}::selection{background:var(--fp-pink);color:#fff}:focus-visible{outline:2px solid var(--teal);outline-offset:3px;border-radius:6px}.container{width:min(100% - 2 * var(--gutter),var(--max));margin-inline:auto}.section{padding-block:clamp(4.5rem,3rem + 7vw,9rem);position:relative}.section--tight{padding-block:clamp(3rem,2rem + 4vw,5.5rem)}.stack>*+*{margin-top:var(--space, 1rem)}.paper{background:var(--paper);color:var(--ink);color-scheme:light;--line: var(--paper-line);--line-strong: rgb(12 7 20 / .18);--text: var(--ink);--text-2: var(--ink-2);--text-3: var(--ink-3);--surface: #fff;--surface-2: var(--paper-2)}.eyebrow{display:inline-flex;align-items:center;gap:.6rem;font-family:var(--font-mono);font-size:.75rem;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-2)}.eyebrow:before{content:"";width:7px;height:7px;border-radius:2px;background:var(--spectrum);box-shadow:0 0 12px #e45bc899}.paper .eyebrow:before{box-shadow:none}.display{font-size:var(--step-5);letter-spacing:-.045em;line-height:.98}.h1{font-size:var(--step-4)}.h2{font-size:var(--step-3)}.h3{font-size:var(--step-2);letter-spacing:-.025em;line-height:1.15}.lede{font-size:var(--step-1);color:var(--text-2);line-height:1.5;max-width:38rem}.muted{color:var(--text-2)}.mono{font-family:var(--font-mono)}em,.accent{font-family:var(--font-serif);font-style:italic;font-weight:400;letter-spacing:-.01em;padding-right:.04em}h1 em,h2 em,.display em{background:var(--spectrum);-webkit-background-clip:text;background-clip:text;color:transparent}.paper h1 em,.paper h2 em{background:linear-gradient(100deg,var(--fp-purple),var(--fp-pink) 60%,#d9590a);-webkit-background-clip:text;background-clip:text}.section-head{display:grid;gap:1.1rem;max-width:46rem;margin-bottom:clamp(2.5rem,2rem + 3vw,4.5rem)}.section-head--split{max-width:none;grid-template-columns:1fr;align-items:end}@media(min-width:900px){.section-head--split{grid-template-columns:1.2fr 1fr;gap:3rem}}.btn{--h: 48px;display:inline-flex;align-items:center;justify-content:center;gap:.6rem;height:var(--h);padding-inline:1.35rem;border-radius:999px;font-size:.95rem;font-weight:500;letter-spacing:-.01em;white-space:nowrap;border:1px solid transparent;cursor:pointer;transition:transform .25s var(--ease),background-color .25s,border-color .25s,box-shadow .25s}.btn svg{width:16px;height:16px;transition:transform .3s var(--ease)}.btn:hover svg{transform:translate(3px)}.btn--primary{background:var(--text);color:var(--fp-black)}.btn--primary:hover{box-shadow:0 0 0 4px #9b6bff40,0 10px 40px -10px #e45bc899}.paper .btn--primary{background:var(--fp-black);color:#fff}.btn--ghost{border-color:var(--line-strong);color:var(--text);background:#ffffff05}.btn--ghost:hover{border-color:var(--text-3);background:#ffffff0d}.btn--sm{--h: 40px;padding-inline:1.05rem;font-size:.9rem}.link-arrow{display:inline-flex;align-items:center;gap:.45rem;font-weight:500;color:var(--text);border-bottom:1px solid var(--line-strong);padding-bottom:2px;transition:border-color .2s,gap .3s var(--ease)}.link-arrow:hover{border-color:currentColor;gap:.7rem}.link-arrow svg{width:14px;height:14px}.card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);padding:clamp(1.4rem,1rem + 1.5vw,2rem)}.glow-border{position:relative;isolation:isolate}.glow-border:before{content:"";position:absolute;inset:-1px;border-radius:inherit;padding:1px;z-index:-1;background:radial-gradient(400px circle at var(--mx, 50%) var(--my, 0%),rgb(228 91 200 / .55),transparent 45%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;opacity:0;transition:opacity .35s}.glow-border:hover:before{opacity:1}.chip{display:inline-flex;align-items:center;gap:.45rem;height:28px;padding-inline:.7rem;border-radius:999px;border:1px solid var(--line-strong);font-family:var(--font-mono);font-size:.72rem;letter-spacing:.04em;color:var(--text-2);background:#ffffff05}.dot{width:6px;height:6px;border-radius:50%;background:var(--teal);box-shadow:0 0 10px var(--teal)}.dot--orange{background:var(--orange);box-shadow:0 0 10px var(--orange)}.dot--pink{background:var(--magenta);box-shadow:0 0 10px var(--magenta)}.grid-bg{position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(var(--line) 1px,transparent 1px),linear-gradient(90deg,var(--line) 1px,transparent 1px);background-size:64px 64px;mask-image:radial-gradient(ellipse 70% 60% at 50% 30%,#000 30%,transparent 75%);-webkit-mask-image:radial-gradient(ellipse 70% 60% at 50% 30%,#000 30%,transparent 75%);opacity:.6}@media(prefers-reduced-motion:no-preference){.js [data-reveal]{opacity:0;transform:translateY(18px);transition:opacity .9s var(--ease),transform .9s var(--ease);transition-delay:var(--d, 0s)}.js [data-reveal].is-in{opacity:1;transform:none}}.field{display:grid;gap:.45rem}.field label{font-size:.85rem;color:var(--text-2);font-weight:500}.input{width:100%;min-height:50px;padding:.8rem 1rem;border-radius:12px;background:#ffffff08;border:1px solid var(--line-strong);color:var(--text);transition:border-color .2s,box-shadow .2s,background .2s}.input::placeholder{color:var(--text-3)}.input:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 4px #9b6bff2e;background:#ffffff0d}textarea.input{min-height:150px;resize:vertical}select.input{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' fill='none' stroke='%23bdb4d1' stroke-width='1.5'%3E%3Cpath d='m1 1.5 5 5 5-5'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.5rem}select.input option{background:var(--surface)}.prose{font-size:1.075rem;line-height:1.75;color:var(--text-2);max-width:68ch}.prose>*+*{margin-top:1.25em}.prose h2{font-size:var(--step-2);color:var(--text);margin-top:2.2em;letter-spacing:-.025em;line-height:1.2}.prose h3{font-size:var(--step-1);color:var(--text);margin-top:1.8em;letter-spacing:-.02em;line-height:1.3}.prose h4{font-size:1.05rem;color:var(--text);margin-top:1.6em;letter-spacing:-.01em;line-height:1.35}.prose sup{font-family:var(--font-mono);font-size:.65em;color:var(--magenta);margin-left:.1em}.prose img+em,.prose p>img+em{display:block;margin-top:.6rem;font-size:.9rem;color:var(--text-3);text-align:center}.prose img{margin-inline:auto}.prose a{color:var(--text);text-decoration:underline;text-decoration-color:var(--magenta);text-underline-offset:3px}.prose strong{color:var(--text);font-weight:600}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--magenta)}.prose blockquote{border-left:2px solid;border-image:var(--spectrum) 1;padding:.2em 0 .2em 1.4em;font-family:var(--font-serif);font-style:italic;font-size:1.5em;line-height:1.35;color:var(--text)}.prose code{font-family:var(--font-mono);font-size:.88em;background:var(--surface-2);padding:.15em .4em;border-radius:6px;color:var(--text)}.prose pre{background:var(--surface);border:1px solid var(--line);padding:1.2rem;border-radius:var(--radius);overflow-x:auto}.prose pre code{background:none;padding:0}.prose hr{border:0;height:1px;background:var(--line-strong);margin-block:2.5em}.prose img{border-radius:var(--radius)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.skip-link{position:absolute;left:1rem;top:-100px;z-index:100;background:var(--text);color:var(--bg);padding:.6rem 1rem;border-radius:8px}.skip-link:focus{top:1rem}.phish[data-astro-cid-flaloh7p]{display:flex;align-items:center;justify-content:center;gap:.5rem;flex-wrap:wrap;text-align:center;padding:.55rem var(--gutter);font-size:.8rem;color:var(--text-2);background:linear-gradient(90deg,#45108a80,#b4299a40);border-bottom:1px solid var(--line)}.phish[data-astro-cid-flaloh7p] svg{color:var(--magenta);flex:none}.phish[data-astro-cid-flaloh7p] b[data-astro-cid-flaloh7p]{color:var(--text);font-weight:500}.top[data-astro-cid-flaloh7p]{position:sticky;top:0;z-index:20;height:68px;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-inline:var(--gutter);border-bottom:1px solid var(--line);background:#0a0612d9;backdrop-filter:blur(14px)}.brand[data-astro-cid-flaloh7p]{display:flex;align-items:center;gap:.75rem}.brand[data-astro-cid-flaloh7p] img[data-astro-cid-flaloh7p]{height:32px;width:auto}.chip[data-astro-cid-flaloh7p]{font-size:.7rem}.top-actions[data-astro-cid-flaloh7p]{display:flex;align-items:center;gap:1.25rem}.site-link[data-astro-cid-flaloh7p]{display:none;align-items:center;gap:.3rem;font-size:.9rem;color:var(--text-2)}.site-link[data-astro-cid-flaloh7p]:hover{color:var(--text)}@media(min-width:640px){.site-link[data-astro-cid-flaloh7p]{display:inline-flex}}.shell[data-astro-cid-flaloh7p]{display:grid;min-height:calc(100vh - 104px)}@media(min-width:960px){.shell[data-astro-cid-flaloh7p]{grid-template-columns:250px 1fr}}.side[data-astro-cid-flaloh7p]{border-bottom:1px solid var(--line);overflow-x:auto}.side[data-astro-cid-flaloh7p] ul[data-astro-cid-flaloh7p]{list-style:none;margin:0;padding:.6rem var(--gutter);display:flex;gap:.35rem}.side[data-astro-cid-flaloh7p] a[data-astro-cid-flaloh7p]{display:flex;align-items:center;gap:.6rem;white-space:nowrap;padding:.6rem .85rem;border-radius:10px;font-size:.92rem;color:var(--text-2)}.side[data-astro-cid-flaloh7p] a[data-astro-cid-flaloh7p]:hover{color:var(--text);background:var(--surface)}.side[data-astro-cid-flaloh7p] a[data-astro-cid-flaloh7p].active{color:var(--text);background:var(--surface-2);box-shadow:inset 0 0 0 1px var(--line-strong)}.side[data-astro-cid-flaloh7p] a[data-astro-cid-flaloh7p].active svg{color:var(--magenta)}@media(min-width:960px){.side[data-astro-cid-flaloh7p]{border-bottom:0;border-right:1px solid var(--line);overflow:visible}.side[data-astro-cid-flaloh7p] ul[data-astro-cid-flaloh7p]{position:sticky;top:calc(68px + 1.5rem);flex-direction:column;padding:1.5rem 1rem}}.main[data-astro-cid-flaloh7p]{min-width:0;padding:clamp(2rem,1.5rem + 3vw,4rem) var(--gutter) clamp(3rem,2rem + 4vw,6rem)}.main[data-astro-cid-flaloh7p]>*{max-width:1040px}.foot[data-astro-cid-flaloh7p]{border-top:1px solid var(--line);padding:2rem var(--gutter)}.foot-inner[data-astro-cid-flaloh7p]{display:grid;gap:1.5rem;font-size:.85rem;color:var(--text-2)}@media(min-width:1000px){.foot-inner[data-astro-cid-flaloh7p]{grid-template-columns:auto 1fr auto;gap:3rem;align-items:start}}.foot-brand[data-astro-cid-flaloh7p]{display:grid;gap:.25rem}.foot-brand[data-astro-cid-flaloh7p] strong[data-astro-cid-flaloh7p]{color:var(--text);font-weight:600;font-size:1rem}.foot-marking[data-astro-cid-flaloh7p]{display:grid;gap:.4rem}.foot-marking[data-astro-cid-flaloh7p] a[data-astro-cid-flaloh7p]{color:var(--text);border-bottom:1px solid var(--line-strong);overflow-wrap:anywhere}.foot-marking[data-astro-cid-flaloh7p] a[data-astro-cid-flaloh7p]:hover{border-color:var(--magenta)}.prods[data-astro-cid-flaloh7p]{font-size:.72rem;line-height:1.6;color:var(--text-3)}.foot-links[data-astro-cid-flaloh7p]{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem 1.25rem}.foot-links[data-astro-cid-flaloh7p] a[data-astro-cid-flaloh7p]:hover{color:var(--text)}
