/* Blender-rendered ward follows the projected wrist of the current pose. */
.world-figure .ward {
 display:block; inset:auto; width:76%; height:94%; border:0; border-radius:0;
 background:none; box-shadow:none; animation:none !important;
 transform:translate(-35%,-48%) scale(var(--ward-grow,1)); opacity:var(--ward-alpha,1);
 transform-origin:35% 48%; z-index:4;
}
.world-figure .ward img { position:absolute; inset:0; width:100%; height:100%; filter:brightness(calc(1 + var(--ward-impact,0))) drop-shadow(0 0 3px var(--accent)); }
.world-figure .ward i {width:5px;height:7px;top:26%;left:40%;background:#e9fdff;transform:rotate(45deg);box-shadow:0 0 5px var(--accent);}
.world-figure .ward i:nth-of-type(2) {top:46%;left:40%;}
.world-figure .ward i:nth-of-type(3) {top:66%;left:40%;}
.team .world-figure .ward[data-charges] i {opacity:1;}
.team .world-figure .ward[data-charges='1'] i:nth-of-type(n+2),.team .world-figure .ward[data-charges='2'] i:nth-of-type(3) {opacity:.15;}
.world-figure .ward[data-failed='true']::before {content:'';position:absolute;inset:12% 21%;border:2px solid var(--accent);border-radius:45% 45% 50% 50%;background:#abd8ea15;}
#shieldA,#shieldB {background-image:none;background-size:auto 100%;background-repeat:no-repeat;background-position:center;}
#shieldB {background-image:none;}
#shieldA svg,#shieldB svg {opacity:0;}
/* Input timing, keyboard geometry and task text are unaffected. */

.team[data-ward-failed='true'] #shieldA,.team[data-ward-failed='true'] #shieldB {background-image:none;}
.team[data-ward-failed='true'] #shieldA svg,.team[data-ward-failed='true'] #shieldB svg {opacity:1;}

/* Stored protection is a small rune; the full ward only unfolds for an action. */
.world-figure .ward[data-phase='stored'] {width:17%;height:22%;transform:translate(-50%,-50%);opacity:.8;}
.world-figure .ward[data-phase='stored'] img {opacity:.28;filter:drop-shadow(0 0 2px var(--accent));}
.world-figure .ward[data-phase='stored'] i {width:3px;height:4px;box-shadow:0 0 3px var(--accent);}
