.win { z-index: 5; }
.confetti-layer { position: fixed; inset: 0; overflow: hidden; pointer-events: none; z-index: 4; }
.confetti-piece { position: absolute; top: -8vh; left: var(--x); width: var(--w); height: var(--h); border-radius: var(--radius); background: var(--color); opacity: 0; animation: confetti-fall var(--duration) var(--delay) cubic-bezier(.2,.7,.4,1) forwards; }
.confetti-piece:nth-child(3n) { clip-path: polygon(50% 0,100% 100%,0 100%); }
.confetti-piece:nth-child(5n) { border-radius: 50%; }
@keyframes confetti-fall {
  0% { opacity: 1; transform: translate3d(0,-10vh,0) rotate(0); }
  45% { transform: translate3d(var(--drift),48vh,0) rotate(var(--spin)); }
  100% { opacity: .9; transform: translate3d(calc(var(--drift) * -.4),112vh,0) rotate(calc(var(--spin) * 2.2)); }
}
@media (prefers-reduced-motion: reduce) { .confetti-piece { animation-duration: .8s; } }
.celebration-glow { background: radial-gradient(circle at center, #f2c14e22, transparent 48%); animation: party-glow 1.1s ease-in-out 4 alternate; }
.celebration-burst { position:absolute;left:var(--bx);top:var(--by);width:8px;height:8px;border-radius:50%;box-shadow:0 -55px var(--bc),39px -39px var(--bc),55px 0 var(--bc),39px 39px var(--bc),0 55px var(--bc),-39px 39px var(--bc),-55px 0 var(--bc),-39px -39px var(--bc);animation:firework 1.25s var(--bd) ease-out both; }
.ranking { width:min(390px,80vw);margin:18px auto 22px;display:grid;gap:7px;text-align:left;max-height:220px;overflow:auto; }
.rank-row { display:grid;grid-template-columns:32px 12px 1fr auto;align-items:center;gap:8px;padding:10px 13px;border-radius:11px;background:#f1f6f5;color:var(--ink);font-size:13px; }
.rank-row.winner { background:linear-gradient(100deg,#fff1bc,#ffe2b7);box-shadow:0 5px 15px #e7a83433; }
.rank-row strong { color:var(--coral);font-size:12px; }.rank-place{text-align:center;font-weight:900}.rank-row .dot{margin:0}
@keyframes firework { 0%{opacity:0;transform:scale(.05)} 20%{opacity:1} 100%{opacity:0;transform:scale(1.7)} }
@keyframes party-glow { from{background-color:transparent} to{background-color:#f2c14e18} }
