
/* A side-on bus with characters clipped behind the window frames. */
#campaign-dialog[data-scenery="bus"] .encounter-heading.bus-exterior{display:block!important;background:linear-gradient(#10172455,#10172433),url('assets/pixel/storm.png') center 35%/cover!important;min-height:0!important;padding:12px!important;overflow:hidden}
#campaign-dialog[data-scenery="bus"] .bus-exterior>.scene-party,#campaign-dialog[data-scenery="bus"] .bus-exterior>.sprite-host{display:none!important}
#campaign-dialog[data-scenery="bus"] .bus-exterior>.road-boss-heading{position:relative!important;top:auto;left:auto;transform:none!important;width:100%;max-width:none!important;margin:0 auto 6px!important}
.bus-outside{width:100%}.bus-side{position:relative;width:100%;max-width:900px;margin:0 auto;aspect-ratio:500/180;filter:drop-shadow(0 8px 0 #070b1599)}
.bus-body{display:block;width:100%;height:100%;image-rendering:pixelated}
.bus-window-route{position:absolute;inset:0;pointer-events:none}
.bus-passenger-window,.bus-driver-window{position:absolute;top:20%;height:30.5%;width:11%;overflow:hidden;display:flex;justify-content:center;align-items:end}
.bus-driver-window{left:80%;width:11.6%}
.bus-passenger-window>.sprite-host{width:100%;height:150%;flex-shrink:0;margin-bottom:-28%}
.bus-passenger-window:has(>.sprite-host:nth-child(2))>.sprite-host{width:65%;margin-left:-10%;margin-right:-10%}
.bus-passenger-window .role-portrait{width:100%!important;height:100%!important}
.bus-driver-window>.sprite-host{width:100%;height:165%;margin-bottom:-60%}
.bus-driver-window .pixel-creature{width:100%!important;height:100%!important}
.bus-active-window{box-shadow:inset 0 -3px #edc569}
.bus-steering-wheel{position:absolute;left:88%;top:42%;width:4%;aspect-ratio:1;border:3px solid #9e8d68;border-radius:50%;box-sizing:border-box;background:linear-gradient(90deg,transparent 42%,#9e8d68 42% 58%,transparent 58%)}
.bus-strike-flash{display:none;position:absolute;left:80%;top:26%;font-size:40px;color:#ffe4a0;text-shadow:3px 3px #ad532e}
.bus-striking .bus-strike-flash{display:block;animation:bus-impact .65s ease-out!important}
.bus-striking .bus-active-window{animation:bus-lunge .65s ease-in-out!important}
.bus-striking .bus-driver-window{animation:bus-hit .65s ease-in-out!important}
@keyframes bus-lunge{50%{transform:translateX(95%)}}@keyframes bus-hit{40%,65%{transform:translateX(8px)}50%,80%{transform:translateX(-4px)}}@keyframes bus-impact{0%,100%{opacity:0}45%,65%{opacity:1}}
.bus-travel-status{text-align:center;font-size:10px;line-height:1.8;color:#edd49b;margin:8px 0;background:#121927cc;padding:6px}
.bus-party-roster{display:flex;justify-content:center;flex-wrap:wrap;gap:6px}.bus-party-roster>span{font-size:8px;padding:6px 9px;background:#19212de6;border:1px solid #59606b;color:#c5c7c7}.bus-party-roster>.is-active{border-color:#d8b370;color:#f1d69f}
#campaign-dialog[data-scenery="bus"] .bus-playing-card{display:block;perspective:900px;border:0;background:transparent;box-shadow:none}
.bus-card-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d}
.bus-playing-card.is-face-up .bus-card-inner{transform:rotateY(180deg)}
.bus-card-back,.bus-card-front{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;backface-visibility:hidden;-webkit-backface-visibility:hidden;border:2px solid #b89b6c;border-radius:8px;box-sizing:border-box;box-shadow:0 5px #08091080;overflow:hidden}
.bus-card-back{background:#1b1822;color:#e3b76b;padding:6px;box-shadow:inset 0 0 0 4px #1b1822,inset 0 0 0 5px #796043,0 5px #08091080}
.bus-card-front{transform:rotateY(180deg);background:#f3eadb;color:#24202a}.bus-playing-card.red .bus-card-front{color:#a8304c}
.bus-card-logo{font-size:clamp(4px,.65vw,7px);line-height:2.2;text-align:center;width:100%;text-shadow:1px 1px #000;font-weight:bold}
.bus-card-logo .title-subtitle{display:inline-block;font-size:.8em;margin-top:1.4em;white-space:nowrap}.bus-card-logo .mage-letter,.bus-card-logo .mage-letter-front,.bus-card-logo .mage-peek{font-size:inherit}
.bus-flip-new .bus-card-inner{animation:bus-card-reveal 550ms cubic-bezier(.25,.7,.25,1)!important}
@keyframes bus-card-reveal{from{transform:rotateY(0)}to{transform:rotateY(180deg)}}
@media(max-width:540px){.bus-travel-status{font-size:8px}.bus-party-roster>span{font-size:7px}.bus-steering-wheel{border-width:2px}.bus-strike-flash{font-size:22px}.bus-card-logo{font-size:4px}.bus-card-back{padding:3px}}
@media(prefers-reduced-motion:reduce){.bus-striking .bus-active-window,.bus-striking .bus-driver-window{animation:none!important}.bus-striking .bus-strike-flash{animation:none!important}}

/* A road directly under the tyres; window passengers keep their sprite proportions. */
.bus-side::before{content:"";position:absolute;left:-50%;right:-50%;top:89%;height:160px;background:url('assets/pixel/frozen-ledge.svg') center top/600px 120px repeat-x;z-index:-1;pointer-events:none}
.bus-passenger-window:has(>.sprite-host:nth-child(2))>.sprite-host{height:100%;margin-bottom:-12%}

.bus-travel-status,.bus-party-roster{position:relative;z-index:1}

/* Results must never compress or reframe the scene in the scrolling flex dialog. */
#campaign-dialog[data-scenery="bus"]{scrollbar-gutter:stable}
#campaign-dialog[data-scenery="bus"]> *{flex-shrink:0}
#campaign-dialog[data-scenery="bus"] .encounter-heading.bus-exterior{flex:0 0 280px;height:280px!important;min-height:280px!important;max-height:280px;box-sizing:border-box;overflow:hidden;overflow-anchor:none}
@media(max-width:540px){#campaign-dialog[data-scenery="bus"] .encounter-heading.bus-exterior{flex-basis:220px;height:220px!important;min-height:220px!important;max-height:220px}}

/* The identity/health strip is outside the fixed picture crop. */
.bus-player-hud{display:none}
#campaign-dialog[data-scenery="bus"]>.bus-player-hud{display:block;order:2;flex:none;padding:10px 12px;border:1px solid #796043;background:#1a202b}
.bus-player-hud .bus-travel-status{margin:0 0 8px;background:none;font-size:11px;overflow-wrap:anywhere}
.bus-player-hud .bus-party-roster>span{font-size:9px;line-height:1.8;overflow-wrap:anywhere;max-width:100%;box-sizing:border-box}
.bus-player-hud .bus-party-roster>.is-active{background:#3b3020;border:2px solid #edc569;color:#ffe5ac}
@media(max-width:540px){.bus-player-hud .bus-travel-status{font-size:9px}.bus-player-hud .bus-party-roster>span{font-size:8px}}
