/* travelling player character on the 8-world map */
.mapTraveler{position:absolute;z-index:13;width:72px;height:84px;object-fit:contain;pointer-events:none;filter:drop-shadow(0 12px 12px #000b);transform:translate(-50%,-72%);transition:top 1.3s cubic-bezier(.22,.78,.24,1),left 1.3s cubic-bezier(.22,.78,.24,1),opacity .25s ease;will-change:top,left,transform;}
.mapTraveler.atRest{animation:mapIdle 2.6s ease-in-out infinite}
.mapTraveler.travelling{animation:mapWalk .34s ease-in-out infinite alternate;filter:drop-shadow(0 14px 13px #000c) saturate(1.08);}
.mapTraveler.arrived{animation:mapArrive .5s cubic-bezier(.2,.9,.3,1)}
.travelTag{position:absolute;z-index:14;transform:translate(-50%,-50%);padding:6px 10px;border-radius:999px;background:#071019e8;border:1px solid #f5cf6875;color:#fff4c5;font-size:9px;font-weight:950;letter-spacing:.04em;white-space:nowrap;pointer-events:none;opacity:0;transition:opacity .22s ease,top 1.3s cubic-bezier(.22,.78,.24,1),left 1.3s cubic-bezier(.22,.78,.24,1);box-shadow:0 8px 20px #0007}
.travelTag.show{opacity:1}
@keyframes mapIdle{0%,100%{transform:translate(-50%,-72%) translateY(0)}50%{transform:translate(-50%,-72%) translateY(-4px)}}
@keyframes mapWalk{from{transform:translate(-50%,-72%) translateY(2px) rotate(-2deg) scale(.98)}to{transform:translate(-50%,-72%) translateY(-4px) rotate(2deg) scale(1.02)}}
@keyframes mapArrive{0%{transform:translate(-50%,-72%) scale(.9)}60%{transform:translate(-50%,-72%) scale(1.08)}100%{transform:translate(-50%,-72%) scale(1)}}
@media(max-width:390px){.mapTraveler{width:64px;height:76px}.travelTag{font-size:8px;padding:5px 8px}}
@media(prefers-reduced-motion:reduce){.mapTraveler{transition:none!important;animation:none!important}.travelTag{transition:none!important}}

/* V8.6 — character identity + lightweight turn-based boss battle */
.quizAvatar{width:44px;height:44px;border-radius:14px;border:1px solid #ffffff20;background:linear-gradient(#163248,#0d1d2b);display:grid;place-items:center;overflow:hidden;flex:0 0 44px;box-shadow:inset 0 0 18px #5cecff12}.quizAvatar img{width:42px;height:42px;object-fit:contain;filter:drop-shadow(0 5px 5px #0009);transform-origin:50% 82%}.quizAvatar.cheer img{animation:quizCheer .58s cubic-bezier(.18,.89,.32,1.25)}.quizAvatar.hurt img{animation:quizHurt .5s ease}.quizAvatar.ready img{animation:quizIdle 2.2s ease-in-out infinite}@keyframes quizIdle{50%{transform:translateY(-2px)}}@keyframes quizCheer{0%{transform:translateY(0) scale(1)}35%{transform:translateY(-9px) scale(1.08) rotate(-4deg)}70%{transform:translateY(1px) scale(.98) rotate(3deg)}100%{transform:none}}@keyframes quizHurt{0%,100%{transform:none}20%{transform:translateX(-4px) rotate(-5deg)}40%{transform:translateX(5px) rotate(5deg);opacity:.65}60%{transform:translateX(-3px) rotate(-3deg)}80%{transform:translateX(2px)}}

/* Boss battle HUD */
.bossArena{height:400px;background:radial-gradient(circle at 70% 38%,#9a48db35,transparent 29%),radial-gradient(circle at 22% 82%,#43c8ff20,transparent 25%),linear-gradient(180deg,#171327,#090b12 72%);isolation:isolate}.fighterHud{position:absolute;z-index:12;width:48%;padding:8px 9px;border-radius:13px;background:#071019dd;border:1px solid #ffffff20;backdrop-filter:blur(5px);box-shadow:0 9px 18px #0007}.bossHud{top:12px;right:10px}.playerHud{left:10px;bottom:12px}.hudLine{display:flex;justify-content:space-between;gap:6px;align-items:center;font-size:8px;color:#cad4df}.hudLine b{font-size:10px;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:58%}.hpBar{height:8px;margin-top:5px;border-radius:99px;background:#ffffff12;overflow:hidden;box-shadow:inset 0 1px 3px #0008}.hpBar i{display:block;width:100%;height:100%;transition:width .55s cubic-bezier(.25,.8,.25,1),background .3s}.bossBar i{background:linear-gradient(90deg,#ff5c72,#ff9f72)}.playerBar i{background:linear-gradient(90deg,#53db88,#b7f27b)}.bossImg{width:62%;height:64%;left:62%;top:16%;animation:bossBattleIdle 2.6s ease-in-out infinite;transform-origin:50% 70%}.bossPlayer{width:128px;height:145px;left:4%;bottom:46px;animation:playerBattleIdle 2.15s ease-in-out infinite;transform-origin:50% 90%;z-index:7}.bossName{bottom:21%;left:64%;font-size:18px;width:64%}.battleText{position:absolute;z-index:15;left:50%;top:64%;transform:translateX(-50%);max-width:60%;padding:7px 11px;border-radius:12px;background:#071019e8;border:1px solid #ffffff24;font-size:10px;font-weight:900;text-align:center;line-height:1.25;color:#fff;box-shadow:0 8px 16px #0009;opacity:.92;pointer-events:none}.particles{z-index:2}.attackFx{position:absolute;z-index:10;width:34px;height:34px;border-radius:50%;opacity:0;pointer-events:none;will-change:transform,opacity}.playerFx{left:20%;bottom:35%;background:radial-gradient(circle,#fff 0 15%,var(--player-fx,#67e8ff) 35%,transparent 72%);box-shadow:0 0 18px var(--player-fx,#67e8ff)}.bossFx{right:27%;top:40%;background:radial-gradient(circle,#fff 0 10%,#a76dff 35%,transparent 72%);box-shadow:0 0 20px #9f5aff}.impactFx{position:absolute;z-index:11;left:62%;top:42%;transform:translate(-50%,-50%) scale(.4);font-size:70px;color:#fff6bb;text-shadow:0 0 14px #fff,0 0 28px #ffcb51;opacity:0;pointer-events:none}.bossArena.player-attack .bossPlayer{animation:playerLunge .55s cubic-bezier(.18,.8,.24,1)}.bossArena.player-attack .playerFx{animation:orbToBoss .48s ease-out}.bossArena.boss-hurt .bossImg{animation:bossHurt .56s ease}.bossArena.boss-hurt .impactFx{animation:impactPop .5s ease}.bossArena.boss-attack .bossImg{animation:bossLunge .58s cubic-bezier(.18,.8,.24,1)}.bossArena.boss-attack .bossFx{animation:orbToPlayer .5s ease-out}.bossArena.player-hurt{animation:arenaShake .42s ease}.bossArena.player-hurt .bossPlayer{animation:playerHurt .58s ease}.bossArena.boss-ko .bossImg{animation:bossKO .9s ease forwards}.bossArena.player-ko .bossPlayer{animation:playerKO .9s ease forwards}.bossAns button:disabled{opacity:.78}.bossAns button.answer-correct{border-color:#6fd092!important;background:#183326!important;box-shadow:0 0 0 1px #6fd09233}.bossAns button.answer-wrong{border-color:#e36e6e!important;background:#351b1b!important}.bossAns .retryBoss{grid-column:1/-1;background:linear-gradient(#f6d36c,#e9aa32);color:#241807;border-color:#ffe5a0;font-size:14px}.bossQ{padding-bottom:calc(12px + env(safe-area-inset-bottom))}
@keyframes bossBattleIdle{0%,100%{transform:translateX(-50%) translateY(0) scale(1)}50%{transform:translateX(-50%) translateY(-6px) scale(1.015)}}@keyframes playerBattleIdle{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}@keyframes playerLunge{0%{transform:translate(0,0) scale(1)}38%{transform:translate(86px,-54px) scale(1.12) rotate(-4deg)}58%{transform:translate(94px,-57px) scale(1.06)}100%{transform:none}}@keyframes orbToBoss{0%{opacity:0;transform:translate(0,0) scale(.55)}15%{opacity:1}80%{opacity:1}100%{opacity:0;transform:translate(188px,-106px) scale(1.5)}}@keyframes bossHurt{0%{transform:translateX(-50%)}18%{transform:translateX(-56%) rotate(-4deg) scale(.98);filter:brightness(1.9) drop-shadow(0 0 20px #ffbd55)}36%{transform:translateX(-45%) rotate(4deg)}54%{transform:translateX(-53%) rotate(-2deg)}100%{transform:translateX(-50%)}}@keyframes impactPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(0)}35%{opacity:1;transform:translate(-50%,-50%) scale(1.25) rotate(30deg)}100%{opacity:0;transform:translate(-50%,-50%) scale(1.7) rotate(70deg)}}@keyframes bossLunge{0%{transform:translateX(-50%) translateY(0) scale(1)}35%{transform:translateX(-61%) translateY(34px) scale(1.08)}60%{transform:translateX(-63%) translateY(36px) scale(1.06)}100%{transform:translateX(-50%)}}@keyframes orbToPlayer{0%{opacity:0;transform:translate(0,0) scale(.6)}15%{opacity:1}82%{opacity:1}100%{opacity:0;transform:translate(-230px,128px) scale(1.45)}}@keyframes playerHurt{0%{transform:none}18%{transform:translate(-11px,5px) rotate(-8deg);filter:brightness(1.8) saturate(.2) drop-shadow(0 0 18px #ff5e6e)}36%{transform:translate(8px,1px) rotate(5deg)}56%{transform:translate(-5px,2px) rotate(-3deg)}100%{transform:none}}@keyframes arenaShake{0%,100%{transform:none}20%{transform:translateX(-4px)}40%{transform:translateX(4px)}60%{transform:translateX(-3px)}80%{transform:translateX(2px)}}@keyframes bossKO{0%{transform:translateX(-50%) scale(1);opacity:1}25%{transform:translateX(-50%) rotate(-6deg) scale(1.04)}100%{transform:translateX(-50%) translateY(65px) rotate(9deg) scale(.72);opacity:.18;filter:grayscale(.7)}}@keyframes playerKO{0%{transform:none;opacity:1}100%{transform:translateY(28px) rotate(-12deg) scale(.8);opacity:.28;filter:grayscale(.75)}}
@media(max-height:740px){.bossArena{height:345px}.bossImg{height:60%;top:17%}.bossPlayer{width:112px;height:126px;bottom:42px}.fighterHud{padding:6px 7px}.battleText{font-size:9px;top:63%}.bossName{bottom:20%;font-size:16px}.bossQ h2{font-size:17px;margin:4px 0 7px}.bossAns button{min-height:45px}}
@media(max-width:390px){.fighterHud{width:51%}.bossPlayer{width:112px}.battleText{max-width:62%}.bossName{font-size:16px}}
@media(prefers-reduced-motion:reduce){.quizAvatar.ready img,.bossImg,.bossPlayer{animation:none!important}.bossArena.player-attack .bossPlayer,.bossArena.boss-hurt .bossImg,.bossArena.boss-attack .bossImg,.bossArena.player-hurt .bossPlayer{animation-duration:.001ms!important}}

/* V8.8 — regular gameplay is now an expedition, bosses appear only in boss challenges */
.questHud{display:grid;grid-template-columns:74px 1fr 62px;gap:8px;align-items:center;margin:6px 0 10px;padding:9px;border:1px solid #ffffff16;border-radius:18px;background:linear-gradient(180deg,#101925,#0a1018);box-shadow:inset 0 1px 0 #ffffff08;overflow:hidden;position:relative}
.questHero{text-align:center;min-width:0}.questHero img{width:58px;height:58px;object-fit:contain;filter:drop-shadow(0 8px 8px #0009);transform-origin:50% 85%}.questHero span{display:block;font-size:9px;font-weight:950;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.questJourney{min-width:0}.questMode{font-size:10px;font-weight:950;color:#fff1b8;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.questPath{display:flex;gap:4px}.questPath i{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:#ffffff0d;border:1px solid #ffffff14;color:#8da0af;font-size:8px;font-style:normal;font-weight:900}.questPath i.done{background:#153824;border-color:#5acb8055;color:#a9f3be}.questPath i.current{background:#4b3514;border-color:#f2cf6877;color:#fff2b0;box-shadow:0 0 0 4px #f2cf6810}.questStats{display:flex;gap:8px;margin-top:6px;font-size:9px;color:#aebdca}.questRelic{text-align:center}.questRelic span{display:block;font-size:30px;filter:drop-shadow(0 7px 8px #0007)}.questRelic small{display:block;font-size:8px;color:#9fb0bc;font-weight:900;margin-top:2px}.questHud.collect .questHero img{animation:questCollectHero .55s cubic-bezier(.18,.89,.32,1.15)}.questHud.collect .questRelic span{animation:questRelicGlow .65s ease}.questHud.miss .questHero img{animation:questMissHero .48s ease}.questHud:after{content:'✦';position:absolute;left:68px;top:36px;color:#ffe074;font-size:24px;opacity:0;pointer-events:none}.questHud.collect:after{animation:questSparkFly .62s ease-out}
@keyframes questCollectHero{0%,100%{transform:none}35%{transform:translateX(12px) translateY(-5px) scale(1.08) rotate(-3deg)}70%{transform:translateX(3px) scale(1.02)}}
@keyframes questRelicGlow{0%,100%{transform:none;filter:drop-shadow(0 7px 8px #0007)}45%{transform:scale(1.18) rotate(5deg);filter:drop-shadow(0 0 14px #ffe27a)}}
@keyframes questMissHero{0%,100%{transform:none}20%{transform:translateX(-4px) rotate(-4deg)}45%{transform:translateX(5px) rotate(4deg);opacity:.65}70%{transform:translateX(-2px)}}
@keyframes questSparkFly{0%{opacity:0;transform:translate(0,0) scale(.5)}20%{opacity:1}100%{opacity:0;transform:translate(220px,-8px) scale(1.4) rotate(120deg)}}

/* world-complete celebration */
.result{position:relative;overflow:hidden}.worldWinFx{position:absolute;z-index:40;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 40%,#f6d56a33,transparent 34%),linear-gradient(#071019d9,#071019e8);backdrop-filter:blur(4px);pointer-events:none;animation:winOverlayIn .3s ease}.worldWinFx.fade{animation:winOverlayOut .65s ease forwards}.winGlow{position:absolute;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,#ffe27a55 0,#ffe27a18 44%,transparent 70%);animation:winGlowPulse 1.1s ease-in-out infinite}.winIcon{font-size:76px;z-index:2;animation:winIconPop .75s cubic-bezier(.18,.89,.32,1.3)}.winLabel{z-index:2;margin-top:8px;padding:6px 11px;border-radius:999px;background:#ffffff10;border:1px solid #f6d66d66;font-size:10px;font-weight:950;letter-spacing:.12em;color:#fff2bd}.winTitle{z-index:2;font-size:42px;line-height:.95;font-weight:1000;letter-spacing:-.04em;color:#fff;text-shadow:0 4px 20px #0009;margin-top:10px}.winSub{z-index:2;font-size:13px;font-weight:800;color:#d8e1e8;margin-top:8px;max-width:78%;text-align:center}.confettiRain{position:absolute;inset:0;overflow:hidden}.confettiRain i{position:absolute;left:var(--x);top:-24px;width:8px;height:16px;border-radius:2px;background:var(--confetti,#f6d56a);transform:rotate(var(--r));animation:confettiFall 1.65s cubic-bezier(.15,.7,.25,1) var(--d) forwards}.confettiRain i[style*="--c:1"]{--confetti:#68dffb}.confettiRain i[style*="--c:2"]{--confetti:#ff75b7}.confettiRain i[style*="--c:3"]{--confetti:#86e58f}.confettiRain i[style*="--c:4"]{--confetti:#b69cff}.result.winPulse .resultChar{animation:resultHeroWin .95s cubic-bezier(.18,.89,.32,1.18)}
@keyframes winOverlayIn{from{opacity:0;transform:scale(.96)}to{opacity:1;transform:none}}@keyframes winOverlayOut{to{opacity:0;transform:scale(1.03)}}@keyframes winGlowPulse{50%{transform:scale(1.08);opacity:.75}}@keyframes winIconPop{0%{transform:scale(.2) rotate(-14deg);opacity:0}60%{transform:scale(1.2) rotate(5deg);opacity:1}100%{transform:scale(1)}}@keyframes confettiFall{0%{opacity:0;transform:translateY(-10px) rotate(var(--r))}12%{opacity:1}100%{opacity:1;transform:translateY(780px) translateX(40px) rotate(calc(var(--r) + 520deg))}}@keyframes resultHeroWin{0%{transform:scale(.9)}42%{transform:translateY(-16px) scale(1.12) rotate(-4deg)}75%{transform:translateY(2px) scale(.98) rotate(3deg)}100%{transform:none}}
@media(max-width:390px){.questHud{grid-template-columns:62px 1fr 50px;padding:8px}.questHero img{width:50px;height:50px}.questPath i{width:19px;height:19px}.questRelic span{font-size:26px}.winTitle{font-size:36px}}
@media(prefers-reduced-motion:reduce){.questHud.collect .questHero img,.questHud.collect .questRelic span,.questHud.miss .questHero img,.questHud.collect:after,.worldWinFx,.winGlow,.winIcon,.confettiRain i,.result.winPulse .resultChar{animation:none!important}}

/* V9.0 — gameplay variety + robust art loading */
img.artLoading{opacity:.35;filter:blur(2px) saturate(.5);background:linear-gradient(90deg,#ffffff08,#ffffff16,#ffffff08);background-size:200% 100%;animation:artLoadPulse 1.1s linear infinite}
@keyframes artLoadPulse{to{background-position:-200% 0}}
.modeIntro{margin:3px 0 9px;text-align:center;font-size:10px;line-height:1.35;color:#9fb0bd}
.routeGrid{display:grid;grid-template-columns:1fr;gap:7px}.routeChoice{display:grid;grid-template-columns:72px 1fr;gap:10px;align-items:center;min-height:78px;padding:8px 10px;border-radius:16px;border:1px solid #ffffff16;background:#111a24;color:#fff;text-align:left}.routeChoice span{font-size:11px;line-height:1.32;font-weight:850}.routeThing{width:68px;height:62px;object-fit:contain;filter:drop-shadow(0 7px 8px #0008)}
.speedHud{display:grid;grid-template-columns:1fr auto;gap:8px;align-items:center;margin:4px 0 8px;padding:9px 11px;border:1px solid #ffffff16;border-radius:14px;background:#101923}.speedHud b{font-size:11px;letter-spacing:.11em;color:#fff3bd}.speedHud span{font-size:18px;font-weight:1000;color:#fff}.speedHud div{grid-column:1/-1;height:7px;border-radius:99px;background:#ffffff12;overflow:hidden}.speedHud i{display:block;width:100%;height:100%;background:linear-gradient(90deg,#6ce5ff,#ffe16d);transition:width .9s linear}
.detailBox{height:min(31svh,250px);min-height:190px;border-radius:19px;overflow:hidden;border:1px solid #ffffff16;background:#0b1016;display:grid;place-items:center;margin-bottom:7px}.detailArt{width:100%;height:100%;object-fit:cover;transform:scale(1.72);filter:blur(1px) saturate(.9);transition:transform .45s cubic-bezier(.2,.8,.2,1),filter .45s ease}.detailBox.revealed .detailArt{transform:scale(1);object-fit:contain;filter:none}.hintBtn{width:100%;min-height:42px;border-radius:13px;border:1px solid #ffffff16;background:#17212c;color:#cbd7e0;font-size:10px;font-weight:900;margin-bottom:8px}.hintBtn:disabled{opacity:.72}
.sequenceGrid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.sequenceChoice{position:relative;min-height:104px;border-radius:16px;border:1px solid #ffffff16;background:#121b25;color:#fff;padding:10px;text-align:left}.sequenceChoice i{position:absolute;right:9px;top:9px;width:24px;height:24px;border-radius:50%;display:grid;place-items:center;background:#ffffff0d;border:1px solid #ffffff15;font-style:normal;font-size:10px;font-weight:950}.sequenceChoice strong{display:block;padding-right:30px;font-size:13px;line-height:1.22}.sequenceChoice span{display:block;margin-top:7px;font-size:10px;color:#9fb0bd;line-height:1.25}.sequenceChoice.picked{border-color:#f4cf6880;background:#1b2027}.sequenceChoice.picked i{background:#f5cf68;color:#2c210b}.sequenceChoice.ok{border-color:#6fd092;background:#183326}.sequenceChoice.bad{border-color:#e36e6e;background:#351b1b}.sequenceSolution{margin-top:8px;padding:9px 10px;border-radius:13px;background:#0d1720;border:1px solid #ffffff15;font-size:10px;line-height:1.35;color:#c8d5df}
@media(max-height:720px){.routeChoice{min-height:68px}.routeThing{height:52px}.detailBox{height:205px;min-height:175px}.sequenceChoice{min-height:90px;padding:8px}.sequenceChoice strong{font-size:12px}}
@media(prefers-reduced-motion:reduce){img.artLoading,.detailArt{animation:none!important;transition:none!important}}