/* Sistema global de marcos.
   Reglas:
   - Ningún marco cambia de posición, rotación o escala.
   - El movimiento se limita al aura exterior del PNG.
   - La animación es lineal y consistente entre páginas. */

@keyframes pv-frame-aura-breathe{
  0%{
    filter:
      drop-shadow(0 6px 13px rgba(0,0,0,var(--pv-frame-shadow,.44)))
      drop-shadow(0 0 var(--pv-frame-inner-rest,7px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-rest,.08)))
      drop-shadow(0 0 var(--pv-frame-mid-rest,14px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-mid-rest,.018)))
      drop-shadow(0 0 var(--pv-frame-outer-rest,24px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-outer-rest,.000)))
      saturate(var(--pv-frame-sat-rest,1.06))
      brightness(var(--pv-frame-bright-rest,1.00));
  }
  16%{
    filter:
      drop-shadow(0 6px 13px rgba(0,0,0,var(--pv-frame-shadow,.44)))
      drop-shadow(0 0 var(--pv-frame-inner-soft,10px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-soft,.22)))
      drop-shadow(0 0 var(--pv-frame-mid-soft,18px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-mid-soft,.065)))
      drop-shadow(0 0 var(--pv-frame-outer-soft,30px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-outer-soft,.015)))
      saturate(var(--pv-frame-sat-soft,1.12))
      brightness(var(--pv-frame-bright-soft,1.012));
  }
  34%{
    filter:
      drop-shadow(0 6px 13px rgba(0,0,0,var(--pv-frame-shadow,.44)))
      drop-shadow(0 0 var(--pv-frame-inner-rise,13px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-rise,.36)))
      drop-shadow(0 0 var(--pv-frame-mid-rise,23px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-mid-rise,.135)))
      drop-shadow(0 0 var(--pv-frame-outer-rise,36px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-outer-rise,.035)))
      saturate(var(--pv-frame-sat-rise,1.18))
      brightness(var(--pv-frame-bright-rise,1.024));
  }
  50%{
    filter:
      drop-shadow(0 6px 13px rgba(0,0,0,var(--pv-frame-shadow,.44)))
      drop-shadow(0 0 var(--pv-frame-inner-peak,16px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-peak,.48)))
      drop-shadow(0 0 var(--pv-frame-mid-peak,28px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-mid-peak,.215)))
      drop-shadow(0 0 var(--pv-frame-outer-peak,42px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-outer-peak,.070)))
      saturate(var(--pv-frame-sat-peak,1.24))
      brightness(var(--pv-frame-bright-peak,1.036));
  }
  66%{
    filter:
      drop-shadow(0 6px 13px rgba(0,0,0,var(--pv-frame-shadow,.44)))
      drop-shadow(0 0 var(--pv-frame-inner-rise,13px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-rise,.36)))
      drop-shadow(0 0 var(--pv-frame-mid-rise,23px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-mid-rise,.135)))
      drop-shadow(0 0 var(--pv-frame-outer-rise,36px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-outer-rise,.035)))
      saturate(var(--pv-frame-sat-rise,1.18))
      brightness(var(--pv-frame-bright-rise,1.024));
  }
  84%{
    filter:
      drop-shadow(0 6px 13px rgba(0,0,0,var(--pv-frame-shadow,.44)))
      drop-shadow(0 0 var(--pv-frame-inner-soft,10px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-soft,.22)))
      drop-shadow(0 0 var(--pv-frame-mid-soft,18px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-mid-soft,.065)))
      drop-shadow(0 0 var(--pv-frame-outer-soft,30px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-outer-soft,.015)))
      saturate(var(--pv-frame-sat-soft,1.12))
      brightness(var(--pv-frame-bright-soft,1.012));
  }
  100%{
    filter:
      drop-shadow(0 6px 13px rgba(0,0,0,var(--pv-frame-shadow,.44)))
      drop-shadow(0 0 var(--pv-frame-inner-rest,7px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-rest,.08)))
      drop-shadow(0 0 var(--pv-frame-mid-rest,14px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-mid-rest,.018)))
      drop-shadow(0 0 var(--pv-frame-outer-rest,24px) rgba(var(--pv-frame-rgb,190,105,255),var(--pv-frame-alpha-outer-rest,.000)))
      saturate(var(--pv-frame-sat-rest,1.06))
      brightness(var(--pv-frame-bright-rest,1.00));
  }
}


@keyframes pv-frame-owner-css-breathe{
  0%{
    box-shadow:
      0 0 0 2px rgba(var(--pv-frame-rgb,190,105,255),.20),
      inset 0 0 8px rgba(var(--pv-frame-rgb,190,105,255),.08),
      0 0 10px rgba(var(--pv-frame-rgb,190,105,255),.07),
      0 0 22px rgba(var(--pv-frame-rgb,190,105,255),.00);
    opacity:.88;
  }
  20%{
    box-shadow:
      0 0 0 2px rgba(var(--pv-frame-rgb,190,105,255),.28),
      inset 0 0 10px rgba(var(--pv-frame-rgb,190,105,255),.14),
      0 0 14px rgba(var(--pv-frame-rgb,190,105,255),.15),
      0 0 28px rgba(var(--pv-frame-rgb,190,105,255),.035);
    opacity:.92;
  }
  50%{
    box-shadow:
      0 0 0 2px rgba(var(--pv-frame-rgb,190,105,255),.42),
      inset 0 0 14px rgba(var(--pv-frame-rgb,190,105,255),.24),
      0 0 22px rgba(var(--pv-frame-rgb,190,105,255),.34),
      0 0 42px rgba(var(--pv-frame-rgb,190,105,255),.105);
    opacity:1;
  }
  80%{
    box-shadow:
      0 0 0 2px rgba(var(--pv-frame-rgb,190,105,255),.28),
      inset 0 0 10px rgba(var(--pv-frame-rgb,190,105,255),.14),
      0 0 14px rgba(var(--pv-frame-rgb,190,105,255),.15),
      0 0 28px rgba(var(--pv-frame-rgb,190,105,255),.035);
    opacity:.92;
  }
  100%{
    box-shadow:
      0 0 0 2px rgba(var(--pv-frame-rgb,190,105,255),.20),
      inset 0 0 8px rgba(var(--pv-frame-rgb,190,105,255),.08),
      0 0 10px rgba(var(--pv-frame-rgb,190,105,255),.07),
      0 0 22px rgba(var(--pv-frame-rgb,190,105,255),.00);
    opacity:.88;
  }
}


/* Base global para PNG de marcos usados en la página. */
.pv-avatar-frame,
.avatar-frame,
.frame-img,
.pv-player-avatar img.frame,
.avatar-wrap > img.frame,
.avatar-wrap.has-frame > img.frame,
.avatar-wrap.has-frame > .frame,
.avatar-wrap[data-frame-file] > .frame,
.avatar-wrap[data-frame-file] > .frame-img,
.pv-avatar-wrap[data-frame-file] > .pv-avatar-frame,
.pv-reward-frame > .pv-avatar-frame,
img[src*="/frames/"],
img[src*="img/frames/"],
img[src*="img%2Fframes%2F"]{
  --pv-frame-rgb:190,105,255;
  --pv-frame-shadow:.44;
  --pv-frame-alpha-rest:.08;
  --pv-frame-alpha-soft:.22;
  --pv-frame-alpha-rise:.36;
  --pv-frame-alpha-peak:.48;
  --pv-frame-alpha-mid-rest:.018;
  --pv-frame-alpha-mid-soft:.065;
  --pv-frame-alpha-mid-rise:.135;
  --pv-frame-alpha-mid-peak:.215;
  --pv-frame-alpha-outer-rest:.000;
  --pv-frame-alpha-outer-soft:.015;
  --pv-frame-alpha-outer-rise:.035;
  --pv-frame-alpha-outer-peak:.070;
  animation:pv-frame-aura-breathe 2.85s linear infinite !important;
  will-change:filter;
  backface-visibility:hidden;
  transform-style:flat;
}

/* Desactiva brillos locales para evitar partículas o rotaciones duplicadas. */
.pv-avatar-wrap[data-frame-file]::before,
.avatar-wrap[data-frame-file]::before{
  content:none !important;
  display:none !important;
  animation:none !important;
  filter:none !important;
  background:none !important;
  box-shadow:none !important;
}

.pv-avatar-wrap[data-frame="none"] .pv-avatar-frame,
.avatar-wrap[data-frame="none"] .pv-avatar-frame,
.avatar-wrap[data-frame="none"] .frame-img,
.avatar-wrap[data-frame="none"] > .frame{
  display:none !important;
  animation:none !important;
  filter:none !important;
}

/* Marco Owner cuando se renderiza como div CSS en draft y pre-draft. */
.frame-css.owner{
  --pv-frame-rgb:190,105,255;
  pointer-events:none;
}
.avatar-wrap.frame-owner > .frame-css.owner,
.pv-avatar-wrap.frame-owner > .frame-css.owner,
.avatar-wrap[data-frame="owner"]::after,
.pv-avatar-wrap[data-frame="owner"]::after{
  --pv-frame-rgb:190,105,255;
  animation:pv-frame-owner-css-breathe 3.15s linear infinite !important;
}
.avatar-wrap[data-frame="owner"]::after,
.pv-avatar-wrap[data-frame="owner"]::after{
  content:"";
  position:absolute;
  inset:-2px;
  border-radius:999px;
  pointer-events:none;
  z-index:0;
  display:block;
  background:
    radial-gradient(circle at 50% 50%, rgba(var(--pv-frame-rgb),.24), transparent 62%),
    conic-gradient(from 0deg, rgba(var(--pv-frame-rgb),.34), transparent 25%, rgba(var(--pv-frame-rgb),.24), transparent 60%, rgba(var(--pv-frame-rgb),.30), transparent 88%);
}

/* Mapa oficial de colores por marco */

/* LordOfAbyss / Lord Of Abyss: morado intenso. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="LordOfAbyss"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Lord%20Of%20Abyss"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Lord Of Abyss"],
.pv-avatar-wrap[data-frame-file*="LordOfAbyss"] > .pv-avatar-frame,
.pv-avatar-wrap[data-frame-file*="Lord Of Abyss"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="LordOfAbyss"] img.frame,
.avatar-wrap[data-frame-file*="LordOfAbyss"] > .frame-img,
.avatar-wrap[data-frame-file*="LordOfAbyss"] > .frame{
  --pv-frame-rgb:195,88,255;
  --pv-frame-sat-max:1.38;
}

/* 2do Campeón Modo Pola: azul eléctrico. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="2do%20Campeon%20Modo%20Pola"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="2do Campeon Modo Pola"],
.pv-avatar-wrap[data-frame-file*="2do Campeon Modo Pola"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="2do Campeon Modo Pola"] img.frame,
.avatar-wrap[data-frame-file*="2do Campeon Modo Pola"] > .frame-img,
.avatar-wrap[data-frame-file*="2do Campeon Modo Pola"] > .frame{
  --pv-frame-rgb:35,170,255;
  --pv-frame-sat-max:1.34;
}

/* Abyss Duelist: verde. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Abyss%20Duelist"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Abyss Duelist"],
.pv-avatar-wrap[data-frame-file*="Abyss Duelist"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Abyss Duelist"] img.frame,
.avatar-wrap[data-frame-file*="Abyss Duelist"] > .frame-img,
.avatar-wrap[data-frame-file*="Abyss Duelist"] > .frame{
  --pv-frame-rgb:36,255,140;
  --pv-frame-sat-max:1.36;
}

/* Abyss Fighter: naranja. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Abyss%20Fighter"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Abyss Fighter"],
.pv-avatar-wrap[data-frame-file*="Abyss Fighter"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Abyss Fighter"] img.frame,
.avatar-wrap[data-frame-file*="Abyss Fighter"] > .frame-img,
.avatar-wrap[data-frame-file*="Abyss Fighter"] > .frame{
  --pv-frame-rgb:255,126,28;
  --pv-frame-sat-max:1.35;
}

/* Abyss Challenger: rojo vivo. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="AbyssChallenger"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Abyss%20Challenger"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Abyss Challenger"],
.pv-avatar-wrap[data-frame-file*="AbyssChallenger"] > .pv-avatar-frame,
.pv-avatar-wrap[data-frame-file*="Abyss Challenger"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="AbyssChallenger"] img.frame,
.pv-player-avatar[data-frame-file*="Abyss Challenger"] img.frame,
.avatar-wrap[data-frame-file*="AbyssChallenger"] > .frame-img,
.avatar-wrap[data-frame-file*="Abyss Challenger"] > .frame-img,
.avatar-wrap[data-frame-file*="AbyssChallenger"] > .frame,
.avatar-wrap[data-frame-file*="Abyss Challenger"] > .frame{
  --pv-frame-rgb:255,38,72;
  --pv-frame-alpha-min:.34;
  --pv-frame-alpha-max:.64;
  --pv-frame-alpha-mid-max:.34;
  --pv-frame-sat-max:1.40;
}

/* Abyss Master: azul. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="AbyssMaster"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Abyss%20Master"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Abyss Master"],
.pv-avatar-wrap[data-frame-file*="AbyssMaster"] > .pv-avatar-frame,
.pv-avatar-wrap[data-frame-file*="Abyss Master"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="AbyssMaster"] img.frame,
.pv-player-avatar[data-frame-file*="Abyss Master"] img.frame,
.avatar-wrap[data-frame-file*="AbyssMaster"] > .frame-img,
.avatar-wrap[data-frame-file*="Abyss Master"] > .frame-img,
.avatar-wrap[data-frame-file*="AbyssMaster"] > .frame,
.avatar-wrap[data-frame-file*="Abyss Master"] > .frame{
  --pv-frame-rgb:42,165,255;
  --pv-frame-sat-max:1.36;
}

/* Campeón Modo Pola: dorado. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Campeon%20Modo%20Pola"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Campeon Modo Pola"],
.pv-avatar-wrap[data-frame-file*="Campeon Modo Pola"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Campeon Modo Pola"] img.frame,
.avatar-wrap[data-frame-file*="Campeon Modo Pola"] > .frame-img,
.avatar-wrap[data-frame-file*="Campeon Modo Pola"] > .frame{
  --pv-frame-rgb:255,205,36;
  --pv-frame-alpha-min:.34;
  --pv-frame-alpha-max:.66;
  --pv-frame-alpha-mid-max:.36;
  --pv-frame-sat-max:1.42;
  --pv-frame-bright-max:1.065;
}

/* Donor: amarillo. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Donor"],
.pv-avatar-wrap[data-frame-file*="Donor"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Donor"] img.frame,
.avatar-wrap[data-frame-file*="Donor"] > .frame-img,
.avatar-wrap[data-frame-file*="Donor"] > .frame,
.pv-reward-frame[data-frame-file*="Donor"] > .pv-avatar-frame{
  --pv-frame-rgb:255,226,66;
  --pv-frame-sat-max:1.34;
}

/* Lord of Ratas / Lord Of Rats: morado. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Lord%20Of%20Rats"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Lord Of Rats"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Lord%20of%20Ratas"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Lord of Ratas"],
.pv-avatar-wrap[data-frame-file*="Lord Of Rats"] > .pv-avatar-frame,
.pv-avatar-wrap[data-frame-file*="Lord of Ratas"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Lord Of Rats"] img.frame,
.pv-player-avatar[data-frame-file*="Lord of Ratas"] img.frame,
.avatar-wrap[data-frame-file*="Lord Of Rats"] > .frame-img,
.avatar-wrap[data-frame-file*="Lord of Ratas"] > .frame-img,
.avatar-wrap[data-frame-file*="Lord Of Rats"] > .frame,
.avatar-wrap[data-frame-file*="Lord of Ratas"] > .frame{
  --pv-frame-rgb:188,82,255;
  --pv-frame-sat-max:1.38;
}

/* Master Rat: azul. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Master%20Rat"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Master Rat"],
.pv-avatar-wrap[data-frame-file*="Master Rat"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Master Rat"] img.frame,
.avatar-wrap[data-frame-file*="Master Rat"] > .frame-img,
.avatar-wrap[data-frame-file*="Master Rat"] > .frame{
  --pv-frame-rgb:38,160,255;
  --pv-frame-sat-max:1.36;
}

/* Owner: morado. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Owner"],
.pv-avatar-wrap[data-frame-file*="Owner"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Owner"] img.frame,
.avatar-wrap[data-frame-file*="Owner"] > .frame-img,
.avatar-wrap[data-frame-file*="Owner"] > .frame,
.avatar-wrap.frame-owner > .frame-css.owner,
.pv-avatar-wrap.frame-owner > .frame-css.owner,
.avatar-wrap[data-frame="owner"]::after,
.pv-avatar-wrap[data-frame="owner"]::after{
  --pv-frame-rgb:185,88,255;
  --pv-frame-alpha-min:.34;
  --pv-frame-alpha-max:.64;
  --pv-frame-alpha-mid-max:.34;
  --pv-frame-sat-max:1.40;
}

/* Prime Rat: rojo. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Prime%20Rat"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Prime Rat"],
.pv-avatar-wrap[data-frame-file*="Prime Rat"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Prime Rat"] img.frame,
.avatar-wrap[data-frame-file*="Prime Rat"] > .frame-img,
.avatar-wrap[data-frame-file*="Prime Rat"] > .frame{
  --pv-frame-rgb:255,36,74;
  --pv-frame-alpha-min:.34;
  --pv-frame-alpha-max:.64;
  --pv-frame-sat-max:1.40;
}

/* Speedrunner Modo Pola: anemo. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Speedrunner%20Modo%20Pola"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Speedrunner Modo Pola"],
.pv-avatar-wrap[data-frame-file*="Speedrunner Modo Pola"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Speedrunner Modo Pola"] img.frame,
.avatar-wrap[data-frame-file*="Speedrunner Modo Pola"] > .frame-img,
.avatar-wrap[data-frame-file*="Speedrunner Modo Pola"] > .frame{
  --pv-frame-rgb:80,255,205;
  --pv-frame-sat-max:1.36;
}

/* The One / THE RAT: dorado. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="TheOne"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="The%20One"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="The One"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="THE%20RAT"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="THE RAT"],
.pv-avatar-wrap[data-frame-file*="TheOne"] > .pv-avatar-frame,
.pv-avatar-wrap[data-frame-file*="The One"] > .pv-avatar-frame,
.pv-avatar-wrap[data-frame-file*="THE RAT"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="TheOne"] img.frame,
.pv-player-avatar[data-frame-file*="The One"] img.frame,
.pv-player-avatar[data-frame-file*="THE RAT"] img.frame,
.avatar-wrap[data-frame-file*="TheOne"] > .frame-img,
.avatar-wrap[data-frame-file*="The One"] > .frame-img,
.avatar-wrap[data-frame-file*="THE RAT"] > .frame-img,
.avatar-wrap[data-frame-file*="TheOne"] > .frame,
.avatar-wrap[data-frame-file*="The One"] > .frame,
.avatar-wrap[data-frame-file*="THE RAT"] > .frame{
  --pv-frame-rgb:255,210,32;
  --pv-frame-alpha-min:.36;
  --pv-frame-alpha-max:.68;
  --pv-frame-alpha-mid-max:.38;
  --pv-frame-alpha-outer-max:.18;
  --pv-frame-sat-max:1.45;
  --pv-frame-bright-max:1.075;
}

/* VIP: diamante. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="VIP"],
.pv-avatar-wrap[data-frame-file*="VIP"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="VIP"] img.frame,
.avatar-wrap[data-frame-file*="VIP"] > .frame-img,
.avatar-wrap[data-frame-file*="VIP"] > .frame,
.pv-reward-frame[data-frame-file*="VIP"] > .pv-avatar-frame{
  --pv-frame-rgb:165,244,255;
  --pv-frame-alpha-min:.33;
  --pv-frame-alpha-max:.62;
  --pv-frame-alpha-mid-max:.34;
  --pv-frame-sat-max:1.30;
  --pv-frame-bright-max:1.07;
}

/* Winner Team BLACK: aura roja oscura visible sobre fondos negros. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Winner%20Team%20BLACK"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Winner Team BLACK"],
.pv-avatar-wrap[data-frame-file*="Winner Team BLACK"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Winner Team BLACK"] img.frame,
.avatar-wrap[data-frame-file*="Winner Team BLACK"] > .frame-img,
.avatar-wrap[data-frame-file*="Winner Team BLACK"] > .frame{
  --pv-frame-rgb:155,18,32;
  --pv-frame-shadow:.70;
  --pv-frame-alpha-min:.45;
  --pv-frame-alpha-max:.78;
  --pv-frame-alpha-mid-max:.36;
  --pv-frame-alpha-outer-max:.18;
  --pv-frame-sat-max:1.18;
  --pv-frame-bright-min:1.03;
  --pv-frame-bright-max:1.09;
}

/* Winner Team WHITE: blanco. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Winner%20Team%20WHITE"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Winner Team WHITE"],
.pv-avatar-wrap[data-frame-file*="Winner Team WHITE"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Winner Team WHITE"] img.frame,
.avatar-wrap[data-frame-file*="Winner Team WHITE"] > .frame-img,
.avatar-wrap[data-frame-file*="Winner Team WHITE"] > .frame{
  --pv-frame-rgb:255,255,255;
  --pv-frame-alpha-min:.30;
  --pv-frame-alpha-max:.58;
  --pv-frame-alpha-mid-max:.30;
  --pv-frame-sat-max:1.10;
  --pv-frame-bright-max:1.075;
}

/* Marcos adicionales del catálogo de ratas. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Fighter%20Rat"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Fighter Rat"],
.pv-avatar-wrap[data-frame-file*="Fighter Rat"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Fighter Rat"] img.frame,
.avatar-wrap[data-frame-file*="Fighter Rat"] > .frame-img,
.avatar-wrap[data-frame-file*="Fighter Rat"] > .frame{
  --pv-frame-rgb:255,126,28;
  --pv-frame-sat-max:1.35;
}
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Duelist%20Rat"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Duelist Rat"],
.pv-avatar-wrap[data-frame-file*="Duelist Rat"] > .pv-avatar-frame,
.pv-player-avatar[data-frame-file*="Duelist Rat"] img.frame,
.avatar-wrap[data-frame-file*="Duelist Rat"] > .frame-img,
.avatar-wrap[data-frame-file*="Duelist Rat"] > .frame{
  --pv-frame-rgb:36,255,140;
  --pv-frame-sat-max:1.36;
}



/* Ajuste de respiración del aura.
   El brillo baja, sube y vuelve a reposo sin saturar el marco. */
.pv-avatar-frame,
.avatar-frame,
.frame-img,
.pv-player-avatar img.frame,
.avatar-wrap > img.frame,
.avatar-wrap.has-frame > img.frame,
.avatar-wrap.has-frame > .frame,
.avatar-wrap[data-frame-file] > .frame,
.avatar-wrap[data-frame-file] > .frame-img,
.pv-avatar-wrap[data-frame-file] > .pv-avatar-frame,
.pv-reward-frame > .pv-avatar-frame,
img[src*="/frames/"],
img[src*="img/frames/"],
img[src*="img%2Fframes%2F"]{
  --pv-frame-inner-rest:7px !important;
  --pv-frame-inner-soft:10px !important;
  --pv-frame-inner-rise:13px !important;
  --pv-frame-inner-peak:16px !important;
  --pv-frame-mid-rest:14px !important;
  --pv-frame-mid-soft:18px !important;
  --pv-frame-mid-rise:23px !important;
  --pv-frame-mid-peak:28px !important;
  --pv-frame-outer-rest:24px !important;
  --pv-frame-outer-soft:30px !important;
  --pv-frame-outer-rise:36px !important;
  --pv-frame-outer-peak:42px !important;
  --pv-frame-alpha-rest:.08 !important;
  --pv-frame-alpha-soft:.22 !important;
  --pv-frame-alpha-rise:.36 !important;
  --pv-frame-alpha-peak:.48 !important;
  --pv-frame-alpha-mid-rest:.018 !important;
  --pv-frame-alpha-mid-soft:.065 !important;
  --pv-frame-alpha-mid-rise:.135 !important;
  --pv-frame-alpha-mid-peak:.215 !important;
  --pv-frame-alpha-outer-rest:.000 !important;
  --pv-frame-alpha-outer-soft:.015 !important;
  --pv-frame-alpha-outer-rise:.035 !important;
  --pv-frame-alpha-outer-peak:.070 !important;
  --pv-frame-sat-rest:1.06 !important;
  --pv-frame-sat-soft:1.12 !important;
  --pv-frame-sat-rise:1.18 !important;
  --pv-frame-sat-peak:1.24 !important;
  --pv-frame-bright-rest:1.00 !important;
  --pv-frame-bright-soft:1.012 !important;
  --pv-frame-bright-rise:1.024 !important;
  --pv-frame-bright-peak:1.036 !important;
  animation-duration:2.85s !important;
  animation-timing-function:linear !important;
}

/* Dorados, diamante y blanco: brillo controlado. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Campeon%20Modo%20Pola"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Campeon Modo Pola"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="TheOne"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="The%20One"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="The One"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="THE%20RAT"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="THE RAT"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="VIP"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Winner%20Team%20WHITE"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Winner Team WHITE"]{
  --pv-frame-alpha-peak:.52 !important;
  --pv-frame-alpha-mid-peak:.245 !important;
  --pv-frame-alpha-outer-peak:.085 !important;
  --pv-frame-bright-peak:1.045 !important;
}

/* Winner Team BLACK: presencia roja oscura sobre fondos negros. */
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Winner%20Team%20BLACK"],
:is(.pv-avatar-frame,.frame-img,.avatar-frame,.frame,img)[src*="Winner Team BLACK"]{
  --pv-frame-alpha-rest:.12 !important;
  --pv-frame-alpha-soft:.28 !important;
  --pv-frame-alpha-rise:.42 !important;
  --pv-frame-alpha-peak:.58 !important;
  --pv-frame-alpha-mid-peak:.255 !important;
  --pv-frame-alpha-outer-peak:.095 !important;
  --pv-frame-bright-peak:1.055 !important;
}

@media (prefers-reduced-motion: reduce){
  .pv-avatar-frame,
  .avatar-frame,
  .frame-img,
  .pv-player-avatar img.frame,
  .avatar-wrap > img.frame,
  .avatar-wrap.has-frame > img.frame,
  .avatar-wrap.has-frame > .frame,
  .avatar-wrap[data-frame-file] > .frame,
  .avatar-wrap[data-frame-file] > .frame-img,
  .pv-avatar-wrap[data-frame-file] > .pv-avatar-frame,
  .pv-reward-frame > .pv-avatar-frame,
  img[src*="/frames/"],
  img[src*="img/frames/"],
  img[src*="img%2Fframes%2F"],
  .avatar-wrap.frame-owner > .frame-css.owner,
  .pv-avatar-wrap.frame-owner > .frame-css.owner,
  .avatar-wrap[data-frame="owner"]::after,
  .pv-avatar-wrap[data-frame="owner"]::after{
    animation:none !important;
  }
}
