/* Stable contract workspace, shared by planning and the moving train. */
.journey-planning-layout,.journey-running-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:18px;align-items:start}.journey-main{min-width:0}.journey-contract-sidebar{width:auto;box-sizing:border-box;border-color:#d6dccb;top:12px;padding:15px}.journey-contract-sidebar .contract-countdown{font-size:10px;margin:4px 0 12px}.contract-countdown time{font-variant-numeric:tabular-nums;font-weight:600}.journey-contract-sidebar .contract-tabs{gap:2px;margin:0 0 10px;display:flex}.journey-contract-sidebar .contract-tab{font-size:10px;padding:8px 4px;flex:1}.contract-panel-body{height:510px;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:2px}.sidebar-contract-list{max-height:none;overflow:visible;grid-template-columns:1fr}.sidebar-contract .button{font-size:10px;padding:8px 12px;min-height:34px}.journey-contract-sidebar .contract-sheet{padding:8px;background:transparent;border:0}.journey-contract-sidebar h3{font-size:16px}.journey-contract-sidebar .contract-heading{flex-wrap:wrap;gap:7px}.journey-contract-sidebar .contract-heading>svg{display:none}.journey-contract-sidebar .contract-sheet p{font-size:11px;line-height:1.55}.journey-contract-sidebar .contract-checklist{font-size:11px;padding:0}.journey-contract-sidebar .contract-guide{padding:10px}.journey-contract-sidebar .contract-route{font-size:10px}.journey-contract-sidebar .contract-actions{flex-wrap:wrap}.journey-contract-sidebar .contract-actions .button{font-size:10px;padding:9px}.journey-contract-sidebar .contract-history article{display:flex;flex-direction:column;font-size:11px;gap:8px}.journey-contract-sidebar .series-banner{font-size:9px;flex-wrap:wrap}.journey-contract-sidebar .contract-empty{padding:20px 5px}.journey-contract-sidebar .contract-help{font-size:10px;margin:0 0 10px}.journey-main .module-heading{margin-bottom:12px}.journey-main .journey-reference{font-size:10px}.journey-main .cab-dashboard{grid-template-columns:30px minmax(0,1fr);gap:10px;max-width:650px;margin:12px auto}.journey-main .travel-readouts{grid-column:1/-1;display:flex;justify-content:center;gap:24px}.journey-main .travel-readouts strong{font-size:16px}.journey-main .travel-scene{height:210px!important}.journey-main .announcement-space{height:32px;min-height:32px}.journey-main .travel-route{margin-top:12px}
/* Instruments have their own positions on the common control surface. */
.journey-follow .driving-controls{grid-template-columns:minmax(100px,1fr) minmax(120px,165px) 66px;grid-template-rows:80px 56px 35px;gap:4px 9px;min-height:210px;box-sizing:border-box}.driving-controls .train-service-buttons{gap:8px;align-items:center;justify-content:space-evenly}.service-instrument{width:66px;height:70px;display:grid;place-items:center;position:relative}.service-instrument+ .service-instrument{border-top:1px solid #8e9e8125;padding-top:5px}.train-service-buttons button{display:grid!important;place-items:center;grid-template-columns:1fr!important;grid-template-rows:1fr!important;min-height:60px;width:64px;padding:0!important;background:none!important;border:0!important;box-shadow:none!important}.train-service-buttons img{width:60px!important;height:60px!important;grid-row:auto!important}.microphone-instrument img{width:66px!important;height:66px!important}.train-service-buttons button.ready img{animation:service-wiggle 2.8s ease-in-out infinite;filter:drop-shadow(0 0 6px #d4b77588)}.train-service-buttons button:disabled{opacity:.55}.driving-controls p.train-service-status{grid-column:1;grid-row:2;align-self:center;font-size:10px;min-height:48px;line-height:1.5}.train-service-status.service-urgent{color:#795f2d}.cab-dashboard{position:relative}.manual-tutorial{position:fixed;z-index:25;left:220px;right:320px;bottom:18px;top:auto;background:#faf9ef;border:1px solid #b1c4ae;border-radius:14px;box-shadow:0 12px 30px #314f3820;padding:18px;max-width:480px;margin:6px auto}.manual-tutorial h3{margin:6px 0;font-size:17px}.manual-tutorial p{font-size:13px;line-height:1.6}.manual-tutorial>div{display:flex;justify-content:space-between;gap:12px}.tutorial-highlight{outline:3px solid #c6a955!important;outline-offset:5px;border-radius:12px;position:relative;z-index:20}
/* Interior follows the actual carriage and shares the world camera. */
.travel-scene .journey-world,.inside-train .journey-world{opacity:1!important;visibility:visible!important}.travel-scene .world-guide{opacity:calc(1 - var(--interior-blend,0))}.travel-scene .travelling-consist .train-interior{position:absolute;inset:auto;opacity:var(--interior-blend,0);transform:none!important;transition:none;z-index:2;border-radius:3px;background:transparent;overflow:hidden;pointer-events:none}.train-interior .interior-layer{width:100%;height:100%;object-fit:cover;object-position:center 54%}.inside-train{mask-image:linear-gradient(90deg,transparent,#000 5%,#000 95%,transparent)!important}
/* One closed box until the reel has stopped, then the actual awarded train part. */
.rarity-common{--box-glow:#9bafa5}.rarity-uncommon{--box-glow:#8dbb68}.rarity-rare{--box-glow:#62a8d6}.rarity-epic{--box-glow:#ad78d0}.rarity-legendary{--box-glow:#e1b34e}.garage-box,.floating-box,.box-opening-crate,.box-result-crate,.goal-reward>div,.daily-box-row article{isolation:isolate;position:relative}.garage-box:before,.floating-box:before,.box-opening-crate:before,.box-result-crate:before,.goal-reward>div:before,.daily-box-row article:before{content:'';position:absolute;inset:10%;background:radial-gradient(ellipse,color-mix(in srgb,var(--box-glow,#9bafa5) 55%,transparent),transparent 70%);filter:blur(9px);z-index:-1;pointer-events:none}.rolling .crate-before{opacity:1;transform:none}.rolling .crate-after{opacity:0;transform:none}.box-opening.revealed>.box-opening-crate{display:none}.box-result .box-prize{position:relative;z-index:2;filter:drop-shadow(0 0 18px var(--box-glow))}.box-result .box-prize .carriage-art{width:100%!important;max-height:170px!important}.box-result-crate{margin-top:-4px}.goal-grid{gap:12px}
/* Two clearly distinct currencies, and explicit demo checkout. */
.premium-store{max-width:1040px;margin:0 auto}.trainy-currency{display:inline-grid;place-items:center;border-radius:50%;width:1.5em;height:1.5em;background:#c6983d;color:#fff9df;font-family:var(--serif);font-weight:700;box-shadow:inset 0 0 0 2px #edd497;vertical-align:middle}.store-wallet{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:20px;background:#efefe2;border-radius:12px}.store-wallet>strong,.store-wallet>span{display:flex;align-items:center;gap:10px}.store-demo{font-size:12px;color:#7b826d;margin:16px 0 24px}.store-premium{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:24px;border:1px solid #c1a35b;border-radius:15px;background:#f7f3e4}.store-premium p{font-size:13px;line-height:1.6}.store-premium small{font-size:11px}.store-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:14px;margin:15px 0 30px}.store-grid article{display:flex;flex-direction:column;align-items:center;text-align:center;padding:22px 14px;background:#f7f7ee;border:1px solid #d8dfcf;border-radius:12px}.store-grid h3{font-size:16px}.store-grid p{font-size:14px}.currency-art{font-size:32px;color:#c39848;min-height:50px}.store-grid .button{margin-top:auto}.store-confirm{font-size:14px;line-height:1.8}.daily-box-shop{padding:20px 0 30px;margin-bottom:15px;border-bottom:1px solid #dae0d0}.daily-box-shop>header{display:flex;align-items:center;justify-content:space-between;gap:14px}.daily-box-shop h2{margin:0;font-size:22px}.daily-box-shop p,.daily-box-shop summary,.daily-box-shop li{font-size:12px;line-height:1.6}.daily-box-row{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;margin:15px 0}.daily-box-row article{display:flex;flex-direction:column;align-items:center}.daily-box-row img{width:100%;height:135px;object-fit:contain}.daily-box-row .button{font-size:11px;white-space:normal;padding:10px}.daily-box-shop details ul{columns:2;padding-left:18px}.daily-box-shop details{color:#75816e}
@media(max-width:1100px){.journey-planning-layout,.journey-running-layout{grid-template-columns:minmax(0,1fr) 270px;gap:12px}.journey-follow .driving-controls{grid-template-columns:minmax(80px,1fr) 130px 60px;padding:9px;gap:4px}.journey-main .cab-dashboard{gap:6px}.service-instrument{width:58px}.train-service-buttons button{width:58px}.journey-main .travel-readouts{gap:16px}}
@media(max-width:850px){.journey-planning-layout,.journey-running-layout{grid-template-columns:1fr}.journey-contract-sidebar{position:static}.journey-main .cab-dashboard{max-width:620px}.contract-panel-body{height:450px}.journey-contract-sidebar .sidebar-contract-list{grid-template-columns:repeat(2,minmax(0,1fr))}.daily-box-row{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:650px){.journey-main{padding:0 12px}.journey-main .travel-scene{height:170px!important}.journey-follow .driving-controls{grid-template-columns:minmax(86px,1fr) 116px;grid-template-rows:80px 52px 60px 34px;min-height:255px}.driving-controls .train-service-buttons{grid-column:1/-1;grid-row:3;flex-direction:row;gap:30px;justify-content:center}.service-instrument{height:56px;width:60px}.service-instrument+.service-instrument{border-top:0;border-left:1px solid #8e9e8125;padding:0 0 0 20px;width:80px}.train-service-buttons button{width:56px;min-height:54px}.train-service-buttons img{width:52px!important;height:52px!important}.driving-controls p.train-service-status{grid-row:2}.driving-controls .drive-warning{grid-row:4}.journey-contract-sidebar{margin:12px}.journey-contract-sidebar .sidebar-contract-list{grid-template-columns:1fr}.store-premium{flex-direction:column;align-items:stretch}.store-wallet{padding:14px}.daily-box-row{grid-template-columns:repeat(2,minmax(0,1fr))}.daily-box-row img{height:115px}.daily-box-shop details ul{columns:1}.manual-tutorial{position:fixed;left:10px;right:10px;top:auto;bottom:16px;max-width:calc(100vw - 32px)}.store-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.journey-main .travel-readouts strong{font-size:14px}.journey-main .travel-readouts{gap:10px}}
.reduce-motion .train-service-buttons button.ready img{animation:none!important;filter:drop-shadow(0 0 6px #d4b77588)}
@media(prefers-reduced-motion:reduce){.train-service-buttons button.ready img{animation:none!important;filter:drop-shadow(0 0 6px #d4b77588)}}

.journey-main .cab-dashboard>.travel-readouts{grid-column:1/-1;display:flex;flex-direction:row;align-items:flex-start;justify-content:space-between;gap:16px;width:100%;padding:12px 0}.journey-contract-sidebar .contract-checklist li>div{display:flex;flex-direction:column;gap:3px}
