/* Small depth shifts are clipped by each illustration's existing frame. */
.parallax-scene {
  overflow: hidden;
  overflow: clip;
}
.parallax-layer {
  transform-box: view-box;
}
/* The illustration bleeds under its clipped frame even at maximum pointer offset. */
@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
  .hero-art[data-parallax-ready],
  .login-city[data-parallax-ready],
  .home-hero .boulevard-art[data-parallax-ready],
  .scene-visual > svg[data-parallax-ready] {
    transform: scale(1.12);
    transform-origin: center;
  }
  /* Minimal bleed keeps the full landscape and road visible. */
  .standalone-login .autumn-wilderness[data-parallax-ready] { transform: scale(1.025); transform-origin:center bottom; }
  .hero:not(.home-hero) .hero-art[data-parallax-ready] { transform:scale(1.035); transform-origin:center bottom; }
  /* Keep the children's feet inside the courtyard frame when adding bleed. */
  .home-hero .boulevard-art[data-parallax-ready] { transform-origin: center bottom; }
}
[data-theme="dark"] .scene-rich > .parallax-layer.parallax-stars {
  filter: none;
}
/* The JS clears offsets too; this also handles preference changes before its next frame. */
@media (prefers-reduced-motion: reduce), (hover: none), (pointer: coarse) {
  .parallax-layer {
    transform: none !important;
  }
}
