@font-face{font-family:General Sans;src:url(/fonts/general-sans-400.woff2)format("woff2");font-weight:400;font-display:swap}@font-face{font-family:General Sans;src:url(/fonts/general-sans-500.woff2)format("woff2");font-weight:500;font-display:swap}@font-face{font-family:General Sans;src:url(/fonts/general-sans-700.woff2)format("woff2");font-weight:700;font-display:swap}:root{--ground:#fafbf9;--surface:#edf0eb;--surface-2:#e1e7de;--ink:#17201b;--muted:#546055;--accent:#b6f36a;--accent-ink:#152219;--dark:#18271f;--white:#fff;--gutter:clamp(20px, 3.4vw, 56px);--body:17px;--small:14px;--lead:22px;--head:clamp(36px, 4.5vw, 64px);--display:clamp(44px, 7.5vw, 110px);--ease:cubic-bezier(.16, 1, .3, 1)}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:30px}body{background:var(--ground);color:var(--ink);font-family:General Sans,PingFang SC,Microsoft YaHei,sans-serif;font-size:var(--body);-webkit-font-smoothing:antialiased;margin:0;line-height:1.65}a{color:inherit;text-decoration:none}button,input{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}img{max-width:100%;height:auto;display:block}p,h1,h2,h3,figure{margin:0}h1,h2,h3{text-wrap:balance}p{text-wrap:pretty}h2{font-size:var(--head);letter-spacing:-.045em;font-weight:500;line-height:1.18}h3{font-size:var(--lead);letter-spacing:-.025em;font-weight:500;line-height:1.4}p{line-height:1.75}button{border:0}a:focus-visible,button:focus-visible,summary:focus-visible,pre:focus-visible{outline:3px solid var(--muted);outline-offset:5px}::selection{background:var(--accent);color:var(--ink)}.skip-link{background:var(--white);z-index:20;padding:12px;position:fixed;top:12px;left:12px;transform:translateY(-160%)}.skip-link:focus{transform:none}.site-header{padding:28px var(--gutter);justify-content:space-between;align-items:center;gap:32px;display:flex}.brand{white-space:nowrap;align-items:center;gap:12px;font-size:20px;font-weight:700;display:flex}.brand>svg{width:32px;height:32px}.brand-divider{color:var(--muted);padding:0 5px;font-weight:400}.site-header nav{gap:32px;margin-left:auto;margin-right:48px;display:flex}.site-header nav a,.github-link{font-size:var(--small);font-weight:500}.github-link{align-items:center;gap:9px;display:flex}.site-header a:hover,.text-link:hover,.inline-link:hover{color:var(--muted)}.site-header nav a{position:relative}.site-header nav a:after{content:"";transform-origin:0;height:2px;transition:transform .24s var(--ease);background:currentColor;position:absolute;bottom:-6px;left:0;right:0;transform:scaleX(0)}.site-header nav a:hover:after{transform:scaleX(1)}.hero{padding:65px var(--gutter) 0}.hero-heading{max-width:1300px;margin:auto}h1{font-size:var(--display);letter-spacing:-.055em;font-weight:500;line-height:1.13}.headline-line{display:block}.headline-line:first-child{align-items:center;gap:30px;display:flex}.message-window{letter-spacing:0;background:var(--surface-2);border-radius:12px;flex-direction:column;justify-content:center;gap:8px;width:250px;height:97px;padding:12px 18px;font-size:17px;line-height:1.4;display:flex;transform:rotate(-4deg)}.message-window>span{max-width:max-content;font-size:var(--small);background:var(--white);border-radius:3px;padding:7px 10px}.message-window>span:first-child{background:var(--accent);align-self:flex-end}.hero-under{align-items:center;gap:28px;max-width:1300px;margin:36px auto 44px;display:flex}.hero-under p{font-size:var(--body);margin-right:auto;line-height:1.75}.button{background:var(--accent);white-space:nowrap;min-height:54px;transition:transform .3s var(--ease), background .18s;border-radius:0;justify-content:center;align-items:center;gap:28px;padding:14px 23px;font-size:16px;font-weight:500;display:inline-flex}.button:hover{background:var(--surface-2);transform:translateY(-3px)}.button:active{transform:scale(.97)}.text-link{font-size:var(--small)}.hero-product{background:var(--surface-2);height:535px;padding:42px 9% 0 18%;position:relative;overflow:hidden}.product-browser{background:var(--white);transform-origin:bottom}.browser-bar{background:var(--ground);height:38px;color:var(--muted);justify-content:space-between;align-items:center;gap:10px;padding:0 16px;font-size:12px;display:flex}.browser-dots{gap:5px;display:flex}.browser-dots i{background:var(--surface-2);border-radius:100%;width:7px;height:7px}.product-browser>img{width:100%;height:auto}.phone-example{background:var(--white);border:7px solid var(--ink);border-radius:27px;width:21%;position:absolute;top:140px;left:4%;overflow:hidden;transform:rotate(-5deg)}.phone-top{background:var(--surface);justify-content:space-between;padding:13px 15px;font-size:12px;display:flex}.phone-example>img{width:100%;height:auto}.product-note{background:var(--surface-2);font-size:var(--small);color:var(--ink);text-align:right;padding:12px 0 0 15px;position:absolute;bottom:24px;right:2.2%}.section-pad{padding:140px var(--gutter) 0}.section-top{grid-template-columns:1fr 1fr;align-items:end;gap:60px;margin-bottom:52px;display:grid}.section-top>p{max-width:500px;font-size:var(--body);justify-self:end;line-height:1.8}.feature-body{grid-template-columns:1fr 1fr;align-items:center;gap:9%;display:grid}.feature-phone{background:var(--surface);padding:48px 20%;overflow:hidden}.feature-phone>img{object-fit:cover;object-position:top;width:100%;max-height:650px}.feature-phone figcaption{font-size:var(--small);color:var(--muted);white-space:nowrap;text-align:center;margin-top:20px;margin-left:-30px;margin-right:-30px}.feature-list{flex-direction:column;gap:42px;padding-right:16px;display:flex}.feature-list article p{max-width:490px;margin-top:14px}.showcase{margin-top:100px}.showcase-controls{flex-wrap:wrap;gap:10px;margin-bottom:24px;display:flex}.showcase-controls button{background:var(--surface);transition:background .18s, transform .25s var(--ease);padding:12px 22px;font-size:16px}.showcase-controls button[aria-pressed=true]{background:var(--ink);color:var(--white)}.showcase-controls button:hover{transform:translateY(-2px)}.showcase-screen{background:var(--surface);aspect-ratio:1.85;padding:35px 5% 0;overflow:hidden}.showcase-screen>img{width:100%;height:auto}.showcase>p{font-size:var(--small);color:var(--muted);margin-top:18px}.feature-notes{grid-template-columns:1fr 1fr;gap:9%;margin-top:56px;display:grid}.feature-notes p{max-width:540px;margin-top:14px}.deployment-section{padding-bottom:100px}.deployment-guide{background:var(--surface);padding:32px}.deploy-tabs{background:var(--surface-2);gap:6px;width:max-content;max-width:100%;margin-bottom:36px;padding:5px;display:flex}.deploy-tabs button{background:0 0;padding:10px 27px;font-size:16px;transition:background .18s}.deploy-tabs button[aria-pressed=true],.deploy-tabs button:hover{background:var(--ground)}.deploy-content{grid-template-columns:1fr 1.1fr;gap:60px;display:grid}.deploy-description p{max-width:500px;margin-top:20px}.deploy-description ul{font-size:var(--small);margin-top:24px;padding-left:20px;line-height:2}.terminal{background:var(--dark);color:var(--ground);align-self:start;min-width:0}.terminal-top{background:var(--ink);font-size:var(--small);justify-content:space-between;align-items:center;padding:18px 24px;display:flex}.terminal-top button{color:var(--white);font-size:var(--small);background:0 0;gap:14px;padding:6px 0 6px 12px;display:flex}.terminal-top button:hover{color:var(--accent)}pre{white-space:pre;margin:0;padding:25px 24px;font:14px/1.9 ui-monospace,monospace;overflow-x:auto}pre code{font:inherit}.copy-feedback{font-size:var(--small);min-height:44px;color:var(--surface-2);margin:0 24px 20px}.inline-link{font-size:var(--small);align-items:center;gap:12px;margin-top:24px;display:inline-flex}.connect-section{background:var(--surface);grid-template-columns:1fr 1fr;gap:9%;padding-top:100px;padding-bottom:100px;display:grid}.connect-intro>p{margin-top:30px}.setup-code{margin-top:38px}.setup-code>p{font-size:var(--small);margin-bottom:12px}.setup-code pre{background:var(--dark);color:var(--white);padding:22px}.setup-code>span{font-size:var(--small);color:var(--muted);margin-top:12px;display:block}.setup-preview{width:100%;margin-top:30px}.setup-steps{counter-reset:setup;flex-direction:column;gap:32px;margin:0;padding:0;list-style-position:inside;display:flex}.setup-steps>li{counter-increment:setup;padding-left:47px;list-style:none;position:relative}.setup-steps>li:before{content:counter(setup);background:var(--surface-2);text-align:center;width:30px;height:30px;line-height:30px;font-size:var(--small);position:absolute;top:0;left:0}.setup-steps p{max-width:500px;margin-top:12px}.setup-steps a{font-size:var(--small);text-underline-offset:5px;margin-top:10px;text-decoration:underline;display:inline-block}.setup-steps p code{font-size:14px}.commands-section{grid-template-columns:1fr 1fr;gap:9%;display:grid}.command-list>div{justify-content:space-between;align-items:center;gap:24px;padding:20px 0;display:flex}.command-list code{font-size:20px}.command-list span{font-size:var(--body)}.command-list>a{font-size:var(--small);align-items:center;gap:14px;margin-top:26px;display:flex}.faq-section{padding-bottom:140px}.faq-list{margin-top:70px;margin-left:34%}.faq-list details{margin:0 -24px 12px;padding:22px 24px}.faq-list details[open]{background:var(--surface)}.faq-list summary{cursor:pointer;font-size:var(--lead);justify-content:space-between;align-items:center;gap:20px;line-height:1.6;list-style:none;display:flex}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary span{transition:transform .25s var(--ease);font-size:26px}.faq-list details[open] summary span{transform:rotate(45deg)}.faq-list details>p{max-width:650px;margin-top:20px}.site-footer{padding:76px var(--gutter) 0;background:var(--dark);color:var(--ground);overflow:hidden}.footer-top{justify-content:space-between;gap:50px;display:flex}.footer-button{color:var(--accent-ink);margin-top:36px}.footer-links{flex-direction:column;gap:20px;min-width:180px;padding-top:10px;display:flex}.footer-links a{justify-content:space-between;gap:20px;font-size:16px;display:flex}.footer-links a:hover{color:var(--accent)}.footer-credit{font-size:var(--small);color:var(--surface-2);justify-content:space-between;gap:25px;margin-top:75px;display:flex}.footer-wordmark{letter-spacing:-.075em;white-space:nowrap;margin-top:20px;font-size:clamp(70px,15.4vw,230px);font-weight:500;line-height:1.2;transform:translateY(20%)}@media (prefers-reduced-motion:no-preference){.headline-line{animation:headline-in .9s var(--ease) both}.headline-line:nth-child(2){animation-delay:.11s}.message-window>span:first-child{animation:message-in .85s var(--ease) .35s both}.message-window>span:nth-child(2){animation:message-in .85s var(--ease) .65s both}.hero-under{animation:message-in .8s var(--ease) .18s both}.hero-product .product-browser{animation:product-in 1.1s var(--ease) both}.phone-example{animation:phone-in 1.1s var(--ease) .15s both}.showcase-screen>img{animation:message-in .4s var(--ease)}@supports (animation-timeline:view()){.product-browser{animation:linear both product-scroll;animation-timeline:view();animation-range:entry exit}.feature-phone>img{animation:linear both image-scroll;animation-timeline:view();animation-range:entry exit}}}@keyframes headline-in{0%{opacity:.3;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes message-in{0%{opacity:.3;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes product-in{0%{opacity:.5;transform:translateY(35px)}to{opacity:1;transform:translateY(0)}}@keyframes phone-in{0%{opacity:.3;transform:translateY(35px)rotate(-5deg)}to{opacity:1;transform:translateY(0)rotate(-5deg)}}@keyframes product-scroll{0%{transform:translateY(12px)scale(.98)}to{transform:translateY(-18px)scale(1.015)}}@keyframes image-scroll{0%{transform:translateY(15px)}to{transform:translateY(-15px)}}@media (min-width:1600px){.hero-product{height:620px}.hero,.section-pad,.site-header,.site-footer{max-width:1800px;margin-left:auto;margin-right:auto}}@media (max-width:1000px){:root{--gutter:28px;--display:clamp(44px, 8.6vw, 86px);--head:clamp(36px, 5.2vw, 52px)}.site-header{gap:20px}.site-header nav{gap:22px;margin-right:12px}.brand{font-size:17px}.brand>svg{width:26px}.hero{padding-top:65px}.message-window{gap:5px;width:190px;height:76px;padding:9px 12px}.message-window>span{padding:5px 8px;font-size:11px}.hero-under{flex-wrap:wrap;gap:20px}.hero-under p{flex-basis:100%}.hero-product{height:390px;padding-top:30px}.phone-example{width:25%;top:110px;left:3%}.section-pad{padding-top:100px}.section-top{gap:35px}.section-top>p br{display:none}.feature-body{gap:45px}.feature-phone{padding:32px 15%}.feature-list{gap:28px;padding:0}.feature-list p{font-size:16px}.feature-notes{gap:45px}.deploy-content{grid-template-columns:1fr;gap:24px}.deployment-guide{padding:28px}.deploy-description ul{margin-bottom:0}.connect-section{gap:40px;padding-bottom:80px}.setup-steps{gap:26px}.faq-list{margin-left:24%}.commands-section{gap:40px}.command-list>div{align-items:flex-start;gap:14px}.command-list code{font-size:18px}.command-list span{font-size:15px}.footer-credit{flex-direction:column;gap:8px}.github-link>svg:last-child{display:none}}@media (max-width:600px){:root{--gutter:20px;--body:16px;--small:13px;--lead:20px;--head:36px;--display:42px}.site-header{flex-wrap:wrap;gap:18px;padding-top:21px;padding-bottom:21px}.brand{gap:9px;font-size:16px}.brand>svg{width:25px;height:25px}.brand-divider{padding:0 2px}.github-link{margin-left:auto}.github-link>svg{width:18px}.site-header nav{order:3;justify-content:space-between;gap:20px;width:100%;margin:0}.site-header nav a{padding:3px 0;font-size:14px}.hero{padding-top:40px}.hero-heading{position:relative}.headline-line:first-child{gap:8px}.message-window{border-radius:5px;flex-shrink:0;gap:3px;width:86px;height:42px;padding:5px 6px}.message-window>span{border-radius:1px;padding:2px 4px;font-size:5.5px}.hero-under{gap:20px;margin-top:28px;margin-bottom:30px}.hero-under p{letter-spacing:-.03em;font-size:15px;line-height:1.8}.button{gap:25px;min-height:50px;padding:12px 20px;font-size:15px}.text-link{font-size:var(--small)}.hero-product{height:290px;margin-left:calc(-1 * var(--gutter));margin-right:calc(-1 * var(--gutter));padding:26px 0 0 21%}.product-browser{width:530px}.browser-bar{height:26px;padding:0 10px;font-size:8px}.browser-dots i{width:5px;height:5px}.phone-example{border-width:5px;border-radius:18px;width:35%;max-width:150px;top:93px;left:4%}.phone-top{padding:8px 10px;font-size:8px}.product-note{display:none}.section-pad{padding-top:80px}.section-top{grid-template-columns:1fr;gap:24px;margin-bottom:30px}.section-top>p{justify-self:start;font-size:16px}.feature-body{flex-direction:column;align-items:stretch;gap:36px;display:flex}.feature-phone{padding:30px 22% 22px}.feature-phone>img{max-height:430px}.feature-phone figcaption{font-size:11px}.feature-list{gap:30px}.feature-list p{margin-top:10px}.showcase{margin-top:48px}.showcase-controls{gap:6px;margin-bottom:16px}.showcase-controls button{white-space:nowrap;flex:1;min-height:44px;padding:11px 9px;font-size:12px}.showcase-screen{aspect-ratio:1.3;padding:16px 15px 0}.showcase-screen>img{width:550px;max-width:none}.showcase>p{font-size:var(--small)}.feature-notes{grid-template-columns:1fr;gap:28px;margin-top:36px}.feature-notes p{margin-top:10px}.deployment-section{padding-bottom:70px}.deployment-guide{margin:0 calc(-1 * var(--gutter));padding:18px}.deploy-tabs{width:100%;margin-bottom:26px}.deploy-tabs button{flex:1;padding:10px 14px;font-size:15px}.deploy-content{gap:22px}.deploy-description h3{font-size:20px}.deploy-description p{margin-top:14px}.deploy-description ul{font-size:var(--small);margin-top:16px;line-height:1.9}.terminal-top{padding:13px 16px}.terminal pre{padding:20px 16px;font-size:12px}.copy-feedback{min-height:35px;margin:0 16px 16px;font-size:12px}.inline-link{font-size:var(--small);line-height:1.5}.connect-section{grid-template-columns:1fr;gap:45px;padding-top:70px;padding-bottom:70px}.connect-intro>p{margin-top:24px}.setup-code{margin-top:26px}.setup-code pre{font-size:12px}.setup-preview{margin-top:25px}.setup-steps{gap:28px}.setup-steps>li{padding-left:42px}.setup-steps h3{font-size:20px}.setup-steps p{margin-top:8px}.commands-section{grid-template-columns:1fr;gap:28px}.command-list>div{padding:15px 0}.command-list code{font-size:20px}.command-list span{font-size:15px}.faq-section{padding-bottom:80px}.faq-list{margin-top:30px;margin-left:0}.faq-list details{margin:0 -16px 6px;padding:18px 16px}.faq-list summary{font-size:18px}.faq-list details>p{margin-top:16px;font-size:15px}.site-footer{padding-top:60px}.footer-top{flex-direction:column;gap:40px}.footer-links{flex-flow:wrap;gap:20px;padding:0}.footer-links a{font-size:var(--small);gap:8px}.footer-links svg{width:15px}.footer-button{margin-top:28px}.footer-credit{gap:10px;margin-top:45px;font-size:11px}.footer-wordmark{margin-top:28px;font-size:15.5vw;line-height:1.4}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,:before,:after{transition:none!important;animation:none!important}.message-window{transform:none}}code{font-family:inherit}pre code{font-family:ui-monospace,monospace}.showcase-screen{display:block}@media (max-width:600px){.message-window{gap:4px;width:116px;height:64px;padding:6px}.message-window>span{font-size:var(--small);padding:3px 5px;line-height:1.2}.headline-line:first-child{gap:8px}.showcase-screen{aspect-ratio:auto;padding:14px}.showcase-screen>img{width:100%;max-width:100%;height:auto}.showcase-controls button{font-size:var(--small);padding:10px 6px}}.brand,.button,.showcase-controls button,.deploy-tabs button,.footer-links a{font-size:var(--body)}.faq-list summary span,.command-list code{font-size:var(--lead)}@media (max-width:600px){.showcase-controls button,.footer-links a{font-size:var(--small)}.hero-under p,.command-list span,.faq-list details>p{font-size:var(--body)}.site-header nav a{font-size:var(--small)}}.language-link{font-size:var(--small);white-space:nowrap}.case-stage{background:var(--surface-2);grid-template-columns:1fr 1fr;align-items:center;gap:8%;padding:48px 8%;display:grid}.case-copy{min-width:0}.case-copy h3{font-size:var(--head);line-height:1.25}.case-copy>p{margin-top:24px}.case-copy blockquote{background:var(--ground);font-size:var(--lead);margin:30px 0 0;padding:22px}.case-source{font-size:var(--small)}.case-image{justify-self:center;width:min(100%,340px);display:block}.case-image img{width:100%;height:auto}.phone-example{max-height:360px}.phone-example>img{margin-top:-10%}.feature-phone>img{object-fit:contain;max-height:none}:lang(en) .headline-line:first-child{flex-wrap:wrap}:lang(en) .brand{white-space:normal}@media (max-width:1000px){.case-stage{gap:32px;padding:32px}.site-header nav{gap:20px;margin-right:0}}@media (max-width:600px){.site-header{gap:14px}.site-header .github-link{margin-left:0}.language-link{margin-left:auto}.case-controls{grid-template-columns:1fr 1fr;display:grid}.case-controls button{white-space:normal}.case-stage{grid-template-columns:1fr;gap:30px;padding:24px 20px}.case-copy blockquote{font-size:var(--body);margin-top:20px;padding:16px}.case-copy>p{margin-top:18px}.case-image{width:min(100%,320px)}.phone-example{max-height:185px}:lang(en) .message-window{display:none}:lang(en) h1{font-size:42px}.browser-bar,.phone-top,.feature-phone figcaption,.terminal pre,.copy-feedback,.setup-code pre,.footer-credit{font-size:var(--small)}.faq-list summary{font-size:var(--lead)}}.brand>.brand-logo{object-fit:contain;flex:0 0 40px;width:40px;height:40px;display:block}.iphone-frame{isolation:isolate;background:#151715;border:2px solid #555956;border-radius:12%/5.5%;width:100%;padding:7px;position:relative}.iphone-screen{background:#ededed;border-radius:10%/4.6%;position:relative;overflow:hidden}.iphone-screen>img{object-fit:contain;width:100%;height:auto;max-height:none;margin:0;display:block}.iphone-island{z-index:1;pointer-events:none;background:#111;border-radius:999px;width:28%;height:2%;position:absolute;top:1.65%;left:36%}.iphone-home-indicator{pointer-events:none;background:#111;border-radius:999px;width:30%;height:.5%;position:absolute;bottom:1.8%;left:35%}.iphone-frame:before,.iphone-frame:after,.iphone-side-button{content:"";background:#555956;border-radius:2px;width:3px;position:absolute}.iphone-frame:before{height:5%;top:21%;left:-4px}.iphone-frame:after{height:5%;top:29%;left:-4px}.iphone-side-button{height:9%;top:24%;right:-4px}.hero-product .phone-example{background:0 0;border:0;border-radius:0;width:clamp(118px,17vw,220px);max-height:none;top:30px;overflow:visible}.feature-phone>.iphone-frame{max-width:340px;margin-inline:auto}.feature-phone .iphone-screen>img{animation:none}@media (max-width:1000px){.hero-product .phone-example{top:22px}}@media (max-width:600px){.brand>.brand-logo{flex-basis:32px;width:32px;height:32px}.hero-product .phone-example{width:118px;top:18px}.phone-example .iphone-frame{border-width:1px;padding:4px}}
