/* Requirements-driven turn battle layout and cinematic effects. */
.combat-action-deck{position:relative;z-index:12;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:10px}
.combat-action-group{min-width:0;padding:10px;border:1px solid #8d5b35;border-radius:13px;background:linear-gradient(145deg,rgba(39,17,17,.96),rgba(13,9,13,.98));box-shadow:inset 0 0 20px rgba(241,89,45,.08),0 8px 20px rgba(0,0,0,.32)}
.combat-action-group--mercenary{border-color:#397c66;background:linear-gradient(145deg,rgba(11,37,29,.96),rgba(8,13,16,.98));box-shadow:inset 0 0 20px rgba(79,219,163,.08),0 8px 20px rgba(0,0,0,.32)}
.combat-action-group__header{display:flex;align-items:center;gap:9px;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.1)}
.combat-action-group__header>span{display:grid;width:32px;height:32px;place-items:center;border-radius:9px;background:#53211a;font-size:18px;box-shadow:0 0 12px rgba(255,91,48,.3)}
.combat-action-group--mercenary .combat-action-group__header>span{background:#173e31;box-shadow:0 0 12px rgba(77,226,166,.28)}
.combat-action-group__header>div{display:flex;min-width:0;flex-direction:column}.combat-action-group__header b{color:#ffe19a;font-size:.86rem}.combat-action-group--mercenary .combat-action-group__header b{color:#a9f3d1}.combat-action-group__header small{overflow:hidden;color:#9f978b;font-size:.62rem;white-space:nowrap;text-overflow:ellipsis}
.combat-action-group__buttons{display:flex;align-items:stretch;gap:7px;overflow-x:auto;padding:2px;scrollbar-width:thin}.combat-action-group__buttons>*{flex:0 0 auto;margin:0!important;min-height:46px}.combat-action-group__buttons button{position:relative;overflow:hidden;transition:transform .15s ease,filter .15s ease,box-shadow .15s ease}.combat-action-group__buttons button:not(:disabled):hover{filter:brightness(1.2);box-shadow:0 0 15px currentColor}.combat-action-group__buttons button:not(:disabled):active{transform:scale(.93)}.combat-action-group__buttons button:disabled{filter:grayscale(.8);opacity:.38}
.combat-action-group__buttons .combat-learned-skills,.combat-action-group__buttons .combat-mercenary-skills{display:flex;flex-wrap:nowrap;gap:7px;margin:0}
.combat-mob-name-level{display:block!important;margin:0 auto 6px;width:max-content;max-width:90%;padding:4px 13px;border:1px solid rgba(255,88,88,.45);border-radius:999px;color:#ffd4c7;background:rgba(31,5,9,.82);font-size:.72rem;box-shadow:0 0 16px rgba(240,52,65,.14)}
.combat-cinematic-layer{position:absolute;z-index:30;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none;mix-blend-mode:screen}
.combat-cinematic{--vfx:#ff785a;--vfx2:#ffd06b;position:absolute;inset:0;opacity:0;animation:combatCinematicFade .82s ease-out forwards}.combat-cinematic--spell{--vfx:#8c7bff;--vfx2:#45e8ff}.combat-cinematic--mercenary{--vfx:#5dffb2;--vfx2:#d1fff0}.combat-cinematic--area{--vfx:#ff4a24;--vfx2:#ffd647}.combat-cinematic--arcane{--vfx:#c65cff;--vfx2:#56ddff}.combat-cinematic--critical{--vfx:#ffca38;--vfx2:#fff5ad}.combat-cinematic--slash{--vfx:#ff654c;--vfx2:#fff0d0}.combat-cinematic.is-heavy{filter:saturate(1.35) brightness(1.18)}
.combat-cinematic__sigil{position:absolute;left:50%;top:50%;width:50px;height:50px;border:3px solid var(--vfx);border-radius:50%;box-shadow:0 0 18px var(--vfx),inset 0 0 16px var(--vfx2);animation:combatSigilBurst .72s cubic-bezier(.08,.77,.18,1) forwards}.combat-cinematic__sigil::before,.combat-cinematic__sigil::after{content:'';position:absolute;inset:7px;border:2px dashed var(--vfx2);border-radius:24%;transform:rotate(45deg)}.combat-cinematic__sigil::after{inset:-15px;border-style:solid;border-width:1px;border-radius:50%;transform:none}
.combat-cinematic__beam{position:absolute;left:22%;top:52%;width:58%;height:8px;border-radius:999px;background:linear-gradient(90deg,transparent,var(--vfx),#fff,var(--vfx2),transparent);box-shadow:0 0 13px var(--vfx),0 0 28px var(--vfx2);transform:rotate(-13deg) scaleX(0);transform-origin:left;animation:combatBeamSlash .58s .08s cubic-bezier(.1,.75,.2,1) forwards}
.combat-cinematic__wave{position:absolute;left:72%;top:48%;width:30px;height:30px;border:3px solid var(--vfx2);border-radius:50%;box-shadow:0 0 18px var(--vfx);animation:combatShockWave .68s .16s ease-out forwards}.combat-cinematic>b{--angle:calc(var(--spark) * 29deg);position:absolute;left:72%;top:48%;width:7px;height:18px;border-radius:5px;background:linear-gradient(var(--vfx2),var(--vfx));box-shadow:0 0 10px var(--vfx);transform:rotate(var(--angle)) translateY(0);animation:combatSparkFly .72s calc(var(--spark) * 8ms) ease-out forwards}
@keyframes combatCinematicFade{0%{opacity:0}12%{opacity:1}75%{opacity:1}100%{opacity:0}}@keyframes combatSigilBurst{0%{opacity:0;transform:translate(-50%,-50%) scale(.15) rotate(0)}45%{opacity:1;transform:translate(-50%,-50%) scale(2.2) rotate(145deg)}100%{opacity:0;transform:translate(-50%,-50%) scale(3.5) rotate(260deg)}}@keyframes combatBeamSlash{0%{opacity:0;transform:rotate(-13deg) scaleX(0)}35%{opacity:1;transform:rotate(-13deg) scaleX(1.12)}100%{opacity:0;transform:rotate(-13deg) scaleX(.85) translateX(30%)}}@keyframes combatShockWave{0%{opacity:1;transform:translate(-50%,-50%) scale(.1)}100%{opacity:0;transform:translate(-50%,-50%) scale(7)}}@keyframes combatSparkFly{0%{opacity:1;transform:rotate(var(--angle)) translateY(0) scale(1)}100%{opacity:0;transform:rotate(var(--angle)) translateY(-105px) scale(.15)}}
.boss-fight__damage-layer .combat-cinematic{position:absolute;inset:-130px -220px;z-index:-1}.boss-minion-actor.is-selected{animation:combatTargetPulse 1s ease-in-out infinite}@keyframes combatTargetPulse{50%{filter:brightness(1.65);box-shadow:0 0 22px #ffd84f;transform:scale(1.24)}}
@media(max-width:700px){.combat-action-deck{grid-template-columns:1fr;gap:7px}.combat-action-group{padding:8px}.combat-action-group__header{margin-bottom:6px;padding-bottom:6px}.combat-action-group__buttons>*{min-height:44px}.combat-cinematic__beam{left:15%;width:70%}.combat-cinematic__wave,.combat-cinematic>b{left:76%}}
@media(prefers-reduced-motion:reduce){.combat-cinematic,.combat-cinematic *,.boss-minion-actor.is-selected{animation-duration:.01ms!important;animation-iteration-count:1!important}}
