/* ==========================================================================
   Sport World Cars – Animation Layer
   ========================================================================== */

/* Keyframes */
@keyframes logoBreath {
  0%, 100% { transform: scale(1); filter: drop-shadow(0 0 30px rgba(200, 16, 46, 0.35)); }
  50%      { transform: scale(1.04); filter: drop-shadow(0 0 50px rgba(200, 16, 46, 0.6)); }
}
@keyframes loadBar {
  0%   { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}
@keyframes scrollDown {
  0%   { transform: scaleY(0); transform-origin: top; }
  50%  { transform: scaleY(1); transform-origin: top; }
  51%  { transform: scaleY(1); transform-origin: bottom; }
  100% { transform: scaleY(0); transform-origin: bottom; }
}
@keyframes kenBurns {
  0%   { transform: scale(1.0) translate(0, 0); }
  100% { transform: scale(1.12) translate(-2%, -1%); }
}
@keyframes fadeInUp {
  0%   { opacity: 0; transform: translateY(24px); }
  100% { opacity: 1; transform: translateY(0); }
}
@keyframes curtainReveal {
  0%   { transform: translateY(0); }
  100% { transform: translateY(-101%); }
}

/* Reveal classes — base state */
.reveal-up {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 900ms var(--ease), transform 900ms var(--ease);
  will-change: opacity, transform;
}
.reveal-up.is-visible { opacity: 1; transform: translateY(0); }

.reveal-word {
  display: inline-block;
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 900ms var(--ease), transform 900ms var(--ease);
}
.reveal-word.is-visible { opacity: 1; transform: translateY(0); }

.reveal-image {
  position: relative;
  overflow: hidden;
}
.reveal-image::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, var(--accent), var(--accent-2));
  transform: translateY(0);
  transition: transform 1200ms var(--ease);
  z-index: 2;
}
.reveal-image.is-visible::after { transform: translateY(-101%); }
.reveal-image img { transform: scale(1.1); transition: transform 1500ms var(--ease); }
.reveal-image.is-visible img { transform: scale(1); }

/* Hero entrance — staged once preloader removes .no-scroll */
body:not(.no-scroll) .hero .reveal-up { animation: fadeInUp 1100ms var(--ease) both; }
body:not(.no-scroll) .hero .reveal-up { animation-delay: 0.3s; }
body:not(.no-scroll) .hero .hero__title .reveal-word:nth-child(1) { animation: fadeInUp 1200ms var(--ease) both; animation-delay: 0.5s; }
body:not(.no-scroll) .hero .hero__title .reveal-word:nth-child(2) { animation: fadeInUp 1200ms var(--ease) both; animation-delay: 0.75s; }
body:not(.no-scroll) .hero .hero__tagline { animation-delay: 1.0s; }
body:not(.no-scroll) .hero .hero__cta { animation-delay: 1.2s; }
body:not(.no-scroll) .hero .hero__meta { animation-delay: 1.4s; }
body:not(.no-scroll) .hero .reveal-up.is-visible,
body:not(.no-scroll) .hero .reveal-word.is-visible { opacity: 1; transform: none; }
