.minigame-overlay{position:fixed;inset:0;z-index:500;background:radial-gradient(ellipse at center,rgba(20,0,0,0.92),rgba(0,0,0,0.98));display:flex;flex-direction:column;align-items:center;justify-content:center;padding:20px}
.minigame-header{position:absolute;top:30px;left:50%;transform:translateX(-50%);text-align:center}
.minigame-title{font-size:22px;color:#c88;letter-spacing:6px;margin-bottom:6px}
.minigame-difficulty{font-size:13px;color:#886;letter-spacing:2px}
.minigame-difficulty .star{color:#fd6}
.minigame-difficulty .star-empty{color:#444}
.countdown-screen{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:30px}
.countdown-rules{max-width:560px;padding:24px 32px;background:rgba(15,5,5,0.85);border:1.5px dashed #633;color:#e0d0d0;font-size:15px;line-height:1.9;letter-spacing:1px;text-align:center}
.countdown-rules-title{font-size:18px;color:#c88;letter-spacing:4px;margin-bottom:14px;padding-bottom:10px;border-bottom:1px solid #633}
.countdown-number{font-size:140px;color:#c22;font-weight:bold;text-shadow:0 0 40px rgba(194,34,34,0.8),0 0 80px rgba(194,34,34,0.4);animation:countPulse 1s ease-out;line-height:1}
.countdown-number.go{color:#4f8;font-size:110px;text-shadow:0 0 40px rgba(80,255,136,0.8)}
@keyframes countPulse{0%{transform:scale(0.5);opacity:0}30%{transform:scale(1.2);opacity:1}100%{transform:scale(1);opacity:1}}
.result-screen{font-size:60px;letter-spacing:20px;font-weight:bold;animation:resultPop 0.6s ease-out}
.result-screen.success{color:#4f8;text-shadow:0 0 40px rgba(80,255,136,0.9)}
.result-screen.fail{color:#f44;text-shadow:0 0 40px rgba(255,50,50,0.9)}
@keyframes resultPop{0%{transform:scale(0);opacity:0}50%{transform:scale(1.2);opacity:1}100%{transform:scale(1);opacity:1}}
.mg-progress{width:min(500px,85vw);height:6px;background:rgba(60,20,20,0.6);margin-top:20px;overflow:hidden;border:1px solid #633}
.mg-progress-bar{height:100%;background:linear-gradient(90deg,#c22,#f66);transition:width 0.2s}
.mg-status{margin-top:14px;font-size:14px;color:#c88;letter-spacing:2px}

/* 战斗A */
.battle-a-container{display:flex;flex-direction:column;align-items:center;gap:24px}
.battle-a-key{width:140px;height:140px;display:flex;align-items:center;justify-content:center;font-size:72px;font-weight:bold;color:#fff;background:linear-gradient(135deg,#4a1010,#2a0505);border:3px solid #c22;box-shadow:0 0 30px rgba(194,34,34,0.6);font-family:monospace;animation:keyPulse 0.6s ease-in-out infinite}
@keyframes keyPulse{0%,100%{box-shadow:0 0 30px rgba(194,34,34,0.6)}50%{box-shadow:0 0 50px rgba(194,34,34,1)}}

/* 战斗B */
.battle-b-container{display:flex;flex-direction:column;align-items:center;gap:30px}
.combo-zombie{font-size:80px;filter:drop-shadow(0 0 20px rgba(255,50,50,0.5));animation:zombieApproach 0.5s ease-out}
@keyframes zombieApproach{from{transform:scale(0.5);opacity:0.3}to{transform:scale(1);opacity:1}}
.combo-sequence{display:flex;gap:14px;background:rgba(20,5,5,0.8);border:2px solid #633;padding:20px 30px}
.combo-key{width:60px;height:60px;display:flex;align-items:center;justify-content:center;font-size:30px;font-weight:bold;background:rgba(40,20,20,0.9);border:2px solid #844;color:#e8c8c8;font-family:monospace;transition:all 0.2s}
.combo-key.active{border-color:#fd6;color:#fff;background:rgba(80,50,10,0.9);box-shadow:0 0 20px rgba(255,220,100,0.6);transform:scale(1.1)}
.combo-key.done{border-color:#4f8;color:#8fc;background:rgba(10,40,20,0.9);box-shadow:0 0 15px rgba(80,255,136,0.5)}
.combo-key.error{border-color:#f44;color:#faa;background:rgba(60,10,10,0.9);animation:keyShake 0.3s}
@keyframes keyShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}

/* 战斗C */
.battle-c-container{display:flex;flex-direction:column;align-items:center;gap:20px}
.qte-circle{width:200px;height:200px;border-radius:50%;border:3px solid #633;position:relative;display:flex;align-items:center;justify-content:center}
.qte-inner{width:100px;height:100px;border-radius:50%;background:radial-gradient(circle,#c22,#501010);box-shadow:0 0 30px rgba(194,34,34,0.7);transform:scale(0);transition:transform 0.15s}
.qte-inner.show{animation:qteShrink 1.1s linear forwards}
@keyframes qteShrink{0%{transform:scale(2.5);background:radial-gradient(circle,#f44,#a20)}70%{transform:scale(1);background:radial-gradient(circle,#fd4,#c80)}100%{transform:scale(0.3);background:radial-gradient(circle,#c22,#400)}}

/* 追逐A */
.chase-a-container{display:flex;flex-direction:column;align-items:center;gap:24px}
.chase-scene{width:min(600px,90vw);height:120px;background:linear-gradient(90deg,rgba(100,20,20,0.3),rgba(40,10,10,0.3));border:2px solid #633;position:relative;overflow:hidden}
.chase-runner{position:absolute;left:30%;top:50%;transform:translateY(-50%);font-size:44px;animation:runnerBob 0.3s ease-in-out infinite alternate}
@keyframes runnerBob{from{top:48%}to{top:52%}}
.chase-zombie{position:absolute;left:5%;top:50%;transform:translateY(-50%);font-size:38px;animation:zombiePursue 0.4s ease-in-out infinite alternate;filter:drop-shadow(0 0 10px rgba(255,50,50,0.6))}
@keyframes zombiePursue{from{left:5%}to{left:7%}}
.arrow-sequence{display:flex;gap:12px;padding:18px 26px;background:rgba(20,5,5,0.85);border:2px solid #633}
.arrow-key{width:54px;height:54px;display:flex;align-items:center;justify-content:center;font-size:32px;background:rgba(40,20,20,0.9);border:2px solid #844;color:#e8c8c8;transition:all 0.15s}
.arrow-key.current{border-color:#fd6;color:#fff;background:rgba(80,50,10,0.9);box-shadow:0 0 18px rgba(255,220,100,0.6);transform:scale(1.12)}
.arrow-key.done{border-color:#4f8;color:#8fc;background:rgba(10,40,20,0.85)}
.arrow-key.wrong{border-color:#f44;background:rgba(60,10,10,0.9);animation:keyShake 0.3s}
.virtual-dpad{display:none;grid-template-columns:repeat(3,60px);grid-template-rows:repeat(3,60px);gap:6px;margin-top:10px}
.virtual-dpad .dpad-btn{background:rgba(60,20,20,0.9);border:2px solid #844;color:#fff;font-size:28px;display:flex;align-items:center;justify-content:center;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}
.virtual-dpad .dpad-btn:active{background:rgba(120,40,40,1)}
.dpad-up{grid-column:2;grid-row:1}
.dpad-left{grid-column:1;grid-row:2}
.dpad-right{grid-column:3;grid-row:2}
.dpad-down{grid-column:2;grid-row:3}
@media (hover:none),(max-width:720px){.virtual-dpad{display:grid}}

/* 追逐B */
.chase-b-container{position:relative;width:min(600px,92vw);height:min(360px,55vh);background:linear-gradient(to bottom,rgba(30,10,10,0.7),rgba(60,20,20,0.4));border:2px solid #633;overflow:hidden}
.chase-b-obstacle{position:absolute;width:44px;height:44px;background:radial-gradient(circle,#c22,#400);border:2px solid #f66;border-radius:50%;cursor:pointer;box-shadow:0 0 15px rgba(255,50,50,0.7);animation:obstaclePop 0.3s ease-out}
@keyframes obstaclePop{from{transform:scale(0)}to{transform:scale(1)}}

/* 追逐C */
.chase-c-container{display:flex;flex-direction:column;align-items:center;gap:16px}
.rhythm-tracks{position:relative;width:min(460px,88vw);height:340px;background:linear-gradient(to bottom,rgba(30,10,10,0.5),rgba(10,5,5,0.9));border:2px solid #633;display:grid;grid-template-columns:repeat(4,1fr);overflow:hidden}
.rhythm-track{border-right:1px dashed #422;position:relative}
.rhythm-track:last-child{border-right:none}
.rhythm-judge-line{position:absolute;bottom:60px;left:0;right:0;height:3px;background:#fd6;box-shadow:0 0 10px rgba(255,220,100,0.8);z-index:2}
.rhythm-note{position:absolute;left:50%;transform:translateX(-50%);width:70%;height:40px;background:linear-gradient(to bottom,#c22,#800);border:2px solid #f44;border-radius:6px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:bold;font-size:20px;font-family:monospace}
.rhythm-key-hint{position:absolute;bottom:20px;left:0;right:0;display:flex;justify-content:space-around;font-size:18px;color:#866;font-family:monospace}

/* 躲避A */
.hide-a-container{display:flex;flex-direction:column;align-items:center;gap:22px}
.sound-scene{width:min(600px,90vw);padding:20px;background:rgba(15,5,5,0.85);border:2px solid #633}
.sound-zombie-row{display:flex;align-items:center;justify-content:center;font-size:34px;margin-bottom:18px;height:50px}
.sound-zombie{animation:zombieWalk 1.2s ease-in-out infinite}
@keyframes zombieWalk{0%,100%{transform:translateX(-80px);opacity:0.6}50%{transform:translateX(80px);opacity:1}}
.sound-floor-row{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.sound-tile{aspect-ratio:1;border:2px solid #633;display:flex;align-items:center;justify-content:center;font-size:18px;cursor:pointer;transition:all 0.2s;background:rgba(30,15,10,0.7);color:#a98;font-family:monospace}
.sound-tile.safe{background:rgba(20,40,20,0.4);color:#8c8}
.sound-tile.noisy{background:rgba(50,25,10,0.6);color:#e86}
.sound-tile.glass{background:rgba(20,30,50,0.5);color:#8ae}
.sound-tile:hover{transform:scale(1.08);border-color:#fd6;box-shadow:0 0 12px rgba(255,220,100,0.4)}
.sound-tile.stepped{background:rgba(10,60,30,0.8);border-color:#4f8;color:#8fc}
.sound-tile.failed{background:rgba(80,10,10,0.9);border-color:#f44;color:#faa;animation:keyShake 0.3s}

/* 躲避B */
.hide-b-container{display:flex;flex-direction:column;align-items:center;gap:24px}
.breath-heart{font-size:100px;filter:drop-shadow(0 0 20px rgba(255,50,50,0.6));animation:heartBeat 1s ease-in-out infinite}
@keyframes heartBeat{0%,100%{transform:scale(1)}30%{transform:scale(1.15)}60%{transform:scale(1)}}
.breath-state{padding:14px 40px;font-size:20px;letter-spacing:6px;border:2px solid;border-radius:4px;transition:all 0.3s}
.breath-state.red{color:#faa;border-color:#f44;background:rgba(60,10,10,0.7);box-shadow:0 0 20px rgba(255,50,50,0.5)}
.breath-state.green{color:#afa;border-color:#4f4;background:rgba(10,60,20,0.7);box-shadow:0 0 20px rgba(50,255,50,0.5)}
.breath-button{padding:18px 60px;font-size:18px;letter-spacing:4px;background:rgba(20,5,5,0.85);border:2px solid #844;color:#e8c8c8;font-family:inherit;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent}
.breath-button.holding{background:rgba(80,40,10,0.9);border-color:#fd6;color:#fff;box-shadow:0 0 25px rgba(255,220,100,0.6)}

/* 躲避C */
.hide-c-container{display:flex;flex-direction:column;align-items:center;gap:18px}
.hide-c-scene{width:min(500px,90vw);height:200px;background:rgba(15,5,5,0.85);border:2px solid #633;position:relative;display:flex;align-items:center;justify-content:center;font-size:70px;overflow:hidden}
.hide-c-target{animation:hideCFloat 2s ease-in-out infinite}
@keyframes hideCFloat{0%,100%{transform:translateX(-100px)}50%{transform:translateX(100px)}}
.hide-c-choices{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}
.hide-c-btn{padding:14px 30px;background:rgba(20,5,5,0.85);border:2px solid #844;color:#e8c8c8;font-family:inherit;font-size:15px;cursor:pointer;letter-spacing:2px}
.hide-c-btn:hover{background:rgba(80,30,10,0.9);border-color:#fd6;color:#fff}

@media (max-width:640px){
  .battle-a-key{width:100px;height:100px;font-size:52px}
  .combo-key{width:48px;height:48px;font-size:24px}
  .arrow-key{width:44px;height:44px;font-size:26px}
  .countdown-number{font-size:100px}
  .result-screen{font-size:42px;letter-spacing:12px}
  .minigame-title{font-size:18px;letter-spacing:4px}
  .sound-tile{font-size:14px}
}
