/* РОВНО · пролёт камеры (src/flight.js). Титры скрываются только при JS (класс .js ставит строка в <head>):
   без JS весь текст сцены виден (spec §2.10); титры первой стоянки приходят в HTML с классом .on. */
.flight{position:relative}
.fl-stage{position:sticky;top:0;height:100svh;overflow:hidden;background:#060607;margin:0}
.fl-media,.fl-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.fl-poster{transform:scale(var(--z,1));transform-origin:50% 50%}
.fl-live .fl-poster{transition:opacity 200ms cubic-bezier(.23,1,.32,1)}
.fl-live:not(.fl-key) .fl-poster{opacity:0}
video.fl-media{opacity:0}
video.fl-media.on{opacity:1}
.fl-shade{position:absolute;inset:auto 0 0;height:45%;background:linear-gradient(to top,rgba(6,6,7,.62),rgba(6,6,7,0));pointer-events:none}
.js .flight [data-at]{opacity:0;transform:translateY(12px);transition:opacity 300ms cubic-bezier(.23,1,.32,1),transform 300ms cubic-bezier(.23,1,.32,1);pointer-events:none}
.js .flight [data-at].on{opacity:1;transform:none;pointer-events:auto}
.fl-static{height:auto!important}
.fl-static .fl-stage{position:relative}
.fl-static .fl-poster{opacity:1;transform:none}
.fl-static [data-at]:not(.fl-final){display:none}
@media (prefers-reduced-motion:reduce){.js .flight [data-at]{transition:opacity 200ms linear;transform:none}}
/* телефон: «Этапы ремонта» без пролёта — все четыре этапа списком под кадром (Николай 28.10) */
@media (max-width:1023px){.fl-static.e5 .fl-stage{height:auto;min-height:100svh}.fl-static.e5 .e5-step{display:block;grid-area:auto;opacity:1;transform:none}.fl-static.e5 .e5-step+.e5-step{margin-top:16px}.fl-static.e5 .e5-n{display:none}}
