*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}body{font-family:Noto Sans TC,sans-serif;overflow:hidden;height:100vh;height:100dvh;background:#000;-webkit-user-select:none;user-select:none}button{font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:active{transform:scale(.96)!important}.scene-bg{position:absolute;inset:0;background-size:cover;background-position:center;image-rendering:auto;z-index:0}@keyframes enemyHit{0%{transform:translate(0)}10%{transform:translate(8px,-4px)}20%{transform:translate(-6px,2px)}30%{transform:translate(4px,-2px)}50%{transform:translate(0)}to{transform:translate(0)}}@keyframes playerHit{0%{transform:translate(0) scaleX(-1)}10%{transform:translate(-8px,4px) scaleX(-1)}20%{transform:translate(6px,-2px) scaleX(-1)}50%{transform:translate(0) scaleX(-1)}to{transform:translate(0) scaleX(-1)}}@keyframes attackLunge{0%{transform:translate(0) scaleX(-1)}30%{transform:translate(60px,-40px) scaleX(-1)}50%{transform:translate(60px,-40px) scaleX(-1)}to{transform:translate(0) scaleX(-1)}}@keyframes enemyAttackLunge{0%{transform:translate(0)}30%{transform:translate(-60px,40px)}50%{transform:translate(-60px,40px)}to{transform:translate(0)}}@keyframes dmgPop{0%{transform:translateY(0) scale(.5);opacity:0}20%{transform:translateY(-10px) scale(1.2);opacity:1}40%{transform:translateY(-20px) scale(1);opacity:1}to{transform:translateY(-50px);opacity:0}}@keyframes flashWhite{0%{filter:brightness(1)}15%{filter:brightness(3)}30%{filter:brightness(1)}45%{filter:brightness(2.5)}60%{filter:brightness(1)}}@keyframes popIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}@keyframes fadeSlide{0%{transform:translateY(12px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes chargeGlow{0%{filter:drop-shadow(0 0 4px rgba(255,200,0,0))}50%{filter:drop-shadow(0 0 16px rgba(255,200,0,.8))}to{filter:drop-shadow(0 0 4px rgba(255,200,0,0))}}@keyframes slideInBattle{0%{transform:translate(120px);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideInPlayer{0%{transform:translate(-120px) scaleX(-1);opacity:0}to{transform:translate(0) scaleX(-1);opacity:1}}@keyframes sparkle{0%{transform:scale(0) rotate(0);opacity:1}50%{transform:scale(1) rotate(180deg);opacity:1}to{transform:scale(0) rotate(360deg);opacity:0}}@keyframes emberRise{0%{transform:translateY(0) scale(1);opacity:.6}40%{opacity:.9}to{transform:translateY(-110px) scale(.2);opacity:0}}@keyframes lavaGlow{0%,to{opacity:.18;transform:scale(1)}50%{opacity:.35;transform:scale(1.15)}}@keyframes float{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-8px) scale(1.03)}}@keyframes floatFlip{0%,to{transform:translateY(0) scaleX(-1) scaleY(1)}50%{transform:translateY(-6px) scaleX(-1.02) scaleY(1.04)}}@keyframes shadowPulse{0%,to{transform:scaleX(1) scaleY(1);opacity:.55}50%{transform:scaleX(.82) scaleY(.82);opacity:.25}}@keyframes bossShadowPulse{0%,to{transform:scaleX(1) scaleY(1);opacity:.55}25%{transform:scaleX(.9) scaleY(.9);opacity:.35}50%{transform:scaleX(1) scaleY(1);opacity:.5}75%{transform:scaleX(.85) scaleY(.85);opacity:.3}}@keyframes shieldPulse{0%{transform:scale(0);opacity:0}20%{transform:scale(1.15);opacity:1}50%{transform:scale(1);opacity:.85}80%{transform:scale(1.05);opacity:.9}to{transform:scale(1.1);opacity:0}}@keyframes shieldFlash{0%{background:transparent}15%{background:#fbbf2440}40%{background:transparent}55%{background:#fbbf2426}to{background:transparent}}@keyframes dodgeSlide{0%{transform:translate(0) scaleX(-1)}25%{transform:translate(-60px) translateY(-20px) scaleX(-1);opacity:.2}55%{transform:translate(-60px) translateY(-20px) scaleX(-1);opacity:.2}to{transform:translate(0) scaleX(-1);opacity:1}}@keyframes dodgeFlash{0%{background:transparent}15%{background:#38bdf833}40%{background:transparent}55%{background:#38bdf81f}to{background:transparent}}@keyframes vineCounter{0%{transform:scale(0) rotate(-30deg);opacity:0}25%{transform:scale(1.1) rotate(5deg);opacity:1}60%{transform:scale(1) rotate(0);opacity:.9}to{transform:scale(0) rotate(30deg);opacity:0}}@keyframes counterFlash{0%{background:transparent}15%{background:#22c55e33}40%{background:transparent}55%{background:#22c55e1f}to{background:transparent}}@keyframes specDefReady{0%,to{filter:drop-shadow(0 0 6px rgba(251,191,36,.3))}50%{filter:drop-shadow(0 0 16px rgba(251,191,36,.8))}}@keyframes timerShrink{0%{width:100%}to{width:0%}}@keyframes timerPulse{0%{opacity:1}50%{opacity:.5}to{opacity:1}}@keyframes timerUrgent{0%{background:#ef4444}50%{background:#fbbf24}to{background:#ef4444}}@keyframes fireballFly{0%{transform:translate(0) scale(.3);opacity:0}15%{transform:translate(20px,-10px) scale(1);opacity:1}85%{transform:translate(160px,-80px) scale(1.2);opacity:1}to{transform:translate(180px,-90px) scale(.5);opacity:0}}@keyframes fireTrail{0%{transform:translate(0) scale(0);opacity:0}10%{opacity:.8;transform:scale(1)}to{transform:translate(-30px,15px) scale(0);opacity:0}}@keyframes lightningStrike{0%{clip-path:inset(100% 0 0 0);opacity:0}20%{clip-path:inset(0 0 0 0);opacity:1;filter:brightness(2)}40%{opacity:.3}50%{opacity:1;filter:brightness(3)}70%{opacity:.2}80%{opacity:1;filter:brightness(2)}to{opacity:0;filter:brightness(1)}}@keyframes lightningFlash{0%{background:transparent}10%{background:#fbbf2426}20%{background:transparent}30%{background:#fbbf241a}40%{background:transparent}to{background:transparent}}@keyframes waterWave{0%{transform:translate(-100%) scaleY(.3);opacity:0}20%{transform:translate(-40%) scaleY(1);opacity:.8}60%{transform:translate(60%) scaleY(1.1);opacity:.7}to{transform:translate(120%) scaleY(.5);opacity:0}}@keyframes waterDrop{0%{transform:translate(0) scale(0);opacity:0}20%{transform:translate(var(--dx),var(--dy)) scale(1);opacity:.9}to{transform:translate(var(--dx),calc(var(--dy) + 40px)) scale(.3);opacity:0}}@keyframes darkPulse{0%{transform:scale(0);opacity:0;background:#581c87cc}30%{transform:scale(1);opacity:.9}60%{transform:scale(1.8);opacity:.5;background:#a855f74d}to{transform:scale(2.5);opacity:0}}@keyframes darkScreenFlash{0%{background:transparent}15%{background:#000000b3}30%{background:#581c8766}50%{background:#00000080}70%{background:#a855f733}to{background:transparent}}@keyframes enemyGrassHit{0%{filter:brightness(1) hue-rotate(0deg);transform:translate(0)}15%{filter:brightness(1.8) hue-rotate(60deg);transform:translate(-5px,3px)}30%{filter:brightness(1.2) hue-rotate(30deg);transform:translate(4px,-2px)}50%{filter:brightness(1.5) hue-rotate(50deg);transform:translate(-3px,2px)}70%{filter:brightness(1.2);transform:translate(2px)}to{filter:brightness(1) hue-rotate(0deg);transform:translate(0)}}@keyframes leafSlash{0%{transform:translate(0) rotate(-45deg) scale(0);opacity:0}20%{transform:translate(40px,-20px) rotate(0) scale(1.2);opacity:1}70%{transform:translate(140px,-70px) rotate(30deg) scale(1);opacity:.8}to{transform:translate(180px,-90px) rotate(45deg) scale(.3);opacity:0}}@keyframes leafBurst{0%{transform:translate(0) rotate(0) scale(0);opacity:0}15%{transform:scale(1);opacity:.9}to{transform:translate(var(--lx),var(--ly)) rotate(var(--lr)) scale(0);opacity:0}}@keyframes grassScreenFlash{0%{background:transparent}12%{background:#22c55e26}25%{background:transparent}35%{background:#4ade801a}50%{background:transparent}to{background:transparent}}@keyframes enemyFireHit{0%{filter:brightness(1)}20%{filter:brightness(2) hue-rotate(-20deg)}40%{filter:brightness(1.3)}60%{filter:brightness(1.8) hue-rotate(-10deg)}to{filter:brightness(1)}}@keyframes enemyElecHit{0%{filter:brightness(1);transform:translate(0)}10%{filter:brightness(3);transform:translate(3px)}20%{filter:brightness(1.5);transform:translate(-3px)}30%{filter:brightness(2.5);transform:translate(2px)}40%{filter:brightness(1);transform:translate(-2px)}50%{filter:brightness(2);transform:translate(0)}to{filter:brightness(1);transform:translate(0)}}@keyframes enemyWaterHit{0%{filter:brightness(1);transform:translate(0)}20%{filter:brightness(1.5) saturate(2);transform:translate(8px)}40%{filter:brightness(1.2);transform:translate(-4px)}60%{filter:brightness(1.3) saturate(1.5);transform:translate(2px)}to{filter:brightness(1);transform:translate(0)}}@keyframes enemyDarkHit{0%{filter:brightness(1);transform:scale(1)}15%{filter:brightness(.2);transform:scale(.9)}30%{filter:brightness(3);transform:scale(1.15)}50%{filter:brightness(.5);transform:scale(.95)}70%{filter:brightness(2);transform:scale(1.05)}to{filter:brightness(1);transform:scale(1)}}@keyframes evolveFlash{0%{opacity:0}8%{opacity:.95}30%{opacity:.3}45%{opacity:.7}to{opacity:0}}@keyframes evolveSpin{0%{transform:rotate(0) translate(var(--orbit)) rotate(0)}to{transform:rotate(360deg) translate(var(--orbit)) rotate(-360deg)}}@keyframes evolveGlow{0%,to{filter:drop-shadow(0 0 8px rgba(99,102,241,.3))}50%{filter:drop-shadow(0 0 30px rgba(99,102,241,.8)) drop-shadow(0 0 60px rgba(168,85,247,.4))}}@keyframes growIn{0%{transform:scale(.2);opacity:0;filter:brightness(3)}35%{transform:scale(1.2);filter:brightness(1.5)}60%{transform:scale(.95)}to{transform:scale(1);opacity:1;filter:brightness(1)}}@keyframes colorBurst{0%{transform:scale(0);opacity:.8}to{transform:scale(4);opacity:0}}@keyframes bgShimmer{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}@keyframes bossFloat{0%,to{transform:translateY(0) scale(1)}25%{transform:translateY(-3px) scale(1.02)}50%{transform:translateY(-1px) scale(1)}75%{transform:translateY(-4px) scale(1.01)}}@keyframes bossShake{0%,to{transform:translate(0)}10%{transform:translate(-2px)}20%{transform:translate(2px)}30%{transform:translate(-1px)}40%{transform:translate(1px)}50%{transform:translate(0)}}@keyframes bossPulse{0%,to{filter:drop-shadow(0 0 4px rgba(120,40,80,.3))}50%{filter:drop-shadow(0 0 12px rgba(180,60,100,.6)) drop-shadow(0 0 20px rgba(120,40,80,.3))}}@keyframes leafBladeFly{0%{transform:translate(0) rotate(-30deg) scale(.3);opacity:0}15%{transform:translate(25px,-12px) rotate(-5deg) scale(1.1);opacity:1}80%{transform:translate(155px,-75px) rotate(15deg) scale(1);opacity:.9}to{transform:translate(185px,-90px) rotate(30deg) scale(.4);opacity:0}}@keyframes vineWhipDraw{0%{stroke-dashoffset:300;opacity:0}8%{opacity:1}85%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:-50;opacity:0}}@keyframes leafSpin{0%{transform:translate(0) rotate(0) scale(0);opacity:0}20%{transform:translate(calc(var(--lx)*.2),calc(var(--ly)*.2)) rotate(90deg) scale(1);opacity:.9}to{transform:translate(var(--lx),var(--ly)) rotate(360deg) scale(.2);opacity:0}}@keyframes windSweep{0%{transform:translate(-110%) scaleY(.4);opacity:0}20%{transform:translate(-30%) scaleY(1);opacity:.7}to{transform:translate(110%) scaleY(.6);opacity:0}}@keyframes bubbleFloat{0%{transform:translate(0) scale(.2);opacity:0}20%{transform:translate(30px,-15px) scale(1);opacity:.9}75%{transform:translate(130px,-60px) scale(1.05);opacity:.7}to{transform:translate(170px,-85px) scale(.6);opacity:0}}@keyframes waveSweep{0%{transform:translate(-110%) scaleY(.3);opacity:0}20%{transform:translate(-30%) scaleY(1);opacity:.9}60%{transform:translate(50%) scaleY(1.1);opacity:.7}to{transform:translate(120%) scaleY(.5);opacity:0}}@keyframes splashBurst{0%{transform:translate(0) scale(.3);opacity:0}20%{transform:translate(calc(var(--px)*.2),calc(var(--py)*.2)) scale(1);opacity:.9}to{transform:translate(var(--px),var(--py)) scale(.1);opacity:0}}@keyframes flameFly{0%{transform:translate(0) scale(.2) rotate(10deg);opacity:0}12%{transform:translate(20px,-10px) scale(1) rotate(0);opacity:1}82%{transform:translate(160px,-80px) scale(1.15) rotate(-5deg);opacity:.95}to{transform:translate(185px,-92px) scale(.4) rotate(-10deg);opacity:0}}@keyframes fireExpand{0%{transform:scale(0);opacity:0}25%{transform:scale(.6);opacity:.9}50%{transform:scale(1);opacity:.7}to{transform:scale(1.8);opacity:0}}@keyframes darkRingExpand{0%{transform:scale(0);opacity:0}25%{transform:scale(.8);opacity:1}60%{transform:scale(1.5);opacity:.5}to{transform:scale(2.2);opacity:0}}@keyframes darkStarSpin{0%{transform:translate(0) rotate(0) scale(0);opacity:0}25%{transform:translate(calc(var(--sx)*.3),calc(var(--sy)*.3)) rotate(90deg) scale(1);opacity:1}to{transform:translate(var(--sx),var(--sy)) rotate(360deg) scale(.2);opacity:0}}@keyframes arcFlow{0%{stroke-dashoffset:40;opacity:0}15%{opacity:.8}to{stroke-dashoffset:-40;opacity:0}}@keyframes ultGlow{0%{opacity:0}20%{opacity:1}50%{opacity:.6}75%{opacity:.8}to{opacity:0}}@keyframes ultApproach{0%{transform:translate(0) scale(.3);opacity:0}12%{transform:translate(15px,-8px) scale(.7);opacity:.35}55%{transform:translate(110px,-55px) scale(.85);opacity:.3}80%{transform:translate(155px,-75px) scale(1);opacity:.5}to{transform:translate(170px,-82px) scale(1.6);opacity:0}}
