/* One quiet camera movement per photo; content is always visible without JS. */
.motion-ready .reveal,
.motion-ready .reveal.is-visible {
  opacity: 1;
  transform: none;
  transition: none;
}

@media (prefers-reduced-motion: no-preference) {
  .motion-ready .hero-food > img.photo-motion-once {
    transform-origin: 52% 70%;
    animation: gumdong-hero-approach 3.8s cubic-bezier(.2, .55, .3, 1) both;
  }

  .motion-ready .story-visual > img.photo-motion-once {
    transform-origin: 78% 55%;
    animation: gumdong-story-approach 3.8s cubic-bezier(.2, .55, .3, 1) both;
  }

  .motion-ready .motion-text-group.is-visible > :not(img) {
    animation: gumdong-text-arrive .7s ease-out both;
  }

  .motion-ready .motion-text-group.is-visible > :nth-child(2) { animation-delay: .07s; }
  .motion-ready .motion-text-group.is-visible > :nth-child(3) { animation-delay: .14s; }
  .motion-ready .motion-text-group.is-visible > :nth-child(4) { animation-delay: .21s; }
  .motion-ready .motion-text-group.is-visible > :nth-child(n + 5) { animation-delay: .28s; }
}

@keyframes gumdong-hero-approach {
  from { transform: scale(.975); }
  to { transform: scale(1); }
}

@keyframes gumdong-story-approach {
  from { transform: scale(1); }
  to { transform: scale(1.035); }
}

@keyframes gumdong-text-arrive {
  from { opacity: .62; }
  to { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
  .motion-ready .reveal,
  .motion-ready .motion-text-group,
  .motion-ready .motion-text-group > *,
  .hero-food > img,
  .story-visual > img {
    animation: none !important;
    opacity: 1;
    transform: none;
  }
}
