/* Global motion rules. Purposeful only -- reveals, state transitions.
   Never motion for the sake of "looking advanced." */

@keyframes fade-up {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes soft-pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.72; }
}

.motion-reveal {
  animation: fade-up var(--duration-slow) var(--ease-settle) both;
}

.motion-reveal[data-delay='1'] { animation-delay: 60ms; }
.motion-reveal[data-delay='2'] { animation-delay: 120ms; }
.motion-reveal[data-delay='3'] { animation-delay: 180ms; }
.motion-reveal[data-delay='4'] { animation-delay: 240ms; }

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