:root{color-scheme:dark;--bg: #0e2038;--pnl: #16294a;--pnl2: #1e3a66;--ln: rgba(255, 255, 255, .08);--ln2: rgba(255, 255, 255, .14);--tx: #f2f6fc;--mut: #aabbd6;--dim: #6f83a3;--acc: #F97316;--ink: #0e2038;--sans: "Poppins", system-ui, -apple-system, Segoe UI, Roboto, sans-serif;--mono: "Geist Mono", ui-monospace, SFMono-Regular, Menlo, monospace}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--tx);font-family:var(--sans);line-height:1.6;-webkit-font-smoothing:antialiased}.wrap{width:100%;max-width:1080px;margin:0 auto;padding:0 24px}a{color:var(--tx);text-decoration:none}:focus-visible{outline:2px solid var(--acc, #F97316);outline-offset:2px;border-radius:3px}.nav{position:sticky;top:0;z-index:10;backdrop-filter:blur(10px);background:#0b0b0eb3;border-bottom:1px solid var(--ln)}.nav-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;height:60px}.brand{display:inline-flex;align-items:center;gap:9px;font-weight:500;font-size:16px;letter-spacing:-.01em}.logo{width:26px;height:26px;border-radius:7px;overflow:hidden;display:inline-flex;align-items:center;justify-content:center}.logo.sm{width:22px;height:22px}.nav-links{display:flex;align-items:center;gap:22px;font-size:14px;color:var(--mut)}.nav-links a{color:var(--mut);display:inline-flex;align-items:center;gap:5px}.nav-links a:hover,.nav-links a[aria-current=page]{color:var(--tx)}.nav-links a.btn-p,.nav-links a.btn-p:hover{color:var(--ink)}.btn{display:inline-flex;align-items:center;gap:7px;font-size:14px;font-weight:500;padding:9px 16px;border-radius:8px;border:1px solid var(--ln2);color:var(--tx);background:transparent;cursor:pointer;transition:background .15s;white-space:nowrap}.btn:hover{background:var(--pnl2)}.btn-p{background:#ea6a0c;border-color:#ea6a0c;color:var(--ink)}.btn-p:hover{background:#d5610c}.btn.lg{height:46px;padding:0 20px;font-size:15px}.btn.full{width:100%;justify-content:center}.chip{display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--mut);border:1px solid var(--ln2);border-radius:999px;padding:5px 13px}.chip-acc{color:var(--acc);border-color:#f973164d}.dot{width:7px;height:7px;border-radius:50%;background:var(--acc);display:inline-block}.t-head{text-align:center;padding:64px 0 8px}.t-head h1{font-size:clamp(32px,5vw,52px);font-weight:600;letter-spacing:-.03em;line-height:1.06;margin:22px auto 0;max-width:760px}.lede{font-size:17px;color:var(--mut);max-width:640px;margin:20px auto 0}.t-cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;margin:30px 0 0}.t-cta-hint{color:var(--mut);font-size:13px;margin:12px 0 0}.t-cta-hint b{color:var(--tx);font-weight:600}.ph-badge{display:inline-block;margin-top:22px;line-height:0;transition:transform .15s ease}.ph-badge img{border-radius:10px}.ph-badge:hover{transform:translateY(-2px)}.heroshot{margin:30px 0 0}.shot-frame{border-radius:14px;overflow:hidden;border:1px solid var(--ln2);box-shadow:0 30px 70px #00000080;background:var(--pnl)}.shot-frame img{display:block;width:100%;height:auto}.shot-cap{text-align:center;font-family:var(--mono);font-size:12.5px;color:var(--dim);margin:16px 0 0}.quick-start{margin:42px 0 0;padding:26px;border:1px solid var(--ln2);border-radius:16px;background:var(--pnl);display:grid;grid-template-columns:minmax(220px,.75fr) minmax(0,1.75fr);gap:28px;align-items:center}.quick-copy h2{font-size:clamp(23px,3vw,31px);font-weight:600;letter-spacing:-.025em;margin:16px 0 0}.quick-copy>p{color:var(--mut);font-size:14px;margin:10px 0 0}.quick-steps{list-style:none;display:grid;gap:12px;margin:0;padding:0}.quick-steps li{display:grid;grid-template-columns:34px 1fr;gap:12px;align-items:start}.quick-steps li>span{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:#f973161f;color:var(--acc);font:600 13px var(--mono)}.quick-steps b{color:var(--tx);font-size:14px;font-weight:600}.quick-steps p{color:var(--mut);font-size:13px;margin:3px 0 0}.vgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:56px 0 0}.vgrid.vgrid-2{grid-template-columns:repeat(2,1fr);max-width:860px;margin-left:auto;margin-right:auto}.gitcompare{margin:84px 0 0}.vcard{background:var(--pnl);border:1px solid var(--ln);border-radius:14px;padding:22px}.vcard>i{font-size:22px;color:var(--acc)}.vcard h3{font-size:16px;font-weight:500;margin:12px 0 6px}.vcard p{font-size:14px;color:var(--mut);margin:0}.screens{margin:84px 0 0}.screen-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:36px 0 0}.screen-card{margin:0;background:var(--pnl);border:1px solid var(--ln);border-radius:14px;overflow:hidden}.screen-card img{display:block;width:100%;height:auto;border-bottom:1px solid var(--ln)}.screen-card figcaption{display:flex;flex-direction:column;gap:5px;padding:15px 16px 17px;font-size:13.5px;color:var(--mut);line-height:1.45}.screen-card figcaption strong{color:var(--tx);font-weight:600}.p-head{text-align:center}.p-head h2{font-size:clamp(26px,3.6vw,38px);font-weight:600;letter-spacing:-.025em;margin:18px auto 0;max-width:640px}.pricing{margin:84px 0 0}.ptiers{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:16px;grid-template-rows:auto auto auto 1fr auto;margin:40px 0 0}.ptier{background:var(--pnl);border:1px solid var(--ln);border-radius:16px;padding:28px;grid-row:span 5;display:grid;grid-template-rows:subgrid;row-gap:0}.pcta{display:flex;flex-direction:column}.ptier.feat{border-color:#f9731673;box-shadow:0 0 0 1px #f973162e;position:relative}.ptag{position:absolute;top:-11px;left:28px;background:var(--acc);color:var(--ink);font-size:12px;font-weight:600;padding:3px 11px;border-radius:999px}.ptier h3{font-size:16px;font-weight:500;margin:0;color:var(--mut)}.price{display:flex;align-items:baseline;gap:8px;margin:10px 0 0}.amt{font-size:42px;font-weight:600;letter-spacing:-.03em}.amt.amt-sm{font-size:30px}.per{font-size:14px;color:var(--mut)}.psub{font-size:14px;color:var(--mut);margin:4px 0 0}.pannual{font-size:12.5px;color:var(--mut);margin:8px 0 0}.pannual b{color:var(--acc);font-weight:600}.ptier-note{font-size:12px;color:var(--dim);margin:12px 0 0;text-align:center;line-height:1.5}.bhint{display:block;font-size:11.5px;color:var(--dim);line-height:1.45;margin:7px 2px 0;text-align:center}.bhint b{color:var(--mut);font-weight:600}.plist{list-style:none;padding:0;margin:20px 0 24px;display:flex;flex-direction:column;gap:10px;align-self:start}.plist li{font-size:14.5px;color:var(--tx);display:flex;align-items:flex-start;gap:9px}.plist li i{color:var(--acc);font-size:16px;margin-top:2px}.pcalc{max-width:380px;margin:32px auto 0;background:var(--pnl);border:1px solid var(--ln);border-radius:14px;padding:18px 22px}.pcalc-h{text-align:center;font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--mut);margin-bottom:4px}.pcalc-t{width:100%;border-collapse:collapse}.pcalc-t td{padding:9px 0;border-bottom:1px solid var(--ln)}.pcalc-t tr:last-child td{border-bottom:0}.pcalc-sz{font-size:14.5px;color:var(--tx)}.pcalc-amt{text-align:right;font-size:14.5px;color:var(--tx);white-space:nowrap}.pcalc-amt b{font-size:18px;color:var(--acc)}.pcalc-amt span{color:var(--dim);font-size:13px;margin-left:1px}.pcalc-note{text-align:center;font-size:12.5px;color:var(--dim);margin:12px 0 0;line-height:1.5}.pfoot{text-align:center;font-size:13.5px;color:var(--dim);margin:22px auto 0;max-width:620px}.pfoot code{font-family:var(--mono);font-size:12.5px;color:var(--mut);background:var(--pnl2);padding:1px 5px;border-radius:4px}.compat-note{max-width:620px;margin:14px auto 0;color:var(--dim);font-size:13px;text-align:center}.compat-note code{font-family:var(--mono);font-size:12px;color:var(--mut);background:var(--pnl2);padding:1px 5px;border-radius:4px}.selfhost{margin:84px 0 0}.steps{counter-reset:step;list-style:none;padding:0;margin:40px 0 0;display:flex;flex-direction:column;gap:18px}.steps>li{position:relative;background:var(--pnl);border:1px solid var(--ln);border-radius:14px;padding:20px 22px 20px 58px;font-size:14.5px;color:var(--mut)}.steps>li b{color:var(--tx);font-weight:500}.steps>li:before{counter-increment:step;content:counter(step);position:absolute;left:18px;top:20px;width:26px;height:26px;border-radius:8px;background:#f973161f;color:var(--acc);font-weight:600;font-size:14px;display:flex;align-items:center;justify-content:center}.steps a{color:var(--acc)}.codewrap{position:relative;margin:14px 0 0}.codewrap pre{background:var(--bg);border:1px solid var(--ln2);border-radius:10px;padding:16px;overflow-x:auto;margin:0}.codewrap code{font-family:var(--mono);font-size:12.5px;color:var(--tx);line-height:1.5;white-space:pre}.copy{position:absolute;top:10px;right:10px;background:var(--pnl2);border:1px solid var(--ln2);color:var(--mut);border-radius:7px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.copy:hover{color:var(--tx);border-color:var(--mut)}.request{margin:84px 0 0;padding:44px;border:1px solid var(--ln2);border-radius:18px;background:var(--pnl);display:grid;grid-template-columns:1fr 1.1fr;gap:40px;align-items:start}.req-copy h2{font-size:clamp(24px,3.2vw,32px);font-weight:600;letter-spacing:-.025em;margin:14px 0 0}.req-lede{font-size:15px;color:var(--mut);margin:14px 0 0}.ecaps{list-style:none;padding:0;margin:22px 0 0;display:flex;flex-direction:column;gap:14px}.ecaps li{display:flex;align-items:flex-start;gap:11px;font-size:14px;color:var(--mut)}.ecaps li i{color:var(--acc);font-size:18px;margin-top:1px;flex:none}.ecaps li b{color:var(--tx);font-weight:500}.lead-form{display:flex;flex-direction:column;gap:14px}.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.fld{display:flex;flex-direction:column}.fld label{font-size:13px;color:var(--mut);margin:0 0 6px;font-weight:500}.req-star{color:var(--acc)}.opt{color:var(--dim);font-weight:400}.lead-form input[type=text],.lead-form input[type=email],.lead-form textarea{width:100%;background:var(--bg);color:var(--tx);border:1px solid var(--ln2);border-radius:8px;padding:11px 13px;font-family:var(--sans);font-size:14.5px;resize:vertical}.lead-form input:focus,.lead-form textarea:focus{outline:none;border-color:var(--acc)}.pills{display:flex;gap:8px;flex-wrap:wrap}.pill{background:transparent;color:var(--mut);border:1px solid var(--ln2);border-radius:999px;padding:8px 15px;font-family:var(--sans);font-size:13.5px;cursor:pointer;transition:all .12s}.pill:hover{border-color:var(--mut);color:var(--tx)}.pill.sel{color:var(--acc);border-color:var(--acc);background:#f973161a}.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.req-submit{justify-content:center;margin:4px 0 0}.lead-msg{min-height:20px;font-size:14px;color:var(--mut);margin:2px 0 0;text-align:center}.lead-msg.ok{color:var(--acc)}.lead-msg.err{color:#f0a868}.lead-msg a{color:var(--acc)}.foot{display:flex;align-items:center;justify-content:space-between;padding-top:28px;padding-bottom:40px;margin-top:80px;border-top:1px solid var(--ln);font-size:13px;color:var(--dim)}.foot-links{display:flex;gap:20px;flex-wrap:wrap;justify-content:flex-end}.foot-links a{color:var(--dim)}.foot-links a:hover{color:var(--mut)}.brand.sm{font-size:14px;color:var(--mut)}.sh-details{margin-top:8px}.sh-details>summary{cursor:pointer;display:inline-flex;align-items:center;gap:8px;color:var(--mut);font-size:14px;padding:10px 14px;border:1px solid var(--ln2);border-radius:8px;list-style:none}.sh-details>summary::-webkit-details-marker{display:none}.sh-details>summary:hover{color:var(--tx);background:var(--pnl2)}.sh-details>summary i{transition:transform .15s}.sh-details[open]>summary{margin-bottom:18px}.sh-details[open]>summary i{transform:rotate(90deg)}.pcalc-roi{margin:10px 0 0;font-size:13.5px;color:var(--mut)}.pcalc-roi a{color:var(--acc)}.phelper{max-width:760px;margin:14px auto 0;font-size:14px;color:var(--mut)}.phelper b{color:var(--tx);font-weight:500}.t-close{text-align:center;margin:72px 0 0;padding:48px 24px;border:1px solid rgba(249,115,22,.3);border-radius:16px}.t-close h2{font-size:clamp(24px,3.4vw,32px);font-weight:600;letter-spacing:-.02em;margin:0}.t-close p{color:var(--mut);margin:12px 0 22px}.mobile-cta{display:none}@media(max-width:860px){.vgrid,.screen-grid{grid-template-columns:1fr 1fr}.quick-start{grid-template-columns:1fr}.ptiers{grid-template-columns:1fr;grid-template-rows:none}.ptier{grid-row:auto;display:flex;flex-direction:column}.plist{flex:1;align-self:auto}.request{grid-template-columns:1fr;gap:24px;padding:32px 22px}}@media(max-width:1000px){.nav-inner{height:auto;min-height:60px;padding-top:8px;padding-bottom:8px;gap:10px}.nav-links{flex-wrap:wrap;justify-content:center;gap:10px 16px;font-size:13px}.nav-links a[href*="github.com"],.nav-links a[href*=discord]{display:none}}@media(max-width:560px){body{padding-bottom:76px}.nav-inner{flex-wrap:nowrap}.nav-links{flex:none}.nav-links>a:not(.btn-p){display:none}.nav-links .btn-p{padding:8px 12px;font-size:13px}.t-head{padding-top:48px}.t-head .lede{font-size:16px}.t-cta{align-items:stretch;flex-direction:column}.t-cta .btn{justify-content:center;width:100%}.quick-start{margin-top:32px;padding:22px 18px}.vgrid,.vgrid.vgrid-2,.screen-grid,.ptiers,.row2{grid-template-columns:1fr}.steps>li{padding:18px 18px 18px 52px}.steps code{overflow-wrap:anywhere}.codewrap{min-width:0}.codewrap pre{max-width:100%}.foot{align-items:flex-start;gap:16px}.foot-links{justify-content:flex-start;gap:10px 16px}.mobile-cta.is-visible{position:fixed;z-index:20;left:12px;right:12px;bottom:10px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:11px 14px 11px 16px;border:1px solid #f78635;border-radius:12px;background:#ea6a0c;color:var(--ink);box-shadow:0 12px 35px #0000007a}.mobile-cta span{display:flex;flex-direction:column}.mobile-cta b{font-size:14px;font-weight:700}.mobile-cta small{font-size:11px;opacity:.78}.mobile-cta i{font-size:20px}}.appshot-zoom{position:relative;cursor:zoom-in}.appshot-zoom img{cursor:zoom-in}.appshot-zoom:focus-visible{outline:2px solid var(--acc);outline-offset:3px}.appshot-zoom:after{content:"";position:absolute;top:12px;right:12px;z-index:2;width:32px;height:32px;border-radius:8px;border:1px solid var(--ln2);background:#0a0a0db8 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23e6e6ea' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m21 21-4.2-4.2'/%3E%3Cpath d='M11 8v6M8 11h6'/%3E%3C/svg%3E") center / 16px no-repeat;backdrop-filter:blur(4px);opacity:0;transition:opacity .15s;pointer-events:none}.appshot-zoom:hover:after,.appshot-zoom:focus-visible:after{opacity:1}.lightbox{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:4vh 4vw;background:#07070ae6;backdrop-filter:blur(8px);cursor:zoom-out}.lightbox[hidden]{display:none}.lightbox-inner{display:flex;max-width:95vw;max-height:92vh}.lightbox-inner img{display:block;width:auto;height:auto;max-width:95vw;max-height:92vh;border-radius:12px;border:1px solid var(--ln2);box-shadow:0 30px 90px -20px #000000d9;cursor:default}.lightbox-close{position:fixed;top:14px;right:20px;z-index:101;width:44px;height:44px;font-size:30px;line-height:1;color:#d4d4da;background:transparent;border:none;cursor:pointer}.lightbox-close:hover{color:#fff}
