/* ------------------------------------------------------------------------
   motion.css — scroll reveals, hover micro-interactions, hero zoom
   Per PRD §4 motion: restraint is the brand.
   ------------------------------------------------------------------------ */

/* Scroll reveal: fade-up 16px over 600ms (once) */
.reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity var(--d-reveal) var(--ease-out),
              transform var(--d-reveal) var(--ease-out);
  will-change: opacity, transform;
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.reveal-delay-1 { transition-delay: 80ms; }
.reveal-delay-2 { transition-delay: 160ms; }
.reveal-delay-3 { transition-delay: 240ms; }
.reveal-delay-4 { transition-delay: 320ms; }

/* Hero ambient zoom (home only). 1.0 → 1.02 over 6s, ease-in-out infinite. */
.hero--ambient .hero__media img {
  animation: ambient-zoom 12s ease-in-out infinite alternate;
  transform-origin: center center;
}

@keyframes ambient-zoom {
  0%   { transform: scale(1.0); }
  100% { transform: scale(1.04); }
}

/* Lock all motion when user prefers reduced motion */
@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;
  }
  .reveal { opacity: 1; transform: none; }
  .hero--ambient .hero__media img { animation: none; transform: none; }
}
