/* Character-only overlays. HUDs stay readable and retain pointer/keyboard access. */
/* Keep the established party elevation; body scale is independent of placement.
   Changing the shared container bottom also moves both players and their HUDs. */
.combat-scene .soldier-presentation .battle-party{bottom:38%;height:44%}
.combat-scene .soldier-presentation .battle-enemy{bottom:22%;height:44%}
.soldier-presentation .battle-player>img{object-position:center bottom}
.soldier-presentation .battle-player:has(.profession-pose[data-pose=slash]),
.soldier-presentation .battle-player:has(.profession-pose[data-pose=thrust]),
.soldier-presentation .battle-player:has(.profession-pose[data-pose=cleave]){z-index:6}
.battle-player:has(.profession-pose[data-pose=precise]),.battle-player:has(.profession-pose[data-pose=pierce]),.battle-player:has(.profession-pose[data-pose=mark]){z-index:6}
.profession-pose{position:absolute;left:50%;top:0;height:100%;width:auto;max-width:none;transform:translateX(-50%);pointer-events:none;visibility:hidden;filter:drop-shadow(0 10px 7px #0009)}
/* 100 logical pixels of transparent headroom at each end. Body scale stays h/500. */
.profession-pose[data-calibrated=true]{height:140%;top:-20%}
.battle-player.has-action-pose>img{visibility:hidden}
.battle-player.has-action-pose>.profession-pose{visibility:visible}
.battle-player.has-action-pose.downed{transform:none!important;opacity:.75}
.battle-player.motion-hurt>.profession-pose{animation:pose-hit .5s both}
.battle-player.motion-dodge>.profession-pose{animation:pose-dodge .55s both}
.battle-combatant .spirit-figure img{transform:scaleX(-1);animation:none}
.profession-fx{position:absolute;pointer-events:none;z-index:3;inset:5% -12%;animation:profession-glow .85s both}
.fx-authority{background:radial-gradient(ellipse at 50% 65%,#d1aa613f,transparent 65%);border-bottom:2px solid #bda47788;border-radius:50%}
.fx-pressure{inset:-15% -18% -1%;background:linear-gradient(180deg,#1a0b2300,#241329b0),repeating-linear-gradient(90deg,transparent 0 20px,#d1b27222 21px 25px,transparent 27px 47px);box-shadow:inset 0 -35px 30px #170a24a0;border-radius:40% 40% 30% 30%;animation:profession-pressure .84s both}
[data-profession-effect=pressure]>img{animation:profession-burden .84s both!important;transform-origin:50% 100%}
.fx-poison{inset:24% 7% 2%;background:radial-gradient(ellipse at 30% 70%,#8eaf635c,transparent 48%),radial-gradient(ellipse at 68% 48%,#789c5655,transparent 52%);filter:drop-shadow(0 0 6px #738747);animation:profession-mist .5s both}
.fx-catalyze{inset:25% 15% 14%;border:2px solid #bed38f;border-radius:50%;box-shadow:inset 0 0 28px #82a34399,0 0 16px #9ab84c66;animation:profession-catalyze .55s both}
.fx-catalyze::after{content:'';position:absolute;inset:22%;border:1px solid #e0e6b5;border-radius:50%;transform:rotate(25deg);box-shadow:0 0 12px #bdcd75}
.fx-mark{inset:28% 28% 43%;border:2px solid #d8b984;border-radius:50%;box-shadow:0 0 15px #d8b95455;animation:profession-lock .4s both}
.fx-mark::before,.fx-mark::after{content:'';position:absolute;background:#dcc599}
.fx-mark::before{width:1px;top:-12px;bottom:-12px;left:50%}
.fx-mark::after{height:1px;left:-12px;right:-12px;top:50%}
.fx-vial{inset:auto;width:12px;height:20px;border:2px solid #e7edc7;border-top:5px solid #8d7045;border-radius:3px 3px 5px 5px;background:linear-gradient(90deg,#e8f5c86e 0 22%,transparent 23%),linear-gradient(180deg,#25392b 0 27%,#a3c963 28% 100%);box-shadow:0 0 0 1px #192319,0 0 9px #b2ce6ebb;z-index:7;animation:profession-flight .34s linear both}
.fx-vial::before{content:'';position:absolute;width:6px;height:4px;left:1px;top:-8px;border:1px solid #e7edc7;border-bottom:0;background:#8d7045;border-radius:2px 2px 0 0}
.fx-pierce{inset:39% 9% 42%;border-top:2px solid #eadcbb;box-shadow:0 -2px 7px #dacc9755;animation:profession-stab .25s both}
.fx-precise,.fx-cleave,.fx-slash{inset:38% -20% 42%;border-bottom:5px solid #f5dab0;border-radius:50%;transform:rotate(-8deg);animation:profession-slash .6s both}
.fx-slash{border-bottom-width:3px;animation-duration:.3s;inset:40% -5% 44%}
.fx-precise{inset:39% -3% 42%;border-bottom-width:3px;border-radius:0;transform:rotate(-17deg);animation:profession-stab .35s both}
.fx-guard,.fx-cover,.fx-echo-guard{inset:25% 0 15%;border:3px solid #aeced7;border-radius:40% 40% 50% 50%;background:linear-gradient(90deg,transparent,#98cee622,transparent)}
.fx-heal{background:radial-gradient(ellipse at 50% 60%,#8fca8155,transparent 65%)}
.fx-inspire{background:radial-gradient(ellipse,#edce8955,transparent 65%)}
.fx-shadow{background:radial-gradient(ellipse,#30434688,transparent 60%)}
.spirit-figure[data-profession-effect=summon]{animation:spirit-strike .64s both}
.spirit-figure[data-profession-effect=recall]{animation:profession-recall .64s both}
.spirit-figure[data-profession-effect=echo-guard]{animation:spirit-shield .64s both}
.fx-summon,.fx-recall{background:radial-gradient(ellipse,#8ee5d744,transparent 65%)}
@keyframes profession-glow{0%,100%{opacity:0}25%,65%{opacity:1}}
@keyframes profession-pressure{0%{opacity:0;transform:translateY(-12px)}25%,70%{opacity:1}100%{opacity:0;transform:translateY(5px)}}
@keyframes profession-burden{0%,100%{transform:none}25%,65%{transform:translateX(8px) rotate(5deg) scaleY(.95);filter:brightness(.72)}}
@keyframes profession-catalyze{0%{opacity:0;scale:1.2}40%{opacity:1;scale:.65}70%{opacity:.8;scale:1.1}100%{opacity:0}}
@keyframes profession-flight{0%{opacity:1;transform:translate(0,0) rotate(-35deg)}50%{transform:translate(calc(var(--flight-x)*.5),calc(var(--flight-y)*.5 - 25px)) rotate(90deg)}100%{opacity:1;transform:translate(var(--flight-x),var(--flight-y)) rotate(210deg)}}
@keyframes profession-mist{0%{opacity:0;transform:translateY(8px) scale(.65)}30%{opacity:.9}100%{opacity:0;transform:translateY(-18px) scale(1.15)}}
@keyframes profession-lock{0%{opacity:0;scale:1.35;rotate:-25deg}35%,70%{opacity:1;scale:1;rotate:0deg}100%{opacity:0;scale:1}}
@keyframes profession-stab{0%{opacity:0;translate:-22px 0;scale:.4 1}25%,55%{opacity:1;translate:0 0;scale:1 1}100%{opacity:0;translate:12px 0}}
@keyframes profession-slash{0%{opacity:0;scale:.2 1}20%,40%{opacity:1;scale:1 1}100%{opacity:0;scale:1.1 1}}
@keyframes profession-recall{to{opacity:0;transform:translate(-45px,-20px) scale(.1)}}
@keyframes pose-hit{30%{translate:7px 0;filter:brightness(1.4)}60%{translate:-3px 0}100%{translate:0 0}}
@keyframes pose-dodge{45%{translate:-18px -6px}100%{translate:0 0}}
@media(prefers-reduced-motion:reduce){.profession-fx{animation:none;opacity:.55}.profession-pose,.spirit-figure[data-profession-effect], [data-profession-effect=pressure]>img{animation:none!important}}
