@font-face{font-family:Sora;src:url(/assets/Sora-Variable-Bqpd64dN.ttf)format("truetype");font-weight:100 800;font-display:swap}@font-face{font-family:IBM Plex Mono;src:url(/assets/IBMPlexMono-Regular-C5_jWxVG.ttf)format("truetype");font-weight:400;font-display:swap}:root{--nine-cobalt:#2e4fe8;--nine-cobalt-hover:#233fc4;--nine-ink:#142b29;--nine-mint:#afe8d4;--nine-mist:#eef3f1;--nine-white:#fff;--nine-text-muted:#526762;--nine-border:#cad5d1;--nine-success:#246b50;--nine-error:#a7343c;--nine-font:"Sora", "Avenir Next", ui-sans-serif, system-ui, sans-serif;--nine-mono:"IBM Plex Mono", ui-monospace, monospace;--nine-radius-control:8px;--nine-radius-panel:20px;--nine-focus:0 0 0 3px var(--nine-white), 0 0 0 6px var(--nine-cobalt);--cobalt:#2e4fe8;--cobalt-hover:#233fc4;--ink:#142b29;--mint:#afe8d4;--mist:#eef3f1;--white:#fff;--muted:#526762;--border:#cad5d1;--line:#dde5e2;--success:#246b50;--font:var(--nine-font);--mono:var(--nine-mono);--r-control:8px;--r-panel:20px;--lightningcss-light:initial;--lightningcss-dark: ;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}body{font-family:var(--font);background:var(--white);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-size:16px;font-weight:400;line-height:1.6}a{color:inherit;text-decoration:none}h1,h2,h3,h4{letter-spacing:-.03em;margin:0;font-weight:600;line-height:1.1}p{margin:0}code,pre{font-family:var(--mono)}img,svg{display:block}::selection{background:var(--mint);color:var(--ink)}:focus-visible{box-shadow:var(--nine-focus);border-radius:4px;outline:none}.container{width:min(1200px,100% - 48px);margin:0 auto}.narrow{width:min(820px,100% - 48px);margin:0 auto}.muted{color:var(--muted)}.center{text-align:center}.nav{z-index:50;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--line);background:#ffffffeb;position:sticky;top:0}.nav .container{align-items:center;gap:32px;height:68px;display:flex}.logo{align-items:center;display:flex}.logo img{width:auto;height:32px}.nav-links{color:var(--muted);gap:28px;font-size:15px;font-weight:500;display:flex}.nav-links a:hover{color:var(--ink)}.nav .spacer{flex:1}.nav-cta{align-items:center;gap:8px;display:flex}@media (width<=820px){.nav-links{display:none}}.btn{border-radius:var(--r-control);height:44px;font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--white);color:var(--ink);white-space:nowrap;justify-content:center;align-items:center;gap:8px;padding:0 20px;font-size:15px;font-weight:500;transition:background .15s,border-color .15s;display:inline-flex}.btn:hover{background:var(--mist)}.btn svg{width:17px;height:17px}.btn-primary{background:var(--cobalt);border-color:var(--cobalt);color:var(--white)}.btn-primary:hover{background:var(--cobalt-hover);border-color:var(--cobalt-hover)}.btn-white{background:var(--white);color:var(--ink);border-color:var(--white)}.btn-white:hover{background:var(--mist)}.btn-on-dark{color:var(--white);background:0 0;border-color:#fff6}.btn-on-dark:hover{background:#ffffff1a}.btn-lg{height:52px;padding:0 26px;font-size:16px}.btn-ghost{background:0 0;border-color:#0000}.hero{padding:72px 0 64px}.hero-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:stretch;gap:48px;display:grid}@media (width<=980px){.hero-grid{grid-template-columns:1fr}}.hero-copy{flex-direction:column;justify-content:center;padding:24px 0;display:flex}.kicker{color:var(--muted);font-size:14px;font-weight:500}.hero h1{letter-spacing:-.045em;margin:16px 0 24px;font-size:clamp(48px,7vw,96px);line-height:1.04}.hero .lede{color:var(--muted);max-width:540px;font-size:20px}.hero-ctas{flex-wrap:wrap;gap:12px;margin-top:36px;display:flex}.hero-note{color:var(--muted);flex-wrap:wrap;gap:20px;margin-top:20px;font-size:14px;display:flex}.hero-note span{align-items:center;gap:6px;display:inline-flex}.hero-note svg{width:16px;height:16px;color:var(--success)}.hero-art{border-radius:var(--r-panel);background:var(--cobalt);min-height:540px;color:var(--white);flex-direction:column;justify-content:space-between;padding:28px;display:flex;position:relative;overflow:hidden}.hero-art .art-label{z-index:1;font-size:14px;font-weight:500;line-height:1.4;position:relative}.hero-art .art-foot{z-index:1;justify-content:space-between;font-size:13px;display:flex;position:relative}.hero-art .big-nine{width:360px;color:var(--mint);position:absolute;top:40px;right:-60px}.mock-login{z-index:1;background:var(--white);width:min(340px,100%);color:var(--ink);border-radius:16px;align-self:center;padding:28px;position:relative;box-shadow:0 30px 60px -24px #142b2980}.mock-login .brand{margin-bottom:18px}.mock-login .brand.acme{align-items:center;gap:8px;font-size:16px;font-weight:600;display:flex}.acme-mark{background:var(--ink);width:24px;height:24px;color:var(--white);border-radius:7px;place-items:center;font-size:13px;display:grid}.mock-login h4{letter-spacing:-.02em;font-size:22px}.mock-login .sub{color:var(--muted);margin:4px 0 18px;font-size:14px}.mock-label{margin-bottom:6px;font-size:13px;font-weight:500}.mock-field{border:1px solid var(--border);border-radius:var(--r-control);height:42px;color:var(--muted);align-items:center;margin-bottom:12px;padding:0 12px;font-size:14px;display:flex}.mock-btn{border-radius:var(--r-control);background:var(--cobalt);height:44px;color:var(--white);place-items:center;margin-top:4px;font-size:15px;font-weight:500;display:grid}.mock-or{text-align:center;color:var(--muted);margin:14px 0;font-size:12px}.mock-social{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.mock-social div{border:1px solid var(--border);border-radius:var(--r-control);place-items:center;height:42px;display:grid}.mock-social svg{width:18px;height:18px}@media (width<=520px){.hero-art{min-height:480px}.hero-art .big-nine{width:260px}}section{padding:96px 0}.section-mist{background:var(--mist)}.eyebrow{color:var(--cobalt);margin-bottom:12px;font-size:14px;font-weight:500;display:inline-block}.section-head{max-width:720px;margin-bottom:48px}.section-head.center{margin-left:auto;margin-right:auto}.section-head h2{font-size:clamp(32px,4.4vw,48px)}.section-head p{color:var(--muted);margin-top:16px;font-size:18px}.frameworks{padding:8px 0 24px}.frameworks .row{color:var(--muted);flex-wrap:wrap;justify-content:center;gap:10px 30px;font-size:15px;font-weight:500;display:flex}.frameworks p{text-align:center;color:var(--muted);margin-bottom:16px;font-size:14px}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}@media (width<=980px){.grid-3,.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.grid-3,.grid-2,.grid-4{grid-template-columns:1fr}}.card{background:var(--white);border:1px solid var(--line);border-radius:var(--r-panel);padding:28px}.section-mist .card{border-color:#0000}.card .icon{background:var(--mint);width:44px;height:44px;color:var(--ink);border-radius:12px;place-items:center;margin-bottom:20px;display:grid}.card .icon svg{width:20px;height:20px}.card h3{letter-spacing:-.02em;margin-bottom:8px;font-size:20px}.card p{color:var(--muted);font-size:15px}.card.feature-wide{grid-column:span 2}@media (width<=640px){.card.feature-wide{grid-column:auto}}.tags{flex-wrap:wrap;gap:6px;margin-top:16px;display:flex}.tag{background:var(--mist);color:var(--ink);border-radius:999px;padding:3px 10px;font-size:13px}.messages{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;display:grid}@media (width<=980px){.messages{grid-template-columns:1fr}}.message{border-radius:var(--r-panel);flex-direction:column;justify-content:space-between;gap:24px;min-height:280px;padding:32px;display:flex}.message .num{font-size:14px;font-weight:500}.message h3{letter-spacing:-.03em;font-size:28px}.message p{margin-top:10px;font-size:16px}.message.cobalt{background:var(--cobalt);color:var(--white)}.message.cobalt p{color:#ffffffd9}.message.ink{background:var(--ink);color:var(--white)}.message.ink p{color:#c9d6d2}.message.mint{background:var(--mint);color:var(--ink)}.message.mint p{color:#2c4340}.code-split{grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);align-items:center;gap:48px;display:grid}@media (width<=980px){.code-split{grid-template-columns:1fr}}.steps-list{flex-direction:column;gap:22px;margin-top:32px;display:flex}.steps-list .step{gap:16px;display:flex}.steps-list .num{background:var(--ink);width:32px;height:32px;color:var(--white);border-radius:50%;flex:none;place-items:center;font-size:14px;font-weight:600;display:grid}.steps-list h4{letter-spacing:-.01em;margin-bottom:4px;font-size:17px}.window{border-radius:var(--r-panel);background:var(--ink);color:var(--white);overflow:hidden}.window-bar{border-bottom:1px solid #ffffff24;align-items:center;gap:12px;padding:12px 18px;display:flex}.window-tabs{gap:4px;display:flex}.window-tabs button{color:#a8bbb5;font:inherit;cursor:pointer;background:0 0;border:0;border-radius:6px;padding:6px 10px;font-size:13px;font-weight:500}.window-tabs button.active{color:var(--mint);background:#ffffff1a}.window pre{min-height:340px;margin:0;padding:22px 24px;font-size:13.5px;line-height:1.75;overflow-x:auto}.tok-k{color:var(--mint)}.tok-s{color:#d7dfa9}.tok-c{color:#a8bbb5}.tok-n{color:#f2c46b}.checks{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 32px;margin:0;padding:0;list-style:none;display:grid}.checks li{color:var(--ink);align-items:flex-start;gap:12px;font-size:16px;display:flex}.checks li svg{width:20px;height:20px;color:var(--cobalt);flex:none;margin-top:3px}@media (width<=640px){.checks{grid-template-columns:1fr}}.toggle{background:var(--mist);border-radius:10px;gap:4px;padding:4px;display:inline-flex}.toggle button{color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;gap:8px;padding:8px 16px;font-size:14px;font-weight:500;display:inline-flex}.toggle button.active{background:var(--white);color:var(--ink);box-shadow:0 1px 2px #142b291a}.save{background:var(--mint);color:var(--ink);border-radius:999px;padding:2px 8px;font-size:12px;font-weight:600}.plans{grid-template-columns:repeat(4,minmax(0,1fr));align-items:stretch;gap:16px;display:grid}@media (width<=1100px){.plans{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=640px){.plans{grid-template-columns:1fr}}.plan{border-radius:var(--r-panel);border:1px solid var(--line);background:var(--white);flex-direction:column;gap:18px;padding:28px;display:flex;position:relative}.plan.featured{border:2px solid var(--cobalt)}.plan .ribbon{background:var(--cobalt);color:var(--white);border-radius:999px;padding:4px 12px;font-size:12px;font-weight:500;position:absolute;top:-13px;left:26px}.plan h3{font-size:20px}.plan .price{letter-spacing:-.04em;font-size:44px;font-weight:600;line-height:1}.plan .price small{color:var(--muted);letter-spacing:0;font-size:15px;font-weight:400}.plan ul{flex-direction:column;gap:10px;margin:0;padding:0;font-size:15px;list-style:none;display:flex}.plan li{gap:10px;display:flex}.plan li svg{width:17px;height:17px;color:var(--cobalt);flex:none;margin-top:4px}.compare{border-collapse:collapse;width:100%;font-size:15px}.compare th,.compare td{border-bottom:1px solid var(--line);text-align:left;padding:14px 16px}.compare th{color:var(--muted);font-size:14px;font-weight:500}.compare td:not(:first-child),.compare th:not(:first-child){text-align:center}.compare td svg{width:18px;height:18px;color:var(--cobalt);margin:0 auto}.compare .group td{color:var(--ink);border-bottom-color:var(--border);padding-top:28px;font-weight:600}.faq{flex-direction:column;gap:10px;display:flex}.faq details{border:1px solid var(--line);background:var(--white);border-radius:14px;padding:18px 22px}.faq summary{cursor:pointer;justify-content:space-between;gap:12px;font-size:17px;font-weight:500;list-style:none;display:flex}.faq summary:after{content:"+";color:var(--cobalt);font-size:22px;line-height:1}.faq details[open] summary:after{content:"–"}.faq details p{color:var(--muted);margin-top:12px}.cta{border-radius:var(--r-panel);background:var(--cobalt);color:var(--white);padding:72px 56px;position:relative;overflow:hidden}.cta>*{z-index:1;position:relative}.cta .cta-nine{z-index:0;width:300px;color:var(--mint);position:absolute;top:-70px;right:-40px}.cta h2{max-width:640px;font-size:clamp(36px,5vw,64px)}.cta p{color:#ffffffd9;max-width:520px;margin:16px 0 32px;font-size:18px}@media (width<=640px){.cta{padding:48px 28px}.cta .cta-nine{width:200px}}footer{border-top:1px solid var(--line);color:var(--muted);margin-top:96px;padding:56px 0 40px;font-size:15px}.footer-grid{grid-template-columns:1.5fr repeat(3,1fr);gap:32px;display:grid}.footer-grid h4{color:var(--ink);letter-spacing:0;margin-bottom:14px;font-size:15px}.footer-grid a{padding:4px 0;display:block}.footer-grid a:hover{color:var(--ink)}.footer-logo img{width:auto;height:30px;margin-bottom:14px}.footer-bottom{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:40px;padding-top:24px;font-size:13px;display:flex}@media (width<=760px){.footer-grid{grid-template-columns:1fr 1fr}}.docs{grid-template-columns:240px minmax(0,1fr);gap:56px;padding:48px 0 0;display:grid}.docs-nav{flex-direction:column;align-self:start;gap:2px;font-size:15px;display:flex;position:sticky;top:92px}.docs-nav .label{color:var(--ink);margin:18px 0 8px;font-size:14px;font-weight:600}.docs-nav a{color:var(--muted);border-radius:8px;padding:5px 10px}.docs-nav a:hover{color:var(--ink);background:var(--mist)}.doc{max-width:760px}.doc h1{margin-bottom:16px;font-size:48px}.doc h2{margin:56px 0 14px;padding-top:12px;scroll-margin-top:92px;font-size:28px}.doc h3{margin:28px 0 10px;font-size:20px}.doc p,.doc li{color:#2c4340;font-size:16px}.doc p+p{margin-top:12px}.doc ul,.doc ol{flex-direction:column;gap:6px;padding-left:20px;display:flex}.doc :not(pre)>code{background:var(--mist);color:var(--ink);border-radius:5px;padding:1px 6px;font-size:14px}.doc pre{background:var(--ink);color:var(--white);border-radius:14px;margin:16px 0;padding:18px 22px;font-size:13.5px;line-height:1.7;overflow-x:auto}.doc table{border-collapse:collapse;width:100%;margin:16px 0;font-size:15px}.doc th,.doc td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:10px 12px}.doc th{color:var(--ink);font-weight:600}.callout{background:var(--mint);color:var(--ink);border-radius:14px;margin:18px 0;padding:16px 20px}@media (width<=900px){.docs{grid-template-columns:1fr}.docs-nav{flex-flow:wrap;position:static}.docs-nav .label{width:100%}}.pill{background:var(--mist);color:var(--ink);border-radius:999px;align-self:flex-start;align-items:center;gap:8px;padding:5px 12px 5px 5px;font-size:14px;font-weight:500;display:inline-flex}.pill b{background:var(--cobalt);color:var(--white);border-radius:999px;padding:2px 10px;font-size:12px;font-weight:500}.accent-text{color:var(--cobalt)}.hero h1{margin-top:24px}.hero-art{justify-content:center}.hero-art .big-nine{top:auto;bottom:-70px;right:-50px}.float{z-index:2;background:var(--white);color:var(--ink);border-radius:14px;padding:14px 16px;font-size:13px;animation:6s ease-in-out infinite bob;position:absolute;box-shadow:0 20px 40px -18px #142b2973}.float.a{animation-delay:-2s;top:28px;left:22px}.float.b{background:var(--ink);color:var(--white);top:46%;right:22px}.float.c{animation-delay:-4s;bottom:28px;left:22px}@keyframes bob{50%{transform:translateY(-6px)}}.float .k{color:var(--muted);font-size:12px;font-weight:500}.float .v{letter-spacing:-.02em;font-size:22px;font-weight:600}.float pre{font-size:11.5px;line-height:1.6;font-family:var(--mono);margin:0}@media (width<=1100px){.float.b{display:none}}@media (width<=520px){.float{display:none}}.stats{grid-template-columns:repeat(4,1fr);gap:16px;display:grid}.stats>div{background:var(--mist);border-radius:var(--r-panel);padding:32px 28px}.stats .v{letter-spacing:-.04em;color:var(--cobalt);font-size:44px;font-weight:600;line-height:1.1}.stats .k{color:var(--muted);margin-top:6px;font-size:15px}@media (width<=820px){.stats{grid-template-columns:repeat(2,1fr)}}.hero h1{font-size:clamp(38px,3.9vw,58px)}.hero-art{min-height:620px}.hero-art .mock-login{margin-bottom:96px}.float.b{top:auto;bottom:28px;right:22px}.legal{padding:56px 0 24px}.legal-grid{grid-template-columns:220px minmax(0,720px);align-items:start;gap:24px 64px;display:grid}.legal-head{border-bottom:1px solid var(--line);grid-column:1/-1;margin-bottom:8px;padding-bottom:28px}.legal-head h1{letter-spacing:-.02em;font-size:clamp(34px,5vw,48px);line-height:1.1}.legal-updated{color:var(--muted);margin-top:10px;font-size:15px}.legal-toc{flex-direction:column;gap:2px;font-size:14px;display:flex;position:sticky;top:96px}.legal-toc-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:8px;font-size:12px;font-weight:600}.legal-toc a{color:var(--muted);padding:5px 0;line-height:1.35}.legal-toc a:hover{color:var(--ink)}.legal-body{color:var(--ink);font-size:16.5px;line-height:1.7}.legal-body>:first-child{margin-top:0}.legal-body h2{margin:48px 0 14px;scroll-margin-top:96px;font-size:24px;line-height:1.25}.legal-body h3{margin:28px 0 10px;scroll-margin-top:96px;font-size:18px}.legal-body .anchor{display:none}.legal-body p,.legal-body ul,.legal-body ol{margin:0 0 16px}.legal-body ul,.legal-body ol{padding-left:22px}.legal-body li{margin:6px 0}.legal-body a{color:var(--cobalt);text-underline-offset:2px;text-decoration:underline}.legal-body a:hover{color:var(--cobalt-hover)}.legal-body strong{font-weight:600}.legal-body code{font-family:var(--mono);background:var(--mist);border-radius:4px;padding:1px 5px;font-size:.88em}.legal-body .table-wrap{border:1px solid var(--line);border-radius:12px;margin:8px 0 24px;overflow-x:auto}.legal-body table{border-collapse:collapse;width:100%;font-size:15px;line-height:1.5}.legal-body th,.legal-body td{text-align:left;vertical-align:top;border-bottom:1px solid var(--line);padding:10px 14px}.legal-body th{background:var(--mist);font-weight:600}.legal-body tr:last-child td{border-bottom:0}.legal-body td:first-child{white-space:nowrap;font-weight:600}@media (width<=900px){.legal-grid{grid-template-columns:minmax(0,1fr)}.legal-toc{flex-flow:wrap;gap:4px 16px;padding-bottom:8px;position:static}.legal-toc-label{width:100%}.legal-body td:first-child{white-space:normal}}
