/* Audiorage — motion support. Pairs with assets/js/motion.js. */

/* Two soft dips; the arrival strike and the ambient cycle use the same shape
   so the first flicker matches the repeats. */
@keyframes ar-strike {
  0%, 50%, 100% { opacity: 1; }
  25% { opacity: 0.55; }
  62.5% { opacity: 0.7; }
}

@keyframes ar-flicker {
  0%, 92%, 96%, 100% { opacity: 1; }
  94% { opacity: 0.55; }
  97% { opacity: 0.7; }
}

/* Short linear transition only smooths the gaps between wheel ticks; a long
   ease would fight the scroll position instead of following it. */
.motion-on [data-rv] {
  transition: opacity 0.14s linear, transform 0.14s linear;
  will-change: opacity, transform;
}

/* Parallax needs no extra headroom: site.css keeps the hero photo full-width,
   top-anchored and at least as tall as the hero (or faded when it can't be),
   and motion.js only ever moves it down, which uncovers nothing because
   the hero's top scrolls away faster than the photo travels. */
@media (min-width: 641px) {
  .motion-on [data-px] {
    will-change: transform;
  }
}

@media (prefers-reduced-motion: reduce) {
  [data-flicker] { animation: none !important; }
}
