/* Decoded footage replaces the whole environment, never individual cutouts. */
.scene-video, .scene-poster { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: cover; visibility: hidden; pointer-events: none; }
.scene-video-ready > .scene-video, .scene-poster-ready > .scene-poster { visibility: visible; }
.scene-video-ready > canvas, .scene-poster-ready > canvas,
.reference-backdrop.scene-video-ready > .metro-bridge, .reference-backdrop.scene-poster-ready > .metro-bridge { visibility: hidden; }
.reference-backdrop.scene-video-ready .metro-bridge-cars, .reference-backdrop.scene-poster-ready .metro-bridge-cars { animation-play-state: paused; }
@media (prefers-reduced-motion: reduce) { .scene-video { visibility: hidden !important; } }

/* Entry footage owns the train, camera impact and transition. Keep the live
   caption and Skip above it; suppress the old moving cutouts even while loading. */
#subwayChase.is-cinematic > canvas,
#subwayChase.is-cinematic > .actor,
#subwayChase.is-cinematic > .chase-flash { display: none; }
#subwayChase.is-cinematic.is-impact { animation: none; }
#subwayChase.is-cinematic.is-revealing { opacity: 1; }
#subwayChase.is-cinematic .chase-caption { top: max(6%, env(safe-area-inset-top)); }
