/* Compact Manavgat dolmuş and helicopter controls. */
.journey-controls{position:absolute;z-index:7;left:clamp(10px,1.8vw,23px);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:6px}
.journey-slot{display:flex;flex-direction:column;align-items:center;gap:6px}
.journey-icon,.journey-radio-icon{width:43px;height:43px;display:flex;align-items:center;justify-content:center;padding:0;border:1px solid #b7d4c0;border-radius:13px;background:#fffefa;color:#246d4e;box-shadow:var(--shadow);cursor:pointer}
.journey-icon .journey-glyph{width:26px;height:26px;display:block;stroke:currentColor;fill:none}
.journey-icon.is-selecting{border-color:#34896a;background:#dff2e6}
.journey-icon.is-active{background:#c92a38;color:#fff;border-color:#a31c2a;font-size:30px;font-weight:800}
.journey-icon.is-active .journey-glyph{display:none}
.journey-icon.is-active::before{content:"×"}
.journey-icon:disabled{opacity:.45;cursor:default}
.journey-radio-icon{width:36px;height:36px;position:relative;background:#fff9dd;border-color:#e2d08b}
.journey-radio-icon .journey-radio-glyph{width:21px;height:21px;stroke:currentColor;fill:none}
.journey-radio-icon::after{content:"";position:absolute;inset:-4px;border:2px solid #e0af3d;border-radius:17px;pointer-events:none;opacity:0}
.journey-radio-icon.is-playing::after{animation:journey-radio-pulse 1.8s ease-out infinite}
@keyframes journey-radio-pulse{0%{opacity:.8;transform:scale(.88)}80%,100%{opacity:0;transform:scale(1.30)}}
@media(prefers-reduced-motion:reduce){.journey-radio-icon::after{animation:none;opacity:.3}}
.journey-radio-panel{position:absolute;left:auto;right:0;top:calc(100% + 8px);transform:none;width:min(285px,calc(100vw - 88px));max-height:min(42vh,340px);overflow:auto;border:1px solid #b7d4c0;border-radius:15px;padding:12px;background:#fffefb;box-shadow:var(--shadow);font-size:12px;color:var(--ink)}
.journey-radio-panel strong{display:block;margin-bottom:7px;font-size:13px}
.journey-radio-panel #journeyRadioList{display:flex;flex-direction:column;gap:7px}
.journey-radio-panel button{width:100%;min-height:36px;border:1px solid #b7d4c0;border-radius:9px;background:#f5fbf6;color:#246d4e;text-align:left;padding:8px;font-weight:700}
.journey-radio-panel p{font-size:11px;line-height:1.45;color:var(--muted);margin:7px 0 0}
.journey-radio-panel #journeyRadioStop{margin-top:7px;background:#fbe6e5;color:#9c2834;border-color:#df9097;text-align:center}
.journey-radio-panel #journeyRadioStop:hover{background:#f6d0d0;border-color:#c95964}
.journey-select-bar{position:absolute;z-index:8;left:50%;bottom:clamp(10px,1.8vw,23px);transform:translateX(-50%);width:max-content;max-width:calc(100% - 120px);display:flex;align-items:center;gap:12px;border:1px solid #b7d4c0;border-radius:13px;padding:8px 9px 8px 13px;background:#fffefbf5;color:#246d4e;box-shadow:var(--shadow);font:700 12px/1.3 system-ui,sans-serif}
#journeyStatus{max-width:min(370px,calc(100vw - 95px))}
#journeyReset{flex:none;width:30px;height:30px;border:0;border-radius:8px;background:#f5e1e1;color:#a31c2a;font:800 24px/1 system-ui;cursor:pointer}
.journey-radio-panel[hidden],.journey-radio-icon[hidden],.journey-select-bar[hidden]{display:none!important}
.stage.preparing .journey-controls,.stage.preparing .journey-select-bar{visibility:hidden}
@media(max-width:720px){
 .journey-controls{left:9px;top:50%;gap:5px}
 .journey-icon{width:39px;height:39px;border-radius:11px}
 .journey-icon .journey-glyph{width:23px;height:23px}
 .journey-radio-icon{width:33px;height:33px;border-radius:10px}
 .journey-select-bar{bottom:9px;font-size:11px;max-width:calc(100% - 112px)}
}

/* The two official station players appear only after explicit selection. */
.journey-radio-host{display:flex;flex-direction:column;gap:6px;margin-top:8px}
.journey-radio-host iframe{width:100%;height:120px;display:block;border:0;border-radius:12px;background:#f5fbf6}
.journey-radio-host a{color:#246d4e;font-size:11px;text-decoration:underline}

/* Selection pins are projected into DOM pixels, never Three.js world-size meshes. */
.journey-map-pin{position:absolute;z-index:6;width:26px;height:26px;border:3px solid white;border-radius:50%;
  transform:translate(-50%,-50%);box-shadow:0 0 0 3px #244e41,0 2px 8px #173d3280;
  pointer-events:none;will-change:left,top}
.journey-map-pin::after{content:"";position:absolute;inset:7px;background:#fff;border-radius:50%}
.journey-map-pin.start{background:#e8b83c}
.journey-map-pin.end{background:#329d6f}
.journey-map-pin[hidden]{display:none!important}
@media(max-width:720px){.journey-map-pin{width:24px;height:24px}.journey-map-pin::after{inset:6px}}

/* During point selection and travel, only the upper controls lock. */
.stage[data-journey-mode="active"] :is(.district-controls,.env-toolbar){pointer-events:none;opacity:.56}
.stage[data-journey-mode="active"] .radio-controls{pointer-events:auto;opacity:1}
.stage[data-journey-mode="active"] :is(#neighborhoodToggle,#envClockToggle,#envWeatherToggle){cursor:default}
.journey-select-bar{text-align:center;min-width:0}

/* Independent top-right listening control: pulse ONLY on confirmed playing. */
.radio-controls{display:flex;align-items:flex-start;gap:7px}
.radio-controls .journey-radio-icon{flex:none;width:43px;height:43px;border:1px solid #dbb653;background:linear-gradient(145deg,#fff1a1,#cbe9df);color:#284f6b;box-shadow:var(--shadow)}
.radio-controls .journey-radio-icon.is-playing{background:#f5d76b;color:#215946}
.radio-controls .journey-radio-panel{z-index:11;width:min(285px,calc(100vw - 26px))}
@media(max-width:720px){.radio-controls .journey-radio-icon{width:39px;height:39px}.radio-controls{gap:5px}}

/* One expandable transport menu; three actual modes remain compact SVG icons. */
.journey-menu-toggle{width:43px;height:43px;border:1px solid #9fc8b0;border-radius:13px;background:#f6f5da;color:#26684f;box-shadow:var(--shadow);padding:8px;cursor:pointer}
.journey-menu-toggle svg{display:block;width:100%;height:100%}
.journey-menu-toggle[aria-expanded="true"]{background:#cfe9d7}
.journey-options{position:absolute;left:calc(100% + 9px);top:0;display:flex;gap:6px;align-items:center;padding:2px;border:1px solid #bdcfbc;border-radius:14px;background:#fffefaec;box-shadow:var(--shadow)}
.journey-options[hidden],#journeyConfirm[hidden]{display:none!important}
.journey-options .journey-icon{flex:none}
.journey-icon.is-active,.journey-icon.is-selecting{background:#f2d472;color:#264f43;border-color:#cf9f30}
.journey-icon.is-active .journey-glyph{display:block}
.journey-icon.is-active::before{content:none}
.journey-select-bar{flex-wrap:wrap;justify-content:center}
#journeyStatus{flex:1 1 auto;min-width:90px}
#journeyConfirm{flex:none;padding:8px 10px;border:1px solid #4e9871;border-radius:9px;background:#d7efdc;color:#1d6948;font:bold 11px system-ui;cursor:pointer}
#journeyConfirm:disabled{opacity:.55;cursor:default}
@media(max-width:720px){.journey-menu-toggle{width:39px;height:39px;padding:7px}.journey-options{gap:4px;left:calc(100% + 5px)}.journey-select-bar{gap:5px}#journeyConfirm{padding:6px;font-size:10px}}

/* Transport wheel is immediately RIGHT of the radio at the top-right. */
.journey-controls{left:auto;right:clamp(10px,1.8vw,23px);
  top:clamp(10px,1.8vw,23px);transform:none;z-index:13}
.journey-options{left:auto;right:0;top:calc(100% + 8px);z-index:15}
.journey-controls:has(#journeyOptions:not([hidden])){z-index:27}
@media(max-width:720px){.journey-controls{left:auto;right:9px;top:9px;transform:none}
  .journey-options{left:auto;right:0;top:calc(100% + 7px)}}
/* Panels must cover goat markers and journey controls, not the reverse. */
.stage:has(#neighborhoodPanel:not([hidden])) :is(.goat-info-marker,.goat-found-popup){pointer-events:none}
.stage:has(#envClockPanel:not([hidden])) :is(.goat-info-marker,.goat-found-popup){pointer-events:none}

/* Official station embed on user click; explicit audio fallback remains below
   in case the publisher rejects iframe inclusion on a visitor's browser. */
.journey-radio-host{display:flex;flex-direction:column;gap:7px;margin:8px 0 0}
.journey-radio-embed{display:block;width:100%;height:155px;box-sizing:border-box;
  border:1px solid #cadaca;border-radius:9px;background:#fff}
.journey-radio-panel .journey-radio-fallback{font-size:11px;text-align:center;
  padding:6px;background:#f2f2e8;border-color:#d3d8c7;color:#345b4b}
.journey-radio-panel .journey-radio-fallback[hidden]{display:none!important}
.journey-radio-panel .journey-radio-station-link{font-weight:850;color:#14634b;
  text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
@media(max-width:720px){.journey-radio-embed{height:144px}}

/* The speed lever shares the right-hand zoom stack, immediately above "+".
   It appears only while one of the three journeys is actually active. */
.zoom-controls .journey-speed-control{display:flex;box-sizing:border-box;
  flex-direction:column;align-items:center;justify-content:center;gap:6px;
  width:43px;padding:9px 2px 8px;border:1px solid #9fc8b0;
  border-radius:13px;background:#fffefbf2;color:#235f49;
  box-shadow:var(--shadow);font:800 10px/1.2 system-ui,sans-serif}
.zoom-controls .journey-speed-control[hidden],
.stage.preparing .journey-speed-control{display:none!important}
.journey-speed-control output{font-size:9px;white-space:nowrap;font-variant-numeric:tabular-nums}
.journey-speed-control input[type=range]{writing-mode:vertical-lr;direction:rtl;
  inline-size:clamp(78px,17dvh,148px);block-size:22px;
  min-height:78px;margin:2px 0;accent-color:#379165;touch-action:none;cursor:pointer}
.journey-speed-control label{font-size:10px;cursor:pointer}
@media(max-width:720px){
 .zoom-controls .journey-speed-control{width:39px;padding:7px 1px 6px;gap:5px}
 .journey-speed-control input[type=range]{inline-size:clamp(65px,14dvh,110px);
    min-height:65px}
 .journey-speed-control output{font-size:8px}
}
