/* Adult presentation; game geometry and musical layout remain shared. */
.ambiance-picker,.night-picker{display:flex;align-items:center;justify-content:center;gap:8px;font-weight:bold;color:#35216c}
.ambiance-picker select,.night-picker select{font:inherit;font-size:16px;min-height:44px;max-width:100%;padding:8px 12px;border:2px solid #b999ed;border-radius:16px;background:#fffdf4;color:inherit}
body.adult-ambiance{background:#e6e9e5;color:#243b43;--ink:#243b43;--purple:#356566}
.adult-ambiance button{background:#edf0ed;border-color:#a3b7b0;color:#243b43;box-shadow:0 2px 0 #9faea9;border-radius:12px}
.stage.adult-ambiance{background-size:cover}
.stage.adult-ambiance.panoramic{background-image:linear-gradient(#627a89,#d7dcd5)}
.stage.adult-ambiance .stars,.stage.adult-ambiance .sign:before,.stage.adult-ambiance .sign:after{display:none}
.stage.adult-ambiance .sign{border:1px solid #bdc6bd;border-radius:12px;background:#182f38ed;color:#faf4e7;box-shadow:0 5px 20px #0b182533;padding:12px}
.stage.adult-ambiance h1{font-family:Georgia,serif;font-weight:normal;letter-spacing:.4px}
.stage.adult-ambiance .sign p{background:#f5f0e7;border:1px solid #acb9b5;border-radius:0 0 10px 10px;color:#294149;font-weight:normal}
.stage.adult-ambiance .brand{background:#f6f4eeec;color:#263c46;border-radius:10px;font-style:normal}
.stage.adult-ambiance .brand span{color:#446c64}
.stage.adult-ambiance .back{background:#f6f4eee8;border-color:#b8c6c0;color:#243b43}
.stage.adult-ambiance .score-panel{background:#fffefaf5;border-color:#c5cfc8;border-radius:20px;box-shadow:0 8px 25px #172b3130}
.stage.adult-ambiance .score-heading{color:#51666d}
.stage.adult-ambiance .cue{background:#eff2ec;border-color:#acbeb5;color:#294e4c;box-shadow:none;border-radius:10px}
.stage.adult-ambiance .pulse-panel{background:#f4f3ed;border-color:#bdcbc3;color:#304b52;border-radius:16px}
.stage.adult-ambiance .beats b{background:#dce5df;color:#294c51}
.stage.adult-ambiance .beats b.active{background:#89c7b7;box-shadow:0 0 8px #89c7b755}
.stage.adult-ambiance .controls{background:#f7f6eff2;border-color:#c6cec5;border-radius:18px}
.stage.adult-ambiance .controls .primary{background:linear-gradient(#416c6d,#233e49);color:#fff9eb;border-color:#547778;box-shadow:0 3px 0 #1b333c}
.stage.adult-ambiance .tempo,.stage.adult-ambiance .level{background:#e2e9e3;color:#294149;border-radius:12px}
.stage.adult-ambiance .distance-sign{background:#f4efdfed;border-color:#8c9c93;color:#294149;box-shadow:none;border-radius:10px}
.stage.adult-ambiance .animal-wagon{height:calc(var(--engine-size)*.42);border:2px solid #728482;border-radius:5px;background:linear-gradient(#e3e0d3 0 52%,#b69868 52% 59%,#243e48 59%);box-shadow:inset 0 3px 0 #718080;margin-bottom:calc(var(--engine-size)*.035)}
.stage.adult-ambiance .animal-wagon:before{content:'';position:absolute;left:10%;right:10%;top:14%;height:32%;background:repeating-linear-gradient(90deg,#294852 0 16%,#e1dfd1 16% 22%);border:1px solid #657978;border-radius:2px}
.stage.adult-ambiance .passengers,.stage.adult-ambiance .wagon-music{display:none}
.stage.adult-ambiance .animal-wagon i{border:3px solid #7a8a8a;background:#1f2d33;width:calc(var(--engine-size)*.13);height:calc(var(--engine-size)*.13);bottom:calc(var(--engine-size)*-.07)}
body.adult-ambiance .game-settings,body.adult-ambiance .score-library,body.adult-ambiance .practice-settings{background:#f8f6ee;border-color:#c2cec5;color:#294149}
body.adult-ambiance .game-settings select,body.adult-ambiance #score-title{border-color:#a5b9b0;color:#294149;background:#f8f6ee}
body.adult-ambiance .theme-picker,body.adult-ambiance .panorama-toggle,body.adult-ambiance #open-practice{background:#e8eee6;border-color:#a5b9b0;color:#294149}
body.adult-ambiance .ambiance-picker,body.adult-ambiance .night-picker{color:#294149}
/* Night mode follows the device clock in Auto, and preserves score contrast. */
body.night-mode{background:#111e28;color:#e3e8e5}
body.night-mode .stage{background-color:#6e7f94;background-blend-mode:multiply}
body.night-mode .stage .landscape{background-color:#6e7f94;background-blend-mode:multiply}
body.night-mode .stage.panoramic .landscape{background-color:transparent}
body.night-mode .panorama-window{filter:brightness(.58) saturate(.75)}
body.night-mode .stage .score-panel{background:#e4e5dd;border-color:#596d78;box-shadow:none}
body.night-mode .stage .controls,body.night-mode .stage .pulse-panel,body.night-mode .game-settings,body.night-mode .score-library,body.night-mode .practice-settings{background:#1c303b;border-color:#4e6771;color:#e5ece7}
body.night-mode .stage .tempo,body.night-mode .stage .level,body.night-mode .stage .beats b{background:#324955;color:#f0f1e7}
body.night-mode .stage .level select{color:#f0f1e7;background:#324955}
body.night-mode .stage .beats b.active{background:#8acdbd;color:#102f37}
body.night-mode button,body.night-mode #open-practice,body.night-mode .theme-picker,body.night-mode .panorama-toggle{background:#314c59;border-color:#6a858b;color:#f2f3e9;box-shadow:none}
body.night-mode .game-settings select,body.night-mode #score-title{background:#233d49;color:#f2f3e9;border-color:#658089}
body.night-mode .ambiance-picker,body.night-mode .night-picker,body.night-mode .journey-length,body.night-mode .help,body.night-mode .journey-length-help,body.night-mode footer,body.night-mode .import-status{color:#d9e3df}
body.night-mode .game-settings a,body.night-mode footer a{color:#a5d9cf}
body.night-mode .stage .distance-sign{background:#233b47;border-color:#79918c;color:#eceddf}
body.night-mode .stage #fullscreen{color:#294149;background:#f4eeff}
body.night-mode .stage .cue{color:#294149;background:#eff2ec}
#night-mode-help{margin:6px 12px;text-align:center;font-size:12px}
@media(max-width:900px),(max-width:1000px) and (max-height:550px){
 .ambiance-picker,.night-picker{flex-wrap:wrap;width:100%}
 .stage.adult-ambiance .sign{padding:5px;border-radius:8px}
 .stage.adult-ambiance h1{font-size:22px}
 .stage.adult-ambiance .sign p{font-size:11px}
}
@media(max-width:1000px) and (max-height:550px) and (orientation:landscape){.stage.adult-ambiance h1{font-size:18px}.stage.adult-ambiance .sign{padding:3px}}

/* Desktop adult layout: one continuous scene behind the entire game. */
@media(min-width:1001px), (min-width:901px) and (min-height:551px){
 .stage.adult-ambiance{--adult-score-height:clamp(280px,30svh,340px);width:100%;height:max(800px,calc(100svh - 12px));aspect-ratio:auto;background:var(--adult-backdrop) center top/cover no-repeat}
 body.night-mode .stage.adult-ambiance{background-image:var(--adult-backdrop);background-color:#6e7f94}
 .stage.adult-ambiance .panorama-strip{top:var(--scene-offset,0px);bottom:auto;mask-image:linear-gradient(to bottom,transparent,#000 60px);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 60px)}
 .stage.adult-ambiance header{height:96px}
 .stage.adult-ambiance .brand{top:12px;left:2%;font-size:clamp(20px,2vw,30px);padding:7px 14px}
 .stage.adult-ambiance .back{top:57px;left:2%;font-size:12px;padding:5px 12px}
 .stage.adult-ambiance .sign{top:10px;width:43%;max-width:43%;padding:8px 12px}
 .stage.adult-ambiance h1{font-size:clamp(26px,2.6vw,38px)}
 .stage.adult-ambiance .sign p{font-size:14px;padding:4px 0}
 .stage.adult-ambiance .pulse-panel,.stage.adult-ambiance .pulse-panel:has(.beats b:nth-child(5)){top:24px;left:86%;max-width:25%;font-size:12px}
 .stage.adult-ambiance .score-panel,.stage.adult-ambiance.panoramic .score-panel{top:100px;left:4%;width:92%;height:var(--adult-score-height);padding:10px 16px 8px}
 .stage.adult-ambiance .score-heading{font-size:13px;padding:0 12px}
 .stage.adult-ambiance .score-message{min-height:32px;margin-top:4px}
 .stage.adult-ambiance .score-panel .cue{font-size:16px;padding:4px 14px}
 .stage.adult-ambiance .landscape{top:0;left:0;width:100%;height:100%;background-image:var(--scene);background-position:center var(--scene-offset,0px);background-size:100% var(--pano-height,100%);background-repeat:no-repeat;z-index:1}
 .stage.adult-ambiance header,.stage.adult-ambiance .score-panel,.stage.adult-ambiance .controls,.stage.adult-ambiance .pulse-panel{z-index:5}
 .stage.adult-ambiance.panoramic .landscape{background-image:none}
 .stage.adult-ambiance .distance-sign{top:calc(126px + var(--adult-score-height));right:3%;padding:8px 14px}
 .stage.adult-ambiance .distance-sign strong{font-size:21px}
 .stage.adult-ambiance .controls{bottom:12px;height:88px;left:2%;width:96%;padding:8px}
}

/* Both adult vehicles use the same wheel contact line. */
.stage.adult-ambiance #train .train-convoy{bottom:0}
.stage.adult-ambiance .train-convoy img.locomotive{margin-bottom:calc(var(--engine-size)*-0.01142857)}
.stage.adult-ambiance .animal-wagon{margin-bottom:calc(var(--engine-size)*.07 - 2px)}

.train-convoy img.adult-carriage{display:none}
.stage.adult-ambiance .animal-wagon{display:none}
.stage.adult-ambiance .train-convoy img.adult-carriage{display:block;width:calc(var(--engine-size)*1.2);height:var(--engine-size);margin-bottom:calc(var(--engine-size)*-0.01142857);object-fit:contain}

/* Play directly in the scenery, with a compact stop control during the trip. */
.stage #play.scene-play {
 pointer-events:auto;position:absolute;z-index:8;left:50%;top:66%;
 transform:translate(-50%,-50%);display:grid;place-items:center;
 width:96px;height:96px;min-width:0;padding:0 0 0 7px;
 border:3px solid #ffffffeb;border-radius:50%;
 background:linear-gradient(145deg,#ad67eb,#7632bc);color:#fff;
 font:56px/1 sans-serif;
 box-shadow:0 6px 0 #532389,0 8px 24px #18242c55;cursor:pointer;touch-action:manipulation;
}
.stage #play.scene-play:hover {filter:brightness(1.1)}
.stage #play.scene-play:focus-visible {outline:4px solid #00cadd;outline-offset:5px}
.stage #play.scene-play[data-state="playing"],
.stage #play.scene-play[data-state="loading"] {
 width:44px;height:44px;padding:0;font-size:21px;border-width:2px;
 box-shadow:0 3px 0 #532389,0 4px 12px #18242c33;
}
.stage.adult-ambiance #play.scene-play,
body.night-mode .stage #play.scene-play {background:linear-gradient(145deg,#527d7c,#203d49);box-shadow:0 5px 0 #17323b,0 8px 24px #18242c55}
@media (min-width:1001px), (min-width:901px) and (min-height:551px) {
 .stage.adult-ambiance #play.scene-play {top:36%}
 .stage.adult-ambiance #play.scene-play:not([data-state="idle"]) {top:30px;left:30px}
 .stage .controls .play-controls {display:none}
}
@media (max-width:900px), (max-width:1000px) and (max-height:550px) {
 .stage #play.scene-play {top:40%;width:68px;height:68px;font-size:40px;padding-left:5px}
 .stage #play.scene-play:not([data-state="idle"]) {width:44px;height:44px;font-size:20px;padding:0;top:6px;left:6px;transform:none}
 .stage .controls #listen {grid-column:1/-1}
}

/* Compact desktop dock; mobile touch targets retain their existing layout. */
@media (min-width:1001px), (min-width:901px) and (min-height:551px) {
 .stage .controls,.stage.adult-ambiance .controls {
  left:50%;transform:translateX(-50%);width:90%;max-width:960px;
  height:64px;bottom:12px;padding:6px 14px;gap:20px;
  justify-content:center;border-radius:20px;
 }
 .stage .controls #listen {width:auto;min-width:124px;min-height:44px;padding:7px 16px;font-size:17px;border-radius:14px}
 .stage .controls .tempo {width:170px;flex:0 0 170px;font-size:17px;padding:4px 12px;gap:0 6px;border-radius:14px}
 .stage .controls .tempo input {width:100%;max-width:none;height:18px;min-height:18px;margin:0}
 .stage .controls .level {width:auto;min-width:0;max-width:460px;flex:1;padding:4px 12px;font-size:12px;border-radius:14px}
 .stage .controls .level select {width:100%;max-width:100%;font-size:15px;min-height:28px;padding:2px 0}
}

/* In a fixed adult landscape the destination station is visible from departure. */
.stage.adult-ambiance:not(.panoramic) .panorama-window{display:block;position:absolute;inset:0;overflow:hidden;pointer-events:none}
.stage.adult-ambiance:not(.panoramic) .panorama-strip{display:none}
.stage.adult-ambiance:not(.panoramic) .panorama-station{left:auto;right:3%;top:var(--rail-y);width:clamp(110px,24%,260px);height:auto;max-height:65%;object-fit:contain;object-position:bottom;transform:translateY(-100%)}
/* The children's yellow title board stays legible when night mode changes body text. */
.stage:not(.adult-ambiance) .sign{color:#35216c}
@media(max-width:900px),(max-width:1000px) and (max-height:550px){
 body.night-mode .stage:not(.adult-ambiance) .sign{background:#fff0bbe8;color:#35216c}
}
