.rc-rank-particles{position:absolute;inset:0;overflow:hidden;pointer-events:none;contain:paint}
.rc-rank-particles>i{position:absolute;left:var(--spark-x);top:var(--spark-y);width:var(--spark-size);height:var(--spark-size);border-radius:1px;background:rgb(var(--rank-rgb));box-shadow:0 0 9px rgba(var(--rank-rgb),.3);opacity:.12;animation:rc-rank-spark var(--spark-duration) ease-in-out var(--spark-delay) infinite;animation-play-state:paused}
.rc-rank-particles.is-active>i{animation-play-state:running}
@keyframes rc-rank-spark{0%{transform:translate3d(0,18px,0) rotate(0);opacity:0}25%{opacity:.22}65%{opacity:.42}85%{opacity:.1}100%{transform:translate3d(12px,-72px,0) rotate(90deg);opacity:0}}
@media(prefers-reduced-motion:reduce){.rc-rank-particles{display:none}.rc-rank-particles>i{animation:none}}
@media(max-width:1023px),(hover:none),(pointer:coarse){.rc-rank-particles{display:none}.rc-rank-particles>i{animation:none}}
.rc-shop-rank-card{--rank-rgb:var(--shop-rgb,237,187,107)}
.rc-shop-rank-art>.rc-rank-particles{z-index:1}
.rc-shop-rank-art>.rc-rank-particles>i{border-radius:50%;box-shadow:0 0 12px rgba(var(--rank-rgb),.65);animation-name:rc-shop-rank-spark}
@keyframes rc-shop-rank-spark{0%{transform:translate3d(0,18px,0) scale(.6);opacity:0}22%{opacity:.55}55%{opacity:.9}82%{opacity:.3}100%{transform:translate3d(14px,-95px,0) scale(1);opacity:0}}
@media(prefers-reduced-motion:reduce){.rc-rank-particles{display:none}}
.rc-podium-place-1{--rank-rgb:237,196,117}.rc-podium-place-2{--rank-rgb:196,207,220}.rc-podium-place-3{--rank-rgb:201,149,107}
.rc-podium-avatar>.rc-rank-particles{z-index:2;inset:0 14px;mask-image:linear-gradient(transparent,#000 15%,#000 90%,transparent)}
.rc-podium-avatar>.rc-rank-particles>i{border-radius:50%;box-shadow:0 0 12px rgba(var(--rank-rgb),.65);animation-name:rc-podium-spark}
@keyframes rc-podium-spark{0%{transform:translate3d(0,20px,0) scale(.6);opacity:0}25%{opacity:.45}60%{opacity:.75}85%{opacity:.25}100%{transform:translate3d(12px,-80px,0) scale(1);opacity:0}}

/* Four-point stars share the existing CSS-only animation and visibility guards. */
.rc-rank-particles>i,.rc-shop-rank-art>.rc-rank-particles>i,.rc-podium-avatar>.rc-rank-particles>i{width:calc(var(--spark-size) * 2 + 1px);height:calc(var(--spark-size) * 2 + 1px);border-radius:0;clip-path:polygon(50% 0,61% 38%,100% 50%,61% 62%,50% 100%,39% 62%,0 50%,39% 38%)}
