/* =============================================================
 v24.9.4 Mobile Layout Unified
 - Consolidates v24.9.1 / v24.9.2 / v24.9.3 screen layout behavior.
 - Single owner for sortie start fixed action.
 - No save/ranking/gacha/puzzle calculation changes.
 ============================================================= */
:root{
  --v2494-nav-h:62px;
  --v2494-safe-bottom:env(safe-area-inset-bottom, 0px);
  --v2494-browser-tail:78px;
  --v2494-action-h:64px;
  --v2494-page-gap:12px;
  --v2494-ink:#211842;
  --v2494-soft-card:rgba(255,255,255,.88);
  --v2494-cream-card:rgba(255,251,232,.90);
}
html,body{height:100%;overscroll-behavior:none;}
body.v2494-mobile-layout{
  overflow:hidden!important;
  background:#102116!important;
}
body.v2494-mobile-layout .app{
  width:min(100vw, 720px)!important;
  height:100dvh!important;
  max-height:100dvh!important;
  margin:0 auto!important;
  overflow:hidden!important;
  position:relative!important;
}
body.v2494-mobile-layout .screen{
  width:100%!important;
  max-width:100%!important;
  overflow-x:hidden!important;
  box-sizing:border-box!important;
}
body.v2494-mobile-layout .screen.active:not(#titleScreen):not(#gameScreen){
  height:100dvh!important;
  max-height:100dvh!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  -webkit-overflow-scrolling:touch!important;
  overscroll-behavior:contain!important;
}
body.v2494-mobile-layout .screen.active:not(#titleScreen):not(#gameScreen)>.pad,
body.v2494-mobile-layout .screen.active:not(#titleScreen):not(#gameScreen) .stageMapPage{
  min-height:auto!important;
  height:auto!important;
  max-height:none!important;
  overflow:visible!important;
  box-sizing:border-box!important;
  padding-bottom:calc(var(--v2494-browser-tail) + var(--v2494-safe-bottom) + 24px)!important;
}
body.v2494-main-nav .screen.active:not(#titleScreen):not(#gameScreen)>.pad,
body.v2494-main-nav .screen.active:not(#titleScreen):not(#gameScreen) .stageMapPage{
  padding-bottom:calc(var(--v2494-nav-h) + var(--v2494-browser-tail) + var(--v2494-safe-bottom) + 20px)!important;
}
body.v2494-fixed-action-active .screen.active:not(#titleScreen):not(#gameScreen)>.pad{
  padding-bottom:calc(var(--v2494-action-h) + var(--v2494-browser-tail) + var(--v2494-safe-bottom) + 34px)!important;
}
body.v2494-mobile-layout *{box-sizing:border-box;}
body.v2494-mobile-layout img{max-width:100%;}

/* Title is a standalone page. Do not apply bottom nav or scroll clipping. */
body.v2494-title-active #v246BottomNav,
body.v2494-title-active .v246BottomNav,
body.v2494-title-active .bottomNav,
body.v2494-title-active .bottomNavV24,
body.v2494-title-active .v2487BottomNav,
body.v2494-title-active .appBottomNav,
body.v2494-title-active .mainBottomNav{display:none!important;}
body.v2494-title-active #titleScreen{
  height:100dvh!important;
  overflow:hidden!important;
}
body.v2494-title-active #titleScreen .titlePad{
  height:100dvh!important;
  max-height:100dvh!important;
  overflow:visible!important;
  padding-bottom:calc(var(--v2494-browser-tail) + var(--v2494-safe-bottom) + 10px)!important;
}
#titleStart,
#titleScreen .imageStartBtn{
  position:relative!important;
  z-index:7000!important;
  pointer-events:auto!important;
  touch-action:manipulation!important;
}
#titleScreen .titleBox{pointer-events:none!important;}

/* Bottom nav: show only on main screens. */
body.v2494-hide-nav #v246BottomNav,
body.v2494-hide-nav .v246BottomNav,
body.v2494-hide-nav .bottomNav,
body.v2494-hide-nav .bottomNavV24,
body.v2494-hide-nav .v2487BottomNav,
body.v2494-hide-nav .appBottomNav,
body.v2494-hide-nav .mainBottomNav{display:none!important;}
body.v2494-main-nav #v246BottomNav,
body.v2494-main-nav .v246BottomNav,
body.v2494-main-nav .bottomNav,
body.v2494-main-nav .bottomNavV24,
body.v2494-main-nav .v2487BottomNav,
body.v2494-main-nav .appBottomNav,
body.v2494-main-nav .mainBottomNav{
  display:grid!important;
  grid-template-columns:repeat(5,1fr)!important;
  gap:6px!important;
  position:fixed!important;
  left:50%!important;
  right:auto!important;
  transform:translateX(-50%)!important;
  bottom:calc(var(--v2494-browser-tail) + var(--v2494-safe-bottom) + 6px)!important;
  z-index:3600!important;
  width:min(94vw, 520px)!important;
  height:var(--v2494-nav-h)!important;
  min-height:var(--v2494-nav-h)!important;
  padding:6px 7px!important;
  border-radius:20px!important;
  background:rgba(43,38,30,.74)!important;
  border:1px solid rgba(255,255,255,.24)!important;
  box-shadow:0 10px 28px rgba(0,0,0,.24)!important;
  backdrop-filter:blur(10px)!important;
  -webkit-backdrop-filter:blur(10px)!important;
  pointer-events:auto!important;
}
body.v2494-main-nav #v246BottomNav button,
body.v2494-main-nav .v246BottomNav button,
body.v2494-main-nav .bottomNav button,
body.v2494-main-nav .bottomNavV24 button,
body.v2494-main-nav .v2487BottomNav button,
body.v2494-main-nav .appBottomNav button,
body.v2494-main-nav .mainBottomNav button{
  height:calc(var(--v2494-nav-h) - 12px)!important;
  min-height:calc(var(--v2494-nav-h) - 12px)!important;
  min-width:0!important;
  padding:2px!important;
  border-radius:15px!important;
  font-size:9px!important;
  line-height:1.05!important;
  color:#1f183c!important;
  text-shadow:0 1px 0 rgba(255,255,255,.75)!important;
  overflow:hidden!important;
}
body.v2494-main-nav .v2487NavIcon,
body.v2494-main-nav .navIcon,
body.v2494-main-nav .bottomNav img{
  width:28px!important;
  height:28px!important;
  object-fit:contain!important;
  display:block!important;
  margin:0 auto 1px!important;
}
body.v2494-main-nav .v2487NavLabel{font-size:9px!important;line-height:1.05!important;}

/* Unified fixed action buttons. Old fixed buttons are intentionally not visible. */
#prepScreen #startGame,
#v2489FixedStart,
#v2492TrainChangeBtn,
#v2493LoginClaimBtn,
#v2493MissionClaimBtn,
#v2493PrepStartBtn,
#v2493TrainingChangeBtn{display:none!important;pointer-events:none!important;}
.v2494FixedAction{
  position:fixed!important;
  left:50%!important;
  transform:translateX(-50%)!important;
  bottom:calc(var(--v2494-browser-tail) + var(--v2494-safe-bottom) + 12px)!important;
  z-index:8200!important;
  display:none;
  width:min(92vw, 520px)!important;
  min-height:var(--v2494-action-h)!important;
  border:0!important;
  border-radius:999px!important;
  background:linear-gradient(180deg,#fff18d,#ffbf4e 62%,#ff91bd)!important;
  color:#211842!important;
  font-weight:1000!important;
  font-size:clamp(18px,5vw,24px)!important;
  box-shadow:0 9px 24px rgba(0,0,0,.30),0 5px 0 rgba(92,55,0,.30)!important;
  touch-action:manipulation!important;
  pointer-events:auto!important;
}
body.v2494-login-active #v2494LoginClaimBtn,
body.v2494-mission-active #v2494MissionClaimBtn,
body.v2494-prep-active #v2494PrepStartBtn,
body.v2494-training-active #v2494TrainingChangeBtn{display:block!important;}
.v2494FixedAction:disabled{opacity:.62!important;filter:saturate(.65)!important;}

/* Prep: one official fixed start. */
body.v2494-prep-active #prepScreen .pad,
body.v2494-prep-active #prepScreen .sortiePad{
  padding-bottom:calc(var(--v2494-action-h) + var(--v2494-browser-tail) + var(--v2494-safe-bottom) + 34px)!important;
  overflow-y:auto!important;
  -webkit-overflow-scrolling:touch!important;
}
body.v2494-prep-active #prepScreen .section,
body.v2494-prep-active #prepScreen .prepStageSummary,
body.v2494-prep-active #prepScreen .visibilityPreview{
  background:rgba(255,255,255,.86)!important;
  color:var(--v2494-ink)!important;
  text-shadow:none!important;
}
body.v2494-prep-active #prepScreen .section *,
body.v2494-prep-active #prepScreen .prepStageSummary *,
body.v2494-prep-active #prepScreen .visibilityPreview *{text-shadow:none!important;}

/* Formation: support both old and V24 ids. */
body.v2494-formation-active #formationScreen .pad,
body.v2494-formation-active #formationScreenV24 .pad{
  padding-bottom:calc(var(--v2494-browser-tail) + var(--v2494-safe-bottom) + 28px)!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
}
#formationScreen,#formationScreenV24,#formationRootV24{overflow-x:hidden!important;}
#formationRootV24 .v2462TeamSlots,
#formationRootV24 .v24CurrentTeam,
#formationRootV24 .v24MiniTeam{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:8px!important;
  overflow:visible!important;
  width:100%!important;
}
#formationRootV24 .v2462Slot,
#formationRootV24 .v24MiniChar{
  min-width:0!important;
  width:100%!important;
}
#formationRootV24 .v2462Roster,
#formationRootV24 .v24Roster,
#formationRootV24 .rosterList{
  max-height:46dvh!important;
  overflow-y:auto!important;
  -webkit-overflow-scrolling:touch!important;
  padding-bottom:calc(var(--v2494-browser-tail) + 20px)!important;
}
#formationRootV24 .v2462Actions,
#formationRootV24 .v24FormationActions{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:8px!important;
}

/* Training selector fixed action and scroll safety. */
body.v2494-training-active #trainingScreenV24 .pad,
body.v2494-training-active #trainingScreen .pad{
  padding-bottom:calc(var(--v2494-action-h) + var(--v2494-browser-tail) + var(--v2494-safe-bottom) + 28px)!important;
}
.v2494SelectorOverlay{
  position:fixed!important;
  inset:0!important;
  z-index:9000!important;
  display:none;
  background:rgba(0,0,0,.42)!important;
  padding:calc(env(safe-area-inset-top,0px) + 18px) 14px calc(var(--v2494-browser-tail) + 18px)!important;
}
.v2494SelectorOverlay.show{display:grid!important;align-items:center!important;}
.v2494SelectorPanel{
  max-height:82dvh!important;
  overflow:hidden!important;
  border-radius:24px!important;
  background:#fffaf0!important;
  border:2px solid rgba(255,225,112,.82)!important;
  box-shadow:0 16px 44px rgba(0,0,0,.32)!important;
  color:var(--v2494-ink)!important;
}
.v2494SelectorHead{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:10px!important;padding:12px 14px!important;border-bottom:1px solid rgba(0,0,0,.08)!important;}
.v2494SelectorHead button{border:0;border-radius:999px;padding:9px 14px;font-weight:1000;background:#efeafd;color:var(--v2494-ink);}
.v2494SelectorList{max-height:68dvh!important;overflow-y:auto!important;-webkit-overflow-scrolling:touch!important;padding:10px!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important;}
.v2494SelectorCard{display:flex!important;gap:8px!important;align-items:center!important;border:1px solid rgba(83,68,144,.18)!important;background:#fff!important;border-radius:16px!important;padding:8px!important;color:var(--v2494-ink)!important;font-weight:1000!important;text-align:left!important;}
.v2494SelectorCard img{width:46px!important;height:46px!important;object-fit:contain!important;border-radius:12px!important;background:#f2efff!important;}
.v2494SelectorCard small{display:block!important;font-size:10px!important;color:#665b85!important;font-weight:900!important;}

/* Content reachability: no nav in sub screens, enough bottom room for browser bar. */
body.v2494-hide-nav #loginBonusScreen .pad,
body.v2494-hide-nav #missionScreen .pad,
body.v2494-hide-nav #gachaScreen .pad,
body.v2494-hide-nav #highScoreScreen .pad,
body.v2494-hide-nav #resultScreen .pad,
body.v2494-hide-nav #itemScreen .pad,
body.v2494-hide-nav #profileScreen .pad,
body.v2494-hide-nav #presentBoxScreen .pad,
body.v2494-hide-nav #awakenScreen .pad,
body.v2494-hide-nav #bossScreen .pad{
  padding-bottom:calc(var(--v2494-browser-tail) + var(--v2494-safe-bottom) + 28px)!important;
}
body.v2494-login-active #loginBonusScreen .pad,
body.v2494-mission-active #missionScreen .pad{
  padding-bottom:calc(var(--v2494-action-h) + var(--v2494-browser-tail) + var(--v2494-safe-bottom) + 30px)!important;
}
#missionScreen #missionList,#itemScreen #itemList,#presentBoxScreen #presentList,#gachaScreen #gachaResult,#highScoreScreen .section{
  padding-bottom:calc(var(--v2494-browser-tail) + 20px)!important;
}

/* Dark pages: headings are light; cards remain dark text. */
body.v2494-sub-dark .topbar b,
body.v2494-sub-dark .screen.active>.pad>.topbar b{
  color:#fff7d6!important;
  text-shadow:0 2px 7px rgba(0,0,0,.58)!important;
}
#loginBonusScreen .section,#missionScreen .missionCard2,#gachaScreen .section,#highScoreScreen .section,#profileScreen .section,#itemScreen .itemCard2,#presentBoxScreen .section,
#resultScreen .section{
  background:var(--v2494-soft-card)!important;
  color:var(--v2494-ink)!important;
  text-shadow:none!important;
}
#loginBonusScreen .section *,#missionScreen .missionCard2 *,#gachaScreen .section *,#highScoreScreen .section *,#profileScreen .section *,#itemScreen .itemCard2 *,#presentBoxScreen .section *,#resultScreen .section *{text-shadow:none!important;}

/* Battle: no layout management except hiding nav. */
body.v2494-game-active #v246BottomNav,
body.v2494-game-active .v246BottomNav,
body.v2494-game-active .bottomNav,
body.v2494-game-active .bottomNavV24,
body.v2494-game-active .v2487BottomNav{display:none!important;}

@media(max-width:390px){
  :root{--v2494-nav-h:56px;--v2494-action-h:60px;}
  body.v2494-main-nav .v2487NavIcon,
  body.v2494-main-nav .navIcon,
  body.v2494-main-nav .bottomNav img{width:25px!important;height:25px!important;}
  .v2494SelectorList{grid-template-columns:1fr!important;}
  #formationRootV24 .v2462TeamSlots,#formationRootV24 .v24CurrentTeam,#formationRootV24 .v24MiniTeam{grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:5px!important;}
}
