/* Shared coach artwork and automatic bus motion. No-JS page artwork remains static. */
.brand-coach-svg { display: block; width: 100%; height: auto; overflow: visible; }
.brand-coach-svg--right text { transform-box: fill-box; transform-origin: center; transform: scaleX(-1); }
.brand-ride { --coach-size: 84px; position: relative; display: block; height: 50px; width: 100%; overflow: hidden; }
.brand-ride__lane { position: absolute; left: 0; right: 0; bottom: 3px; border-top: 1px dashed #8ca9b6; }
.brand-ride__vehicle { position: absolute; inset: 0; display: block; transform: translateX(calc((100% - var(--coach-size)) / 2)); }
.brand-ride__vehicle > svg { position: absolute; bottom: 3px; left: 0; width: var(--coach-size); }
.brand-ride.is-running .brand-ride__vehicle { animation: brand-ride-travel 4.5s cubic-bezier(.35, 0, .25, 1) both; }
.brand-ride.is-running .brand-coach__wheel { transform-box: fill-box; transform-origin: center; animation: brand-wheel-turn 4.5s ease both; }
.brand-ride[data-offscreen="true"] *, .brand-ride[data-motion-hidden="true"] *, .brand-boarding[data-motion-hidden="true"] *, .lost-route__visual[data-motion-hidden="true"] *, .lost-route__visual[data-offscreen="true"] * { animation-play-state: paused !important; }
.journey-line__track--coach { flex: 0 0 116px; width: 116px; height: 28px; border: 0; }
.journey-line__track--coach::before, .journey-line__track--coach::after { top: auto; bottom: 0; }
.brand-ride--home { --coach-size: 58px; --ride-cycle: 6.8s; height: 28px; }
.brand-ride:is(.brand-ride--home, .brand-ride--footer).is-running .brand-ride__vehicle { animation: brand-ride-loop var(--ride-cycle, 8s) ease-in-out infinite; }
.brand-ride:is(.brand-ride--home, .brand-ride--footer).is-running .brand-coach__wheel { animation: brand-wheel-loop var(--ride-cycle, 8s) ease-in-out infinite; }
.footer-journey { max-width: 780px; margin: 0 auto 36px; padding-bottom: 32px; border-bottom: 1px solid #294154; }
.footer-journey > p { margin: 0 0 4px; color: #e0ebef; font: 700 20px/1.5 Montserrat, sans-serif; text-align: center; }
.brand-ride--footer { --coach-size: 96px; --ride-cycle: 8s; height: 61px; }
.footer-journey__stops { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-top: 10px; color: #bccfd9; font: 500 15px/1.5 "Segoe UI", Arial, sans-serif; }
.footer-journey__stops > span { position: relative; text-align: center; }
.footer-journey__stops > span:first-child { text-align: left; }
.footer-journey__stops > span:last-child { text-align: right; }
.footer-journey__stops > span::before { content: ''; position: absolute; top: -16px; left: 50%; width: 7px; height: 7px; border: 2px solid #f8ce46; border-radius: 50%; background: #0e2539; }
.footer-journey__stops > span:first-child::before { left: 0; }
.footer-journey__stops > span:last-child::before { left: auto; right: 0; }
.brand-boarding { position: relative; margin: 15px -10px 18px; }
.brand-boarding__scene { overflow: hidden; border-radius: 9px; background: #143348; }
.brand-boarding .lost-route__drawing { display: block; width: 100%; height: auto; }
.journey-network .brand-boarding { margin: -6px -10px 19px; }
.news-hero-note .brand-boarding { margin: 17px -10px 20px; }
.journey-hero-contact > .brand-boarding { grid-column: 1 / -1; margin: 17px -10px 14px; }
.brand-received[hidden], .brand-loader[hidden] { display: none !important; }
.brand-boarding.is-running .lost-route__bus { animation: brand-board-drive 16s cubic-bezier(.4, 0, .2, 1) infinite; }
.brand-boarding.is-running .lost-route__wheel { transform-box: fill-box; transform-origin: center; animation: brand-board-wheels 16s linear infinite; }
.brand-boarding.is-running .lost-route__door { transform-box: fill-box; transform-origin: right; animation: brand-board-door 16s ease infinite; }
.brand-boarding.is-running .lost-route__passenger--first { animation: brand-board-first 16s ease-in-out infinite; }
.brand-boarding.is-running .lost-route__passenger--second { animation: brand-board-second 16s ease-in-out infinite; }
.brand-boarding.is-running .lost-route__passenger--third { animation: brand-board-third 16s ease-in-out infinite; }
.brand-boarding--schedule.is-running .brand-scene__clock { transform-box: fill-box; transform-origin: center; animation: brand-scene-pulse 3s ease-in-out infinite; }
.brand-boarding--news.is-running .brand-scene__notice { animation: brand-scene-float 3.4s ease-in-out infinite; }
.brand-boarding--contacts.is-running .brand-scene__signal { transform-box: fill-box; transform-origin: center; animation: brand-scene-signal 2.8s ease-in-out infinite; }
.brand-boarding.is-running :is(.lost-route__bus, .lost-route__wheel, .lost-route__door, .lost-route__passenger) { animation-delay: -3.7s; }
.brand-boarding[data-offscreen="true"] * { animation-play-state: paused !important; }
.brand-received { margin-top: 22px; padding: 20px; border: 1px solid #cbdccf; border-radius: 10px; color: #173c60; background: #f0f5ed; }
.brand-received h4 { margin: 10px 0 8px; font: 750 22px/1.35 Montserrat, sans-serif; }
.brand-received p { margin: 0; color: #354f63; font: 500 16px/1.65 "Segoe UI", Arial, sans-serif; }
.brand-ride--received { --coach-size: 104px; height: 56px; }
.brand-loader { display: grid; justify-items: center; gap: 10px; padding: 18px 20px; color: #173c60; background: #f4f7f4; font: 600 17px/1.6 "Segoe UI", Arial, sans-serif; text-align: center; }
.brand-ride--loading { --coach-size: 80px; --ride-cycle: 2.4s; width: min(240px, 100%); height: 40px; }
.brand-loader:not([hidden]) .brand-ride__vehicle { animation: brand-loading 2.4s ease-in-out infinite; }
.brand-loader:not([hidden]) .brand-coach__wheel { transform-box: fill-box; transform-origin: center; animation: brand-wheel-turn 2.4s linear infinite; }
@keyframes brand-ride-travel { from { transform: translateX(0); } to { transform: translateX(calc(100% - var(--coach-size))); } }
@keyframes brand-wheel-turn { from { transform: rotate(0); } to { transform: rotate(-1080deg); } }
@keyframes brand-ride-loop {
    0%, 8% { transform: translateX(0); opacity: 1; }
    64%, 80% { transform: translateX(calc(100% - var(--coach-size))); opacity: 1; }
    88% { transform: translateX(calc(100% - var(--coach-size))); opacity: 0; }
    88.01% { transform: translateX(0); opacity: 0; }
    96%, 100% { transform: translateX(0); opacity: 1; }
}
@keyframes brand-wheel-loop { 0%, 8% { transform: rotate(0); } 64%, 100% { transform: rotate(-1080deg); } }
@keyframes brand-loading { 0% { transform: translateX(0); opacity: 0; } 15% { opacity: 1; } 80% { opacity: 1; } 100% { transform: translateX(calc(100% - var(--coach-size))); opacity: 0; } }
@keyframes brand-board-drive { 0% { transform: translateX(480px); } 23%, 65% { transform: translateX(0); } 90%, 100% { transform: translateX(-1000px); } }
@keyframes brand-board-wheels { 0% { transform: rotate(600deg); } 23%, 65% { transform: rotate(0); } 90%, 100% { transform: rotate(-1200deg); } }
@keyframes brand-board-door { 0%, 24%, 63%, 100% { transform: scaleX(1); } 29%, 58% { transform: scaleX(.08); } }
@keyframes brand-board-first { 0%, 28% { transform: translate(0, 0); opacity: 1; } 39% { transform: translate(95px, -4px); opacity: 1; } 41%, 89% { transform: translate(98px, -7px); opacity: 0; } 90% { transform: translate(0, 0); opacity: 0; } 96%, 100% { transform: translate(0, 0); opacity: 1; } }
@keyframes brand-board-second { 0%, 34% { transform: translate(0, 0); opacity: 1; } 47% { transform: translate(142px, -1px); opacity: 1; } 49%, 91% { transform: translate(145px, -4px); opacity: 0; } 92% { transform: translate(0, 0); opacity: 0; } 98%, 100% { transform: translate(0, 0); opacity: 1; } }
@keyframes brand-board-third { 0%, 41% { transform: translate(0, 0); opacity: 1; } 55% { transform: translate(186px, -8px); opacity: 1; } 57%, 93% { transform: translate(189px, -11px); opacity: 0; } 94% { transform: translate(0, 0); opacity: 0; } 100% { transform: translate(0, 0); opacity: 1; } }
@keyframes brand-scene-pulse { 0%, 100% { opacity: .8; } 50% { opacity: 1; } }
@keyframes brand-scene-float { 0%, 100% { opacity: .65; } 50% { opacity: 1; } }
@keyframes brand-scene-signal { 0%, 100% { opacity: .35; } 50% { opacity: 1; } }
@media (max-width: 600px) {
    .journey-line__track--coach { flex-basis: 62px; width: 62px; }
    .brand-ride--home { --coach-size: 46px; }
    .footer-journey__stops { gap: 6px; font-size: 13px; }
    .footer-journey > p { font-size: 18px; }
    .brand-received { padding: 16px; }
}
@media (prefers-reduced-motion: reduce) {
    /* Bus motion is an explicit owner requirement; keep other reduced-motion UI rules. */
    html .brand-ride.is-running :is(.brand-ride__vehicle, .brand-coach__wheel), html .brand-loader:not([hidden]) :is(.brand-ride__vehicle, .brand-coach__wheel) { animation-duration: var(--ride-cycle, 4.5s) !important; }
    html .brand-boarding.is-running * { animation-duration: 16s !important; }
}
@media print { .footer-journey, .brand-boarding, .brand-ride, .brand-loader { display: none !important; } }
