
.vm-cursor { position: fixed; top: 0; left: 0; z-index: 99998; pointer-events: none; transform: translate(-9999px,-9999px); font-family: 'Inter', sans-serif; will-change: transform; }
.vm-cursor-arrow { display: block; filter: drop-shadow(0 1px 2px rgba(0,0,0,.4)); }
.vm-cursor-pill { position: absolute; left: 18px; top: 16px; display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px 4px 6px; border-radius: 999px; background: rgba(12,16,36,.82); color: #fff; font: 800 12px/1 'Inter', sans-serif; white-space: nowrap; box-shadow: 0 3px 12px rgba(0,0,0,.3); backdrop-filter: blur(6px); opacity: 0; transition: opacity .22s ease; }
.vm-cursor-pill svg { flex: 0 0 auto; }
.vm-cursor-text { letter-spacing: .01em; }
.vm-cursor.is-moving .vm-cursor-pill { opacity: 1; }
body.vm-cursor-on.vm-cursor-on.vm-cursor-on #cvBoard,
body.vm-cursor-on.vm-cursor-on.vm-cursor-on #cvBoard *,
.vm-cursor { display: none !important; }

.vm-celebrate-root { position: fixed; inset: 0; z-index: 99990; display: flex; align-items: center; justify-content: center; background: radial-gradient(circle at 50% 40%, rgba(12,16,36,.62), rgba(12,16,36,.86)); overflow: hidden; font-family: 'Inter', sans-serif; color: #fff; opacity: 1; transition: opacity .5s ease; animation: vm-cel-fade .4s ease; }
.vm-celebrate-root.out { opacity: 0; pointer-events: none; }
@keyframes vm-cel-fade { from { opacity: 0; } to { opacity: 1; } }
.vm-celebrate-curtain { position: absolute; inset: 0; pointer-events: none; }
.vm-celebrate-curtain::before, .vm-celebrate-curtain::after { content: ''; position: absolute; top: 0; bottom: 0; width: 50%; background: linear-gradient(90deg, #0b3d1f, #11602f); box-shadow: inset 0 0 60px rgba(0,0,0,.5); transition: transform 1s cubic-bezier(.7,0,.3,1); }
.vm-celebrate-curtain::before { left: 0; transform: translateX(-100%); }
.vm-celebrate-curtain::after { right: 0; transform: translateX(100%); }
.vm-celebrate-curtain.in::before, .vm-celebrate-curtain.in::after { transform: translateX(0); }
.vm-celebrate-curtain.open::before { transform: translateX(-100%); }
.vm-celebrate-curtain.open::after { transform: translateX(100%); }
.vm-celebrate-stage { position: relative; z-index: 2; display: flex; flex-direction: column; align-items: center; gap: 1.1rem; max-width: 90vw; text-align: center; }
.vm-celebrate-card { position: relative; z-index: 2; text-align: center; color: #fff; font-family: 'Inter', sans-serif; transform: translateY(8px); animation: vm-cel-pop .6s cubic-bezier(.2,1.3,.4,1) both; }
@keyframes vm-cel-pop { from { transform: translateY(40px) scale(.86); opacity: 0; } to { transform: translateY(0) scale(1); opacity: 1; } }
.vm-celebrate-trophy { filter: drop-shadow(0 6px 24px rgba(201,162,39,.6)); animation: vm-cel-trophy 2.4s ease-in-out infinite; }
@keyframes vm-cel-trophy { 0%,100% { transform: translateY(0) rotate(-2deg); } 50% { transform: translateY(-8px) rotate(2deg); } }
.vm-celebrate-kicker { margin-top: 10px; font: 800 13px/1 'Inter', sans-serif; letter-spacing: .14em; text-transform: uppercase; color: #E9CF6A; }
.vm-celebrate-title { margin-top: 6px; font: 900 46px/1 'Inter', sans-serif; background: linear-gradient(180deg, #E9CF6A, #C9A227); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; }
.vm-celebrate-names { margin-top: 10px; font: 700 18px/1.3 'Inter', sans-serif; color: #fff; opacity: .92; }

.vm-celebrate-prize { display: inline-flex; align-items: center; gap: .5rem; padding: .35rem .9rem; border-radius: 999px; background: rgba(201,162,39,.14); border: 1px solid rgba(201,162,39,.4); color: #fff; font: 800 15px/1 'Inter', sans-serif; opacity: 0; transform: translateY(16px) scale(.92); }
.vm-celebrate-prize.pop { animation: vm-cel-pop .5s cubic-bezier(.2,1.3,.4,1) forwards; }
.vm-celebrate-prize-dot { width: .55rem; height: .55rem; border-radius: 50%; background: #E9CF6A; box-shadow: 0 0 8px #C9A227; }

.vm-confetti-host { position: fixed; inset: 0; pointer-events: none; z-index: 100000; overflow: hidden; }
.vm-confetti-piece { position: fixed; width: 9px; height: 14px; border-radius: 2px; will-change: transform, opacity; animation: vm-confetti-fall var(--tcf-dur, 2.4s) cubic-bezier(.2,.6,.3,1) forwards; }
@keyframes vm-confetti-fall { 0% { opacity: 1; transform: translate(0,0) rotate(0); } 100% { opacity: 0; transform: translate(var(--tcf-x,0), 90vh) rotate(var(--tcf-r,540deg)); } }
@media (prefers-reduced-motion: reduce) { .vm-confetti-piece { animation: none; opacity: 0; } }
