/* ============================================================
   ANIMATIONS & REVEAL
   ============================================================ */

[data-reveal] {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 500ms cubic-bezier(0.16,1,0.3,1),
              transform 500ms cubic-bezier(0.16,1,0.3,1);
}

[data-reveal].is-visible {
  opacity: 1;
  transform: translateY(0);
}

[data-reveal][data-delay='1'] { transition-delay: 80ms; }
[data-reveal][data-delay='2'] { transition-delay: 160ms; }
[data-reveal][data-delay='3'] { transition-delay: 240ms; }
[data-reveal][data-delay='4'] { transition-delay: 320ms; }

/* ── Page hero text pulse ─────────────────────────────────── */
@keyframes heroFadeUp {
  from { opacity: 0; transform: translateY(32px); }
  to   { opacity: 1; transform: translateY(0); }
}

.hero-animate {
  animation: heroFadeUp 700ms cubic-bezier(0.16,1,0.3,1) forwards;
}
.hero-animate--2 { animation-delay: 120ms; opacity: 0; }
.hero-animate--3 { animation-delay: 240ms; opacity: 0; }
.hero-animate--4 { animation-delay: 360ms; opacity: 0; }

/* ── Red accent bar slide ─────────────────────────────────── */
@keyframes barSlide {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

.bar-animate {
  transform-origin: left;
  animation: barSlide 500ms cubic-bezier(0.16,1,0.3,1) 400ms backwards;
}

/* ── Ticker scroll ────────────────────────────────────────── */
@keyframes tickerScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

.ticker-track {
  display: flex;
  width: max-content;
  animation: tickerScroll 28s linear infinite;
}

.ticker-track:hover { animation-play-state: paused; }
