.gamePage{overflow-x:hidden;touch-action:manipulation;user-select:none}.gameShell{max-width:1240px}.gamePill{background:linear-gradient(90deg,rgba(184,255,90,.55),rgba(111,247,255,.45),rgba(255,154,215,.45));border-style:solid!important;animation:gamePulse 1.8s ease-in-out infinite}@keyframes gamePulse{50%{box-shadow:0 10px 0 rgba(0,0,0,.1),0 0 22px rgba(184,255,90,.9)}}
.gameLayout{display:grid;grid-template-columns:minmax(0,1fr) 300px;grid-template-areas:"game rank" "how rank";gap:12px;margin-top:14px}.gameWin{grid-area:game}.rankWin{grid-area:rank}.howWin{grid-area:how}.gameHud{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;padding:10px;background:rgba(255,255,255,.65);border-bottom:2px dotted rgba(255,79,182,.35)}.gameHud div{text-align:center}.gameHud small{display:block;font-weight:700;color:#ff2aa6}.gameHud strong{font-size:22px;font-variant-numeric:tabular-nums}
.canvasWrap{position:relative;aspect-ratio:16/9;overflow:hidden;background:#111;border-bottom:2px dotted rgba(255,79,182,.35)}#gameCanvas{width:100%;height:100%;display:block}.gameOverlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:20px;background:radial-gradient(circle,rgba(30,12,50,.55),rgba(5,2,18,.9));color:white;z-index:4}.gameOverlay.hidden{display:none}.gameOverlay p{max-width:430px;font-weight:700}.gameLogo{font-size:clamp(40px,8vw,78px);line-height:.77;font-weight:700;color:#b8ff5a;-webkit-text-stroke:2px #311044;text-shadow:5px 6px 0 #ff4fb6,9px 10px 0 rgba(0,0,0,.45);transform:rotate(-2deg);margin-bottom:24px}.gameLogo span{color:#6ff7ff}.controlHint{font-size:12px;letter-spacing:2px;opacity:.75}
.rushBtn{font:700 14px "Comic Neue",sans-serif;padding:9px 16px;border-radius:999px;border:2px solid rgba(255,79,182,.7);background:white;color:#26132a;box-shadow:0 7px 0 rgba(0,0,0,.25);cursor:pointer}.rushBtn:hover{transform:translateY(-1px)}.rushBtn:active{transform:translateY(4px);box-shadow:0 3px 0 rgba(0,0,0,.25)}.rushBtn.primary{font-size:17px;background:linear-gradient(90deg,#b8ff5a,#6ff7ff,#ff9ad7);border-color:white}.smallBtn{font-size:12px;padding:6px 10px}.tapZone{display:none;width:100%;border:0;padding:16px;background:linear-gradient(90deg,#b8ff5a,#6ff7ff,#ff9ad7);font:700 18px "Comic Neue",sans-serif;color:#311044;cursor:pointer}.judgement{position:absolute;left:24%;top:42%;transform:translate(-50%,-50%) scale(.7);font-size:clamp(25px,5vw,48px);font-weight:700;color:white;text-shadow:3px 3px 0 #ff2aa6;pointer-events:none;opacity:0;z-index:3}.judgement.show{animation:judge .46s ease-out}@keyframes judge{0%{opacity:1;transform:translate(-50%,-50%) scale(.6)}55%{opacity:1;transform:translate(-50%,-70%) scale(1.1)}100%{opacity:0;transform:translate(-50%,-95%) scale(.9)}}
.resultRank{font-size:72px;line-height:1;color:#b8ff5a;text-shadow:4px 4px 0 #ff4fb6}.gameOverlay h2{margin:4px 0 10px}.resultGrid{display:grid;grid-template-columns:1fr 1fr;gap:6px 20px}.resultGrid span{display:flex;gap:8px;justify-content:space-between}.resultActions{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap;justify-content:center}.saveMessage{min-height:18px;margin:10px 0 0!important;font-size:12px}
.sessionCard{padding:9px;border-radius:12px;background:rgba(111,247,255,.2);border:2px dotted rgba(111,247,255,.65);font-size:12px;font-weight:700}.rankingList{list-style:none;padding:0;margin:12px 0;counter-reset:rank}.rankingList li{counter-increment:rank;display:grid;grid-template-columns:26px 1fr auto;gap:6px;align-items:center;padding:9px 5px;border-bottom:2px dotted rgba(255,79,182,.2);font-weight:700}.rankingList li:before{content:counter(rank);width:22px;height:22px;display:grid;place-items:center;border-radius:50%;background:#fff}.rankingList li:first-child:before{background:#ffe25a}.rankingList li:nth-child(2):before{background:#dff4ff}.rankingList li:nth-child(3):before{background:#ffc59a}.rankScore{font-variant-numeric:tabular-nums;color:#ff2aa6}.rankingList .rankEmpty{display:block;color:rgba(26,15,28,.55)}.rankingList .rankEmpty:before{display:none}
.howGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;padding:12px}.howGrid div{padding:12px;border-radius:14px;background:rgba(255,255,255,.7);border:2px dashed rgba(255,79,182,.3)}.howGrid b,.howGrid span{display:block}.howGrid b{color:#ff2aa6;margin-bottom:5px}.howGrid span{font-size:13px;font-weight:700;color:rgba(26,15,28,.7)}
@media(max-width:900px){.gameLayout{grid-template-columns:1fr;grid-template-areas:"game" "how" "rank"}.tapZone{display:block}.howGrid{grid-template-columns:1fr}.gameHud strong{font-size:17px}.gameOverlay{padding:10px}.gameLogo{margin-bottom:12px}.resultRank{font-size:48px}.gameOverlay h2{font-size:18px}.resultActions{margin-top:10px}.resultGrid{font-size:12px}}

/* modes, life and mobile fullscreen */
.gameTools{display:flex;justify-content:flex-end;gap:7px;padding:7px 10px;background:rgba(255,255,255,.55)}
.lifeRow{display:grid;grid-template-columns:auto 1fr 34px;align-items:center;gap:8px;padding:6px 12px;background:#281445;color:#fff;font-size:12px;font-weight:700}.lifeTrack{height:12px;background:rgba(255,255,255,.16);border:2px solid rgba(255,255,255,.25);border-radius:999px;overflow:hidden}.lifeFill{height:100%;width:100%;background:linear-gradient(90deg,#ff4f72,#ffe25a,#b8ff5a);transition:width .2s ease}.lifeFill.danger{background:#ff4f72;animation:hpBlink .5s infinite}@keyframes hpBlink{50%{opacity:.45}}
.modeCards{display:grid;grid-template-columns:1fr 1fr;gap:10px;width:min(560px,100%)}.modeCard{padding:14px 12px;border:2px solid white;border-radius:16px;background:linear-gradient(145deg,#6ff7ff,#ff9ad7);box-shadow:0 8px 0 rgba(0,0,0,.3);font:700 15px "Comic Neue",sans-serif;color:#311044;cursor:pointer}.modeCard.infinite{background:linear-gradient(145deg,#b8ff5a,#ffe25a)}.modeCard:hover{transform:translateY(-2px)}.modeCard:active{transform:translateY(4px);box-shadow:0 3px 0 rgba(0,0,0,.3)}.modeCard span{display:block;margin-top:5px;font-size:11px}
.rotateHint{display:none;padding:6px 10px;text-align:center;background:#fff5a8;font-size:11px;font-weight:700}.gamePage:fullscreen .gameShell,.gamePage.fullscreenFallback .gameShell{max-width:none;margin:0;padding:0}.gamePage:fullscreen .banner,.gamePage:fullscreen .rankWin,.gamePage:fullscreen .howWin,.gamePage:fullscreen .footer,.gamePage.fullscreenFallback .banner,.gamePage.fullscreenFallback .rankWin,.gamePage.fullscreenFallback .howWin,.gamePage.fullscreenFallback .footer{display:none}.gamePage:fullscreen .gameLayout,.gamePage.fullscreenFallback .gameLayout{display:block;margin:0}.gamePage:fullscreen .gameWin,.gamePage.fullscreenFallback .gameWin{height:100vh;border-radius:0;display:flex;flex-direction:column}.gamePage:fullscreen .canvasWrap,.gamePage.fullscreenFallback .canvasWrap{flex:1;min-height:0;aspect-ratio:auto}.gamePage:fullscreen .tapZone,.gamePage.fullscreenFallback .tapZone{display:block;padding:11px}
@media(max-width:900px){.rotateHint{display:block}.gameHud strong{font-size:16px}.gameOverlay{padding:8px}.gameLogo{font-size:38px;margin-bottom:10px}.modeCards{gap:7px}.modeCard{padding:9px 6px;font-size:12px}.gameTools{padding:5px}.gameTools .rushBtn{font-size:10px}.canvasWrap{min-height:260px}}
@media(max-width:600px) and (orientation:portrait){.canvasWrap{aspect-ratio:4/3}.gameLogo{font-size:34px}.gameOverlay p{margin:5px 0}.controlHint{display:none}}
