/* Authored attack camera. Everything is rendered over the actual battlefield. */
.rival-directing .camera-world{transform:scale(1.1) translateY(1.5%)}
.rival-directing .enemy-metadata,.rival-directing .enemy-intent{opacity:.19;transition:opacity .3s}
.rival-cinematic{position:absolute;inset:0;z-index:12;pointer-events:none;overflow:hidden;isolation:isolate;color:#eaffff}
.rival-scene-shade{position:absolute;inset:0;background:radial-gradient(ellipse at 56% 51%,transparent 7%,rgba(1,6,23,.39) 85%),linear-gradient(transparent 40%,#000b1c53 100%)}
.rival-cinema-bars::before,.rival-cinema-bars::after{position:absolute;left:0;right:0;height:4%;background:#010616c9;content:'';z-index:9}.rival-cinema-bars::before{top:0}.rival-cinema-bars::after{bottom:0}
.rival-cinematic-sprite{position:absolute;z-index:5;width:clamp(112px,30%,320px);height:54%;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 7px 3px #01031d) drop-shadow(0 0 19px #15eaff9b);transform-origin:50% 85%;left:24%;bottom:7%;transform:translateX(-50%);transition:filter .2s}
.rival-script{position:absolute;left:5%;right:5%;top:7%;z-index:11;display:flex;flex-direction:column;gap:3px;text-shadow:0 2px 4px #000,0 0 13px #032640;letter-spacing:.10em}
.rival-script-kicker{font:900 clamp(9px,1.4vw,14px) system-ui;color:#4bfeff}.rival-script-kicker i{color:#fa62e2;font-style:normal}.rival-script-title{font:900 clamp(23px,5vw,58px) system-ui;color:#fff;letter-spacing:.05em;line-height:1.02}.rival-script-subtitle{font:500 clamp(10px,1.5vw,15px) system-ui;color:#9feaff;letter-spacing:.02em}.rival-script-progress{position:absolute;right:0;top:0;font:700 11px monospace;color:#8cf5ff}
.rival-motion-trail,.rival-cut-plane,.rival-rupture,.rival-flare,.rival-echo{position:absolute;pointer-events:none;opacity:0}
.rival-motion-trail{width:65%;height:23%;left:6%;bottom:20%;z-index:3;background:repeating-linear-gradient(170deg,transparent 0 8px,#26dffb88 9px 11px,transparent 12px 20px);filter:blur(3px);transform:skewX(-25deg)}
.rival-flare{z-index:7;left:62%;top:38%;width:20px;height:20px;background:#fff;border-radius:50%;box-shadow:0 0 0 9px #56e3ff38,0 0 24px 11px #fff,0 0 70px 30px #64f9ff;transform:rotate(45deg)}
.rival-flare:before,.rival-flare:after{position:absolute;content:'';background:#dbffff;left:50%;top:50%;transform:translate(-50%,-50%)}.rival-flare:before{height:160px;width:2px}.rival-flare:after{width:160px;height:2px}
.rival-cut-plane{z-index:6;left:-16%;top:20%;width:143%;height:18%;background:linear-gradient(180deg,transparent,#03dfff34 43%,#faffff 50%,#36f6ff 52%,#b643ea99 56%,transparent 65%);filter:drop-shadow(0 0 14px #00efff);transform:translateY(-15%) rotate(-17deg) scaleX(.02);transform-origin:60% 50%}
.rival-rupture{z-index:4;left:52%;top:8%;width:22%;height:88%;clip-path:polygon(43% 0,71% 14%,53% 32%,75% 51%,44% 78%,55% 100%,20% 80%,42% 59%,24% 39%,49% 19%);background:linear-gradient(90deg,#26fcff,#fff,#45ffff 46%,#c144ff 64%,#14013d);filter:drop-shadow(0 0 25px #8cffff)}
.rival-echo{z-index:4;height:48%;width:25%;bottom:14%;background:linear-gradient(110deg,transparent,#43fbff27,transparent);clip-path:polygon(20% 0,80% 0,100% 100%,0 100%)}.rival-echo-a{left:27%}.rival-echo-b{left:36%}
.rival-cinematic[data-beat="approach"] .rival-cinematic-sprite{animation:rivalStill .69s ease-out both}
.rival-cinematic[data-beat="leap"] .rival-cinematic-sprite{animation:rivalLeap .67s cubic-bezier(.22,.7,.35,1) both;width:clamp(160px,44%,390px)}
.rival-cinematic[data-beat="leap"] .rival-motion-trail{opacity:.8;animation:rivalTrail .67s ease-out both}
.rival-cinematic[data-beat="glint"] .rival-cinematic-sprite{animation:rivalSuspension .70s ease-in-out both}
.rival-cinematic[data-beat="glint"] .rival-flare{opacity:1;animation:rivalGlint .70s ease-out both}
.rival-cinematic[data-beat="slash"] .rival-cinematic-sprite{animation:rivalSlash .88s cubic-bezier(.12,.7,.18,1) both;width:clamp(230px,65%,650px);height:64%}
.rival-cinematic[data-beat="slash"] .rival-cut-plane{opacity:1;animation:rivalCut .88s ease-out both}
.rival-cinematic[data-beat="breach"] .rival-cinematic-sprite{animation:rivalBreachSprite 1.08s ease-out both;width:clamp(230px,65%,650px);height:64%}
.rival-cinematic[data-beat="breach"] .rival-cut-plane{opacity:1;animation:rivalCut .55s ease-out both}
.rival-cinematic[data-beat="breach"] .rival-rupture{opacity:1;animation:rivalRupture 1.08s ease-in-out both}
.rival-cinematic[data-beat="breach"] .rival-scene-shade{animation:rivalWhiteout 1.08s ease-in-out both}
.rival-directing .boss-entity.rival-cut-hit{filter:brightness(5) drop-shadow(0 0 38px #fff);animation:bossHit .22s 3}
.rival-cinematic[data-beat="land"] .rival-cinematic-sprite{animation:rivalLand .90s cubic-bezier(.18,.66,.4,1) both}
.rival-cinematic[data-beat="land"] .rival-echo{opacity:.8;animation:rivalEcho .9s ease-out both}
.rival-cinematic[data-beat="land"] .rival-echo-b{animation-delay:.08s}
@keyframes rivalStill{from{left:23%;bottom:2%;opacity:.8;filter:brightness(.5)}to{left:26%;bottom:6%;opacity:1;filter:brightness(1)}}
@keyframes rivalLeap{0%{left:12%;bottom:2%;transform:translateX(-50%) scale(.8) rotate(-7deg)}62%{left:43%;bottom:39%;transform:translateX(-50%) scale(1.18) rotate(-18deg)}100%{left:52%;bottom:37%;transform:translateX(-50%) scale(1.06) rotate(-14deg)}}
@keyframes rivalTrail{from{opacity:0;transform:translateX(-40%) skewX(-25deg)}20%{opacity:.8}to{opacity:0;transform:translateX(72%) skewX(-25deg)}}
@keyframes rivalSuspension{0%{left:50%;bottom:31%;opacity:.65;transform:translateX(-50%) rotate(-12deg) scale(.95)}40%,80%{left:54%;bottom:34%;opacity:1;transform:translateX(-50%) rotate(5deg) scale(1.14)}100%{left:57%;bottom:31%;opacity:1;transform:translateX(-50%) rotate(-4deg) scale(1.06)}}
@keyframes rivalGlint{0%{opacity:0;transform:scale(.1) rotate(45deg)}48%{opacity:1;transform:scale(1) rotate(45deg)}100%{opacity:0;transform:scale(2.7) rotate(45deg)}}
@keyframes rivalSlash{0%{left:42%;bottom:28%;opacity:.25;transform:translateX(-50%) rotate(-16deg) scale(.72)}38%{left:58%;bottom:27%;opacity:1;transform:translateX(-50%) rotate(0deg) scale(1.17)}100%{left:69%;bottom:13%;opacity:1;transform:translateX(-50%) rotate(10deg) scale(1)}}
@keyframes rivalBreachSprite{0%{left:64%;bottom:18%;opacity:1;transform:translateX(-50%) rotate(10deg) scale(1)}68%{left:70%;bottom:17%;opacity:1;transform:translateX(-50%) rotate(9deg) scale(1.12)}100%{left:76%;bottom:12%;opacity:.45;transform:translateX(-50%) rotate(9deg) scale(.9)}}
@keyframes rivalCut{0%{opacity:0;transform:rotate(-17deg) scaleX(.02)}36%{opacity:1;transform:rotate(-17deg) scaleX(1.1)}67%{opacity:1}100%{opacity:0;transform:rotate(-17deg) scaleX(1.6)}}
@keyframes rivalRupture{0%{opacity:0;scale:.02 .4;filter:brightness(6)}32%{opacity:1;scale:1 1;filter:brightness(2)}78%{opacity:1;scale:.9 1;filter:brightness(1.6)}100%{opacity:0;scale:.3 1.2;filter:brightness(.3)}}
@keyframes rivalWhiteout{0%,30%,100%{background:transparent}48%{background:#d9ffffc9}54%{background:#fbc8ff84}}
@keyframes rivalLand{0%{left:80%;bottom:27%;transform:translateX(-50%) rotate(16deg) scale(1.1);opacity:.55}43%{left:75%;bottom:6%;transform:translateX(-50%) rotate(-4deg) scale(.95);opacity:1}100%{left:70%;bottom:4%;transform:translateX(-50%) rotate(0) scale(1);opacity:1}}
@keyframes rivalEcho{from{transform:translateX(0);opacity:.8}to{transform:translateX(-90px);opacity:0}}
@media(max-width:480px){.rival-script{top:12%}.rival-script-title{font-size:clamp(23px,6.5vw,35px)}.rival-cinematic-sprite{width:38%;height:48%}}
@media(prefers-reduced-motion:reduce){.rival-cinematic *{animation-duration:.02ms!important}}

/* v033: genuine sheet-guided pose images, no silhouette staging layer. */
.field-actor[data-actor="rival"] img{object-position:center bottom;filter:drop-shadow(0 0 5px #24bdef99)}
.rival-cinematic-sprite{object-position:center bottom;filter:drop-shadow(0 0 14px #18cef6ba)}
.rival-cinematic[data-beat="approach"] .rival-cinematic-sprite,
.rival-cinematic[data-beat="land"] .rival-cinematic-sprite{width:clamp(108px,23%,210px);height:62%}
.rival-cinematic[data-beat="leap"] .rival-cinematic-sprite{width:clamp(185px,49%,440px);height:69%}
.rival-cinematic[data-beat="glint"] .rival-cinematic-sprite{width:clamp(150px,40%,390px);height:65%}
.rival-cinematic[data-beat="slash"] .rival-cinematic-sprite,
.rival-cinematic[data-beat="breach"] .rival-cinematic-sprite{width:clamp(185px,54%,480px);height:67%}
@media(max-width:480px){.rival-cinematic[data-beat="approach"] .rival-cinematic-sprite,.rival-cinematic[data-beat="land"] .rival-cinematic-sprite{width:31%}.rival-cinematic[data-beat="leap"] .rival-cinematic-sprite{width:65%}.rival-cinematic[data-beat="glint"] .rival-cinematic-sprite{width:59%}.rival-cinematic[data-beat="slash"] .rival-cinematic-sprite,.rival-cinematic[data-beat="breach"] .rival-cinematic-sprite{width:75%}}

/* v0.3.4: individually timed multi-blade cuts, not another sheet baked into the sprite.
   Silhouettes remain visible while successive blades slice in front of and behind her. */
.rival-multislash,.rival-sparks{position:absolute;inset:0;pointer-events:none;z-index:6;overflow:hidden}
.rival-multislash .cut{--angle:-33deg;--delay:0s;--span:64%;--top:49%;--left:27%;position:absolute;top:var(--top);left:var(--left);width:var(--span);height:clamp(3px,.85%,10px);opacity:0;border-radius:48%;transform:rotate(var(--angle)) scaleX(.08);transform-origin:48% 50%;background:linear-gradient(90deg,transparent 0%,#24eaff79 12%,#ecffff 48%,#6afcff 55%,#fa69faac 78%,transparent 100%);box-shadow:0 0 7px 2px #5fefff88,0 0 25px 4px #ab69ffa0;mix-blend-mode:screen}
.rival-multislash .cut:after{content:'';position:absolute;inset:-6px 0;border-radius:100%;border-top:2px solid #e0ffffbd;filter:blur(1px)}
.rival-multislash .cut-1{--angle:-66deg;--top:59%;--left:24%;--span:60%;--delay:.04s}
.rival-multislash .cut-2{--angle:29deg;--top:45%;--left:23%;--span:73%;--delay:.16s}
.rival-multislash .cut-3{--angle:-25deg;--top:57%;--left:27%;--span:69%;--delay:.29s}
.rival-multislash .cut-4{--angle:59deg;--top:40%;--left:43%;--span:46%;--delay:.39s}
.rival-multislash .cut-5{--angle:-49deg;--top:49%;--left:29%;--span:68%;--delay:.53s}
.rival-multislash .cut-6{--angle:14deg;--top:56%;--left:35%;--span:62%;--delay:.65s}
.rival-cinematic[data-beat="slash"] .rival-multislash .cut{animation:rivalMultiCut .25s cubic-bezier(.13,.85,.32,1) var(--delay) both}
.rival-cinematic[data-beat="breach"] .rival-multislash .cut{animation:rivalMultiCut .28s cubic-bezier(.13,.85,.32,1) var(--delay) both;filter:brightness(1.3)}
@keyframes rivalMultiCut{0%{opacity:0;transform:rotate(var(--angle)) scaleX(.01) translateX(-34%)}25%{opacity:.95;transform:rotate(var(--angle)) scaleX(1.08) translateX(0%)}63%{opacity:.7;transform:rotate(var(--angle)) scaleX(1.25)}100%{opacity:0;transform:rotate(var(--angle)) scaleX(1.47) translateX(12%)}}
.rival-sparks .spark{position:absolute;left:calc(54% + (var(--index) - 4)*4%);top:calc(51% + (var(--index) - 4)*3%);width:clamp(2px,.65vw,7px);height:clamp(2px,.65vw,7px);background:#dcfdff;box-shadow:0 0 9px #fff,0 0 18px #d74dff;opacity:0;transform:rotate(45deg)}
.rival-sparks .spark-1{--index:1;--delay:0.063s}
.rival-sparks .spark-2{--index:2;--delay:0.126s}
.rival-sparks .spark-3{--index:3;--delay:0.189s}
.rival-sparks .spark-4{--index:4;--delay:0.252s}
.rival-sparks .spark-5{--index:5;--delay:0.315s}
.rival-sparks .spark-6{--index:6;--delay:0.378s}
.rival-sparks .spark-7{--index:7;--delay:0.441s}
.rival-sparks .spark-8{--index:8;--delay:0.504s}
.rival-cinematic[data-beat="slash"] .rival-sparks .spark,.rival-cinematic[data-beat="breach"] .rival-sparks .spark{animation:rivalSpark .4s ease-out var(--delay) both}
@keyframes rivalSpark{0%{opacity:0;transform:translate(0,0) scale(.4) rotate(45deg)}25%{opacity:1}100%{opacity:0;transform:translate(calc((var(--index) - 4)*11px),calc((4 - var(--index))*16px)) scale(.12) rotate(140deg)}}
@media(max-width:480px){.rival-multislash{top:-3%}.rival-multislash .cut{box-shadow:0 0 6px 1px #64ffff9b,0 0 13px #b785ff}}
@media(prefers-reduced-motion:reduce){.rival-multislash .cut,.rival-sparks .spark{animation-duration:.04s!important;animation-delay:0s!important}}
