/* V4 — 動畫式修仙對決 */
#combatModal{
  z-index:90;
  padding:0;
  background:#020504;
  --combat-school:#bdeff2;
  --combat-school-rgb:189,239,242;
}
body.path-alchemy #combatModal{--combat-school:#8ef0ad;--combat-school-rgb:142,240,173}
body.path-demon #combatModal{--combat-school:#ef6b86;--combat-school-rgb:239,107,134}

#combatDialog.combat-dialog{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  grid-template-rows:auto minmax(310px,1fr) auto;
  width:100vw;
  height:100dvh;
  max-width:none;
  max-height:none;
  padding:18px clamp(18px,3.4vw,58px) 16px;
  overflow:hidden;
  border:0;
  background:#050a07;
  isolation:isolate;
  perspective:1200px;
}
.combat-stage-head,.combat-arena,.combat-hud{min-width:0;width:100%}
#combatDialog:before{inset:9px;z-index:40;border:1px solid rgba(225,195,128,.15)}
#combatDialog:after{
  content:"";
  position:absolute;
  z-index:-4;
  inset:0;
  background:
    linear-gradient(180deg,rgba(2,6,4,.15),rgba(2,6,4,.06) 36%,rgba(2,6,4,.82) 76%,#020503),
    radial-gradient(ellipse at 50% 45%,transparent 15%,rgba(0,0,0,.52) 82%);
  pointer-events:none;
}

.combat-backdrop{
  position:absolute;
  z-index:-7;
  inset:-5%;
  background-position:center;
  background-size:cover;
  filter:saturate(.78) brightness(.55) contrast(1.16);
  transform:scale(1.06);
  transition:filter 1.1s,transform 1.1s;
  animation:combat-camera-drift 11s ease-in-out infinite alternate;
}
#combatModal.final-battle .combat-backdrop{
  background-image:url("assets/scenes/valley.jpg");
  background-position:center 35%;
  filter:saturate(.88) brightness(.42) contrast(1.25);
}

.combat-depth{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.combat-depth-far{
  z-index:-5;
  opacity:.36;
  background:
    radial-gradient(circle at 16% 27%,rgba(220,236,225,.36) 0 1px,transparent 2px),
    radial-gradient(circle at 72% 18%,rgba(220,236,225,.28) 0 1px,transparent 2px),
    radial-gradient(circle at 48% 41%,rgba(220,236,225,.24) 0 1px,transparent 2px);
  background-size:120px 95px,170px 130px,210px 160px;
  animation:combat-dust 13s linear infinite;
}
.combat-depth-mid{
  z-index:-3;
  opacity:.42;
  background:
    linear-gradient(115deg,transparent 44%,rgba(var(--combat-school-rgb),.12) 49%,transparent 54%),
    repeating-radial-gradient(ellipse at 50% 68%,transparent 0 24px,rgba(218,231,219,.055) 25px 26px,transparent 27px 50px);
  filter:blur(1px);
  animation:combat-mist 8s ease-in-out infinite alternate;
}
.combat-depth-front{
  z-index:18;
  inset:auto -5% -6% -5%;
  height:29%;
  opacity:.72;
  background:
    radial-gradient(ellipse at 15% 100%,rgba(166,184,170,.15),transparent 46%),
    radial-gradient(ellipse at 78% 100%,rgba(166,184,170,.13),transparent 44%),
    linear-gradient(180deg,transparent,rgba(2,6,4,.84));
  filter:blur(8px);
  transform:translateZ(80px) scale(1.04);
  animation:foreground-mist 6s ease-in-out infinite alternate;
}
#combatModal[data-scene=town] .combat-depth-far{filter:sepia(.45);background-color:rgba(226,155,72,.04)}
#combatModal[data-scene=marsh] .combat-depth-far{background-color:rgba(73,188,144,.05)}
#combatModal[data-scene=valley] .combat-depth-far,.final-battle .combat-depth-far{background-color:rgba(228,69,39,.07);animation-duration:5s}
#combatModal[data-scene=tomb] .combat-depth-mid{background-image:linear-gradient(104deg,transparent 42%,rgba(193,230,237,.18) 43%,transparent 45%)}

.combat-stage-head{position:relative;z-index:22;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:31px}
.boss-phase{grid-column:2;margin:0;color:#e8ca83;font-size:9px;letter-spacing:.24em;text-shadow:0 2px 8px #000}
.round-pulse{grid-column:3;justify-self:end;padding:5px 10px;border:1px solid rgba(225,195,128,.18);color:#9eac9f;font-size:7px;letter-spacing:.18em;background:rgba(6,12,8,.45)}
.round-pulse.locked{color:var(--combat-school);border-color:rgba(var(--combat-school-rgb),.3)}

.combat-arena{
  position:relative;
  z-index:4;
  display:grid;
  grid-template-columns:minmax(0,1fr) clamp(45px,6vw,90px) minmax(0,1fr);
  align-items:end;
  min-height:0;
  margin:0;
  overflow:visible;
}
.combatant{position:relative;display:grid;align-items:end;justify-items:center;min-width:0;height:100%}
.combatant.enemy{grid-column:1}.combatant.player{grid-column:3}
.fighter-shell{
  position:relative;
  width:min(34vw,430px);
  height:min(54vh,560px);
  min-height:300px;
  transform:translateZ(0);
  transform-origin:50% 82%;
  transition:filter .2s,transform .24s cubic-bezier(.2,.8,.2,1);
  will-change:transform,filter;
}
.enemy-shell{justify-self:end}.player-shell{justify-self:start}
.enemy .fighter-shell{--return-x:28%}.player .fighter-shell{--return-x:-29%}
.fighter-art{
  position:absolute;
  z-index:3;
  inset:0;
  background-repeat:no-repeat;
  filter:drop-shadow(0 20px 24px rgba(0,0,0,.72));
  transition:filter .28s,opacity .25s;
  will-change:transform,filter;
}
.player-fighter{
  background-image:url("assets/combat/player-paths-cutout.png");
  background-size:300% 100%;
  background-position:0 50%;
}
.player-fighter[data-path=alchemy]{background-position:50% 50%}
.player-fighter[data-path=demon]{background-position:100% 50%}
.enemy-fighter{
  background-image:url("assets/combat/hunter.png");
  background-size:contain;
  background-position:center bottom;
  mix-blend-mode:normal;
  filter:drop-shadow(0 20px 24px rgba(0,0,0,.72));
}
.enemy-fighter[data-enemy=stone]{background-image:url("assets/combat/stone.png")}
.enemy-fighter[data-enemy=senior]{background-image:url("assets/combat/senior.png")}
.enemy-fighter[data-enemy=rival]{background-image:url("assets/combat/rival.png")}
.enemy-fighter[data-enemy=hunter]{background-image:url("assets/combat/hunter.png")}
.enemy-fighter[data-enemy=wolf]{background-image:url("assets/combat/wolf.png")}
.enemy-fighter[data-enemy=lizard]{background-image:url("assets/combat/lizard.png")}
.enemy-fighter[data-enemy=spirit]{background-image:url("assets/combat/spirit.png")}
.enemy-fighter[data-enemy=fallen]{background-image:url("assets/combat/fallen.png")}
.enemy-fighter[data-enemy=boss]{
  background-image:url("assets/combat/boss-forms-cutout.png");
  background-size:300% 100%;
  background-position:0 50%;
  mix-blend-mode:normal;
  transform:scale(1.12);
  transform-origin:center bottom;
}
.enemy-fighter[data-enemy=boss][data-boss-phase="1"]{background-position:50% 50%;transform:scale(1.19)}
.enemy-fighter[data-enemy=boss][data-boss-phase="2"]{background-position:100% 50%;transform:scale(1.28)}
.final-battle .enemy-shell{width:min(42vw,550px)}

.fighter-aura{position:absolute;z-index:1;left:50%;bottom:5%;width:68%;height:55%;border-radius:50%;background:radial-gradient(circle,rgba(var(--combat-school-rgb),.24),transparent 67%);filter:blur(18px);transform:translateX(-50%);animation:fighter-breathe 2.2s ease-in-out infinite alternate}
.enemy .fighter-aura{background:radial-gradient(circle,rgba(211,67,48,.2),transparent 68%)}
body.path-demon .player-shell .fighter-aura{animation:shadow-writhe 1.7s ease-in-out infinite alternate}
.fighter-shell:after{content:"";position:absolute;z-index:5;left:13%;right:13%;bottom:1%;height:8%;border-radius:50%;background:radial-gradient(ellipse,rgba(0,0,0,.78),transparent 68%);filter:blur(8px)}

.combatant-info{
  position:absolute;
  z-index:12;
  bottom:8px;
  width:min(88%,330px);
  padding:8px 12px 9px;
  border:1px solid rgba(222,196,138,.17);
  background:linear-gradient(90deg,rgba(4,8,6,.9),rgba(9,16,11,.64));
  box-shadow:0 10px 24px rgba(0,0,0,.42);
  backdrop-filter:blur(10px);
}
.enemy-info{left:2%;text-align:left}.player-info{right:2%;text-align:right;background:linear-gradient(270deg,rgba(4,8,6,.9),rgba(9,16,11,.64))}
.combatant-info>span{color:#819087;font-size:7px;letter-spacing:.2em}.combatant-info h2{margin:1px 0 6px;font-size:clamp(12px,1.25vw,18px);font-weight:500;text-shadow:0 2px 8px #000}
.combat-bar{width:100%;height:8px;border:1px solid rgba(255,255,255,.08);background:rgba(0,0,0,.68);box-shadow:inset 0 1px 4px #000}
.combat-bar i{display:block;height:100%;background:linear-gradient(90deg,#7d2b2c,#e07762);box-shadow:0 0 10px rgba(225,82,67,.45);transition:width .42s cubic-bezier(.2,.8,.2,1)}
.player .combat-bar i{margin-left:auto;background:linear-gradient(90deg,var(--combat-school),#4a8b6a);box-shadow:0 0 10px rgba(var(--combat-school-rgb),.4)}
.combatant-info>small{display:block;margin-top:4px;color:#9aa69e;font-size:8px}.player-info>small{text-align:right}
.combat-resource{display:grid;grid-template-columns:auto minmax(58px,1fr) auto;align-items:center;gap:7px;margin-top:5px;color:#b7ddd8;text-align:left}
.combat-resource>span{display:grid;place-items:center;width:20px;height:20px;border:1px solid rgba(119,220,227,.42);border-radius:50%;color:#d7fbff;background:rgba(35,101,109,.38);font-size:9px;font-weight:700;box-shadow:0 0 12px rgba(71,211,224,.16)}
.combat-resource>strong{min-width:58px;color:#c9eef0;font-size:9px;font-variant-numeric:tabular-nums;text-align:right}
.combat-qi-bar{height:7px;overflow:hidden;border:1px solid rgba(142,226,231,.22);background:rgba(0,12,16,.8);box-shadow:inset 0 1px 4px #000}
.combat-qi-bar i{display:block;width:100%;height:100%;background:linear-gradient(90deg,#367f8e,#8be4e3,#d6ffff);box-shadow:0 0 12px rgba(92,225,232,.68);transition:width .38s cubic-bezier(.2,.8,.2,1)}
.fighter-status{display:flex;flex-wrap:wrap;gap:4px;min-height:19px;margin-top:5px}.player-info .fighter-status{justify-content:flex-end}

.versus-core{position:relative;z-index:9;align-self:center;display:grid;place-items:center;width:clamp(44px,5vw,70px);height:clamp(44px,5vw,70px);margin:auto;border:1px solid rgba(225,195,128,.25);border-radius:50%;color:#ebcd88;background:rgba(5,9,6,.52);box-shadow:0 0 45px rgba(225,195,128,.13);backdrop-filter:blur(6px)}
.versus-core span{font-size:clamp(25px,3vw,43px);text-shadow:0 0 20px rgba(225,195,128,.5)}
.versus-core i{position:absolute;inset:-8px;border:1px solid rgba(225,195,128,.12);border-radius:50%;animation:versus-ring 7s linear infinite}

.combat-hud{position:relative;z-index:24;align-self:end;padding-top:4px;transition:opacity .18s,filter .18s,transform .18s}
.combat-status{display:none}
.boss-mechanic{display:none;max-width:680px;margin:0 auto 5px;padding:7px 12px;border:1px solid rgba(225,195,128,.24);background:rgba(18,11,7,.78);color:#cbbd98;font-size:8px;text-align:center;backdrop-filter:blur(10px)}
.boss-mechanic.visible{display:block}.boss-mechanic b{color:#efd38d}
.intent-box{
  position:relative;
  display:grid;
  grid-template-columns:34px auto minmax(0,1fr) auto;
  align-items:center;
  gap:9px;
  max-width:940px;
  margin:0 auto 4px;
  padding:8px 12px;
  border:1px solid rgba(211,87,68,.3);
  background:linear-gradient(90deg,rgba(27,10,9,.78),rgba(9,14,10,.82));
  font-size:9px;
  text-align:left;
  backdrop-filter:blur(12px);
}
.intent-box>i{display:grid;place-items:center;width:30px;height:30px;border:1px solid rgba(223,111,92,.55);border-radius:50%;color:#ee917f;font-size:14px;font-style:normal;box-shadow:0 0 16px rgba(223,75,54,.2)}
.intent-box>span{color:#d37868;font-size:7px;letter-spacing:.18em}.intent-box>strong{font-weight:500}.intent-box>em{padding:4px 7px;border:1px solid rgba(255,255,255,.1);color:#a9b8ae;font-size:7px;font-style:normal;white-space:nowrap}
.combat-message{min-height:20px;margin:3px auto 6px;max-width:980px;color:#aab6ae;font-size:8px;line-height:1.6;text-align:center;text-shadow:0 2px 7px #000}
.mobile-action-head{display:none}
.combat-actions{display:grid;grid-template-columns:repeat(auto-fit,minmax(122px,1fr));max-width:1180px;margin:auto;gap:6px}
.combat-action{position:relative;min-height:58px;padding:8px 9px;overflow:hidden;border:1px solid rgba(190,208,196,.13);background:linear-gradient(145deg,rgba(28,43,34,.9),rgba(8,15,10,.92));text-align:left;backdrop-filter:blur(10px);transition:transform .18s,border-color .18s,box-shadow .18s,opacity .18s}
.combat-action:before{content:"";position:absolute;inset:auto -30% -70% 15%;height:100%;background:radial-gradient(ellipse,rgba(var(--combat-school-rgb),.18),transparent 65%);transition:transform .2s}
.combat-action:hover:not(:disabled){transform:translateY(-4px);border-color:rgba(var(--combat-school-rgb),.62);box-shadow:0 10px 24px rgba(0,0,0,.35),inset 0 0 18px rgba(var(--combat-school-rgb),.05)}
.combat-action:hover:not(:disabled):before{transform:translateY(-18%)}
.combat-action b,.combat-action small{position:relative;display:block}.combat-action b{font-size:9px}.combat-action small{margin-top:4px;color:#87958c;font-size:6.5px;line-height:1.35}.combat-action.featured b{color:var(--combat-school)}.combat-action.ultimate{border-color:rgba(225,195,128,.35);background:linear-gradient(145deg,rgba(73,55,28,.68),rgba(15,19,12,.94))}.combat-action.combo-ready{animation:combo-ready 1s ease-in-out infinite alternate}.combat-action:disabled{opacity:.3;filter:saturate(.3)}
.combat-action.insufficient-qi small{color:#e0a77d}

.status-chip{display:inline-flex;align-items:center;padding:2px 5px;border:1px solid rgba(189,214,198,.16);color:#a8d9bb;background:rgba(23,57,36,.46);font-size:6px;white-space:nowrap}
.status-chip.enemy-status{color:#ef9c89;border-color:rgba(226,104,76,.26);background:rgba(80,24,19,.48)}
.status-chip.poison{color:#8ee8a8;border-color:rgba(71,206,111,.34)}.status-chip.mark{color:#f07991;border-color:rgba(237,76,107,.38)}.status-chip.flaw{color:#dffcff;border-color:rgba(179,238,244,.42)}

/* 狀態直接附著在角色身上 */
.flaw-mark,.blood-marks,.poison-cloud,.burn-flame,.player-guard,.low-health-pulse,.boss-wounds{position:absolute;z-index:7;pointer-events:none;opacity:0}
.enemy-shell.has-flaw .flaw-mark{left:42%;top:25%;width:42%;height:52%;opacity:1;background:linear-gradient(118deg,transparent 47%,rgba(216,252,255,.95) 49%,transparent 51%);filter:drop-shadow(0 0 8px #bdf6ff);animation:flaw-flicker .8s steps(2) infinite}
.enemy-shell.has-marks .blood-marks{left:44%;top:39%;width:72px;height:72px;opacity:1;border:2px solid rgba(240,58,91,.72);border-radius:46% 54% 42% 58%;box-shadow:0 0 20px rgba(237,42,75,.5),inset 0 0 15px rgba(237,42,75,.25);animation:blood-mark-pulse .74s ease-in-out infinite alternate}
.enemy-shell.has-poison .poison-cloud{inset:22% 8% 8%;opacity:.75;background:radial-gradient(circle at 40% 60%,rgba(52,204,95,.3),transparent 42%),radial-gradient(circle at 65% 35%,rgba(102,226,136,.22),transparent 35%);filter:blur(11px);animation:poison-billow 2.1s ease-in-out infinite alternate}
.enemy-shell.has-burn .burn-flame{left:22%;right:18%;bottom:7%;height:44%;opacity:.85;background:linear-gradient(105deg,transparent 18%,rgba(68,236,145,.2) 30%,transparent 44%,rgba(66,222,125,.27) 62%,transparent 75%);filter:blur(4px) drop-shadow(0 0 8px #5de696);animation:green-flame .75s ease-in-out infinite alternate}
.player-shell.guarded .player-guard{inset:9% 7% 8%;opacity:1;border:1px solid rgba(var(--combat-school-rgb),.65);border-radius:50%;background:radial-gradient(circle,transparent 54%,rgba(var(--combat-school-rgb),.12));box-shadow:inset 0 0 30px rgba(var(--combat-school-rgb),.16),0 0 25px rgba(var(--combat-school-rgb),.13);animation:guard-rotate 3.6s linear infinite}
.player-shell.low-health .low-health-pulse{inset:0;opacity:1;background:radial-gradient(ellipse,transparent 44%,rgba(191,22,41,.25) 72%,transparent);animation:low-health 1s ease-in-out infinite alternate}
body.path-demon .player-shell.low-health .player-fighter{filter:drop-shadow(0 0 28px rgba(240,45,82,.7)) saturate(1.25)}

/* 敵方意圖直接在舞臺預演 */
.intent-telegraph{position:absolute;z-index:6;inset:38px 0 28%;pointer-events:none;overflow:hidden}
.intent-telegraph i,.intent-telegraph b,.intent-telegraph span{position:absolute;display:block;opacity:0;transition:opacity .3s,transform .35s}
#combatDialog[data-intent=heavy] .intent-telegraph i{left:5%;right:5%;bottom:-23%;height:52%;opacity:.58;border:2px solid rgba(247,67,47,.72);border-radius:50%;background:radial-gradient(ellipse,rgba(231,45,29,.2),transparent 58%);box-shadow:inset 0 0 45px rgba(231,45,29,.2);animation:danger-zone 1s ease-in-out infinite alternate}
#combatDialog[data-intent=guard] .intent-telegraph b{left:18%;top:15%;width:180px;height:250px;opacity:.58;border:2px solid rgba(116,229,164,.55);border-radius:50%;background:radial-gradient(circle,rgba(116,229,164,.11),transparent 62%);box-shadow:0 0 32px rgba(116,229,164,.18);animation:guard-shield 2.6s linear infinite}
#combatDialog[data-intent=curse] .intent-telegraph span{right:17%;bottom:5%;width:210px;height:95px;opacity:.68;border:1px solid rgba(192,98,214,.55);border-radius:50%;background:repeating-conic-gradient(from 9deg,rgba(202,105,223,.22) 0 4deg,transparent 5deg 29deg);box-shadow:0 0 35px rgba(149,62,180,.22);transform:rotateX(66deg);animation:curse-rune 5s linear infinite}
#combatDialog[data-intent=devour] .intent-telegraph:after{content:"";position:absolute;left:36%;right:24%;top:34%;height:16%;background:repeating-linear-gradient(175deg,transparent 0 9px,rgba(188,106,225,.5) 10px 12px,transparent 13px 23px);filter:blur(2px);animation:devour-stream .75s linear infinite}
#combatDialog[data-intent=rage] .intent-telegraph{opacity:.9;background:radial-gradient(circle at 26% 38%,rgba(220,35,41,.28),transparent 28%),linear-gradient(110deg,rgba(111,10,20,.17),transparent 50%);animation:rage-world .48s ease-in-out infinite alternate}
#combatDialog[data-intent=guard] .intent-box{border-color:rgba(116,229,164,.34)}
#combatDialog[data-intent=curse] .intent-box,#combatDialog[data-intent=devour] .intent-box{border-color:rgba(192,98,214,.38)}
#combatDialog[data-intent=rage] .intent-box{border-color:rgba(241,64,66,.55);box-shadow:0 0 20px rgba(209,35,42,.12)}

/* 五段式攻擊 */
.fighter-shell.phase-charge .fighter-art{animation:phase-charge .11s ease-out both;filter:drop-shadow(0 0 27px rgba(var(--combat-school-rgb),.75)) brightness(1.14)}
.enemy .fighter-shell.phase-charge .fighter-art{filter:drop-shadow(0 0 28px rgba(238,65,48,.68)) brightness(1.13)}
.player .fighter-shell.phase-dash{animation:player-dash .11s cubic-bezier(.1,.8,.2,1) both}
.enemy .fighter-shell.phase-dash{animation:enemy-dash .13s cubic-bezier(.1,.8,.2,1) both}
.fighter-shell.phase-return{animation:phase-return .18s ease-out both}
.fighter-shell.impact{animation:target-impact .2s steps(2) both}
.fighter-shell.impact-sword:before,.fighter-shell.impact-alchemy:before,.fighter-shell.impact-demon:before,.fighter-shell.impact-enemy:before{content:"";position:absolute;z-index:13;inset:7% -7%;pointer-events:none}
.fighter-shell.impact-sword:before{background:linear-gradient(112deg,transparent 44%,rgba(227,254,255,.98) 46%,transparent 49%),linear-gradient(74deg,transparent 49%,rgba(144,228,239,.72) 50%,transparent 52%);filter:drop-shadow(0 0 9px #d9ffff)}
.fighter-shell.impact-alchemy:before{background:radial-gradient(circle at 48% 48%,rgba(229,255,171,.95) 0 3%,rgba(73,244,141,.6) 5%,transparent 31%),conic-gradient(from 20deg,transparent,rgba(73,244,141,.5),transparent 22%);filter:drop-shadow(0 0 13px #60e89a)}
.fighter-shell.impact-demon:before{background:linear-gradient(68deg,transparent 42%,rgba(244,39,83,.92) 44%,transparent 48%),radial-gradient(circle at 52% 48%,rgba(162,4,38,.5),transparent 32%);filter:drop-shadow(0 0 11px #ed315b)}
.fighter-shell.impact-enemy:before{background:radial-gradient(circle at 50% 50%,rgba(255,82,51,.62),transparent 31%);filter:drop-shadow(0 0 10px #ef4b34)}
#combatDialog.camera-push .combat-arena{animation:camera-push .22s ease-out both}
#combatDialog.hit-stop{animation:hit-stop .115s steps(1) both}
#combatDialog.hit-stop-heavy{animation:hit-stop-heavy .145s steps(1) both}
#combatDialog.combo-sword.hit-stop-heavy{animation:hit-stop-sword .16s steps(1) both}
#combatDialog.combo-alchemy #impactBurst.show{box-shadow:0 0 0 22px rgba(73,244,141,.16),0 0 0 48px rgba(222,255,113,.08);animation:alchemy-chain-burst .32s ease-out both}
#combatDialog.combo-demon .attack-lane:after{content:"";position:absolute;inset:-30% 0;opacity:0;background:repeating-linear-gradient(72deg,transparent 0 11%,rgba(244,39,83,.82) 12% 13%,transparent 14% 22%);filter:drop-shadow(0 0 8px #ed315b);animation:demon-flurry .34s steps(4) both}

.attack-lane{position:absolute;z-index:15;left:11%;right:11%;top:28%;height:32%;pointer-events:none}
#combatProjectile{position:absolute;left:68%;top:52%;width:34%;height:4px;opacity:0;transform-origin:left}
#combatProjectile.fly{animation:projectile-fly .12s cubic-bezier(.1,.7,.2,1) both}
#combatProjectile.sword{background:linear-gradient(90deg,transparent,#e7ffff 35%,#c2f8ff);box-shadow:0 0 11px #c8faff;transform:rotate(-6deg)}
#combatProjectile.alchemy{height:70px;border-radius:50%;background:radial-gradient(circle,#f3ffc7 0 7%,#50e792 18%,rgba(52,226,131,.18) 48%,transparent 70%);filter:drop-shadow(0 0 11px #5bf0a0)}
#combatProjectile.demon{height:24px;background:repeating-linear-gradient(165deg,transparent 0 9px,#ee315c 10px 13px,transparent 14px 22px);filter:drop-shadow(0 0 8px #d91743)}
#combatProjectile.enemy{left:5%;background:linear-gradient(90deg,rgba(242,54,37,.95),transparent);box-shadow:0 0 12px #e53225;transform:rotate(5deg)}
#combatProjectile.enemy.fly{animation-name:projectile-fly-enemy}
#impactBurst{position:absolute;left:18%;top:42%;width:90px;height:90px;opacity:0;border-radius:50%;background:radial-gradient(circle,#fff,rgba(var(--combat-school-rgb),.55) 14%,transparent 58%)}
#impactBurst.player-side{left:auto;right:18%;background:radial-gradient(circle,#fff,rgba(239,76,54,.55) 14%,transparent 58%)}
#impactBurst.show{animation:impact-burst .24s ease-out both}

.damage-layer{position:absolute;z-index:32;inset:0;pointer-events:none;overflow:hidden}
.damage-number{position:absolute;left:25%;top:35%;color:#fff;font-size:clamp(23px,3vw,46px);font-weight:800;font-family:Georgia,"Noto Serif TC",serif;text-shadow:0 2px 5px #000,0 0 14px currentColor;animation:damage-rise .7s cubic-bezier(.1,.7,.2,1) both}
.damage-number.player-damage{left:70%;color:#ef7669}.damage-number.sword{color:#dfffff}.damage-number.alchemy{color:#8ff2ad}.damage-number.demon{color:#f06d88}.damage-number.critical{font-size:clamp(34px,5vw,72px);letter-spacing:-.04em}.damage-number.heal{left:72%;color:#b9ef9c}.damage-number small{display:block;font-size:8px;letter-spacing:.18em;text-align:center}

/* 大招、連招與終結 */
.combat-cinematic,.boss-transition,.finisher-overlay{position:absolute;z-index:60;inset:0;display:grid;place-items:center;opacity:0;visibility:hidden;pointer-events:none}
.combat-cinematic{grid-template-rows:1fr auto auto 1fr;background:linear-gradient(180deg,rgba(1,3,2,.98),rgba(3,8,5,.92) 30%,rgba(3,8,5,.92) 70%,rgba(1,3,2,.98));overflow:hidden}
.combat-cinematic:before,.combat-cinematic:after{content:"";position:absolute;left:0;right:0;height:30%;background:#000;z-index:2}.combat-cinematic:before{top:0}.combat-cinematic:after{bottom:0}
.combat-cinematic.show{visibility:visible;animation:cinematic-show 1.3s ease both}.combat-cinematic.show:before{animation:letterbox-top 1.3s ease both}.combat-cinematic.show:after{animation:letterbox-bottom 1.3s ease both}
.cinematic-eye{grid-row:1/5;position:absolute;inset:18% 0;background-image:url("assets/combat/player-paths-cutout.png");background-size:300% auto;background-position:0 23%;filter:saturate(.8) contrast(1.15) brightness(.63);transform:scale(1.12);animation:cinematic-pan 1.3s ease both}
.combat-cinematic.alchemy .cinematic-eye{background-position:50% 24%}.combat-cinematic.demon .cinematic-eye{background-position:100% 22%}
.combat-cinematic small,.combat-cinematic strong{position:relative;z-index:5;text-shadow:0 3px 18px #000}.combat-cinematic small{grid-row:2;color:var(--combat-school);font-size:9px;letter-spacing:.45em}.combat-cinematic strong{grid-row:3;color:#fff;font-size:clamp(42px,8vw,104px);font-weight:600;letter-spacing:.16em}
.combat-cinematic>i{position:absolute;z-index:4;left:-10%;right:-10%;top:50%;height:2px;background:linear-gradient(90deg,transparent,var(--combat-school),#fff,var(--combat-school),transparent);box-shadow:0 0 16px var(--combat-school);transform:rotate(-4deg) scaleX(0)}.combat-cinematic.show>i{animation:cinematic-cut 1.3s ease both}
#combatDialog.cinematic-active .combat-stage-head,#combatDialog.cinematic-active .combat-arena,#combatDialog.cinematic-active .combat-hud{opacity:.04;filter:blur(5px)}

.technique-cut{z-index:48;top:38%;font-size:clamp(38px,7vw,92px)}
.technique-cut.combo{color:#fff}.technique-cut.combo:after{content:"連招成立";display:block;margin-top:8px;color:var(--combat-school);font-size:10px;letter-spacing:.42em;text-align:center}

.boss-transition{background:radial-gradient(circle,rgba(108,23,75,.26),rgba(1,2,2,.96) 68%)}
.boss-transition.show{visibility:visible;animation:boss-transition 2.15s ease both}.boss-transition span{grid-row:1/4;position:absolute;color:rgba(230,74,82,.2);font-size:min(50vw,520px);text-shadow:0 0 80px rgba(198,24,49,.24)}.boss-transition small,.boss-transition strong{position:relative;text-shadow:0 3px 20px #000}.boss-transition small{align-self:end;color:#d99eb8;font-size:10px;letter-spacing:.42em}.boss-transition strong{align-self:start;margin-top:10px;color:#fff;font-size:clamp(42px,7vw,92px);font-weight:500;letter-spacing:.12em}
.finisher-overlay{background:radial-gradient(circle,rgba(var(--combat-school-rgb),.14),rgba(1,3,2,.97) 62%)}
.finisher-overlay.show{visibility:visible;animation:finisher-show 1.9s ease both}.finisher-overlay>i{position:absolute;left:-10%;right:-10%;top:48%;height:3px;background:#fff;box-shadow:0 0 24px var(--combat-school);transform:rotate(-7deg)}.finisher-overlay span{display:grid;place-items:center;width:120px;height:120px;border:1px solid var(--combat-school);border-radius:50%;color:var(--combat-school);font-size:68px;box-shadow:0 0 45px rgba(var(--combat-school-rgb),.18)}.finisher-overlay strong{margin-top:-13vh;font-size:clamp(36px,6vw,78px);font-weight:500;letter-spacing:.13em}.finisher-overlay p{margin-top:-18vh;color:#aab7ad;font-size:10px}

/* 妖王部位破壞 */
.final-battle .boss-wounds{inset:8% 6% 10%;opacity:1}
.final-battle .enemy-shell[data-chains="2"] .boss-wounds:before,.final-battle .enemy-shell[data-chains="1"] .boss-wounds:before,.final-battle .enemy-shell[data-chains="0"] .boss-wounds:before{content:"";position:absolute;inset:10% 4%;background:linear-gradient(64deg,transparent 42%,rgba(255,211,97,.72) 44%,transparent 46%);filter:drop-shadow(0 0 7px #ffd76d)}
.final-battle .enemy-shell[data-chains="1"] .boss-wounds:after,.final-battle .enemy-shell[data-chains="0"] .boss-wounds:after{content:"";position:absolute;inset:3%;background:linear-gradient(118deg,transparent 47%,rgba(255,219,117,.75) 49%,transparent 51%);filter:drop-shadow(0 0 8px #ffdc7c)}
.final-battle .enemy-shell[data-chains="0"] .enemy-fighter{filter:drop-shadow(0 0 34px rgba(194,52,78,.62)) saturate(1.12)}
.final-battle .enemy-shell[data-phase="1"][data-core="0"] .boss-wounds,.final-battle .enemy-shell[data-phase="2"] .boss-wounds{background:radial-gradient(circle at 51% 43%,rgba(255,255,255,.9) 0 2%,rgba(238,45,74,.72) 4%,transparent 14%);filter:drop-shadow(0 0 12px #e92d54)}
.final-battle .enemy-shell[data-horn="0"] .enemy-fighter{clip-path:polygon(0 12%,18% 12%,25% 0,33% 15%,100% 0,100% 100%,0 100%);filter:drop-shadow(0 0 36px rgba(237,49,71,.68)) saturate(1.25)}
#combatModal.final-battle #combatDialog.eclipse-world .combat-backdrop{filter:saturate(.4) hue-rotate(-22deg) brightness(.26) contrast(1.42);transform:scale(1.12)}
#combatModal.final-battle #combatDialog.eclipse-world:after{background:radial-gradient(circle at 73% 13%,rgba(228,23,43,.52) 0 4%,rgba(30,0,5,.9) 4.5% 7%,rgba(204,21,42,.24) 8%,transparent 18%),linear-gradient(180deg,rgba(20,0,4,.42),rgba(2,3,2,.88) 76%)}
.fighter-art.defeated{animation:fighter-defeat .85s ease-in both}

@keyframes combat-camera-drift{to{transform:scale(1.1) translate3d(-.5%,.3%,0)}}
@keyframes combat-dust{to{background-position:120px -95px,-170px -130px,210px -160px}}
@keyframes combat-mist{to{opacity:.62;transform:translateX(-2%) scale(1.02)}}
@keyframes foreground-mist{to{transform:translateZ(80px) translateX(3%) scale(1.07);opacity:.9}}
@keyframes fighter-breathe{to{opacity:.72;transform:translateX(-50%) scale(1.08)}}
@keyframes shadow-writhe{to{opacity:.85;transform:translateX(-50%) scale(1.13) rotate(3deg)}}
@keyframes versus-ring{to{transform:rotate(360deg)}}
@keyframes combo-ready{to{border-color:var(--combat-school);box-shadow:0 0 18px rgba(var(--combat-school-rgb),.2)}}
@keyframes flaw-flicker{50%{opacity:.45}}
@keyframes blood-mark-pulse{to{transform:scale(1.12) rotate(6deg);filter:brightness(1.35)}}
@keyframes poison-billow{to{transform:translate(3%,-3%) scale(1.08);opacity:.95}}
@keyframes green-flame{to{transform:translateY(-4%) skewX(-4deg);filter:blur(2px) drop-shadow(0 0 12px #55f09d)}}
@keyframes guard-rotate{to{transform:rotate(360deg)}}
@keyframes low-health{to{opacity:.55;filter:brightness(1.35)}}
@keyframes danger-zone{to{opacity:.84;transform:scale(1.04)}}
@keyframes guard-shield{to{transform:rotateY(360deg)}}
@keyframes curse-rune{to{transform:rotateX(66deg) rotate(360deg)}}
@keyframes devour-stream{to{background-position:70px 0;filter:blur(1px) brightness(1.5)}}
@keyframes rage-world{to{filter:brightness(1.25);transform:scale(1.01)}}
@keyframes phase-charge{0%{transform:translateY(5px) scale(.985)}100%{transform:translateY(-3px) scale(1.02)}}
@keyframes player-dash{0%{transform:translateX(0)}48%{transform:translateX(-18%) scale(1.04)}100%{transform:translateX(-29%) scale(1.07)}}
@keyframes enemy-dash{0%{transform:translateX(0)}48%{transform:translateX(18%) scale(1.04)}100%{transform:translateX(28%) scale(1.07)}}
@keyframes phase-return{0%{transform:translateX(var(--return-x,0)) scale(1.05)}100%{transform:translateX(0) scale(1)}}
@keyframes target-impact{25%{transform:translateX(-7px);filter:brightness(2)}60%{transform:translateX(6px);filter:brightness(.65)}100%{transform:translateX(0);filter:none}}
@keyframes camera-push{50%{transform:scale(1.025)}100%{transform:scale(1)}}
@keyframes hit-stop{0%,45%{filter:contrast(1.7) brightness(1.45)}46%,100%{filter:none}}
@keyframes hit-stop-heavy{0%,55%{filter:grayscale(1) contrast(2.2) brightness(1.7);transform:translateX(-3px)}56%,100%{filter:none;transform:none}}
@keyframes hit-stop-sword{0%,62%{filter:grayscale(1) contrast(2.45) brightness(1.65);transform:scale(1.008)}63%,100%{filter:none;transform:none}}
@keyframes projectile-fly{0%{opacity:0;transform:translateX(20%) scaleX(.3)}30%{opacity:1}100%{opacity:0;transform:translateX(-170%) scaleX(1)}}
@keyframes projectile-fly-enemy{0%{opacity:0;transform:translateX(-20%) scaleX(.3)}30%{opacity:1}100%{opacity:0;transform:translateX(170%) scaleX(1)}}
@keyframes impact-burst{0%{opacity:1;transform:scale(.25)}100%{opacity:0;transform:scale(1.8)}}
@keyframes alchemy-chain-burst{0%{opacity:1;transform:scale(.16)}45%{opacity:.85;transform:scale(1.1)}70%{opacity:.55;transform:scale(.72)}100%{opacity:0;transform:scale(2.1)}}
@keyframes demon-flurry{0%{opacity:0;transform:translateX(12%)}20%,78%{opacity:1}100%{opacity:0;transform:translateX(-9%)}}
@keyframes damage-rise{0%{opacity:0;transform:translate(-50%,15px) scale(.72)}18%{opacity:1;transform:translate(-50%,-2px) scale(1.12)}72%{opacity:1}100%{opacity:0;transform:translate(-50%,-68px) scale(.94)}}
@keyframes cinematic-show{0%{opacity:0}8%,84%{opacity:1}100%{opacity:0}}
@keyframes letterbox-top{0%{transform:translateY(-100%)}14%,84%{transform:none}100%{transform:translateY(-100%)}}
@keyframes letterbox-bottom{0%{transform:translateY(100%)}14%,84%{transform:none}100%{transform:translateY(100%)}}
@keyframes cinematic-pan{0%{opacity:0;transform:scale(1.2) translateX(5%)}15%,82%{opacity:.92}100%{opacity:0;transform:scale(1.08) translateX(-3%)}}
@keyframes cinematic-cut{0%,32%{transform:rotate(-4deg) scaleX(0)}46%,82%{transform:rotate(-4deg) scaleX(1)}100%{transform:rotate(-4deg) scaleX(0)}}
@keyframes boss-transition{0%{opacity:0;filter:brightness(3)}12%,80%{opacity:1}100%{opacity:0;filter:brightness(.4)}}
@keyframes finisher-show{0%{opacity:0;filter:grayscale(1) brightness(3)}12%,78%{opacity:1;filter:grayscale(.7) brightness(1)}100%{opacity:0;transform:scale(1.04)}}
@keyframes fighter-defeat{0%{opacity:1;filter:brightness(1.8) grayscale(.3)}45%{opacity:.74;transform:translateY(4%) scale(.98);filter:grayscale(1) contrast(1.4)}100%{opacity:0;transform:translateY(14%) scale(.92);filter:grayscale(1) blur(5px)}}

@media(max-width:900px){
  #combatDialog.combat-dialog{grid-template-rows:auto minmax(280px,1fr) auto;padding:10px 10px 8px}
  .fighter-shell{width:43vw;height:min(52vh,470px);min-height:275px}
  .final-battle .enemy-shell{width:48vw}
  .combatant-info{bottom:4px;width:94%;padding:6px 8px}.combatant-info h2{font-size:11px}
  .mobile-action-head{display:flex;align-items:center;justify-content:space-between;gap:10px;max-width:none;margin:2px 3px 0;padding:5px 8px;border:1px solid rgba(189,214,198,.12);border-bottom:0;color:#d5e9dc;background:rgba(5,12,8,.92);font-size:8px;text-align:left}
  .mobile-action-head span{color:#84988c;font-size:7px}
  .combat-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));max-width:none;max-height:min(30dvh,240px);margin:0 3px;gap:6px;padding:4px 3px 7px;overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:contain;scroll-snap-type:y proximity;scrollbar-width:thin;scrollbar-color:rgba(var(--combat-school-rgb),.5) rgba(0,0,0,.28);border:1px solid rgba(189,214,198,.12);background:rgba(2,7,4,.68)}
  .combat-actions::-webkit-scrollbar{width:5px}.combat-actions::-webkit-scrollbar-thumb{background:rgba(var(--combat-school-rgb),.5)}
  .combat-action{width:100%;min-width:0;min-height:60px;scroll-snap-align:start}
  .intent-box{grid-template-columns:30px minmax(0,1fr) auto}.intent-box>span{display:none}.intent-box>em{font-size:6px}.combat-message{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .attack-lane{left:5%;right:5%}
}

@media(max-width:540px){
  #combatDialog.combat-dialog{grid-template-rows:27px minmax(250px,1fr) auto;padding:6px 7px 7px}
  #combatDialog:before{inset:3px}
  .combat-stage-head{min-height:25px}.boss-phase{font-size:7px;letter-spacing:.14em}.round-pulse{padding:3px 5px;font-size:6px}
  .combat-arena{grid-template-columns:minmax(0,1fr) 30px minmax(0,1fr)}
  .fighter-shell{width:47vw;height:min(47vh,350px);min-height:245px}
  .final-battle .enemy-shell{width:53vw;margin-left:-5vw}
  .versus-core{width:34px;height:34px}.versus-core span{font-size:21px}.versus-core i{inset:-4px}
  .combatant-info{bottom:0;width:100%;padding:5px 6px}.combatant-info h2{max-width:100%;margin-bottom:4px;overflow:hidden;font-size:9px;text-overflow:ellipsis;white-space:nowrap}.combat-bar{height:6px}.combatant-info>span{display:none}.combatant-info>small{font-size:6px}.fighter-status{min-height:14px;margin-top:3px}.status-chip{padding:1px 3px;font-size:5px}
  .boss-mechanic{margin-bottom:3px;padding:5px 7px;font-size:6px}.intent-box{grid-template-columns:25px minmax(0,1fr);gap:6px;margin-bottom:2px;padding:5px 7px}.intent-box>i{width:23px;height:23px;font-size:10px}.intent-box>strong{font-size:7px;line-height:1.35}.intent-box>em{display:none}.combat-message{min-height:14px;margin:1px 0 3px;font-size:6px}
  .mobile-action-head{margin-inline:0;padding:6px 8px;font-size:9px}.mobile-action-head span{font-size:8px}
  .combat-actions{grid-template-columns:repeat(2,minmax(0,1fr));max-height:min(29dvh,230px);margin-inline:0;gap:6px;padding:5px 4px 8px}
  .combat-action{min-height:58px;padding:7px}.combat-action b{font-size:9px}.combat-action small{font-size:6.5px}
  .combat-action:nth-child(-n+2){position:sticky;z-index:4;top:0;border-color:rgba(var(--combat-school-rgb),.28);background:linear-gradient(145deg,rgba(34,55,42,.99),rgba(7,15,10,.99));box-shadow:0 8px 16px rgba(0,0,0,.48)}
  .cinematic-eye{inset:24% 0}.combat-cinematic small{font-size:7px}.combat-cinematic strong{font-size:36px}.boss-transition strong{font-size:39px}.finisher-overlay strong{margin-top:-10vh;font-size:34px}.finisher-overlay p{margin-top:-16vh;font-size:8px}
  .damage-number{left:22%;top:30%}.damage-number.player-damage{left:76%}
}

@media(prefers-reduced-motion:reduce){
  .combat-backdrop,.combat-depth,.fighter-aura,.versus-core i,.intent-telegraph,.player-guard,.low-health-pulse{animation:none!important}
  .fighter-shell.phase-charge,.fighter-shell.phase-dash,.fighter-shell.phase-return,.fighter-shell.impact{animation-duration:.01ms!important}
}

/* V5 — 逐格角色動作、分層骨骼、獨立暴擊與破損立繪 */
.fighter-motion,.enemy-rig{position:absolute;z-index:9;inset:0;opacity:0;pointer-events:none}
.player-motion{background-repeat:no-repeat;background-position:0 50%;background-size:400% 100%;filter:drop-shadow(0 20px 24px rgba(0,0,0,.72));will-change:background-position,transform}
.player-motion[data-path="sword"]{background-image:url("assets/combat/sword-attack-strip-v2.png")}
.player-motion[data-path="alchemy"]{background-image:url("assets/combat/alchemy-attack-strip-v2.png")}
.player-motion[data-path="demon"]{background-image:url("assets/combat/demon-attack-strip-v2.png")}
.player-shell.sprite-attack .player-fighter{opacity:.04}
.player-motion.playing{opacity:1;animation:player-sprite-attack .39s steps(4,end) both}

.enemy-rig i{position:absolute;inset:0;background-repeat:no-repeat;filter:drop-shadow(0 18px 22px rgba(0,0,0,.7));will-change:transform}
.enemy-rig .rig-head{clip-path:polygon(0 0,100% 0,100% 34%,0 34%);transform-origin:50% 31%}
.enemy-rig .rig-upper{clip-path:polygon(0 27%,100% 27%,100% 72%,0 72%);transform-origin:48% 63%}
.enemy-rig .rig-lower{clip-path:polygon(0 64%,100% 64%,100% 100%,0 100%);transform-origin:50% 70%}
.enemy-shell.rig-attack .enemy-fighter{opacity:.03}
.enemy-rig.playing{opacity:1}
.enemy-rig.playing .rig-head{animation:rig-head-strike .38s cubic-bezier(.2,.8,.2,1) both}
.enemy-rig.playing .rig-upper{animation:rig-upper-strike .38s cubic-bezier(.2,.8,.2,1) both}
.enemy-rig.playing .rig-lower{animation:rig-lower-strike .38s cubic-bezier(.2,.8,.2,1) both}

body.path-demon .player-shell.low-health:not(.sprite-attack) .player-fighter{background-image:url("assets/combat/demon-awakened-v2.png");background-position:center bottom;background-size:contain;filter:drop-shadow(0 0 34px rgba(240,45,82,.82)) saturate(1.34)}
body.path-demon .player-shell.low-health .low-health-pulse{inset:-5%;background:radial-gradient(ellipse at 52% 42%,transparent 28%,rgba(223,22,57,.34) 61%,rgba(31,0,7,.1) 74%,transparent 78%);animation:heartbeat-visual var(--heartbeat-speed,.86s) ease-in-out infinite}

.enemy-shell[data-poison-stage="1"] .enemy-fighter{filter:drop-shadow(0 20px 24px rgba(0,0,0,.72)) sepia(.12) hue-rotate(48deg) saturate(1.12)}
.enemy-shell[data-poison-stage="2"] .enemy-fighter{filter:drop-shadow(0 18px 25px rgba(27,93,47,.68)) sepia(.32) hue-rotate(58deg) saturate(1.38) contrast(1.08)}
.enemy-shell[data-poison-stage="3"] .enemy-fighter,.enemy-shell[data-poison-stage="4"] .enemy-fighter{filter:drop-shadow(0 16px 28px rgba(36,190,80,.76)) sepia(.48) hue-rotate(66deg) saturate(1.72) contrast(1.16)}
.enemy-shell[data-poison-stage="2"] .poison-cloud:after,.enemy-shell[data-poison-stage="3"] .poison-cloud:after,.enemy-shell[data-poison-stage="4"] .poison-cloud:after{content:"";position:absolute;inset:4% 10%;background:repeating-linear-gradient(72deg,transparent 0 13%,rgba(102,255,139,.22) 14% 15%,transparent 16% 24%);mix-blend-mode:screen;filter:drop-shadow(0 0 5px #51e786);animation:poison-veins 1.1s ease-in-out infinite alternate}
.enemy-shell[data-poison-stage="4"] .poison-cloud:after{background:repeating-linear-gradient(72deg,transparent 0 9%,rgba(203,255,104,.42) 10% 11%,transparent 12% 18%)}

.chain-explosion-layer{position:absolute;inset:-35% -4%;pointer-events:none}
.chain-explosion{position:absolute;width:clamp(48px,7vw,96px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,#fff 0 4%,#dcff8b 6%,rgba(53,231,129,.82) 15%,rgba(229,158,45,.45) 32%,transparent 65%);box-shadow:0 0 18px #60ef9b,0 0 42px rgba(222,255,113,.42);animation:chain-explosion .42s cubic-bezier(.12,.72,.2,1) both}
.chain-explosion:after{content:"";position:absolute;inset:-28%;border:2px solid rgba(202,255,113,.66);border-radius:50%;animation:explosion-ring .42s ease-out both}

.cinematic-eye{background-image:url("assets/combat/ultimate-eyes.png");background-size:300% 100%;background-position:0 50%;filter:saturate(1.06) contrast(1.2) brightness(.73)}
.combat-cinematic.alchemy .cinematic-eye{background-position:50% 50%}.combat-cinematic.demon .cinematic-eye{background-position:100% 50%}

.critical-overlay{position:absolute;z-index:64;inset:0;display:grid;place-items:center;opacity:0;visibility:hidden;overflow:hidden;pointer-events:none;background:radial-gradient(circle,rgba(var(--combat-school-rgb),.14),rgba(0,0,0,.86) 68%)}
.critical-overlay.show{visibility:visible;animation:critical-flash .72s steps(2,end) both}
.critical-overlay>i{position:absolute;left:-12%;right:-12%;top:48%;height:3px;background:#fff;box-shadow:0 0 24px #fff,0 0 48px var(--combat-school);transform:rotate(-5deg) scaleX(0);animation:critical-line .72s ease-out both}
.critical-overlay>span{position:absolute;top:35%;color:var(--combat-school);font-size:9px;letter-spacing:.6em}.critical-overlay>strong{position:relative;color:#fff;font-size:clamp(48px,8vw,108px);font-weight:500;letter-spacing:.16em;text-shadow:0 4px 24px #000}.critical-overlay>b{position:absolute;color:rgba(var(--combat-school-rgb),.14);font-size:min(62vw,620px);font-weight:400}

.final-battle .enemy-shell[data-phase="0"][data-chains="1"] .enemy-fighter,.final-battle .enemy-shell[data-phase="0"][data-chains="0"] .enemy-fighter{background-image:url("assets/combat/boss-damaged-forms-v3.png");background-position:0 50%;background-size:300% 100%;clip-path:none}
.final-battle .enemy-shell[data-phase="1"][data-core="1"] .enemy-fighter,.final-battle .enemy-shell[data-phase="1"][data-core="0"] .enemy-fighter{background-image:url("assets/combat/boss-damaged-forms-v3.png");background-position:50% 50%;background-size:300% 100%;clip-path:none}
.final-battle .enemy-shell[data-phase="2"][data-horn="1"] .enemy-fighter,.final-battle .enemy-shell[data-phase="2"][data-horn="0"] .enemy-fighter{background-image:url("assets/combat/boss-damaged-forms-v3.png");background-position:100% 50%;background-size:300% 100%;clip-path:none;filter:drop-shadow(0 0 36px rgba(237,49,71,.68)) saturate(1.25)}

@keyframes player-sprite-attack{0%{background-position:0 50%;transform:translateX(0)}100%{background-position:100% 50%;transform:translateX(-7%)}}
@keyframes rig-head-strike{0%{transform:rotate(0) translate(0)}45%{transform:rotate(-8deg) translate(5%,-2%)}100%{transform:rotate(3deg) translate(-2%,1%)}}
@keyframes rig-upper-strike{0%{transform:rotate(0) translate(0)}38%{transform:rotate(-12deg) translate(8%,-1%) scale(1.03)}70%{transform:rotate(7deg) translate(-8%,1%) scale(1.05)}100%{transform:none}}
@keyframes rig-lower-strike{0%,28%{transform:skewX(0) translateX(0)}55%{transform:skewX(-5deg) translateX(5%)}100%{transform:none}}
@keyframes heartbeat-visual{0%,34%,100%{opacity:.42;transform:scale(.98)}12%{opacity:1;transform:scale(1.04)}22%{opacity:.58;transform:scale(1)}26%{opacity:.92;transform:scale(1.025)}}
@keyframes poison-veins{to{opacity:.48;filter:drop-shadow(0 0 9px #adff6d) brightness(1.45)}}
@keyframes chain-explosion{0%{opacity:0;transform:scale(.15)}18%{opacity:1;transform:scale(.7)}48%{opacity:.92;transform:scale(1.2)}100%{opacity:0;transform:scale(1.8)}}
@keyframes explosion-ring{0%{opacity:.9;transform:scale(.2)}100%{opacity:0;transform:scale(1.8)}}
@keyframes critical-flash{0%{opacity:0;filter:grayscale(1) brightness(4)}12%,68%{opacity:1;filter:grayscale(.55) brightness(1.1)}100%{opacity:0;filter:brightness(2)}}
@keyframes critical-line{0%,18%{transform:rotate(-5deg) scaleX(0)}38%,75%{transform:rotate(-5deg) scaleX(1)}100%{transform:rotate(-5deg) scaleX(0)}}

@media(max-width:540px){
  .critical-overlay>strong{font-size:38px}.critical-overlay>span{top:38%;font-size:6px}.player-motion{inset:3% -8%}
}

@media(prefers-reduced-motion:reduce){
  .player-motion.playing,.enemy-rig.playing i,.chain-explosion,.critical-overlay.show{animation-duration:.01ms!important}
}
