.medallion{border-radius:30%;background:linear-gradient(145deg,rgb(var(--medal-light)),rgb(var(--medal-deep)));box-shadow:0 1px 0 rgb(255 255 255/.35) inset,0 -1px 0 rgb(0 0 0/.25) inset,0 6px 16px -8px rgb(var(--medal-glow)/.75);overflow:hidden;isolation:isolate;transform:rotate(0deg)}.medallion-face{position:absolute;inset:var(--medal-ring);border-radius:27%;background:radial-gradient(120% 90% at 30% 15%,rgb(255 255 255/.28),transparent 55%),linear-gradient(160deg,rgb(var(--medal-deep)/.9),rgb(var(--medal-light)/.75));color:rgb(255 255 255)}.medallion-icon{filter:drop-shadow(0 1px 1px rgb(0 0 0/.35))}.medallion-locked{filter:grayscale(1) brightness(.55);box-shadow:none;opacity:.6}.medallion-shine:after{content:"";position:absolute;inset:-40%;background:linear-gradient(105deg,transparent 40%,rgb(255 255 255/.55) 50%,transparent 60%);transform:translateX(-120%);animation:medallion-sheen 4.5s ease-in-out infinite;animation-delay:var(--sheen-delay,.8s);pointer-events:none;z-index:1}@keyframes medallion-sheen{0%,62%{transform:translateX(-120%)}82%,to{transform:translateX(120%)}}.flame-lit .flame-outer{transform-origin:50% 90%;animation:flame-flicker 1.6s ease-in-out infinite}.flame-lit .flame-inner{transform-origin:50% 90%;animation:flame-flicker 1.1s ease-in-out infinite reverse}@keyframes flame-flicker{0%,to{transform:scale(1) rotate(0deg)}25%{transform:scale(.96,1.05) rotate(-2deg)}50%{transform:scale(1.03,.97) rotate(1.5deg)}75%{transform:scale(.98,1.03) rotate(-1deg)}}.flame-risk{animation:flame-breathe 2.4s ease-in-out infinite}@keyframes flame-breathe{0%,to{opacity:1;filter:drop-shadow(0 0 0 rgb(245 158 11/0))}50%{opacity:.7;filter:drop-shadow(0 0 6px rgb(245 158 11/.65))}}.xp-bar-fill{position:relative;transition:width .9s cubic-bezier(.22,1,.36,1);background:linear-gradient(90deg,rgb(var(--primary)),rgb(var(--accent)));overflow:hidden}.xp-bar-fill:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgb(255 255 255/.35),transparent);transform:translateX(-100%);animation:xp-shimmer 2.8s ease-in-out infinite}@keyframes xp-shimmer{0%,40%{transform:translateX(-100%)}to{transform:translateX(100%)}}.level-ring-progress{transition:stroke-dashoffset .9s cubic-bezier(.22,1,.36,1)}.pop-in{animation:pop-in .42s cubic-bezier(.34,1.56,.64,1) both}@keyframes pop-in{0%{opacity:0;transform:scale(.6) translateY(6px)}to{opacity:1;transform:scale(1) translateY(0)}}.toast-in{animation:toast-in .38s cubic-bezier(.22,1,.36,1) both}.toast-out{animation:toast-out .26s ease-in both}@keyframes toast-in{0%{opacity:0;transform:translateY(14px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-out{to{opacity:0;transform:translateY(8px) scale(.98)}}.xp-float{animation:xp-float 1.4s cubic-bezier(.22,1,.36,1) both}@keyframes xp-float{0%{opacity:0;transform:translateY(6px) scale(.8)}20%{opacity:1;transform:translateY(-4px) scale(1.08)}70%{opacity:1;transform:translateY(-16px) scale(1)}to{opacity:0;transform:translateY(-26px) scale(.96)}}.vote-burst{position:absolute;left:50%;top:50%;width:0;height:0;pointer-events:none}.vote-burst>span{position:absolute;left:-4px;top:-4px;width:8px;height:8px;border-radius:9999px;background:rgb(var(--danger));animation:vote-burst .7s cubic-bezier(.22,1,.36,1) both}.vote-burst>span:nth-child(2n){background:rgb(var(--gold));width:6px;height:6px}@keyframes vote-burst{0%{opacity:1;transform:rotate(var(--burst-angle)) translateY(0) scale(1)}to{opacity:0;transform:rotate(var(--burst-angle)) translateY(-30px) scale(.4)}}.heart-thump{animation:heart-thump .6s cubic-bezier(.34,1.56,.64,1)}@keyframes heart-thump{0%{transform:scale(1)}30%{transform:scale(1.45)}60%{transform:scale(.92)}to{transform:scale(1)}}.check-pop{animation:check-pop .52s cubic-bezier(.34,1.56,.64,1) both}@keyframes check-pop{0%{transform:scale(0) rotate(-30deg)}to{transform:scale(1) rotate(0deg)}}.level-up-glow{animation:level-up-glow 2.2s ease-in-out infinite}@keyframes level-up-glow{0%,to{box-shadow:0 0 0 0 rgb(var(--primary)/0),0 20px 50px -20px rgb(var(--primary)/.6)}50%{box-shadow:0 0 0 10px rgb(var(--primary)/.12),0 20px 60px -16px rgb(var(--primary)/.8)}}.medal-reveal{animation:medal-reveal .9s cubic-bezier(.34,1.56,.64,1) both}@keyframes medal-reveal{0%{opacity:0;transform:scale(.3) rotate(-25deg)}60%{opacity:1;transform:scale(1.12) rotate(6deg)}to{transform:scale(1) rotate(0deg)}}.lift-on-hover{transition:transform .2s cubic-bezier(.22,1,.36,1),box-shadow .2s ease}.lift-on-hover:hover{transform:translateY(-2px);box-shadow:var(--shadow-elevated)}