/* V34 · touch/reachability and visible response to disabled stages */
html, body, #game { touch-action: auto; }
#canvas, #battleCanvas, #battlePlay { touch-action: none; }
#routeScroll, .journey-scroll { touch-action: pan-y; -webkit-overflow-scrolling: touch; }
#battleApp { touch-action: auto; }
#battleLobby, #battleResult { touch-action: pan-y; -webkit-overflow-scrolling: touch; }
#overlay.hide, #exitConfirm.hide, #battleApp.hide { display: none !important; pointer-events: none !important; }
.route-notice { position: absolute; bottom: calc(100% + 10px); left: 7px; right: 7px;
  z-index: 15; border-radius: 13px; padding: 10px 11px; background: #fff6db; border: 2px solid #ffd678;
  box-shadow: 0 5px 0 rgba(60, 42, 82, .5); color: #50385b; text-align: center;
  font-size: 12px; line-height: 1.4; font-weight: 900; opacity: 0; visibility: hidden;
  transform: translateY(7px); transition: opacity .18s, transform .18s, visibility .18s;
  pointer-events: none; }
.route-notice.visible { opacity: 1; visibility: visible; transform: translateY(0); }
#battleExitConfirm { position: absolute; inset: 0; z-index: 42; display: flex; justify-content: center;
  align-items: center; padding: 20px; background: rgba(31,23,49,.79); }
.battle-exit-box { width: 100%; max-width: 335px; padding: 24px 17px; border: 4px solid #fff2d7;
  border-radius: 22px; background: #f9e9f4; color: #4b345c; text-align: center;
  box-shadow: 0 10px 0 #392c53; }
.battle-exit-box h2 { margin: 12px 0; font-size: 23px; color: #553866; }
.battle-exit-box p { margin: 10px 0 16px; font-size: 13px; color: #725c7b; line-height: 1.5; }
#battleApp #battleExitConfirm button { width: 100%; min-height: 48px; margin: 6px 0; font-size: 16px;
  border-radius: 14px; color: #4a345f; background: #ffe08d; }
#battleApp #battleExitConfirm #battleConfirmLeave { background: #ece0ef; }

/* V35: the primary game entrance stays visible without scrolling a long map. */
.review-start-row { display:flex; gap:8px; margin:0 0 9px; position:relative; z-index:17; }
.review-start-row button { touch-action:manipulation; -webkit-tap-highlight-color:rgba(255,240,177,.35); }
.journey-dock .review-start { flex:1; min-height:48px; border:2px solid #fffce0; border-radius:15px;
  background:linear-gradient(140deg,#faffb5,#ddfa7a); color:#3c3261; font-size:15px; font-weight:1000;
  box-shadow:0 4px #879d62; }
.journey-dock .review-help { flex:0 0 69px; min-height:48px; border:2px solid #f4dcf5; border-radius:15px;
  background:#e4ceee; color:#49335c; font-size:12px; font-weight:900; box-shadow:0 4px #806c9e; }
.journey-dock button:active { transform:translateY(2px); box-shadow:0 2px rgba(45,38,67,.55); }
#overlay.route-view .journey-dock { margin-bottom:max(7px,env(safe-area-inset-bottom)); }
#routeNotice { bottom:calc(100% + 7px); }
#battleApp .battle-back, #battleApp .battle-mainbtn, #battleApp .battle-live-actions button {touch-action:manipulation;}

/* Avoid visibility transitions delaying lock/help messages on older WebViews. */
.route-notice.visible {visibility:visible!important;opacity:1!important;transition:opacity .12s linear!important;}

/* V36 audio diagnostic: visible on map; no overlapping invisible tappable layer. */
.journey-dock .money-dock-caption{display:flex!important;align-items:center;justify-content:center;gap:8px;min-height:26px;margin-top:8px!important;}
.route-audio-test{padding:5px 9px;border:1.5px solid #fff5ca;border-radius:11px;background:#ffe477;color:#553954;font-size:11px;font-weight:900;flex-shrink:0;touch-action:manipulation;}
#audioTestStatus{font-size:10px;line-height:1.3;flex:1;text-align:left;color:#fff7eb;}
