@font-face{font-family:Geist;src:url(/fonts/GeistSans-Variable.woff2)format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:GeistMono;src:url(/fonts/GeistMono-Variable.woff2)format("woff2");font-weight:100 900;font-display:swap}@font-face{font-family:GeistPixel;src:url(/fonts/GeistPixel.woff2)format("woff2");font-weight:400;font-display:swap}:root{--bg:#fcfcfd;--bg-soft:#f4f4f8;--surface:#fff;--ink:#15151e;--ink-2:#4b4b58;--ink-3:#797986;--line:#e3e3e8;--line-strong:#cdcdd5;--primary:#5048e5;--primary-600:#372fda;--primary-soft:#edecfe;--violet:#895af6;--teal:#23a997;--font-sans:"Geist", system-ui, -apple-system, sans-serif;--font-mono:"GeistMono", ui-monospace, monospace;--font-pixel:"GeistPixel", "GeistMono", monospace;--fs-xs:.6875rem;--fs-sm:.8125rem;--fs-base:1rem;--fs-lg:clamp(1.05rem, .95rem + .4vw, 1.25rem);--fs-h2:clamp(2rem, 1.4rem + 2.6vw, 3.25rem);--fs-hero:clamp(3.25rem, 1.5rem + 8vw, 8rem);--container:80rem;--gutter:clamp(1.25rem, 4vw, 2.5rem);--radius-sm:.5rem;--radius:.875rem;--radius-lg:1.25rem;--radius-pill:999px;--shadow-sm:0 1px 2px #2424420f;--shadow:0 8px 30px -12px #1f1f472e;--shadow-primary:0 12px 32px -10px #5048e573;--ease-out:cubic-bezier(.22, 1, .36, 1);--nav-h:4.5rem}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;scroll-padding-top:var(--nav-h)}body{font-family:var(--font-sans);font-size:var(--fs-base);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.6;overflow-x:hidden}img,svg,canvas,video{max-width:100%;display:block}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}a{color:inherit;text-decoration:none}::selection{background:#5048e52e}.container{width:100%;max-width:var(--container);padding-inline:var(--gutter);margin-inline:auto}.section{padding-block:clamp(4.5rem,10vw,8rem);position:relative}.font-pixel{font-family:var(--font-pixel);font-weight:400}.font-mono{font-family:var(--font-mono)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.eyebrow{font-family:var(--font-pixel);font-size:var(--fs-xs);letter-spacing:.2em;text-transform:uppercase;color:var(--primary);margin-bottom:1rem;display:inline-block}.h2{font-size:var(--fs-h2);letter-spacing:-.03em;font-weight:700;line-height:1.08}.dot-grid{background-image:radial-gradient(circle,#29293d12 1px,#0000 1px);background-size:28px 28px}.btn{--btn-bg:var(--primary);border-radius:var(--radius-pill);background:var(--btn-bg);color:#fff;height:3.25rem;box-shadow:var(--shadow-primary);transition:transform .35s var(--ease-out), background-color .25s, border-color .25s, color .25s, box-shadow .35s var(--ease-out);will-change:transform;border:1.5px solid #0000;justify-content:center;align-items:center;gap:.6rem;padding-inline:1.75rem;font-size:.95rem;font-weight:600;display:inline-flex}.btn:hover{background:var(--primary-600);transform:translateY(-2px);box-shadow:0 18px 40px -12px #5048e58c}.btn:active{transform:translateY(0)scale(.98)}.btn svg{width:1.1em;height:1.1em;transition:transform .35s var(--ease-out)}.btn:hover svg{transform:translate(3px)}.btn:focus-visible,.icon-btn:focus-visible,a:focus-visible{outline:2px solid var(--primary);outline-offset:3px}.btn-outline{border-color:var(--primary);color:var(--primary);box-shadow:none;background:0 0}.btn-outline:hover{background:color-mix(in srgb, var(--primary) 8%, transparent);border-color:var(--primary-600);color:var(--primary-600);box-shadow:0 10px 24px -10px #5048e54d}.btn-sm{height:2.4rem;font-size:var(--fs-sm);box-shadow:none;padding-inline:1.1rem;font-weight:500}.icon-btn{border-radius:var(--radius-pill);border:1px solid var(--line);width:2.4rem;height:2.4rem;color:var(--ink-2);justify-content:center;align-items:center;transition:color .2s,border-color .2s,background-color .2s;display:inline-flex}.icon-btn:hover{color:var(--primary);background:var(--primary-soft);border-color:#5048e559}.icon-btn svg{width:1rem;height:1rem}.js [data-reveal]{opacity:0;transform:translateY(24px)}@media (prefers-reduced-motion:reduce){.js [data-reveal]{opacity:1!important;transform:none!important}*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
