/* Camera motion wraps the existing slide alignment instead of replacing it. */
@keyframes hero-camera-drift {
  0%, 100% { transform: perspective(1100px) translate3d(-5px, 2px, 0) rotateY(-3deg) rotateX(1deg) scale(.985); }
  50% { transform: perspective(1100px) translate3d(5px, -3px, 0) rotateY(3deg) rotateX(-1deg) scale(1.025); }
}
@media (prefers-reduced-motion: no-preference) {
  /* At its widest the drift pushes the right-anchored illustration up to 10px past the viewport, which
     opened a sideways scroll at 768px and up. Clip only the x axis: hidden would also clip y and cut the
     slides that are shifted upward. What gets cut was off-screen anyway (at the drift peak no pixel moves by more than 1/255). */
  .kurotaki-bg.hero-camera-ready { overflow-x: clip; }
  .hero-camera-ready .kurotaki-stage {
    transform-origin: 60% 35%;
    animation: hero-camera-drift 18s ease-in-out infinite;
    animation-play-state: paused;
  }
  .hero-camera-running .kurotaki-stage { animation-play-state: running; }
  .hero-camera-ready.is-lit .kurotaki-stage { animation-play-state: paused; }
}
@media (max-width: 640px) {
  .hero-camera-ready .kurotaki-stage { animation-duration: 24s; }
}
