/* Keyframes & motion utilities — GPU-friendly only */

@keyframes product-gloss-sweep {
  0% {
    transform: translate3d(-70%, 0, 0) rotate(12deg);
  }
  100% {
    transform: translate3d(120%, 0, 0) rotate(12deg);
  }
}

@keyframes product-skeleton-shimmer {
  0% {
    background-position: 100% 0;
  }
  100% {
    background-position: -100% 0;
  }
}

@keyframes product-fab-pulse {
  0% {
    box-shadow: 0 0 0 0 rgba(212, 175, 55, 0.45);
  }
  70% {
    box-shadow: 0 0 0 14px rgba(212, 175, 55, 0);
  }
  100% {
    box-shadow: var(--shadow-glow), var(--shadow-soft);
  }
}

@keyframes highlight-sweep {
  0% {
    transform: translateX(-100%);
    opacity: 0;
  }
  35% {
    opacity: 0.25;
  }
  100% {
    transform: translateX(100%);
    opacity: 0;
  }
}

.product-card.is-pressed .product-image__gloss::before {
  animation: product-gloss-sweep var(--dur-slow) var(--ease-master);
}

@keyframes scroll-indicator-line {
  from {
    transform: scaleY(0.85) translateZ(0);
    opacity: 0.5;
  }
  to {
    transform: scaleY(1) translateZ(0);
    opacity: 1;
  }
}

@keyframes scroll-indicator-chev {
  0%,
  100% {
    transform: rotate(45deg) translateY(-2px);
    opacity: 0.45;
  }
  50% {
    transform: rotate(45deg) translateY(2px);
    opacity: 1;
  }
}

/* Transition utility classes */
.u-transition {
  transition-timing-function: var(--ease-master);
}

.u-dur-fast {
  transition-duration: var(--dur-fast);
}

.u-dur-base {
  transition-duration: var(--dur-base);
}

.u-dur-slow {
  transition-duration: var(--dur-slow);
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
