/* ===================================================================
   Vocablo Landing — styles
   =================================================================== */
:root{
  --bg:#08060F;
  --bg-soft:#0A0718;
  --text:#F4F1FB;
  --muted:#B4ABD4;
  --muted-2:#9890B6;
  --muted-3:#7E769B;
  --muted-4:#5B5470;
  --purple:#793DE9;
  --purple-2:#592EC3;
  --purple-3:#4123AC;
  --lilac:#A78BFA;
  --lilac-2:#C4B5FD;
  --green:#34D399;
  --gold:#F5B842;
  --line:rgba(255,255,255,.09);
  --card:linear-gradient(180deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
  --maxw:1180px;
  --font-display:'Space Grotesk',system-ui,sans-serif;
  --font-body:'Manrope',system-ui,sans-serif;
  /* strong custom easings (emil-design-eng) — built-ins are too weak */
  --ease-out:cubic-bezier(0.23,1,0.32,1);
  --ease-in-out:cubic-bezier(0.77,0,0.175,1);
  --ease-spring:cubic-bezier(0.34,1.4,0.5,1);
  /* one phone size used everywhere (hero, feature screenshots, feature videos) */
  --phone-h:clamp(420px,64vh,548px);
  --phone-ratio:1330 / 2726;
}

*{box-sizing:border-box;-webkit-font-smoothing:antialiased;}
html{scroll-behavior:smooth;scroll-padding-top:96px;}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:var(--font-body);
  overflow-x:hidden;
}
img{max-width:100%;}
a{color:inherit;}
::selection{background:var(--purple);color:#fff;}

/* keyboard focus rings (accessibility) */
:focus{outline:none;}
:focus-visible{outline:2px solid var(--lilac-2);outline-offset:3px;border-radius:8px;}

/* ---------- keyframes ---------- */
@keyframes floatA{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-20px) rotate(-2deg)}}
@keyframes glowPulse{0%,100%{opacity:.45;transform:scale(1)}50%{opacity:.8;transform:scale(1.08)}}
@keyframes pinPulse{0%{box-shadow:0 0 0 0 rgba(121,61,233,.55)}70%{box-shadow:0 0 0 14px rgba(121,61,233,0)}100%{box-shadow:0 0 0 0 rgba(121,61,233,0)}}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-18px)}}
@keyframes floatYb{0%,100%{transform:translateY(0)}50%{transform:translateY(14px)}}
@keyframes orbitSpin{to{transform:rotate(360deg)}}

/* ---------- scroll progress ---------- */
#scrollbar{
  position:fixed;top:0;left:0;height:3px;width:0%;z-index:200;
  background:linear-gradient(90deg,var(--purple),var(--lilac-2));
  box-shadow:0 0 12px rgba(121,61,233,.7);
  transition:width .1s linear;
}

/* ---------- nav ---------- */
#nav{
  position:fixed;top:0;left:0;right:0;z-index:100;
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 32px;
  transition:background .3s,backdrop-filter .3s,border-color .3s;
  border-bottom:1px solid transparent;
}
#nav.scrolled{
  background:rgba(8,6,15,.82);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border-bottom-color:rgba(255,255,255,.08);
}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;}
.brand img{width:40px;height:40px;border-radius:11px;box-shadow:0 6px 18px -4px rgba(121,61,233,.6);}
.brand span{font-family:var(--font-display);font-weight:700;font-size:22px;letter-spacing:-.5px;}
.nav-right{display:flex;align-items:center;gap:28px;}
.nav-links{display:flex;align-items:center;gap:30px;}
.nav-links a{color:var(--muted);text-decoration:none;font-weight:600;font-size:15px;transition:color .2s;}
.nav-links a:hover{color:var(--text);}
/* the CTA inside nav-links is only for the mobile dropdown — hide on desktop
   (the standalone .nav-right > .btn-cta is shown there instead) */
.nav-links .btn-cta{display:none;}

.lang-toggle{
  position:relative;display:flex;background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.1);border-radius:999px;padding:4px;width:96px;
}
.lang-toggle .knob{
  position:absolute;top:4px;left:4px;width:calc(50% - 4px);height:calc(100% - 8px);
  border-radius:999px;background:linear-gradient(135deg,var(--purple),var(--purple-2));
  box-shadow:0 4px 12px -2px rgba(121,61,233,.6);
  transition:transform .32s cubic-bezier(.16,.84,.44,1);
}
body[data-lang="en"] .lang-toggle .knob{transform:translateX(100%);}
.lang-toggle button{
  position:relative;z-index:1;flex:1;border:none;background:none;color:var(--text);
  font-weight:700;font-size:13px;font-family:var(--font-body);padding:6px 0;cursor:pointer;
}

.btn-cta{
  display:flex;align-items:center;gap:8px;text-decoration:none;
  background:linear-gradient(135deg,var(--purple),var(--purple-2));color:#fff;
  font-weight:700;font-size:14px;padding:11px 20px;border-radius:999px;
  box-shadow:0 8px 22px -6px rgba(121,61,233,.7);
  transition:transform .22s var(--ease-out),box-shadow .22s var(--ease-out);white-space:nowrap;
}
.btn-cta:hover{transform:translateY(-2px);box-shadow:0 14px 30px -8px rgba(121,61,233,.85);}
.btn-cta:active{transform:translateY(0) scale(.97);transition-duration:.12s;}

.hamburger{
  display:none;width:44px;height:44px;border:1px solid var(--line);border-radius:12px;
  background:rgba(255,255,255,.05);cursor:pointer;padding:0;
  align-items:center;justify-content:center;
}
.hamburger span{display:block;width:20px;height:2px;background:var(--text);position:relative;transition:.3s;}
.hamburger span::before,.hamburger span::after{content:"";position:absolute;left:0;width:20px;height:2px;background:var(--text);transition:.3s;}
.hamburger span::before{top:-6px;}
.hamburger span::after{top:6px;}
body.menu-open .hamburger span{background:transparent;}
body.menu-open .hamburger span::before{top:0;transform:rotate(45deg);}
body.menu-open .hamburger span::after{top:0;transform:rotate(-45deg);}

/* ---------- hero ---------- */
header#top{position:relative;overflow:hidden;padding:150px 32px 90px;isolation:isolate;}
.hero-video-wrap{position:absolute;inset:0;z-index:-2;overflow:hidden;background:var(--bg);}
.hero-video{
  position:absolute;inset:0;
  width:100%;height:100%;object-fit:cover;object-position:center;
  opacity:.92;
}
/* overlay: light brand tint + a soft pool behind the copy + fade into the page */
.hero-overlay{
  position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(75% 80% at 26% 46%,rgba(8,6,15,.62),transparent 72%),
    linear-gradient(180deg,rgba(8,6,15,.30) 0%,rgba(8,6,15,0) 32%,rgba(8,6,15,.55) 82%,var(--bg) 100%);
}
.hero-fx{position:absolute;inset:0;z-index:0;pointer-events:none;}
.glow{position:absolute;border-radius:50%;filter:blur(40px);}
.glow.g1{top:-120px;left:-120px;width:520px;height:520px;background:radial-gradient(circle,rgba(121,61,233,.5),transparent 65%);animation:glowPulse 9s ease-in-out infinite;}
.glow.g2{bottom:-160px;right:8%;width:460px;height:460px;background:radial-gradient(circle,rgba(65,35,172,.55),transparent 65%);filter:blur(50px);animation:glowPulse 11s ease-in-out infinite .5s;}

.hero-inner{
  position:relative;z-index:2;max-width:var(--maxw);margin:0 auto;
  display:flex;align-items:center;gap:40px;flex-wrap:wrap;
}
.hero-copy{flex:1 1 440px;min-width:300px;}
.hero-copy h1{
  font-family:var(--font-display);font-weight:700;
  font-size:clamp(40px,5.6vw,72px);line-height:1.02;letter-spacing:-2px;margin:0 0 24px;
}
.hero-copy h1 .grad{
  display:block;
  background:linear-gradient(110deg,var(--lilac),var(--purple) 55%,var(--lilac-2));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
}
.hero-copy p.sub{font-size:19px;line-height:1.6;color:var(--muted);max-width:520px;margin:0 0 36px;}
.hero-badges{display:flex;gap:16px;flex-wrap:wrap;align-items:center;}
.store{
  display:flex;align-items:center;gap:12px;text-decoration:none;
  background:#fff;color:#0B0820;padding:13px 22px;border-radius:16px;
  transition:transform .25s var(--ease-out),box-shadow .25s var(--ease-out);box-shadow:0 12px 30px -10px rgba(0,0,0,.6);
}
.store:hover{transform:translateY(-3px);box-shadow:0 18px 38px -12px rgba(121,61,233,.5);}
.store:not(.soon):active{transform:translateY(0) scale(.97);transition-duration:.12s;}
.store.soon{background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);color:var(--muted-2);cursor:default;}
.store .lbl{display:flex;flex-direction:column;line-height:1.1;text-align:left;}
.store .lbl .top{font-size:11px;font-weight:600;}
.store .lbl .big{font-size:18px;font-weight:800;font-family:var(--font-display);}
.store .lbl .top{color:#5B5470;}
.store.soon .lbl .top{color:inherit;}

.hero-art{
  flex:1 1 380px;min-width:300px;position:relative;height:660px;
  display:flex;justify-content:center;align-items:center;
}
.hero-art .halo{
  position:absolute;width:420px;height:420px;border-radius:50%;
  background:radial-gradient(circle,rgba(121,61,233,.42),transparent 62%);filter:blur(34px);
  animation:glowPulse 8s ease-in-out infinite;
}
/* ===== creative hero card (replaces the phone mockup) ===== */
.hero-card-wrap{position:relative;z-index:4;width:340px;height:412px;perspective:1500px;animation:floatY 7s ease-in-out infinite;}
.hero-card{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .9s cubic-bezier(.66,0,.2,1);will-change:transform;cursor:pointer;}
.hero-card.flipped{transform:rotateY(180deg);}
.hc-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:30px;display:flex;flex-direction:column;padding:30px;overflow:hidden;}
.hc-front{
  background:linear-gradient(180deg,rgba(30,23,50,.94),rgba(13,9,26,.96));
  border:1px solid rgba(255,255,255,.12);
  box-shadow:0 44px 90px -28px rgba(121,61,233,.6),inset 0 1px 0 rgba(255,255,255,.06);
}
.hc-back{
  transform:rotateY(180deg);
  background:linear-gradient(160deg,#7C4DFF,#5A2EC8 72%);
  border:1px solid rgba(255,255,255,.22);
  box-shadow:0 44px 90px -24px rgba(121,61,233,.75),inset 0 1px 0 rgba(255,255,255,.18);
}
.hc-top{display:flex;align-items:center;gap:10px;min-height:24px;}
.hc-flag{width:30px;height:22px;border-radius:5px;object-fit:cover;box-shadow:0 2px 6px rgba(0,0,0,.5);display:block;}
.hc-lang{font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:var(--lilac-2);}
.hc-back .hc-lang-back{font-size:12px;font-weight:800;letter-spacing:2px;text-transform:uppercase;color:rgba(255,255,255,.9);}
.hc-word,.hc-mean{flex:1;display:flex;align-items:center;justify-content:center;font-family:var(--font-display);font-weight:700;font-size:clamp(38px,4.4vw,54px);letter-spacing:-1px;text-align:center;line-height:1.05;}
.hc-mean{color:#fff;}
.hc-hint{font-size:13px;color:var(--muted-3);text-align:center;font-weight:600;}
.hc-sub{font-size:14px;color:rgba(255,255,255,.85);text-align:center;font-weight:600;}
.hero-card:focus-visible{outline:none;}
.hero-card:focus-visible .hc-front{outline:2px solid var(--lilac-2);outline-offset:5px;}

/* decorative orbit rings + floating greetings */
.orbit{position:absolute;border-radius:50%;border:1px dashed rgba(167,139,250,.22);z-index:1;width:500px;height:500px;animation:orbitSpin 46s linear infinite;}
.orbit-2{width:620px;height:620px;border-style:solid;border-color:rgba(167,139,250,.08);animation-duration:72s;animation-direction:reverse;}
.float-word{
  position:absolute;z-index:3;font-family:var(--font-display);font-weight:600;font-size:17px;color:#D5CFEA;
  background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.13);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  padding:9px 17px;border-radius:999px;box-shadow:0 14px 34px -14px rgba(0,0,0,.7);white-space:nowrap;
}
.fw1{top:5%;left:-3%;animation:floatY 7s ease-in-out infinite;}
.fw2{top:19%;right:-5%;animation:floatYb 8.5s ease-in-out infinite;}
.fw3{bottom:12%;right:1%;animation:floatY 6.5s ease-in-out infinite .5s;}
.fw4{bottom:3%;left:-1%;animation:floatYb 7.5s ease-in-out infinite .3s;}
.fw5{top:46%;right:-7%;animation:floatY 8s ease-in-out infinite .2s;}

/* floating "mastered" mini-card */
.mini-card{
  position:absolute;z-index:5;left:-8%;bottom:24%;display:flex;align-items:center;gap:11px;
  padding:12px 16px;border-radius:16px;background:rgba(18,14,34,.82);border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 24px 50px -18px rgba(0,0,0,.7);
  animation:floatYb 6s ease-in-out infinite .8s;
}
.mini-check{width:30px;height:30px;border-radius:50%;background:linear-gradient(135deg,#34D399,#10B981);display:flex;align-items:center;justify-content:center;box-shadow:0 0 16px rgba(52,211,153,.5);flex:0 0 auto;}
.mini-text{display:flex;flex-direction:column;line-height:1.15;}
.mini-text strong{font-size:14px;font-weight:700;color:#EAE6F7;}
.mini-text span{font-size:12px;color:var(--muted-2);font-weight:600;}

/* hero eyebrow pill */
.hero-eyebrow{display:inline-flex;align-items:center;gap:9px;margin-bottom:22px;padding:8px 16px;border-radius:999px;background:rgba(167,139,250,.1);border:1px solid rgba(167,139,250,.28);font-weight:600;font-size:14px;color:#D5CFEA;}
.pulse-dot{width:8px;height:8px;border-radius:50%;background:var(--green);animation:pulseDot 2s ease-out infinite;flex:0 0 auto;}
@keyframes pulseDot{0%{box-shadow:0 0 0 0 rgba(52,211,153,.55)}70%{box-shadow:0 0 0 8px rgba(52,211,153,0)}100%{box-shadow:0 0 0 0 rgba(52,211,153,0)}}

/* scroll-down cue */
.scroll-cue{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);z-index:5;display:flex;text-decoration:none;opacity:.65;transition:opacity .25s var(--ease-out);}
.scroll-cue:hover{opacity:1;}
.scroll-cue .mouse{width:26px;height:42px;border:2px solid rgba(212,207,234,.5);border-radius:14px;display:flex;justify-content:center;padding-top:7px;}
.scroll-cue .wheel{width:4px;height:8px;border-radius:2px;background:var(--lilac-2);animation:scrollWheel 1.7s ease-in-out infinite;}
@keyframes scrollWheel{0%{transform:translateY(0);opacity:1}60%{transform:translateY(13px);opacity:0}100%{transform:translateY(0);opacity:0}}

/* ---------- sections shared ---------- */
section{position:relative;}
.eyebrow{font-weight:800;letter-spacing:3px;font-size:13px;color:var(--purple);text-transform:uppercase;margin-bottom:16px;}

/* ---------- stats ---------- */
.stats-wrap{position:relative;z-index:2;max-width:1080px;margin:0 auto;padding:10px 32px 70px;}
.stats{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:18px;
  background:linear-gradient(180deg,rgba(255,255,255,.045),rgba(255,255,255,.01));
  border:1px solid var(--line);border-radius:26px;padding:34px 30px;
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
}
.stat{text-align:center;}
.stat:not(:last-child){border-right:1px solid rgba(255,255,255,.07);}
.stat .num{
  font-family:var(--font-display);font-weight:700;font-size:46px;line-height:1;
  background:linear-gradient(120deg,var(--lilac-2),var(--purple));
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;
}
.stat .cap{color:var(--muted-2);font-weight:600;font-size:14px;margin-top:8px;}

/* ---------- why ---------- */
#why{padding:80px 32px;text-align:center;overflow:hidden;}
#why .bgglow{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:700px;height:700px;border-radius:50%;background:radial-gradient(circle,rgba(121,61,233,.16),transparent 60%);filter:blur(40px);z-index:0;}
#why .inner{position:relative;z-index:2;max-width:860px;margin:0 auto;}
#why h2{font-family:var(--font-display);font-weight:700;font-size:clamp(30px,4.4vw,54px);line-height:1.08;letter-spacing:-1.5px;margin:0 0 26px;text-wrap:balance;}
#why p{font-size:20px;line-height:1.65;color:var(--muted);margin:0 auto;max-width:680px;}

/* ---------- features (pinned scroll-swap) ---------- */
#features .stack{position:relative;height:560vh;}
#features .stage{position:sticky;top:0;height:100vh;overflow:hidden;display:flex;align-items:center;}
.feat-rail{position:absolute;left:max(28px,calc(50% - 600px));top:50%;transform:translateY(-50%);z-index:5;display:flex;flex-direction:column;gap:12px;}
.feat-dot{width:5px;height:9px;border-radius:99px;background:rgba(255,255,255,.25);transition:all .4s;cursor:pointer;}
.feat-dot.active{height:32px;background:var(--lilac);}
.feat-ambient{position:absolute;right:8%;top:50%;transform:translateY(-50%);width:560px;height:560px;border-radius:50%;background:radial-gradient(circle,rgba(121,61,233,.22),transparent 62%);filter:blur(50px);z-index:0;pointer-events:none;}
.feat-panel{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  opacity:0;z-index:1;
  transition:opacity .55s ease,transform .7s cubic-bezier(.16,.84,.44,1);
  transform:translateY(46px) scale(.965);
}
.feat-panel.active{opacity:1;transform:none;z-index:2;}
.feat-panel.prev{transform:translateY(-46px) scale(.965);}
.feat-inner{width:100%;max-width:1240px;margin:0 auto;padding:0 60px;display:flex;align-items:center;gap:72px;flex-wrap:wrap;}
.feat-text{flex:1 1 440px;min-width:300px;}
.feat-text .eyebrow{margin-bottom:18px;font-size:14px;}
.feat-text h3{font-family:var(--font-display);font-weight:700;font-size:clamp(36px,4.8vw,66px);letter-spacing:-1.5px;line-height:1.03;margin:0 0 24px;}
.feat-text p{font-size:clamp(18px,2vw,24px);line-height:1.6;color:#C3BCDD;margin:0;max-width:540px;}
.feat-chips{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px;}
.feat-chips .chip{
  display:inline-flex;align-items:center;gap:9px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.12);
  border-radius:999px;padding:11px 19px;font-weight:600;font-size:15px;color:#D5CFE9;
  transition:background .25s var(--ease-out),border-color .25s var(--ease-out),transform .25s var(--ease-out);
}
.feat-chips .chip::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--lilac);box-shadow:0 0 9px 1px rgba(167,139,250,.7);flex:0 0 auto;}
@media (hover:hover){.feat-chips .chip:hover{background:rgba(255,255,255,.09);border-color:rgba(167,139,250,.4);transform:translateY(-2px);}}
.feat-img{flex:0 0 auto;display:flex;justify-content:center;align-items:center;}

/* Unified phone: any screenshot OR video sits UNDER the real iPhone mockup PNG.
   The mockup (transparent screen + opaque frame & Dynamic Island) overlays on top —
   its island hides the screen-recording dot, so no extra CSS island is needed. */
.phone{
  position:relative;flex:0 0 auto;height:var(--phone-h);aspect-ratio:var(--phone-ratio);
  filter:drop-shadow(0 50px 70px rgba(121,61,233,.42));
}
.phone-screen{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;
  background:#05040a;display:block;
  /* clip the media to the phone's outer silhouette so it never peeks past the frame */
  clip-path:inset(0.9% 2.3% 1% 2.3% round 12.2% / 5.94%);
}
.phone-frame{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;}

/* ---------- languages / map ---------- */
#languages{padding:110px 32px;overflow:hidden;}
#languages .topglow{position:absolute;top:0;left:50%;transform:translateX(-50%);width:900px;height:400px;background:radial-gradient(ellipse,rgba(121,61,233,.14),transparent 65%);filter:blur(40px);z-index:0;}
#languages .inner{position:relative;z-index:2;max-width:1080px;margin:0 auto;}
.lang-head{text-align:center;max-width:640px;margin:0 auto 40px;}
.lang-head h2{font-family:var(--font-display);font-weight:700;font-size:clamp(28px,3.8vw,46px);letter-spacing:-1px;line-height:1.1;margin:0 0 16px;}
.lang-head p{font-size:18px;color:var(--muted);margin:0;}
.map-readout{text-align:center;margin-bottom:22px;min-height:54px;}
.map-readout .flag{display:inline-block;width:46px;height:auto;border-radius:5px;margin-bottom:8px;box-shadow:0 4px 12px rgba(0,0,0,.5);}
.map-readout .name{font-family:var(--font-display);font-weight:700;font-size:26px;letter-spacing:-.5px;line-height:1.1;}
.map-readout .avail{font-size:12px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:var(--green);margin-top:4px;}

/* flag strip */
.flag-strip{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-bottom:26px;}
.flag-chip{
  display:inline-flex;align-items:center;gap:8px;cursor:pointer;min-height:40px;
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.1);
  border-radius:999px;padding:8px 14px 8px 9px;color:var(--muted);
  font-family:var(--font-body);font-weight:600;font-size:13px;line-height:1;
  transition:background .25s var(--ease-out),border-color .25s var(--ease-out),color .25s var(--ease-out),transform .25s var(--ease-out),box-shadow .25s var(--ease-out);
}
.flag-chip img{width:22px;height:16px;border-radius:3px;object-fit:cover;box-shadow:0 1px 3px rgba(0,0,0,.5);display:block;}
.flag-chip:hover{background:rgba(255,255,255,.09);color:var(--text);transform:translateY(-2px);}
.flag-chip:active{transform:scale(.96);transition-duration:.1s;}
.flag-chip.active{
  background:linear-gradient(135deg,rgba(121,61,233,.35),rgba(89,46,195,.25));
  border-color:rgba(167,139,250,.65);color:#fff;
  box-shadow:0 6px 18px -6px rgba(121,61,233,.6);
}
.map-frame{position:relative;width:100%;max-width:1080px;margin:0 auto;}
.map-box{position:relative;width:100%;aspect-ratio:1672 / 941;border-radius:28px;border:1px solid rgba(255,255,255,.08);overflow:hidden;background:var(--bg-soft);box-shadow:inset 0 0 100px rgba(121,61,233,.14);}
.map-box>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.pin{position:absolute;transform:translate(-50%,-50%);cursor:pointer;width:30px;height:30px;display:flex;align-items:center;justify-content:center;}
/* the map already carries baked resting dots; our dot only appears on the active language */
.pin .dot{width:14px;height:14px;border-radius:50%;background:transparent;}
.pin:hover .dot{background:rgba(167,139,250,.35);}
.pin.active{z-index:30;}
.pin.active .dot{width:18px;height:18px;background:var(--lilac-2);border:2.5px solid #fff;box-shadow:0 0 0 4px rgba(121,61,233,.4),0 0 18px 2px rgba(167,139,250,.7);animation:pinPulse 1.5s ease-out infinite;}
.pin .label{position:absolute;bottom:150%;left:50%;transform:translateX(-50%) translateY(4px);white-space:nowrap;background:rgba(18,12,38,.96);border:1px solid rgba(121,61,233,.5);color:var(--text);font-weight:700;font-size:12px;padding:5px 11px;border-radius:9px;pointer-events:none;box-shadow:0 8px 22px -8px rgba(0,0,0,.7);opacity:0;transition:opacity .2s,transform .2s;}
.pin.active .label{opacity:1;transform:translateX(-50%) translateY(0);}
.map-hint{text-align:center;margin-top:18px;font-size:14px;font-weight:600;color:var(--muted-3);}

/* ---------- how ---------- */
#how{max-width:1080px;margin:0 auto;padding:60px 32px 110px;}
.how-head{text-align:center;margin-bottom:64px;}
.how-head h2{font-family:var(--font-display);font-weight:700;font-size:clamp(28px,3.8vw,46px);letter-spacing:-1px;margin:0;}
.how-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:24px;}
.how-card{position:relative;background:var(--card);border:1px solid var(--line);border-radius:24px;padding:36px 30px;transition:transform .3s var(--ease-out),border-color .3s var(--ease-out),box-shadow .3s var(--ease-out);}
.how-card:hover{transform:translateY(-6px);border-color:rgba(121,61,233,.5);box-shadow:0 24px 50px -24px rgba(121,61,233,.55);}
.how-card .n{font-family:var(--font-display);font-weight:700;font-size:54px;line-height:1;background:linear-gradient(120deg,var(--purple),var(--purple-3));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;margin-bottom:18px;}
.how-card.green .n{background:linear-gradient(120deg,var(--green),#059669);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;}
.how-card h3{font-family:var(--font-display);font-weight:600;font-size:22px;margin:0 0 12px;}
.how-card p{color:var(--muted);font-size:16px;line-height:1.55;margin:0;}

/* ---------- download cta ---------- */
#download{padding:0 32px 110px;}
.cta-box{position:relative;overflow:hidden;max-width:1080px;margin:0 auto;border-radius:36px;background:linear-gradient(135deg,var(--purple-3),var(--purple) 60%,var(--purple-2));padding:72px 40px;text-align:center;box-shadow:0 50px 120px -40px rgba(121,61,233,.7);}
.cta-box .wave{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.28;mix-blend-mode:screen;}
.cta-box .corner{position:absolute;top:-80px;right:-60px;width:280px;height:280px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.25),transparent 60%);filter:blur(20px);}
.cta-inner{position:relative;z-index:2;}
.cta-inner img.appicon{width:78px;height:78px;border-radius:20px;box-shadow:0 16px 40px -10px rgba(0,0,0,.5);margin-bottom:26px;}
.cta-inner h2{font-family:var(--font-display);font-weight:700;font-size:clamp(28px,4.2vw,52px);letter-spacing:-1.2px;line-height:1.08;margin:0 0 18px;color:#fff;text-wrap:balance;}
.cta-inner p{font-size:19px;color:rgba(255,255,255,.85);max-width:520px;margin:0 auto 36px;line-height:1.55;}
.cta-badges{display:flex;gap:16px;flex-wrap:wrap;justify-content:center;}
.cta-badges .store{background:#0B0820;color:#fff;padding:14px 26px;}
.cta-badges .store .lbl .top{color:var(--muted-2);}
.cta-badges .store.soon{background:rgba(255,255,255,.14);border:1px solid rgba(255,255,255,.25);color:#fff;}
.cta-badges .store.soon .lbl .top{color:rgba(255,255,255,.8);}

/* ---------- footer ---------- */
footer{border-top:1px solid rgba(255,255,255,.08);padding:54px 32px 40px;}
.footer-top{max-width:1080px;margin:0 auto;display:flex;justify-content:space-between;gap:40px;flex-wrap:wrap;}
.footer-brand{max-width:300px;}
.footer-brand .row{display:flex;align-items:center;gap:11px;margin-bottom:16px;}
.footer-brand .row img{width:36px;height:36px;border-radius:10px;}
.footer-brand .row span{font-family:var(--font-display);font-weight:700;font-size:20px;}
.footer-brand p{color:var(--muted-3);font-size:15px;line-height:1.55;margin:0;}
.footer-cols{display:flex;gap:64px;flex-wrap:wrap;}
.footer-col .h{font-weight:700;font-size:14px;color:#E6E1F5;margin-bottom:14px;}
.footer-col .links{display:flex;flex-direction:column;gap:10px;}
.footer-col .links a{color:#8B82AE;text-decoration:none;font-size:14px;transition:color .2s;}
.footer-col .links a:hover{color:var(--lilac-2);}
.footer-rights{max-width:1080px;margin:40px auto 0;padding-top:24px;border-top:1px solid rgba(255,255,255,.06);color:var(--muted-4);font-size:13px;}

/* ---------- reveal ---------- */
[data-reveal]{opacity:0;transform:translateY(34px);transition:opacity .75s cubic-bezier(.16,.84,.44,1),transform .75s cubic-bezier(.16,.84,.44,1);will-change:opacity,transform;}
[data-reveal].in{opacity:1;transform:none;}

/* ===================================================================
   RESPONSIVE
   =================================================================== */
@media (max-width:980px){
  .nav-links,.nav-right .btn-cta{display:none;}
  .hamburger{display:flex;}
  .nav-right{gap:14px;}
  /* mobile menu panel */
  .nav-links.mobile{
    display:flex;position:fixed;top:72px;left:16px;right:16px;z-index:99;
    flex-direction:column;align-items:flex-start;gap:4px;
    background:rgba(12,9,26,.97);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
    border:1px solid var(--line);border-radius:18px;padding:14px;
    opacity:0;pointer-events:none;transform:translateY(-10px);
    transition:opacity .25s,transform .25s;
  }
  body.menu-open .nav-links.mobile{opacity:1;pointer-events:auto;transform:none;}
  .nav-links.mobile a{width:100%;padding:12px 12px;border-radius:10px;font-size:16px;}
  .nav-links.mobile a:hover{background:rgba(255,255,255,.05);}
  .nav-links.mobile .btn-cta{display:flex;justify-content:center;margin-top:8px;}
}

@media (max-width:860px){
  header#top{padding:128px 22px 70px;}
  :root{--phone-h:min(60vh,496px);} /* smaller but still uniform phone size on mobile */
  .hero-art{height:auto;order:2;width:100%;padding-top:10px;min-height:380px;}
  .hero-card-wrap{width:min(320px,84vw);height:auto;aspect-ratio:340 / 412;}
  .orbit,.orbit-2,.float-word,.mini-card,.scroll-cue{display:none;} /* declutter on stacked mobile layout */
  .hero-video{opacity:.45;}

  /* flatten the pinned feature section on small screens */
  #features .stack{height:auto;}
  #features .stage{position:static;height:auto;display:block;overflow:visible;}
  .feat-rail{display:none;}
  .feat-ambient{display:none;}
  .feat-panel{position:relative;inset:auto;opacity:1;transform:none;padding:60px 0;}
  .feat-inner{flex-direction:column;text-align:center;padding:0 22px;gap:30px;}
  .feat-text{min-width:0;}
  .feat-text p{margin-left:auto;margin-right:auto;}
}

@media (max-width:640px){
  #nav{padding:14px 18px;}
  header#top{padding:118px 18px 60px;}
  .hero-copy p.sub{font-size:17px;}
  .stats-wrap{padding:10px 18px 56px;}
  .stats{grid-template-columns:repeat(2,1fr);padding:26px 18px;gap:22px 12px;}
  .stat:nth-child(odd){border-right:1px solid rgba(255,255,255,.07);}
  .stat:nth-child(even){border-right:none;}
  .stat .num{font-size:40px;}
  #why{padding:64px 18px;}
  #why p{font-size:18px;}
  #languages{padding:80px 18px;}
  .map-box{border-radius:18px;}
  .pin .label{font-size:10px;padding:3px 7px;}
  .pin{width:30px;height:30px;}
  #how{padding:48px 18px 80px;}
  .how-head{margin-bottom:44px;}
  #download{padding:0 18px 80px;}
  .cta-box{padding:54px 24px;border-radius:28px;}
  footer{padding:44px 18px 36px;}
  .footer-cols{gap:40px;}
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  *{animation-duration:.001ms !important;animation-iteration-count:1 !important;}
  html{scroll-behavior:auto;}
  .hero-video{display:none;}
  [data-reveal]{opacity:1 !important;transform:none !important;}
  #features .stack{height:auto;}
  #features .stage{position:static;height:auto;display:block;overflow:visible;}
  .feat-panel{position:relative;inset:auto;opacity:1;transform:none;padding:50px 0;}
  .feat-rail{display:none;}
}
