/* Brief contact cues, with the articulated performer carrying the action. */
.combat-contact{position:absolute;width:76px;height:64px;transform:translate(-50%,-50%);z-index:16;pointer-events:none;color:#fff3ce}
.combat-contact:before{content:"";position:absolute;inset:18%;border-radius:50%;background:radial-gradient(ellipse,#fffbe8,#ffe3a477 25%,transparent 68%);animation:contact-flash var(--contact-time,380ms) ease-out both}
.combat-contact i{position:absolute;left:10%;top:40%;width:80%;height:3px;background:linear-gradient(90deg,transparent,#fff3d1 35%,#dca961,transparent);border-radius:100%;transform:rotate(-34deg);box-shadow:0 0 5px #fff0b4;animation:contact-cut var(--contact-time,380ms) ease-out both}
.combat-contact i:nth-child(2){top:54%;left:17%;width:66%;animation-delay:25ms}.combat-contact i:nth-child(3){top:30%;left:21%;width:62%;animation-delay:45ms}
.contact-heal{color:#d4fac1}.contact-heal:before{background:radial-gradient(ellipse,#e7ffd8,#a7e3b977 25%,transparent 70%)}.contact-heal i{display:none}
@keyframes contact-flash{0%{opacity:0;transform:scale(.45)}12%{opacity:.95;transform:scale(1.2)}45%{opacity:.28}100%{opacity:0;transform:scale(1.5)}}
@keyframes contact-cut{0%{opacity:0;transform:rotate(-34deg) translateX(-20px) scaleX(.2)}18%{opacity:1;transform:rotate(-34deg) translateX(0) scaleX(1)}100%{opacity:0;transform:rotate(-34deg) translateX(20px) scaleX(.8)}}
/* Old outline and camera pulses compete with the new contact choreography. */
.battle-stage .cinematic-target-hit,.battle-stage .cinematic-target-heal{animation:none!important}
.battle-stage.cinematic-hit-stop>.arena,.battle-stage.cinematic-camera-push>.arena{animation:none!important}
html[data-reduced-motion="true"] .combat-contact{display:none}
.studio-actors .unit-motion{width:100%;height:calc(100% - 30px);position:relative;min-height:0}
.studio-actors .unit-motion>.unit-standee{height:100%}
@media(max-width:700px){.studio-actors .unit-motion{height:calc(100% - 42px)}}

/* Keep the final hit readable, then leave a still, recessed defeated silhouette. */
#battle-screen.battle-stage .combat-card.defeated{opacity:.72!important}
#battle-screen.battle-stage .combat-card.defeated .unit-motion,.theater-unit.is-defeated .theater-unit-motion{opacity:.16;transform:translateY(10px) rotate(12deg) scale(.9);filter:grayscale(1);transform-origin:50% 85%}
#battle-screen.battle-stage .combat-card.defeated.defeat-pending,.theater-unit.is-defeated.defeat-pending{opacity:1!important}
#battle-screen.battle-stage .combat-card.defeat-pending .unit-motion,.theater-unit.defeat-pending .theater-unit-motion{opacity:1;transform:none;filter:none}
#battle-screen.battle-stage .combat-card.defeat-pending .beast-rig-canvas,.theater-unit.defeat-pending .beast-rig-canvas{opacity:1;filter:drop-shadow(0 4px 5px #00171066)}
.theater-unit.defeat-pending img{opacity:1;filter:none}
.combat-moving{transform-origin:50% 78%;will-change:transform}
.theater-unit.stage-attacking{z-index:8}
#battle-screen.battle-stage .combat-card.defeated .unit-hud{background:#26302ed9;border-color:#aab0a1;color:#d5d3c8}
html[data-reduced-motion="true"] #battle-screen.battle-stage .combat-card.defeated .unit-motion,html[data-reduced-motion="true"] .theater-unit.is-defeated .theater-unit-motion{transform:none}
