/* V1 subtitle priority, tunnel-ray refinement and PA scroll runway. */

/* Announcements always sit above the hanging globe and every station layer. */
.announcement-subtitle{z-index:100}

/* The tunnel source remains off-screen: only separated rays and light smoke emerge. */
.departure-light-show{left:-68px;top:88px;width:275px;height:112px}
.departure-light-show i{left:0;top:50px;width:270px;height:16px;background:linear-gradient(90deg,#69dce9cc 0,#7b92ff9c 38%,#87e8f355 68%,transparent 100%);filter:blur(1.5px)}
.departure-light-show i:nth-child(1){transform:rotate(-16deg)}
.departure-light-show i:nth-child(2){transform:rotate(0deg)}
.departure-light-show i:nth-child(3){transform:rotate(16deg)}
.departure-light-show:before,.departure-light-show:after{content:"";position:absolute;left:48px;top:37px;width:92px;height:46px;border-radius:50%;background:radial-gradient(ellipse at 25% 55%,#b8d2d6a8 0 12%,#8caeb477 25%,transparent 68%),radial-gradient(ellipse at 62% 42%,#d4e4e58f 0 10%,#789ca45c 28%,transparent 65%);filter:blur(7px);opacity:0;transform:translateX(-18px) scale(.65)}
.departure-light-show:after{left:72px;top:49px;width:74px;height:36px;animation-delay:.35s}
.departure-light-show.active:before,.departure-light-show.active:after{animation:tunnelSmoke 2.7s ease-out both}
.departure-light-show.active:after{animation-delay:.35s}
@keyframes tunnelSmoke{0%{opacity:0;transform:translateX(-18px) scale(.62)}25%{opacity:.42}70%{opacity:.24}100%{opacity:0;transform:translateX(58px) translateY(-7px) scale(1.35)}}

/* Extra blank runway lets the PA panel scroll comfortably above the viewport edge. */
.controls-scroll-spacer{height:380px;min-height:380px}

@media(max-width:650px){.departure-light-show{left:-58px;width:220px}.departure-light-show i{width:220px}.controls-scroll-spacer{height:300px;min-height:300px}}
