/* EchoArena Diversão — arma fornecida pelo projeto, isolada da folha principal. */
.duel-stage[data-phase="ready"] .weapon-shell{--weapon-rgb:157,105,255}
.duel-stage[data-phase="ally"] .weapon-shell{--weapon-rgb:85,233,255}
.duel-stage[data-phase="enemy"] .weapon-shell{--weapon-rgb:255,79,139}
.duel-stage[data-phase="complete"] .weapon-shell{--weapon-rgb:158,128,225}

.weapon-shell.user-weapon-ready{
  width:min(100%,430px);
  height:288px;
  margin:-24px auto -12px;
  transform-origin:35% 58%;
  filter:drop-shadow(0 30px 34px rgba(0,0,0,.48));
  animation:user-weapon-float 4.8s ease-in-out infinite;
  isolation:isolate;
}
.weapon-shell.user-weapon-ready::before{
  content:"";
  position:absolute;
  z-index:0;
  inset:6% -4% 5%;
  pointer-events:none;
  opacity:.2;
  background:
    radial-gradient(circle at 56% 31%,rgba(var(--weapon-rgb),.24),transparent 18%),
    radial-gradient(ellipse at 52% 57%,rgba(var(--weapon-rgb),.10),transparent 48%);
  filter:blur(13px);
  transition:opacity .25s ease,filter .25s ease;
}
.weapon-shell.user-weapon-ready::after{
  content:"";
  position:absolute;
  z-index:4;
  left:5%;
  right:2%;
  top:19%;
  height:1px;
  pointer-events:none;
  opacity:.16;
  background:linear-gradient(90deg,transparent,rgba(var(--weapon-rgb),.82),transparent 72%);
  box-shadow:0 0 12px rgba(var(--weapon-rgb),.32);
  animation:user-weapon-scan 3.6s ease-in-out infinite;
}
.weapon-shell.user-weapon-ready .weapon-shadow{
  left:9%;
  right:4%;
  bottom:13px;
  height:30px;
  opacity:.85;
  background:radial-gradient(ellipse,rgba(var(--weapon-rgb),.16),rgba(74,39,119,.08) 38%,transparent 72%);
  filter:blur(13px);
}
.weapon-shell .user-revolver-svg{
  position:relative;
  z-index:3;
  display:block;
  width:100%;
  height:100%;
  overflow:visible;
  opacity:1;
  filter:drop-shadow(0 7px 8px rgba(0,0,0,.44)) drop-shadow(0 0 7px rgba(var(--weapon-rgb),.05));
  transition:filter .28s ease,opacity .2s ease;
  animation:user-weapon-enter .42s cubic-bezier(.2,.8,.2,1) both;
}
.duel-stage[data-phase="ally"] .weapon-shell .user-revolver-svg{
  filter:drop-shadow(0 7px 8px rgba(0,0,0,.44)) drop-shadow(0 0 7px rgba(85,233,255,.14));
}
.duel-stage[data-phase="enemy"] .weapon-shell .user-revolver-svg{
  filter:drop-shadow(0 7px 8px rgba(0,0,0,.44)) drop-shadow(0 0 7px rgba(255,79,139,.13));
}
.weapon-shell.user-weapon-ready.spin-forward::before,
.weapon-shell.user-weapon-ready.spin-reverse::before{
  opacity:.68;
  filter:blur(9px);
  animation:user-cylinder-aura .8s ease-in-out both;
}

/* O tambor gira no eixo do cano: a carcaça fica estável; sulcos e reflexos rolam verticalmente. */
.user-revolver-svg .weapon-cylinder-motion{
  transform-box:fill-box;
  transform-origin:center;
  will-change:transform,opacity,filter;
}
.weapon-shell.spin-forward .user-revolver-svg [data-source-part="9"],
.weapon-shell.spin-forward .user-revolver-svg [data-source-part="11"],
.weapon-shell.spin-forward .user-revolver-svg [data-source-part="20"],
.weapon-shell.spin-forward .user-revolver-svg [data-source-part="22"],
.weapon-shell.spin-forward .user-revolver-svg [data-source-part="23a"]{
  animation:user-cylinder-roll-a .86s cubic-bezier(.16,.72,.2,1);
}
.weapon-shell.spin-forward .user-revolver-svg [data-source-part="10"],
.weapon-shell.spin-forward .user-revolver-svg [data-source-part="19"],
.weapon-shell.spin-forward .user-revolver-svg [data-source-part="21"],
.weapon-shell.spin-forward .user-revolver-svg [data-source-part="31"]{
  animation:user-cylinder-roll-b .86s cubic-bezier(.16,.72,.2,1);
}
.weapon-shell.spin-reverse .user-revolver-svg [data-source-part="9"],
.weapon-shell.spin-reverse .user-revolver-svg [data-source-part="11"],
.weapon-shell.spin-reverse .user-revolver-svg [data-source-part="20"],
.weapon-shell.spin-reverse .user-revolver-svg [data-source-part="22"],
.weapon-shell.spin-reverse .user-revolver-svg [data-source-part="23a"]{
  animation:user-cylinder-roll-a-reverse .82s cubic-bezier(.16,.72,.2,1);
}
.weapon-shell.spin-reverse .user-revolver-svg [data-source-part="10"],
.weapon-shell.spin-reverse .user-revolver-svg [data-source-part="19"],
.weapon-shell.spin-reverse .user-revolver-svg [data-source-part="21"],
.weapon-shell.spin-reverse .user-revolver-svg [data-source-part="31"]{
  animation:user-cylinder-roll-b-reverse .82s cubic-bezier(.16,.72,.2,1);
}

/* Cão e gatilho são os únicos recortes mecânicos separados do desenho original. */
.user-revolver-svg #weapon-hammer,
.user-revolver-svg #weapon-trigger{
  transform-box:fill-box;
  will-change:transform;
}
.user-revolver-svg #weapon-hammer{transform-origin:80% 72%}
.user-revolver-svg #weapon-trigger{transform-origin:25% 18%}
.weapon-shell.user-weapon-ready.fire #weapon-hammer{animation:user-hammer .3s cubic-bezier(.18,.75,.25,1)}
.weapon-shell.user-weapon-ready.fire #weapon-trigger{animation:user-trigger .28s cubic-bezier(.2,.8,.25,1)}

/* Disparo: sobe pouco o cano e recua; sem deformar o SVG. */
.weapon-shell.user-weapon-ready.fire{
  animation:user-recoil .31s cubic-bezier(.17,.78,.26,1);
}
.weapon-shell.user-weapon-ready .muzzle-flash{
  right:-24px;
  top:35px;
  width:104px;
  height:104px;
  background:
    radial-gradient(circle,#fff 0 4%,#d9fcff 5% 10%,#7ff1ff 11% 17%,rgba(var(--weapon-rgb),.62) 18% 27%,rgba(var(--weapon-rgb),.16) 30% 48%,transparent 69%);
  filter:drop-shadow(0 0 13px rgba(var(--weapon-rgb),.62));
  clip-path:polygon(0 43%,27% 36%,45% 7%,52% 34%,73% 0,68% 38%,100% 50%,69% 61%,81% 87%,53% 68%,41% 100%,31% 67%,0 61%);
}
.weapon-shell.user-weapon-ready.fire .muzzle-flash{animation:user-muzzle .25s ease-out}
.weapon-shell.user-weapon-ready .ejected-spark{background:rgb(var(--weapon-rgb));box-shadow:0 0 10px rgba(var(--weapon-rgb),.9)}
.weapon-shell.user-weapon-ready .s1{right:28px;top:71px}
.weapon-shell.user-weapon-ready .s2{right:43px;top:50px}
.weapon-shell.user-weapon-ready .s3{right:17px;top:92px}

@keyframes user-weapon-enter{
  from{opacity:0;transform:translateY(7px) scale(.985);filter:blur(3px) drop-shadow(0 0 0 transparent)}
  to{opacity:1;transform:none}
}
@keyframes user-weapon-float{
  0%,100%{transform:translate3d(0,1px,0) rotate(-.18deg)}
  50%{transform:translate3d(0,-5px,0) rotate(.16deg)}
}
@keyframes user-weapon-scan{
  0%,100%{transform:translateY(-8px);opacity:.07}
  45%{opacity:.24}
  55%{transform:translateY(126px);opacity:.18}
  56%,100%{transform:translateY(126px);opacity:.07}
}
@keyframes user-cylinder-aura{
  0%{transform:scale(.9);opacity:.18}
  38%{transform:scale(1.03);opacity:.72}
  100%{transform:scale(1);opacity:.22}
}
@keyframes user-cylinder-roll-a{
  0%{transform:translateY(0);opacity:1;filter:none}
  18%{transform:translateY(3px) scaleY(.84);opacity:.46;filter:blur(.28px)}
  38%{transform:translateY(-4px) scaleY(1.08);opacity:.82}
  58%{transform:translateY(4px) scaleY(.82);opacity:.42}
  78%{transform:translateY(-2px) scaleY(1.04);opacity:.9}
  100%{transform:translateY(0);opacity:1;filter:none}
}
@keyframes user-cylinder-roll-b{
  0%{transform:translateY(0);opacity:1}
  20%{transform:translateY(-4px) scaleY(1.06);opacity:.75}
  40%{transform:translateY(4px) scaleY(.8);opacity:.36}
  60%{transform:translateY(-3px) scaleY(1.09);opacity:.88}
  80%{transform:translateY(3px) scaleY(.86);opacity:.48}
  100%{transform:translateY(0);opacity:1}
}
@keyframes user-cylinder-roll-a-reverse{
  0%{transform:translateY(0);opacity:1}
  20%{transform:translateY(-3px) scaleY(.84);opacity:.46}
  40%{transform:translateY(4px) scaleY(1.08);opacity:.82}
  60%{transform:translateY(-4px) scaleY(.82);opacity:.42}
  80%{transform:translateY(2px) scaleY(1.04);opacity:.9}
  100%{transform:translateY(0);opacity:1}
}
@keyframes user-cylinder-roll-b-reverse{
  0%{transform:translateY(0);opacity:1}
  20%{transform:translateY(4px) scaleY(1.06);opacity:.75}
  40%{transform:translateY(-4px) scaleY(.8);opacity:.36}
  60%{transform:translateY(3px) scaleY(1.09);opacity:.88}
  80%{transform:translateY(-3px) scaleY(.86);opacity:.48}
  100%{transform:translateY(0);opacity:1}
}
@keyframes user-hammer{
  0%{transform:none}
  28%{transform:rotate(-10deg) translate(-.7px,-.4px)}
  52%{transform:rotate(3deg)}
  100%{transform:none}
}
@keyframes user-trigger{
  0%{transform:none}
  32%{transform:translateX(2px) rotate(6deg)}
  68%{transform:translateX(.6px) rotate(1.5deg)}
  100%{transform:none}
}
@keyframes user-recoil{
  0%{transform:translate3d(0,0,0) rotate(0)}
  24%{transform:translate3d(-16px,-3px,0) rotate(-1.65deg)}
  50%{transform:translate3d(4px,1px,0) rotate(.38deg)}
  72%{transform:translate3d(-1px,0,0) rotate(-.1deg)}
  100%{transform:translate3d(0,0,0) rotate(0)}
}
@keyframes user-muzzle{
  0%{opacity:0;transform:scale(.28) rotate(-7deg)}
  16%{opacity:1}
  44%{opacity:.86;transform:scale(1.04) rotate(4deg)}
  100%{opacity:0;transform:scale(1.5) rotate(11deg)}
}

@media(max-width:1050px){
  .weapon-shell.user-weapon-ready{width:min(100%,445px);height:306px;margin:-30px auto -18px}
  .weapon-shell.user-weapon-ready .muzzle-flash{right:-27px;top:40px}
}
@media(max-width:760px){
  .weapon-shell.user-weapon-ready{width:min(100%,390px);height:285px;margin:-28px auto -18px}
  .weapon-shell.user-weapon-ready .muzzle-flash{right:-17px;top:42px;width:90px;height:90px}
}
@media(max-width:470px){
  .weapon-shell.user-weapon-ready{width:min(100%,345px);height:257px;margin:-22px auto -13px}
  .weapon-shell.user-weapon-ready .muzzle-flash{right:-11px;top:39px;width:80px;height:80px}
}
@media(prefers-reduced-motion:reduce){
  .weapon-shell.user-weapon-ready,
  .weapon-shell.user-weapon-ready::after,
  .weapon-shell.user-weapon-ready .user-revolver-svg{animation:none!important}
  .weapon-shell.spin-forward .weapon-cylinder-motion,
  .weapon-shell.spin-reverse .weapon-cylinder-motion,
  .weapon-shell.fire #weapon-hammer,
  .weapon-shell.fire #weapon-trigger{animation-duration:.08s!important;animation-iteration-count:1!important}
}
