/* Gariben Kirakira Puzzle consolidated current CSS bundle - generated v24.7.2 */

/* ===== BEGIN style.css ===== */
:root{--panel:rgba(255,255,255,.10);--line:rgba(255,255,255,.18);--muted:rgba(255,255,255,.72);--gold:#ffd76c;--good:#7cffb2;--bad:#ff8aa6}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;user-select:none}
html,body{margin:0;min-height:100%;font-family:-apple-system,BlinkMacSystemFont,"Hiragino Sans","Yu Gothic",sans-serif;color:#fff;background:linear-gradient(160deg,#2b3b23,#142011)}
body{padding:calc(10px + env(safe-area-inset-top)) 10px calc(16px + env(safe-area-inset-bottom));display:flex;justify-content:center}
.app{width:min(480px,100%)}
.screen{display:none;border:1px solid var(--line);border-radius:26px;background:var(--panel);backdrop-filter:blur(12px);overflow:hidden;box-shadow:0 20px 70px rgba(0,0,0,.35)}
.screen.active{display:block}
.pad{padding:14px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:10px}
button{font:inherit;color:inherit;touch-action:manipulation;cursor:pointer}
.btn,.mini,.cta{border:1px solid var(--line);background:rgba(255,255,255,.12);border-radius:16px;padding:11px 12px;font-weight:1000}
.btn:active,.mini:active,.cta:active{transform:scale(.98);background:rgba(255,255,255,.20)}
.cta{width:100%;font-size:18px;background:linear-gradient(180deg,#fff4aa,#ffcf45 55%,#ff9ecf);color:#3a2700;border:0;box-shadow:0 7px 0 rgba(94,61,0,.28),0 0 22px rgba(255,221,100,.25);border-radius:999px}
.logo{font-size:30px;text-align:center;font-weight:1000;color:#ffe277;text-shadow:0 4px 14px rgba(0,0,0,.28)}
.sub{text-align:center;color:var(--muted);font-weight:850;line-height:1.55;font-size:13px}
.titleBox{position:relative;border-radius:28px;overflow:hidden;border:2px solid rgba(255,255,255,.20);background:#26351f;margin-bottom:12px}
.titleBox img{display:block;width:100%;height:auto}
.hotStart{position:absolute;left:22%;right:22%;top:64%;height:8%;border:0;background:rgba(255,255,255,.01);border-radius:999px}
.titleBtns,.nav{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:12px}.titleBtns{padding:10px;border-radius:24px;background:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,.06));border:1px solid rgba(255,255,255,.18)}.titleBtns .btn{border:2px solid rgba(255,255,255,.42);box-shadow:0 6px 0 rgba(0,0,0,.18),0 0 16px rgba(255,255,255,.10);font-size:16px;text-shadow:0 2px 8px rgba(0,0,0,.24)}.titleBtns .btn:nth-child(1){background:linear-gradient(180deg,#ff8f77,#d94a45)}.titleBtns .btn:nth-child(2){background:linear-gradient(180deg,#78c8ff,#326ee7)}.titleBtns .btn:nth-child(3){background:linear-gradient(180deg,#a4ec79,#47aa47)}.titleBtns .btn:nth-child(4){background:linear-gradient(180deg,#d48cff,#8544df)}.titleBtns .btn:nth-child(5){background:linear-gradient(180deg,#ffd76c,#f09d2b);color:#4a2a00}.titleBtns .btn:nth-child(6){background:linear-gradient(180deg,#ffb1cf,#e25395)}
.currency{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.cur{border:1px solid var(--line);background:rgba(255,255,255,.10);border-radius:18px;padding:10px 12px;font-weight:1000;display:flex;justify-content:space-between}.cur small{display:block;font-size:10px;color:var(--muted)}
.section{border:1px solid var(--line);background:rgba(255,255,255,.09);border-radius:22px;padding:12px;margin-top:12px}.section h3{margin:0 0 10px;color:#ffe8a0;font-size:15px}
.scroll{display:flex;gap:10px;overflow-x:auto;padding-bottom:4px}.scroll::-webkit-scrollbar{display:none}
.stage-card,.leader-card,.card{border:1px solid var(--line);background:rgba(255,255,255,.11);border-radius:18px;padding:10px;position:relative}
.stage-card{min-width:158px}.stage-card.active,.leader-card.active,.card.selected{outline:3px solid var(--gold);background:rgba(255,215,108,.15)}
.name{font-weight:1000;color:#7cc7ff}.meta,.helper{font-size:11px;color:var(--muted);font-weight:850;line-height:1.45}.stars{font-size:16px;letter-spacing:1px;margin-top:7px;color:rgba(255,255,255,.25)}.stars .on{color:#ffd84e;text-shadow:0 0 10px rgba(255,216,78,.7)}.best{font-size:10px;font-weight:900;color:#fff7c3;margin-top:5px}
.leader-card{min-width:116px;text-align:center}.leader-card img{width:84px;height:84px;object-fit:contain;border-radius:18px;background:rgba(255,255,255,.08)}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.card{text-align:center;padding:6px}.card img{width:100%;aspect-ratio:1/1;object-fit:contain;border-radius:16px;background:rgba(255,255,255,.07)}.card .name{font-size:11px;margin-top:4px;line-height:1.2}.badge{position:absolute;top:5px;right:5px;background:rgba(0,0,0,.50);border-radius:999px;padding:2px 6px;font-size:10px;font-weight:1000}.lv{left:5px;right:auto;background:rgba(255,255,255,.85);color:#55402c}.silhouette{filter:brightness(0) grayscale(1);opacity:.45}
.boardTop{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin-bottom:10px}.stat{border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.10);padding:8px;text-align:center;font-weight:1000}.stat small{display:block;font-size:10px;color:var(--muted)}
.bars{display:grid;gap:8px;margin-bottom:10px}.bar{height:18px;background:rgba(0,0,0,.25);border-radius:999px;overflow:hidden;border:1px solid var(--line)}.bar span{display:block;height:100%;width:100%;background:linear-gradient(90deg,#7cffb2,#ffe277,#ff8aa6)}
.board{display:grid;grid-template-columns:repeat(6,1fr);gap:5px;background:rgba(0,0,0,.15);padding:8px;border-radius:20px;border:1px solid var(--line);touch-action:none;position:relative}.cell{aspect-ratio:1/1;border:1px solid rgba(255,255,255,.16);border-radius:14px;background:rgba(255,255,255,.10);display:grid;place-items:center;overflow:hidden;touch-action:none;position:relative}.cell img{width:96%;height:96%;object-fit:contain;pointer-events:none}.cell.selected{outline:3px solid var(--gold);background:rgba(255,215,108,.24);transform:scale(.93);box-shadow:0 0 18px rgba(255,215,108,.35)}.cell.flash{outline:3px solid var(--gold)}.btn.modeActive{outline:3px solid var(--gold);background:rgba(255,215,108,.18);color:#fff5bf}#modeQuest,#modeEndless{border:2px solid rgba(255,255,255,.22)}
.resultHero{text-align:center;border:1px solid var(--line);background:rgba(255,255,255,.09);border-radius:22px;padding:16px}.resultStatus{font-size:34px;font-weight:1000;color:#ffe277}.resultScore{font-size:30px;font-weight:1000}.resultStars{font-size:34px;color:rgba(255,255,255,.25);margin:8px 0}.resultStars .on{color:#ffd84e;text-shadow:0 0 16px rgba(255,216,78,.8)}
.gachaOrb{width:190px;height:190px;border-radius:50%;margin:24px auto;background:radial-gradient(circle at 35% 30%,#fff8,#ff8ff5 25%,#8ad5ff 55%,#ffd76c 88%);box-shadow:0 0 35px rgba(255,255,255,.30)}
.skillOverlay{position:fixed;inset:0;z-index:1000;display:none;place-items:center;background:rgba(0,0,0,.35);padding:20px}.skillOverlay.show{display:grid}.skillCard{max-width:390px;width:100%;border-radius:26px;padding:16px;background:linear-gradient(135deg,rgba(34,22,73,.96),rgba(79,34,118,.92));border:2px solid rgba(255,255,255,.28);text-align:center}.skillCard img{width:180px;max-width:70%;height:auto;object-fit:contain}.skillTitle{font-size:24px;font-weight:1000;color:#ffe277}

.titlePad{padding:12px}
.imageStartBtn,.imageMenuBtn{display:block;border:0;background:transparent;padding:0;margin:0;touch-action:manipulation;cursor:pointer}
.imageStartBtn{width:100%;margin:12px auto 10px;filter:drop-shadow(0 8px 10px rgba(0,0,0,.22))}
.imageStartBtn img{display:block;width:100%;height:auto}
.titleImageBtns{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:8px;padding:10px;border-radius:24px;background:linear-gradient(180deg,rgba(255,255,255,.15),rgba(255,255,255,.05));border:1px solid rgba(255,255,255,.18)}
.imageMenuBtn{width:100%;filter:drop-shadow(0 6px 8px rgba(0,0,0,.22));transition:transform .08s ease, filter .08s ease}
.imageMenuBtn img{display:block;width:100%;height:auto;border-radius:18px}
.imageStartBtn:active,.imageMenuBtn:active{transform:scale(.97);filter:drop-shadow(0 3px 4px rgba(0,0,0,.20)) brightness(1.08)}
.titleBtns{display:none!important}
.hotStart{display:none!important}
@media(max-width:380px){.titleImageBtns{gap:7px;padding:8px}.titlePad{padding:10px}}


/* v20.8 redesign */
#titleScreen{max-height:100svh;overflow:hidden}
.titlePad{padding:10px 12px 14px}
.titleBox{max-height:50svh;display:flex;align-items:flex-start;justify-content:center;background:#21331f}
.titleBox>img{width:100%;height:100%;object-fit:cover;object-position:center top}
.logo{font-size:clamp(24px,6vw,32px);margin-top:8px}
.sub{font-size:12px}
.imageStartBtn{margin:8px auto 8px;max-width:94%}
.titleImageBtns{grid-template-columns:repeat(2,1fr);gap:7px;padding:8px}
.bossArea{display:grid;grid-template-columns:94px 1fr;gap:10px;align-items:center;margin:6px 0 10px;padding:10px;border-radius:20px;border:1px solid rgba(255,255,255,.18);background:linear-gradient(180deg,rgba(255,255,255,.13),rgba(255,255,255,.06))}
.bossPortraitWrap{width:94px;height:94px;border-radius:20px;background:rgba(255,255,255,.08);display:grid;place-items:center;overflow:hidden;border:1px solid rgba(255,255,255,.18)}
.bossPortraitWrap img{width:100%;height:100%;object-fit:contain}
.bossName{font-size:16px;font-weight:1000;color:#ffe8a0;margin-bottom:4px}
.battleBottom{position:sticky;bottom:0;z-index:5;margin-top:10px;padding:10px;border-radius:22px;border:1px solid rgba(255,255,255,.18);background:linear-gradient(180deg,rgba(44,62,39,.94),rgba(31,44,29,.98));display:grid;grid-template-columns:1fr 1fr;gap:10px}
.skillBig{grid-column:1/2;border:0;border-radius:18px;padding:14px 10px;background:linear-gradient(180deg,#fff0a0,#ffbb36 55%,#ff8fc8);color:#3a2700;font-weight:1000;box-shadow:0 6px 0 rgba(89,57,0,.32)}
.skillBig.ready{animation:pulseSkill .9s ease-in-out infinite alternate}
.shuffleBig{grid-column:2/3;border:1px solid rgba(255,255,255,.25);border-radius:18px;padding:14px 10px;background:rgba(255,255,255,.12);font-weight:1000}
.gaugeText{grid-column:1/3;text-align:center;font-size:12px;color:rgba(255,255,255,.82);font-weight:900}
@keyframes pulseSkill{from{filter:brightness(1)}to{filter:brightness(1.18);box-shadow:0 6px 0 rgba(89,57,0,.32),0 0 22px rgba(255,220,110,.62)}}
.skillCard{max-width:760px}
.skillCard img{width:100%;max-height:48vh;object-fit:contain;border-radius:18px}
.skillCard .skillTitle{font-size:clamp(26px,6vw,42px)}
.bossCutinOverlay{position:fixed;inset:0;z-index:1200;display:none;place-items:center;background:rgba(80,0,0,.42);padding:18px}
.bossCutinOverlay.show{display:grid;animation:bossFlash .9s ease forwards}
.bossCutinCard{max-width:480px;width:100%;border-radius:24px;background:rgba(30,10,10,.88);border:2px solid rgba(255,100,100,.65);box-shadow:0 20px 70px rgba(0,0,0,.45);text-align:center;padding:14px}
.bossCutinCard img{width:100%;max-height:55vh;object-fit:contain;border-radius:18px}
.bossCutinTitle{font-size:34px;font-weight:1000;color:#ffeb7a;text-shadow:0 3px 12px rgba(0,0,0,.45);margin-top:8px}
@keyframes bossFlash{0%{opacity:0;transform:scale(.94)}20%{opacity:1;transform:scale(1)}80%{opacity:1}100%{opacity:0;transform:scale(1.04)}}
#nextStageBtn{display:none!important}
#nextStageBtn.show{display:block!important}
.resultActions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.resultActions .wide{grid-column:1/3}
@media(max-height:780px){.titleBox{max-height:43svh}.imageStartBtn{margin-top:6px}.titleImageBtns{gap:6px}.logo{font-size:24px}.sub{display:none}}


/* v20.9 asset restore */
.assetHero{display:block;width:100%;border-radius:22px;border:1px solid rgba(255,255,255,.18);box-shadow:0 10px 28px rgba(0,0,0,.24);margin:8px 0 12px}
.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:8px 0 12px}
.tabs .active{outline:3px solid var(--gold);background:rgba(255,215,108,.18)}
.assetSheetRow{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}
.assetSheetRow img,.assetSheetSingle img{width:100%;border-radius:18px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.06)}
.missionCard2,.awakenCard,.itemCard2{display:grid;grid-template-columns:54px 1fr auto;gap:10px;align-items:center;border:1px solid rgba(255,255,255,.18);border-radius:18px;background:rgba(255,255,255,.09);padding:10px;margin-bottom:8px}
.missionIcon2,.itemIcon2{width:54px;height:54px;border-radius:16px;background:linear-gradient(180deg,rgba(255,255,255,.25),rgba(255,255,255,.08));display:grid;place-items:center;font-size:28px}
.progress2{height:10px;background:rgba(0,0,0,.25);border-radius:999px;overflow:hidden;margin-top:6px}
.progress2 span{display:block;height:100%;background:linear-gradient(90deg,#7cffb2,#ffe277,#ff9adb)}
.starImg{width:22px;height:22px;vertical-align:-4px;filter:drop-shadow(0 0 4px rgba(255,215,108,.45))}
.resultStars .starImg{width:42px;height:42px;margin:0 3px}
.stage-card .stars{display:flex;gap:2px;align-items:center}
.ratingPreview{display:block;width:100%;border-radius:18px;border:1px solid rgba(255,255,255,.15);margin-top:10px}
.awakenCard{grid-template-columns:82px 1fr}
.awakenCard img{width:82px;height:82px;object-fit:contain;border-radius:18px;background:rgba(255,255,255,.08)}
.itemCard2.selected{outline:3px solid var(--gold);background:rgba(255,215,108,.13)}
.itemCard2.unavailable{opacity:.55;filter:grayscale(.5)}
.itemSmall{font-size:11px;color:rgba(255,255,255,.72);font-weight:850;line-height:1.45}


/* v20.10 UI fix */
#titleScreen{max-height:none;overflow:visible}.titleBox{height:43svh;max-height:520px;min-height:320px;display:flex;align-items:center;justify-content:center;background:#21331f}.titleBox>img{width:100%;height:100%;object-fit:contain;object-position:center center}.imageStartBtn img{max-height:72px;object-fit:contain}.titleImageBtns{grid-template-columns:repeat(2,1fr);gap:7px;padding:8px;overflow:visible}.imageMenuBtn img{height:64px;object-fit:contain;border-radius:14px}@media(max-height:780px){.titleBox{height:38svh;min-height:260px}.imageMenuBtn img{height:54px}.imageStartBtn img{max-height:62px}}.resultRankImg{display:block;width:100%;max-width:420px;margin:12px auto;border-radius:22px;filter:drop-shadow(0 8px 18px rgba(0,0,0,.25))}#rewardText .ratingPreview{display:none!important}.awakenMiniCard{display:grid;grid-template-columns:92px 1fr;gap:12px;align-items:center;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.09);border-radius:22px;padding:12px;margin:10px 0}.awakenMiniCard .charIcon{width:92px;height:92px;border-radius:20px;background:rgba(255,255,255,.08);object-fit:contain}.awakenBadgeNow{width:72px;height:72px;object-fit:contain;vertical-align:middle;margin-right:8px}.awakenPreview{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px;margin:10px 0}.awakenPreview div{border:1px solid rgba(255,255,255,.14);border-radius:16px;background:rgba(255,255,255,.07);padding:10px;text-align:center}.awakenSuccessOverlay{position:fixed;inset:0;z-index:1500;display:none;place-items:center;background:rgba(15,12,35,.72);padding:18px}.awakenSuccessOverlay.show{display:grid;animation:fadeAw .95s ease forwards}.awakenSuccessCard{width:min(460px,95vw);border-radius:28px;background:linear-gradient(180deg,rgba(255,235,135,.96),rgba(255,142,220,.96));border:3px solid rgba(255,255,255,.85);box-shadow:0 20px 80px rgba(0,0,0,.48);padding:18px;text-align:center;color:#432000}.awakenSuccessCard img{width:130px;height:130px;object-fit:contain}.awakenSuccessCard .big{font-size:34px;font-weight:1000}@keyframes fadeAw{0%{opacity:0;transform:scale(.92)}20%{opacity:1;transform:scale(1)}80%{opacity:1}100%{opacity:0;transform:scale(1.05)}}.itemCard2{grid-template-columns:76px 1fr auto}.itemIconImg{width:76px;height:76px;object-fit:contain;border-radius:18px;background:rgba(255,255,255,.08)}.itemHeroNote{border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.08);border-radius:18px;padding:10px;margin:8px 0 12px}#itemScreen .assetSheetSingle{display:none}#awakenScreen .assetSheetRow,#awakenScreen .ratingPreview{display:none}


/* v21 boss support */
.bossSupportGrid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:10px}
.bossSupportCard{position:relative;border:1px solid rgba(255,255,255,.16);border-radius:22px;background:rgba(255,255,255,.08);padding:10px;overflow:hidden;text-align:left;color:#fff;min-height:245px}
.bossSupportCard.selected{outline:3px solid var(--gold);background:rgba(255,215,108,.14)}
.bossSupportCard.locked{opacity:.62;filter:grayscale(.6)}
.bossFrameBox{position:relative;height:132px;display:grid;place-items:center;margin-bottom:6px}
.bossFrameBg{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;pointer-events:none}
.bossSupportBoss{position:relative;z-index:2;width:84px;height:84px;object-fit:contain;filter:drop-shadow(0 6px 8px rgba(0,0,0,.35))}
.bossSupportName{font-weight:1000;color:#ffe277;font-size:14px;line-height:1.25;margin-top:2px}
.bossSupportDesc{font-size:11px;color:rgba(255,255,255,.78);line-height:1.45;margin-top:4px;min-height:32px}
.bossSupportIcons{display:flex;gap:5px;margin-top:6px;align-items:center;flex-wrap:wrap}
.bossSupportIcons img{width:28px;height:28px;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.28))}
.supportBadge{position:absolute;right:8px;top:8px;border-radius:999px;background:rgba(0,0,0,.38);border:1px solid rgba(255,255,255,.2);padding:3px 7px;font-size:10px;font-weight:1000}
.supportEffectLine{display:flex;align-items:center;gap:6px;margin-top:6px;font-size:12px;color:#dfffe9;font-weight:800}
.supportEffectLine img{width:30px;height:30px;object-fit:contain}
.bossSupportUnlockOverlay{position:fixed;inset:0;z-index:1900;display:none;place-items:center;background:rgba(15,7,30,.74);padding:16px}
.bossSupportUnlockOverlay.show{display:grid;animation:supportUnlockFade 1.55s ease forwards}
.supportUnlockCard{width:min(760px,96vw);text-align:center}
.supportUnlockCard .unlockBanner{width:100%;border-radius:26px;box-shadow:0 22px 85px rgba(0,0,0,.5);border:2px solid rgba(255,230,140,.55)}
.supportUnlockBoss{margin:-38px auto 0;width:118px;height:118px;border-radius:50%;background:rgba(255,255,255,.15);border:3px solid rgba(255,230,140,.9);display:grid;place-items:center;box-shadow:0 12px 36px rgba(0,0,0,.4)}
.supportUnlockBoss img{width:105px;height:105px;object-fit:contain}
.supportUnlockName{font-size:24px;font-weight:1000;color:#ffe277;text-shadow:0 3px 12px rgba(0,0,0,.5);margin-top:8px}
@keyframes supportUnlockFade{0%{opacity:0;transform:scale(.94)}15%{opacity:1;transform:scale(1)}82%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.03)}}
.bossDexSupport{border-top:1px solid rgba(255,255,255,.12);margin-top:6px;padding-top:6px;font-size:11px;color:#dfffe9;line-height:1.4}
#bossSupportText b{color:#ffe277}
@media(max-width:380px){.bossSupportGrid{gap:8px}.bossSupportCard{padding:8px;min-height:235px}.bossFrameBox{height:116px}.bossSupportBoss{width:76px;height:76px}}


/* v21.1 compact boss support + gravity puzzle */
.bossSupportGrid{
  display:grid!important;
  grid-template-columns:repeat(2,1fr)!important;
  gap:8px!important;
  margin-top:8px!important;
}
.bossSupportCard{
  min-height:150px!important;
  padding:8px!important;
  border-radius:18px!important;
}
.bossSupportCard.selected{
  outline:3px solid var(--gold)!important;
  box-shadow:0 0 18px rgba(255,215,108,.32)!important;
}
.bossFrameBox{
  height:78px!important;
  margin-bottom:3px!important;
}
.bossFrameBg{
  width:100%!important;
  height:100%!important;
  object-fit:contain!important;
}
.bossSupportBoss{
  width:58px!important;
  height:58px!important;
}
.bossSupportName{
  font-size:12px!important;
  line-height:1.22!important;
  margin-top:0!important;
}
.bossSupportDesc{
  font-size:10px!important;
  line-height:1.28!important;
  min-height:0!important;
  max-height:28px!important;
  overflow:hidden!important;
  margin-top:2px!important;
}
.bossSupportIcons{gap:4px!important;margin-top:5px!important}
.bossSupportIcons img{width:24px!important;height:24px!important}
.supportBadge{top:6px!important;right:6px!important;font-size:10px!important;padding:2px 6px!important}
.bossDexSupport{font-size:10px!important}

.cell.removing{
  animation:popRemove .14s ease forwards;
}
.cell.spawn{
  animation:spawnDrop .18s ease both;
}
@keyframes popRemove{
  0%{transform:scale(1);opacity:1}
  100%{transform:scale(.2);opacity:0}
}
@keyframes spawnDrop{
  0%{transform:translateY(-22px) scale(.85);opacity:0}
  100%{transform:translateY(0) scale(1);opacity:1}
}
.comboPopup{
  position:fixed;
  left:50%;
  top:42%;
  transform:translate(-50%,-50%);
  z-index:1700;
  font-size:38px;
  font-weight:1000;
  color:#ffe277;
  text-shadow:0 4px 18px rgba(0,0,0,.55);
  pointer-events:none;
  opacity:0;
}
.comboPopup.show{
  animation:comboPop .72s ease forwards;
}
@keyframes comboPop{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.72)}
  20%{opacity:1;transform:translate(-50%,-50%) scale(1.15)}
  100%{opacity:0;transform:translate(-50%,-74%) scale(1)}
}
@media(max-width:380px){
  .bossSupportCard{min-height:140px!important;padding:7px!important}
  .bossFrameBox{height:70px!important}
  .bossSupportBoss{width:52px!important;height:52px!important}
}


/* v21.2 paced effects */
.cell{transition:transform .18s ease, opacity .18s ease, filter .18s ease}
.cell.removing{
  animation:popRemoveSlow .36s ease forwards!important;
  z-index:3;
}
.cell.spawn{
  animation:spawnDropSlow .28s ease both!important;
}
@keyframes popRemoveSlow{
  0%{transform:scale(1);opacity:1;filter:brightness(1.2)}
  45%{transform:scale(1.12);opacity:1;filter:brightness(1.7)}
  100%{transform:scale(.18);opacity:0;filter:brightness(2)}
}
@keyframes spawnDropSlow{
  0%{transform:translateY(-30px) scale(.82);opacity:0}
  100%{transform:translateY(0) scale(1);opacity:1}
}
.comboPopup.show{
  animation:comboPop .95s ease forwards!important;
}
.skillOverlay.show,.bossCutinOverlay.show{
  pointer-events:auto;
}

/* v22.1 stable gravity: only changed cells animate */
.cell.spawn{
  animation:spawnDropStable .24s ease both!important;
}
@keyframes spawnDropStable{
  0%{transform:translateY(-26px) scale(.86);opacity:0}
  100%{transform:translateY(0) scale(1);opacity:1}
}
.cell.fell{
  animation:fallSettleStable .18s ease both;
}
@keyframes fallSettleStable{
  0%{transform:translateY(-10px)}
  100%{transform:translateY(0)}
}


/* v22.2 UI cleanup: previous button assets + compact support */
.logo,
.sub,
.titleTextRemoved {
  display: none !important;
}
.titlePad {
  gap: 8px !important;
}
.titleBox {
  margin-bottom: 4px !important;
}
.titleBox img {
  object-fit: contain !important;
}
.textStartBtn {
  min-height: 60px !important;
  border-radius: 18px !important;
  background: linear-gradient(180deg,#fff4a7,#ff9acb) !important;
  border: 3px solid rgba(255,226,119,.95) !important;
  box-shadow: 0 8px 0 rgba(138,82,0,.42), 0 14px 28px rgba(0,0,0,.22) !important;
  color: #5a3512 !important;
  font-size: 22px !important;
  font-weight: 1000 !important;
  text-shadow: 0 2px 0 rgba(255,255,255,.62) !important;
}
.textStartBtn span {
  display: block;
}
.titleImageBtns {
  grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  gap: 10px 12px !important;
  padding: 10px !important;
}
.imageMenuBtn {
  background: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  padding: 0 !important;
  min-height: 78px !important;
  display: grid !important;
  place-items: center !important;
}
.imageMenuBtn img {
  width: 100% !important;
  max-width: 285px !important;
  height: auto !important;
  object-fit: contain !important;
  filter: drop-shadow(0 7px 10px rgba(0,0,0,.34)) !important;
}
.ratingPreview {
  display: none !important;
}
.compactHelpBtn {
  margin-top: 8px !important;
  min-height: 42px !important;
  font-size: 13px !important;
}
.ratingHelpPageImg {
  width: 100% !important;
  max-width: 720px !important;
  display: block !important;
  margin: 12px auto 0 !important;
  border-radius: 22px !important;
  box-shadow: 0 16px 34px rgba(0,0,0,.3) !important;
}

/* support now behaves as small sub-panel under character selection */
.bossSupportGrid {
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 7px !important;
  margin-top: 8px !important;
}
.bossSupportCard {
  min-height: 112px !important;
  padding: 6px !important;
  border-radius: 15px !important;
}
.bossFrameBox {
  height: 54px !important;
  margin-bottom: 1px !important;
}
.bossSupportBoss {
  width: 40px !important;
  height: 40px !important;
}
.bossSupportName {
  font-size: 10px !important;
  line-height: 1.1 !important;
}
.bossSupportDesc {
  font-size: 8.5px !important;
  line-height: 1.15 !important;
  min-height: 0 !important;
  max-height: 22px !important;
  overflow: hidden !important;
}
.bossSupportIcons {
  gap: 3px !important;
  margin-top: 3px !important;
}
.bossSupportIcons img {
  width: 18px !important;
  height: 18px !important;
}
.supportBadge {
  top: 4px !important;
  right: 4px !important;
  font-size: 8px !important;
  padding: 1px 5px !important;
}
#bossSupportText {
  font-size: 12px !important;
  line-height: 1.35 !important;
}
@media(max-width:520px) {
  .titleImageBtns {
    gap: 7px !important;
    padding: 8px !important;
  }
  .imageMenuBtn {
    min-height: 64px !important;
  }
  .imageMenuBtn img {
    max-width: 235px !important;
  }
  .textStartBtn {
    min-height: 54px !important;
    font-size: 19px !important;
  }
  .bossSupportGrid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
  }
}


/* v22.3 high score */
.titleHighScoreBtn{
  width:min(360px,92%);
  margin:10px auto 0;
  min-height:46px!important;
  border-radius:999px!important;
  font-weight:1000!important;
}
.resultHighScoreBox{
  margin-top:10px;
  padding:10px;
  border-radius:16px;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.16);
  font-weight:900;
  color:#ffe277;
}
.resultHighScoreBox .newRecord{
  color:#fff;
  display:inline-block;
  background:linear-gradient(135deg,#ff69b4,#ffd76c);
  border-radius:999px;
  padding:4px 9px;
  margin:2px 4px 4px 0;
  box-shadow:0 4px 14px rgba(255,105,180,.32);
}
.highScoreStats{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:8px;
  margin-top:10px;
}
.highScoreStat{
  border-radius:18px;
  padding:12px;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.16);
  box-shadow:0 8px 22px rgba(0,0,0,.16);
}
.highScoreStat small{
  display:block;
  color:rgba(255,255,255,.72);
  font-size:11px;
  font-weight:900;
}
.highScoreStat b{
  display:block;
  color:#ffe277;
  font-size:20px;
  margin-top:4px;
}
.highScoreList{
  display:grid;
  gap:9px;
  margin-top:10px;
}
.highScoreStage{
  display:grid;
  grid-template-columns:42px 1fr auto;
  gap:9px;
  align-items:center;
  border-radius:18px;
  padding:10px;
  background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.15);
}
.highScoreStage .stageIcon{
  width:42px;height:42px;border-radius:14px;
  display:grid;place-items:center;
  background:rgba(255,255,255,.12);
  font-size:24px;
}
.highScoreStage .stageName{font-weight:1000;color:#fff;font-size:14px;}
.highScoreStage .stageMeta{font-size:11px;color:rgba(255,255,255,.72);line-height:1.35;margin-top:2px;}
.highScoreStage .stageScore{text-align:right;font-weight:1000;color:#ffe277;font-size:14px;}
.highScoreStage .stageRank{font-size:10px;color:#fff;background:rgba(0,0,0,.32);border-radius:999px;padding:2px 7px;display:inline-block;margin-top:4px;}
@media(max-width:420px){.highScoreStats{grid-template-columns:1fr 1fr}.highScoreStat b{font-size:17px}.highScoreStage{grid-template-columns:36px 1fr}.highScoreStage .stageScore{grid-column:2;text-align:left}.highScoreStage .stageIcon{width:36px;height:36px;font-size:21px}}


/* v22.3.1 highscore UI */
.highscoreHeroImg{
  margin: 6px auto 12px;
  text-align:center;
}
.highscoreHeroImg img{
  width:100%;
  max-width:780px;
  border-radius:24px;
  box-shadow:0 16px 42px rgba(0,0,0,.35);
  border:1px solid rgba(255,255,255,.20);
}
.recordGrid,.modeRecordGrid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:10px;
}
.recordCard{
  display:grid;
  grid-template-columns:50px 1fr;
  gap:9px;
  align-items:center;
  min-height:74px;
  padding:10px;
  border-radius:18px;
  background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.16);
}
.recordCard img{
  width:48px;
  height:48px;
  object-fit:contain;
  filter:drop-shadow(0 4px 6px rgba(0,0,0,.28));
}
.recordLabel{
  font-size:11px;
  color:rgba(255,255,255,.74);
  font-weight:900;
}
.recordValue{
  font-size:18px;
  color:#ffe277;
  font-weight:1000;
  line-height:1.1;
}
.stageRecordList{
  display:grid;
  gap:10px;
}
.stageRecordCard{
  display:grid;
  grid-template-columns:58px 1fr;
  gap:10px;
  align-items:center;
  border-radius:18px;
  padding:10px;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.15);
}
.stageRecordCard.perfect{
  border-color:rgba(255,215,108,.78);
  box-shadow:0 0 20px rgba(255,215,108,.22);
}
.stageRecordIcon img{
  width:56px;
  height:56px;
  object-fit:contain;
  filter:drop-shadow(0 4px 7px rgba(0,0,0,.28));
}
.stageRecordName{
  font-size:14px;
  color:#ffe277;
  font-weight:1000;
}
.stageRecordBest{
  font-size:16px;
  color:#fff;
  font-weight:1000;
}
.stageRecordRank{
  font-size:12px;
  color:#dfffe9;
  font-weight:900;
}
.stageRecordBoss{
  font-size:11px;
  color:rgba(255,255,255,.72);
}
.newRecordBox{
  display:none;
  text-align:center;
  margin:10px 0;
}
.newRecordBox.show{
  display:block;
  animation:newRecordPop .85s ease both;
}
.newRecordBox img{
  width:100%;
  max-width:560px;
  border-radius:20px;
  box-shadow:0 12px 32px rgba(0,0,0,.36);
}
#newRecordText{
  margin-top:6px;
  font-size:16px;
  font-weight:1000;
  color:#ffe277;
}
@keyframes newRecordPop{
  0%{opacity:0;transform:scale(.88) translateY(8px)}
  40%{opacity:1;transform:scale(1.04) translateY(0)}
  100%{opacity:1;transform:scale(1)}
}
.resultHighScoreBox .newRecord{
  display:none;
}
.titleHighScoreBtn{
  min-height:54px!important;
  border-radius:18px!important;
  background:linear-gradient(180deg,#fff1a6,#f4ad37)!important;
  color:#5a2d03!important;
  font-weight:1000!important;
  box-shadow:0 8px 20px rgba(0,0,0,.25)!important;
}
@media(max-width:520px){
  .recordGrid,.modeRecordGrid{grid-template-columns:1fr}
  .recordCard{min-height:66px}
  .recordValue{font-size:16px}
}

/* v22.4 login bonus / present box / player rank */
.playerRankMini,.playerRankPanel,.playerExpResult{
  border-radius:18px;
  padding:10px;
  background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.16);
  margin-top:8px;
}
.playerRankMini{max-width:420px;margin:8px auto 0}
.rankTitle{color:#ffe277;font-size:13px;font-weight:1000}
.rankExpText{color:rgba(255,255,255,.76);font-size:11px;font-weight:800}
.rankBar{height:8px;border-radius:99px;background:rgba(0,0,0,.28);overflow:hidden;margin-top:6px}
.rankBar span{display:block;height:100%;width:0%;background:linear-gradient(90deg,#ffe277,#ff8fd4)}

.heroBannerWrap{margin:4px auto 12px}
.heroBannerImage{display:block;width:min(100%,720px);margin:0 auto;height:auto;filter:drop-shadow(0 16px 32px rgba(0,0,0,.28))}
.loginStatusRow{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin:0 0 12px}
.loginStatPill{padding:10px 14px;border-radius:999px;background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.18);color:#fff;font-weight:900;font-size:13px;box-shadow:0 10px 24px rgba(0,0,0,.18)}
.todayRewardCard{
  display:grid;
  grid-template-columns:minmax(124px,160px) 1fr;
  gap:14px;
  align-items:center;
  border-radius:24px;
  padding:16px;
  background:linear-gradient(180deg, rgba(255,255,255,.12), rgba(255,255,255,.06));
  border:1px solid rgba(255,255,255,.20);
  box-shadow:0 16px 32px rgba(0,0,0,.20);
}
.todayRewardCard.special{border-color:rgba(255,215,108,.9);box-shadow:0 0 24px rgba(255,215,108,.24), 0 18px 36px rgba(0,0,0,.20)}
.todayFrameWrap,.dailyFrameWrap{position:relative}
.todayFrame{display:block;width:100%;height:auto;filter:drop-shadow(0 10px 18px rgba(0,0,0,.22))}
.todayRewardIcon{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);width:42%;height:auto;object-fit:contain;filter:drop-shadow(0 8px 12px rgba(0,0,0,.28))}
.todayRewardMeta{display:flex;flex-direction:column;gap:6px}
.todayRewardTitle{color:#ffe277;font-size:15px;font-weight:1000;letter-spacing:.03em}
.todayRewardLabel{color:#fff;font-size:21px;font-weight:1000;line-height:1.25}
.todayRewardDesc{color:rgba(255,255,255,.82);font-size:12px;font-weight:800}
.todayRewardState{font-size:12px;color:rgba(255,255,255,.82);font-weight:900;margin-top:4px}
.dailyRewardGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.dailyRewardCard{
  min-height:194px;
  border-radius:20px;
  padding:8px 8px 10px;
  text-align:center;
  background:linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.05));
  border:1px solid rgba(255,255,255,.14);
  box-shadow:0 10px 24px rgba(0,0,0,.16);
}
.dailyRewardCard.today{border-color:#ffe277;box-shadow:0 0 18px rgba(255,215,108,.28), 0 10px 24px rgba(0,0,0,.16)}
.dailyRewardCard.claimed{opacity:.72;filter:grayscale(.18)}
.dailyRewardCard.special{background:linear-gradient(180deg, rgba(255,225,120,.20), rgba(255,130,80,.10))}
.dailyFrame{display:block;width:100%;height:auto}
.dailyRewardIcon{position:absolute;left:50%;top:44%;transform:translate(-50%,-50%);width:36%;height:auto;object-fit:contain;filter:drop-shadow(0 8px 10px rgba(0,0,0,.24))}
.dailyRewardChip{margin-top:6px;font-size:12px;font-weight:1000;color:#ffe277}
.dailyRewardLabel{font-size:11px;color:rgba(255,255,255,.82);line-height:1.35;font-weight:800;margin-top:3px}
.dailyRewardStateBadge{display:inline-block;margin-top:6px;padding:4px 8px;border-radius:999px;font-size:10px;font-weight:1000;background:rgba(255,255,255,.12);color:#fff}
.dailyRewardCard.today .dailyRewardStateBadge{background:rgba(255,226,119,.24);color:#ffe277}
.presentList{display:grid;gap:12px}
.presentCard{
  display:grid;
  grid-template-columns:74px 1fr auto;
  gap:12px;
  align-items:center;
  padding:12px;
  border-radius:18px;
  background:linear-gradient(180deg, rgba(255,255,255,.11), rgba(255,255,255,.06));
  border:1px solid rgba(255,255,255,.16);
  box-shadow:0 12px 26px rgba(0,0,0,.18);
}
.presentIcon{width:72px;height:72px;object-fit:contain;filter:drop-shadow(0 8px 10px rgba(0,0,0,.22))}
.presentTitle{color:#ffe277;font-size:15px;font-weight:1000}
.presentDesc{color:rgba(255,255,255,.74);font-size:11px;line-height:1.4}
.presentReward{color:#fff;font-size:13px;font-weight:900;margin-top:4px}
.presentDate{color:rgba(255,255,255,.54);font-size:10px;margin-top:4px}
.emptyPresent{padding:18px;text-align:center;border-radius:20px;background:rgba(255,255,255,.08);color:rgba(255,255,255,.72)}
.rewardGetOverlay,.rankUpOverlay{
  position:fixed;
  inset:0;
  z-index:2100;
  display:none;
  place-items:center;
  background:rgba(15,7,30,.72);
  padding:16px;
}
.rewardGetOverlay.show,.rankUpOverlay.show{display:grid;animation:rewardFade 1.15s ease forwards}
.rewardGetCard,.rankUpCard{
  width:min(680px,94vw);
  text-align:center;
  border-radius:30px;
  padding:16px 18px 20px;
  background:linear-gradient(180deg, rgba(255,226,119,.22), rgba(255,110,180,.14));
  border:2px solid rgba(255,215,108,.75);
  box-shadow:0 28px 88px rgba(0,0,0,.5);
}
.overlayBanner{display:block;width:min(100%,620px);margin:0 auto 10px;height:auto;filter:drop-shadow(0 12px 24px rgba(0,0,0,.22))}
.rewardGetIcon{width:116px;height:116px;object-fit:contain;filter:drop-shadow(0 8px 12px rgba(0,0,0,.26))}
.rewardGetTitle,.rankUpTitle{font-size:28px;color:#ffe277;font-weight:1000}
.rewardGetDesc,.rankUpDesc{font-size:14px;color:#fff;font-weight:900;margin-top:6px;line-height:1.5}
.rankUpLevel{font-size:22px;color:#fff;font-weight:1000}
.rankUpSub{font-size:13px;color:rgba(255,255,255,.84);font-weight:900;margin-top:8px}
@keyframes rewardFade{
  0%{opacity:0;transform:scale(.90)}
  18%{opacity:1;transform:scale(1.04)}
  78%{opacity:1;transform:scale(1)}
  100%{opacity:0;transform:scale(1.04)}
}
@media(max-width:700px){
  .dailyRewardGrid{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:520px){
  .todayRewardCard{grid-template-columns:1fr;justify-items:center;text-align:center}
  .todayFrameWrap{width:min(54vw,220px)}
  .todayRewardMeta{align-items:center}
  .dailyRewardGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .presentCard{grid-template-columns:60px 1fr;gap:8px}
  .presentCard .mini{grid-column:1 / -1}
  .presentIcon{width:58px;height:58px}
  .loginStatusRow{gap:8px}
  .loginStatPill{font-size:12px;padding:8px 12px}
}


/* v22.5 item drop result UI */
.resultDropBox{
  display:none;
  margin-top:12px;
  padding:12px;
  border-radius:20px;
  background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.06));
  border:1px solid rgba(255,255,255,.18);
  box-shadow:0 12px 26px rgba(0,0,0,.18);
}
.resultDropBox.show{display:block;animation:dropBoxPop .35s ease both}
.dropTitle{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:8px;
  color:#ffe277;
  font-size:15px;
  font-weight:1000;
  margin-bottom:8px;
}
.dropSub{
  color:rgba(255,255,255,.72);
  font-size:11px;
  font-weight:800;
}
.dropGrid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
}
.dropCard{
  position:relative;
  display:grid;
  grid-template-columns:54px 1fr;
  gap:8px;
  align-items:center;
  min-height:68px;
  padding:8px;
  border-radius:16px;
  background:rgba(255,255,255,.09);
  border:1px solid rgba(255,255,255,.16);
  overflow:hidden;
}
.dropCard.rare{
  border-color:rgba(130,210,255,.65);
  box-shadow:0 0 18px rgba(130,210,255,.18);
}
.dropCard.sr{
  border-color:rgba(255,215,108,.85);
  box-shadow:0 0 22px rgba(255,215,108,.24);
}
.dropCard img{
  width:52px;
  height:52px;
  object-fit:contain;
  filter:drop-shadow(0 6px 8px rgba(0,0,0,.25));
}
.dropName{
  color:#fff;
  font-size:13px;
  font-weight:1000;
  line-height:1.25;
}
.dropAmount{
  color:#ffe277;
  font-size:15px;
  font-weight:1000;
}
.dropRarity{
  display:inline-block;
  margin-top:3px;
  padding:2px 7px;
  border-radius:999px;
  font-size:10px;
  font-weight:1000;
  background:rgba(255,255,255,.12);
  color:rgba(255,255,255,.85);
}
.dropCard.rare .dropRarity{color:#9ee6ff;background:rgba(130,210,255,.16)}
.dropCard.sr .dropRarity{color:#ffe277;background:rgba(255,215,108,.18)}
.dropEmpty{
  padding:10px;
  border-radius:16px;
  background:rgba(255,255,255,.07);
  color:rgba(255,255,255,.72);
  font-weight:800;
  text-align:center;
  font-size:12px;
}
@keyframes dropBoxPop{
  from{opacity:0;transform:translateY(8px) scale(.98)}
  to{opacity:1;transform:translateY(0) scale(1)}
}
@media(max-width:520px){
  .dropGrid{grid-template-columns:1fr}
}

/* v22.6 difficulty / boss attack / notification */
.difficultyGrid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
}
.difficultyBtn{
  position:relative;
  border:1px solid rgba(255,255,255,.16);
  background:rgba(255,255,255,.08);
  color:#fff;
  border-radius:18px;
  padding:10px;
  text-align:left;
  font-weight:900;
  box-shadow:0 8px 20px rgba(0,0,0,.16);
}
.difficultyBtn.active{
  border-color:#ffe277;
  box-shadow:0 0 18px rgba(255,226,119,.25), 0 8px 20px rgba(0,0,0,.16);
  background:linear-gradient(180deg,rgba(255,226,119,.18),rgba(255,255,255,.08));
}
.diffName{font-size:15px;color:#ffe277;font-weight:1000}
.diffMeta{font-size:12px;color:#fff;margin-top:2px}
.diffDesc{font-size:10px;color:rgba(255,255,255,.70);margin-top:4px;line-height:1.35}
.bossAttackCounter{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin:6px 0 5px;
  padding:6px 10px;
  min-width:118px;
  border-radius:999px;
  background:rgba(255,226,119,.16);
  color:#ffe277;
  border:1px solid rgba(255,226,119,.38);
  font-size:12px;
  font-weight:1000;
  box-shadow:0 8px 18px rgba(0,0,0,.14);
}
.bossAttackCounter.danger{
  background:rgba(255,80,80,.18);
  color:#ffb0b0;
  border-color:rgba(255,80,80,.55);
  animation:counterPulse .8s infinite;
}
.bossAttackCounter.attack{
  background:rgba(255,40,40,.24);
  color:#fff;
  border-color:rgba(255,80,80,.78);
}
@keyframes counterPulse{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.045)}
}
.damageFlash{
  position:fixed;
  inset:0;
  pointer-events:none;
  background:rgba(255,40,40,0);
  z-index:2200;
}
.damageFlash.show{animation:damageFlashAnim .45s ease}
@keyframes damageFlashAnim{
  0%{background:rgba(255,40,40,0)}
  25%{background:rgba(255,40,40,.38)}
  100%{background:rgba(255,40,40,0)}
}
.damagePopup{
  position:fixed;
  left:50%;
  top:34%;
  transform:translate(-50%,-50%);
  pointer-events:none;
  z-index:2250;
  font-size:34px;
  font-weight:1000;
  color:#ff6464;
  text-shadow:0 4px 0 #4a0000,0 0 18px rgba(255,0,0,.55);
  opacity:0;
}
.damagePopup.show{animation:damagePopupAnim .78s ease}
@keyframes damagePopupAnim{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.7)}
  20%{opacity:1;transform:translate(-50%,-50%) scale(1.14)}
  100%{opacity:0;transform:translate(-50%,-78%) scale(1)}
}
.hpDamageShake{animation:hpDamageShake .42s ease}
@keyframes hpDamageShake{
  0%,100%{transform:translateX(0)}
  20%{transform:translateX(-8px)}
  40%{transform:translateX(7px)}
  60%{transform:translateX(-5px)}
  80%{transform:translateX(4px)}
}
.notifyBadge{
  position:absolute;
  right:-5px;
  top:-6px;
  min-width:20px;
  height:20px;
  padding:0 5px;
  border-radius:999px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:11px;
  font-weight:1000;
  color:#fff;
  background:#ff3358;
  border:2px solid #fff;
  box-shadow:0 4px 12px rgba(0,0,0,.28);
  z-index:5;
}
.btn,.imageMenuBtn,.imageStartBtn,.mini,.cta{position:relative}
.missionClaimAllBtn{margin:10px 0 12px}
.endlessResultBadge{
  display:inline-block;
  margin:8px auto 6px;
  padding:8px 16px;
  border-radius:999px;
  background:linear-gradient(90deg,rgba(255,126,70,.22),rgba(255,226,119,.20));
  border:1px solid rgba(255,226,119,.48);
  color:#ffe277;
  font-weight:1000;
}
.dropCard img,.itemIconImg{
  background:rgba(255,255,255,.08);
  border-radius:14px;
}
@media(max-width:520px){
  .difficultyGrid{grid-template-columns:1fr}
  .bossAttackCounter{font-size:11px;min-width:96px;padding:5px 8px}
  .damagePopup{font-size:28px}
}


/* v22.6.1 skill ready UX */
.skillBig{
  position:relative;
  overflow:visible;
  transition:transform .18s ease, box-shadow .18s ease, filter .18s ease;
  isolation:isolate;
}
.skillBig.skill-near{
  box-shadow:
    0 6px 0 rgba(89,57,0,.32),
    0 0 10px rgba(255,226,119,.35),
    0 0 22px rgba(255,226,119,.18);
  filter:brightness(1.08);
}
.skillBig.skill-ready{
  animation:skillReadyPulse 1.25s ease-in-out infinite;
  box-shadow:
    0 6px 0 rgba(89,57,0,.32),
    0 0 14px rgba(255,226,119,.85),
    0 0 32px rgba(255,178,80,.55),
    0 0 52px rgba(255,130,220,.28);
  filter:brightness(1.2) saturate(1.18);
}
.skillBig.skill-using{
  transform:scale(.96);
  filter:brightness(.95);
}
.skillBig.skill-ready-burst{
  animation:skillReadyBurst .48s ease both;
}
.skillReadyLabel{
  position:absolute;
  left:50%;
  top:-18px;
  transform:translateX(-50%) scale(.85);
  padding:3px 9px;
  border-radius:999px;
  background:linear-gradient(180deg,#fff7b8,#ffb83d);
  color:#4b2700;
  font-size:11px;
  font-weight:1000;
  letter-spacing:.04em;
  border:2px solid #fff;
  box-shadow:0 4px 12px rgba(0,0,0,.25),0 0 18px rgba(255,226,119,.7);
  opacity:0;
  pointer-events:none;
  z-index:4;
  white-space:nowrap;
}
.skillBig.skill-ready .skillReadyLabel{
  opacity:1;
  animation:skillReadyLabelPop 1.25s ease-in-out infinite;
}
.skillSparkle{
  position:absolute;
  width:8px;
  height:8px;
  border-radius:50%;
  background:#fff6a8;
  box-shadow:
    0 0 8px rgba(255,246,168,.95),
    0 0 14px rgba(255,200,70,.65);
  opacity:0;
  pointer-events:none;
  z-index:3;
}
.skillSparkle:after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:16px;
  height:2px;
  transform:translate(-50%,-50%);
  background:rgba(255,255,210,.8);
  border-radius:99px;
}
.skillSparkle.s1{left:10%;top:18%}
.skillSparkle.s2{right:12%;top:22%}
.skillSparkle.s3{left:48%;bottom:12%}
.skillBig.skill-near .skillSparkle.s1{
  animation:skillSparkleFloat 1.7s ease-in-out infinite;
}
.skillBig.skill-ready .skillSparkle.s1{
  animation:skillSparkleFloat 1.4s ease-in-out infinite;
}
.skillBig.skill-ready .skillSparkle.s2{
  animation:skillSparkleFloat 1.7s ease-in-out infinite .25s;
}
.skillBig.skill-ready .skillSparkle.s3{
  animation:skillSparkleFloat 1.6s ease-in-out infinite .45s;
}
@keyframes skillReadyPulse{
  0%,100%{transform:scale(1)}
  50%{transform:scale(1.045)}
}
@keyframes skillReadyLabelPop{
  0%,100%{transform:translateX(-50%) scale(.94)}
  50%{transform:translateX(-50%) scale(1.08)}
}
@keyframes skillSparkleFloat{
  0%{opacity:0;transform:translateY(6px) scale(.5) rotate(0deg)}
  35%{opacity:1;transform:translateY(0) scale(1) rotate(35deg)}
  100%{opacity:0;transform:translateY(-15px) scale(.5) rotate(70deg)}
}
@keyframes skillReadyBurst{
  0%{transform:scale(1);box-shadow:0 6px 0 rgba(89,57,0,.32),0 0 0 rgba(255,226,119,0)}
  45%{
    transform:scale(1.12);
    box-shadow:
      0 6px 0 rgba(89,57,0,.32),
      0 0 22px rgba(255,255,180,.95),
      0 0 52px rgba(255,226,119,.85),
      0 0 80px rgba(255,120,220,.42);
  }
  100%{transform:scale(1)}
}


/* v22.6.2 item icon update */
.dropCard img,
.itemIconImg,
.presentIcon{
  object-fit:contain;
  padding:4px;
  background:rgba(255,255,255,.08);
  border-radius:14px;
  box-sizing:border-box;
}
.dropCard img{
  width:60px;
  height:60px;
}
.itemIconImg{
  width:66px;
  height:66px;
}


/* v22.7 battle no-scroll */
body.battle-active{
  overflow:hidden;
  height:100dvh;
  overscroll-behavior:none;
}
body.battle-active #gameScreen{
  height:100dvh;
  overflow:hidden;
}
body.battle-active #gameScreen .pad{
  height:100dvh;
  overflow:hidden;
  display:grid;
  grid-template-rows:auto auto auto 1fr auto;
  gap:6px;
  padding:6px 10px calc(8px + env(safe-area-inset-bottom));
  box-sizing:border-box;
}
body.battle-active #gameScreen .topbar{
  min-height:0;
  padding:7px 10px;
  margin:0;
}
body.battle-active .bossArea{
  margin:2px 0 4px;
  padding:8px;
  min-height:0;
  gap:8px;
}
body.battle-active .bossPortraitWrap{
  width:68px;
  height:68px;
  border-radius:16px;
}
body.battle-active .bossName{
  font-size:14px;
  margin-bottom:2px;
}
body.battle-active .bossAttackCounter{
  margin:3px 0;
  padding:4px 8px;
  font-size:11px;
}
body.battle-active .helper{
  line-height:1.18;
}
body.battle-active .hud{
  gap:6px;
  margin:4px 0;
}
body.battle-active .stat{
  padding:7px 4px;
  border-radius:16px;
}
body.battle-active .stat small{
  font-size:10px;
}
body.battle-active .stat span{
  font-size:20px;
}
body.battle-active .bars{
  gap:4px;
  margin:4px 0;
}
body.battle-active .bar{
  height:12px;
}
body.battle-active .board{
  width:min(92vw,46dvh,430px);
  height:min(92vw,46dvh,430px);
  margin:4px auto;
  gap:5px;
  padding:8px;
  align-self:center;
  box-sizing:border-box;
}
body.battle-active .tile img{
  width:100%;
  height:100%;
  object-fit:cover;
}
body.battle-active .battleBottom{
  position:static;
  margin-top:4px;
  padding:8px;
  border-radius:18px;
  gap:8px;
}
body.battle-active .skillBig,
body.battle-active .shuffleBig{
  padding:10px 8px;
  min-height:46px;
}
body.battle-active .gaugeText{
  font-size:11px;
  line-height:1.2;
}
@media(max-height:760px){
  body.battle-active #gameScreen .pad{gap:4px;padding-top:5px}
  body.battle-active .bossPortraitWrap{width:56px;height:56px}
  body.battle-active .bossArea{padding:6px}
  body.battle-active .board{
    width:min(92vw,42dvh,390px);
    height:min(92vw,42dvh,390px);
    padding:6px;
    gap:4px;
  }
  body.battle-active .skillBig,
  body.battle-active .shuffleBig{min-height:42px;padding:9px 6px}
  body.battle-active .stat{padding:5px 3px}
  body.battle-active .stat span{font-size:18px}
}

/* v22.7 item drop deluxe fx */
.dropFxBox{
  position:relative;
  overflow:hidden;
  border-radius:24px;
  padding:12px;
  background:
    linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.04)),
    radial-gradient(circle at 50% 0%,rgba(255,226,119,.18),transparent 55%);
  border:1px solid rgba(255,226,119,.28);
  box-shadow:0 16px 38px rgba(0,0,0,.24);
}
.dropFxBox:before{
  content:"";
  position:absolute;
  inset:-20%;
  background:url("game_v22_7_drop_assets/drop_fx_sparkle.webp") center/cover no-repeat;
  opacity:.18;
  pointer-events:none;
}
.dropFxBanner{
  position:relative;
  z-index:1;
  display:block;
  width:min(100%,680px);
  margin:0 auto 8px;
  border-radius:16px;
  filter:drop-shadow(0 10px 18px rgba(0,0,0,.24));
}
.dropFxChestWrap{
  position:relative;
  z-index:1;
  height:118px;
  margin:0 auto 8px;
  overflow:hidden;
  border-radius:20px;
}
.dropFxChest{
  width:100%;
  height:100%;
  object-fit:cover;
  animation:dropChestPop .7s ease both;
}
.dropFxPanel{
  position:relative;
  z-index:1;
  border-radius:20px;
  padding:10px;
  background:rgba(15,12,40,.42);
  border:1px solid rgba(255,255,255,.16);
}
.dropFxTitle{
  text-align:center;
  font-size:18px;
  font-weight:1000;
  color:#ffe277;
  letter-spacing:.08em;
  text-shadow:0 2px 8px rgba(0,0,0,.4);
  margin-bottom:8px;
}
.dropFxGrid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
}
.dropFxCard{
  position:relative;
  min-height:134px;
  border-radius:18px;
  display:grid;
  place-items:center;
  padding:6px;
  animation:dropCardPop .42s ease both;
}
.dropFrame{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:contain;
  z-index:0;
  pointer-events:none;
}
.dropItemIcon{
  position:relative;
  z-index:1;
  width:62px;
  height:62px;
  object-fit:contain;
  filter:drop-shadow(0 8px 10px rgba(0,0,0,.24));
}
.dropItemName{
  position:relative;
  z-index:1;
  font-size:11px;
  font-weight:1000;
  color:#fff;
  text-align:center;
  line-height:1.2;
  text-shadow:0 2px 4px rgba(0,0,0,.4);
}
.dropItemAmount{
  position:relative;
  z-index:1;
  font-size:15px;
  font-weight:1000;
  color:#ffe277;
}
.dropItemRarity{
  position:relative;
  z-index:1;
  font-size:9px;
  font-weight:1000;
  padding:2px 7px;
  border-radius:999px;
  color:#fff;
  background:rgba(0,0,0,.28);
}
.dropFxCard.rarity-r{filter:drop-shadow(0 0 12px rgba(120,210,255,.35))}
.dropFxCard.rarity-sr{filter:drop-shadow(0 0 16px rgba(210,130,255,.42))}
.dropFxCard.rarity-ur{filter:drop-shadow(0 0 20px rgba(255,226,119,.55))}
.dropFxFooter{
  text-align:center;
  margin-top:8px;
  color:rgba(255,255,255,.76);
  font-size:11px;
  font-weight:900;
}
@keyframes dropChestPop{
  0%{opacity:0;transform:scale(.94);filter:brightness(.7)}
  45%{opacity:1;transform:scale(1.05);filter:brightness(1.35)}
  100%{opacity:1;transform:scale(1);filter:brightness(1)}
}
@keyframes dropCardPop{
  0%{opacity:0;transform:translateY(10px) scale(.82)}
  70%{opacity:1;transform:translateY(-2px) scale(1.04)}
  100%{opacity:1;transform:translateY(0) scale(1)}
}
@media(max-width:520px){
  .dropFxChestWrap{height:96px}
  .dropFxGrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dropFxCard{min-height:118px}
  .dropItemIcon{width:54px;height:54px}
  .dropItemName{font-size:10px}
}


/* v22.7.1 title compact + gacha fx */
body.title-active{
  overflow:hidden;
  height:100dvh;
  overscroll-behavior:none;
}
body.title-active #titleScreen{
  height:100dvh;
  overflow:hidden;
}
body.title-active #titleScreen .titlePad{
  height:100dvh;
  overflow:hidden;
  display:grid;
  grid-template-rows:minmax(0,34dvh) auto minmax(0,1fr) auto;
  gap:8px;
  padding:8px 12px calc(8px + env(safe-area-inset-bottom));
  box-sizing:border-box;
}
body.title-active .titleBox{
  height:100%;
  min-height:0;
  margin:0;
  border-radius:24px;
}
body.title-active .titleBox img{
  width:100%;
  height:100%;
  object-fit:cover;
  object-position:center center;
}
body.title-active .textStartBtn{
  margin:0 auto;
  min-height:54px;
}
body.title-active .titleImageBtns{
  margin:0;
  gap:7px;
  padding:8px;
  min-height:0;
  align-self:start;
}
body.title-active .imageMenuBtn img{
  max-height:86px;
  object-fit:contain;
}
.titleSubBtns{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin:0;
}
body.title-active .playerRankMini{
  display:none;
}
@media(max-height:760px){
  body.title-active #titleScreen .titlePad{
    grid-template-rows:minmax(0,28dvh) auto minmax(0,1fr) auto;
    gap:6px;
    padding-top:6px;
  }
  body.title-active .textStartBtn{min-height:48px}
  body.title-active .titleImageBtns{gap:5px;padding:6px}
  body.title-active .imageMenuBtn img{max-height:72px}
}

/* gacha screen deluxe */
.gachaStage{
  position:relative;
  width:min(86vw,420px);
  height:min(58vw,280px);
  margin:12px auto 12px;
  border-radius:28px;
  overflow:hidden;
  border:1px solid rgba(255,226,119,.26);
  box-shadow:0 18px 42px rgba(0,0,0,.24),0 0 28px rgba(160,100,255,.18);
  display:grid;
  place-items:center;
}
.gachaBgImg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:.82;
}
.gachaCircleImg{
  position:absolute;
  width:72%;
  height:auto;
  opacity:.65;
  mix-blend-mode:screen;
  animation:gachaCircleSpin 12s linear infinite;
  filter:drop-shadow(0 0 18px rgba(255,226,119,.35));
}
.gachaStage .gachaOrb{
  position:relative;
  z-index:2;
  width:120px;
  height:120px;
  margin:0;
}
.gachaFxOverlay{
  position:fixed;
  inset:0;
  z-index:2600;
  display:none;
  align-items:center;
  justify-content:center;
  background:rgba(5,4,20,.74);
  backdrop-filter:blur(4px);
  pointer-events:auto;
}
.gachaFxOverlay.show{display:flex}
.gachaFxCard{
  width:min(86vw,430px);
  aspect-ratio:1/1;
  border-radius:36px;
  position:relative;
  display:grid;
  place-items:center;
  border:2px solid rgba(255,226,119,.65);
  box-shadow:0 0 30px rgba(255,226,119,.45),0 0 80px rgba(150,80,255,.45);
  overflow:hidden;
  background:#15112f;
}
.gachaFxBg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  opacity:.72;
  filter:saturate(1.1) brightness(.95);
}
.gachaFxCircle{
  position:absolute;
  width:82%;
  height:auto;
  opacity:.85;
  mix-blend-mode:screen;
  animation:gachaCircleSpin 2.4s linear infinite;
  filter:drop-shadow(0 0 24px rgba(255,226,119,.55));
}
.gachaFxOrb{
  position:absolute;
  width:44%;
  height:44%;
  border-radius:50%;
  background:radial-gradient(circle at 35% 30%,#fff,#ff9df8 22%,#8edcff 55%,#ffe277);
  box-shadow:0 0 30px rgba(255,255,255,.75),0 0 70px rgba(255,130,255,.55);
  animation:gachaOrbPulse .9s ease-in-out infinite;
}
.gachaFxCardBack{
  position:absolute;
  width:42%;
  height:auto;
  border-radius:18px;
  opacity:0;
  transform:translateY(30px) scale(.78) rotateY(90deg);
  filter:drop-shadow(0 14px 20px rgba(0,0,0,.32));
}
.gachaFxText{
  position:absolute;
  bottom:24px;
  color:#ffe277;
  font-size:18px;
  font-weight:1000;
  text-shadow:0 2px 8px rgba(0,0,0,.4);
}
.gachaFxRareText{
  position:absolute;
  top:24px;
  left:50%;
  transform:translateX(-50%) scale(.88);
  opacity:0;
  color:#fff7c3;
  font-size:25px;
  font-weight:1000;
  white-space:nowrap;
  text-shadow:0 4px 12px rgba(0,0,0,.5),0 0 20px rgba(255,226,119,.7);
}
.gachaFxOverlay.phase-open .gachaFxOrb{
  animation:gachaOrbOpen .45s ease both;
}
.gachaFxOverlay.phase-open .gachaFxCardBack{
  animation:gachaCardBackIn .48s ease both;
}
.gachaFxOverlay.phase-reveal .gachaFxCard{
  animation:gachaRevealFlash .38s ease both;
}
.gachaFxOverlay.phase-reveal .gachaFxRareText{
  opacity:1;
  animation:gachaRarePop .38s ease both;
}
@keyframes gachaCircleSpin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}
@keyframes gachaOrbPulse{0%,100%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.08);filter:brightness(1.25)}}
@keyframes gachaOrbOpen{0%{transform:scale(1)}100%{transform:scale(1.7);filter:brightness(1.9)}}
@keyframes gachaCardBackIn{0%{opacity:0;transform:translateY(28px) scale(.78) rotateY(90deg)}100%{opacity:1;transform:translateY(0) scale(1) rotateY(0)}}
@keyframes gachaRevealFlash{0%{filter:brightness(1)}50%{filter:brightness(2.2)}100%{filter:brightness(1)}}
@keyframes gachaRarePop{0%{transform:translateX(-50%) scale(.65);opacity:0}100%{transform:translateX(-50%) scale(1);opacity:1}}
.gachaResultCard{
  position:relative;
  overflow:hidden;
  border-radius:28px;
  padding:14px;
  background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.05));
  border:1px solid rgba(255,255,255,.18);
  box-shadow:0 18px 42px rgba(0,0,0,.24);
  text-align:center;
}
.gachaResultCard.new{
  border-color:rgba(255,226,119,.8);
  box-shadow:0 0 24px rgba(255,226,119,.38),0 18px 42px rgba(0,0,0,.24);
}
.gachaResultBanner{
  display:block;
  width:100%;
  max-height:112px;
  object-fit:contain;
  margin:0 auto 8px;
}
.gachaResultChara{
  width:150px;
  height:150px;
  object-fit:cover;
  border-radius:24px;
  margin:8px auto;
  display:block;
  background:rgba(255,255,255,.1);
}
.gachaResultBadge{
  font-size:28px;
  font-weight:1000;
  color:#ffe277;
  letter-spacing:.08em;
  text-shadow:0 3px 0 rgba(80,30,0,.6);
}


/* v22.8 stage map */
#stageMapScreen{
  height:100dvh;
  overflow:hidden;
}
.stageMapPage{
  height:100dvh;
  display:grid;
  grid-template-rows:auto 1fr auto;
  gap:8px;
  padding:8px 10px calc(8px + env(safe-area-inset-bottom));
  box-sizing:border-box;
}
.mapTopbar{
  display:grid;
  grid-template-columns:auto 1fr auto;
  gap:8px;
  align-items:center;
  padding:8px 10px;
  border:1px solid var(--line);
  border-radius:18px;
  background:rgba(255,255,255,.10);
}
.mapTopbar b{
  text-align:center;
  color:#fff;
}
.stageMapWrap{
  position:relative;
  overflow:hidden;
  border-radius:28px;
  border:1px solid rgba(255,255,255,.18);
  background:rgba(0,0,0,.18);
  box-shadow:0 18px 42px rgba(0,0,0,.24);
}
.stageMapBg{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.mapNodes{
  position:absolute;
  inset:0;
}
.mapNode{
  position:absolute;
  width:62px;
  height:62px;
  transform:translate(-50%,-50%);
  border:0;
  background:transparent;
  padding:0;
  touch-action:manipulation;
  filter:drop-shadow(0 8px 10px rgba(0,0,0,.28));
}
.mapNode img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
}
.mapNode.selected{
  animation:mapNodePulse 1.3s ease-in-out infinite;
}
.mapNode.locked{
  filter:grayscale(.2) brightness(.78) drop-shadow(0 6px 8px rgba(0,0,0,.32));
}
.mapNodeStars{
  position:absolute;
  left:50%;
  bottom:-4px;
  transform:translateX(-50%);
  color:#ffe277;
  font-size:12px;
  letter-spacing:-1px;
  text-shadow:0 2px 5px rgba(0,0,0,.8);
  pointer-events:none;
}
.mapMarker{
  position:absolute;
  width:72px;
  height:72px;
  object-fit:contain;
  transform:translate(-50%,-92%);
  pointer-events:none;
  filter:drop-shadow(0 8px 10px rgba(0,0,0,.30));
  animation:mapMarkerFloat 1.8s ease-in-out infinite;
}
.mapFooter{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
}
@keyframes mapNodePulse{
  0%,100%{transform:translate(-50%,-50%) scale(1)}
  50%{transform:translate(-50%,-50%) scale(1.08)}
}
@keyframes mapMarkerFloat{
  0%,100%{transform:translate(-50%,-92%) translateY(0)}
  50%{transform:translate(-50%,-92%) translateY(-5px)}
}
.stageInfoOverlay{
  position:fixed;
  inset:0;
  z-index:2700;
  display:none;
  align-items:center;
  justify-content:center;
  padding:18px;
  background:rgba(0,0,0,.55);
  backdrop-filter:blur(3px);
}
.stageInfoOverlay.show{
  display:flex;
}
.stageInfoCard{
  position:relative;
  width:min(92vw,430px);
  border-radius:28px;
  overflow:hidden;
  filter:drop-shadow(0 18px 32px rgba(0,0,0,.35));
}
.stageInfoFrame{
  display:block;
  width:100%;
  height:auto;
}
.stageInfoContent{
  position:absolute;
  inset:12% 11% 10%;
  display:flex;
  flex-direction:column;
  justify-content:center;
  gap:7px;
  text-align:center;
  color:#352403;
}
.stageInfoContent h2{
  margin:0;
  color:#5d3800;
  font-size:21px;
  line-height:1.18;
}
.stageInfoContent p{
  margin:0;
  font-size:13px;
  font-weight:900;
}
.stageInfoStars{
  font-size:22px;
  color:#e9a800;
  text-shadow:0 2px 4px rgba(0,0,0,.18);
}
.stageInfoContent .cta{
  margin-top:4px;
}
.stageInfoContent .btn{
  color:#3a2700;
  background:rgba(255,255,255,.72);
}
.mapOpenBannerOverlay{
  position:fixed;
  inset:0;
  z-index:2750;
  display:none;
  align-items:center;
  justify-content:center;
  pointer-events:none;
  background:rgba(0,0,0,.20);
}
.mapOpenBannerOverlay.show{
  display:flex;
}
.mapOpenBannerOverlay img{
  width:min(88vw,520px);
  height:auto;
  filter:drop-shadow(0 14px 24px rgba(0,0,0,.35));
  animation:mapOpenBannerPop 1.4s ease both;
}
@keyframes mapOpenBannerPop{
  0%{opacity:0;transform:scale(.78) translateY(16px)}
  18%{opacity:1;transform:scale(1.05) translateY(0)}
  80%{opacity:1;transform:scale(1)}
  100%{opacity:0;transform:scale(.94)}
}
@media(max-width:430px){
  .mapNode{width:56px;height:56px}
  .mapMarker{width:66px;height:66px}
  .stageInfoContent h2{font-size:19px}
  .stageInfoContent p{font-size:12px}
}
@media(max-height:760px){
  .stageMapPage{gap:6px;padding-top:6px}
  .mapTopbar{padding:6px 8px}
  .mapNode{width:52px;height:52px}
  .mapMarker{width:60px;height:60px}
}

/* v22.8.1 title map visible hotfix */
.titleSubBtns{
  grid-template-columns:repeat(3,1fr);
}
body.title-active .titleSubBtns .btn{
  padding:9px 7px;
  font-size:13px;
}

body.map-active{
  overflow:hidden;
  height:100dvh;
  overscroll-behavior:none;
}


/* v22.9 map driven UI */
body.home-active{
  min-height:100dvh;
}
body.title-active .titleImageBtns,
body.title-active .titleSubBtns,
body.title-active .playerRankMini{
  display:none !important;
}
body.title-active #titleScreen .titlePad{
  grid-template-rows:minmax(0,1fr) auto;
}
.homePad{
  min-height:100dvh;
  display:flex;
  flex-direction:column;
  gap:12px;
}
.homeTopbar{
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  padding:8px 10px;
  border:1px solid var(--line);
  border-radius:18px;
  background:rgba(255,255,255,.10);
}
.homeTopbar b{
  text-align:center;
}
.homeCurrency{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:10px;
}
.homeMain{
  display:grid;
  grid-template-columns:1.25fr 1fr;
  gap:10px;
}
.homeMain .cta,
.homeMain .btn{
  min-height:58px;
}
.homeGrid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:10px;
}
.homeGrid .btn{
  min-height:50px;
}
#stageMapScreen .mapFooter{
  display:none !important;
}
.sortiePad{
  min-height:100dvh;
  display:flex;
  flex-direction:column;
  gap:10px;
}
.sortiePad > .currency,
.sortiePad > .playerRankPanel,
.sortiePad > .nav,
.sortiePad .modeSection,
.sortiePad .stageSelectSection{
  display:none !important;
}
.prepStageSummary{
  border-radius:18px;
  padding:12px;
  background:rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.16);
}
.prepStageName{
  font-size:18px;
  font-weight:1000;
  color:#ffe277;
  line-height:1.2;
}
.prepStageMeta{
  font-size:12px;
  opacity:.88;
  line-height:1.35;
}
.sortiePad .section{
  margin:0;
}
.sortiePad .section h3{
  margin-bottom:7px;
}
.sortiePad .difficultyGrid{
  gap:8px;
}
.sortiePad .difficultyBtn{
  padding:10px;
  min-height:auto;
}
.sortiePad .bossSupportGrid{
  max-height:260px;
  overflow:auto;
}
@media(max-height:760px){
  .homePad{gap:8px}
  .homeGrid{gap:7px}
  .homeGrid .btn{min-height:44px;font-size:13px}
  .homeMain .cta,.homeMain .btn{min-height:50px}
  .sortiePad{gap:8px}
  .prepStageSummary{padding:9px}
}


/* v22.9.1 highscore dedicated UI */
.highscoreHeroImg{
  margin:6px auto 12px;
  text-align:center;
}
.highscoreHeroImg img{
  width:100%;
  max-width:760px;
  max-height:190px;
  object-fit:contain;
  border-radius:0;
  box-shadow:none;
  border:0;
  filter:drop-shadow(0 18px 28px rgba(0,0,0,.32));
}
.highScoreHero{
  position:relative;
  overflow:hidden;
  border-color:rgba(255,226,119,.22);
  background:
    radial-gradient(circle at 50% 0%,rgba(255,226,119,.10),transparent 52%),
    linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,.055));
}
.recordGrid,.modeRecordGrid{
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:10px;
}
.recordCard.deluxe{
  display:grid;
  grid-template-columns:62px 1fr;
  gap:10px;
  align-items:center;
  min-height:78px;
  padding:10px;
  border-radius:20px;
  background:
    linear-gradient(180deg,rgba(255,255,255,.13),rgba(255,255,255,.055)),
    radial-gradient(circle at 0% 0%,rgba(255,226,119,.12),transparent 48%);
  border:1px solid rgba(255,226,119,.22);
  box-shadow:0 10px 24px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.08);
}
.recordCard.deluxe .recordIconImg,
.recordCard.deluxe > img{
  width:60px;
  height:60px;
  object-fit:contain;
  background:transparent!important;
  border-radius:0!important;
  filter:drop-shadow(0 7px 9px rgba(0,0,0,.30));
}
.recordLabel{
  font-size:11px;
  color:rgba(255,255,255,.80);
  font-weight:1000;
  letter-spacing:.03em;
}
.recordValue{
  font-size:18px;
  color:#ffe277;
  font-weight:1000;
  line-height:1.08;
  text-shadow:0 2px 7px rgba(0,0,0,.30);
}
.stageRecordList{
  display:grid;
  gap:10px;
}
.stageRecordCard.deluxe{
  position:relative;
  display:grid;
  grid-template-columns:62px 1fr;
  gap:10px;
  align-items:center;
  overflow:hidden;
  border-radius:20px;
  padding:11px;
  background:
    linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.055)),
    radial-gradient(circle at 100% 0%,rgba(255,226,119,.10),transparent 42%);
  border:1px solid rgba(255,226,119,.24);
  box-shadow:0 10px 24px rgba(0,0,0,.18);
}
.stageRecordCard.deluxe:before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:linear-gradient(90deg,rgba(255,226,119,.11),transparent 30%,transparent 70%,rgba(255,143,212,.06));
  opacity:.75;
}
.stageRecordCard.deluxe.perfect{
  border-color:rgba(255,226,119,.70);
  box-shadow:0 0 20px rgba(255,215,108,.25),0 10px 24px rgba(0,0,0,.20);
}
.stageRecordIcon{
  position:relative;
  z-index:1;
  width:62px;
  height:62px;
  display:grid;
  place-items:center;
}
.stageRecordIcon img{
  width:60px;
  height:60px;
  object-fit:contain;
  background:transparent!important;
  filter:drop-shadow(0 6px 8px rgba(0,0,0,.30));
}
.stageRecordBody{
  position:relative;
  z-index:1;
  text-align:left;
}
.stageRecordName{
  font-size:14px;
  color:#ffe277;
  font-weight:1000;
  line-height:1.12;
}
.stageRecordBest{
  display:flex;
  align-items:center;
  gap:5px;
  font-size:16px;
  color:#fff;
  font-weight:1000;
  margin-top:2px;
}
.stageRecordRank,.stageRecordBoss{
  display:flex;
  align-items:center;
  gap:5px;
  font-size:11px;
  color:rgba(255,255,255,.80);
  font-weight:900;
  line-height:1.25;
  margin-top:2px;
}
.miniHsBadge{
  width:36px;
  height:17px;
  object-fit:contain;
  flex:0 0 auto;
  filter:drop-shadow(0 2px 4px rgba(0,0,0,.28));
}
.miniHsBadge.bossBadge{
  width:34px;
}
.newRecordBox img{
  width:100%;
  max-width:600px;
  max-height:180px;
  object-fit:contain;
  border-radius:0;
  box-shadow:none;
  filter:drop-shadow(0 14px 26px rgba(0,0,0,.35));
}
@media(max-width:520px){
  .recordGrid,.modeRecordGrid{grid-template-columns:1fr}
  .recordCard.deluxe{min-height:70px;grid-template-columns:56px 1fr}
  .recordCard.deluxe .recordIconImg,.recordCard.deluxe > img{width:54px;height:54px}
  .recordValue{font-size:16px}
  .stageRecordCard.deluxe{grid-template-columns:56px 1fr;padding:9px}
  .stageRecordIcon{width:56px;height:56px}
  .stageRecordIcon img{width:54px;height:54px}
}


/* v23.0 isekai guest */
.homeGuestEventBanner{
  position:relative;
  display:block;
  border:1px solid rgba(255,226,119,.22);
  border-radius:22px;
  overflow:hidden;
  background:rgba(0,0,0,.18);
  min-height:96px;
  box-shadow:0 10px 26px rgba(0,0,0,.25);
}
.homeGuestEventBanner img{
  width:100%;
  height:124px;
  object-fit:cover;
  display:block;
  filter:saturate(1.06) brightness(.95);
}
.homeGuestText{
  position:absolute;
  inset:auto 12px 10px 12px;
  padding:8px 10px;
  border-radius:16px;
  background:linear-gradient(90deg,rgba(20,10,34,.80),rgba(90,40,15,.55));
  border:1px solid rgba(255,226,119,.25);
  text-shadow:0 2px 8px rgba(0,0,0,.5);
}
.homeGuestText b{
  display:block;
  color:#ffe277;
  font-size:15px;
}
.homeGuestText span{
  display:block;
  font-size:11px;
  opacity:.88;
}
.mapNode.guest{
  width:86px;
  height:86px;
  filter:drop-shadow(0 0 18px rgba(177,81,255,.46)) drop-shadow(0 10px 12px rgba(0,0,0,.35));
}
.mapNode.guest.selected{
  animation:mapGuestPulse 1.3s ease-in-out infinite;
}
@keyframes mapGuestPulse{
  0%,100%{transform:translate(-50%,-50%) scale(1)}
  50%{transform:translate(-50%,-50%) scale(1.1)}
}
.stageInfoThumb{
  width:100%;
  max-height:90px;
  object-fit:cover;
  border-radius:14px;
  border:1px solid rgba(255,226,119,.28);
  margin-bottom:4px;
  box-shadow:0 8px 14px rgba(0,0,0,.22);
}
.stageInfoCard.guestStageInfo .stageInfoContent h2{
  color:#ffe277;
  text-shadow:0 2px 8px rgba(0,0,0,.35);
}
body.battle-active #gameScreen{
  background-size:cover;
  background-position:center;
}
body.battle-active #gameScreen:before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:radial-gradient(circle at 50% 12%,rgba(255,180,86,.10),transparent 35%);
}
#gameScreen{
  position:relative;
}
#gameScreen > .pad{
  position:relative;
  z-index:1;
}
.collectionGuestBadge{
  display:inline-block;
  margin-top:2px;
  padding:2px 7px;
  border-radius:999px;
  background:linear-gradient(90deg,#7d39ff,#ff9d3d);
  color:#fff;
  font-size:10px;
  font-weight:1000;
}
@media(max-height:760px){
  .homeGuestEventBanner img{height:96px}
  .mapNode.guest{width:72px;height:72px}
}


/* v23.1 endless online ranking */
.rankingBanner{
  position:relative;
  border-radius:20px;
  overflow:hidden;
  border:1px solid rgba(255,226,119,.28);
  background:rgba(255,255,255,.08);
  margin-bottom:8px;
}
.rankingBanner img{
  width:100%;
  height:112px;
  display:block;
  object-fit:cover;
}
.onlineRankingSection h3{
  color:#ffe277;
  margin:8px 0 10px;
}
.rankingSettings{
  display:grid;
  grid-template-columns:1fr auto auto;
  gap:8px;
  align-items:end;
}
.rankNameLabel{
  display:flex;
  flex-direction:column;
  gap:4px;
  font-size:11px;
  font-weight:900;
  color:rgba(255,255,255,.78);
}
.rankNameLabel input{
  width:100%;
  border:1px solid rgba(255,255,255,.22);
  background:rgba(0,0,0,.28);
  color:#fff;
  border-radius:14px;
  padding:10px 11px;
  font:inherit;
  font-weight:900;
  outline:none;
}
.smallBtn{
  white-space:nowrap;
  padding:10px 11px;
  font-size:12px;
}
.rankingActions{
  display:grid;
  grid-template-columns:1fr auto;
  gap:8px;
  margin-top:10px;
}
.onlineStatus{
  margin-top:9px;
  padding:8px 10px;
  border-radius:14px;
  background:rgba(0,0,0,.18);
}
.onlineStatus.ok{
  color:#b9ffcf;
}
.onlineStatus.warn{
  color:#ffd18f;
}
.endlessRankingList{
  display:flex;
  flex-direction:column;
  gap:8px;
  margin-top:10px;
}
.rankingEmpty{
  padding:14px;
  border-radius:18px;
  background:rgba(255,255,255,.08);
  color:rgba(255,255,255,.76);
  font-weight:850;
  text-align:center;
}
.rankingRow{
  display:grid;
  grid-template-columns:38px 1fr auto;
  gap:9px;
  align-items:center;
  padding:10px;
  border-radius:18px;
  background:linear-gradient(180deg,rgba(255,255,255,.13),rgba(255,255,255,.06));
  border:1px solid rgba(255,255,255,.14);
}
.rankingRow.gold{
  border-color:rgba(255,215,108,.55);
  box-shadow:0 0 18px rgba(255,215,108,.16);
}
.rankingRow.silver{
  border-color:rgba(215,225,255,.40);
}
.rankingRow.bronze{
  border-color:rgba(255,174,112,.42);
}
.rankingRank{
  width:34px;
  height:34px;
  border-radius:50%;
  display:grid;
  place-items:center;
  background:linear-gradient(180deg,#fff4aa,#ffbd46);
  color:#4a2c00;
  font-weight:1000;
}
.rankingMain b{
  display:block;
  font-size:14px;
}
.rankingMain span{
  display:block;
  font-size:11px;
  color:rgba(255,255,255,.74);
  margin-top:2px;
}
.rankingCombo{
  font-size:11px;
  font-weight:1000;
  color:#ffe277;
  text-align:right;
}
#resultEndlessSubmitBtn{
  display:none;
  border-color:rgba(255,226,119,.35);
  background:linear-gradient(180deg,rgba(255,221,100,.28),rgba(151,75,255,.24));
}
#resultEndlessSubmitBtn.show{
  display:inline-block;
}
@media(max-width:420px){
  .rankingSettings{grid-template-columns:1fr 1fr}
  .rankNameLabel{grid-column:1/-1}
  .rankingActions{grid-template-columns:1fr}
  .rankingRow{grid-template-columns:34px 1fr}
  .rankingCombo{grid-column:2; text-align:left}
}


/* v23.2 sound settings */
.soundSettingsPanel{
  margin-top:10px;
  background:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,.06));
  border:1px solid rgba(255,226,119,.18);
}
.soundSettingsPanel h3{
  margin:0 0 8px;
  color:#ffe277;
}
.soundSettingGrid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8px;
  margin-bottom:8px;
}
.soundSliderLabel{
  display:grid;
  grid-template-columns:76px 1fr;
  gap:8px;
  align-items:center;
  font-size:12px;
  font-weight:1000;
  color:rgba(255,255,255,.84);
  margin:8px 0;
}
.soundSliderLabel input[type="range"]{
  width:100%;
  accent-color:#ffd76c;
}
#soundStatusText{
  padding:7px 9px;
  border-radius:12px;
  background:rgba(0,0,0,.16);
}


/* v23.3 profile / titles / expanded missions */
.profileMiniTitle{
  display:inline-block;
  margin-bottom:6px;
  padding:4px 9px;
  border-radius:999px;
  background:linear-gradient(180deg,#fff0a8,#ffc84d);
  color:#4b3000;
  font-size:11px;
  font-weight:1000;
  box-shadow:0 4px 12px rgba(255,203,86,.22);
}
.profileHero{
  text-align:center;
  background:
    radial-gradient(circle at 50% 0%,rgba(255,226,119,.28),transparent 46%),
    linear-gradient(180deg,rgba(255,255,255,.13),rgba(255,255,255,.06));
  border:1px solid rgba(255,226,119,.23);
}
.profileBadge{
  display:inline-block;
  padding:4px 10px;
  border-radius:999px;
  background:#fff0a8;
  color:#4b3000;
  font-weight:1000;
  font-size:12px;
}
.profileName{
  margin-top:8px;
  font-size:24px;
  font-weight:1000;
  color:#fff;
}
.profileTitle{
  display:inline-block;
  margin-top:8px;
  padding:7px 14px;
  border-radius:999px;
  background:linear-gradient(180deg,#fff4b8,#ffbd42);
  color:#553200;
  font-weight:1000;
}
.profileDesc{
  margin-top:8px;
  font-size:12px;
  color:rgba(255,255,255,.78);
}
.profileNameRow{
  display:grid;
  grid-template-columns:1fr auto;
  gap:8px;
}
.profileNameRow input{
  border:1px solid rgba(255,255,255,.22);
  background:rgba(0,0,0,.28);
  color:#fff;
  border-radius:14px;
  padding:11px 12px;
  font:inherit;
  font-weight:900;
  outline:none;
}
.profileStatsGrid{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:9px;
}
.profileStatsGrid div{
  padding:11px;
  border-radius:16px;
  background:rgba(255,255,255,.08);
  border:1px solid rgba(255,255,255,.12);
}
.profileStatsGrid small{
  display:block;
  color:rgba(255,255,255,.62);
  font-size:10px;
  font-weight:900;
}
.profileStatsGrid b{
  display:block;
  margin-top:4px;
  color:#ffe277;
  font-size:15px;
}
.titleGrid{
  display:grid;
  grid-template-columns:1fr;
  gap:8px;
  margin-top:10px;
}
.titleCard{
  text-align:left;
  border-radius:18px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.07);
  color:#fff;
  padding:12px;
}
.titleCard.open{
  border-color:rgba(255,226,119,.25);
}
.titleCard.selected{
  background:linear-gradient(180deg,rgba(255,226,119,.22),rgba(255,255,255,.07));
  box-shadow:0 0 18px rgba(255,226,119,.14);
}
.titleCard.locked{
  opacity:.58;
  filter:saturate(.6);
}
.titleCardName{
  font-size:15px;
  font-weight:1000;
}
.titleCardDesc{
  margin-top:4px;
  color:rgba(255,255,255,.70);
  font-size:11px;
  line-height:1.35;
}
.titleCardState{
  margin-top:8px;
  color:#ffe277;
  font-size:11px;
  font-weight:1000;
}
.rankingTitle{
  display:inline-block;
  margin:2px 0 3px;
  padding:2px 7px;
  border-radius:999px;
  background:rgba(255,226,119,.18);
  color:#ffe277;
  font-style:normal;
  font-size:10px;
  font-weight:1000;
}
.tabs{
  flex-wrap:wrap;
}
@media(max-width:420px){
  .profileStatsGrid{grid-template-columns:1fr}
}


/* v23.4 stage balance */
.hardNotice{
  display:inline-block;
  margin-top:4px;
  color:#ffd18f;
  font-size:10px;
  font-weight:1000;
}
.missionEmpty{
  opacity:.86;
  border-style:dashed;
}


/* v23.5 endless boss rotation */
.endlessBossRotationOverlay{
  position:fixed;
  inset:0;
  z-index:2600;
  display:none;
  place-items:center;
  pointer-events:none;
  background:radial-gradient(circle at 50% 40%,rgba(255,226,119,.18),rgba(0,0,0,.48) 62%,rgba(0,0,0,.66));
}
.endlessBossRotationOverlay.show{
  display:grid;
  animation:endlessBossOverlayFade 1.15s ease both;
}
.endlessBossCard{
  width:min(86vw,430px);
  min-height:360px;
  position:relative;
  overflow:hidden;
  border-radius:30px;
  padding:24px 18px 18px;
  text-align:center;
  color:#fff;
  border:2px solid rgba(255,226,119,.7);
  background:
    radial-gradient(circle at 20% 0%,rgba(255,255,255,.25),transparent 28%),
    radial-gradient(circle at 84% 16%,rgba(255,92,196,.22),transparent 30%),
    linear-gradient(180deg,rgba(75,31,126,.96),rgba(19,16,43,.97));
  box-shadow:0 26px 70px rgba(0,0,0,.45),0 0 34px rgba(255,218,91,.22);
  transform-origin:center;
  animation:endlessBossCardPop 1.05s cubic-bezier(.18,1.15,.2,1) both;
}
.endlessBossCard:before,
.endlessBossCard:after{
  content:"";
  position:absolute;
  width:180px;
  height:180px;
  border-radius:50%;
  background:radial-gradient(circle,rgba(255,226,119,.35),transparent 62%);
  filter:blur(2px);
  pointer-events:none;
}
.endlessBossCard:before{left:-70px;top:-70px}
.endlessBossCard:after{right:-70px;bottom:-70px}
.endlessBossTop{
  position:relative;
  z-index:1;
  display:inline-block;
  padding:6px 16px;
  border-radius:999px;
  background:linear-gradient(180deg,#fff6b8,#ffbf38);
  color:#4a2c00;
  font-size:13px;
  font-weight:1000;
  letter-spacing:.04em;
}
.endlessBossOrder{
  position:relative;
  z-index:1;
  margin-top:14px;
  font-size:30px;
  font-weight:1000;
  color:#ffe277;
  text-shadow:0 4px 0 rgba(63,31,0,.42),0 0 20px rgba(255,226,119,.42);
}
.endlessBossName{
  position:relative;
  z-index:1;
  margin-top:4px;
  font-size:24px;
  font-weight:1000;
  line-height:1.14;
  text-shadow:0 4px 16px rgba(0,0,0,.48);
}
.endlessBossMeta{
  position:relative;
  z-index:1;
  margin-top:8px;
  font-size:12px;
  font-weight:900;
  color:rgba(255,255,255,.78);
}
.endlessBossPortrait{
  position:relative;
  z-index:1;
  margin:12px auto 8px;
  width:148px;
  height:148px;
  border-radius:28px;
  display:grid;
  place-items:center;
  background:rgba(255,255,255,.12);
  border:1px solid rgba(255,255,255,.18);
  box-shadow:inset 0 0 20px rgba(255,255,255,.10);
}
.endlessBossPortrait img{
  max-width:130px;
  max-height:130px;
  object-fit:contain;
  filter:drop-shadow(0 10px 14px rgba(0,0,0,.38));
}
.endlessBossRoute{
  position:relative;
  z-index:1;
  margin-top:8px;
  font-size:18px;
  letter-spacing:.02em;
  opacity:.9;
}
@keyframes endlessBossOverlayFade{
  0%{opacity:0}
  14%{opacity:1}
  82%{opacity:1}
  100%{opacity:0}
}
@keyframes endlessBossCardPop{
  0%{transform:scale(.75) translateY(18px);opacity:0}
  18%{transform:scale(1.04) translateY(0);opacity:1}
  62%{transform:scale(1) translateY(0);opacity:1}
  100%{transform:scale(.96) translateY(-10px);opacity:0}
}


/* v23.5.1 endless level */
.endlessBossMeta{
  color:#fff0a8;
}


/* v23.5.2 visibility improvement */
.cell{
  background:
    radial-gradient(circle at 28% 22%,rgba(255,255,255,.20),transparent 34%),
    rgba(255,255,255,.10);
}
.cell .piecePattern{
  position:absolute;
  inset:0;
  z-index:1;
  opacity:.24;
  pointer-events:none;
}
.cell .pieceChar{
  position:relative;
  z-index:2;
  width:96%;
  height:96%;
  object-fit:contain;
  pointer-events:none;
  filter:drop-shadow(0 2px 2px rgba(0,0,0,.30));
}
.cell .pieceAttr{
  position:absolute;
  z-index:5;
  top:2px;
  right:2px;
  width:28%;
  height:28%;
  object-fit:contain;
  pointer-events:none;
  filter:
    drop-shadow(0 1px 0 #fff)
    drop-shadow(0 -1px 0 #fff)
    drop-shadow(1px 0 0 #fff)
    drop-shadow(-1px 0 0 #fff)
    drop-shadow(0 2px 4px rgba(0,0,0,.42));
}
.pattern-dot{
  background-image:radial-gradient(circle, rgba(255,255,255,.9) 11%, transparent 13%);
  background-size:12px 12px;
}
.pattern-stripe{
  background-image:repeating-linear-gradient(45deg, rgba(255,255,255,.85) 0 3px, transparent 3px 10px);
}
.pattern-sparkle{
  background-image:
    radial-gradient(circle at 20% 30%, rgba(255,255,255,.95) 0 2px, transparent 3px),
    radial-gradient(circle at 62% 22%, rgba(255,255,255,.75) 0 1.5px, transparent 3px),
    radial-gradient(circle at 72% 66%, rgba(255,255,255,.85) 0 2px, transparent 3px),
    radial-gradient(circle at 38% 78%, rgba(255,255,255,.65) 0 1.5px, transparent 3px);
}
.pattern-check{
  background-image:
    linear-gradient(90deg, rgba(255,255,255,.40) 50%, transparent 50%),
    linear-gradient(0deg, rgba(255,255,255,.40) 50%, transparent 50%);
  background-size:12px 12px;
}
.pattern-wave{
  background-image:
    repeating-radial-gradient(ellipse at 0 50%, rgba(255,255,255,.42) 0 2px, transparent 3px 9px);
}
.pattern-halo{
  background-image:radial-gradient(circle, transparent 32%, rgba(255,255,255,.78) 35%, transparent 48%);
}
.attrMini,.cardAttr,.supportAttr{
  width:18px!important;
  height:18px!important;
  object-fit:contain;
  vertical-align:-4px;
  margin-right:4px;
  filter:
    drop-shadow(0 1px 0 #fff)
    drop-shadow(0 -1px 0 #fff)
    drop-shadow(1px 0 0 #fff)
    drop-shadow(-1px 0 0 #fff)
    drop-shadow(0 2px 4px rgba(0,0,0,.35));
}
.cardAttr{
  width:20px!important;
  height:20px!important;
}
.visibilityPreview{
  margin-top:8px;
  display:grid;
  gap:8px;
  padding:9px;
  border-radius:16px;
  background:rgba(0,0,0,.18);
  border:1px solid rgba(255,255,255,.12);
}
.visibilityPreview>div{
  display:block;
  padding:7px 8px;
  border-radius:13px;
  background:rgba(255,255,255,.07);
}
.visibilityPreview b{
  color:#ffe277;
  margin-right:8px;
}
.visibilityPreview span{
  font-size:11px;
  color:rgba(255,255,255,.78);
}
.visibilityPreview p{
  margin:0;
  font-size:11px;
  line-height:1.4;
  color:rgba(255,255,255,.68);
}
.miniTeamLine{
  display:flex;
  flex-wrap:wrap;
  gap:5px;
  margin-top:6px;
}
.miniTeamLine span,.supportChip,.supportNone{
  display:inline-flex;
  align-items:center;
  gap:2px;
  padding:3px 7px;
  border-radius:999px;
  background:rgba(255,255,255,.10);
  font-size:10px!important;
  color:#fff!important;
  white-space:nowrap;
}
.rosterCard{
  position:relative;
}
.roleBadge{
  position:absolute;
  left:6px;
  bottom:54px;
  z-index:4;
  padding:3px 7px;
  border-radius:999px;
  font-size:10px;
  font-weight:1000;
  color:#3a2500;
  background:#ffe277;
  box-shadow:0 4px 10px rgba(0,0,0,.22);
}
.roleBadge.support{
  background:#bfe8ff;
  color:#053045;
}
.rosterCard.support{
  opacity:.88;
  outline:2px dashed rgba(157,224,255,.45);
}
.rosterCard.sortie{
  outline:2px solid rgba(255,226,119,.48);
}


/* v23.5.4 ranking UX */
.rankingGuide{
  display:grid;
  gap:4px;
  padding:11px 12px;
  margin:8px 0 12px;
  border-radius:16px;
  background:linear-gradient(135deg,rgba(255,226,119,.20),rgba(115,211,255,.13));
  border:1px solid rgba(255,226,119,.35);
}
.rankingGuide b{
  color:#ffe277;
  font-size:15px;
}
.rankingGuide span{
  color:rgba(255,255,255,.82);
  font-size:12px;
  line-height:1.45;
}
.rankingSubmitBox{
  margin:10px 0;
  padding:11px 12px;
  border-radius:16px;
  border:1px dashed rgba(255,255,255,.22);
  background:rgba(255,255,255,.07);
  color:rgba(255,255,255,.78);
  font-size:12px;
  line-height:1.45;
}
.rankingSubmitBox.ok{
  border:1px solid rgba(120,255,179,.45);
  background:linear-gradient(135deg,rgba(60,255,150,.18),rgba(255,226,119,.12));
  color:#fff;
}
.rankingSubmitBox b{
  display:block;
  color:#9dffc2;
  font-size:15px;
  margin-bottom:3px;
}
.rankingSubmitBox span,.rankingSubmitBox em{
  display:block;
  font-style:normal;
}
.rankingSubmitBox em{
  margin-top:3px;
  font-size:11px;
  color:rgba(255,255,255,.72);
}
.top10Header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:8px;
  padding:7px 4px 9px;
  color:#ffe277;
}
.top10Header span{
  font-size:11px;
  color:rgba(255,255,255,.65);
}
.rankingRow.mine{
  outline:2px solid rgba(120,255,179,.55);
  background:linear-gradient(135deg,rgba(120,255,179,.16),rgba(255,255,255,.08));
}
.rankingEmpty{
  display:grid;
  gap:4px;
  padding:16px 12px;
  border-radius:16px;
  background:rgba(255,255,255,.07);
  color:rgba(255,255,255,.78);
  text-align:center;
}
.rankingEmpty b{
  color:#ffe277;
}
.rankingEmpty span{
  font-size:12px;
}
.resultRankingMessage{
  margin-top:10px;
  padding:10px 12px;
  border-radius:16px;
  border:1px dashed rgba(255,255,255,.22);
  background:rgba(255,255,255,.07);
  color:rgba(255,255,255,.75);
  font-size:12px;
}
.resultRankingMessage.ok{
  border-color:rgba(120,255,179,.45);
  background:linear-gradient(135deg,rgba(120,255,179,.16),rgba(255,226,119,.13));
  color:#fff;
}
.resultRankingMessage b,.resultRankingMessage span,.resultRankingMessage small{
  display:block;
}
.resultRankingMessage b{
  color:#9dffc2;
  font-size:15px;
}
.resultRankingMessage small{
  color:rgba(255,255,255,.72);
}


/* v23.5.5 lightweight / flicker reduction */
.perfGrid{
  margin-top:8px;
}
#gameScreen{
  contain:layout paint style;
  background-color:#101a17;
}
.board{
  contain:layout paint;
  transform:translateZ(0);
  backface-visibility:hidden;
}
.cell{
  contain:layout paint;
  backface-visibility:hidden;
}
body.light-mode{
  background:#0c1512!important;
}
body.light-mode .screen{
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  box-shadow:0 8px 24px rgba(0,0,0,.24)!important;
}
body.light-mode.battle-active #gameScreen{
  background-image:none!important;
  background:linear-gradient(180deg,#17231f,#0b1210)!important;
}
body.light-mode.battle-active .board{
  background:rgba(0,0,0,.20)!important;
  box-shadow:none!important;
}
body.light-mode.battle-active .cell{
  transition:none!important;
  animation:none!important;
  filter:none!important;
  box-shadow:none!important;
  background:rgba(255,255,255,.105)!important;
}
body.light-mode.battle-active .cell.spawn,
body.light-mode.battle-active .cell.fell,
body.light-mode.battle-active .cell.removing{
  animation:none!important;
  transition:none!important;
  filter:none!important;
}
body.light-mode.battle-active .cell .pieceChar{
  filter:none!important;
}
body.light-mode.battle-active .cell .pieceAttr{
  filter:
    drop-shadow(0 1px 0 rgba(255,255,255,.95))
    drop-shadow(1px 0 0 rgba(255,255,255,.85))!important;
}
body.light-mode.battle-active .cell .piecePattern{
  opacity:.12!important;
}
body.light-mode.battle-active .comboPopup.show{
  animation:comboPopLite .42s ease forwards!important;
}
@keyframes comboPopLite{
  0%{opacity:0;transform:translate(-50%,-50%) scale(.9)}
  20%{opacity:1;transform:translate(-50%,-50%) scale(1)}
  100%{opacity:0;transform:translate(-50%,-60%) scale(1)}
}
body.light-mode.battle-active .skillBig.skill-ready{
  animation:none!important;
  filter:none!important;
  box-shadow:0 4px 0 rgba(89,57,0,.28),0 0 10px rgba(255,226,119,.45)!important;
}
body.light-mode.battle-active .skillOverlay.show,
body.light-mode.battle-active .bossCutinOverlay.show{
  animation:none!important;
}
body.light-mode.battle-active .damagePopup,
body.light-mode.battle-active .rankUpOverlay,
body.light-mode.battle-active .rewardGetOverlay{
  filter:none!important;
}
body.light-mode.battle-active .bar span{
  background:linear-gradient(90deg,#7cffb2,#ffe277,#ff8aa6)!important;
}
@media (prefers-reduced-motion: reduce){
  .cell,.cell.spawn,.cell.fell,.comboPopup.show,.skillBig.skill-ready{
    animation:none!important;
    transition:none!important;
  }
}

/* v23.6.5 nyanko event badge */
.collectionGuestBadge.nyanko{background:linear-gradient(90deg,#ffb7dc,#b8dcff);color:#44234f;border-color:rgba(255,255,255,.75)}

.homeNyankoEventBanner{
  border-color:rgba(255,145,205,.34);
  box-shadow:0 12px 30px rgba(119,54,180,.28);
}
.homeNyankoEventBanner .homeGuestText{
  background:linear-gradient(90deg,rgba(31,16,55,.84),rgba(165,65,135,.56));
}
.homeNyankoEventBanner .homeGuestText b{
  color:#ffd6f1;
}
.mapNode.event{
  width:86px;
  height:86px;
  filter:drop-shadow(0 0 18px rgba(255,92,189,.48)) drop-shadow(0 10px 12px rgba(0,0,0,.35));
}
.mapNode.event.selected{
  animation:mapGuestPulse 1.3s ease-in-out infinite;
}

/* v24.1.3 character asset + 101-110 UI integration */
#trainingScreen, .trainingScreen, #awakenScreen { background-image: linear-gradient(rgba(255,255,255,.78), rgba(255,255,255,.92)), url("assets/ui_101_110/101_training_screen_bg.webp"); background-size: cover; background-position: center top; }
#prepScreen, #formationScreen, .v24FormationPanel { background-image: linear-gradient(rgba(255,255,255,.78), rgba(255,255,255,.92)), url("assets/ui_101_110/102_formation_screen_bg.webp"); background-size: cover; background-position: center top; }
.v24RecommendBtn, #v24ApplyRecommend { background-image: url("assets/ui_101_110/103_recommended_formation_button.webp"); background-size: cover; background-position: center; }
.v24DifficultyTabs { background-image: url("assets/ui_101_110/104_difficulty_formation_tabs.webp"); background-size: contain; background-repeat:no-repeat; background-position:center top; }
.v24CharDetailPanel { background-image: url("assets/ui_101_110/105_character_detail_panel.webp"); background-size: cover; background-position:center; }
.saveGuardPanel, .v24SaveGuard { background-image: linear-gradient(rgba(255,255,255,.82),rgba(255,255,255,.9)), url("assets/ui_101_110/108_save_protection_panel.webp"); background-size: cover; background-position:center; }
.charIcon, .pieceChar, .gachaResultChara, .leader-card img, .card img { object-fit: contain; }

/* v24.1.10 ranking/nyanko reward fix */
.rankingRow.emptySlot{opacity:.82;border-style:dashed!important;background:rgba(255,255,255,.06)!important;}
.rankingMyOutside{margin-top:14px;padding:16px;border-radius:18px;background:rgba(255,238,150,.12);border:1px solid rgba(255,225,108,.55);color:#fff;display:flex;justify-content:space-between;gap:12px;align-items:center;font-weight:900;}
.gachaResultCard .helper::after{content:"";}

/* v24.6.2 mobile readability + no whole-page overflow hotfix */
:root{
  --readable:#261b46;
  --readable2:#3a2a5f;
}
html, body{
  color:var(--readable)!important;
  overflow:hidden!important;
  height:100dvh!important;
  min-height:100dvh!important;
  max-height:100dvh!important;
}
body{
  padding:calc(8px + env(safe-area-inset-top)) 8px calc(8px + env(safe-area-inset-bottom))!important;
}
.app{
  width:min(480px,100%)!important;
  height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 16px)!important;
  max-height:calc(100dvh - env(safe-area-inset-top) - env(safe-area-inset-bottom) - 16px)!important;
  overflow:hidden!important;
  display:flex!important;
  flex-direction:column!important;
}
.screen.active{
  height:100%!important;
  max-height:100%!important;
  overflow:hidden!important;
  display:block!important;
  color:var(--readable)!important;
}
.pad,
.homePad,
.sortiePad{
  height:100%!important;
  max-height:100%!important;
  overflow:hidden!important;
  color:var(--readable)!important;
}
.screen,
.screen *:not(.cta):not(.cta *):not(.skillOverlay):not(.bossCutinOverlay){
  color:var(--readable)!important;
  text-shadow:0 1px 0 rgba(255,255,255,.55)!important;
}
.helper,.meta,.sub,.cur small,.itemSmall,.bossSupportDesc,.titleCardDesc{
  color:var(--readable2)!important;
  opacity:1!important;
}
.name,.section h3,.prepStageName,.bossSupportName,.homeGuestText b,.homeGuestText span,.rankingTitle{
  color:var(--readable)!important;
}
.btn,.mini{
  color:#241735!important;
  background:rgba(255,255,255,.78)!important;
  border-color:rgba(50,34,84,.22)!important;
}
.cta{
  color:#3a2700!important;
  text-shadow:none!important;
}
.homeTopbar,.homeCurrency,.cur,.section,.stage-card,.leader-card,.card,.prepStageSummary,.saveGuardPanel,.v24SaveGuard{
  background:rgba(255,255,255,.72)!important;
  border-color:rgba(50,34,84,.16)!important;
}
.homeGuestText{
  background:rgba(255,255,255,.72)!important;
  color:var(--readable)!important;
}
/* Mobile home: keep main page usable without whole-screen scroll. Extra buttons scroll only inside their frame. */
#homeScreen .homePad{
  display:grid!important;
  grid-template-rows:auto auto auto auto minmax(0,1fr) auto!important;
  gap:8px!important;
  padding:10px 10px calc(78px + env(safe-area-inset-bottom))!important;
}
#homeScreen .homeTopbar{min-height:44px!important;margin:0!important;}
#homeScreen .homeCurrency{margin:0!important;}
#homeScreen .playerRankPanel{margin:0!important;max-height:92px!important;overflow:hidden!important;}
#homeScreen .homeGuestEventBanner{margin:0!important;min-height:54px!important;max-height:62px!important;overflow:hidden!important;}
#homeScreen .homeMain{margin:0!important;gap:8px!important;}
#homeScreen .homeMain .cta,#homeScreen .homeMain .btn{min-height:48px!important;padding:9px 8px!important;}
#homeScreen .homeGrid{
  min-height:0!important;
  overflow-y:auto!important;
  -webkit-overflow-scrolling:touch!important;
  padding:2px 0 90px!important;
  grid-auto-rows:minmax(44px,auto)!important;
  overscroll-behavior:contain!important;
}
#homeScreen .homeGrid .btn{
  min-height:44px!important;
  padding:8px!important;
  font-size:14px!important;
}
/* Fixed bottom nav stays inside viewport and does not cover Safari toolbar. */
.v246BottomNav,.bottomNav,.appBottomNav,.mainBottomNav{
  position:fixed!important;
  left:50%!important;
  transform:translateX(-50%)!important;
  bottom:calc(8px + env(safe-area-inset-bottom))!important;
  width:min(480px,calc(100vw - 12px))!important;
  height:64px!important;
  max-height:64px!important;
  z-index:9999!important;
  overflow:hidden!important;
}
.v246BottomNav button,.bottomNav button,.appBottomNav button,.mainBottomNav button{
  min-height:52px!important;
  height:52px!important;
  padding:4px!important;
  color:#241735!important;
  text-shadow:none!important;
}
@media(max-width:430px){
  .app{width:100%!important;}
  body{padding-left:0!important;padding-right:0!important;}
  #homeScreen .homePad{padding-left:8px!important;padding-right:8px!important;gap:6px!important;}
  #homeScreen .homeTopbar{font-size:14px!important;}
  #homeScreen .cur{padding:7px 8px!important;}
  #homeScreen .homeGuestEventBanner{max-height:58px!important;}
}

/* ===== END style.css ===== */

/* ===== BEGIN v24_1_2_3_rebuild.css ===== */
/* v24.1.0 save guard / formation / training */
.saveGuardPanelV24{border:2px solid rgba(113,92,255,.28);background:linear-gradient(180deg,rgba(255,255,255,.96),rgba(239,235,255,.92));}
.saveGuardStatus{display:grid;gap:4px;padding:10px 12px;border-radius:16px;background:#fffaf0;border:1px solid rgba(255,188,68,.45);color:#382c66;font-weight:800;}
.saveGuardStatus span{font-size:11px;word-break:break-all;color:#675b89;font-weight:700}.saveGuardStatus small{color:#7d719c}.saveGuardBtns{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.saveGuardBtns .btn,.saveGuardBtns .cta{flex:1 1 130px;min-height:42px}.v24Hero{padding:16px;border-radius:22px;background:linear-gradient(135deg,#fff7c7,#eadfff 60%,#dff8ff);border:2px solid rgba(255,255,255,.92);box-shadow:0 8px 24px rgba(75,61,140,.16);display:grid;gap:5px;margin-bottom:12px;color:#33276b}.v24Hero b{font-size:20px;font-weight:1000}.v24Hero span{font-size:12px;font-weight:800;color:#6b5c91}.v24Hero.training{background:linear-gradient(135deg,#e8ffe8,#fff5ca 55%,#e7deff)}.v24DiffGrid{margin:10px 0 14px}.v24FormationActions{background:linear-gradient(180deg,#ffffff,#f8f4ff)}.v24MiniTeam{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.v24MiniChar{display:flex;align-items:center;gap:8px;padding:8px;border-radius:16px;background:#fff;border:1px solid rgba(92,79,160,.18);box-shadow:0 4px 12px rgba(60,50,120,.08)}.v24MiniChar img{width:42px;height:42px;object-fit:contain;border-radius:12px;background:#f2efff}.v24MiniChar b{display:block;color:#352768;font-size:12px}.v24MiniChar span{display:block;font-size:10px;color:#6c6186;font-weight:800}.v24RosterCard.leader{outline:3px solid #ffd86b}.v24TrainingMain{background:linear-gradient(180deg,#fff,#f5fff3)}.v24TrainCard{display:flex;gap:12px;align-items:center}.v24TrainCard img{width:86px;height:86px;object-fit:contain;border-radius:22px;background:#fff5ce;border:2px solid #fff;box-shadow:0 6px 16px rgba(70,50,120,.18)}.v24TrainCard h3{margin:0;color:#33276b}.v24TrainCard p{margin:4px 0 8px;color:#6d638a;font-size:12px;font-weight:800}#formationScreenV24 .pad,#trainingScreenV24 .pad{padding-bottom:28px}.homeGrid #homeFormationV24,.homeGrid #homeTrainingV24{background:linear-gradient(180deg,#fff7c8,#ffe9a1);border-color:#ffd45e;color:#4a3270;font-weight:1000}@media (max-width:430px){.v24MiniTeam{grid-template-columns:1fr}.saveGuardBtns .btn,.saveGuardBtns .cta{flex-basis:100%}.v24TrainCard{align-items:flex-start}.v24TrainCard img{width:72px;height:72px}}

/* ===== END v24_1_2_3_rebuild.css ===== */

/* ===== BEGIN v24_1_4_ui_sortie_fix.css ===== */
/* v24.1.4 readability + sortie flow fix */
.v24HiddenBySortieFix{display:none!important;}
#formationScreenV24 .section,#trainingScreenV24 .section,#prepScreen .section.v24ClearPanel,#v24SortieGuide,
#formationScreenV24 .v24FormationActions,#trainingScreenV24 .v24TrainingMain{
  background:linear-gradient(180deg,rgba(255,255,255,.88),rgba(247,244,255,.84))!important;
  color:#33276b!important;
  border:2px solid rgba(89,76,150,.22)!important;
  box-shadow:0 10px 26px rgba(20,15,45,.16)!important;
  backdrop-filter:none!important;
}
#trainingScreenV24 .v24TrainingMain{background:linear-gradient(180deg,rgba(244,255,239,.90),rgba(255,252,235,.86))!important;}
#formationScreenV24 .section *,#trainingScreenV24 .section *,#prepScreen .section.v24ClearPanel *,#v24SortieGuide *{text-shadow:none!important;}
#formationScreenV24 h3,#trainingScreenV24 h3,#prepScreen h3,#v24SortieGuide h3{color:#302568!important;font-weight:1000!important;}
#formationScreenV24 .helper,#trainingScreenV24 .helper,#prepScreen .helper,#formationScreenV24 span,#trainingScreenV24 span{color:#62587e!important;font-weight:800!important;}
#formationScreenV24 .btn,#trainingScreenV24 .btn,#prepScreen .btn,
#formationScreenV24 .cta,#trainingScreenV24 .cta,#prepScreen .cta{color:#3a2a20!important;text-shadow:none!important;font-weight:1000!important;}
#formationScreenV24 .v24MiniChar,#trainingScreenV24 .v24MiniChar,#formationScreenV24 .v24RosterCard,#trainingScreenV24 .v24RosterCard{
  background:rgba(255,255,255,.94)!important;color:#33276b!important;border-color:rgba(79,68,130,.24)!important;
}
#formationScreenV24 .name,#trainingScreenV24 .name{color:#34266a!important;}
.v24SortieGuide{display:grid;gap:12px;margin:12px 0!important;}
.v24SortieRows{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.v24SortieRows>div{background:rgba(255,255,255,.92);border:1px solid rgba(84,72,132,.18);border-radius:14px;padding:10px 12px;}
.v24SortieRows small{display:block;color:#766b8f!important;font-size:11px;font-weight:900;margin-bottom:3px;}
.v24SortieRows b{display:block;color:#33276b!important;font-size:13px;line-height:1.35;}
.v24SortieLeaderCard{display:flex;align-items:center;gap:12px;background:rgba(255,255,255,.94);border:1px solid rgba(84,72,132,.22);border-radius:18px;padding:10px;}
.v24SortieLeaderCard img{width:64px;height:64px;object-fit:contain;border-radius:16px;background:#fff7cf;border:2px solid #fff;box-shadow:0 5px 14px rgba(40,30,80,.16);}
.v24SortieLeaderCard b{display:block;color:#302568!important;font-size:16px;}
.v24SortieLeaderCard span,.v24SortieLeaderCard small{display:block;color:#63597e!important;font-weight:800;line-height:1.45;}
.v24TrainReason{margin-top:12px;padding:12px;border-radius:18px;background:rgba(255,255,255,.94);border:1px solid rgba(84,72,132,.20);}
.v24StatPreview{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:8px;}
.v24StatPreview span{display:block;padding:8px;border-radius:12px;background:#fff7cf;color:#34266a!important;text-align:center;font-weight:1000!important;font-size:12px;}
.v24StartFixed{margin-top:12px!important;background:linear-gradient(180deg,#ffe46e,#ffb46d)!important;color:#3a2400!important;}
#prepScreen .difficultyBtn{background:rgba(255,255,255,.92)!important;color:#33276b!important;}
#prepScreen .difficultyBtn.active{background:linear-gradient(180deg,#fff2a8,#ffd96a)!important;border-color:#f1b92d!important;}
@media(max-width:430px){.v24SortieRows{grid-template-columns:1fr}.v24StatPreview{grid-template-columns:1fr}.v24SortieLeaderCard img{width:58px;height:58px}}

/* ===== END v24_1_4_ui_sortie_fix.css ===== */

/* ===== BEGIN v24_1_6_mobile_fix.css ===== */
/* v24.1.6 mobile visibility fix - SAVE untouched */
#formationScreenV24 .pad,#trainingScreenV24 .pad,#prepScreen .pad{background:rgba(24,34,30,.92)!important;}
#formationScreenV24 .section,#trainingScreenV24 .section,#prepScreen .section.v24ClearPanel,#v24SortieGuide,
#formationScreenV24 .v24FormationActions,#trainingScreenV24 .v24TrainingMain{
  background:linear-gradient(180deg,rgba(255,248,220,.97),rgba(238,232,255,.95))!important;
  color:#27203f!important;
  border:2px solid rgba(92,74,150,.34)!important;
  box-shadow:0 10px 28px rgba(0,0,0,.18)!important;
  opacity:1!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
}
#trainingScreenV24 .v24TrainingMain{background:linear-gradient(180deg,rgba(242,255,230,.98),rgba(255,247,213,.96))!important;}
#formationScreenV24 .section *,#trainingScreenV24 .section *,#prepScreen .section.v24ClearPanel *,#v24SortieGuide *{text-shadow:none!important;opacity:1!important;}
#formationScreenV24 h3,#trainingScreenV24 h3,#prepScreen h3,#v24SortieGuide h3,.v24TrainReason h3{color:#2d235f!important;font-weight:1000!important;}
#formationScreenV24 .helper,#trainingScreenV24 .helper,#prepScreen .helper,#formationScreenV24 span,#trainingScreenV24 span,#v24SortieGuide small{color:#51466f!important;font-weight:900!important;}
#formationScreenV24 .name,#trainingScreenV24 .name,#formationScreenV24 b,#trainingScreenV24 b,#v24SortieGuide b{color:#271d55!important;font-weight:1000!important;}
#formationScreenV24 .btn,#trainingScreenV24 .btn,#prepScreen .btn,#formationScreenV24 .cta,#trainingScreenV24 .cta,#prepScreen .cta{
  color:#33230e!important;text-shadow:none!important;font-weight:1000!important;opacity:1!important;
}
#formationScreenV24 .v24MiniChar,#trainingScreenV24 .v24MiniChar,#formationScreenV24 .v24RosterCard,#trainingScreenV24 .v24RosterCard{
  background:rgba(255,255,255,.98)!important;color:#2d245c!important;border-color:rgba(77,62,135,.28)!important;
}
.v24TrainReason{margin-top:12px;padding:12px;border-radius:18px;background:rgba(255,255,255,.96)!important;border:1px solid rgba(80,65,138,.25)!important;color:#2b225a!important;}
.v24SortieRows{display:grid;grid-template-columns:1fr;gap:8px;margin-top:8px;}
.v24SortieRows>div{background:rgba(255,255,255,.95)!important;border:1px solid rgba(80,65,138,.18);border-radius:14px;padding:9px 10px;display:grid;gap:2px;}
.v24SortieRows small{font-size:11px;color:#6b5f83!important;font-weight:900!important;}.v24SortieRows b{font-size:13px;color:#291f5e!important;}
.v24StatPreview{display:grid;gap:6px;margin-top:10px}.v24StatPreview span{background:#fff7d7!important;border-radius:12px;padding:8px 10px;color:#34266a!important;font-weight:1000!important;}
.v24HiddenBySortieFix{display:none!important;}
#board{touch-action:none;-webkit-user-select:none;user-select:none;}
.cell,.pieceChar,.pieceAttr{touch-action:none;-webkit-user-drag:none;}
@media(max-width:430px){
  #formationScreenV24 .section,#trainingScreenV24 .section,#prepScreen .section.v24ClearPanel,#v24SortieGuide{border-radius:20px!important;}
  #formationScreenV24 .v24MiniChar,#trainingScreenV24 .v24MiniChar{min-height:58px;}
}

/* ===== END v24_1_6_mobile_fix.css ===== */

/* ===== BEGIN v24_1_9_visual_perf_fix.css ===== */
/* v24.1.9 visual/performance fix - SAVE untouched */
/* 出撃準備・編成・育成の白飛び抑制 */
#prepScreen .pad,#formationScreenV24 .pad,#trainingScreenV24 .pad{
  background:linear-gradient(180deg,#17231f,#101916)!important;
}
#prepScreen .section.v24ClearPanel,#v24SortieGuide,
#formationScreenV24 .section,#formationScreenV24 .v24FormationActions,
#trainingScreenV24 .section,#trainingScreenV24 .v24TrainingMain{
  background:linear-gradient(180deg,#fff7df 0%,#eee7ff 100%)!important;
  color:#241b53!important;
  opacity:1!important;
  filter:none!important;
  text-shadow:none!important;
}
#prepScreen .section.v24ClearPanel *,#v24SortieGuide *,
#formationScreenV24 .section *,#trainingScreenV24 .section *{
  opacity:1!important;
  text-shadow:none!important;
}
#prepScreen h3,#v24SortieGuide h3,#formationScreenV24 h3,#trainingScreenV24 h3{
  color:#261b61!important;
}
/* 難易度カードは非選択を濃色、選択を黄金色にして可読性固定 */
#prepScreen .difficultyGrid{gap:12px!important;}
#prepScreen .difficultyBtn,
#formationScreenV24 .difficultyBtn{
  background:linear-gradient(180deg,#2d3a35,#1d2925)!important;
  border:2px solid rgba(255,255,255,.18)!important;
  color:#fff!important;
  box-shadow:0 8px 18px rgba(0,0,0,.22)!important;
}
#prepScreen .difficultyBtn .diffName,
#formationScreenV24 .difficultyBtn .diffName{
  color:#ffe277!important;
  font-weight:1000!important;
}
#prepScreen .difficultyBtn .diffMeta,#prepScreen .difficultyBtn .diffDesc,
#formationScreenV24 .difficultyBtn .diffMeta,#formationScreenV24 .difficultyBtn .diffDesc{
  color:#ffffff!important;
  opacity:1!important;
  font-weight:900!important;
}
#prepScreen .difficultyBtn.active,
#formationScreenV24 .difficultyBtn.active{
  background:linear-gradient(180deg,#fff2a8,#ffd75f)!important;
  border-color:#e6b52c!important;
  color:#302000!important;
}
#prepScreen .difficultyBtn.active .diffName,#prepScreen .difficultyBtn.active .diffMeta,#prepScreen .difficultyBtn.active .diffDesc,
#formationScreenV24 .difficultyBtn.active .diffName,#formationScreenV24 .difficultyBtn.active .diffMeta,#formationScreenV24 .difficultyBtn.active .diffDesc{
  color:#33230a!important;
}
/* 103画像は文字入り素材なのでボタン背景に使わない。文字重なり防止 */
#v24ApplyRecommend,.v24RecommendBtn{
  background-image:linear-gradient(180deg,#ffe46e,#ffb36d)!important;
  background-size:auto!important;
  background-position:center!important;
  color:#332000!important;
  min-height:58px!important;
  letter-spacing:.02em;
}
#v24ApplyRecommend::before{content:'★ ';}
/* 画像が荒ぶって見えるカードを固定 */
.v24SortieLeaderCard,
.v24MiniChar,
.v24TrainCard,
.rosterCard,
.leader-card,
.card{
  transform:none!important;
  will-change:auto!important;
}
.v24SortieLeaderCard img,
.v24MiniChar img,
.v24TrainCard img,
.rosterCard img,
.leader-card img,
.card img{
  animation:none!important;
  transform:none!important;
  transition:none!important;
  will-change:auto!important;
  object-fit:contain!important;
  image-rendering:auto!important;
}
.v24SortieLeaderCard img{
  width:64px!important;
  height:64px!important;
  flex:0 0 64px!important;
  background:#fff7cf!important;
}
/* パズル中の軽量化：エフェクト・影・動きを抑える */
body.battle-active #gameScreen{contain:layout paint style!important;}
body.battle-active .board{gap:4px!important;box-shadow:none!important;}
body.battle-active .cell{transition:transform .08s linear!important;box-shadow:none!important;filter:none!important;}
body.battle-active .cell.spawn,
body.battle-active .cell.fell{
  animation:none!important;
  transition:none!important;
}
body.battle-active .cell.removing{
  animation:v2419Remove .14s linear forwards!important;
  transition:none!important;
}
@keyframes v2419Remove{to{opacity:0;transform:scale(.86)}}
body.battle-active .cell .pieceChar{filter:none!important;}
body.battle-active .cell .pieceAttr{filter:drop-shadow(0 1px 0 rgba(255,255,255,.9))!important;}
body.battle-active .cell .piecePattern{opacity:.08!important;}
body.battle-active .comboPopup.show{animation:comboPopLite .32s ease forwards!important;}
body.battle-active .skillOverlay.show .skillCard img{max-height:32vh!important;}
body.battle-active .damageFlash{display:none!important;}
@media(max-width:430px){
  #prepScreen .difficultyBtn{min-height:84px!important;padding:14px!important;}
  .v24SortieLeaderCard img{width:58px!important;height:58px!important;flex-basis:58px!important;}
  body.battle-active .board{gap:3px!important;padding:6px!important;}
  body.battle-active .cell{border-radius:11px!important;}
}

/* ===== END v24_1_9_visual_perf_fix.css ===== */

/* ===== BEGIN v24_3_0_growth_rewards.css ===== */

/* v24.3.0 growth/reward polish. SAVE_KEY untouched. */
.v243MaterialPanel{
  margin-top:14px;
  padding:14px;
  border-radius:18px;
  background:linear-gradient(180deg,rgba(43,55,28,.94),rgba(27,34,20,.96));
  border:1px solid rgba(238,226,151,.42);
  box-shadow:0 10px 28px rgba(0,0,0,.26);
  color:#fff8cf;
}
.v243MaterialPanel h3{margin:0 0 8px;font-size:18px;color:#fff4a9;text-shadow:0 2px 2px rgba(0,0,0,.45);}
.v243MaterialGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
.v243Mat{
  display:grid;grid-template-columns:50px 1fr;gap:8px;align-items:center;
  min-height:66px;padding:8px;border-radius:14px;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);
}
.v243Mat img{width:50px;height:50px;object-fit:contain;border-radius:12px;background:rgba(255,255,255,.10);}
.v243Mat b{display:block;color:#fff;font-size:13px;line-height:1.2;}
.v243Mat span,.v243Mat small{display:block;color:#f4ebc2;font-size:11px;line-height:1.25;}
.v243Mat.ok{border-color:rgba(150,255,154,.45);background:rgba(73,126,55,.28);}
.v243Mat.lack{border-color:rgba(255,118,118,.55);background:rgba(112,37,37,.32);}
.v243Mat .v243GoDrop{margin-top:4px;padding:4px 8px;border:0;border-radius:999px;background:#ffe680;color:#3d3310;font-weight:800;font-size:11px;}
.v243TrainActions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.v243TrainActions button{flex:1;min-width:110px}
.v243MaterialList{
  margin-top:12px;padding:12px;border-radius:16px;
  background:rgba(0,0,0,.20);border:1px solid rgba(255,255,255,.12);
}
.v243MaterialListTitle{font-weight:900;color:#fff4a9;margin-bottom:8px}
.v243AllMats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;}
.v243AllMat{padding:7px;border-radius:13px;background:rgba(255,255,255,.09);text-align:center;color:#fff}
.v243AllMat img{width:42px;height:42px;object-fit:contain;display:block;margin:0 auto 3px;}
.v243AllMat b{display:block;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.v243AllMat span{display:block;font-size:11px;color:#ffe98f}
.v243MaterialHelp{margin-top:8px;color:#f4ebc2;font-size:12px;line-height:1.45}
.v243TrainingPopup{
  position:relative; width:min(92vw,560px); min-height:240px; margin:12vh auto 0;
  border-radius:24px; overflow:hidden; background:rgba(28,35,20,.96);
  border:1px solid rgba(255,235,137,.42); box-shadow:0 18px 54px rgba(0,0,0,.45);
}
.v243TrainingPopup>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.35}
.v243TrainingPopupBody{position:relative;z-index:1;padding:28px 22px;text-align:center;color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.55)}
.v243TrainingPopupBody h2{margin:0 0 8px;color:#fff4a9;font-size:24px}
.v243TrainingPopupBody p{margin:6px 0;font-weight:800}
.v243ResultMaterialHint{
  margin-top:8px;padding:8px 10px;border-radius:14px;background:rgba(255,244,169,.12);color:#fff4c8;font-size:12px;
}
body.light-mode .v243MaterialPanel,
body.light-mode .v243MaterialList{box-shadow:none}
@media (max-width:430px){
  .v243MaterialGrid{grid-template-columns:1fr}
  .v243AllMats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .v243Mat{grid-template-columns:44px 1fr}
  .v243Mat img{width:44px;height:44px}
}

/* ===== END v24_3_0_growth_rewards.css ===== */

/* ===== BEGIN v24_6_0_scrollless_ui.css ===== */
/* v24.6.0 scrollless UI: screen-level scroll reduction + fixed 5-tab navigation. SAVE untouched. */
:root{--v246-nav-h:74px;--v246-head-h:50px;}
body.v246-scrollless{overscroll-behavior:none;}
body.v246-scrollless .app{padding-bottom:calc(var(--v246-nav-h) + env(safe-area-inset-bottom));}
body.v246-scrollless .screen.active:not(#titleScreen):not(#gameScreen){
  min-height:100dvh;
  max-height:100dvh;
  overflow:hidden!important;
  box-sizing:border-box;
}
body.v246-scrollless .screen.active:not(#titleScreen):not(#gameScreen)>.pad,
body.v246-scrollless .screen.active:not(#titleScreen):not(#gameScreen) .stageMapPage{
  height:100dvh;
  max-height:100dvh;
  overflow:hidden!important;
  box-sizing:border-box;
  padding-bottom:calc(var(--v246-nav-h) + env(safe-area-inset-bottom) + 8px)!important;
}
body.v246-scrollless .topbar,
body.v246-scrollless .homeTopbar,
body.v246-scrollless .mapTopbar{
  min-height:44px;
  margin-bottom:8px!important;
}
body.v246-scrollless .homePad{display:flex;flex-direction:column;gap:8px;}
body.v246-scrollless #homeScreen .homeCurrency,
body.v246-scrollless #homeScreen .playerRankPanel{flex:0 0 auto;}
body.v246-scrollless #homeScreen .homeGuestEventBanner{min-height:54px;max-height:64px;overflow:hidden;flex:0 0 auto;}
body.v246-scrollless #homeScreen .homeGuestEventBanner img{height:54px;object-fit:cover;}
body.v246-scrollless #homeScreen .homeMain{display:grid;grid-template-columns:1fr 1fr;gap:8px;flex:0 0 auto;}
body.v246-scrollless #homeScreen .homeMain .cta,
body.v246-scrollless #homeScreen .homeMain .btn{min-height:52px;margin:0;}
body.v246-scrollless #homeScreen .homeGrid{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  flex:1 1 auto;
  min-height:0;
  overflow:auto!important;
  -webkit-overflow-scrolling:touch;
  padding:2px 2px 8px;
}
body.v246-scrollless #homeScreen .homeGrid .btn{min-height:48px;padding:8px 6px;}
body.v246-scrollless #homeScreen .soundSettingsPanel{display:none!important;}

body.v246-scrollless #prepScreen .sortiePad{display:flex;flex-direction:column;gap:8px;}
body.v246-scrollless #prepScreen .currency,
body.v246-scrollless #prepScreen .playerRankPanel,
body.v246-scrollless #prepScreen .nav:not(.v246-keep){display:none!important;}
body.v246-scrollless #prepScreen .section{margin:0!important;padding:9px!important;}
body.v246-scrollless #prepScreen .stageSelectSection{display:none!important;}
body.v246-scrollless #prepScreen .difficultyGrid{display:flex!important;gap:8px;overflow-x:auto!important;min-height:54px;padding-bottom:2px;-webkit-overflow-scrolling:touch;}
body.v246-scrollless #prepScreen .difficultyBtn{min-width:132px;max-width:132px;min-height:50px;padding:8px!important;}
body.v246-scrollless #prepScreen .diffDesc{display:none!important;}
body.v246-scrollless #prepScreen #leaderList,
body.v246-scrollless #prepScreen #bossSupportList,
body.v246-scrollless #prepScreen #rosterList{max-height:145px;overflow:auto!important;-webkit-overflow-scrolling:touch;}
body.v246-scrollless #prepScreen #rosterList{grid-template-columns:repeat(4,1fr);}
body.v246-scrollless #prepScreen .bossSupportGrid{display:flex!important;gap:8px;overflow-x:auto!important;}
body.v246-scrollless #prepScreen .bossSupportCard{min-width:136px!important;max-width:136px!important;min-height:116px!important;}
body.v246-scrollless #prepScreen #startGame{min-height:58px;flex:0 0 auto;margin-top:auto;}

body.v246-scrollless #trainingScreenV24 .pad,
body.v246-scrollless #collectionScreen .pad,
body.v246-scrollless #bossScreen .pad,
body.v246-scrollless #missionScreen .pad,
body.v246-scrollless #awakenScreen .pad,
body.v246-scrollless #itemScreen .pad,
body.v246-scrollless #highScoreScreen .pad,
body.v246-scrollless #presentBoxScreen .pad,
body.v246-scrollless #loginBonusScreen .pad,
body.v246-scrollless #profileScreen .pad{
  display:flex;
  flex-direction:column;
  gap:8px;
}
body.v246-scrollless #trainingRootV24,
body.v246-scrollless #collectionGrid,
body.v246-scrollless #bossGrid,
body.v246-scrollless #missionList,
body.v246-scrollless #awakenPanel,
body.v246-scrollless #itemList,
body.v246-scrollless #presentList,
body.v246-scrollless #highScoreScreen .section,
body.v246-scrollless #profileScreen .titleGrid{
  min-height:0;
  overflow:auto!important;
  -webkit-overflow-scrolling:touch;
}
body.v246-scrollless #collectionGrid,
body.v246-scrollless #bossGrid{grid-template-columns:repeat(4,1fr);padding:2px 2px 8px;}
body.v246-scrollless #trainingRootV24{padding-bottom:8px;}
body.v246-scrollless #trainingRootV24 .grid4{max-height:230px;overflow:auto!important;}
body.v246-scrollless #stageMapScreen .stageMapWrap{height:min(62dvh,520px)!important;max-height:520px!important;overflow:hidden!important;}
body.v246-scrollless #stageMapScreen .mapFooter{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px;}
body.v246-scrollless #resultScreen .pad{display:flex;flex-direction:column;gap:8px;}
body.v246-scrollless #resultScreen .resultHero{flex:1 1 auto;min-height:0;overflow:auto!important;-webkit-overflow-scrolling:touch;}
body.v246-scrollless #resultScreen .resultActions{display:grid;grid-template-columns:1fr 1fr;gap:8px;flex:0 0 auto;}
body.v246-scrollless #resultScreen .resultActions .wide{grid-column:1/-1;}

.v246BottomNav{
  position:fixed;
  left:0;right:0;bottom:0;
  height:calc(var(--v246-nav-h) + env(safe-area-inset-bottom));
  padding:7px 8px calc(7px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg,rgba(20,34,20,.74),rgba(10,18,12,.98));
  border-top:1px solid rgba(255,255,255,.18);
  backdrop-filter:blur(14px);
  z-index:2100;
  display:none;
  grid-template-columns:repeat(5,1fr);
  gap:6px;
  box-sizing:border-box;
}
body.v246-show-nav .v246BottomNav{display:grid;}
.v246BottomNav button{
  border:1px solid rgba(255,255,255,.16);
  border-radius:16px;
  color:#eaffdb;
  background:rgba(255,255,255,.08);
  font-weight:1000;
  font-size:11px;
  line-height:1.15;
  padding:5px 2px;
  box-shadow:0 6px 18px rgba(0,0,0,.18);
  touch-action:manipulation;
}
.v246BottomNav button span{display:block;font-size:20px;line-height:1.05;margin-bottom:2px;}
.v246BottomNav button.active{
  color:#3b2700;
  background:linear-gradient(180deg,#fff3a7,#ffd166);
  border-color:rgba(255,255,255,.78);
}
.v246MorePanel{
  position:fixed;
  left:10px;right:10px;
  bottom:calc(var(--v246-nav-h) + env(safe-area-inset-bottom) + 10px);
  z-index:2099;
  display:none;
  grid-template-columns:repeat(3,1fr);
  gap:8px;
  padding:12px;
  border-radius:22px;
  background:rgba(16,24,18,.96);
  border:1px solid rgba(255,255,255,.18);
  box-shadow:0 16px 50px rgba(0,0,0,.44);
}
.v246MorePanel.show{display:grid;}
.v246MorePanel button{min-height:46px;border-radius:15px;border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.10);color:#fff;font-weight:1000;}
body.battle-active .v246BottomNav,body.battle-active .v246MorePanel,body.title-active .v246BottomNav,body.title-active .v246MorePanel{display:none!important;}
@media(max-width:370px){.v246BottomNav button{font-size:10px}.v246BottomNav button span{font-size:18px}}

/* ===== END v24_6_0_scrollless_ui.css ===== */

/* ===== BEGIN v24_6_1_ui_assets_bind.css ===== */
/* v24.6.1 UI asset binding 121-150. Visual-only patch. SAVE/localStorage untouched. */
:root{
  --ui121:url('./assets/ui/v246/121_home_background.webp');
  --ui122:url('./assets/ui/v246/122_hero_card_frame.webp');
  --ui123:url('./assets/ui/v246/123_event_notice_card.webp');
  --ui124:url('./assets/ui/v246/124_main_button_frame.webp');
  --ui125:url('./assets/ui/v246/125_bottom_nav_frame.webp');
  --ui126:url('./assets/ui/v246/126_training_background.webp');
  --ui127:url('./assets/ui/v246/127_character_display_card.webp');
  --ui128:url('./assets/ui/v246/128_exp_bar_frame.webp');
  --ui129:url('./assets/ui/v246/129_material_input_panel.webp');
  --ui130:url('./assets/ui/v246/130_training_execute_button.webp');
  --ui131:url('./assets/ui/v246/131_formation_background.webp');
  --ui132:url('./assets/ui/v246/132_difficulty_tab_frame.webp');
  --ui133:url('./assets/ui/v246/133_formation_slot_frame.webp');
  --ui134:url('./assets/ui/v246/134_leader_info_panel.webp');
  --ui135:url('./assets/ui/v246/135_character_list_panel.webp');
  --ui136:url('./assets/ui/v246/136_sortie_prep_background.webp');
  --ui137:url('./assets/ui/v246/137_stage_info_panel.webp');
  --ui138:url('./assets/ui/v246/138_difficulty_display_panel.webp');
  --ui139:url('./assets/ui/v246/139_boss_support_panel.webp');
  --ui140:url('./assets/ui/v246/140_sortie_button.webp');
  --ui141:url('./assets/ui/v246/141_world_map_background.webp');
  --ui142:url('./assets/ui/v246/142_map_display_frame.webp');
  --ui143:url('./assets/ui/v246/143_area_description_panel.webp');
  --ui144:url('./assets/ui/v246/144_stage_node_frame.webp');
  --ui145:url('./assets/ui/v246/145_boss_node_frame.webp');
  --ui146:url('./assets/ui/v246/146_result_background.webp');
  --ui147:url('./assets/ui/v246/147_score_card.webp');
  --ui148:url('./assets/ui/v246/148_material_reward_panel.webp');
  --ui149:url('./assets/ui/v246/149_reward_card.webp');
  --ui150:url('./assets/ui/v246/150_result_button.webp');
}
/* full-page backgrounds */
#homeScreen .pad{background-image:linear-gradient(rgba(255,255,255,.04),rgba(0,0,0,.05)),var(--ui121)!important;background-size:cover!important;background-position:center!important;}
#trainingScreenV24 .pad{background-image:linear-gradient(rgba(255,255,255,.06),rgba(0,0,0,.05)),var(--ui126)!important;background-size:cover!important;background-position:center!important;}
#formationScreenV24 .pad{background-image:linear-gradient(rgba(255,255,255,.06),rgba(0,0,0,.05)),var(--ui131)!important;background-size:cover!important;background-position:center!important;}
#prepScreen .pad{background-image:linear-gradient(rgba(255,255,255,.06),rgba(0,0,0,.07)),var(--ui136)!important;background-size:cover!important;background-position:center!important;}
#stageMapScreen .stageMapPage{background-image:linear-gradient(rgba(255,255,255,.04),rgba(0,0,0,.06)),var(--ui141)!important;background-size:cover!important;background-position:center!important;}
#resultScreen .pad{background-image:linear-gradient(rgba(255,255,255,.05),rgba(0,0,0,.08)),var(--ui146)!important;background-size:cover!important;background-position:center!important;}
/* reusable game panels */
#homeScreen .playerRankPanel{background-image:var(--ui122)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;}
#homeScreen .homeGuestEventBanner{background-image:var(--ui123)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;}
#homeScreen .homeMain .btn,#homeScreen .homeMain .cta,#homeScreen .homeGrid .btn{background-image:var(--ui124)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;color:#321b03!important;text-shadow:0 1px 0 rgba(255,255,255,.5)!important;}
.v246BottomNav{background-image:linear-gradient(rgba(0,0,0,.10),rgba(0,0,0,.25)),var(--ui125)!important;background-size:100% 100%!important;background-color:transparent!important;border-top:0!important;}
#trainingScreenV24 .v24TrainCard,#trainingScreenV24 .v24TrainingMain{background-image:var(--ui127)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;}
#trainingScreenV24 .bar,#trainingScreenV24 .expBar,#trainingScreenV24 [class*="exp"]:not(img):not(button){background-image:var(--ui128);background-size:100% 100%;}
#trainingScreenV24 .v243MaterialPanel,#trainingScreenV24 .v243MaterialBox,#trainingScreenV24 .grid4,#trainingScreenV24 .section:not(.v24TrainingMain){background-image:var(--ui129)!important;background-size:100% 100%!important;background-color:rgba(255,255,255,.72)!important;border-color:transparent!important;}
#trainingScreenV24 .cta,#trainingScreenV24 button[id*="Train"],#trainingScreenV24 button[id*="train"],#trainingScreenV24 button[id*="Use"],#trainingScreenV24 button[id*="use"]{background-image:var(--ui130)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;color:#351d00!important;text-shadow:0 1px 0 rgba(255,255,255,.45)!important;}
#prepScreen .prepStageSummary{background-image:var(--ui137)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;}
#prepScreen .difficultyGrid,#prepScreen .modeSection{background-image:var(--ui138)!important;background-size:100% 100%!important;background-color:rgba(255,255,255,.55)!important;border-color:transparent!important;}
#prepScreen .section:has(.bossSupportGrid),#prepScreen .bossSupportGrid{background-image:var(--ui139)!important;background-size:100% 100%!important;background-color:rgba(255,255,255,.50)!important;border-color:transparent!important;}
#prepScreen #startGame,#prepScreen .cta{background-image:var(--ui140)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;color:#2f1700!important;}
#stageMapScreen .stageMapWrap{background-image:var(--ui142)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;padding:10px!important;box-sizing:border-box!important;}
#stageMapScreen .mapFooter{background-image:var(--ui143)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;border-radius:18px;padding:8px;}
#stageMapScreen .mapNode:not(.boss),#stageMapScreen .stageNode:not(.boss){background-image:var(--ui144)!important;background-size:100% 100%!important;background-color:transparent!important;}
#stageMapScreen .mapNode.boss,#stageMapScreen .stageNode.boss{background-image:var(--ui145)!important;background-size:100% 100%!important;background-color:transparent!important;}
#resultScreen .resultScore,#resultScreen .resultStatus,#resultScreen .resultHighScoreBox{background-image:var(--ui147)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;}
#resultScreen .resultDropBox{background-image:var(--ui148)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;}
#resultScreen .playerExpResult,#resultScreen #rewardText,#resultScreen #resultText{background-image:var(--ui149)!important;background-size:100% 100%!important;background-color:rgba(255,255,255,.50)!important;border-color:transparent!important;border-radius:18px;padding:8px;}
#resultScreen .resultActions .btn,#resultScreen .resultActions .imageStartBtn{background-image:var(--ui150)!important;background-size:100% 100%!important;background-color:transparent!important;border-color:transparent!important;color:#2f1700!important;}
/* legibility guard */
#homeScreen .homeGuestText,#trainingScreenV24 *,#prepScreen *,#resultScreen *,#stageMapScreen .mapFooter *{text-shadow:none!important;}
#trainingScreenV24 h3,#prepScreen h3,#resultScreen b{color:#21154f!important;}
#trainingScreenV24 .helper,#prepScreen .helper,#resultScreen .helper{color:#45395f!important;font-weight:900!important;}

/* ===== END v24_6_1_ui_assets_bind.css ===== */

/* ===== BEGIN v24_6_2_formation_restore.css ===== */
/* v24.6.2 Formation Restore HotFix. Visual/interaction only. */
body.v246-scrollless #formationScreenV24 .pad{
  display:flex!important;
  flex-direction:column!important;
  gap:8px!important;
  min-height:100dvh!important;
  max-height:100dvh!important;
  overflow:hidden!important;
}
body.v246-scrollless #formationRootV24{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow:hidden!important;
  display:flex!important;
  flex-direction:column!important;
  gap:8px!important;
  padding-bottom:calc(82px + env(safe-area-inset-bottom))!important;
}
.v2462Hero,.v2462TeamPanel,.v2462RosterPanel{
  background:rgba(247,244,225,.94)!important;
  border:2px solid rgba(222,205,137,.92)!important;
  border-radius:22px!important;
  padding:10px!important;
  box-shadow:0 10px 26px rgba(0,0,0,.18)!important;
  color:#241a42!important;
}
.v2462Hero{flex:0 0 auto;display:flex;justify-content:space-between;align-items:center;gap:8px}
.v2462Hero b{font-size:18px;color:#28185b!important}.v2462Hero span{font-size:12px;font-weight:900;color:#55496d!important}
.v2462DiffTabs{flex:0 0 auto;display:flex;gap:8px;overflow-x:auto!important;-webkit-overflow-scrolling:touch;padding:2px 0 4px}
.v2462DiffTabs button{min-width:116px;border-radius:18px;border:1px solid rgba(255,255,255,.5);background:rgba(255,255,255,.9);padding:8px;color:#28185b;font-weight:1000;text-align:left;box-shadow:0 5px 14px rgba(0,0,0,.14)}
.v2462DiffTabs button.active{background:linear-gradient(180deg,#fff4a8,#ffd66b)!important;border-color:#ffe37c;color:#3b2600!important}.v2462DiffTabs span{display:block;font-size:11px;color:#58456d}
.v2462TeamPanel{flex:0 0 auto}.v2462TeamPanel h3,.v2462RosterPanel h3{margin:0 0 6px;color:#28185b!important}.v2462TeamSlots{display:flex;gap:8px;overflow-x:auto!important;-webkit-overflow-scrolling:touch;padding-bottom:4px}
.v2462Slot{min-width:92px;max-width:92px;border:1px solid rgba(70,55,90,.2);border-radius:16px;background:#fff;color:#26184b;padding:7px;text-align:center;font-weight:900}.v2462Slot img{width:54px;height:54px;border-radius:14px;object-fit:cover;display:block;margin:0 auto 4px}.v2462Slot b{display:block;font-size:10px;color:#6a4f00}.v2462Slot span{display:block;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.v2462Slot.empty{opacity:.62;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:84px;background:rgba(255,255,255,.62)}
.v2462Actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.v2462Actions button{min-height:42px;border-radius:15px;font-weight:1000}
.v2462RosterPanel{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.v2462RosterPanel .helper{color:#55496d!important;font-weight:900;margin-bottom:6px}.v2462Roster{flex:1 1 auto;min-height:0;overflow:auto!important;-webkit-overflow-scrolling:touch;display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:2px 2px 10px}
.v2462Char{display:flex;align-items:center;gap:8px;border-radius:18px;border:1px solid rgba(70,55,90,.18);background:#fff;color:#251848;padding:7px;text-align:left;min-height:72px;box-shadow:0 5px 14px rgba(0,0,0,.10)}.v2462Char.selected{outline:3px solid #ffd766;background:#fff9d8}.v2462Char.locked{opacity:.4}.v2462Char img{width:50px;height:50px;border-radius:14px;object-fit:cover;flex:0 0 auto}.v2462Char b{display:block;color:#28185b!important;font-size:13px}.v2462Char span,.v2462Char small{display:block;color:#594c69!important;font-weight:900;font-size:11px;line-height:1.25}

/* ===== END v24_6_2_formation_restore.css ===== */

/* ===== BEGIN v24_6_3_sortie_start_text_fix.css ===== */
/* v24.6.3 sortie start + readability hotfix
   SAVE_KEY/localStorage untouched */
body.v246-scrollless #prepScreen .pad,
#prepScreen .pad{
  color:#20172f!important;
}
#prepScreen .topbar b,
#prepScreen .topbar span,
#prepScreen .prepStageSummary,
#prepScreen .prepStageSummary *,
#prepScreen .v24SortieGuide,
#prepScreen .v24SortieGuide *,
#prepScreen .section,
#prepScreen .section *,
#prepScreen .helper,
#prepScreen small,
#prepScreen b,
#prepScreen h3,
#prepScreen .difficultyBtn,
#prepScreen .difficultyBtn *,
#prepScreen .bossSupportCard,
#prepScreen .bossSupportCard *{
  color:#20172f!important;
  text-shadow:none!important;
  opacity:1!important;
}
#prepScreen .mini,
#prepScreen .btn,
#prepScreen .cta,
#prepScreen button{
  color:#2b1b12!important;
  text-shadow:none!important;
  font-weight:1000!important;
}
#prepScreen .section,
#prepScreen .v24SortieGuide,
#prepScreen .prepStageSummary{
  background-color:rgba(255,255,255,.88)!important;
  border-color:rgba(87,70,137,.28)!important;
}
#prepScreen .difficultyBtn{
  background:rgba(23,36,31,.92)!important;
  color:#fff7c9!important;
  border:2px solid rgba(255,230,112,.55)!important;
}
#prepScreen .difficultyBtn *{color:#fff7c9!important;}
#prepScreen .difficultyBtn.active,
#prepScreen .difficultyBtn[aria-pressed="true"]{
  background:linear-gradient(180deg,#fff0a8,#ffd35c)!important;
  color:#2a1b0d!important;
}
#prepScreen .difficultyBtn.active *,
#prepScreen .difficultyBtn[aria-pressed="true"] *{color:#2a1b0d!important;}
#prepScreen #startGame{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
  min-height:64px!important;
  width:100%!important;
  margin:10px 0 88px!important;
  z-index:60!important;
  position:relative!important;
}
#v2463StickyStart{
  position:sticky!important;
  bottom:82px!important;
  left:0!important;
  right:0!important;
  z-index:999!important;
  display:block!important;
  width:100%!important;
  min-height:66px!important;
  margin:10px 0 84px!important;
  border-radius:24px!important;
  border:2px solid rgba(120,83,0,.22)!important;
  background:linear-gradient(180deg,#fff2a8,#ffd453 68%,#ff9fc1)!important;
  box-shadow:0 12px 22px rgba(0,0,0,.25)!important;
  color:#2f1700!important;
  font-size:20px!important;
  font-weight:1000!important;
  text-shadow:none!important;
  pointer-events:auto!important;
}
#prepScreen .v2463ReadabilityNote{
  margin:6px 0 4px;
  padding:8px 10px;
  border-radius:14px;
  background:rgba(255,255,255,.85);
  color:#20172f!important;
  font-weight:900;
}

/* ===== END v24_6_3_sortie_start_text_fix.css ===== */

/* ===== BEGIN v24_7_0_mobile_fixed_layout.css ===== */
/* v24.7.0 Mobile Fixed Layout Guard
   - SAVE_KEY/localStorage untouched
   - iPhone first layout stabilization
   - dark readable text on all non-battle UI
   - bottom nav no-overlap guard */
:root{
  --v247-readable:#1f1933;
  --v247-readable-2:#3f3458;
  --v247-card:rgba(255,255,255,.88);
  --v247-card-strong:rgba(255,255,255,.94);
  --v247-line:rgba(50,34,84,.22);
  --v247-nav-h:64px;
  --v247-start-h:66px;
}
html,body{
  width:100%!important;
  height:100dvh!important;
  min-height:100dvh!important;
  max-height:100dvh!important;
  overflow:hidden!important;
}
body.v247-mobile-guard{
  display:block!important;
  padding:calc(6px + env(safe-area-inset-top)) 0 0!important;
  color:var(--v247-readable)!important;
  background:linear-gradient(160deg,#dff2c9,#fbf0b8 48%,#f8cfe5)!important;
}
body.v247-mobile-guard .app{
  width:min(480px,100vw)!important;
  height:calc(100dvh - env(safe-area-inset-top) - 6px)!important;
  max-height:calc(100dvh - env(safe-area-inset-top) - 6px)!important;
  margin:0 auto!important;
  padding:0 8px calc(var(--v247-nav-h) + env(safe-area-inset-bottom) + 10px)!important;
  overflow:hidden!important;
  display:block!important;
}
body.v247-mobile-guard .screen{
  border-radius:22px!important;
  overflow:hidden!important;
}
body.v247-mobile-guard .screen.active:not(#titleScreen):not(#gameScreen){
  height:100%!important;
  max-height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
  background:rgba(255,255,255,.38)!important;
  border-color:rgba(57,44,86,.20)!important;
  backdrop-filter:none!important;
}
body.v247-mobile-guard .screen.active:not(#titleScreen):not(#gameScreen)>.pad,
body.v247-mobile-guard .screen.active:not(#titleScreen):not(#gameScreen) .stageMapPage{
  height:100%!important;
  max-height:100%!important;
  min-height:0!important;
  overflow:hidden!important;
  padding:9px 9px calc(var(--v247-nav-h) + env(safe-area-inset-bottom) + 12px)!important;
  color:var(--v247-readable)!important;
}

/* Non-battle text: white text ban / no text-shadow */
body.v247-mobile-guard .screen:not(#titleScreen):not(#gameScreen) *:not(img):not(svg):not(path),
body.v247-mobile-guard .v246MorePanel *:not(img),
body.v247-mobile-guard .v246BottomNav *:not(img){
  color:var(--v247-readable)!important;
  text-shadow:none!important;
  opacity:1!important;
}
body.v247-mobile-guard .helper,
body.v247-mobile-guard .meta,
body.v247-mobile-guard .sub,
body.v247-mobile-guard small,
body.v247-mobile-guard .cur small,
body.v247-mobile-guard .bossSupportDesc,
body.v247-mobile-guard .v2462Char span,
body.v247-mobile-guard .v2462Char small{
  color:var(--v247-readable-2)!important;
  opacity:1!important;
}
body.v247-mobile-guard .section,
body.v247-mobile-guard .cur,
body.v247-mobile-guard .stage-card,
body.v247-mobile-guard .leader-card,
body.v247-mobile-guard .card,
body.v247-mobile-guard .prepStageSummary,
body.v247-mobile-guard .v24SortieGuide,
body.v247-mobile-guard .v2462Hero,
body.v247-mobile-guard .v2462TeamPanel,
body.v247-mobile-guard .v2462RosterPanel,
body.v247-mobile-guard .rankingGuide,
body.v247-mobile-guard .rankingSubmitBox,
body.v247-mobile-guard .profileHero,
body.v247-mobile-guard .resultHero{
  background:var(--v247-card)!important;
  border-color:var(--v247-line)!important;
  color:var(--v247-readable)!important;
  backdrop-filter:none!important;
}
body.v247-mobile-guard .btn,
body.v247-mobile-guard .mini,
body.v247-mobile-guard button:not(.cell):not(.imageMenuBtn):not(.imageStartBtn):not(.skillBig):not(.shuffleBig){
  color:#241735!important;
  background:linear-gradient(180deg,#ffffff,#f6efd4)!important;
  border-color:rgba(50,34,84,.24)!important;
  text-shadow:none!important;
  box-shadow:0 4px 10px rgba(45,35,70,.12)!important;
}
body.v247-mobile-guard .cta,
body.v247-mobile-guard #startGame,
body.v247-mobile-guard #v247StartDock{
  color:#321a00!important;
  background:linear-gradient(180deg,#fff2a8,#ffd453 68%,#ffb2cf)!important;
  border-color:rgba(120,83,0,.22)!important;
  text-shadow:none!important;
}

/* Home: fixed page, only button grid scrolls */
body.v247-mobile-guard #homeScreen .homePad{
  display:flex!important;
  flex-direction:column!important;
  gap:6px!important;
  overflow:hidden!important;
  padding:9px 9px calc(var(--v247-nav-h) + env(safe-area-inset-bottom) + 12px)!important;
}
body.v247-mobile-guard #homeScreen .homeTopbar,
body.v247-mobile-guard #homeScreen .homeCurrency,
body.v247-mobile-guard #homeScreen .playerRankPanel,
body.v247-mobile-guard #homeScreen .homeGuestEventBanner,
body.v247-mobile-guard #homeScreen .homeMain{
  flex:0 0 auto!important;
  margin:0!important;
}
body.v247-mobile-guard #homeScreen .homeTopbar{min-height:40px!important;}
body.v247-mobile-guard #homeScreen .homeCurrency{gap:6px!important;}
body.v247-mobile-guard #homeScreen .cur{padding:7px 9px!important;border-radius:15px!important;}
body.v247-mobile-guard #homeScreen .playerRankPanel{max-height:64px!important;overflow:hidden!important;padding:7px 9px!important;}
body.v247-mobile-guard #homeScreen .homeGuestEventBanner{
  min-height:46px!important;
  max-height:50px!important;
  border-radius:16px!important;
  overflow:hidden!important;
}
body.v247-mobile-guard #homeScreen .homeGuestEventBanner img{height:50px!important;object-fit:cover!important;}
body.v247-mobile-guard #homeScreen .homeGuestText{padding:6px 8px!important;background:rgba(255,255,255,.80)!important;}
body.v247-mobile-guard #homeScreen .homeGuestText b{font-size:12px!important;line-height:1.15!important;}
body.v247-mobile-guard #homeScreen .homeGuestText span{font-size:10px!important;line-height:1.15!important;}
body.v247-mobile-guard #homeScreen .homeMain{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:7px!important;
}
body.v247-mobile-guard #homeScreen .homeMain .cta,
body.v247-mobile-guard #homeScreen .homeMain .btn{min-height:46px!important;padding:8px 6px!important;margin:0!important;}
body.v247-mobile-guard #homeScreen .homeGrid{
  flex:1 1 auto!important;
  min-height:0!important;
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  grid-auto-rows:minmax(43px,auto)!important;
  gap:7px!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  -webkit-overflow-scrolling:touch!important;
  overscroll-behavior:contain!important;
  padding:2px 2px calc(var(--v247-nav-h) + env(safe-area-inset-bottom) + 18px)!important;
}
body.v247-mobile-guard #homeScreen .homeGrid .btn{min-height:43px!important;padding:7px 6px!important;font-size:13px!important;border-radius:15px!important;}
body.v247-mobile-guard #homeScreen .soundSettingsPanel{display:none!important;}

/* Sortie prep: formation stays out; visible start button fixed above nav */
body.v247-mobile-guard #prepScreen .sortiePad{
  display:block!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  -webkit-overflow-scrolling:touch!important;
  overscroll-behavior:contain!important;
  padding:9px 9px calc(var(--v247-nav-h) + var(--v247-start-h) + env(safe-area-inset-bottom) + 30px)!important;
}
body.v247-mobile-guard #prepScreen .currency,
body.v247-mobile-guard #prepScreen #prepRankPanel,
body.v247-mobile-guard #prepScreen>.pad>.nav,
body.v247-mobile-guard #prepScreen .stageSelectSection{
  display:none!important;
}
body.v247-mobile-guard #prepScreen .section{margin-top:8px!important;padding:9px!important;border-radius:18px!important;}
body.v247-mobile-guard #prepScreen .v24SortieGuide{margin:8px 0!important;padding:9px!important;border-radius:18px!important;}
body.v247-mobile-guard #prepScreen .v24SortieRows{grid-template-columns:1fr 1fr!important;gap:6px!important;}
body.v247-mobile-guard #prepScreen .v24SortieRows>div{padding:7px 8px!important;border-radius:12px!important;background:rgba(255,255,255,.92)!important;}
body.v247-mobile-guard #prepScreen .v24SortieRows small{font-size:10px!important;margin-bottom:1px!important;}
body.v247-mobile-guard #prepScreen .v24SortieRows b{font-size:12px!important;line-height:1.2!important;}
body.v247-mobile-guard #prepScreen .v24SortieLeaderCard{padding:7px!important;gap:8px!important;border-radius:14px!important;}
body.v247-mobile-guard #prepScreen .v24SortieLeaderCard img{width:48px!important;height:48px!important;}
body.v247-mobile-guard #prepScreen .v24SortieLeaderCard b{font-size:13px!important;}
body.v247-mobile-guard #prepScreen .v24SortieLeaderCard span,
body.v247-mobile-guard #prepScreen .v24SortieLeaderCard small{font-size:10px!important;line-height:1.25!important;}
body.v247-mobile-guard #prepScreen .difficultyGrid{
  display:flex!important;
  gap:7px!important;
  min-height:50px!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  padding:2px 0 4px!important;
  -webkit-overflow-scrolling:touch!important;
}
body.v247-mobile-guard #prepScreen .difficultyBtn{min-width:118px!important;max-width:118px!important;min-height:46px!important;padding:7px!important;border-radius:14px!important;}
body.v247-mobile-guard #prepScreen #bossSupportList,
body.v247-mobile-guard #prepScreen .bossSupportGrid{
  display:flex!important;
  gap:7px!important;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  -webkit-overflow-scrolling:touch!important;
  padding-bottom:4px!important;
}
body.v247-mobile-guard #prepScreen .bossSupportCard{min-width:128px!important;max-width:128px!important;min-height:108px!important;padding:7px!important;}
body.v247-mobile-guard #prepScreen .bossFrameBox{height:58px!important;}
body.v247-mobile-guard #prepScreen .bossSupportBoss{width:46px!important;height:46px!important;}
body.v247-mobile-guard #prepScreen .bossSupportName{font-size:11px!important;}
body.v247-mobile-guard #prepScreen .bossSupportDesc{font-size:9px!important;max-height:24px!important;}
body.v247-mobile-guard #prepScreen #v2463StickyStart{display:none!important;}
body.v247-mobile-guard #prepScreen #startGame{
  position:fixed!important;
  left:50%!important;
  transform:translateX(-50%)!important;
  bottom:calc(var(--v247-nav-h) + env(safe-area-inset-bottom) + 8px)!important;
  width:min(456px,calc(100vw - 24px))!important;
  height:var(--v247-start-h)!important;
  min-height:var(--v247-start-h)!important;
  margin:0!important;
  z-index:10020!important;
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
  border-radius:24px!important;
  font-size:19px!important;
  font-weight:1000!important;
  box-shadow:0 12px 22px rgba(75,48,0,.24)!important;
}

/* Formation / lists: inner scroll only */
body.v247-mobile-guard #formationScreenV24 .pad,
body.v247-mobile-guard #trainingScreenV24 .pad,
body.v247-mobile-guard #collectionScreen .pad,
body.v247-mobile-guard #bossScreen .pad,
body.v247-mobile-guard #itemScreen .pad,
body.v247-mobile-guard #missionScreen .pad,
body.v247-mobile-guard #highScoreScreen .pad,
body.v247-mobile-guard #presentBoxScreen .pad,
body.v247-mobile-guard #loginBonusScreen .pad,
body.v247-mobile-guard #profileScreen .pad{
  display:flex!important;
  flex-direction:column!important;
  gap:7px!important;
  overflow:hidden!important;
}
body.v247-mobile-guard #formationRootV24,
body.v247-mobile-guard #trainingRootV24,
body.v247-mobile-guard #collectionGrid,
body.v247-mobile-guard #bossGrid,
body.v247-mobile-guard #itemList,
body.v247-mobile-guard #missionList,
body.v247-mobile-guard #presentList,
body.v247-mobile-guard #highScoreScreen .section,
body.v247-mobile-guard #profileScreen .titleGrid{
  flex:1 1 auto!important;
  min-height:0!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  -webkit-overflow-scrolling:touch!important;
  overscroll-behavior:contain!important;
  padding-bottom:calc(var(--v247-nav-h) + env(safe-area-inset-bottom) + 12px)!important;
}
body.v247-mobile-guard #collectionGrid,
body.v247-mobile-guard #bossGrid{grid-template-columns:repeat(3,minmax(0,1fr))!important;}

/* Stage map modal/tap guard */
body.v247-mobile-guard #stageMapScreen .stageMapPage{display:flex!important;flex-direction:column!important;gap:8px!important;}
body.v247-mobile-guard #stageMapScreen .stageMapWrap{
  flex:1 1 auto!important;
  min-height:0!important;
  height:auto!important;
  max-height:none!important;
  touch-action:manipulation!important;
}
body.v247-mobile-guard #stageMapScreen .mapFooter{flex:0 0 auto!important;margin:0!important;}
body.v247-mobile-guard .stageModal,
body.v247-mobile-guard .stageInfoOverlay,
body.v247-mobile-guard #stageInfoOverlay{
  touch-action:manipulation!important;
}

/* Bottom navigation: compact, readable, non-overlapping */
body.v247-mobile-guard .v246BottomNav{
  position:fixed!important;
  left:50%!important;
  right:auto!important;
  transform:translateX(-50%)!important;
  bottom:calc(4px + env(safe-area-inset-bottom))!important;
  width:min(456px,calc(100vw - 16px))!important;
  height:var(--v247-nav-h)!important;
  max-height:var(--v247-nav-h)!important;
  padding:5px 6px!important;
  display:none;
  grid-template-columns:repeat(5,1fr)!important;
  gap:5px!important;
  border-radius:20px!important;
  border:1px solid rgba(80,63,112,.22)!important;
  background:rgba(255,252,234,.96)!important;
  box-shadow:0 12px 30px rgba(40,28,60,.24)!important;
  backdrop-filter:none!important;
  z-index:10010!important;
  overflow:hidden!important;
}
body.v247-mobile-guard.v246-show-nav .v246BottomNav{display:grid!important;}
body.v247-mobile-guard .v246BottomNav button{
  min-width:0!important;
  min-height:52px!important;
  height:52px!important;
  padding:3px 2px!important;
  border-radius:15px!important;
  background:rgba(255,255,255,.92)!important;
  border:1px solid rgba(50,34,84,.20)!important;
  color:#241735!important;
  font-size:10px!important;
  line-height:1.05!important;
  box-shadow:none!important;
}
body.v247-mobile-guard .v246BottomNav button span{font-size:18px!important;line-height:1!important;margin-bottom:2px!important;}
body.v247-mobile-guard .v246BottomNav button.active{
  background:linear-gradient(180deg,#fff2a6,#ffd35d)!important;
  color:#321a00!important;
  border-color:rgba(137,93,0,.30)!important;
}
body.v247-mobile-guard .v246MorePanel{
  left:50%!important;
  right:auto!important;
  transform:translateX(-50%)!important;
  bottom:calc(var(--v247-nav-h) + env(safe-area-inset-bottom) + 12px)!important;
  width:min(456px,calc(100vw - 20px))!important;
  grid-template-columns:repeat(3,1fr)!important;
  background:rgba(255,252,234,.98)!important;
  border-color:rgba(80,63,112,.22)!important;
  box-shadow:0 14px 34px rgba(40,28,60,.26)!important;
  z-index:10009!important;
}
body.v247-mobile-guard .v246MorePanel button{min-height:44px!important;border-radius:14px!important;font-size:12px!important;}
body.v247-mobile-guard.battle-active .v246BottomNav,
body.v247-mobile-guard.battle-active .v246MorePanel,
body.v247-mobile-guard.title-active .v246BottomNav,
body.v247-mobile-guard.title-active .v246MorePanel{display:none!important;}

@media(max-width:390px){
  :root{--v247-nav-h:60px;--v247-start-h:62px;}
  body.v247-mobile-guard .app{padding-left:5px!important;padding-right:5px!important;}
  body.v247-mobile-guard .screen.active:not(#titleScreen):not(#gameScreen)>.pad,
  body.v247-mobile-guard .screen.active:not(#titleScreen):not(#gameScreen) .stageMapPage{padding-left:7px!important;padding-right:7px!important;}
  body.v247-mobile-guard #homeScreen .playerRankPanel{display:none!important;}
  body.v247-mobile-guard #homeScreen .homeGuestEventBanner{max-height:46px!important;min-height:42px!important;}
  body.v247-mobile-guard #homeScreen .homeGuestEventBanner img{height:46px!important;}
  body.v247-mobile-guard #homeScreen .homeGrid{grid-auto-rows:minmax(41px,auto)!important;gap:6px!important;}
  body.v247-mobile-guard #homeScreen .homeGrid .btn{min-height:41px!important;font-size:12px!important;}
  body.v247-mobile-guard #prepScreen .v24SortieRows{grid-template-columns:1fr!important;}
  body.v247-mobile-guard .v246BottomNav button span{font-size:17px!important;}
}

/* ===== END v24_7_0_mobile_fixed_layout.css ===== */

/* ===== v24.7.5 single formation + center cut-in cleanup ===== */
#homeScreen .homeGrid .v2475HiddenDuplicate{display:none!important;}
.skillOverlay.v2475CenterCutin{
  position:fixed!important;
  inset:0!important;
  z-index:1500!important;
  display:none;
  place-items:center!important;
  padding:16px!important;
  background:rgba(13,8,28,.42)!important;
  pointer-events:none!important;
}
.skillOverlay.v2475CenterCutin.show{display:grid!important;}
.skillOverlay.v2475CenterCutin .skillCard{
  width:min(92vw, 560px)!important;
  max-width:560px!important;
  display:block!important;
  padding:10px 10px 14px!important;
  border-radius:26px!important;
  background:linear-gradient(180deg,rgba(255,255,255,.97),rgba(255,248,218,.98))!important;
  border:2px solid rgba(255,216,80,.94)!important;
  box-shadow:0 18px 42px rgba(0,0,0,.34)!important;
  text-align:center!important;
  opacity:0;
  transform:scale(.94);
  animation:v2475SkillCenter .98s ease forwards!important;
}
.skillOverlay.v2475CenterCutin .skillCard img{
  display:block!important;
  width:100%!important;
  max-width:540px!important;
  height:auto!important;
  max-height:56svh!important;
  margin:0 auto!important;
  object-fit:contain!important;
  border-radius:20px!important;
  background:transparent!important;
  box-shadow:none!important;
}
.skillOverlay.v2475CenterCutin .skillTitle{
  margin:8px 0 0!important;
  font-size:clamp(23px,5.6vw,36px)!important;
  line-height:1.12!important;
  font-weight:1000!important;
  color:#24154f!important;
  text-shadow:none!important;
}
.skillOverlay.v2475CenterCutin .helper{
  margin-top:4px!important;
  font-size:clamp(12px,3.1vw,15px)!important;
  color:#4a3b68!important;
  font-weight:1000!important;
}
@keyframes v2475SkillCenter{
  0%{opacity:0;transform:scale(.94)}
  12%{opacity:1;transform:scale(1)}
  82%{opacity:1;transform:scale(1)}
  100%{opacity:0;transform:translateY(-6px) scale(.985)}
}
@media(max-height:740px){
  .skillOverlay.v2475CenterCutin .skillCard img{max-height:47svh!important;}
}
.v2475FormationRoot .v2462Hero{margin-bottom:10px!important;}
.v2475FormationRoot .v2475OwnedOnlyNotice{font-size:12px;font-weight:1000;color:#30224f;margin:4px 0 10px;}
.v2475FormationRoot .v2462Slot.leader,
.v2475FormationRoot .v2462Char.leader{outline:3px solid #ffd766!important;background:linear-gradient(180deg,#fff7b6,#fffdf1)!important;}
.v2475FormationRoot .v2462Slot{cursor:pointer;}
.v2475FormationRoot .v2462Char{align-items:flex-start!important;}
.v2475FormationRoot .v2462Roster{max-height:min(34svh,360px)!important;overflow:auto!important;padding-right:4px!important;}
.v2475FormationRoot .v2475CharBtns{display:grid;grid-template-columns:1fr 62px;gap:6px;margin-top:6px;}
.v2475FormationRoot .v2475CharBtns button{min-height:30px;border-radius:12px;border:1px solid rgba(64,42,84,.18);font-weight:1000;color:#22183d;background:#fff8dc;}
.v2475FormationRoot .v2475CharBtns .remove{background:#fff;color:#5a4d62;}
.v2475FormationRoot .v2475EmptyOwned{padding:16px;border-radius:18px;background:#fff9e8;border:1px solid rgba(80,60,100,.16);font-weight:1000;color:#2b214a;}


/* ===== v24.7.6 final home grid + center cut-in stabilizer ===== */
#homeScreen .homeGrid{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;overflow:visible!important;}
#homeScreen .homeGrid .v2476HomeBtn{display:block!important;min-height:52px!important;white-space:nowrap!important;}
.skillOverlay.v2476CenterCutin{position:fixed!important;inset:0!important;z-index:1800!important;display:none;place-items:center!important;padding:16px!important;background:rgba(10,7,26,.48)!important;pointer-events:none!important;}
.skillOverlay.v2476CenterCutin.show{display:grid!important;}
.skillOverlay.v2476CenterCutin .skillCard{width:min(94vw,620px)!important;max-width:620px!important;display:block!important;padding:10px 10px 14px!important;border-radius:26px!important;background:linear-gradient(180deg,rgba(255,255,255,.98),rgba(255,248,220,.99))!important;border:2px solid rgba(255,216,80,.96)!important;box-shadow:0 18px 42px rgba(0,0,0,.34)!important;text-align:center!important;opacity:0;transform:scale(.94);animation:v2476SkillCenter .98s ease forwards!important;}
.skillOverlay.v2476CenterCutin .skillCard img{display:block!important;width:100%!important;max-width:590px!important;height:auto!important;max-height:58svh!important;margin:0 auto!important;object-fit:contain!important;border-radius:20px!important;background:transparent!important;box-shadow:none!important;}
.skillOverlay.v2476CenterCutin .skillTitle{margin:8px 0 0!important;font-size:clamp(24px,5.8vw,38px)!important;line-height:1.12!important;font-weight:1000!important;color:#24154f!important;text-shadow:none!important;}
.skillOverlay.v2476CenterCutin .helper{margin-top:4px!important;font-size:clamp(12px,3.1vw,15px)!important;color:#4a3b68!important;font-weight:1000!important;}
@keyframes v2476SkillCenter{0%{opacity:0;transform:scale(.90)}12%{opacity:1;transform:scale(1)}80%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.02)}}
@media(max-width:430px){.skillOverlay.v2476CenterCutin .skillCard{width:min(94vw,390px)!important;padding:8px 8px 12px!important;border-radius:22px!important}.skillOverlay.v2476CenterCutin .skillCard img{max-height:50svh!important;border-radius:16px!important}#homeScreen .homeGrid .v2476HomeBtn{min-height:48px!important;font-size:15px!important}}
