/* Train journey composition. Controls and panels use the shared UI components. */
:root{color-scheme:dark}
*{box-sizing:border-box}
html,body{margin:0;width:100%;height:100%;overflow:hidden;background:var(--ui-bg);color:var(--ui-text);font-family:var(--ui-font-body)}
main,canvas{display:block;width:100%;height:100%}
main{position:relative}
main::after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 -120px 100px -60px color-mix(in srgb,var(--ui-bg) 80%,transparent),inset 0 100px 100px -80px var(--ui-bg)}
header{position:absolute;top:max(28px,env(safe-area-inset-top));left:32px;right:32px;display:flex;justify-content:space-between;align-items:center;gap:16px;z-index:2}
.wordmark{font:600 24px/1 var(--ui-font-display);letter-spacing:.06em;color:var(--ui-text);text-decoration:none;display:flex;gap:12px;align-items:center;min-height:44px}
.mark{color:var(--ui-primary);font-size:28px;font-weight:400}
.scene-label{font:400 16px/1 var(--ui-font-display);letter-spacing:.1em;color:var(--ui-muted)}
.caption{position:absolute;left:32px;bottom:124px;pointer-events:none;z-index:2;text-shadow:0 2px 18px var(--ui-bg)}
h1{font:600 clamp(36px,4.5vw,64px)/1 var(--ui-font-display);text-transform:uppercase;letter-spacing:.015em;color:var(--ui-heading);margin:0 0 12px}
p{font-size:14px;margin:0;color:var(--ui-muted)}
footer{position:absolute;bottom:max(28px,env(safe-area-inset-bottom));left:32px;right:32px;display:flex;justify-content:space-between;align-items:center;gap:20px;z-index:3}
.scene-status{display:flex;align-items:center;gap:10px;font:400 15px/1.3 var(--ui-font-display);letter-spacing:.06em;color:var(--ui-muted)}
.scene-status i{width:6px;height:6px;flex-shrink:0;border-radius:50%;background:var(--ui-cyan)}
.controls{display:flex;gap:8px;align-items:stretch}
.controls svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.controls .station-link{white-space:nowrap}
#error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(480px,calc(100% - 32px));z-index:4;padding:28px}
#error[hidden]{display:none}
#error h2{font:600 32px/1.1 var(--ui-font-display);margin:0 0 16px;color:var(--ui-heading)}
#error p{line-height:1.6}
@media(max-width:1000px){
 footer{flex-direction:column;align-items:flex-start;gap:14px}
 .caption{bottom:154px}
}
@media(max-width:760px){
 header{top:max(12px,env(safe-area-inset-top));left:16px;right:16px;gap:12px}
 .wordmark{font-size:20px;gap:6px}.scene-label{font-size:13px}
 .caption{left:16px;right:16px;bottom:196px}.caption h1{font-size:40px}.caption p{font-size:13px}
 footer{left:16px;right:16px;bottom:calc(12px + env(safe-area-inset-bottom));gap:12px}
 .scene-status{font-size:13px}
 .controls{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;width:100%}
 .controls .station-link{grid-column:span 3;white-space:normal;min-height:48px;text-align:center}
 .controls button{grid-column:span 2;padding:10px 6px;gap:6px}
 .controls button span{font-size:14px}
 .controls .ui-button--compact{font-size:18px;padding:10px 16px}
}
@media(max-height:500px){
 header{top:8px;left:16px;right:16px}.caption{left:16px;bottom:82px}.caption h1{font-size:32px;margin-bottom:6px}.caption p{font-size:12px}
 footer{left:16px;right:16px;bottom:12px;flex-direction:row;align-items:center}
 .scene-status{display:none}.controls{margin-left:auto}.controls button span{display:none}
}
