/* ============================================
   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.55s ease, transform 0.55s ease;
  will-change: opacity, transform;
}

/* directional drama removed — everything just settles with a small,
   quiet rise, so the page reads as set in print, not performed. */
[data-anim="fade-up"]     { transform: translateY(14px); }
[data-anim="fade-down"]   { transform: translateY(-14px); }
[data-anim="slide-left"]  { transform: translateY(14px); }
[data-anim="slide-right"] { transform: translateY(14px); }
[data-anim="zoom-in"]     { transform: none; }
[data-anim="fade-in"]     { transform: none; }

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

/* ===== Delays compressed — no staged cascade ===== */
[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: 0.05s;
}

/* ============================================
   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;
  }
}
