/* Shared navigation motion, coordinated with the page readiness gate. */
html { opacity: 1 !important; scroll-behavior: smooth; }
html.lenis, html.lenis body { height: auto; }
html.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }
.lenis-smooth.lenis-scrolling iframe { pointer-events: none; }
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: av-page-out 180ms ease-out both; }
::view-transition-new(root) { animation: av-page-in 180ms ease-out both; }
/* Keep the old snapshot at full opacity until the new page is ready.
   The incoming view is live, so it includes the loaded plans and room data. */
html.av-page-pending::view-transition-group(root),
html.av-page-pending::view-transition-old(root),
html.av-page-pending::view-transition-new(root) { animation-play-state: paused !important; }
@keyframes av-page-out { to { opacity: 0; } }
@keyframes av-page-in { from { opacity: 0; } }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  @view-transition { navigation: none; }
  ::view-transition-old(root), ::view-transition-new(root) { animation: none !important; }
}
