/* Whispa 2.0 site — "celestial pearl". Evolventa (our app headline face) + Manrope. */
@font-face{font-family:'Evolventa';font-weight:700;font-style:normal;font-display:swap;src:url(/fonts/Evolventa-Bold.woff2) format('woff2')}
@font-face{font-family:'Evolventa';font-weight:700;font-style:italic;font-display:swap;src:url(/fonts/Evolventa-BoldOblique.woff2) format('woff2')}

:root{
  --page:#F6F1F4;--ink:#1C1A24;--ink-2:#5E5868;--muted:#8A8494;--hair:rgba(28,26,36,.08);
  --rose:#B42A64;--rose-2:#E86AAE;--lilac:#B98AE8;--sky:#9FC7F0;
  --display:'Evolventa',system-ui,sans-serif;--body:'Manrope',system-ui,sans-serif;--hand:'Caveat',cursive;
  --iri:conic-gradient(from 200deg,#ffd6ec,#e3d4ff,#cfe6ff,#ffe9d6,#ffd6ec);
  --grad:linear-gradient(100deg,#B42A64 8%,#E86AAE 45%,#9C6BE0 88%);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--page);color:var(--ink);font-family:var(--body);font-size:18px;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,video{max-width:100%;display:block}
a{color:inherit}
.wrap{width:min(1180px,calc(100% - 40px));margin:0 auto}
.skip{position:absolute;left:-9999px}.skip:focus{left:16px;top:16px;z-index:99;background:#fff;padding:8px 12px;border-radius:8px}

/* sky: pearl light + faint star dust */
.sky{position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(60vw 50vw at 88% -10%,rgba(233,190,255,.55),transparent 60%),radial-gradient(55vw 45vw at -10% 18%,rgba(255,196,224,.55),transparent 60%),radial-gradient(50vw 40vw at 60% 112%,rgba(205,226,255,.5),transparent 60%),var(--page)}
.sky::after{content:"";position:absolute;inset:0;opacity:.6;background-size:520px 520px;
  background-image:radial-gradient(1.2px 1.2px at 12% 18%,#fff,transparent),radial-gradient(1px 1px at 33% 72%,#fff,transparent),radial-gradient(1.4px 1.4px at 58% 28%,#fff,transparent),radial-gradient(1px 1px at 81% 64%,#fff,transparent),radial-gradient(1.2px 1.2px at 91% 12%,#fff,transparent),radial-gradient(1px 1px at 22% 92%,#fff,transparent)}

/* our four-point spark */
.spark,.eyebrow::before,.btn.mag::before{display:inline-block;width:.7em;height:.7em;background:currentColor;flex:none;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-9 -9 18 18'%3E%3Cpath d='M0-8C.6-2.6 2.6-.6 8 0 2.6.6.6 2.6 0 8-.6 2.6-2.6.6-8 0c5.4-.6 7.4-2.6 8-8'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-9 -9 18 18'%3E%3Cpath d='M0-8C.6-2.6 2.6-.6 8 0 2.6.6.6 2.6 0 8-.6 2.6-2.6.6-8 0c5.4-.6 7.4-2.6 8-8'/%3E%3C/svg%3E") center/contain no-repeat}
/* scattered sparks (decor) */
.sp{position:absolute;pointer-events:none;width:18px;height:18px;opacity:.5;z-index:0}
.sp.s{width:12px;height:12px}.sp.l{width:26px;height:26px}
.sp.p{color:var(--rose-2)}.sp.v{color:var(--lilac)}.sp.b{color:var(--sky)}
@media (prefers-reduced-motion:no-preference){.sp{animation:twinkle 4.8s ease-in-out infinite}.sp:nth-of-type(2n){animation-delay:-2s}.sp:nth-of-type(3n){animation-delay:-3.4s}}
@keyframes twinkle{0%,100%{opacity:.5;transform:scale(1)}50%{opacity:.15;transform:scale(.7)}}
.decor{position:absolute;pointer-events:none;z-index:0}

/* pearl surface: soft, iridescent hairline — no black outline, no hard shadow */
.pearl,.bubble,.doc .box{position:relative;background:linear-gradient(160deg,rgba(255,255,255,.88),rgba(255,255,255,.56));
  -webkit-backdrop-filter:blur(18px) saturate(160%);backdrop-filter:blur(18px) saturate(160%);
  border-radius:28px;box-shadow:inset 0 1px 0 #fff,0 30px 60px -34px rgba(90,40,120,.38)}
.pearl::before,.bubble::before,.doc .box::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.2px;background:var(--iri);pointer-events:none;opacity:.9;
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude}

h1,h2,h3{font-family:var(--display);font-weight:700;margin:0;letter-spacing:-.025em;line-height:1.04}
em,.accent{font-family:var(--display);font-style:italic;font-weight:700}
.grad,h1 em,h2 em,h2 .accent{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;padding:0 .14em .12em 0;margin-right:-.1em;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.eyebrow{display:inline-flex;align-items:center;gap:10px;margin:0 0 20px;font-weight:800;font-size:13px;letter-spacing:.22em;text-transform:uppercase;color:var(--rose)}
.eyebrow::before{content:"";width:12px;height:12px}
.lead{font-size:20px;color:var(--ink-2);max-width:560px;margin:20px 0 0}
.note{font-family:var(--hand);font-weight:700;font-size:28px;line-height:1;color:var(--rose);transform:rotate(-3deg);display:inline-block}

/* brush highlight on one key phrase */
.hl{color:var(--ink);font-weight:700;padding:0 .14em;margin:0 -.08em;-webkit-box-decoration-break:clone;box-decoration-break:clone;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24' preserveAspectRatio='none'%3E%3Cpath d='M4 16C30 9 62 7 98 8c34 1 62 4 98 1l-3 9c-30 4-64 2-96 1C64 18 33 20 5 23z' fill='%23F9A9CD'/%3E%3C/svg%3E") 0 88%/100% 58% no-repeat}
.hl-l{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24' preserveAspectRatio='none'%3E%3Cpath d='M3 14C34 8 66 6 100 8c32 2 64 5 97 2l-2 9c-33 3-65 1-97 0C67 18 35 19 4 22z' fill='%23CDB8FF'/%3E%3C/svg%3E")}
.hl-b{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24' preserveAspectRatio='none'%3E%3Cpath d='M5 15C33 9 63 8 97 9c35 1 64 3 99 0l-3 10c-31 3-63 1-96 0C65 18 34 20 4 23z' fill='%23FFD772'/%3E%3C/svg%3E")}

/* header */
.top{position:sticky;top:0;z-index:50;padding:14px 0}
.nav{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 10px 10px 18px;border-radius:999px}
.top .wrap>.brand{display:none}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none}
.brand img:first-child{width:38px;height:38px;border-radius:11px}
.brand img:nth-child(2){width:100px;height:auto}
.tm{font-size:12px;font-weight:800;align-self:flex-start;margin:-2px 0 0 -6px}
.nav-links{display:flex;align-items:center;gap:28px;font-weight:700;font-size:15px}
.nav-links a{text-decoration:none;color:var(--ink-2)}
.nav-links a:hover{color:var(--ink)}
.btn{display:inline-flex;align-items:center;gap:10px;white-space:nowrap;text-decoration:none;font-weight:800;font-size:15px;border-radius:999px;padding:13px 22px;color:#fff!important;
  background:linear-gradient(180deg,#2c2836,#1C1A24);box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 12px 24px -12px rgba(28,26,36,.6)}
.btn.mag::before{content:"";width:12px;height:12px;color:#FF9CCF}
.btn:hover{background:linear-gradient(180deg,#3a3546,#2a2633)}
@media (max-width:760px){.nav-links a:not(.btn){display:none}.nav-links{gap:8px}.nav{padding:8px 8px 8px 14px}.nav .btn{padding:11px 16px;font-size:14px}}
@media (max-width:400px){.brand img:nth-child(2){width:84px}.brand img:first-child{width:32px;height:32px}.nav .btn{padding:10px 13px}}

/* language switcher */
details.lang-sw{position:relative}
details.lang-sw summary{list-style:none;cursor:pointer;font-size:13px;font-weight:800;letter-spacing:.08em;color:var(--ink-2);padding:9px 10px;border-radius:999px;user-select:none}
details.lang-sw summary::-webkit-details-marker{display:none}
details.lang-sw[open] summary,details.lang-sw summary:hover{color:var(--ink);background:rgba(255,255,255,.7)}
.lang-menu{position:absolute;right:0;top:calc(100% + 12px);z-index:60;min-width:150px;display:flex;flex-direction:column;padding:6px;border-radius:18px;
  background:rgba(255,255,255,.96);box-shadow:0 24px 50px -24px rgba(90,40,120,.45),0 0 0 1px rgba(28,26,36,.06)}
.lang-menu a{display:block!important;padding:9px 12px;border-radius:12px;font-size:15px;font-weight:700;white-space:nowrap;text-decoration:none;color:var(--ink)}
.lang-menu a:hover{background:#F6EEF8}
.lang-menu a[aria-current]{background:#FBE3EF}

/* hero */
.hero{position:relative;padding:44px 0 40px}
.hero .wrap{display:grid;grid-template-columns:1.05fr .95fr;align-items:center;gap:36px;position:relative}
.hero h1{font-size:clamp(46px,6.8vw,96px);line-height:.96;letter-spacing:-.035em}
.hero h1 .ln{display:block}
.hero h1 em{display:block;padding-bottom:.06em}
.hero .lead{margin:26px 0 30px}
.stores{display:flex;flex-wrap:wrap;align-items:center;gap:12px}
.stores img{height:52px;width:auto}
.hero .note{margin-top:22px}
.stage{position:relative;height:640px;display:grid;place-items:center}
.stage .glow{position:absolute;width:560px;height:560px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.95),rgba(246,210,236,.7) 40%,rgba(201,182,255,.35) 62%,transparent 72%);filter:blur(6px)}
.stage .zodiac{position:absolute;width:520px;opacity:.14}
.stage .ring{position:absolute;width:470px;opacity:.9}
.stage .mark{position:absolute;width:64px;right:6%;bottom:110px;z-index:3;filter:drop-shadow(0 12px 18px rgba(120,40,140,.3))}
@media (prefers-reduced-motion:no-preference){.stage .zodiac,.final .star{animation:spin 90s linear infinite}.stage .ring{animation:spin 140s linear infinite reverse}.float{animation:float 7s ease-in-out infinite}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes float{0%,100%{translate:0 0}50%{translate:0 -10px}}
.vphone{position:relative;width:250px;border-radius:38px;box-shadow:0 40px 70px -30px rgba(60,30,90,.5)}
.vphone video{position:absolute;left:3.35%;top:1.61%;width:93.3%;height:96.8%;object-fit:cover;border-radius:13.3%/6.16%;background:#222}
.vphone img{position:relative;width:100%;height:auto;z-index:1}
.stage .msphone{position:absolute;left:1%;top:86px;rotate:-8deg}
.card{position:relative;width:300px;aspect-ratio:501/774;perspective:1400px;cursor:pointer;border:0;padding:0;background:none;z-index:2}
.flip-inner{position:absolute;inset:0;transform-style:preserve-3d;transition:transform 1.1s cubic-bezier(.2,.75,.2,1)}
.card[aria-pressed="true"] .flip-inner{transform:rotateY(180deg)}
.face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:22px;overflow:hidden;box-shadow:0 50px 90px -40px rgba(120,40,140,.6),0 0 0 1px rgba(255,255,255,.9)}
.face img{width:100%;height:100%;object-fit:cover}
.face.back{transform:rotateY(180deg)}
.face.front::after{content:"";position:absolute;inset:-40%;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.75) 50%,transparent 60%);transform:translateX(-60%)}
@media (prefers-reduced-motion:no-preference){.face.front::after{animation:sheen 4.5s ease-in-out infinite}}
@keyframes sheen{0%,55%{transform:translateX(-60%)}85%,100%{transform:translateX(60%)}}
.chip{position:absolute;z-index:3;display:flex;align-items:center;gap:10px;padding:12px 16px;border-radius:18px;font-size:14px;font-weight:700;line-height:1.2}
.chip small{display:block;font-weight:600;color:var(--muted)}
.chip .dot{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(135deg,#ffd6ec,#d9c8ff);color:var(--rose)}
.chip .dot .spark{width:14px;height:14px}
.chip.c1{right:0;top:120px}.chip.c2{left:4%;bottom:60px}
.flip-hint{position:absolute;z-index:3;bottom:14px;right:18%;margin:0;font-family:var(--hand);font-weight:700;font-size:26px;color:var(--ink-2);rotate:-4deg}
@media (max-width:980px){.hero .wrap{grid-template-columns:1fr}.stage{height:560px;overflow:hidden;margin:0 -20px}}
@media (max-width:560px){.stage{height:500px}.stage .msphone{width:180px;top:70px}.card{width:236px}.stage .glow{width:420px;height:420px}.stage .zodiac{width:400px}.stage .ring{width:360px}.chip.c1{top:30px;right:12px}.chip.c2{left:12px;bottom:40px}.flip-hint{right:8%;bottom:8px}.stage .mark{width:48px;bottom:96px}}

/* the three layers, quiet */
.layers{padding:24px 0;border-block:1px solid var(--hair)}
.layers .wrap{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:12px 30px;font-family:var(--display);font-weight:700;font-size:clamp(19px,2.3vw,28px)}
.layers .spark{color:var(--rose-2);width:15px;height:15px}

/* sections */
.sec{position:relative;padding:110px 0}
.sec h2{font-size:clamp(36px,5vw,66px);letter-spacing:-.03em}
.head{max-width:720px;position:relative;z-index:1}

/* Magic Sync — the signature */
#magic-sync{overflow:hidden}
#magic-sync .wrap{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.deck{position:relative;height:620px}
.deck .c{position:absolute;left:50%;top:50%;width:280px;aspect-ratio:501/774;border-radius:22px;overflow:hidden;box-shadow:0 40px 80px -40px rgba(120,40,140,.55),0 0 0 1px rgba(255,255,255,.9)}
.deck .c img{width:100%;height:100%;object-fit:cover}
.deck .c1{transform:translate(-50%,-50%) translate(-150px,24px) rotate(-12deg)}
.deck .c2{transform:translate(-50%,-50%) translate(150px,24px) rotate(12deg)}
.deck .c3{transform:translate(-50%,-50%);z-index:2}
.deck .bigstar{position:absolute;left:50%;top:50%;width:640px;transform:translate(-50%,-50%);opacity:.11}
.deck .note{position:absolute;left:4%;bottom:4%;z-index:3}
.facts{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:34px}
.fact{padding:22px 20px}
.fact b{display:block;font-family:var(--display);font-size:30px;line-height:1;margin-bottom:8px}
.fact span{font-size:15px;color:var(--ink-2);line-height:1.35;display:block}
@media (max-width:980px){#magic-sync .wrap{grid-template-columns:1fr}.deck{height:520px}}
@media (max-width:420px){.facts{grid-template-columns:1fr}}
@media (max-width:560px){.deck{height:440px}.deck .c{width:200px}.deck .c1{transform:translate(-50%,-50%) translate(-86px,18px) rotate(-12deg)}.deck .c2{transform:translate(-50%,-50%) translate(86px,18px) rotate(12deg)}.deck .bigstar{width:440px}}

/* how it works */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:52px;position:relative;z-index:1}
.hs-card{padding:20px 20px 26px;display:flex;flex-direction:column;gap:16px;overflow:hidden}
.shot{position:relative;border-radius:20px;overflow:hidden;background:url(/assets/v3/pearl-psy.webp) center/cover;aspect-ratio:4/4.3;display:flex;align-items:flex-start;justify-content:center;padding-top:24px}
.shot>img,.shot .vphone{width:68%;border-radius:22px 22px 0 0;box-shadow:0 20px 40px -20px rgba(60,30,90,.5)}
.shot .vphone{box-shadow:0 20px 40px -20px rgba(60,30,90,.5)}
.shot>img{border-radius:24px}
.hs-card .num{margin:0;font-family:var(--display);font-weight:700;font-size:15px;color:var(--rose);letter-spacing:.1em}
.hs-card h3{font-size:25px}
.hs-card p{margin:0;font-size:16px;color:var(--ink-2)}
.hs-card .note{font-size:22px;margin-top:2px}
@media (max-width:980px){.steps{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.steps{grid-template-columns:1fr}}

/* goals */
.goals{padding:64px;display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center;background:url(/assets/v3/pearl-natal.webp) center/cover;border-radius:36px;position:relative;overflow:hidden;box-shadow:0 40px 80px -50px rgba(90,40,120,.45)}
.goals::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(255,255,255,.78),rgba(255,255,255,.25));pointer-events:none}
.goals>*{position:relative;z-index:1}
.goals h2{font-size:clamp(32px,4.2vw,56px)}
.goals>.psy{position:absolute;right:-60px;top:-60px;width:300px;opacity:.55;z-index:0}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:28px}
.chips span{padding:11px 18px;border-radius:999px;font-weight:700;font-size:15px;background:rgba(255,255,255,.8);box-shadow:inset 0 1px 0 #fff,0 10px 24px -16px rgba(90,40,120,.5)}
.goals .note{margin-top:22px}
.goals .art img{width:260px;margin:0 auto;border-radius:36px;box-shadow:0 40px 70px -30px rgba(60,30,90,.5)}
@media (max-width:900px){.goals{grid-template-columns:1fr;padding:40px 24px}.goals .art img{width:220px}}

/* safety */
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:48px;position:relative;z-index:1}
.safe{padding:30px}
.orb-ico{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,#ffd6ec,#d9c8ff);margin-bottom:20px}
.orb-ico svg{width:24px;height:24px}
.safe h3{font-size:23px;margin-bottom:10px}
.safe p{margin:0;color:var(--ink-2);font-size:16px}
#safety .note{margin-top:18px}
#safety .natal{position:absolute;right:4%;top:40px;width:240px;opacity:.6}
@media (max-width:900px){.grid3{grid-template-columns:1fr}#safety .natal{width:150px;top:10px}}

/* film */
.film{position:relative;border-radius:36px;overflow:hidden;min-height:560px;display:flex;align-items:flex-end;box-shadow:0 40px 80px -50px rgba(40,20,60,.6)}
.film video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.film::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 30%,rgba(28,26,36,.6))}
.film .cap{position:relative;z-index:1;padding:48px;color:#fff}
.film h2{font-size:clamp(40px,5.4vw,76px);color:#fff}
.film h2 .accent{background:linear-gradient(100deg,#FFC2E1,#E3C9FF);-webkit-background-clip:text;background-clip:text;color:transparent}
.film .btn{margin-top:26px;background:#fff;color:var(--ink)!important}
.film .btn.mag::before{color:var(--rose)}
.film .note{color:#FFD3EA;margin-left:16px}
@media (max-width:560px){.film{min-height:520px}.film .cap{padding:28px}}

/* final */
.final{text-align:center;padding:120px 0 120px;position:relative;overflow:hidden}
.final .star{width:140px;margin:0 auto 26px}
.final h2{font-size:clamp(40px,6vw,84px);max-width:920px;margin:0 auto}
.final .note{margin-top:18px}
.final .stores{justify-content:center;margin-top:32px}
.final .mark{position:absolute;width:70px;left:12%;bottom:90px;opacity:.9}

/* footer */
.foot{padding:56px 0 64px;border-top:1px solid var(--hair);font-size:15px}
.foot .wrap{display:flex;flex-wrap:wrap;justify-content:space-between;gap:36px}
.foot .brand img:first-child{width:34px;height:34px;border-radius:10px}
.foot .brand img:nth-child(2){width:92px}
.foot-cols{display:flex;flex-wrap:wrap;gap:52px}
.foot-cols div{display:flex;flex-direction:column;gap:10px}
.foot-cols b{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.foot a{text-decoration:none;color:var(--ink-2)}
.foot a:hover{color:var(--ink)}
.foot small,.foot .muted{color:var(--muted);margin:0}
.foot-lang{margin:0;font-size:14px;color:var(--muted)}
.foot-lang a[aria-current]{color:var(--ink);font-weight:800}

/* reveal on scroll */
.js .rv{opacity:0;transform:translateY(26px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.7,.2,1)}
.js .rv.in{opacity:1;transform:none}

/* documents (legal, support, how it works) */
.doc{max-width:820px;margin:0 auto;padding:64px 24px 112px;position:relative}
.doc h1{font-size:clamp(38px,5.4vw,60px);line-height:1.02;margin-bottom:14px}
.doc .meta{color:var(--muted);font-size:16px;margin:0 0 40px}
.doc h2{font-size:28px;margin:46px 0 12px}
.doc h3{font-size:20px;margin:28px 0 8px;font-family:var(--body);font-weight:800;letter-spacing:0}
.doc p,.doc li{font-size:17px;line-height:1.7;color:#2E2B36}
.doc p+p{margin-top:14px}
.doc ul{padding-left:22px;margin:10px 0}
.doc a{color:var(--rose)}
.doc .box{padding:24px 28px;margin:24px 0;border-radius:22px}
.doc .box p{margin:0}
.doc .lang-note{margin:0 0 28px;font-size:15px}
.doc .step{display:grid;grid-template-columns:200px 1fr;gap:36px;align-items:center;margin:60px 0}
.doc .step img{width:200px;height:auto;border-radius:30px;box-shadow:0 28px 50px -24px rgba(70,40,110,.4)}
.doc .step .num{margin:0;font-family:var(--display);font-weight:700;font-size:56px;line-height:1;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.doc .step h2{margin-top:8px}
.doc .fine{font-size:13px;color:var(--muted);margin-top:40px}
.doc .btn{color:#fff}
.doc details{border-bottom:1px solid var(--hair);padding:18px 0}
.doc details summary{cursor:pointer;font-weight:800;font-size:19px;list-style:none}
.doc details summary::-webkit-details-marker{display:none}
.doc details summary::after{content:'+';float:right;font-weight:800;color:var(--rose)}
.doc details[open] summary::after{content:'–'}
.doc details p{margin-top:10px}
@media (max-width:640px){.doc .step{grid-template-columns:1fr;gap:20px;margin:44px 0}.doc .step img{width:170px;margin:0 auto}}

@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.js .rv{opacity:1;transform:none}}

/* opened Magic Sync card, built in HTML (photo + chip + name + button) */
.msb{position:absolute;inset:0;display:block;background:#111;color:#fff;text-align:left;font-family:var(--body)}
.msb>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.msb::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 45%,rgba(20,10,25,.78))}
.msb-chip{position:absolute;z-index:1;left:12px;top:12px;display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:999px;font-size:12px;font-weight:800;color:#fff;
  background:linear-gradient(135deg,rgba(255,255,255,.32),rgba(255,255,255,.12));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:inset 0 0 0 1px rgba(255,255,255,.45)}
.msb-chip .spark{width:11px;height:11px;color:#FFB8DC}
.msb-info{position:absolute;z-index:1;left:14px;right:14px;bottom:14px;display:flex;flex-direction:column;gap:2px}
.msb-info b{font-family:var(--display);font-weight:700;font-size:26px;line-height:1.05}
.msb-info b span{font-weight:700;opacity:.85}
.msb-info small{font-size:12px;opacity:.85;margin-bottom:10px}
.msb-btn{display:block;text-align:center;padding:11px;border-radius:14px;font-size:13px;font-weight:800;color:#fff;background:rgba(28,26,36,.72);box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
.deck .c3 .msb-info b{font-size:22px}
@media (max-width:560px){.msb-info b{font-size:21px}.msb-btn{padding:9px;font-size:12px}}

/* extra decor from our set — light touch */
.head .zs{position:absolute;width:34px;left:-46px;top:-14px;opacity:.9}
.hero .zs3{position:absolute;width:30px;left:-38px;top:-6px}
#how .ringd{position:absolute;width:220px;right:3%;top:10px;opacity:.85}
.final .zs2{position:absolute;width:40px;right:16%;top:110px}
@media (max-width:760px){.head .zs{left:auto;right:0;top:-10px}.hero .zs3{left:auto;right:0;top:-34px}#how .ringd{width:140px;right:-20px}}
.sec,.hero,.final,.layers{overflow-x:clip}

/* step previews: whole phone, frame included */
.shot{aspect-ratio:auto;display:flex;align-items:center;justify-content:center;padding:26px 0;min-height:0;overflow:visible}
.shot>img,.shot .dphone{width:auto;height:340px;aspect-ratio:600/1252;max-width:none;border-radius:0;box-shadow:none;margin:0;filter:drop-shadow(0 22px 22px rgba(60,30,90,.32))}
.shot>img{object-fit:contain}
.dphone{position:relative;container-type:size}
.dphone img{position:absolute;display:block}
.dphone .dp-photo{left:3.35%;top:1.61%;width:93.3%;height:96.8%;object-fit:cover;border-radius:12%/5.8%}
.dphone .dp-ui{inset:0;width:100%;height:100%}
.dp-name{position:absolute;z-index:1;left:7.4%;top:72%;display:flex;flex-direction:column;gap:1.2cqw;color:#fff;font-family:var(--body);text-shadow:0 1px 6px rgba(0,0,0,.35)}
.dp-name b{font-weight:800;font-size:9.6cqw;line-height:1}
.dp-name b span{font-weight:400}
.dp-name small{font-size:5.3cqw;font-weight:600;opacity:.95}
@media (max-width:1100px){.shot>img,.shot .dphone{height:300px}}
@media (max-width:560px){.shot>img,.shot .dphone{height:380px}}

/* ===== motion v3.1 ===== */
/* hero: Discovery phone and Magic Sync card side by side, both visible */
.stage .msphone{left:0;top:70px;width:240px;rotate:-7deg;z-index:1}
.stage .hero-card{position:absolute;right:0;top:118px;width:270px;rotate:4deg;z-index:2}
.stage .chip.c1{right:auto;left:40%;top:34px}
.stage .chip.c2{left:0;bottom:46px}
.stage .mark{right:auto;left:43%;bottom:70px;width:58px}
.stage .flip-hint{right:4%;bottom:0}
@media (max-width:980px){.stage{max-width:560px;margin:0 auto}}
@media (max-width:560px){.stage{height:480px;margin:0 -10px}.stage .msphone{width:168px;top:60px}.stage .hero-card{width:196px;top:96px}.stage .chip.c1{left:24%;top:14px}.stage .chip.c2{bottom:28px}.stage .mark{left:41%;bottom:52px;width:44px}}

/* hold-to-open ring around a Magic Sync card */
.hold-ring{position:absolute;inset:-2px;width:calc(100% + 4px);height:calc(100% + 4px);z-index:4;pointer-events:none;overflow:visible}
.hold-ring rect{fill:none;stroke:url(#none);stroke:#fff;stroke-width:5;stroke-linecap:round;stroke-dasharray:100;stroke-dashoffset:100;opacity:0;filter:drop-shadow(0 0 6px rgba(255,140,200,.9));transition:stroke-dashoffset .25s ease,opacity .25s}
.card.holding .hold-ring rect{stroke-dashoffset:0;opacity:1;transition:stroke-dashoffset 1.1s linear,opacity .1s}
.card[aria-pressed="true"] .hold-ring rect{opacity:0}
.card.holding .flip-inner{transform:scale(.97)}
.card{touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}
.deck .deck-card{overflow:visible;box-shadow:none;border-radius:22px;padding:0;background:none;border:0;cursor:pointer}
.deck .deck-card .face{border-radius:22px}
.deck .deck-hint{position:absolute;right:6%;bottom:4%;left:auto;z-index:3}

/* ribbon as a moving marquee */
.layers{overflow:hidden;padding:22px 0}
.marquee-track{display:flex;align-items:center;gap:30px;width:max-content;white-space:nowrap;font-family:var(--display);font-weight:700;font-size:clamp(20px,2.6vw,32px)}
.marquee-track .spark{color:var(--rose-2);width:16px;height:16px}
@media (prefers-reduced-motion:no-preference){html:not(.gsap) .marquee-track{animation:marq 30s linear infinite}}
@keyframes marq{to{transform:translateX(-50%)}}

/* words split by the motion layer keep the gradient */
h1 em .char,h2 em .word,h2 .accent .word{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.film h2 .accent .word{background:linear-gradient(100deg,#FFC2E1,#E3C9FF);-webkit-background-clip:text;background-clip:text}
.hero h1 .char,.sec h2 .word,.final h2 .word{display:inline-block}

/* how it works: horizontal scroll on large screens */
.hs-bar{display:none;width:200px;height:4px;border-radius:4px;background:rgba(28,26,36,.08);margin-top:22px;overflow:hidden}
.hs-bar i{display:block;height:100%;background:var(--grad);transform:scaleX(0);transform-origin:left}
html.hs-on #how{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding:110px 0 40px;overflow:hidden}
html.hs-on #how .wrap{width:100%;max-width:none;padding-left:max(20px,calc((100vw - 1180px)/2))}
html.hs-on #how .head{display:flex;align-items:flex-end;justify-content:space-between;max-width:1180px;gap:20px}
html.hs-on #how .head h2{max-width:640px}
html.hs-on .hs-bar{display:block}
html.hs-on #how .steps{display:flex;gap:26px;width:max-content;margin-top:36px;padding-right:12vw}
html.hs-on #how .hs-card{width:400px;flex:none}
html.hs-on #how .shot>img,html.hs-on #how .shot .dphone{height:clamp(260px,calc(100vh - 470px),360px)}

/* tilt glare on pearl cards */
[data-tilt]{transform-style:preserve-3d}
[data-tilt]::after{content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;background:radial-gradient(circle at var(--gx,50%) var(--gy,0%),rgba(255,255,255,.6),transparent 55%);opacity:0;transition:opacity .3s}
[data-tilt]:hover::after{opacity:1}

/* cursor glow */
.cursor-glow{position:fixed;left:0;top:0;width:520px;height:520px;margin:-260px 0 0 -260px;border-radius:50%;pointer-events:none;z-index:-1;opacity:0;transition:opacity .6s;
  background:radial-gradient(circle,rgba(255,170,215,.35),rgba(201,180,255,.18) 40%,transparent 70%)}
@media (hover:hover) and (pointer:fine){.motion .cursor-glow{opacity:1}}

/* hearts + splash */
.final{isolation:isolate}
.hearts{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:-1}
.heart{position:absolute;bottom:0;line-height:1;will-change:transform}
.splash{position:fixed;left:0;top:0;z-index:200;pointer-events:none;width:18px;height:18px;font-size:18px;line-height:18px;text-align:center}
.splash.is-spark{background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-9 -9 18 18'%3E%3Cpath d='M0-8C.6-2.6 2.6-.6 8 0 2.6.6.6 2.6 0 8-.6 2.6-2.6.6-8 0c5.4-.6 7.4-2.6 8-8'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-9 -9 18 18'%3E%3Cpath d='M0-8C.6-2.6 2.6-.6 8 0 2.6.6.6 2.6 0 8-.6 2.6-2.6.6-8 0c5.4-.6 7.4-2.6 8-8'/%3E%3C/svg%3E") center/contain no-repeat}

/* header glass grows once scrolled */
.top .nav{transition:box-shadow .3s}
.top.scrolled .nav{box-shadow:inset 0 1px 0 #fff,0 18px 40px -20px rgba(90,40,120,.45)}
@media (max-width:560px){.deck .deck-hint{display:none}}

/* ===== v3.2: hero phone with Magic Sync, text clipping ===== */
h1 em .char,h2 em .word,h2 .accent .word{padding:0 .16em .14em .02em;margin:0 -.16em -.14em -.02em}
h1 em .word,h2 em .word{overflow:visible}
.msphone{position:relative;width:250px;filter:drop-shadow(0 34px 30px rgba(60,30,90,.38))}
.msphone .ms-base{display:block;width:100%;height:auto}
.msphone .ph-card{position:absolute;left:10%;top:15.18%;width:80%;height:59.27%;aspect-ratio:auto;z-index:2;perspective:900px}
.ph-card .face{border-radius:9px;box-shadow:0 18px 30px -16px rgba(60,20,80,.55),0 0 0 1px rgba(255,255,255,.7)}
.ph-card .hold-ring rect{stroke-width:4}
.ph-card .msb{transition:opacity .01s}
.ph-card .msb video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ph-card .ph-tony{opacity:0}
.ph-card[data-who="tony"] .ph-tony{opacity:1}
.ph-card[data-who="tony"] .ph-eve{opacity:0}
.ph-card .msb-chip{left:8px;top:8px;padding:5px 8px;font-size:9.5px;gap:4px}
.ph-card .msb-chip .spark{width:8px;height:8px}
.ph-card .msb-info{left:10px;right:10px;bottom:10px}
.ph-card .msb-info b{font-size:18px}
.ph-card .msb-info small{font-size:9.5px;margin-bottom:0}
@media (max-width:560px){.stage .msphone{width:168px}.ph-card .msb-info b{font-size:13px}.ph-card .msb-chip{font-size:7.5px;padding:4px 6px}.ph-card .msb-info small{font-size:7.5px}.ph-card .face{border-radius:6px}}
.gsap .rv{transition:none}
@media (max-width:560px){.stage .msphone{left:16px}.stage .hero-card{right:12px}}
