/* Shared rarity accents: short edge glints, long quiet intervals. */
.rift-card[data-rarity=epic], .rift-portrait-panel[data-rarity=epic] {
  --prestige-period: 28s;
  --prestige-delay: -4s;
  --prestige-strength: .5;
}
.rift-card[data-rarity=legendary], .rift-portrait-panel[data-rarity=legendary] {
  --prestige-period: 21s;
  --prestige-delay: -9s;
  --prestige-strength: .8;
}
.rift-card:nth-child(3n+1) { --prestige-delay: -13s; }
.rift-card:nth-child(3n+2) { --prestige-delay: -19s; }
:is(.rift-card[data-rarity=epic], .rift-card[data-rarity=legendary]) .rift-card-art > .rarity-sparks,
.rift-portrait-panel:is([data-rarity=epic], [data-rarity=legendary]) > .rarity-sparks {
  isolation: isolate;
  border-radius: inherit;
}
:is(.rift-card-art, .rift-portrait-panel) > .rarity-sparks::after {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: inset 0 0 0 1px currentColor, inset 0 0 18px rgba(var(--rarity-rgb),.28);
  opacity: 0;
  animation: prestige-edge var(--prestige-period) ease-in-out var(--prestige-delay) infinite;
}
/* Legendary alone gets a translucent ribbon; no full-image flash. */
:is(.rift-card[data-rarity=legendary] .rift-card-art, .rift-portrait-panel[data-rarity=legendary]) > .rarity-sparks::before {
  content: '';
  position: absolute;
  inset: -30% -80%;
  background: linear-gradient(110deg, transparent 46%, #ffe3d80a 49%, #fff4e82e 50%, #ffe3d80a 51%, transparent 54%);
  opacity: 0;
  transform: translateX(-45%);
  animation: prestige-ribbon var(--prestige-period) ease-in-out var(--prestige-delay) infinite;
}
:is(.rift-card[data-rarity] .rift-card-art, .rift-portrait-panel[data-rarity]) > .rarity-sparks i {
  width: 7px;
  height: 7px;
  animation-name: prestige-star;
  animation-duration: var(--prestige-period);
  animation-delay: var(--prestige-delay);
}
:is(.rift-card[data-rarity] .rift-card-art, .rift-portrait-panel[data-rarity]) > .rarity-sparks i:nth-child(2) { animation-delay: calc(var(--prestige-delay) - 8s); }
:is(.rift-card[data-rarity] .rift-card-art, .rift-portrait-panel[data-rarity]) > .rarity-sparks i:nth-child(3) { animation-delay: calc(var(--prestige-delay) - 16s); }
:is(.rift-card-art, .rift-portrait-panel) > .rarity-sparks i::before { height: 11px; }
:is(.rift-card-art, .rift-portrait-panel) > .rarity-sparks i::after { width: 11px; }
@keyframes prestige-edge {
  0%, 82%, 94%, 100% { opacity: 0; }
  87% { opacity: var(--prestige-strength); }
}
@keyframes prestige-star {
  0%, 82%, 92%, 100% { opacity: 0; transform: scale(.5); }
  86% { opacity: var(--prestige-strength); transform: scale(1.15); }
  89% { opacity: .18; transform: scale(.7); }
}
@keyframes prestige-ribbon {
  0%, 81% { opacity: 0; transform: translateX(-45%); }
  83% { opacity: .7; }
  90% { opacity: .7; transform: translateX(45%); }
  92%, 100% { opacity: 0; transform: translateX(45%); }
}
@media(prefers-reduced-motion:reduce) {
  :is(.rift-card-art, .rift-portrait-panel) > .rarity-sparks { display: none; }
}
