/* =============================================================
   CATLST — animations_new.css
   Easing: exponential only (cubic-bezier(0.16, 1, 0.3, 1))
   No bounce, no spring, no elastic.
   ============================================================= */

/* ── 1. SCROLL REVEAL ─────────────────────────────────────── */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity   0.7s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger delays for grid / list children */
.reveal:nth-child(2) { transition-delay: 0.07s; }
.reveal:nth-child(3) { transition-delay: 0.14s; }
.reveal:nth-child(4) { transition-delay: 0.21s; }
.reveal:nth-child(5) { transition-delay: 0.28s; }

/* ── 2. HERO TEXT ENTRANCE ────────────────────────────────── */
.hero__tag {
  animation: fade-up 0.7s cubic-bezier(0.16, 1, 0.3, 1) 0.05s both;
}
.hero__title-line:first-child {
  animation: fade-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.12s both;
}
.hero__title-line--accent {
  animation: fade-up 0.8s cubic-bezier(0.16, 1, 0.3, 1) 0.22s both;
}
.hero__subtitle {
  animation: fade-up 0.7s cubic-bezier(0.16, 1, 0.3, 1) 0.32s both;
}
.hero__sub {
  animation: fade-up 0.7s cubic-bezier(0.16, 1, 0.3, 1) 0.38s both;
}
.hero__actions {
  animation: fade-up 0.7s cubic-bezier(0.16, 1, 0.3, 1) 0.44s both;
}
.hero__visual {
  animation: fade-in 1s cubic-bezier(0.16, 1, 0.3, 1) 0.3s both;
}

/* ── 3. KEYFRAMES ─────────────────────────────────────────── */
@keyframes fade-up {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* ── 4. MODAL ENTRANCE ────────────────────────────────────── */
.modal:not([hidden]) .modal__card {
  animation: modal-in 0.35s cubic-bezier(0.16, 1, 0.3, 1) both;
}
@keyframes modal-in {
  from { opacity: 0; transform: translateY(20px) scale(0.97); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* ── 5. SECTION LABEL DOT PULSE ───────────────────────────── */
@keyframes pulse-dot {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.5; transform: scale(0.8); }
}

/* ── 6. IMPACT MAP DOTS PULSE ─────────────────────────────── */
@keyframes map-pulse {
  0%, 100% { opacity: 0.7; transform: scale(1); }
  50%       { opacity: 0.3; transform: scale(0.7); }
}

/* ── 7. SPINNER ───────────────────────────────────────────── */
@keyframes spin {
  to { transform: rotate(360deg); }
}

/* ── 8. NAV HIDE ON SCROLL ────────────────────────────────── */
.nav--hidden { transform: translateY(-100%); }
