/* ==========================================================================
   RPESH 2026 — Motion
   Restrained, professional animation only. Everything here degrades safely
   and is switched off for users who prefer reduced motion.
   ========================================================================== */

/* ---------- Scroll reveal (added by main.js) ------------------------------ */
.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity .6s cubic-bezier(.22, .61, .36, 1),
              transform .6s cubic-bezier(.22, .61, .36, 1);
  will-change: opacity, transform;
}
.reveal.is-visible { opacity: 1; transform: none; }

/* Small stagger for items inside a grid */
.reveal-group > * { transition-delay: 0ms; }
.reveal-group.is-visible > *:nth-child(2) { transition-delay: 70ms; }
.reveal-group.is-visible > *:nth-child(3) { transition-delay: 140ms; }
.reveal-group.is-visible > *:nth-child(4) { transition-delay: 210ms; }

/* ---------- Hero entrance ------------------------------------------------- */
@keyframes rise-in {
  from { opacity: 0; transform: translateY(22px); }
  to   { opacity: 1; transform: none; }
}
.hero__inner > * { animation: rise-in .7s cubic-bezier(.22, .61, .36, 1) backwards; }
.hero__inner > *:nth-child(1) { animation-delay: .05s; }
.hero__inner > *:nth-child(2) { animation-delay: .12s; }
.hero__inner > *:nth-child(3) { animation-delay: .19s; }
.hero__inner > *:nth-child(4) { animation-delay: .26s; }
.hero__inner > *:nth-child(5) { animation-delay: .33s; }
.hero__inner > *:nth-child(6) { animation-delay: .40s; }
.hero__inner > *:nth-child(7) { animation-delay: .47s; }

/* ---------- Ambient wave drift -------------------------------------------- */
@keyframes wave-drift {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}
.wave-band { animation: wave-drift 26s linear infinite; }

/* ---------- Countdown digit tick ------------------------------------------ */
@keyframes tick {
  0%   { transform: translateY(0); opacity: 1; }
  40%  { transform: translateY(-4px); opacity: .55; }
  100% { transform: translateY(0); opacity: 1; }
}
.cd-unit__value.is-ticking { animation: tick .38s ease; }

/* ---------- Reduced motion ------------------------------------------------ */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
  .reveal { opacity: 1; transform: none; }
  html { scroll-behavior: auto; }
}
