/* ============================================================
   ANYLK — home page (index.html only; the legal pages keep css/style.css)
   A fixed 3D stage of the island; the journey (hero, 6 stops, finale) scrolls over it,
   then #more, an opaque panel with the rest of the site, slides up and covers it.
   The scene follows the real time in Sri Lanka, so every colour below is a token that
   switches with it (data-scene = day | dawn | dusk | night, set by js/island.js).
   ============================================================ */
:root{
  --indigo:#5A5BEA; --azure:#2E7BE0; --teal:#159DAF; --marigold:#F4A21F;
  --ink:#16173A; --ink-soft:#4B4F73; --grad-a:#5A5BEA; --grad-b:#159DAF;
  --panel:rgba(255,255,255,.78); --panel-line:rgba(90,91,234,.16); --chip:rgba(255,255,255,.72);
  --scrim:rgba(240,239,255,.9); --bg:#EEEDFB; --stars:0;
  --surface:#FFFFFF; --surface-solid:#FFFFFF; --surface-2:#F6F5FE; --field:#F3F3FB; --line:rgba(22,23,58,.09);
  --shadow:0 26px 50px -30px rgba(20,22,70,.3); --teal-ink:#0E7C8B; --amber-ink:#B45309;
  --navbg:rgba(255,255,255,.66); --menu:#FFFFFF;
  --display:"Bricolage Grotesque","Poppins",system-ui,sans-serif;
  --body:"Poppins",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  color-scheme:light;
}
:root[data-scene="dawn"],:root[data-scene="dusk"],:root[data-scene="night"]{
  --ink:#F4F4FF; --ink-soft:#C6C9EC; --grad-a:#AEB0FF; --grad-b:#66DAE8;
  --panel:rgba(17,19,58,.62); --panel-line:rgba(170,176,255,.22); --chip:rgba(20,22,62,.55);
  --bg:#0D1033; --surface:rgba(255,255,255,.05); --surface-solid:#191C3D; --surface-2:rgba(255,255,255,.028); --field:rgba(255,255,255,.07);
  --line:rgba(170,176,255,.15); --shadow:0 26px 50px -30px rgba(0,0,0,.7); --teal-ink:#66DAE8; --amber-ink:#F7B955;
  --navbg:rgba(13,16,51,.6); --menu:#151849;
  color-scheme:dark;
}
:root[data-scene="dawn"]{ --scrim:rgba(34,38,112,.62) }
:root[data-scene="dusk"]{ --scrim:rgba(34,24,82,.68) }
:root[data-scene="night"]{ --scrim:rgba(6,9,32,.76) }

*{ box-sizing:border-box }
/* no CSS smooth scrolling: every in-page scroll asks for smooth itself (home.js, island.js), and a #hash on load must land at once */
html{ -webkit-text-size-adjust:100% }
body{ margin:0; background:var(--bg); color:var(--ink); font-family:var(--body); font-size:16px; line-height:1.6; -webkit-font-smoothing:antialiased; overflow-x:hidden; -webkit-tap-highlight-color:transparent }
img{ max-width:100%; display:block } [hidden]{ display:none !important }
a{ color:inherit }
:focus-visible{ outline:2px solid var(--marigold); outline-offset:3px; border-radius:8px }
.mono{ font-family:var(--mono); font-variant-numeric:tabular-nums }
.sr-only{ position:absolute; width:1px; height:1px; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0 }
.skip{ position:fixed; z-index:20; left:16px; top:-60px; padding:10px 16px; border-radius:10px; background:var(--ink); color:var(--bg); font-weight:600; text-decoration:none }
.skip:focus{ top:12px }

/* ---------- stage ---------- */
.sky,.stars,#scene,.scrim,.pins{ position:fixed; inset:0 }
.sky{ z-index:0; background:linear-gradient(#9CC2F5,#EFEBFE 70%) }
.stars{ z-index:1; opacity:var(--stars); pointer-events:none;
  background-image:
    radial-gradient(1.2px 1.2px at 12% 8%,#fff 60%,transparent),radial-gradient(1px 1px at 28% 18%,#fff 60%,transparent),
    radial-gradient(1.4px 1.4px at 47% 6%,#fff 60%,transparent),radial-gradient(1px 1px at 63% 14%,#fff 60%,transparent),
    radial-gradient(1.2px 1.2px at 78% 4%,#fff 60%,transparent),radial-gradient(1px 1px at 88% 20%,#fff 60%,transparent),
    radial-gradient(1px 1px at 35% 26%,#fff 60%,transparent),radial-gradient(1.3px 1.3px at 6% 30%,#fff 60%,transparent),
    radial-gradient(1px 1px at 71% 28%,#fff 60%,transparent),radial-gradient(1.1px 1.1px at 55% 22%,#fff 60%,transparent),
    radial-gradient(1px 1px at 93% 9%,#fff 60%,transparent),radial-gradient(1.2px 1.2px at 20% 12%,#fff 60%,transparent);
}
/* the canvas keeps the large-viewport height so the phone URL bar sliding in and out never resizes it (island.js "lvh") */
#scene{ z-index:2; bottom:auto; width:100%; height:100vh; height:100lvh; display:block; pointer-events:none; opacity:0; transition:opacity .9s ease }
.stage-ready #scene{ opacity:1 }
.scrim{ z-index:3; pointer-events:none; background:linear-gradient(90deg,var(--scrim) 0%,var(--scrim) 18%,transparent 56%); transition:background .6s }
.pins{ z-index:4; pointer-events:none; overflow:hidden; opacity:0; transition:opacity .9s ease }
.stage-ready .pins{ opacity:1 }
/* #more covers the whole screen: stop compositing what is under it */
.stage-off #scene,.stage-off .pins,.stage-off .stars{ visibility:hidden }

/* ---------- pins ---------- */
.pin{ position:absolute; left:0; top:0; pointer-events:auto; border:0; padding:0; background:none; color:var(--ink); cursor:pointer; will-change:transform; font:inherit; transition:opacity .25s }
.pin.is-under{ opacity:0; pointer-events:none }
.pin-dot{ position:absolute; left:-6px; top:-6px; width:12px; height:12px; border-radius:50%; background:var(--marigold); box-shadow:0 0 0 3px #fff,0 4px 14px rgba(0,0,0,.25) }
.pin-dot::after{ content:""; position:absolute; inset:-8px; border-radius:50%; border:2px solid var(--marigold); opacity:0; animation:ping 2.4s ease-out infinite }
.pin.is-active .pin-dot::after{ opacity:1 }
@keyframes ping{ 0%{ transform:scale(.4); opacity:.9 } 100%{ transform:scale(1.6); opacity:0 } }
.pin-tag{ position:absolute; left:0; bottom:14px; transform:translateX(-50%); white-space:nowrap; display:flex; align-items:center; gap:6px;
  padding:5px 10px 5px 6px; border-radius:999px; background:var(--panel); border:1px solid var(--panel-line);
  -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px); font-size:12.5px; font-weight:600; letter-spacing:.01em; transition:opacity .35s, transform .35s }
.pin-tag svg{ width:20px; height:20px; padding:3px; border-radius:50%; background:var(--marigold); color:#fff; flex:none }
.pin-place{ display:none; font-weight:500; color:var(--ink-soft) }
.pin.is-active .pin-place{ display:inline }
.pin.is-quiet .pin-tag{ opacity:0; transform:translateX(-50%) translateY(6px); pointer-events:none }

/* ---------- nav ---------- */
.nav{ position:fixed; z-index:8; top:0; left:0; right:0; padding-top:env(safe-area-inset-top,0px); border-bottom:1px solid transparent; transition:background .35s, border-color .35s }
.nav.scrolled{ background:var(--navbg); border-bottom-color:var(--panel-line); -webkit-backdrop-filter:blur(16px) saturate(1.3); backdrop-filter:blur(16px) saturate(1.3) }
.nav-in{ position:relative; max-width:1280px; margin:0 auto; display:flex; align-items:center; gap:28px; padding-block:16px;
  padding-left:max(16px,env(safe-area-inset-left,0px)); padding-right:max(16px,env(safe-area-inset-right,0px)); transition:padding .35s }
.nav.scrolled .nav-in{ padding-block:11px }
.logo{ font-family:var(--body); font-weight:800; font-size:28px; letter-spacing:-.02em; text-decoration:none;
  background:linear-gradient(90deg,var(--grad-a),var(--azure)); -webkit-background-clip:text; background-clip:text; color:transparent }
.nav-links{ margin-left:auto; display:flex; gap:26px; list-style:none; padding:0; margin-block:0; font-size:15px; font-weight:500 }
.nav-links a{ text-decoration:none; color:var(--ink-soft); transition:color .2s }
.nav-links a:hover{ color:var(--ink) }
.menu-btn{ display:none; flex:none; width:42px; height:42px; align-items:center; justify-content:center; border-radius:13px; border:1px solid var(--panel-line);
  background:var(--chip); color:var(--ink); cursor:pointer; -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px) }
.menu-btn svg{ width:20px; height:20px }
.menu-btn .x{ display:none } .menu-open .menu-btn .x{ display:block } .menu-open .menu-btn .bars{ display:none }

.btn{ display:inline-flex; align-items:center; justify-content:center; gap:10px; padding:14px 24px; border-radius:999px; font:700 16px var(--body); text-decoration:none; border:1px solid transparent; cursor:pointer; transition:transform .2s, box-shadow .2s, background .2s }
.btn svg{ width:20px; height:20px; flex:none }
.btn:hover{ transform:translateY(-1px) }
.btn.primary{ color:#fff; background:linear-gradient(100deg,var(--indigo),var(--teal)); box-shadow:0 10px 30px -10px rgba(90,91,234,.7) }
.btn.primary:hover{ box-shadow:0 16px 36px -12px rgba(90,91,234,.8) }
.btn.ghost{ color:var(--ink); background:var(--chip); border-color:var(--panel-line); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px) }
.btn.amber{ color:#2A1A02; background:linear-gradient(100deg,#F7B955,var(--marigold)); box-shadow:0 10px 30px -12px rgba(244,162,31,.8) }
.nav .btn{ padding:11px 22px; font-size:15px }

/* ---------- journey ---------- */
main{ position:relative; z-index:6 }
.wrap{ max-width:1280px; margin:0 auto; width:100%;
  padding-left:max(16px,env(safe-area-inset-left,0px)); padding-right:max(16px,env(safe-area-inset-right,0px)) }
[data-key]{ display:flex; align-items:center; min-height:125svh }
.hero{ min-height:100svh; position:relative; padding-block:110px 90px }
.hero-copy{ max-width:660px; display:grid; gap:22px }
.eyebrow{ margin:0; font-size:13px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-soft) }
h1,h2,h3{ font-family:var(--display); text-wrap:balance; margin:0; letter-spacing:-.025em }
h1{ font-size:clamp(42px,6vw,84px); line-height:.95; font-weight:800 }
.grad{ background:linear-gradient(95deg,var(--grad-a) 10%,var(--azure) 55%,var(--grad-b)); -webkit-background-clip:text; background-clip:text; color:transparent }
.grad-gold{ background:linear-gradient(95deg,var(--marigold),#E8590C); -webkit-background-clip:text; background-clip:text; color:transparent }
.lede{ margin:0; font-size:clamp(16px,1.35vw,19px); color:var(--ink-soft); max-width:34em }
.ctas{ display:flex; flex-wrap:wrap; gap:12px }
.chips{ display:flex; flex-wrap:wrap; gap:10px; list-style:none; padding:0; margin:0 }
.chips li{ display:flex; align-items:center; gap:8px; padding:8px 14px; border-radius:999px; font-size:14px; font-weight:500; background:var(--chip); border:1px solid var(--panel-line); -webkit-backdrop-filter:blur(8px); backdrop-filter:blur(8px) }
.chips svg{ width:16px; height:16px; color:var(--teal) }
.scroll-cue{ position:absolute; left:50%; bottom:28px; transform:translateX(-50%); display:flex; flex-direction:column; align-items:center; gap:8px; text-decoration:none; font-size:12px; letter-spacing:.14em; text-transform:uppercase; color:var(--ink-soft); font-family:var(--mono) }
.scroll-cue span{ width:22px; height:36px; border-radius:12px; border:1.5px solid currentColor; position:relative }
.scroll-cue span::after{ content:""; position:absolute; left:50%; top:7px; width:3px; height:7px; margin-left:-1.5px; border-radius:2px; background:currentColor; animation:wheel 1.8s ease-in-out infinite }
@keyframes wheel{ 0%{ transform:translateY(0); opacity:1 } 70%{ transform:translateY(10px); opacity:0 } 100%{ opacity:0 } }

.card{ --act:1; width:min(440px,100%); display:grid; gap:14px; padding:26px 26px 22px; border-radius:24px; background:var(--panel); border:1px solid var(--panel-line);
  -webkit-backdrop-filter:blur(16px) saturate(1.2); backdrop-filter:blur(16px) saturate(1.2); box-shadow:0 30px 60px -30px rgba(20,22,70,.45);
  opacity:calc(.42 + .58*var(--act)); transform:translateY(calc((1 - var(--act))*18px)); transition:opacity .25s linear }
.card-head{ display:flex; align-items:center; gap:12px }
.num{ font-size:13px; color:var(--ink-soft); letter-spacing:.06em }
.svc{ display:inline-flex; align-items:center; gap:8px; padding:5px 12px 5px 5px; border-radius:999px; font-size:13.5px; font-weight:600; background:rgba(244,162,31,.14); color:var(--ink) }
.svc svg{ width:26px; height:26px; padding:5px; border-radius:50%; background:var(--marigold); color:#fff }
.card h2{ font-size:clamp(28px,2.6vw,38px); line-height:1.05; font-weight:800 }
.card p{ margin:0; color:var(--ink-soft); font-size:15.5px }
.card p strong{ color:var(--ink); font-weight:600 }
.readout{ display:grid; grid-template-columns:repeat(3,auto); justify-content:start; gap:4px 22px; margin:6px 0 0; padding-top:14px; border-top:1px dashed var(--panel-line); font-size:12.5px }
.readout div{ display:grid; gap:2px; min-width:0 }
.readout dt{ font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--ink-soft) }
.readout dd{ margin:0; color:var(--ink) }

.finale{ min-height:110svh }
.final-card{ max-width:620px; display:grid; gap:20px }
.final-card h2{ font-size:clamp(40px,5vw,72px); line-height:.98; font-weight:800 }
.final-card p{ margin:0; color:var(--ink-soft); font-size:clamp(16px,1.3vw,18px); max-width:32em }
.final-card .eyebrow{ font-size:13px }

/* ---------- HUD ---------- */
.hud{ position:fixed; z-index:7; display:flex; align-items:center; gap:12px; padding:8px 8px 8px 14px; border-radius:16px;
  background:var(--panel); border:1px solid var(--panel-line); -webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); font-size:13px; transition:opacity .3s, visibility .3s }
.time-hud{ right:max(20px,calc(env(safe-area-inset-right,0px) + 12px)); bottom:calc(env(safe-area-inset-bottom,0px) + 20px) }
.time-now{ display:grid; line-height:1.25 }
.time-now b{ font-weight:600; display:flex; align-items:center; gap:7px }
.time-now small{ color:var(--ink-soft); font-size:11.5px }
.time-hud{ padding:9px 16px }
.live-dot{ width:8px; height:8px; border-radius:50%; background:#2BC48A; box-shadow:0 0 0 3px rgba(43,196,138,.25) }
.prog-hud{ left:max(20px,calc(env(safe-area-inset-left,0px) + 12px)); bottom:calc(env(safe-area-inset-bottom,0px) + 20px); padding:10px 16px; gap:14px }
.prog-bar{ width:120px; height:4px; border-radius:4px; background:rgba(127,130,200,.25); overflow:hidden }
.prog-bar i{ display:block; height:100%; width:0; background:linear-gradient(90deg,var(--indigo),var(--marigold)) }
.prog-hud[data-on="0"],.is-past .hud{ opacity:0; visibility:hidden; pointer-events:none }

.no3d .fallback{ display:block }
.fallback{ display:none; position:fixed; z-index:3; right:6vw; top:40%; max-width:280px; font-size:14px; color:var(--ink-soft) }
.no3d .time-hud{ display:none }

/* ============================================================
   #more: the rest of the site
   ============================================================ */
.more-fade{ height:32svh; background:linear-gradient(to bottom,transparent,var(--bg)); pointer-events:none }
.more{ position:relative; background:var(--bg); transition:background .6s }
.more:focus{ outline:none }
.sec{ padding-block:clamp(72px,9vw,120px); scroll-margin-top:64px }
.sec:first-child{ padding-top:clamp(24px,4vw,48px) }
.sec-head{ max-width:720px; display:grid; gap:14px; margin-bottom:clamp(36px,5vw,56px) }
.sec-head.center{ margin-inline:auto; text-align:center; justify-items:center }
.kicker{ display:inline-flex; align-items:center; gap:10px; margin:0; font:500 12.5px var(--mono); letter-spacing:.14em; text-transform:uppercase; color:var(--teal-ink) }
.kicker::before{ content:""; width:18px; height:2px; border-radius:2px; background:currentColor }
.kicker.amber{ color:var(--amber-ink) }
.sec h2{ font-size:clamp(32px,4.2vw,56px); line-height:1.02; font-weight:800 }
.sec-head p{ margin:0; color:var(--ink-soft); font-size:clamp(15.5px,1.2vw,18px); max-width:36em }
.sec h3{ font-size:19px; line-height:1.2; font-weight:700; letter-spacing:-.01em }
.box{ background:var(--surface); border:1px solid var(--line); border-radius:24px; box-shadow:var(--shadow) }
.ico{ display:inline-flex; align-items:center; justify-content:center; width:46px; height:46px; flex:none; border-radius:14px; color:#fff; background:linear-gradient(135deg,var(--indigo),var(--teal)) }
.ico svg{ width:22px; height:22px }
.ico.amber{ color:#2A1A02; background:linear-gradient(135deg,#F7C76A,var(--marigold)) }

/* reveal on scroll (only with JS; the class is set in <head>) */
.js .rv{ opacity:0; transform:translateY(18px); transition:opacity .7s ease, transform .7s cubic-bezier(.2,.7,.2,1) }
.js .rv.in{ opacity:1; transform:none }
.js .rv.d2{ transition-delay:.08s } .js .rv.d3{ transition-delay:.16s } .js .rv.d4{ transition-delay:.24s } .js .rv.d5{ transition-delay:.32s }

/* how it works: three steps */
.steps{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; list-style:none; padding:0; margin:0 }
.step{ position:relative; display:grid; gap:12px; align-content:start; justify-items:center; text-align:center; padding:28px 24px 30px }
.step-n{ position:relative; display:grid; place-items:center; width:48px; height:48px; border-radius:50%; font:600 15px var(--mono); color:#fff; background:linear-gradient(135deg,var(--indigo),var(--teal)); box-shadow:0 0 0 6px var(--surface-solid),0 10px 24px -8px rgba(90,91,234,.7) }
.step p{ margin:0; color:var(--ink-soft); font-size:15px }
.wallet-band{ display:flex; align-items:center; gap:22px; margin-top:24px; padding:26px 30px; background:
  linear-gradient(var(--surface-solid),var(--surface-solid)) padding-box,
  linear-gradient(110deg,var(--indigo),var(--teal),var(--marigold)) border-box; border:1.5px solid transparent }
.wallet-band .ico{ width:56px; height:56px; border-radius:16px } .wallet-band .ico svg{ width:26px; height:26px }
.wallet-band div{ flex:1 1 0; min-width:0; display:grid; gap:4px }
.wallet-band .btn{ flex:none; white-space:nowrap }
.wallet-band p{ margin:0; color:var(--ink-soft); font-size:15px }

/* partner */
.partner{ background:var(--surface-2); border-block:1px solid var(--line) }
.who{ display:grid; grid-template-columns:repeat(5,1fr); gap:16px; list-style:none; padding:0; margin:0 0 20px }
.who li{ display:grid; gap:10px; align-content:start; padding:22px 20px }
.who p,.feat p{ margin:0; color:var(--ink-soft); font-size:14.5px }
.feats{ display:grid; grid-template-columns:repeat(3,1fr); gap:16px; list-style:none; padding:0; margin:0 }
.feat{ display:grid; grid-template-columns:auto 1fr; gap:6px 16px; align-items:start; align-content:start; padding:24px }
.feat .ico{ grid-row:span 2 }
.partner-cta{ display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:12px; margin-top:36px }
.partner-cta .btn.ghost{ background:var(--surface); border-color:var(--line) }
.partner-cta .btn.ghost svg{ color:#25D366 }

/* app screenshots (shown by js/home.js only once the images exist) */
.shots-row + .shots-row{ margin-top:48px }
.shots-row h3{ margin-bottom:20px; text-align:center }
.shots{ display:flex; justify-content:center; gap:clamp(14px,3vw,36px); list-style:none; padding:0; margin:0 }
.shots figure{ margin:0; display:grid; gap:12px; justify-items:center; width:min(240px,30%) }
.shots img{ width:100%; aspect-ratio:9/19.5; object-fit:cover; border-radius:26px; border:6px solid var(--ink); box-shadow:var(--shadow) }
.shots figcaption{ font-size:13.5px; font-weight:600; color:var(--ink-soft) }

/* founder */
.founder{ display:grid; grid-template-columns:300px 1fr; gap:clamp(28px,5vw,64px); align-items:center; padding:clamp(26px,4vw,48px) }
.founder-id{ display:grid; justify-items:center; gap:14px; text-align:center }
.photo{ position:relative; width:200px; aspect-ratio:1; border-radius:50%; padding:5px; background:conic-gradient(from 200deg,var(--indigo),var(--teal),var(--marigold),var(--indigo)) }
.photo img,.photo span{ width:100%; height:100%; border-radius:50%; object-fit:cover; border:5px solid var(--surface-solid); background:var(--surface-2) }
.photo span{ position:absolute; inset:5px; width:auto; height:auto; display:grid; place-items:center; font:800 54px var(--display); color:var(--ink-soft) }
.photo img + span{ display:none }
.founder-id b{ font:800 22px var(--display); letter-spacing:-.01em }
.founder-id small{ display:block; margin-top:2px; color:var(--ink-soft); font-size:14px; line-height:1.45 }
.chip-link{ display:inline-flex; align-items:center; gap:8px; padding:8px 16px; border-radius:999px; font-size:14px; font-weight:600; text-decoration:none; border:1px solid var(--line); background:var(--surface-2); transition:border-color .2s }
.chip-link:hover{ border-color:var(--azure) } .chip-link svg{ width:15px; height:15px; color:#0A66C2 }
:root[data-scene="dawn"] .chip-link svg,:root[data-scene="dusk"] .chip-link svg,:root[data-scene="night"] .chip-link svg{ color:#7FB5F0 }
.quote{ position:relative; margin:0 0 28px; padding-left:22px; border-left:3px solid var(--marigold); font:500 clamp(17px,1.5vw,20px)/1.6 var(--body); color:var(--ink) }
.vision{ display:grid; gap:18px; list-style:none; padding:0; margin:0 }
.vision li{ display:grid; grid-template-columns:auto 1fr; gap:4px 16px }
.vision .ico{ grid-row:span 2; width:42px; height:42px; border-radius:12px } .vision .ico svg{ width:20px; height:20px }
.vision b{ font-weight:600 }
.vision p{ margin:0; color:var(--ink-soft); font-size:14.5px }

/* download */
.dl{ position:relative; overflow:hidden; display:grid; gap:28px; justify-items:center; text-align:center; padding:clamp(36px,6vw,72px) clamp(20px,4vw,56px); border-radius:32px; color:#fff;
  background:radial-gradient(120% 140% at 0% 0%,#6E6FF2 0%,transparent 55%),radial-gradient(120% 140% at 100% 100%,#1BB3C4 0%,transparent 55%),linear-gradient(120deg,#4142C9,#1A7FB6) }
.dl::after{ content:""; position:absolute; inset:0; pointer-events:none; opacity:.18; background-image:radial-gradient(rgba(255,255,255,.9) 1px,transparent 1.2px); background-size:22px 22px; mask-image:linear-gradient(to bottom,#000,transparent 80%); -webkit-mask-image:linear-gradient(to bottom,#000,transparent 80%) }
.dl > *{ position:relative; z-index:1 }
.dl .kicker{ color:#FFE3B0 }
.dl h2{ color:#fff } .dl h2 span{ color:#FFD58A }
.dl > p{ margin:0; max-width:34em; color:rgba(255,255,255,.82); font-size:clamp(15.5px,1.2vw,18px) }
.apps{ display:grid; grid-template-columns:1fr 1fr; gap:16px; width:min(860px,100%) }
.app{ display:grid; gap:14px; justify-items:center; padding:24px 20px; border-radius:22px; background:rgba(255,255,255,.1); border:1px solid rgba(255,255,255,.2); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px) }
.app h3{ font-size:18px; color:#fff } .app h3 small{ display:block; margin-top:2px; font:500 13px var(--body); letter-spacing:0; color:rgba(255,255,255,.72) }
.stores{ display:flex; flex-wrap:wrap; justify-content:center; gap:10px }
.store{ display:inline-flex; align-items:center; gap:11px; min-width:172px; padding:9px 18px 9px 14px; border-radius:14px; text-decoration:none; text-align:left; color:#fff; background:#0B0D24; border:1px solid rgba(255,255,255,.18); transition:transform .2s, background .2s }
.store:hover{ transform:translateY(-1px); background:#000 }
.store svg{ width:24px; height:24px; flex:none }
.store span{ display:grid; line-height:1.15 } .store small{ font-size:11px; opacity:.75 } .store b{ font-size:16.5px; font-weight:600 }
.store.soon{ opacity:.62; cursor:default } .store.soon:hover{ transform:none; background:#0B0D24 }

/* faq: plain <details>, so every answer is in the HTML for search engines and AI crawlers */
.faq{ max-width:860px; margin:0 auto; display:grid; gap:12px }
.faq details{ border-radius:20px; overflow:hidden }
.faq summary{ display:flex; align-items:center; gap:16px; padding:20px 24px; cursor:pointer; list-style:none }
.faq summary::-webkit-details-marker{ display:none }
.faq summary h3{ flex:1; font-size:17.5px; line-height:1.35 }
.faq summary svg{ width:30px; height:30px; flex:none; padding:6px; border-radius:50%; color:var(--teal-ink); background:var(--surface-2); border:1px solid var(--line); transition:transform .25s }
.faq details[open] summary svg{ transform:rotate(45deg) }
.faq details p{ margin:0; padding:0 24px 22px; color:var(--ink-soft); font-size:15.5px }
.faq details p a{ color:var(--azure); font-weight:500 }

/* contact */
.contact{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,5vw,64px); align-items:start }
.contact .sec-head{ margin-bottom:28px }
.lines{ display:grid; gap:14px; list-style:none; padding:0; margin:0 }
.line{ display:grid; grid-template-columns:auto 1fr; gap:4px 16px; align-content:start; padding:18px 20px }
.line .ico{ grid-row:span 3; width:44px; height:44px; border-radius:13px } .line .ico svg{ width:20px; height:20px }
.line small{ font:500 11px var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--ink-soft) }
.line b{ font-weight:600; font-size:16.5px }
.line a.mail{ font-size:14.5px; color:var(--ink-soft); text-decoration:none } .line a.mail:hover{ color:var(--ink); text-decoration:underline }
.acts{ display:flex; flex-wrap:wrap; gap:6px; margin-top:6px }
.acts a{ display:inline-flex; align-items:center; gap:6px; padding:6px 12px; border-radius:999px; font-size:13px; font-weight:600; text-decoration:none; background:var(--surface-2); border:1px solid var(--line); transition:border-color .2s }
.acts a:hover{ border-color:var(--azure) }
.acts svg{ width:14px; height:14px } .acts .wa svg{ color:#25D366 }
.form{ display:grid; gap:16px; padding:clamp(22px,3vw,34px) }
.form h3{ font-size:22px }
.form label{ display:grid; gap:7px; font-size:13.5px; font-weight:600 }
.form input,.form textarea{ width:100%; padding:13px 15px; border-radius:13px; border:1px solid var(--line); background:var(--field); color:var(--ink); font:400 15.5px var(--body); transition:border-color .2s, box-shadow .2s }
.form textarea{ min-height:150px; resize:vertical }
.form input:focus,.form textarea:focus{ outline:none; border-color:var(--azure); box-shadow:0 0 0 4px rgba(46,123,224,.18) }
.form ::placeholder{ color:var(--ink-soft); opacity:.7 }
.form .btn{ width:100%; margin-top:4px }
.form .btn[disabled]{ opacity:.7; cursor:progress; transform:none }
.status{ min-height:1.4em; margin:0; font-size:14px; font-weight:500; text-align:center }
.status.ok{ color:#169B6B } .status.err{ color:#D8452F }
:root[data-scene="dawn"] .status.ok,:root[data-scene="dusk"] .status.ok,:root[data-scene="night"] .status.ok{ color:#4FD6A0 }
:root[data-scene="dawn"] .status.err,:root[data-scene="dusk"] .status.err,:root[data-scene="night"] .status.err{ color:#FF8A73 }

/* footer */
.foot{ position:relative; z-index:6; padding-block:56px calc(env(safe-area-inset-bottom,0px) + 28px); border-top:1px solid var(--line); background:linear-gradient(var(--surface-2),var(--surface-2)) var(--bg) }
.foot-grid{ display:grid; grid-template-columns:1.6fr 1fr 1fr 1fr; gap:36px }
.foot-brand p{ margin:12px 0 22px; max-width:30em; color:var(--ink-soft); font-size:14.5px }
.socials{ display:grid; gap:8px; margin-bottom:16px }
.socials > span{ font:500 11px var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--ink-soft) }
.socials div{ display:flex; flex-wrap:wrap; gap:8px }
.socials a{ display:grid; place-items:center; width:38px; height:38px; border-radius:12px; color:var(--ink-soft); background:var(--surface); border:1px solid var(--line); transition:color .2s, border-color .2s, transform .2s }
.socials a:hover{ color:var(--ink); border-color:var(--azure); transform:translateY(-1px) }
.socials svg{ width:16px; height:16px }
.foot h4{ margin:0 0 14px; font:500 11.5px var(--mono); letter-spacing:.14em; text-transform:uppercase; color:var(--ink-soft) }
.foot ul{ display:grid; gap:9px; list-style:none; padding:0; margin:0; font-size:14.5px }
.foot ul a{ text-decoration:none; color:var(--ink) } .foot ul a:hover{ color:var(--azure) }
.foot-bottom{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:10px; margin-top:44px; padding-top:22px; border-top:1px solid var(--line); font-size:13px; color:var(--ink-soft) }
.foot-bottom p{ margin:0 }

/* ---------- tablets ---------- */
@media (max-width:1100px){
  .who{ grid-template-columns:repeat(3,1fr) }
  .feats{ grid-template-columns:repeat(2,1fr) }
  .foot-grid{ grid-template-columns:1fr 1fr 1fr } .foot-brand{ grid-column:1/-1 }
}
@media (max-width:1000px) and (min-width:821px){ .nav-in{ gap:18px } .nav-links{ gap:18px; font-size:14px } }

/* ---------- phones ---------- */
@media (max-width:820px){
  /* always frosted on phones: the logo would otherwise sit on the sea */
  .nav,.nav.scrolled{ background:var(--navbg); border-bottom-color:var(--panel-line); -webkit-backdrop-filter:blur(16px) saturate(1.3); backdrop-filter:blur(16px) saturate(1.3) }
  .nav-in,.nav.scrolled .nav-in{ padding-block:10px; gap:10px }
  .nav .btn{ margin-left:auto; padding:9px 16px; font-size:14px } .logo{ font-size:24px }
  .menu-btn{ display:inline-flex }
  .nav-links{ display:none; position:absolute; top:calc(100% + 6px); left:max(12px,env(safe-area-inset-left,0px)); right:max(12px,env(safe-area-inset-right,0px));
    flex-direction:column; gap:2px; margin:0; padding:8px; border-radius:18px; background:var(--menu); border:1px solid var(--panel-line); box-shadow:0 24px 48px -20px rgba(10,12,40,.45); font-size:16px }
  .menu-open .nav-links{ display:flex }
  .nav-links a{ display:block; padding:13px 14px; border-radius:12px; color:var(--ink) }
  .nav-links a:active{ background:var(--surface-2) }
  .scrim{ background:linear-gradient(0deg,var(--scrim) 0%,var(--scrim) 40%,transparent 64%) }
  [data-key]{ align-items:flex-end; min-height:115svh; padding-bottom:calc(env(safe-area-inset-bottom,0px) + 20px) }
  .hero{ padding-block:0 calc(env(safe-area-inset-bottom,0px) + 22px); min-height:100svh }
  .hero-copy{ gap:14px }
  .hero .eyebrow{ display:none }
  h1{ font-size:clamp(34px,10vw,44px) }
  .lede{ font-size:14.5px; line-height:1.55 }
  [data-key] .ctas{ flex-wrap:nowrap; gap:8px } [data-key] .btn{ padding:11px 15px; font-size:14.5px; gap:8px; white-space:nowrap } .btn svg{ width:18px; height:18px }
  .chips{ gap:6px } .chips li{ padding:5px 10px; font-size:12.5px }
  .scroll-cue{ display:none }
  .card{ padding:20px 18px 18px; border-radius:20px }
  .readout{ grid-template-columns:repeat(2,minmax(0,1fr)) }
  .readout div:last-child{ grid-column:1/-1 }
  .prog-hud{ display:none }
  .time-hud{ left:max(16px,env(safe-area-inset-left,0px)); right:auto; top:calc(env(safe-area-inset-top,0px) + 70px); bottom:auto; padding:7px 13px; border-radius:13px }
  .time-now small{ display:none } .time-now b{ font-size:12.5px }
  /* at a stop the camera is close and the active pin sits near the top: the time panel steps aside (back on the hero and finale) */
  .prog-hud[data-on="1"] ~ .time-hud{ opacity:0; visibility:hidden; pointer-events:none }
  .pin-tag{ font-size:11.5px; padding:4px 8px 4px 4px } .pin-tag svg{ width:18px; height:18px }
  .fallback{ left:16px; right:16px; top:28%; max-width:none }

  .steps{ grid-template-columns:1fr; gap:14px }
  .step{ grid-template-columns:auto 1fr; justify-items:start; text-align:left; gap:4px 18px; padding:20px }
  .step-n{ grid-row:span 2 }
  .wallet-band{ flex-direction:column; align-items:flex-start; padding:22px } .wallet-band div{ flex:none }
  .wallet-band .btn{ width:100% }
  .who{ grid-template-columns:1fr; gap:12px } .who li{ grid-template-columns:auto 1fr; gap:4px 16px; padding:20px } .who .ico{ grid-row:span 2 }
  .feats{ grid-template-columns:1fr; gap:12px } .feat{ padding:20px }
  .partner-cta .btn{ width:100% }
  .shots{ gap:10px } .shots img{ border-width:4px; border-radius:18px }
  .founder{ grid-template-columns:1fr }
  .photo{ width:160px }
  .apps{ grid-template-columns:1fr }
  .store{ min-width:0; flex:1 1 150px }
  .contact{ grid-template-columns:1fr }
  .faq summary{ padding:17px 18px; gap:12px } .faq summary h3{ font-size:16px } .faq details p{ padding:0 18px 18px; font-size:15px }
  .foot-grid{ grid-template-columns:1fr 1fr; gap:28px 20px }
}
/* ---------- touch screens ----------
   No backdrop blur over the live 3D canvas: the blur is recomputed every frame and was the main cause of
   scroll jank on mid-range Android. The panels get more opaque instead. */
@media (max-width:820px), (hover:none){
  :root{ --panel:rgba(255,255,255,.93); --chip:rgba(255,255,255,.9); --navbg:rgba(255,255,255,.93) }
  :root[data-scene="dawn"],:root[data-scene="dusk"],:root[data-scene="night"]{ --panel:rgba(20,22,64,.93); --chip:rgba(22,24,66,.9); --navbg:rgba(13,16,51,.93) }
  .nav,.nav.scrolled,.pin-tag,.chips li,.btn.ghost,.card,.hud,.menu-btn{ -webkit-backdrop-filter:none !important; backdrop-filter:none !important }
}
@media (prefers-reduced-motion:reduce){
  .pin-dot::after,.scroll-cue span::after{ animation:none }
  .js .rv{ transform:none; transition:opacity .3s }
}
