/* Underpixel v2: pen.dev "Variant G Glass (Light)", values taken from the design file */
:root{--bg:#EEEEFB;--ink:#15123A;--mut:#5B5880;--p:#8B5CF6;--line:#D5D3F2;--ph:#E4E2FA;--glass:#FFFFFF8C;--ok:#16A34A;--pink:#DB2777;--sh:0 12px 32px #15123A14;--sh2:0 16px 40px #15123A1F}
*,::before,::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 Inter,system-ui,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,p{margin:0}
h1,h2,h3{font-family:Manrope,system-ui,sans-serif;font-weight:800;text-wrap:balance}
.mono{font-family:"JetBrains Mono",ui-monospace,monospace}
.wrap{max-width:1440px;margin:0 auto;padding:0 120px}
.glass{background:var(--glass);box-shadow:var(--sh);outline:1px solid #fff;outline-offset:-.5px;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
svg.lucide{flex:none}

/* section heads */
.sh{display:flex;flex-direction:column;align-items:center;gap:14px;text-align:center}
.eyebrow{padding:6px 12px;border-radius:999px;background:#8B5CF61A;outline:1px solid var(--line);outline-offset:-.5px;font:600 12px "JetBrains Mono",monospace;letter-spacing:2px;color:var(--p)}
.sh h2{font-size:60px;letter-spacing:-2.5px;line-height:1.15}
.sh p{font-size:18px;color:var(--mut)}

/* motion follows the pen.dev storyboard: ease cubic-bezier(.22,1,.36,1), fade up 16px, 80ms stagger */
:root{--ease:cubic-bezier(.22,1,.36,1)}

/* buttons: lift + deeper colour on hover */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;border:0;padding:18px 28px;border-radius:10px;font:600 16px/1.2 Inter,sans-serif;cursor:pointer;transition:box-shadow .4s var(--ease),background .25s}
.btn svg{width:18px;height:18px;transition:transform .4s var(--ease)}
.btn:hover svg{transform:translateX(4px)}
.btn-p{background:var(--p);color:#fff;box-shadow:0 16px 40px #15123A14}
.btn-p:hover{background:#7C3AED;box-shadow:0 18px 40px #8B5CF64D}
.btn-g{background:var(--glass);color:var(--ink);box-shadow:var(--sh);outline:1px solid #fff;outline-offset:-.5px}
.btn-g:hover{background:#fff;box-shadow:var(--sh2)}
.btn-lg{padding:20px 32px;border-radius:12px;font-size:17px}

/* nav (Component / Nav) */
.nav{position:sticky;top:0;z-index:50;background:#EEEEFBB3;border-bottom:1px solid var(--line);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:86px}
.logo{display:flex;align-items:center;gap:10px;flex:none}
.logo img{display:block;width:auto;height:36px}
.logo span{font:800 18px/1 Manrope,sans-serif;letter-spacing:-.4px;color:var(--ink);white-space:nowrap}
.logo span b{color:var(--p);font-weight:800}
.links{display:flex;align-items:center;gap:2px;list-style:none;margin:0;padding:4px;border-radius:14px;background:#E9E7F8;outline:1px solid #DEDBF3;outline-offset:-.5px}
.links>li{position:relative}
.links>li>a{display:flex;align-items:center;gap:6px;padding:9px 16px;border-radius:10px;font:500 15px Inter,sans-serif;color:var(--ink);white-space:nowrap;transition:background .25s,box-shadow .25s}
.links>li>a svg{width:15px;height:15px;transition:rotate .3s}
.links>li:hover>a,.links>li.open>a{background:#FFFFFF99}
.links>li>a.on{background:#fff;font-weight:600;box-shadow:0 1px 3px #15123A14}
.links>li:hover>a.trg svg{rotate:180deg}
.lng{display:flex;gap:2px;padding:3px;border-radius:999px;background:var(--glass);outline:1px solid #fff;outline-offset:-.5px}
.lng a{padding:5px 10px;border-radius:999px;font:700 12px "JetBrains Mono",monospace;color:var(--mut)}
.lng a{transition:color .3s}
.lng a.on{background:var(--ink);color:#fff}
.nav .r{display:flex;align-items:center;gap:14px}
.nav-cta{display:inline-flex;align-items:center;gap:14px;padding:7px 7px 7px 20px;border-radius:999px;background:var(--ink);color:#fff;font:600 14px "JetBrains Mono",monospace;white-space:nowrap;transition:background .25s}
.nav-cta:hover{background:#231E57}
.nav-cta .go{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--p);transition:rotate .5s var(--ease)}
.nav-cta .go svg{width:16px;height:16px}
.nav-cta:hover .go{rotate:45deg}
.burger{display:none;background:none;border:0;padding:6px;color:var(--ink);cursor:pointer}
.burger svg{width:24px;height:24px}

/* mega menus (Menu / Services, Menu / Plugins) */
.links>li.has-mega{position:static}
/* invisible bridge from the link down to the menu, so the cursor never "leaves" while crossing the gap */
.has-mega>.trg{position:relative}
.has-mega>.trg::after{content:"";position:absolute;left:-12px;right:-12px;top:100%;height:48px}
/* fixed, not absolute: .links is positioned (it holds the gooey layer), and the menu must span the whole bar.
   .nav's backdrop-filter makes the nav the box a fixed child measures from, so top:100% = just under the bar */
.mega{position:fixed;left:0;right:0;top:100%;padding-top:12px;pointer-events:none;opacity:0;visibility:hidden;transform:translateY(-8px);transition:opacity .3s var(--ease),transform .4s var(--ease),visibility .4s}
.has-mega:hover .mega,.has-mega:focus-within .mega,.has-mega.open .mega{opacity:1;visibility:visible;transform:none}
.has-mega:hover>a.trg svg,.has-mega.open>a.trg svg{rotate:180deg}
.mm{pointer-events:auto;max-width:1200px;margin:0 auto;line-height:1.25;border-radius:24px;background:#FFFFFFFC;outline:1px solid #fff;outline-offset:-.5px;box-shadow:0 24px 60px #15123A1F;backdrop-filter:blur(30px);-webkit-backdrop-filter:blur(30px);overflow:hidden}
.mm .cols{display:flex;gap:24px;padding:28px}
.mm .grp{flex:1;display:flex;flex-direction:column;gap:4px;min-width:0}
.mm .gh{display:flex;align-items:center;gap:8px;padding:0 12px 10px;font:700 11px "JetBrains Mono",monospace;letter-spacing:1.5px;color:var(--p)}
.mm .gh svg{width:14px;height:14px}
.mm .gh.ok{color:var(--ok)}.mm .gh.mu{color:var(--mut)}
.mi{display:flex;align-items:center;gap:12px;padding:12px;border-radius:14px;transition:background .25s,transform .35s var(--ease)}
.mi:hover{background:#8B5CF60F;transform:translateX(2px)}
.mi .ib{display:grid;place-items:center;flex:none;width:40px;height:40px;border-radius:12px;background:#8B5CF61F;color:var(--p);transition:background .25s,color .25s}
.mi:hover .ib{background:var(--p);color:#fff}
.mi .ib svg{width:22px;height:22px}
.mi .tx{display:flex;flex-direction:column;gap:3px;min-width:0}
.mi .rw{display:flex;align-items:center;gap:8px}
.mi b{font:700 15px Inter,sans-serif;color:var(--ink)}
.mi small{font-size:13px;color:var(--mut);line-height:1.25}
.tg{padding:2px 8px;border-radius:999px;background:#8B5CF614;font:700 11px "JetBrains Mono",monospace;color:var(--p);white-space:nowrap}
.tg.ok{background:#16A34A1A;color:var(--ok)}
.mi.soon{opacity:.75}
.mnote{display:flex;align-items:center;gap:6px;padding:8px 12px;font:600 13px Inter,sans-serif;color:var(--ok)}
.mnote.p{color:var(--p)}
.mnote svg{width:14px;height:14px}
.mf{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 40px;background:#15123A08;border-top:1px solid var(--line);font-size:13px;color:var(--mut)}
.mf a,.mf span{display:flex;align-items:center;gap:6px}
.mf svg{width:15px;height:15px}
.mf .all{font-size:14px;font-weight:600;color:var(--p)}
.mf .all svg{transition:transform .35s var(--ease)}.mf .all:hover svg{transform:translateX(4px)}
.mf .ssm{font-weight:600;color:var(--ink)}.mf .ssm svg{width:16px;height:16px;color:var(--ok)}
.feat-pl{flex:none;width:400px;display:flex;flex-direction:column;gap:16px;padding:24px;border-radius:18px;background:#F5F3FF;outline:1px solid #DDD6FE;outline-offset:-.5px}
.mm .cols:not(:has(.grp)) .feat-pl{flex:1;width:auto} /* Product menu: two cards share the full width */
.mm .grp~.feat-pl{width:300px} /* Service menu: tool card on the right leaves room for the two columns */
.feat-pl .top{display:flex;justify-content:space-between;align-items:center}
.feat-pl .ib{display:grid;place-items:center;width:44px;height:44px;border-radius:12px;background:var(--p);color:#fff}
.feat-pl .ib svg{width:24px;height:24px}
.feat-pl .chip2{display:flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;background:#fff;font:700 10px "JetBrains Mono",monospace;letter-spacing:1px;color:var(--p)}
.feat-pl .chip2 svg{width:12px;height:12px}
.feat-pl h4{margin:0;font:700 22px Manrope,sans-serif;letter-spacing:-.5px}
.feat-pl p{font-size:14px;color:var(--mut);margin-top:4px}
.feat-pl ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.feat-pl li{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600}
.feat-pl li svg{width:16px;height:16px;color:var(--p)}
.feat-pl .pr{display:flex;gap:6px;padding-top:12px;border-top:1px solid #DDD6FE;font-size:15px;color:var(--mut)}
.feat-pl .pr b{color:var(--ok)}.feat-pl .pr b+span+b{color:var(--p)}
.feat-pl .bt{display:flex;gap:8px}
.feat-pl .bt a{display:flex;align-items:center;justify-content:center;gap:8px;padding:11px 16px;border-radius:10px;font-size:14px;font-weight:600;transition:background .25s,transform .35s var(--ease)}
.feat-pl .bt a:hover{transform:translateY(-1px)}
.feat-pl .bt svg{width:15px;height:15px}
.feat-pl .dl{flex:1;background:var(--ink);color:#fff}.feat-pl .dl:hover{background:#2A2560}
.feat-pl .vw{background:#fff;color:var(--p);outline:1px solid #DDD6FE;outline-offset:-.5px}
/* items inside an open menu fade up one after another */

/* hero */
.hero{position:relative;padding:120px 0 40px;overflow:hidden}
.hero .wrap{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:32px;text-align:center}
.hero h1{font-size:84px;line-height:88px;letter-spacing:-3.5px}
.hl{display:inline-block;vertical-align:top;white-space:nowrap;text-align:center;margin:0 .1em;margin-bottom:-.12em;padding:0 18px .12em;border-radius:16px;background:var(--p);color:#fff}
.hl span{display:inline-block}
.hero .sub{font-size:19px;color:var(--mut)}
.ctas{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
.stage{position:relative;width:100%;max-width:1120px}
.browser{border-radius:16px;overflow:hidden}
.browser .bar{display:flex;align-items:center;gap:16px;height:60px;padding:14px 18px;border-bottom:2px solid var(--line)}
.dots{display:flex;gap:7px}.dots i{width:12px;height:12px;border-radius:50%;background:#FF5F57;outline:1.5px solid var(--line);outline-offset:-.75px}.dots i+i{background:#FEBC2E}.dots i+i+i{background:#28C840}
.url{flex:1;display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:8px;background:var(--bg);font:400 13px "JetBrains Mono",monospace;color:var(--mut);text-align:left}
.url svg{width:13px;height:13px}
.browser .shot{background:var(--ph);aspect-ratio:1120/544;overflow:hidden}
.browser .shot{overflow-y:auto;scrollbar-width:none;overscroll-behavior-y:auto}
.browser .shot::-webkit-scrollbar{display:none}
.browser .shot img{width:100%;height:auto}
/* scroll bar beside the window (pen.dev Scroll Track / Thumb / Hint): visitors scroll the site inside it themselves */
.track{position:absolute;isolation:isolate;top:16px;bottom:16px;right:-32px;width:8px;border-radius:4px;background:#8B5CF626;cursor:pointer;transform-origin:top}
.thumb{position:absolute;left:0;top:0;width:8px;height:120px;border-radius:4px;background:var(--p);cursor:grab}
.hint{position:absolute;left:-12px;top:130px;display:flex;align-items:center;gap:6px;padding:7px 12px;border-radius:999px;background:var(--p);color:#fff;font:700 12px Inter,sans-serif;white-space:nowrap;box-shadow:0 8px 20px #8B5CF64D;cursor:grab}
.hint svg{width:14px;height:14px}.hint svg+svg{width:13px;height:13px}
.dragging,.dragging *{cursor:grabbing!important;user-select:none}
@keyframes bob{50%{transform:translateY(-6px)}}

/* services: doors */
.sec{padding:100px 0}
.sec .wrap{display:flex;flex-direction:column;gap:48px}
.doors{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.door{border-radius:24px;overflow:hidden;transition:box-shadow .5s}
.door:hover{box-shadow:var(--sh2)}
.door .body{display:flex;flex-direction:column;gap:20px;padding:28px}
.door .top{display:flex;align-items:center;gap:14px}
.door .ib{display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:14px;background:var(--p);color:#fff}
.door .ib svg{width:28px;height:28px}
.door h3{font-size:26px;font-weight:700;letter-spacing:-.8px;line-height:1.2}
.door .top small{display:block;font-size:14px;color:var(--mut)}
.door .lk a{display:flex;align-items:center;gap:10px;padding:14px 0;border-top:1px solid var(--line);font-weight:600}
.door .lk span{flex:1}
.door .lk em{font:400 12px "JetBrains Mono",monospace;font-style:normal;color:var(--mut)}
.door .lk em.ok{color:var(--ok)}
.door .lk svg{width:18px;height:18px;color:var(--ink);transition:transform .3s,color .3s}
.door .lk a:hover svg{transform:translate(3px,-3px);color:var(--p)}

/* work */
.works{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.proj{border-radius:14px;overflow:hidden;transition:box-shadow .5s}
.proj:hover{box-shadow:var(--sh2)}
.proj .ph{height:340px;background:var(--ph);overflow:hidden}
.proj .ph img{width:100%;height:100%;object-fit:cover;object-position:top left;transition:transform 1s var(--ease)}
.proj:hover .ph img{transform:scale(1.03)}
.proj .meta{display:flex;justify-content:space-between;align-items:center;height:50px;padding:14px 18px;border-top:2px solid var(--line)}
.proj .meta b{font:700 17px Manrope,sans-serif}
.proj .meta em{font:400 12px "JetBrains Mono",monospace;font-style:normal;color:var(--p)}

/* pricing */
.sec.pr{padding:120px 0}
.offer{display:grid;grid-template-columns:499.5px 1fr;border-radius:28px;overflow:hidden}
.offer .ps{display:flex;flex-direction:column;align-items:flex-start;gap:24px;padding:56px;border-right:1px solid var(--line)}
.badge{display:inline-flex;align-items:center;gap:8px;padding:7px 14px;border-radius:999px;background:var(--p);color:#fff;font:700 12px "JetBrains Mono",monospace;letter-spacing:1.5px}
.badge svg{width:14px;height:14px}
.amt{font:800 96px/96px Manrope,sans-serif;letter-spacing:-5px}
.was{display:flex;gap:10px;align-items:baseline;margin-top:6px}
.was s{font-size:18px;font-weight:600;color:var(--pink)}
.was span{font-size:15px;color:var(--mut)}
.offer .btn{width:100%;padding:20px;border-radius:12px;font-size:17px;font-weight:700}
.trust{display:flex;gap:20px}
.trust span{display:flex;align-items:center;gap:6px;font-size:14px;color:var(--mut)}
.trust svg{width:16px;height:16px;color:var(--ok)}
.offer .inc{display:flex;flex-direction:column;justify-content:center;gap:28px;padding:56px}
.inc-l{font:600 13px "JetBrains Mono",monospace;letter-spacing:2px;color:var(--p)}
.feats{display:grid;grid-template-columns:1fr 1fr;gap:28px 24px}
.feat{display:flex;gap:14px}
.feat .ib{display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:12px;background:#8B5CF626;outline:1px solid #8B5CF64D;outline-offset:-.5px;color:var(--p)}
.feat .ib svg{width:28px;height:28px}
.feat b{display:block;font-size:17px;font-weight:700}
.feat small{display:block;font-size:14px;color:var(--mut)}
.addons{display:flex;align-items:center;gap:16px;margin-top:-16px}
.addons>span{font:400 14px "JetBrains Mono",monospace;color:var(--mut);white-space:nowrap}
.addon{flex:1;display:flex;align-items:center;gap:12px;height:50px;padding:16px 20px;border-radius:14px;font-size:15px;font-weight:600}
.addon svg{width:18px;height:18px;color:var(--p)}
.addon em{margin-left:auto;font:400 12px "JetBrains Mono",monospace;font-style:normal;color:var(--mut)}

/* process */
.sec.proc{padding:40px 0 120px}
.steps{display:flex;align-items:center;gap:16px}
.step{flex:1;display:flex;flex-direction:column;justify-content:space-between;height:280px;padding:28px;border-radius:24px}
.step .top{display:flex;justify-content:space-between;align-items:flex-start}
.step .ib{display:grid;place-items:center;width:52px;height:52px;border-radius:14px;background:#8B5CF626;color:var(--p)}
.step .ib svg{width:30px;height:30px}
.day{padding:6px 12px;border-radius:999px;background:var(--bg);font:600 12px "JetBrains Mono",monospace;color:var(--mut)}
.step .bt{display:flex;flex-direction:column;gap:8px}
.step .no{font:400 14px "JetBrains Mono",monospace;color:var(--p)}
.step h3{font-size:32px;letter-spacing:-1px;line-height:1.2}
.step p{font-size:15px;color:var(--mut)}
.arrow{display:grid;place-items:center;flex:none;width:32px;height:32px;border-radius:16px}
.arrow svg{width:16px;height:16px;color:var(--mut)}
/* active step: purple card. Launch is active by default; v2.js adds .seq and walks .on through the steps one by one */
.step,.step .ib,.step .day,.step .no,.step p,.step h3{transition:background .6s var(--ease),color .6s var(--ease),box-shadow .6s var(--ease),outline-color .6s,translate .7s var(--ease)}
.step.on,.steps:not(.seq) .step.go{background:#8B5CF6E0;outline-color:#FFFFFF66;color:#fff;translate:0 -8px;box-shadow:0 22px 44px #8B5CF64D}
.step.on .ib,.steps:not(.seq) .step.go .ib{background:#FFFFFF26;color:#fff}
.step.on .day,.steps:not(.seq) .step.go .day{background:#fff;color:#4C1D95}
.step.on .no,.steps:not(.seq) .step.go .no{color:#E9DDFF}.step.on p,.steps:not(.seq) .step.go p{color:#EDE9FE}
.step.done .ib{background:var(--p);color:#fff}
/* gooey layers (v2.js adds html.gooey): SVG shapes sit behind the content; hosts get their own stacking layer */
svg.goo{position:absolute;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none;z-index:-1}
.split{position:relative;isolation:isolate}
.gooey .lng a.on{background:transparent}
.gooey .lng a.cur{color:#fff}
.gooey .lng:hover a.on:not(.cur){color:var(--mut)}
.gooey .lng{position:relative;isolation:isolate}
/* split button: More ways peels into contact bubbles */
.split{display:inline-block}
.gooey .split .sp-main{background:transparent;outline:0}
.split .sp-main svg{transition:rotate .5s var(--ease)}.split.open .sp-main svg{rotate:45deg}
.sp-b{position:absolute;z-index:2;display:grid;place-items:center;width:52px;height:52px;border-radius:50%;translate:-50% -50%;color:var(--ink);opacity:0}
.sp-b:hover{color:var(--p)}.sp-b svg{width:20px;height:20px}
html:not(.gooey) .split:not(.open) .sp-b{display:none}html:not(.gooey) .sp-b{background:#fff;box-shadow:var(--sh)}
.split:not(.open) .sp-b{pointer-events:none}
.steps{position:relative}
.step,.arrow{position:relative;z-index:1}
.arrow.lit{background:var(--p);outline-color:var(--p)}.arrow.lit svg{color:#fff}
.arrow{transition:background .5s var(--ease),scale .5s var(--ease)}.arrow.lit{scale:1.15}

/* final CTA */
.fcta{position:relative;overflow:hidden;border-top:1px solid var(--line);padding:40px 0 80px}
.fcta .wrap{position:relative;z-index:1}
.fcta .card{display:flex;flex-direction:column;align-items:center;gap:32px;padding:64px;text-align:center}
.cmd{display:flex;align-items:center;gap:10px;padding:8px 16px;border-radius:999px;font:400 13px "JetBrains Mono",monospace;color:var(--mut)}
.cmd .dots{gap:5px}.cmd .dots i{width:8px;height:8px;outline:0}
.cmd .cur{display:inline-block;width:7px;height:14px;margin-left:2px;background:var(--p);vertical-align:-2px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.fcta h2{font-size:96px;line-height:96px;letter-spacing:-4.5px}
.fcta p{font-size:19px;color:var(--mut)}

/* footer */
.foot{border-top:1px solid var(--line)}
.foot .r1{display:flex;justify-content:space-between;align-items:center;gap:24px;padding:32px 0}
.foot .logo img{height:40px}
.foot .r1 nav{display:flex;flex-wrap:wrap;gap:12px 28px}
.foot .r1 nav a{font-size:14px;font-weight:500;transition:color .25s}
.foot .r2{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:20px 0 28px;border-top:1px solid var(--line)}
.foot .cp{font:400 12px "JetBrains Mono",monospace;color:var(--mut)}
.foot .r2 nav{display:flex;flex-wrap:wrap;gap:8px 24px}
.foot .r2 nav a{font-size:13px;color:var(--mut);transition:color .25s}
.foot nav a:hover{color:var(--p)}
.soc{display:flex;gap:10px}
.soc a{display:grid;place-items:center;width:40px;height:40px;border-radius:20px;color:var(--ink);transition:transform .4s var(--ease),color .25s}
.soc a:hover{transform:translateY(-2px);color:var(--p)}
.soc svg{width:18px;height:18px}

/* motion runs in v2.js (anime.js); html.anim hides what it will bring in, so the page stays visible if the script never loads */
.wm{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.1em;margin-bottom:-.1em}
.w{display:inline-block;will-change:transform}
.hl{transform-origin:left center}
.doors,.works,.addons{perspective:1200px}
.arrow{transition:background .4s,color .4s}
.anim .rv,.anim .hero .wrap>*{opacity:0}
.arrow svg{transition:color .3s}

/* ===== inner pages (pen.dev "Page / …" frames) ===== */
.phero{padding:72px 0 100px}
.phero .wrap{gap:22px}
.crumb{font:600 13px "JetBrains Mono",monospace;color:var(--p)}
.phero h1{font-size:76px;line-height:76px;letter-spacing:-3.5px;max-width:1000px}
.phero .sub{font-size:18px;line-height:27px;max-width:720px;text-wrap:balance}
.hide{display:none!important}
.trust{display:flex;gap:20px;flex-wrap:wrap;justify-content:center}
/* hero slider: a 1040 browser frame you scroll inside, scroll bar to its right, controls under it */
.show{position:relative;width:100%;max-width:1040px;margin-top:22px}
.desk{background:#fff;border-radius:18px;overflow:hidden;box-shadow:0 24px 48px #15123A26;outline:1px solid #15123A1A;outline-offset:-.5px}
.dbar{display:flex;align-items:center;gap:14px;height:40px;padding:0 16px;background:#F4F3FA}
.dots{display:flex;gap:6px}
.durl{display:flex;align-items:center;gap:6px;width:420px;max-width:60%;padding:6px 12px;border-radius:8px;background:#fff;font:400 12px "JetBrains Mono",monospace;color:var(--mut);text-align:left;white-space:nowrap;overflow:hidden}
.durl svg{width:12px;height:12px;flex:none}
.desk .shot{height:657px;overflow-y:auto;scrollbar-width:none}
.desk .shot::-webkit-scrollbar{display:none}
.desk .shot img{width:100%;height:auto;transition:opacity .35s}
.show .track{top:16px;bottom:auto;height:665px;right:-28px}
.sctl{display:flex;align-items:center;justify-content:space-between;margin-top:25px}
.scap,.sarr{flex:1;display:flex;align-items:center;gap:10px}
.sarr{justify-content:flex-end}
.scap b{font:700 13px "JetBrains Mono",monospace;color:var(--p)}
.scap i{width:1px;height:14px;background:var(--line)}
.scap span{font-size:14px;font-weight:600}
.sdots{display:flex;gap:8px}
.sdots button{width:8px;height:8px;padding:0;border:0;border-radius:4px;background:#8B5CF640;cursor:pointer;transition:width .4s var(--ease),background .3s}
.sdots button.on{width:28px;background:var(--p)}
.sarr button{display:grid;place-items:center;width:44px;height:44px;border-radius:22px;border:0;cursor:pointer;background:#fff;outline:1px solid var(--line);outline-offset:-.5px;color:var(--ink);transition:background .25s}
.sarr button svg{width:20px;height:20px}
.sarr .next{background:var(--p);outline:0;color:#fff}.sarr .next:hover{background:#7C3AED}.sarr .prev:hover{background:var(--bg)}
/* packages */
.sec.pk{padding:60px 0 100px}
.sec.pk .sh h2,.sec.demo .sh h2,.flowsec .sh h2{font-size:52px;letter-spacing:-2px}
.pkgs{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.pkg{display:flex;flex-direction:column;gap:22px;padding:32px;border-radius:24px}
.pkg.hot{outline:2px solid var(--p);outline-offset:-1px}
.pkg .top{display:flex;justify-content:space-between;align-items:center}
.pkg .ib{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:#8B5CF61F;color:var(--p)}
.pkg.hot .ib{background:var(--p);color:#fff}
.pkg .ib svg{width:28px;height:28px}
.pkg .tag{padding:6px 12px;border-radius:999px;background:var(--p);color:#fff;font:700 11px "JetBrains Mono",monospace;letter-spacing:1px}
.pkg h3{font-size:24px;font-weight:700;letter-spacing:-.5px}
.pkg small{display:block;margin-top:4px;font-size:14px;color:var(--mut)}
.pkg .pr{display:flex;align-items:baseline;gap:10px}
.pkg .pr b{font:800 52px/52px Manrope,sans-serif;letter-spacing:-2.5px}
.pkg .pr s{font-size:18px;color:var(--pink)}
.pkg .note,.fine{font:400 12px "JetBrains Mono",monospace;color:var(--mut)}
.pkg ul{list-style:none;margin:0;padding:20px 0 0;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:12px;flex:1}
.pkg li{display:flex;gap:10px;align-items:center;font-size:14px}
.pkg li svg{width:16px;height:16px;color:var(--p)}
.pcta{display:block;padding:16px;border-radius:12px;text-align:center;font-size:15px;font-weight:600;background:#fff;outline:1px solid var(--line);outline-offset:-.5px;transition:background .25s}
.pcta:hover{background:var(--bg)}
.pkg.hot .pcta{background:var(--p);color:#fff;outline:0}.pkg.hot .pcta:hover{background:#7C3AED}
.fine{text-align:center;margin-top:-24px}
/* live demo */
.sec.demo{padding:0 0 100px}
.dprev{display:grid;grid-template-columns:720px 1fr;gap:56px;align-items:center}
.dwin{display:block;height:500px;border-radius:24px;overflow:hidden}
.dwin .dbar{height:52px;padding:12px 16px;gap:12px;background:transparent;border-bottom:1px solid var(--line)}
.dwin .durl{background:#15123A0A;width:auto;max-width:none;flex:1}
.live{padding:4px 10px;border-radius:999px;background:#16A34A1F;color:var(--ok);font:700 11px "JetBrains Mono",monospace;white-space:nowrap}
.dimg{height:448px;background:var(--ph);overflow-y:auto;scrollbar-width:none}.dimg::-webkit-scrollbar{display:none}
.dimg img,.dimg video{display:block;width:100%;height:auto;transition:transform 1s var(--ease)}

.dtx{display:flex;flex-direction:column;align-items:flex-start;gap:20px}
.dk{display:flex;align-items:center;gap:8px;font:700 12px "JetBrains Mono",monospace;letter-spacing:1.5px;color:var(--p)}
.dk .ib{display:grid;place-items:center;width:40px;height:40px;border-radius:12px;background:var(--p);color:#fff}
.dk .ib svg{width:23px;height:23px}
.dtx h3{font-size:40px;line-height:42px;letter-spacing:-1.5px}
.dtx p{font-size:17px;line-height:26px;color:var(--mut)}
.chips{display:grid;grid-template-columns:auto auto;gap:10px;justify-content:start}
.chips span{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;background:#FFFFFFB3;outline:1px solid #fff;outline-offset:-.5px;font-size:14px;font-weight:600}
.chips svg{width:18px;height:18px;color:var(--p)}
.btn-d{background:var(--ink);color:#fff;padding:16px 24px;border-radius:12px;font-size:15px}
.btn-d:hover{background:#231E57}
.btn-d svg{width:16px;height:16px}
/* speed proof */
.sec.proof{padding:0 0 100px}
.pcard{display:flex;align-items:center;gap:40px;padding:40px 48px;border-radius:24px}
.ring{position:relative;flex:none;width:140px;height:140px}
.ring svg{width:100%;height:100%;rotate:-90deg}
.ring circle{fill:none;stroke:#16A34A1F;stroke-width:12}
.ring circle.v{stroke:var(--ok);stroke-linecap:round;stroke-dasharray:377;stroke-dashoffset:var(--off,34)}
.ring b{position:absolute;inset:0;display:grid;place-items:center;font:800 44px Manrope,sans-serif;letter-spacing:-2px;color:var(--ok)}
.ptx{flex:1}.ptx h3{font-size:36px;letter-spacing:-1.5px}.ptx p{margin-top:8px;font-size:17px;color:var(--mut)}
/* how it works: scroll-driven progress track (pen.dev storyboard) */
.flowsec{padding:0 0 100px}
.flow{display:grid;grid-template-columns:repeat(3,1fr)}
.fcol{display:flex;flex-direction:column;align-items:center;gap:18px}
.ftrack{display:flex;align-items:center;width:100%;height:64px}
.ftrack>i{flex:1;height:4px;border-radius:2px;background:linear-gradient(var(--p),var(--p)) 0 0/0% 100% no-repeat,var(--line);transition:background-size .6s cubic-bezier(.22,1,.36,1)}
.fcol:first-child .fin,.fcol:last-child .fout{visibility:hidden}
.ftrack>i.fill{background-size:100% 100%}
.node{position:relative;display:grid;place-items:center;flex:none;width:64px;height:64px;border-radius:50%;background:#fff;outline:2px solid var(--line);outline-offset:-2px;transition:background .5s,outline-color .5s}
.node b{font:700 14px "JetBrains Mono",monospace;color:#A5A3C2;transition:color .4s}
.node svg{position:absolute;width:22px;height:22px;color:#fff;scale:.6;opacity:0;transition:scale .5s cubic-bezier(.22,1,.36,1),opacity .3s}
.node::after{content:"";position:absolute;inset:-2px;border-radius:50%;border:3px solid var(--p);opacity:0}
.state{padding:4px 10px;border-radius:999px;font:700 11px "JetBrains Mono",monospace;letter-spacing:1px;color:#A5A3C2;background:transparent;transition:background .4s,color .4s}
.fcard{flex:1;align-self:stretch;margin:0 12px;display:flex;flex-direction:column;gap:10px;padding:22px 24px;border-radius:24px;opacity:.55;transition:opacity .6s,outline-color .4s}
.ft{display:flex;align-items:center;gap:12px}
.ft .ib{display:grid;place-items:center;flex:none;width:36px;height:36px;border-radius:10px;background:#8B5CF61F;color:var(--p)}
.ft .ib svg{width:20px;height:20px}
.ft h3{flex:1;font-size:19px;font-weight:700;letter-spacing:-.4px;line-height:1.2}
.ft em{font:700 14px "JetBrains Mono",monospace;font-style:normal;color:var(--p)}
.fcard p{font-size:15px;line-height:22px;color:var(--mut)}
.fcol.done .node{background:var(--p);outline-color:var(--p)}.fcol.done .node b{opacity:0}.fcol.done .node svg{scale:1;opacity:1}
.fcol.done .state{background:#16A34A1A;color:var(--ok)}
.fcol.now .node{outline-color:var(--p)}.fcol.now .node b{color:var(--p)}
.fcol.now .node::after{animation:pulse 1.6s ease-in-out infinite}
@keyframes pulse{0%{opacity:.9;scale:1}100%{opacity:0;scale:1.15}}
.fcol.now .state{background:var(--p);color:#fff}
.fcol.done .fcard,.fcol.now .fcard{opacity:1}
.fcol.now .fcard{outline:2px solid var(--p);outline-offset:-1px}

/* smaller desktops / tablets */
@media (max-width:1280px){
  .wrap{padding:0 48px}
  .links{gap:0}.links>li>a{padding:8px 11px;font-size:14px}.nav .r{gap:10px}

  .offer{grid-template-columns:420px 1fr}
}
/* the full menu needs ~1180px; below that the burger menu takes over */
@media (max-width:1180px){.show .track{display:none}
  .links{display:none}
  .burger{display:block}
  .nav .r{display:flex;align-items:center;gap:12px}
  .nav.open .links{display:flex;flex-direction:column;align-items:stretch;gap:4px;position:absolute;left:0;right:0;top:100%;max-height:calc(100vh - 70px);overflow:auto;padding:12px 24px 22px;background:var(--bg);border-bottom:1px solid var(--line);border-radius:0;outline:0;box-shadow:none}
  .links>li>a,.links>li>a.trg{justify-content:space-between;padding:10px 14px}
  .mega{display:none;position:static;padding:0;opacity:1;visibility:visible;transform:none}
  .nav.open .has-mega.open .mega{display:block}
  .mm{background:none;outline:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;border-radius:0}
  .mm .cols{flex-direction:column;gap:12px;padding:4px 0 8px}
  .mm .grp,.feat-pl{opacity:1;transform:none}
  .feat-pl{width:auto}
  .mf{display:none}
}
@media (max-width:1024px){
  .phero h1{font-size:56px;line-height:58px;letter-spacing:-2.5px}
  .sec.pk .sh h2,.sec.demo .sh h2,.flowsec .sh h2{font-size:40px}
  .pkgs,.dprev{grid-template-columns:1fr}.dwin{height:auto}.dimg{height:auto;aspect-ratio:16/10}
  .pcard{flex-direction:column;text-align:center;padding:32px}
  .flow{grid-template-columns:1fr;gap:28px}.ftrack{display:none}.fcol{align-items:stretch;gap:10px}.state{align-self:flex-start;margin-left:12px}
  .desk .shot{height:520px}
  .hero h1{font-size:64px;line-height:68px;letter-spacing:-2.5px}
  .sh h2{font-size:48px;letter-spacing:-2px}
  .doors,.works{grid-template-columns:1fr 1fr}
  .offer{grid-template-columns:1fr}.offer .ps{border-right:0;border-bottom:1px solid var(--line)}
  .steps{display:grid;grid-template-columns:1fr 1fr}.arrow{display:none}
  .fcta h2{font-size:72px;line-height:76px;letter-spacing:-3px}
  .foot .r1,.foot .r2{flex-direction:column;align-items:flex-start}
}
@media (max-width:640px){
  .hero.phero{padding:40px 0 64px}.phero h1{font-size:40px;line-height:44px;letter-spacing:-1.6px}.phero h1 br{display:none}
  .desk .shot{height:380px}.durl{max-width:none;flex:1;width:auto}
  .sctl{flex-wrap:wrap;gap:12px}.scap{flex-basis:100%}
  .pkg{padding:24px}.pkg .pr b{font-size:44px;line-height:44px}
  .chips{grid-template-columns:1fr}
  .wrap{padding:0 16px}
  .nav .wrap{min-height:66px}
  .nav-cta,.nav .lng{display:none}
  .hero{padding:56px 0 24px}
  .hero .wrap{gap:24px}
  .track{display:none}
  .hero h1{font-size:44px;line-height:48px;letter-spacing:-1.8px}.hero h1 br{display:none}
  .hl{padding:0 10px .12em;border-radius:10px}
  .hero .sub{font-size:17px}
  .btn{padding:16px 22px}
  .browser .bar{height:40px;padding:8px 12px;gap:10px}.dots i{width:9px;height:9px}.url{padding:5px 10px;font-size:11px}
  .sec,.sec.pr{padding:64px 0}.sec.proc{padding:8px 0 72px}
  .sec .wrap{gap:32px}
  .sh h2{font-size:36px;letter-spacing:-1.4px}.sh p{font-size:16px}
  .doors,.works,.steps,.feats{grid-template-columns:1fr}
  .proj .ph{height:240px}
  .offer .ps,.offer .inc{padding:28px}
  .amt{font-size:72px;line-height:72px;letter-spacing:-3.5px}
  .addons{flex-direction:column;align-items:stretch;margin-top:-8px}
  .step{height:auto;min-height:200px;gap:28px}
  .fcta .card{padding:40px 0}
  .fcta h2{font-size:48px;line-height:52px;letter-spacing:-2px}
  .fcta p{font-size:17px}
  .cmd{font-size:11px}
}
@media (prefers-reduced-motion:reduce){*,::before,::after{animation:none!important;transition:none!important}.rv,.hero .wrap>*{opacity:1!important;transform:none!important}}

/* phones: app-style bottom tab bar + bottom sheets (built in v2.js) */
.tabbar,.sheet,.scrim{display:none}
@media (max-width:768px){
  .nav .links,.nav .burger,.nav-cta,.nav .lng{display:none!important}
  body{padding-bottom:calc(84px + env(safe-area-inset-bottom))}
  .tabbar{display:grid;grid-template-columns:repeat(5,1fr);align-items:end;position:fixed;z-index:60;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));height:64px;padding:0 4px;border-radius:22px;background:#FFFFFFE6;border:1px solid #fff;box-shadow:var(--sh2);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}
  .tabbar>a,.tabbar>button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;height:64px;background:none;border:0;padding:0;font:600 10.5px Inter,sans-serif;color:var(--mut);cursor:pointer;-webkit-tap-highlight-color:transparent}
  .tabbar svg{width:22px;height:22px;transition:transform .3s var(--ease)}
  .tabbar .on{color:var(--p)}.tabbar .on svg{transform:translateY(-1px)}
  .tabbar .start{align-self:start;justify-self:center;width:58px;height:58px;margin-top:-18px;border-radius:50%;background:var(--ink);box-shadow:0 10px 24px #15123A40}
  .tabbar .start img{width:24px;height:auto;filter:brightness(0) invert(1)}
  .scrim{display:block;position:fixed;inset:0;z-index:58;background:#15123A40;opacity:0;pointer-events:none;transition:opacity .3s}
  .scrim.open{opacity:1;pointer-events:auto}
  .sheet{display:block;position:fixed;z-index:59;left:0;right:0;bottom:0;max-height:78vh;overflow:auto;padding:14px 16px calc(96px + env(safe-area-inset-bottom));border-radius:24px 24px 0 0;background:#fff;box-shadow:0 -12px 40px #15123A26;transform:translateY(100%);visibility:hidden;transition:transform .45s var(--ease),visibility .45s}
  .sheet.open{transform:none;visibility:visible}
  .sh-h{display:flex;align-items:center;justify-content:space-between;padding:4px 4px 10px;font:700 17px Manrope,sans-serif;color:var(--ink)}
  .sh-x{display:grid;place-items:center;width:36px;height:36px;border:0;border-radius:50%;background:var(--bg);color:var(--ink)}.sh-x svg{width:18px;height:18px}
  .sheet .mi{display:flex;align-items:center;gap:12px;padding:10px 8px;border-radius:14px}
  .sheet .mi .tg{display:none}
  .sh-l{display:flex;gap:6px;padding:14px 8px 0}.sh-l a{padding:8px 18px;border-radius:999px;background:var(--bg);font:700 13px "JetBrains Mono",monospace;color:var(--mut)}.sh-l a.on{background:var(--ink);color:#fff}
}
/* phones: compact footer. The tab bar and its sheets already hold the page links, so keep logo + socials, Prices/Terms, copyright */
@media (max-width:768px){
  .foot .wrap{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:16px 0;padding-top:24px;padding-bottom:24px}
  .foot .r1,.foot .r2{display:contents}
  .foot .r1 nav,.foot .r2 nav a:not([href$="#pricing"]):not([href="terms"]){display:none}
  .foot .logo{grid-row:1;grid-column:1}.foot .logo img{height:34px}
  .foot .soc{grid-row:1;grid-column:2;justify-self:end;gap:8px}.foot .soc a{background:#fff;box-shadow:var(--sh)}
  .foot .r2 nav{grid-row:2;grid-column:1/-1;gap:20px;padding-top:16px;border-top:1px solid var(--line)}
  .foot .cp{grid-row:3;grid-column:1/-1;font-size:11px;line-height:1.6}
}
/* phones: button pairs sit side by side (owner rule), shrinking instead of stacking. body+:is() outranks the v2p page sheets */
@media (max-width:640px){
  body :is(.ctas,.pl-bbtn,.pl-fbtns,.btns){display:flex;flex-direction:row;flex-wrap:nowrap;width:100%;gap:8px}
  body :is(.ctas,.pl-bbtn,.pl-fbtns,.btns)>.btn{flex:1 1 0;min-width:0;width:auto;padding:14px 10px;font-size:15px;line-height:1.25;gap:6px;text-align:center}
  body :is(.ctas,.pl-bbtn,.pl-fbtns,.btns)>.btn svg{display:none}
  body .pl-fbtns{flex-wrap:wrap}body .pl-fbtns>.pl-lnk{flex-basis:100%}
}
/* phones: the whole layout 20% smaller (owner: too big). zoom keeps every breakpoint and spacing in proportion */
@media (max-width:640px){html{zoom:.8}}

/* site carousel (About hero + Home Recent work): side cards tilt, tap/swipe/dots bring one to the centre; logic in v2.js */
.ab-show{position:relative;width:100%;height:480px;margin-top:22px;perspective:1800px}
.ab-s{position:absolute;margin:0;top:70px;width:44%;border-radius:14px;overflow:hidden;background:#fff;box-shadow:0 30px 60px #15123A33;outline:1px solid #15123A14}
.ab-s img{width:100%;height:auto;pointer-events:none}
/* carousel: tap a side card or swipe to bring it to the centre (script in about.html); every slot uses left so moves animate */
.ab-show{touch-action:pan-y;user-select:none;-webkit-user-select:none}
.ab-s{z-index:1;cursor:pointer;transition:opacity .5s,left .7s var(--ease),top .7s var(--ease),width .7s var(--ease),transform .7s var(--ease),translate .7s var(--ease)}
.ab-s.c{cursor:default}
.ab-s.h{left:50%;translate:-50% 0;transform:scale(.8);opacity:0;z-index:0;pointer-events:none}
.ab-dots{display:flex;justify-content:center;gap:8px;margin-top:14px}
.ab-dots button{width:8px;height:8px;padding:0;border:0;border-radius:4px;background:var(--line);cursor:pointer;transition:width .4s var(--ease),background .3s}
.ab-dots button.on{width:24px;background:var(--p)}
/* all three stay inside the box; centre card flat so it stays sharp */
.ab-s.c{left:50%;top:16px;width:58%;translate:-50% 0;z-index:2}
.ab-s.l{left:0;transform:rotateY(18deg);transform-origin:left center}
.ab-s.r{left:56%;transform:rotateY(-18deg);transform-origin:right center}
@media (max-width:1024px){.ab-show{height:380px}}
@media (max-width:640px){.ab-show{height:190px;margin-top:8px}.ab-s{top:34px;border-radius:8px}.ab-s.c{top:8px}}
/* consent stays one row: the "never shared" half drops on phones */
.consent .nx{font-style:normal}@media (max-width:640px){.consent .nx{display:none}}
/* phones: the 4 process steps as a compact 2x2 grid instead of 4 tall cards */
@media (max-width:640px){
  .steps{grid-template-columns:1fr 1fr;grid-auto-rows:1fr;gap:10px}
  .step{height:auto;min-height:0;gap:14px;padding:16px;border-radius:18px}
  .step .ib{width:38px;height:38px;border-radius:11px}.step .ib svg{width:20px;height:20px}
  .step .day{padding:4px 8px;font-size:10.5px}
  .step .no{display:none}
  .step .bt{gap:4px}.step h3{font-size:20px;letter-spacing:-.5px}.step p{font-size:13px;line-height:1.35}
  .step.on,.steps:not(.seq) .step.go{translate:none}
}
/* phones: feature chips two per row, full width, instead of a single column */
@media (max-width:640px){.chips{grid-template-columns:1fr 1fr;gap:8px}.chips span{gap:7px;padding:9px 10px;font-size:13px}.chips svg{flex:none;width:16px;height:16px}}
/* phones: hero trust ticks stay on one row (no lone third tick) */
@media (max-width:640px){.trust{flex-wrap:nowrap;gap:12px}.trust span{font-size:13px;white-space:nowrap;gap:4px}.trust svg{width:14px;height:14px}}
.sh-g{margin:12px 4px 6px;padding-top:14px;border-top:1px solid var(--line,#ECEAF5);font:700 12px Inter,sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}
