/* =============================================================
   DICAMAROTE — animations.css
   Keyframes + scroll-reveal utilities. Kept intentionally subtle:
   fade/slide, gentle scale, glow pulses, infinite marquee.
   ============================================================= */

/* -------------------------------------------------------------
   KEYFRAMES
   ----------------------------------------------------------- */
@keyframes marqueeScroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

@keyframes scrollLine {
  0%   { top: -100%; }
  60%  { top: 100%; }
  100% { top: 100%; }
}

@keyframes floatSlow {
  0%, 100% { transform: translateY(0) rotate(var(--rot, 0deg)); }
  50%      { transform: translateY(-14px) rotate(var(--rot, 0deg)); }
}

@keyframes pulseGlow {
  0%, 100% { opacity: 0.45; }
  50%      { opacity: 0.75; }
}

@keyframes countUpFade {
  from { opacity: 0; transform: translateY(6px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* -------------------------------------------------------------
   SCROLL-REVEAL SYSTEM
   Elements start hidden via [data-animate]; scroll.js adds
   .is-visible via IntersectionObserver.
   ----------------------------------------------------------- */
[data-animate] {
  opacity: 0;
  transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out);
  transition-delay: calc(var(--reveal-delay, 0) * 90ms);
}

[data-animate="fade-up"]   { transform: translateY(28px); }
[data-animate="fade-in"]   { transform: translateY(0); }
[data-animate="scale-in"]  { transform: scale(0.92); }
[data-animate="fade-left"] { transform: translateX(-28px); }
[data-animate="fade-right"]{ transform: translateX(28px); }

[data-animate].is-visible {
  opacity: 1;
  transform: translate(0, 0) scale(1);
}

/* delay helper — mirrors data-delay attribute for readability */
[data-delay="1"] { --reveal-delay: 1; }
[data-delay="2"] { --reveal-delay: 2; }
[data-delay="3"] { --reveal-delay: 3; }
[data-delay="4"] { --reveal-delay: 4; }
[data-delay="5"] { --reveal-delay: 5; }

@media (prefers-reduced-motion: reduce) {
  [data-animate] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* -------------------------------------------------------------
   GLOWS / FLOATERS
   ----------------------------------------------------------- */
.hero__glow--orange { animation: pulseGlow 6s var(--ease-soft) infinite; }
.hero__glow--blue { animation: pulseGlow 7s var(--ease-soft) infinite 1.2s; }

.hero__pattern-corner {
  animation: floatSlow 7s var(--ease-soft) infinite;
  --rot: -8deg;
}

.lineup__blind-lines {
  animation: floatSlow 8s var(--ease-soft) infinite;
  --rot: 10deg;
}

/* -------------------------------------------------------------
   TILT CARDS (JS sets --rx/--ry on mousemove; CSS applies it)
   ----------------------------------------------------------- */
.tilt-card__inner {
  transform: rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)) translateZ(0);
}

/* -------------------------------------------------------------
   NUMBER COUNTER
   ----------------------------------------------------------- */
[data-counter] { display: inline-block; }
.number-tile.is-visible [data-counter] {
  animation: countUpFade var(--dur-med) var(--ease-out);
}

/* -------------------------------------------------------------
   LOGO / ICON GENTLE FLOAT (final CTA + lineup reveal icon)
   ----------------------------------------------------------- */
.final-cta__icon,
.lineup__reveal-icon img {
  animation: floatSlow 5.5s var(--ease-soft) infinite;
  --rot: 0deg;
}
