/* ═══════════════════════════════════════════
   游戏样式 v2.0 - 战斗特效/换装/粒子
   ═══════════════════════════════════════════ */

/* ── 战斗场景 ── */
.battle-scene{display:flex;align-items:center;justify-content:space-around;padding:30px 20px;min-height:340px;background:linear-gradient(180deg,#87CEEB 0%,#b8e0f8 30%,#e8f4e8 70%,#90d890 100%);border-radius:20px;position:relative;overflow:hidden;margin-bottom:16px;box-shadow:inset 0 0 60px rgba(135,206,235,.3)}
.battle-scene::before{content:'';position:absolute;top:10%;left:5%;width:20px;height:20px;background:rgba(255,255,255,.4);border-radius:50%;animation:petFloat 6s ease-in-out infinite}
.battle-scene::after{content:'';position:absolute;top:25%;right:15%;width:30px;height:30px;background:rgba(255,255,255,.3);border-radius:50%;animation:petFloat 8s ease-in-out infinite}
.battle-scene .bg-cloud{position:absolute;background:rgba(255,255,255,.5);border-radius:50%}
.battle-entity{text-align:center;transition:transform .3s ease;z-index:2;position:relative}
.battle-entity.charging-right{animation:chargeRight .4s ease}
.battle-entity.charging-left{animation:chargeLeft .4s ease}
.battle-entity.hit{animation:hitShake .5s ease}
.battle-entity.hit .entity-sprite{animation:hitFlash .3s ease}
.battle-entity.dead{animation:monsterDefeat .8s ease forwards}
.battle-entity.victory .entity-sprite{animation:victoryJump .8s ease}
.entity-sprite{font-size:100px;line-height:1;transition:transform .15s ease,filter .3s;filter:drop-shadow(0 6px 12px rgba(0,0,0,.2));position:relative;z-index:2}
.entity-sprite.under-attack{filter:brightness(1.8) drop-shadow(0 0 16px rgba(255,0,0,.5))}
.entity-name{font-size:17px;font-weight:800;margin:8px 0 4px;color:var(--text);text-shadow:0 1px 2px rgba(255,255,255,.5)}
.entity-hp-text{font-size:12px;color:var(--text-secondary);margin-top:4px;font-weight:600}
.battle-vs{font-size:42px;font-weight:900;color:var(--danger);animation:pulse 1.5s infinite;text-shadow:0 0 16px rgba(255,107,107,.4);z-index:2;position:relative}

/* ── 伤害数字飘浮 ── */
.dmg-number{position:fixed;pointer-events:none;z-index:9999;font-weight:900;font-size:28px;text-shadow:0 2px 8px rgba(0,0,0,.3);animation:dmgFloat 1s ease-out forwards;white-space:nowrap}
.dmg-number.crit{font-size:40px;color:#f59e0b;animation:dmgCritFloat 1.2s ease-out forwards;text-shadow:0 0 20px rgba(245,158,11,.6),0 2px 8px rgba(0,0,0,.3)}
.dmg-number.heal{color:#22c55e}
.dmg-number.dodge{color:var(--accent-blue);font-style:italic;font-size:24px}

/* ── 粒子特效 ── */
.battle-particle{position:absolute;pointer-events:none;z-index:5;border-radius:50%;animation:particleBurst .6s ease-out forwards}
.particle-burst-container{position:absolute;inset:0;pointer-events:none;z-index:3}

/* ── 屏幕震动 ── */
.screen-shake{animation:hitShake .4s ease}

/* ── 战斗操作按钮 ── */
.battle-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap;padding:12px 0}
.battle-action-btn{padding:16px 28px;border-radius:16px;font-size:17px;font-weight:800;min-width:110px;transition:all .25s cubic-bezier(.68,-.2,.27,1.3);position:relative;overflow:hidden;letter-spacing:1px}
.battle-action-btn:hover{transform:translateY(-3px) scale(1.06);box-shadow:0 10px 30px rgba(0,0,0,.18)}
.battle-action-btn:active{transform:translateY(0) scale(.95)}
.battle-action-btn .btn-icon{font-size:22px;display:block;margin-bottom:2px}

/* ── 战斗日志 ── */
.battle-log{max-height:150px;overflow-y:auto;padding:12px 16px;background:rgba(0,0,0,.03);border-radius:14px;font-size:13px;margin:8px 0;border:1px solid var(--border)}
.battle-log p{padding:5px 0;border-bottom:1px solid rgba(0,0,0,.04);animation:slideLeft .3s ease;display:flex;align-items:center;gap:6px}
.battle-log .log-hit{color:#dc2626}
.battle-log .log-info{color:var(--dim)}
.battle-log .log-crit{color:#f59e0b;font-weight:800;font-size:1.15em}
.battle-log .log-dodge{color:var(--accent-blue);font-style:italic}
.battle-log .log-heal{color:var(--accent-green)}

/* ── 怪兽选择 ── */
.monster-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:14px}
.monster-card{text-align:center;padding:20px 14px;border:2px solid var(--border);border-radius:18px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--card);position:relative;overflow:hidden}
.monster-card::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--danger),var(--accent-purple));opacity:0;transition:opacity .3s}
.monster-card:hover{transform:translateY(-6px);box-shadow:0 16px 40px rgba(91,79,207,.18);border-color:var(--accent-purple)}
.monster-card:hover::before{opacity:1}
.monster-card.locked{opacity:.4;cursor:not-allowed;pointer-events:none;filter:grayscale(.5)}
.monster-card .monster-icon{font-size:60px;display:block;margin-bottom:6px;filter:drop-shadow(0 4px 8px rgba(0,0,0,.15))}
.monster-card .monster-name{font-weight:800;margin:4px 0;font-size:15px}
.monster-card .monster-stats{font-size:11px;color:var(--dim);display:flex;justify-content:center;gap:8px}
.monster-card .monster-reward{font-size:12px;color:var(--accent-orange);font-weight:700;margin-top:8px;background:rgba(255,179,71,.1);border-radius:10px;padding:4px 10px;display:inline-block}

/* ── 换装系统 ── */
.dressup-scene{position:relative;width:100%;max-width:420px;margin:0 auto;aspect-ratio:3/4;border:3px dashed var(--border);border-radius:20px;background:radial-gradient(circle at 50% 50%,rgba(176,124,216,.06) 0%,var(--bg-alt) 100%);overflow:hidden;transition:border-color .3s}
.dressup-scene:hover{border-color:var(--accent-purple)}
.dressup-canvas{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:1}
.dressup-pet{position:relative;width:200px;height:240px}
.dressup-pet .layer{position:absolute;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;pointer-events:none;transition:all .2s ease}
.dressup-pet .layer.base{font-size:140px;z-index:1;animation:petFloat 3s ease-in-out infinite}
.dressup-pet .layer.costume{pointer-events:auto;cursor:grab;z-index:2;animation:petFloat 3s ease-in-out infinite}
.dressup-pet .layer.costume:active{cursor:grabbing}
.dressup-pet .layer.costume.worn{cursor:pointer;opacity:1;filter:drop-shadow(0 2px 3px rgba(0,0,0,.25))}
.dressup-pet .layer.costume.worn:hover{opacity:.7;transform:scale(1.08)}
.dressup-pet .layer.costume.item-pop{animation:costumeSnap .45s ease}
.costume-shop{display:grid;grid-template-columns:repeat(auto-fill,minmax(105px,1fr));gap:10px;margin-top:14px}
.costume-item{text-align:center;padding:12px 8px;border:2px solid var(--border);border-radius:14px;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);background:var(--card);position:relative}
.costume-item:hover{border-color:var(--accent-purple);transform:scale(1.04);box-shadow:0 6px 20px rgba(176,124,216,.15)}
.costume-item.owned{border-color:var(--accent-green);background:rgba(88,214,141,.04)}
.costume-item.equipped{border-color:var(--secondary);box-shadow:0 0 0 3px rgba(255,107,157,.2),0 0 16px rgba(255,107,157,.15);background:rgba(255,107,157,.03)}
.costume-item .costume-icon{font-size:40px;display:block}
.costume-item .costume-name{font-size:11px;font-weight:700;margin:4px 0}
.costume-item .costume-price{font-size:11px;color:var(--accent-orange);font-weight:700}
.costume-item .costume-check{position:absolute;top:6px;right:6px;width:20px;height:20px;background:var(--secondary);border-radius:50%;color:#fff;font-size:12px;display:flex;align-items:center;justify-content:center;animation:bounceIn .3s ease}
.costume-slot-tabs{display:flex;gap:6px;margin-bottom:14px;flex-wrap:wrap}
.costume-slot-tab{padding:8px 16px;border-radius:20px;font-size:13px;font-weight:700;cursor:pointer;background:var(--bg-alt);transition:all .2s ease;border:2px solid transparent}
.costume-slot-tab:hover{background:rgba(176,124,216,.1)}
.costume-slot-tab.active{background:linear-gradient(135deg,var(--accent-purple),#9333ea);color:#fff;border-color:var(--accent-purple);box-shadow:0 4px 12px rgba(176,124,216,.3)}

/* ── 战斗结果 ── */
.battle-result{text-align:center;padding:28px 20px}
.battle-result .result-icon{font-size:90px;display:block;margin-bottom:8px}
.battle-result .result-icon.win-icon{animation:victoryJump 1s ease}
.battle-result .result-title{font-size:28px;font-weight:900;margin:8px 0}
.battle-result .result-title.win{color:var(--accent-gold);text-shadow:0 2px 8px rgba(240,192,64,.3)}
.battle-result .result-title.lose{color:var(--dim)}
.battle-result .result-rewards{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin:20px 0}
.battle-result .reward-item{padding:14px 20px;background:linear-gradient(135deg,rgba(240,192,64,.12),rgba(255,179,71,.08));border:1px solid rgba(240,192,64,.2);border-radius:16px;font-weight:700;animation:coinFly 1.8s ease-out forwards;font-size:16px}
.battle-result .reward-item:nth-child(2){animation-delay:.4s}

@media(max-width:500px){
  .battle-entity .entity-sprite{font-size:64px}
  .battle-vs{font-size:28px}
  .battle-actions{flex-direction:column;align-items:stretch}
  .battle-action-btn{width:100%}
  .dressup-scene{max-width:100%}
  .dressup-pet{width:160px;height:200px}
  .dressup-pet .layer.base{font-size:100px}
}
