/* One control surface; modes and task feedback never change its footprint. */
.cab-dashboard{grid-template-columns:36px minmax(370px,560px) minmax(150px,200px);gap:14px}
.journey-follow .driving-controls{grid-template-columns:minmax(125px,1fr) 170px 94px;grid-template-rows:96px 36px 34px;gap:4px 8px;padding:10px 12px;min-height:198px}
.driving-controls .cab-instruments{grid-column:1;grid-row:1}
.driving-controls .lever-instrument{grid-column:2;grid-row:1/4}
.driving-controls .train-service-buttons{grid-column:3;grid-row:1/4;display:flex;flex-direction:column;justify-content:center;gap:7px}
.train-service-buttons button{display:grid;grid-template-columns:34px 1fr;grid-template-rows:28px 16px;align-items:center;gap:0 3px;min-height:62px;border:1px solid #cbd5c8;border-radius:12px;background:#faf9ef;padding:6px;color:#3e6057;text-align:left;font-size:11px;transition:background .2s,border-color .2s}
.train-service-buttons img{width:38px;height:38px;object-fit:contain;grid-row:1/3;filter:drop-shadow(0 2px 1px #715c3422)}
.train-service-buttons small{font-size:9px;line-height:1.2}.train-service-buttons button:disabled{opacity:.65;cursor:default}.train-service-buttons .ready{background:#e9f0d9;border-color:#6c9870;box-shadow:0 0 0 2px #8dab6c22}
.driving-controls p.train-service-status{grid-row:2;grid-column:1;min-height:32px;margin:0;line-height:1.4;font-size:10px;color:#476857}
.driving-controls [data-drive-note]{display:none}.driving-controls .drive-warning{grid-row:3;grid-column:1;font-size:10px;padding:4px 6px;align-self:stretch;display:flex;align-items:center}
.driving-controls .drive-takeover{grid-row:2;grid-column:1;font-size:9px;background:#edeedf;z-index:2}
.train-interior{position:absolute;inset:0;z-index:10;opacity:0;pointer-events:none;overflow:hidden;transform:scale(var(--interior-scale,1.08));transition:opacity .35s ease,transform .35s ease;background:#e7e8d9;border-radius:16px}
.interior-landscape{position:absolute;inset:0;background:#d5dfd1 url('assets/landscapes/nature-suburb.webp') repeat-x 0 54%;background-size:auto 150%}
.interior-layer{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}
.travel-scene{touch-action:pan-y}.inside-train .train-interior{opacity:1}.inside-train .journey-world,.inside-train .world-guide{visibility:hidden}.inside-train{mask-image:none!important;-webkit-mask-image:none!important}
.goal-box-art{height:62px!important;width:100%!important;object-fit:contain}.train-box-art{object-fit:contain}.box-list{display:grid;gap:8px}.box-list-item{display:flex;align-items:center;gap:12px;padding:10px;background:#f5f5eb;border-radius:12px}.box-list-item>.train-box-art{width:65px;height:65px}.box-list-item>div{flex:1}.box-list-item small{display:block;margin-top:5px;color:#6c7a70}.box-list-item .rarity{display:inline-flex}.box-unopened,.box-result,.box-opening{text-align:center}.box-unopened>.train-box-art{width:230px;height:210px}.box-actions{display:flex;justify-content:center;gap:10px;margin:20px 0}.box-odds{text-align:left;border-top:1px solid #d7dfd2;padding-top:14px;font-size:12px}.box-odds>div{display:flex;justify-content:space-between;gap:12px;padding:6px;border-bottom:1px solid #e4e8dd}.box-odds summary{cursor:pointer;font-weight:600}.box-prize{height:155px;display:flex;align-items:center;justify-content:center;margin:20px 0}.box-prize .carriage-art{max-height:145px!important;width:90%!important}.box-opening{overflow:hidden;min-height:350px}.box-opening-crate>.train-box-art{width:100px;height:85px}.box-reel-window{height:185px;position:relative;overflow:hidden;background:#eceede;border:1px solid #c7d2bc;border-radius:15px;margin:18px 0}.box-pointer{position:absolute;left:50%;top:0;bottom:0;width:3px;background:#bd974c;z-index:2;box-shadow:0 0 7px #c7a767}.box-pointer:before{content:'';position:absolute;top:0;left:-7px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:12px solid #bd974c}.box-reel{display:flex;width:max-content;gap:10px;transform:translateX(-72px);margin-left:50%;position:absolute;left:0;top:14px;transition:transform 4.8s cubic-bezier(.12,.7,.1,1)}.box-reel-card{width:144px;flex:0 0 144px;height:150px;border-radius:10px;background:#fffef5;padding:12px 8px;display:flex;flex-direction:column;justify-content:center;gap:6px;border:1px solid #d5ddce;box-sizing:border-box}.box-reel-card .carriage-art{height:65px!important;width:100%!important}.box-reel-card small{font-size:10px}.box-opening.rolling .box-reel{transform:translateX(-5000px)}.box-reveal[hidden]{display:none}.box-opening.revealed>h3,.box-opening.revealed>.box-opening-crate,.box-opening.revealed>.box-reel-window,.box-opening.revealed>p{display:none}
.repair-cables .cable-tile:disabled{opacity:.25;background:#e9ecdf}.repair-cables .cable-tile:focus-visible,.train-service-buttons button:focus-visible{outline:3px solid #3f7b75;outline-offset:3px}
@media(max-width:1000px){.cab-dashboard{grid-template-columns:34px minmax(320px,1fr);gap:10px}.travel-readouts{grid-column:1/-1;display:flex;justify-content:center;gap:28px}.journey-follow .driving-controls{grid-column:2;grid-template-columns:minmax(112px,1fr) 145px 90px}.cab-dashboard .ride-tools{grid-row:1}.travel-readouts>div{min-width:100px}}
@media(max-width:650px){.journey-follow .driving-controls{grid-template-columns:minmax(100px,1fr) 116px;grid-template-rows:87px 45px 38px 32px;min-height:225px;padding:8px;gap:3px}.driving-controls .lever-instrument{grid-column:2;grid-row:1/3}.driving-controls .train-service-buttons{grid-column:1/-1;grid-row:3;flex-direction:row;gap:8px}.train-service-buttons button{grid-template-columns:27px 1fr;grid-template-rows:14px 13px;min-height:36px;flex:1;padding:3px 7px;font-size:10px;gap:0 5px}.train-service-buttons img{width:30px;height:30px}.driving-controls p.train-service-status{grid-row:2;font-size:9px}.driving-controls .drive-warning{grid-row:4;grid-column:1/-1}.driving-controls .drive-modes{gap:3px}.driving-controls .drive-modes button{font-size:10px;padding:7px}.travel-readouts{gap:14px}.travel-readouts>div{min-width:70px}.box-actions{flex-wrap:wrap}.box-list-item{gap:7px}.box-list-item>.train-box-art{width:45px;height:45px}.interior-layer{object-fit:cover}.in-journey .travel-scene{height:clamp(130px,calc(100dvh - 660px),180px)!important}}
@media(prefers-reduced-motion:reduce){.train-interior,.box-reel{transition:none}.box-opening-crate{animation:none}}
html[data-motion="off"] .train-interior{transition:none}

@media(min-width:651px){.in-journey .travel-scene{height:clamp(140px,calc(100dvh - 750px),225px)!important}.journey-follow .announcement-space{min-height:36px;height:36px;margin-bottom:8px}}
.reduce-motion .train-interior{transition:none}.box-opening.rolling .box-opening-crate{animation:box-welcome .65s ease-out}@keyframes box-welcome{0%{transform:scale(.92) rotate(-3deg)}55%{transform:scale(1.08) rotate(2deg)}100%{transform:none}}
@media(prefers-reduced-motion:reduce){.box-opening.rolling .box-opening-crate{animation:none}}
/* Keep the controls visible while a journey is running, including during onboarding. */
body:has(.in-journey) #guide-dock{display:none}
body:has(.in-journey) .rail-workspace #main{padding-bottom:12px!important}
@media(max-width:650px){
 .in-journey .rail-workspace #main{padding:64px 0 10px!important}
 .in-journey .journey-follow>.module-heading{margin-bottom:8px!important}
 .in-journey .contract-compact{min-height:0;padding:5px 8px;margin:6px 0;height:45px}
 .in-journey .contract-compact p{margin:2px 0;font-size:10px}
 .in-journey .travel-scene{height:clamp(100px,calc(100dvh - 714px),130px)!important;padding-top:0;box-sizing:border-box}
 .in-journey .announcement-space{height:32px;min-height:32px;margin:2px 0 5px}
 .in-journey .announcement-card{font-size:9px;padding:5px 8px}
 .in-journey .cab-dashboard{grid-template-columns:32px minmax(0,1fr);gap:6px;width:100%}
 .in-journey .driving-controls{width:auto;min-width:0}
 .in-journey .travel-route{margin-top:2px}
 .in-journey .travel-route ol{margin-top:8px;margin-bottom:9px}
 .in-journey .arrival-actions{margin-top:4px}
}
