/* ============================================
   ANIMATIONS — scroll reveal via [data-anim]
   Triggered by IntersectionObserver (animations.js)
   threshold 0.15, unobserve after first reveal
   ============================================ */

[data-anim] {
  opacity: 0;
  transition:
    opacity 0.9s ease,
    transform 0.9s ease;
  will-change: opacity, transform;
}

[data-anim="fade-up"] {
  transform: translateY(40px);
}

[data-anim="fade-down"] {
  transform: translateY(-40px);
}

[data-anim="slide-left"] {
  transform: translateX(60px);
}

[data-anim="slide-right"] {
  transform: translateX(-60px);
}

[data-anim="zoom-in"] {
  transform: scale(0.88);
}

[data-anim="fade-in"] {
  transform: none;
}

[data-anim].visible {
  opacity: 1;
  transform: none;
}

/* ===== Delay scale (1 → 8 = 0.1s → 0.8s) ===== */
[data-delay="1"] {
  transition-delay: 0.1s;
}
[data-delay="2"] {
  transition-delay: 0.2s;
}
[data-delay="3"] {
  transition-delay: 0.3s;
}
[data-delay="4"] {
  transition-delay: 0.4s;
}
[data-delay="5"] {
  transition-delay: 0.5s;
}
[data-delay="6"] {
  transition-delay: 0.6s;
}
[data-delay="7"] {
  transition-delay: 0.7s;
}
[data-delay="8"] {
  transition-delay: 0.8s;
}

/* ============================================
   Mobile — disable animations (iGaming = 95% mobile)
   Keeps IntersectionObserver JS working, but elements
   appear immediately in final state.
   ============================================ */
@media (max-width: 1024px) {
  [data-anim],
  [data-anim].visible {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  [data-delay="1"],
  [data-delay="2"],
  [data-delay="3"],
  [data-delay="4"],
  [data-delay="5"],
  [data-delay="6"],
  [data-delay="7"],
  [data-delay="8"] {
    transition-delay: 0s !important;
  }
}
