/**
 * The reduced-motion contract, enqueued last so it can always win.
 *
 * DESIGN.md's rule is "no movement, not no feedback": every transform and every
 * reveal is removed under `prefers-reduced-motion`, while opacity and colour keep
 * transitioning at 120ms so a state change is still legible.
 *
 * It lives in its own file because of how the cascade actually resolves here. The
 * rule was originally a `motion-reduce` layer inside core.css, which worked until the
 * commerce bundles had to be written unlayered (WooCommerce's own stylesheet carries
 * no layer, and an unlayered rule outranks every layered one). Each new unlayered
 * bundle then escaped the contract silently, and test/motion.test.ts caught the
 * product cards still moving on every listing page. An unlayered file loaded after
 * all of them cannot be escaped by anything we add later.
 *
 * @package ikape
 */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    transition-property: opacity, color, background-color, border-color, outline-color, fill, stroke, text-decoration-color;
    transition-duration: var(--ik-motion-fast);
    animation-duration: var(--ik-motion-none);
    animation-delay: var(--ik-motion-none);
    animation-iteration-count: 1;
    scroll-behavior: auto;
  }

  .ik-reveal {
    opacity: 1;
    transform: none;
  }

  /*
   * Two indeterminate loops stay switched off rather than sped up: they say "still
   * working", and a one-frame spinner says nothing at all.
   */
  .ik-btn__spinner {
    animation: none;
    opacity: 0.6;
  }

  .ik-skeleton::after {
    animation: none;
  }
}
