/* ============================================================
   4Tex Spare Parts Shop — animations.css
   Scroll reveals + calm hover motion. Fully gated by reduced-motion.
   ============================================================ */

[data-reveal] {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .7s var(--ease), transform .7s var(--ease);
  will-change: opacity, transform;
}
/* `will-change` is released again here: left in place it pins the element
   to its own GPU layer, where text is drawn with greyscale instead of
   subpixel antialiasing and reads as slightly blurred. */
[data-reveal].is-visible { opacity: 1; transform: none; will-change: auto; }

[data-reveal-group] > * {
  opacity: 0; transform: translateY(20px);
  transition: opacity .6s var(--ease), transform .6s var(--ease);
}
[data-reveal-group].is-visible > * { opacity: 1; transform: none; }
[data-reveal-group].is-visible > *:nth-child(1) { transition-delay: .00s; }
[data-reveal-group].is-visible > *:nth-child(2) { transition-delay: .05s; }
[data-reveal-group].is-visible > *:nth-child(3) { transition-delay: .10s; }
[data-reveal-group].is-visible > *:nth-child(4) { transition-delay: .15s; }
[data-reveal-group].is-visible > *:nth-child(5) { transition-delay: .20s; }
[data-reveal-group].is-visible > *:nth-child(6) { transition-delay: .25s; }
[data-reveal-group].is-visible > *:nth-child(7) { transition-delay: .30s; }
[data-reveal-group].is-visible > *:nth-child(8) { transition-delay: .35s; }

@media (prefers-reduced-motion: reduce) {
  [data-reveal], [data-reveal-group] > * { opacity: 1 !important; transform: none !important;
    transition: none !important; }
  .media--zoom img { transition: none !important; }
}
