:root{
  --bg:#fafaf7; --ink:#14181f; --muted:#5b6472; --line:#e4e2da;
  --card:#ffffff; --accent:#0f6b5c; --accent-ink:#ffffff; --soft:#e8f2ef;
  --down:#0f6b5c; --up:#b4532a; --up-soft:#f6e9e2;
}
@media (prefers-color-scheme: dark){
  :root{ --bg:#0f1316; --ink:#eef1f3; --muted:#9aa4af; --line:#262d33;
         --card:#161b1f; --accent:#4cc9ae; --accent-ink:#06201a; --soft:#13221f;
         --down:#4cc9ae; --up:#f0976b; --up-soft:#2a1d17; }
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);
     font:17px/1.6 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
a{color:var(--accent)}
.wrap{max-width:1040px;margin:0 auto;padding:0 20px}
header{padding:16px 0;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20;background:var(--bg)}
header .wrap{display:flex;justify-content:space-between;align-items:center;gap:16px}
.brand{font-weight:700;letter-spacing:-.01em;display:flex;align-items:center;gap:10px;color:var(--ink);text-decoration:none}
.brand svg{width:26px;height:26px}
nav.desk a{color:var(--muted);text-decoration:none;margin-left:20px;font-size:15px;padding:6px 0;border-bottom:2px solid transparent}
nav.desk a:hover{color:var(--ink)}
nav.desk a.on{color:var(--ink);border-bottom-color:var(--accent)}
.mob{display:none;position:relative}
.mob summary{list-style:none;cursor:pointer;width:44px;height:44px;display:grid;place-items:center;border-radius:10px;border:1px solid var(--line);color:var(--ink)}
.mob summary::-webkit-details-marker{display:none}
.mob .menu{position:absolute;right:0;top:52px;min-width:210px;background:var(--card);border:1px solid var(--line);
           border-radius:12px;padding:6px;box-shadow:0 18px 40px -20px rgba(0,0,0,.4);z-index:30}
.mob .menu a{display:block;padding:13px 14px;color:var(--ink);text-decoration:none;border-radius:8px}
.mob .menu a.on{background:var(--soft);color:var(--accent);font-weight:600}

.hero{position:relative;padding:64px 0 56px;display:grid;gap:40px;align-items:center;grid-template-columns:1.05fr 1fr}
h1{font-size:clamp(32px,5vw,54px);line-height:1.08;letter-spacing:-.03em;margin:0 0 18px}
.lead{font-size:19px;color:var(--muted);max-width:56ch;margin:0 0 28px}
.btn{display:inline-block;background:var(--accent);color:var(--accent-ink);padding:13px 22px;border-radius:10px;
     text-decoration:none;font-weight:600;min-height:46px;border:0;font:inherit;font-weight:600;cursor:pointer}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line);margin-left:10px}

.pagehead{padding:56px 0 36px;border-bottom:1px solid var(--line);position:relative}
.crumb{color:var(--muted);font-size:14px;margin-bottom:10px}
.crumb a{color:var(--muted)}
.pagehead h1{font-size:clamp(30px,4.5vw,44px);margin-bottom:12px}
.pagehead .lead{margin:0}

.sheet{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 40px -22px rgba(15,60,50,.35);overflow:hidden;font-size:14px}
.sheet-top{display:flex;align-items:center;gap:8px;padding:11px 14px;border-bottom:1px solid var(--line);color:var(--muted)}
.dot{width:9px;height:9px;border-radius:50%;background:var(--line)}
.sheet-top b{margin-left:6px;color:var(--ink);font-weight:600;font-size:13px}
.row{display:grid;grid-template-columns:1.6fr .8fr .8fr .9fr;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);align-items:center}
.row.head{background:var(--soft);color:var(--muted);font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.chg{font-weight:600;font-size:13px;padding:2px 8px;border-radius:99px;justify-self:start}
.chg.d{color:var(--down);background:var(--soft)} .chg.u{color:var(--up);background:var(--up-soft)} .chg.n{color:var(--muted)}
.sheet-foot{padding:12px 14px;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:12px}
.sheet-foot svg{width:120px;height:30px}

section{padding:56px 0;border-top:1px solid var(--line)}
.pagehead + section{border-top:0}
h2{font-size:28px;letter-spacing:-.02em;margin:0 0 8px}
h3{margin:0 0 6px;font-size:18px}
.sub{color:var(--muted);margin:0 0 28px;max-width:62ch}
.grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}
.grid.four{grid-template-columns:repeat(4,1fr)}
@media (max-width:980px){.grid.four{grid-template-columns:repeat(2,1fr)}}
@media (max-width:560px){.grid.four{grid-template-columns:1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:22px}
.card p{margin:0;color:var(--muted);font-size:16px}
a.card{display:block;color:inherit;text-decoration:none;transition:transform .15s,border-color .15s,box-shadow .15s}
a.card:hover,a.card:focus-visible{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 14px 28px -18px rgba(15,60,50,.45);outline:none}
.more{display:block;margin-top:14px;color:var(--accent);font-weight:600;font-size:15px}
.ico{width:44px;height:44px;border-radius:12px;background:var(--soft);display:grid;place-items:center;margin-bottom:14px}
.ico svg{width:24px;height:24px;stroke:var(--accent);fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.tag{display:inline-block;font-size:12px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--accent);background:var(--soft);padding:3px 9px;border-radius:99px;margin-bottom:12px}
.demo .art{height:96px;border-radius:10px;background:var(--soft);margin-bottom:16px;display:grid;place-items:center;overflow:hidden}
.demo .art svg{width:100%;height:100%}
.checks{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:8px}
.checks li{padding-left:28px;position:relative;color:var(--muted);font-size:16px}
.checks li::before{content:"";position:absolute;left:0;top:5px;width:18px;height:18px;border-radius:50%;background:var(--soft)}
.checks li::after{content:"";position:absolute;left:6px;top:9px;width:5px;height:9px;border:solid var(--accent);border-width:0 2px 2px 0;transform:rotate(45deg) scale(.85);transform-origin:center}

.split{display:grid;gap:36px;grid-template-columns:1fr 1fr;align-items:center}
.split.top{align-items:start}
.row-card{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:start;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:24px;margin-bottom:16px}
.row-card .ico{margin:0}

.flow{display:grid;grid-template-columns:repeat(3,1fr)}
.flow .step{padding:0 18px 0 0;position:relative}
.flow .num{width:44px;height:44px;border-radius:50%;background:var(--accent);color:var(--accent-ink);font-weight:700;display:grid;place-items:center;margin-bottom:14px;position:relative;z-index:1}
.flow .step::before{content:"";position:absolute;top:22px;left:44px;right:0;border-top:2px dashed var(--line)}
.flow .step:last-child::before{display:none}
.flow b{display:block;margin-bottom:4px;font-size:18px}
.flow p{margin:0;color:var(--muted);font-size:16px}

.price{display:flex;flex-wrap:wrap;gap:16px}
.plan{flex:1 1 260px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:24px;display:block;color:inherit;text-decoration:none;transition:transform .15s,border-color .15s,box-shadow .15s}
.plan:hover,.plan:focus-visible{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 14px 28px -18px rgba(15,60,50,.45);outline:none}
.plan .n{font-size:40px;font-weight:700;letter-spacing:-.02em;display:block}
.plan .l{color:var(--muted);font-size:15px}
.plan .go{display:block;margin-top:14px;color:var(--accent);font-weight:600;font-size:15px}
.plan.hi{border-color:var(--accent);background:linear-gradient(180deg,var(--soft),var(--card) 70%)}
.note{color:var(--muted);font-size:15px;margin-top:16px}

.faq details{background:var(--card);border:1px solid var(--line);border-radius:12px;margin-bottom:10px}
.faq summary{cursor:pointer;padding:16px 18px;font-weight:600;list-style:none;display:flex;justify-content:space-between;gap:12px;min-height:44px;align-items:center}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";color:var(--accent);font-size:22px;line-height:1}
.faq details[open] summary::after{content:"\2212"}
.faq details p{margin:0;padding:0 18px 16px;color:var(--muted);font-size:16px}

form{display:grid;gap:14px}
label{font-weight:600;font-size:15px;display:grid;gap:6px}
input,textarea,select{font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:10px;padding:12px 14px;width:100%;min-height:46px}
input:focus,textarea:focus,select:focus{outline:2px solid var(--accent);outline-offset:1px}
textarea{min-height:130px;resize:vertical}
.hint{font-weight:400;color:var(--muted);font-size:14px}

.cta{background:var(--soft);border-radius:18px;padding:36px;display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}
.cta h2{margin:0 0 4px}
.cta p{margin:0;color:var(--muted)}
.cta-wrap{padding:56px 0;border-top:1px solid var(--line)}

footer{padding:34px 0;border-top:1px solid var(--line);color:var(--muted);font-size:14px}
footer .wrap{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px}
footer nav a{color:var(--muted);margin-right:16px;text-decoration:none}
footer nav a:hover{color:var(--ink)}

@media (max-width:820px){
  .hero{grid-template-columns:1fr;padding:40px 0 44px;gap:32px}
  .hero::before,.pagehead::before{display:none}
  .split{grid-template-columns:1fr}
  .flow{grid-template-columns:1fr;gap:26px}
  .flow .step{padding:0}.flow .step::before{display:none}
  nav.desk{display:none}.mob{display:block}
  section{padding:44px 0}.pagehead{padding:40px 0 28px}
  .cta{padding:26px}
}
@media (max-width:560px){
  body{font-size:16px}
  .wrap{padding:0 16px}
  h2{font-size:24px}.lead{font-size:17px}
  .hero .btn,.btn{display:block;text-align:center;width:100%}
  .btn.ghost{margin:10px 0 0}
  .row{grid-template-columns:1.3fr .9fr .9fr 1fr;gap:4px;padding:9px 10px;font-size:12.5px}
  .row.head{font-size:10.5px;letter-spacing:.02em}
  .chg{font-size:11.5px;padding:2px 6px}
  .sheet-foot svg{width:90px}
  .plan .n{font-size:34px}.plan{flex-basis:100%}
  .row-card{grid-template-columns:1fr;gap:12px;padding:20px}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.plan,a.card{transition:none}}

/* ---------- 3D orbs + glass ---------- */
:root{
  --glass:rgba(255,255,255,.62); --glass-line:rgba(255,255,255,.75); --glass-shadow:rgba(15,70,58,.22);
  --ring:rgba(15,107,92,.16); --glow:rgba(40,190,160,.28);
  --s1:#8be6cf; --s2:#1fa88c; --s3:#0b5a4d;
}
@media (prefers-color-scheme: dark){
  :root{ --glass:rgba(24,32,36,.55); --glass-line:rgba(255,255,255,.10); --glass-shadow:rgba(0,0,0,.5);
         --ring:rgba(76,201,174,.20); --glow:rgba(40,190,160,.22);
         --s1:#7bf0d3; --s2:#1b9c82; --s3:#07352d; }
}
html,body{overflow-x:clip}
.bg-orbs{position:fixed;inset:0;z-index:-1;overflow:hidden;pointer-events:none}
.bg-orbs i{position:absolute;display:block;border-radius:50%}
.bg-orbs .ring{width:760px;height:760px;right:-200px;top:-80px;border:96px solid var(--ring);
  box-shadow:inset 0 0 60px rgba(255,255,255,.25),0 0 80px rgba(15,107,92,.08)}
.bg-orbs .orb{background:radial-gradient(circle at 30% 26%,var(--s1) 0,var(--s2) 42%,var(--s3) 100%);
  box-shadow:0 40px 60px -30px rgba(7,60,50,.55),inset -14px -18px 34px rgba(0,0,0,.22),inset 10px 12px 26px rgba(255,255,255,.28)}
.bg-orbs .o1{width:190px;height:190px;right:9%;top:30%;animation:float 9s ease-in-out infinite}
.bg-orbs .o2{width:96px;height:96px;left:-52px;bottom:14%;animation:float 11s ease-in-out -3s infinite}
.bg-orbs .glow{filter:blur(70px);background:var(--glow)}
.bg-orbs .g1{width:480px;height:480px;left:-160px;top:20%}
.bg-orbs .g2{width:420px;height:420px;right:-120px;bottom:-120px}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-16px)}}

header{background:var(--glass);-webkit-backdrop-filter:blur(16px) saturate(150%);backdrop-filter:blur(16px) saturate(150%)}
.card,.plan,.row-card,.faq details,.sheet,.mob .menu{
  background:var(--glass);border:1px solid var(--glass-line);
  -webkit-backdrop-filter:blur(16px) saturate(150%);backdrop-filter:blur(16px) saturate(150%);
  box-shadow:0 18px 40px -22px var(--glass-shadow),inset 0 1px 0 rgba(255,255,255,.5)}
.plan.hi{background:linear-gradient(180deg,rgba(40,190,160,.22),var(--glass) 75%);border-color:var(--accent)}
.cta{background:linear-gradient(135deg,rgba(40,190,160,.24),var(--glass));border:1px solid var(--glass-line);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}
.demo .art{background:linear-gradient(135deg,rgba(40,190,160,.22),rgba(255,255,255,.18))}
.sheet-top,.row{border-color:var(--glass-line)}
.row.head{background:rgba(40,190,160,.14)}
@supports not ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
  .card,.plan,.row-card,.faq details,.sheet,header,.mob .menu{background:var(--card)}
}

/* 3D stage for the hero sheet */
.stage{position:relative;perspective:1100px;padding:18px 0}
.stage .sheet{transform:rotateY(-11deg) rotateX(5deg);transform-style:preserve-3d;transition:transform .25s ease-out;will-change:transform}
.chip{position:absolute;padding:8px 14px;border-radius:99px;font-size:13px;font-weight:600;
  background:var(--glass);border:1px solid var(--glass-line);color:var(--ink);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  box-shadow:0 16px 30px -14px var(--glass-shadow);animation:float 7s ease-in-out infinite}
.chip.c1{left:-22px;top:-4px;color:var(--down)}
.chip.c2{right:-10px;bottom:-6px;animation-delay:-3s}

@media (max-width:820px){
  .bg-orbs .ring{width:460px;height:460px;right:-190px;top:40px;border-width:60px}
  .bg-orbs .o1{width:90px;height:90px;right:-34px;top:58%}
  .stage .sheet{transform:none}
  .chip.c1{left:6px;top:-10px}.chip.c2{right:6px}
}
@media (prefers-reduced-motion:reduce){
  .bg-orbs .orb,.chip{animation:none}
  .stage .sheet{transition:none}
}

/* ---------- motion & hover ---------- */
:root{--rw:96px}
@media (max-width:820px){:root{--rw:60px}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes blink{50%{opacity:0}}
@keyframes draw{to{stroke-dashoffset:0}}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(40,190,160,.55)}70%{box-shadow:0 0 0 16px rgba(40,190,160,0)}100%{box-shadow:0 0 0 0 rgba(40,190,160,0)}}

/* spinning ring with a visible gradient, and a small ball riding on it */
.bg-orbs .ring{border:0;box-shadow:none;
  background:conic-gradient(rgba(15,107,92,.05),rgba(40,190,160,.34),rgba(15,107,92,.05) 55%,rgba(40,190,160,.24),rgba(15,107,92,.05));
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - var(--rw)),#000 calc(100% - var(--rw) + 1px));
  mask:radial-gradient(farthest-side,transparent calc(100% - var(--rw)),#000 calc(100% - var(--rw) + 1px));
  animation:spin 70s linear infinite}
.bg-orbs .orbit{width:760px;height:760px;right:-200px;top:-80px;animation:spin 26s linear infinite reverse}
.bg-orbs .orbit::after{content:"";position:absolute;width:34px;height:34px;border-radius:50%;left:calc(50% - 17px);top:calc(var(--rw)/2 - 17px);
  background:radial-gradient(circle at 30% 26%,var(--s1),var(--s2) 45%,var(--s3));box-shadow:0 10px 18px -8px rgba(7,60,50,.6),inset -4px -5px 9px rgba(0,0,0,.25)}
@media (max-width:820px){.bg-orbs .orbit{width:460px;height:460px;right:-190px;top:40px}}
.bg-orbs .orb,.bg-orbs .ring,.bg-orbs .orbit{transition:translate .6s ease-out}
.bg-orbs .o1{translate:calc(var(--mx,0)*-26px) calc(var(--my,0)*-20px - var(--sy,0)*.06px)}
.bg-orbs .o2{translate:calc(var(--mx,0)*34px) calc(var(--my,0)*26px - var(--sy,0)*.12px)}
.bg-orbs .ring,.bg-orbs .orbit{translate:calc(var(--mx,0)*12px) calc(var(--my,0)*10px - var(--sy,0)*.04px)}
.bg-orbs .o1{animation:float 9s ease-in-out infinite}

/* typing headline */
h1 .w{display:inline-block;white-space:nowrap}
.js h1 .ch{opacity:0}
.js h1 .ch.on{opacity:1}
h1 .ch{position:relative}
h1 .ch.cur::after{content:"";position:absolute;right:-.07em;top:.12em;bottom:.06em;width:.07em;border-radius:2px;background:var(--accent);animation:blink .8s steps(1) infinite}

/* entrance + scroll reveal (only when JS is running) */
.js .seq{opacity:0;translate:0 18px;transition:opacity .6s ease,translate .6s cubic-bezier(.2,.7,.2,1)}
.js .seq.in{opacity:1;translate:0 0}
.js .rv{opacity:0;translate:0 28px}
.js .rv.in{opacity:1;translate:0 0}
.js .rv{transition:opacity .7s ease var(--d,0s),translate .7s cubic-bezier(.2,.7,.2,1) var(--d,0s)}
.js .card.rv,.js .plan.rv,.js .row-card.rv{transition:opacity .7s ease var(--d,0s),translate .7s cubic-bezier(.2,.7,.2,1) var(--d,0s),transform .25s ease,box-shadow .25s ease,border-color .25s ease}

/* cards: 3D tilt, glare, icon + arrow motion */
.card,.plan,.row-card{position:relative;
  transform:perspective(900px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
  transition:transform .25s ease,box-shadow .25s ease,border-color .25s ease}
.card::before,.plan::before,.row-card::before{content:"";position:absolute;inset:0;border-radius:inherit;z-index:-1;pointer-events:none;opacity:0;transition:opacity .25s;
  background:radial-gradient(280px circle at var(--px,50%) var(--py,0%),rgba(255,255,255,.65),transparent 62%)}
@media (prefers-color-scheme: dark){.card::before,.plan::before,.row-card::before{background:radial-gradient(280px circle at var(--px,50%) var(--py,0%),rgba(76,201,174,.20),transparent 62%)}}
.card:hover::before,.plan:hover::before,.row-card:hover::before{opacity:1}
.card:hover,a.card:hover,a.card:focus-visible,.plan:hover,.plan:focus-visible,.row-card:hover{
  transform:perspective(900px) translateY(-7px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));
  border-color:var(--accent);box-shadow:0 26px 44px -22px var(--glass-shadow),0 0 0 1px rgba(40,190,160,.18),inset 0 1px 0 rgba(255,255,255,.5)}
.ico{transition:transform .35s cubic-bezier(.3,1.6,.5,1),background .25s}
.ico svg{transition:stroke .25s}
.card:hover .ico,.row-card:hover .ico{transform:rotate(-8deg) scale(1.12);background:var(--accent)}
.card:hover .ico svg,.row-card:hover .ico svg{stroke:var(--accent-ink)}
.more,.plan .go{transition:transform .25s}
.card:hover .more,.plan:hover .go{transform:translateX(7px)}
.plan .n{transition:transform .3s}
.plan:hover .n{transform:scale(1.04);transform-origin:left}
.demo .art{transition:transform .35s}
.demo:hover .art{transform:scale(1.04)}

/* buttons: shine sweep, lift, press, attention pulse */
.btn{position:relative;overflow:hidden;transition:transform .2s ease,box-shadow .25s ease,background .25s,border-color .25s}
.btn::after{content:"";position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,rgba(255,255,255,.42) 50%,transparent 70%);transform:translateX(-130%)}
.btn:hover::after{transform:translateX(130%);transition:transform .75s ease}
.btn:hover{transform:translateY(-3px);box-shadow:0 16px 28px -12px rgba(15,107,92,.65)}
.btn:active{transform:translateY(0) scale(.97);box-shadow:none}
.btn.ghost:hover{background:var(--soft);border-color:var(--accent);box-shadow:0 12px 22px -14px var(--glass-shadow)}
.hero .btn:not(.ghost){animation:pulse 2.8s ease-out 2.5s infinite}

/* nav, logo, rows, faq */
nav.desk a,nav.desk a.on{border-bottom:0}
nav.desk a{position:relative}
nav.desk a::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:2px;border-radius:2px;background:var(--accent);transform:scaleX(0);transform-origin:left;transition:transform .28s ease}
nav.desk a:hover::after,nav.desk a.on::after{transform:scaleX(1)}
.brand svg{transition:transform .35s cubic-bezier(.3,1.6,.5,1)}
.brand:hover svg{transform:rotate(-12deg) scale(1.12)}
.row:not(.head){transition:background .2s}
.row:not(.head):hover{background:rgba(40,190,160,.14)}
.faq details{transition:border-color .2s,transform .2s}
.faq details:hover{border-color:var(--accent);transform:translateX(4px)}
.faq summary::after{transition:transform .25s}
.mob .menu a{transition:background .2s,padding-left .2s}
.mob .menu a:hover{background:var(--soft);padding-left:20px}
footer nav a{transition:color .2s,transform .2s;display:inline-block}
footer nav a:hover{transform:translateY(-2px)}

/* line drawing */
.js .sheet-foot polyline{stroke-dasharray:220;stroke-dashoffset:220;animation:draw 1.8s ease 1.6s forwards}
.js .demo .art polyline{stroke-dasharray:420;stroke-dashoffset:420}
.js .demo.in .art polyline{animation:draw 1.6s ease .3s forwards}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none !important;transition:none !important}
  .js .rv,.js .seq{opacity:1;translate:none}
  .js .sheet-foot polyline,.js .demo .art polyline{stroke-dashoffset:0}
}
