/* Amigar — website. Tokens mirror the app's Tokens.swift exactly. */
:root{
  --canvas:#FFFFFF; --alt:#F9F9F8; --fill:#F2F4F7;
  --ink:#0B0B0C; --ink2:#6B7280; --ink3:#9CA3AF;
  --action:#000000; --rule:#E5E5E5;
  --blue:#0655FA;        /* links / confirm ONLY */
  --flood:#2F2FFF;       /* passport flex surface ONLY */
  --accent:#2F2FFF;      /* website accent — same hue as the passport flood */
  --accent-soft:#9C9CFF; /* the accent, lifted to read on the ink footer */
  --success:#12B76A;
  --r-sheet:24px; --r-card:20px; --r-btn:16px;
  --ease:cubic-bezier(.22,1,.36,1);           /* the app's sheet easing */
  --pad:clamp(20px,5vw,72px);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--canvas);color:var(--ink);
  font:400 17px/1.55 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;overflow-x:hidden}
img,video{max-width:100%;display:block}
a,a:link,a:visited{color:inherit}
.wrap{max-width:1180px;margin:0 auto;padding-inline:var(--pad)}

/* ── type ─────────────────────────────────────────── */
h1,h2,h3{margin:0;font-weight:700;letter-spacing:-.03em;line-height:1.02;text-wrap:balance}
h1{font-size:clamp(42px,7.2vw,78px)}
h2{font-size:clamp(32px,4.8vw,56px);letter-spacing:-.028em}
h3{font-size:19px;letter-spacing:-.015em;line-height:1.25}
.lead{color:var(--ink2);font-size:clamp(17px,1.5vw,20px);margin:16px 0 0;max-width:46ch;text-wrap:pretty}
.eyebrow{font-size:13px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink3);margin:0 0 18px}

/* ── buttons ──────────────────────────────────────── */
.btn{display:inline-block;background:var(--action);color:#fff;text-decoration:none;
  padding:15px 26px;border-radius:var(--r-btn);font-weight:600;font-size:16px;
  transition:transform .25s var(--ease),opacity .25s var(--ease)}
.btn:hover{transform:translateY(-2px)}
.btn--onflood{background:#fff;color:var(--flood)}

/* ── nav ──────────────────────────────────────────── */
.nav{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.82);
  backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid var(--rule)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;height:64px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:700;letter-spacing:-.02em;font-size:19px}
.brand img{width:24px;height:24px}
.nav .btn{padding:10px 18px;font-size:15px}

/* ── sections ─────────────────────────────────────── */
section{padding:clamp(72px,11vw,150px) 0}
.section--alt{background:var(--alt)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,84px);align-items:center}
@media(max-width:880px){.split{grid-template-columns:1fr}}

/* ══ DEVICE FRAMES — five distinct treatments ═══════ */
.dev{position:relative;width:100%;margin-inline:auto}
.dev img,.dev video{width:100%;height:auto;display:block;border-radius:inherit;
  aspect-ratio:1206/2622;object-fit:cover;background:var(--fill)}

/* A — hero: titanium rim, dynamic island */
.dev--hero{max-width:330px;padding:10px;border-radius:52px;
  background:linear-gradient(150deg,#54545a,#17171a 30%,#111114 70%,#54545a);
  box-shadow:0 50px 90px -30px rgba(0,0,0,.42),0 8px 24px rgba(0,0,0,.12)}
.dev--hero img,.dev--hero video{border-radius:42px}
.dev--hero::after{content:"";position:absolute;top:22px;left:50%;transform:translateX(-50%);
  width:31%;height:26px;background:#000;border-radius:99px}

/* B — minimal: thin ink bezel */
.dev--min{max-width:250px;padding:5px;border-radius:38px;background:var(--ink);
  box-shadow:0 24px 50px -20px rgba(0,0,0,.30)}
.dev--min img,.dev--min video{border-radius:33px}
.dev--min::after{content:"";position:absolute;top:13px;left:50%;transform:translateX(-50%);
  width:30%;height:18px;background:#000;border-radius:99px}

/* C — bleed: no hardware, just the screen */
.dev--bleed{max-width:300px;border-radius:34px;overflow:hidden;
  box-shadow:0 34px 70px -26px rgba(0,0,0,.30),0 0 0 1px var(--rule)}

/* D — dark: for the flood-blue surface */
.dev--dark{max-width:300px;padding:9px;border-radius:48px;background:#000;
  box-shadow:0 44px 80px -26px rgba(0,0,0,.5)}
.dev--dark img{border-radius:40px}
.dev--dark::after{content:"";position:absolute;top:20px;left:50%;transform:translateX(-50%);
  width:31%;height:23px;background:#000;border-radius:99px}

/* E — deck: framed + segmented progress (echoes the app's story bar) */
.dev--deck{max-width:320px;padding:10px;border-radius:50px;background:var(--ink);
  box-shadow:0 44px 84px -28px rgba(0,0,0,.38)}
.dev--deck img{border-radius:41px;grid-area:1/1}
.deck-stack{display:grid;border-radius:41px;overflow:hidden}
.deck-stack img{opacity:0;visibility:hidden;z-index:0;
  transition:opacity .45s var(--ease)}
.deck-stack img.on{opacity:1;visibility:visible;z-index:1}

/* hero float */
.float{animation:float 8s var(--ease) infinite}
@keyframes float{0%,100%{transform:translateY(0) rotate(-1.1deg)}50%{transform:translateY(-16px) rotate(1.1deg)}}

/* ── safety list ──────────────────────────────────── */
.tools{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:var(--rule);
  border:1px solid var(--rule);border-radius:var(--r-card);overflow:hidden;margin-top:44px}
@media(max-width:720px){.tools{grid-template-columns:1fr}}
.tool{background:var(--canvas);padding:24px}
.tool h3{margin-bottom:7px}
.tool p{margin:0;color:var(--ink2);font-size:15.5px;line-height:1.5}
.pill{display:inline-block;margin-left:8px;background:rgba(18,183,106,.12);color:var(--success);
  font-size:12px;font-weight:600;padding:3px 9px;border-radius:99px;letter-spacing:.01em;vertical-align:2px}
.pair{display:flex;gap:26px;align-items:flex-start;justify-content:center;flex-wrap:wrap}

/* ── deck ─────────────────────────────────────────── */
.deck{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,84px);align-items:center}
@media(max-width:880px){.deck{grid-template-columns:1fr}}
.bars{display:flex;gap:5px;margin:0 0 22px}
.bars i{height:3px;flex:1;background:var(--rule);border-radius:2px;overflow:hidden}
.bars i.on{background:var(--ink)}
.deck-cap{font-size:clamp(26px,3.4vw,40px);font-weight:700;letter-spacing:-.03em;line-height:1.05;min-height:2.1em}
.deck-ctrl{display:flex;gap:10px;margin-top:28px}
.ctrl{width:46px;height:46px;border-radius:99px;border:1px solid var(--rule);background:var(--canvas);
  cursor:pointer;font-size:17px;color:var(--ink);display:grid;place-items:center;
  transition:background .2s var(--ease)}
.ctrl:hover{background:var(--fill)}
.ctrl[disabled]{opacity:.32;cursor:default}
.count{align-self:center;color:var(--ink3);font-size:14px;margin-left:6px}

/* ── flood section (the ONE place #2F2FFF lives) ──── */
.flood{background:var(--flood);color:#fff}
.flood .lead{color:rgba(255,255,255,.72)}
.flood .eyebrow{color:rgba(255,255,255,.6)}

/* ── gallery ──────────────────────────────────────── */
.rail{display:flex;gap:22px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding:8px calc(var(--pad)) 26px;margin-inline:calc(var(--pad) * -1);
  scrollbar-width:none}
.rail::-webkit-scrollbar{display:none}
.rail figure{margin:0;flex:0 0 auto;scroll-snap-align:center;width:230px}
.rail figcaption{margin-top:14px;font-size:14px;color:var(--ink2)}

/* ── close + footer ───────────────────────────────── */
.close{text-align:center}
.close img{width:46px;margin:0 auto 26px}
.foot{border-top:1px solid var(--rule);padding:34px 0;color:var(--ink3);font-size:14px}
.foot .wrap{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}

/* ── reveal ───────────────────────────────────────── */
.js .reveal{opacity:0;transform:translateY(16px);
  transition:opacity .7s var(--ease),transform .7s var(--ease)}
.js .reveal.in{opacity:1;transform:none}

@media(prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
  .reveal{opacity:1;transform:none}
  html{scroll-behavior:auto}
}

/* ══════════════ v2 ══════════════ */

/* hero fills the screen properly */
.hero{min-height:auto;display:grid;align-items:center;padding-top:38px;padding-bottom:84px}
@media(max-width:880px){.hero{padding-top:28px;padding-bottom:36px}}

/* top menu */
.nav-links{display:flex;gap:26px;align-items:center;margin-left:auto;margin-right:26px}
.nav-links a{text-decoration:none;font-size:15px;font-weight:500;color:var(--ink2);
  transition:color .2s var(--ease)}
.nav-links a:hover,.nav-links a[aria-current]{color:var(--ink)}
@media(max-width:820px){.nav-links{display:none}}

/* layout variety — stop everything sitting on the right */
.split.reverse>*:first-child{order:2}
@media(max-width:880px){.split.reverse>*:first-child{order:0}}
.centred{text-align:center;max-width:760px;margin-inline:auto}
.centred .lead{margin-inline:auto}
.cluster{display:flex;gap:22px;justify-content:center;align-items:center;flex-wrap:wrap;margin-top:54px}
.cluster .dev{max-width:225px}
.cluster .dev:nth-child(even){transform:translateY(26px)}
@media(max-width:680px){.cluster .dev:nth-child(even){transform:none}}
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;align-items:start;margin-top:52px}
@media(max-width:820px){.trio{grid-template-columns:1fr}}
.trio .dev{max-width:100%}
.trio p{color:var(--ink2);font-size:15.5px;margin:16px 0 0}
.trio h3{margin-top:20px}

/* blank device (map preview to come) */
.screen-blank{width:100%;aspect-ratio:1206/2622;background:var(--fill);border-radius:inherit;
  display:grid;place-items:center}
.screen-blank span{color:var(--ink3);font-size:14px;letter-spacing:.04em}

/* floating reactions out of a screen */
.react{position:absolute;inset:0;pointer-events:none;z-index:3}
.react span{position:absolute;font-size:27px;opacity:0;animation:rise 5s var(--ease) infinite}
.react span:nth-child(1){left:8%;  bottom:40%;animation-delay:.3s}
.react span:nth-child(2){left:34%; bottom:34%;animation-delay:1.6s}
.react span:nth-child(3){right:10%;bottom:44%;animation-delay:2.7s}
.react span:nth-child(4){right:30%;bottom:30%;animation-delay:3.9s}
@keyframes rise{
  0%{opacity:0;transform:translateY(10px) scale(.6) rotate(-6deg)}
  18%{opacity:1}
  70%{opacity:.9}
  100%{opacity:0;transform:translateY(-160px) scale(1.08) rotate(6deg)}}

/* sub-page hero */
.page-hero{padding:clamp(96px,12vw,150px) 0 clamp(40px,5vw,64px)}
.page-hero h1{font-size:clamp(38px,6vw,66px)}
.back{display:inline-block;color:var(--ink2);text-decoration:none;font-size:15px;margin-bottom:22px}
.back:hover{color:var(--ink)}
.step{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,6vw,80px);align-items:center;
  padding:clamp(48px,7vw,90px) 0;border-top:1px solid var(--rule)}
@media(max-width:880px){.step{grid-template-columns:1fr}}
.step.reverse>*:first-child{order:2}
@media(max-width:880px){.step.reverse>*:first-child{order:0}}
.num{font-size:13px;font-weight:700;letter-spacing:.14em;color:var(--ink3);margin:0 0 14px}

/* ══ proper footer ══ */
.site-footer{background:var(--ink);color:#fff;padding:72px 0 34px;margin-top:0}
.fgrid{display:grid;grid-template-columns:1.6fr repeat(4,1fr);gap:40px}
@media(max-width:900px){.fgrid{grid-template-columns:1fr 1fr;gap:34px}}
@media(max-width:560px){.fgrid{grid-template-columns:1fr}}
.fbrand img{width:34px;margin-bottom:16px}
.fbrand p{color:rgba(255,255,255,.55);font-size:14.5px;max-width:30ch;margin:0}
.fcol h4{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.45);
  margin:0 0 16px;font-weight:600}
.fcol a{display:block;color:rgba(255,255,255,.82);text-decoration:none;font-size:15px;margin-bottom:11px;
  transition:color .2s var(--ease)}
.fcol a:hover{color:#fff}
.fbase{display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;align-items:center;
  border-top:1px solid rgba(255,255,255,.14);margin-top:56px;padding-top:26px;
  color:rgba(255,255,255,.45);font-size:13.5px}
.fsocial{display:flex;gap:16px}
.fsocial a{color:rgba(255,255,255,.7);text-decoration:none;font-size:13.5px}
.fsocial a:hover{color:#fff}

/* link colours: beat the UA :link/:visited rules explicitly */
.nav .nav-links a,.nav .nav-links a:link,.nav .nav-links a:visited{color:#6B7280}
.nav .nav-links a:hover,.nav .nav-links a[aria-current]{color:#0B0B0C}
.btn,.btn:link,.btn:visited{color:#fff}
.btn--onflood,.btn--onflood:link,.btn--onflood:visited{color:#2F2FFF}
.fcol a,.fcol a:link,.fcol a:visited{color:rgba(255,255,255,.82)}
.fsocial a,.fsocial a:link,.fsocial a:visited{color:rgba(255,255,255,.7)}
.back,.back:link,.back:visited{color:#6B7280}

/* ══════════════ v3 ══════════════ */

/* hero device must never overflow the viewport (was clipping at the bottom) */
/* hero device stays full size (330px) — hero sits higher instead */
.nav-links{gap:20px}
.nav-links a{font-size:14.5px}

/* "click me" + popup of a real app screen */
.clickme{display:inline-flex;align-items:center;gap:9px;background:var(--ink);color:#fff;border:0;
  padding:12px 20px;border-radius:99px;font:600 14.5px/1 inherit;cursor:pointer;margin-top:24px;
  transition:transform .25s var(--ease)}
.clickme:hover{transform:translateY(-2px)}
.clickme i{font-style:normal;opacity:.6}
.modal{position:fixed;inset:0;background:rgba(11,11,12,.74);display:none;place-items:center;
  z-index:100;padding:28px}
.modal.on{display:grid}
.modal .dev{max-width:min(300px,70vw)}
.modal-close{position:absolute;top:20px;right:22px;width:46px;height:46px;border-radius:99px;border:0;
  background:rgba(255,255,255,.18);color:#fff;font-size:19px;cursor:pointer}
.modal-cap{color:rgba(255,255,255,.75);text-align:center;font-size:14.5px;margin-top:18px;max-width:34ch}

/* the reunion story block */
.story{background:var(--ink);color:#fff;border-radius:var(--r-sheet);padding:clamp(28px,4vw,48px);
  margin-top:46px}
.story p{margin:0 0 14px;font-size:clamp(18px,2vw,23px);line-height:1.45;letter-spacing:-.015em}
.story p:last-child{margin-bottom:0}
.story .muted{color:rgba(255,255,255,.6);font-size:16px;letter-spacing:0}
.story b{color:#fff}

/* two-column explainer (friends vs watchers) */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-top:42px}
@media(max-width:720px){.duo{grid-template-columns:1fr}}
.duo div{background:var(--canvas);border:1px solid var(--rule);border-radius:var(--r-card);padding:26px}
.duo h3{margin-bottom:9px}
.duo p{margin:0;color:var(--ink2);font-size:15.5px}

/* email capture */
.signup{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:32px}
.signup input{flex:0 1 320px;padding:15px 18px;border:1px solid var(--rule);border-radius:var(--r-btn);
  font:inherit;font-size:16px;background:var(--canvas);color:var(--ink)}
.signup input:focus{outline:2px solid var(--ink);outline-offset:1px}
.signup button{border:0;cursor:pointer;font:600 16px/1 inherit;background:var(--action);color:#fff;
  padding:15px 26px;border-radius:var(--r-btn);transition:transform .25s var(--ease)}
.signup button:hover{transform:translateY(-2px)}
.signup-msg{margin-top:16px;font-size:15px;color:var(--ink2);min-height:1.4em}

/* hint + hotspot sitting on the real Breakdown button in the screenshot */
.hotspot{position:absolute;top:66.2%;left:69%;width:27%;height:3.4%;padding:0;border:0;
  background:transparent;cursor:pointer;z-index:5}
.hotspot::after{content:"";position:absolute;inset:-7px;border:2px solid var(--blue);
  border-radius:99px;animation:pulse 2.2s var(--ease) infinite}
@keyframes pulse{0%{opacity:.95;transform:scale(.96)}70%{opacity:0;transform:scale(1.28)}100%{opacity:0}}
.hint{position:absolute;left:108%;top:50%;transform:translateY(-50%);white-space:nowrap;
  background:var(--ink);color:#fff;font:600 11px/1 inherit;padding:6px 10px;border-radius:99px}
.hint::after{content:"";position:absolute;right:100%;top:50%;transform:translateY(-50%);
  border:5px solid transparent;border-right-color:var(--ink)}
.hotspot.open::after{animation:none;border-color:transparent}

/* full-width feature ticker */
.ticker{overflow:hidden;border-block:1px solid var(--rule);padding:20px 0;margin-top:58px;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
          mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.ticker-track{display:flex;gap:40px;width:max-content;animation:roll 60s linear infinite}
.ticker:hover .ticker-track{animation-play-state:paused}
.ticker-item{display:inline-flex;align-items:center;gap:11px;color:var(--ink2);
  font-size:15px;font-weight:500;white-space:nowrap;letter-spacing:-.01em}
.ticker-item svg{width:20px;height:20px;flex:none;stroke:currentColor;fill:none;
  stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;color:var(--ink)}
@keyframes roll{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){
  .ticker-track{animation:none}
  .ticker{overflow-x:auto;-webkit-mask-image:none;mask-image:none}
}

/* ══════════════ v4 — the accent ══════════════
   One blue, used by rule, never as wallpaper:
     1. every uppercase micro-label (eyebrow, step number, footer heading)
     2. whatever is currently live — deck progress, current nav page, the hotspot
     3. focus and selection
   Buttons stay black: the primary action colour does not move.        */

/* 0 — the wordmark. Needs .brand:link to outrank the UA a:link rule.
      The nav mark is a separate blue SVG, because an <img> can't take currentColor. */
.brand,.brand:link,.brand:visited{color:var(--accent)}

/* 1 — uppercase micro-labels */
.eyebrow{color:var(--accent)}
.num{color:var(--accent)}
.fcol h4{color:var(--accent-soft)}

/* 2 — live state */
.bars i.on{background:var(--accent)}
.ticker-item svg{color:var(--accent)}
.hotspot::after{border-color:var(--accent)}
.nav .nav-links a[aria-current]{color:var(--ink);position:relative}
.nav .nav-links a[aria-current]::after{content:"";position:absolute;left:0;right:0;bottom:-7px;
  height:2px;border-radius:2px;background:var(--accent)}

/* 3 — focus and selection */
::selection{background:var(--accent);color:#fff}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
.signup input:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
.ctrl:hover{border-color:var(--accent);color:var(--accent);background:var(--canvas)}
.ctrl[disabled]:hover{border-color:var(--rule);color:var(--ink);background:var(--canvas)}
.back:hover{color:var(--accent)}
.fsocial a:hover{color:var(--accent-soft)}

/* ── TRIAL, 2026-09-11: the reunion story card in brand blue instead of ink.
      Delete this block to put it back to black — nothing else depends on it.
      .muted has to be lifted from .6 to .8 or it drops under 4.5:1 on blue. */
.story{background:var(--accent)}
.story .muted{color:rgba(255,255,255,.8)}

/* ══════════════ v5 — hero: pinned scroll-scrub ══════════════
   photos cluster → spread, the headline fades in over them, then they exit as the
   three app screens float in. Base rules below are the static fallback: no JS, or JS
   deliberately not enhancing (prefers-reduced-motion) both just render this — headline
   and mockups visible, stacked, no photos, no pin. script.js only adds "is-pinned" when
   motion is allowed, which is what switches on the sticky pin + scroll-driven transforms. */
.hero--scroll{display:block;padding:0}
.hero-pin-outer{position:relative;height:auto}
.hero-pin{position:static;height:auto;display:block;padding:56px 0 8px;overflow:visible}
.hero-photos{display:none}
.hero-copy{position:static;opacity:1;transform:none;text-align:center;max-width:640px;margin-inline:auto}
.hero-copy .lead{margin-inline:auto}
.hero-mockups{position:static;opacity:1;margin-top:56px}
.hero-mockups .dev{opacity:1;transform:none}

/* JS-enhanced: pinned, scroll-scrubbed sequence */
.hero--scroll.is-pinned .hero-pin-outer{height:300vh}
.hero--scroll.is-pinned .hero-pin{position:sticky;top:0;height:100vh;display:grid;padding:0;overflow:hidden}
.hero--scroll.is-pinned .hero-photos{display:block;position:relative;grid-area:1/1;width:100%;height:100%}
.hero--scroll.is-pinned .hero-copy{grid-area:1/1;position:relative;place-self:center;opacity:0;
  text-align:center;max-width:640px;padding-inline:var(--pad)}
/* Photos and headline share the same grid cell and pass behind each other mid-scroll —
   a soft white glow keeps dark text legible over a busy photo, invisible over plain
   canvas where it isn't needed. Cheaper and cleaner than a full scrim on a photo-forward
   hero this size. */
.hero--scroll.is-pinned .hero-copy h1,
.hero--scroll.is-pinned .hero-copy .lead{
  text-shadow:0 2px 4px rgba(255,255,255,.9),0 0 28px rgba(255,255,255,.75)}
.hero--scroll.is-pinned .hero-mockups{grid-area:1/1;position:relative;place-self:center;margin-top:0;
  width:100%;max-width:1000px;padding-inline:var(--pad)}
.hero--scroll.is-pinned .hero-mockups .dev{opacity:0;will-change:transform,opacity}

.hero-photo{position:absolute;left:50%;top:50%;width:var(--w,160px);height:auto;opacity:0;
  border-radius:14px;box-shadow:0 20px 44px -18px rgba(0,0,0,.38);will-change:transform,opacity}

@media(max-width:820px){
  .hero--scroll.is-pinned .hero-mockups.trio{grid-template-columns:repeat(3,1fr);gap:10px}
}
@media(max-width:600px){
  .hero-photo{width:calc(var(--w,160px) * .62)}
}
