@keyframes spinCoin{0%{transform:perspective(900px)rotateY(0)}to{transform:perspective(900px)rotateY(360deg)}}@keyframes spinCoinSlow{0%{transform:perspective(900px)rotateY(0)}to{transform:perspective(900px)rotateY(360deg)}}@keyframes badgeRewardIdle{0%,to{filter:brightness(1.05)saturate(1.12);transform:perspective(700px)rotateY(-15deg)}50%{filter:brightness(1.2)saturate(1.22);transform:perspective(700px)rotateY(15deg)}}@keyframes shineSweep{0%{opacity:0;left:-80%}30%{opacity:.7}70%{opacity:.7}to{opacity:0;left:150%}}@keyframes glowPulse{0%,to{box-shadow:0 0 20px var(--badge-glow), 0 0 40px var(--badge-glow)}50%{box-shadow:0 0 40px var(--badge-glow), 0 0 80px var(--badge-glow)}}@keyframes modalFadeIn{0%{opacity:0}to{opacity:1}}@keyframes badgeScaleIn{0%{opacity:0;transform:scale(.4)rotateY(180deg)}60%{opacity:1;transform:scale(1.12)rotateY(10deg)}to{opacity:1;transform:scale(1)rotateY(0)}}@keyframes sparkleFloat{0%{opacity:0;transform:translateY(0)scale(0)}30%{opacity:1;transform:translateY(-18px)scale(1.1)}to{opacity:0;transform:translateY(-50px)scale(.3)}}@keyframes finalCrossRays{0%,to{opacity:.3;transform:scale(1)rotate(0)}50%{opacity:.7;transform:scale(1.15)rotate(15deg)}}@keyframes crossFlame{0%,to{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}@keyframes crossFlameInner{0%{opacity:.55;transform:scale(.95)}to{opacity:.95;transform:scale(1.12)}}@keyframes textFadeIn{0%{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}@keyframes crystalPulse{0%,to{filter:brightness()saturate()}50%{filter:brightness(1.35)saturate(1.5)}}@keyframes earnedCardGlow{0%,to{box-shadow:0 0 8px #c9a84c2e,0 2px 12px #0006}50%{box-shadow:0 0 18px #c9a84c61,0 2px 18px #00000080}}@keyframes specularSweep{0%{opacity:0;left:-120%}20%{opacity:.85}80%{opacity:.85}to{opacity:0;left:180%}}@keyframes crystalShine{0%{opacity:0;left:-80%}40%{opacity:.9}60%{opacity:.9}to{opacity:0;left:150%}}@keyframes crossGlow{0%,to{box-shadow:0 0 30px #ffd700e6,0 0 70px #ffd70080,0 0 120px #ffffff4d}50%{box-shadow:0 0 60px gold,0 0 120px #ffd700b3,0 0 200px #ffffff80}}@keyframes crossRaysSpin{0%{opacity:.4;transform:rotate(0)}to{opacity:.4;transform:rotate(360deg)}}@keyframes crossFloatIn{0%{opacity:0;transform:scale(.3)translateY(30px)}60%{opacity:1;transform:scale(1.08)translateY(-5px)}to{opacity:1;transform:scale(1)translateY(0)}}.badge-coin{filter:drop-shadow(0 6px 14px #00000073);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;animation:3s linear infinite paused spinCoin;display:flex;position:relative;overflow:hidden}.badge-coin:before{content:"";pointer-events:none;z-index:1;mix-blend-mode:soft-light;background:conic-gradient(from 140deg,#ffffff73 0deg,#ffffff0a 48deg,#00000057 104deg,#fff3 168deg,#0000004d 232deg,#ffffff6b 300deg,#ffffff73 360deg);border-radius:50%;position:absolute;inset:0}.badge-coin--spinning{animation-play-state:running}.badge-coin--slow{filter:brightness(1.12)saturate(1.15)contrast(1.05)drop-shadow(0 8px 18px #00000080);animation:8s linear infinite spinCoinSlow}.badge-coin--reward{box-shadow:0 0 30px var(--badge-glow), 0 0 64px var(--badge-glow), inset 0 2px 8px #ffffff80;animation:4.5s ease-in-out infinite badgeRewardIdle}.badge-coin:after{content:"";pointer-events:none;z-index:1;background:radial-gradient(circle at 50% 20%,#ffffff57 0%,#0000 48%),radial-gradient(circle at 50% 106%,#ffffff1a 0%,#0000 42%),radial-gradient(circle at 18% 62%,#ffffff14 0%,#0000 26%);border-radius:50%;position:absolute;inset:0;box-shadow:inset 0 0 0 2px #ffffff8c,inset 0 0 0 5px #e8c46efa,inset 0 0 0 8px #966e28f2,inset 0 8px 14px #ffffff4d,inset 0 -14px 20px #00000073}.badge-coin--locked{filter:grayscale()brightness(.45)drop-shadow(0 4px 10px #0006);animation:none!important}.badge-coin__shine{pointer-events:none;z-index:4;background:linear-gradient(90deg,#0000 0%,#ffffff47 30%,#ffffffb8 50%,#ffffff47 70%,#0000 100%);width:50%;animation:3.2s ease-in-out infinite specularSweep;position:absolute;top:0;bottom:0}.badge-coin--glow{animation:2s ease-in-out infinite glowPulse,3s linear infinite spinCoin}.badge-coin--bronze{--badge-glow:#cd7f32a6;background:radial-gradient(circle at 35% 35%,#e8a04c,#cd7f32 50%,#7a4010);border:4px solid #9b5e1a;box-shadow:0 0 18px #cd7f3280,inset 0 2px 6px #ffc86459}.badge-coin--silver{--badge-glow:#c0c0c0b3;background:radial-gradient(circle at 35% 35%,#f0f0f0,silver 50%,#707070);border:4px solid #999;box-shadow:0 0 18px #c0c0c080,inset 0 2px 6px #ffffff80}.badge-coin--gold{--badge-glow:#ffd700b3;background:radial-gradient(circle at 35% 35%,#fff176,gold 45%,#a07700);border:4px solid #c8a000;box-shadow:0 0 24px #ffd70099,inset 0 2px 6px #fffa9680}.badge-coin--diamond{--badge-glow:#b9f2ffcc;background:radial-gradient(circle at 35% 35%,#e8f8ff,#b9f2ff 45%,#28b);border:4px solid #4fc3f7;box-shadow:0 0 24px #b9f2ffb3,inset 0 2px 6px #ffffffb3}.badge-coin--ruby{--badge-glow:#e0115fa6;background:radial-gradient(circle at 35% 35%,#ff4d80,#e0115f 50%,#700020);border:4px solid #9b1942;box-shadow:0 0 22px #e0115f8c,inset 0 2px 6px #ff96b466}.badge-coin--emerald{--badge-glow:#50c878a6;background:radial-gradient(circle at 35% 35%,#7effa8,#50c878 50%,#1a5a30);border:4px solid #2d7d46;box-shadow:0 0 22px #50c8788c,inset 0 2px 6px #96ffb466}.badge-coin--sapphire{--badge-glow:#0f52baa6;background:radial-gradient(circle at 35% 35%,#5080e8,#0f52ba 50%,#051a55);border:4px solid #0b3a82;box-shadow:0 0 22px #0f52ba8c,inset 0 2px 6px #78a0ff66}.badge-coin--amethyst{--badge-glow:#9966cca6;background:radial-gradient(circle at 35% 35%,#c490f8,#96c 50%,#450080);border:4px solid #6a0dad;box-shadow:0 0 22px #9966cc8c,inset 0 2px 6px #c896ff66}.badge-coin--onyx{--badge-glow:#78787880;background:radial-gradient(circle at 35% 35%,#606060,#353839 50%,#0a0a0a);border:4px solid #444;box-shadow:0 0 18px #64646466,inset 0 2px 6px #c8c8c833}.badge-coin--pearl{--badge-glow:#f0ead6b3;background:radial-gradient(circle at 35% 35%,#fffdf6,#f0ead6 50%,#c8b8a2);border:4px solid #d4c4a8;box-shadow:0 0 22px #f0ead699,inset 0 2px 8px #fffc}.badge-coin--whiteGold{--badge-glow:#ffdc32e6;background:radial-gradient(circle at 35% 35%,#fff,#fff5b0 40%,gold 70%,#e8b800);border:4px solid gold;box-shadow:0 0 30px #ffd700cc,0 0 60px #ffd70066,inset 0 2px 10px #ffffffe6}.badge-coin--copper{--badge-glow:#96c81eb3;background:radial-gradient(circle at 35% 35%,#d8f06e,#9ec61a 50%,#4a6006);border:4px solid #7a9a14;box-shadow:0 0 22px #96c81e8c,inset 0 2px 6px #e8ffa573}.badge-coin--dawn{--badge-glow:#ffa52dbf;background:radial-gradient(circle at 35% 35%,#ffd589,#ff9d22 48%,#b85e08);border:4px solid #db7c10;box-shadow:0 0 26px #ffa02899,inset 0 2px 6px #ffe4a580}.badge-coin--jade{--badge-glow:#00bec8b3;background:radial-gradient(circle at 35% 35%,#7ff0ec,#12b6c0 50%,#064a52);border:4px solid #0d808a;box-shadow:0 0 22px #00bec88c,inset 0 2px 6px #aafffa66}.badge-coin--crimson{--badge-glow:#d628b4b3;background:radial-gradient(circle at 35% 35%,#ff7ae0,#d228b0 50%,#6a0058);border:4px solid #97167e;box-shadow:0 0 24px #d628b48c,inset 0 2px 6px #ffb4f066}.badge-coin--rose{--badge-glow:#e85c98b3;background:radial-gradient(circle at 35% 35%,#ffa3cb,#e25c98 50%,#831343);border:4px solid #b23069;box-shadow:0 0 24px #e85c988c,inset 0 2px 6px #ffcde466}.badge-coin--midnight{--badge-glow:#6e50e1b3;background:radial-gradient(circle at 35% 35%,#9b86f0,#5b3fd6 50%,#241060);border:4px solid #3d2a95;box-shadow:0 0 24px #6e50e18c,inset 0 2px 6px #beafff61}.badge-coin--final{animation:6s linear infinite spinCoinSlow}.badge-coin__rays{z-index:0;background:conic-gradient(#ffd7002e 0deg,#0000 20deg,#ffd7002e 40deg,#0000 60deg,#ffd7002e 80deg,#0000 100deg,#ffd7002e 120deg,#0000 140deg,#ffd7002e 160deg,#0000 180deg,#ffd7002e 200deg,#0000 220deg,#ffd7002e 240deg,#0000 260deg,#ffd7002e 280deg,#0000 300deg,#ffd7002e 320deg,#0000 340deg,#ffd7002e 360deg);border-radius:50%;animation:4s ease-in-out infinite finalCrossRays;position:absolute;inset:-40%}.badge-coin__engraving{z-index:2;filter:drop-shadow(0 1.5px .5px #5a3c00d9)drop-shadow(0 -1px .5px #fff5c88c)drop-shadow(0 0 3px #0000004d);justify-content:center;align-items:center;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.badge-coin__inner-ring{z-index:3;pointer-events:none;border:1px solid #ffe29666;border-radius:50%;position:absolute;inset:14%}.badge-sparkle{pointer-events:none;background:radial-gradient(#fff 30%,gold);border-radius:50%;width:8px;height:8px;animation:1.5s ease-out forwards sparkleFloat;position:absolute}.badge-reward-modal{-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:9999;background:#000000d9;justify-content:center;align-items:center;animation:.3s modalFadeIn;display:flex;position:fixed;inset:0}.badge-reward-modal__content{flex-direction:column;align-items:center;gap:20px;width:90%;max-width:380px;padding:36px 28px;animation:.5s .3s both textFadeIn;display:flex}.badge-reward-modal__coin-wrap{justify-content:center;align-items:center;margin-bottom:8px;animation:.8s cubic-bezier(.34,1.56,.64,1) both badgeScaleIn;display:flex;position:relative}.badge-curtain{z-index:5;pointer-events:none;background:repeating-linear-gradient(90deg,#0000001a 0 6px,#0000 6px 14px),#a9842f linear-gradient(160deg,#d8b357 0%,#9c7a28 45%,#8a6a22 70%,#c19a3e 100%);width:54%;transition:transform .8s cubic-bezier(.7,0,.2,1),opacity .6s .25s;position:absolute;top:-8px;bottom:-8px;box-shadow:inset 0 0 20px #00000073}.badge-curtain--left{border-radius:4px 0 0 4px;left:-6px}.badge-curtain--right{border-radius:0 4px 4px 0;right:-6px}.badge-curtain.open{opacity:0}.badge-curtain--left.open{transform:translate(-118%)}.badge-curtain--right.open{transform:translate(118%)}.badge-countdown{z-index:6;color:#ffdf4f;text-shadow:0 3px 16px #00000080,0 0 2px #785000d9,0 1px #78500099;justify-content:center;align-items:center;font-family:Playfair Display,Georgia,serif;font-size:86px;font-weight:900;animation:.85s both badgeCountPop;display:flex;position:absolute;inset:0}@keyframes badgeCountPop{0%{opacity:0;transform:scale(.4)}30%{opacity:1;transform:scale(1.18)}70%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.85)}}.badge-confetti{z-index:6;pointer-events:none;position:absolute;inset:0;overflow:hidden}.badge-confetti-piece{opacity:0;border-radius:2px;width:9px;height:15px;animation-name:badgeConfettiFall;animation-timing-function:cubic-bezier(.2,.6,.4,1);animation-fill-mode:forwards;position:absolute;top:-16px}@keyframes badgeConfettiFall{0%{opacity:0;transform:translateY(-12px)rotate(0)}10%{opacity:1}to{opacity:.9;transform:translateY(105vh)rotate(700deg)}}.badge-gallery{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:16px;display:grid}.badge-card{text-align:center;cursor:default;border-radius:16px;flex-direction:column;align-items:center;gap:10px;padding:16px 12px;transition:transform .2s,box-shadow .2s;display:flex}.badge-card--earned{border:1px solid #c9a84c61;animation:3s ease-in-out infinite earnedCardGlow}.badge-card--earned:hover{transition:transform .2s,box-shadow .2s;transform:translateY(-3px)scale(1.02);box-shadow:0 6px 24px #c9a84c52}.badge-card--locked{opacity:.62;border:1px solid #ffffff0f}.badge-card--final{text-align:left;flex-direction:row;grid-column:1/-1;gap:20px}@media (width<=500px){.badge-gallery{grid-template-columns:repeat(2,1fr)}.badge-card--final{text-align:center;flex-direction:column}}.badge-crystal{clip-path:polygon(50% 0%,85% 15%,100% 50%,85% 85%,50% 100%,15% 85%,0% 50%,15% 15%);flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.badge-crystal:before{content:"";pointer-events:none;z-index:1;mix-blend-mode:soft-light;background:conic-gradient(from 220deg,#ffffff80 0deg,#ffffff0d 40deg,#00000059 95deg,#ffffff47 150deg,#0000004d 215deg,#ffffff73 285deg,#ffffff80 360deg);position:absolute;inset:0}.badge-crystal:after{content:"";pointer-events:none;z-index:1;background:linear-gradient(160deg,#ffffff61 0%,#0000 32%),linear-gradient(340deg,#0000005c 0%,#0000 28%);position:absolute;inset:0}.badge-crystal--locked{filter:grayscale()brightness(.35)}.badge-crystal--earned{filter:brightness(1.1)saturate(1.2);animation:3.5s ease-in-out infinite crystalPulse}.badge-crystal__shine{pointer-events:none;z-index:4;background:linear-gradient(90deg,#0000,#ffffffa6,#0000);width:40%;animation:2s ease-in-out infinite crystalShine;position:absolute;top:0;bottom:0}.badge-crystal--iron{--badge-glow:#9696a099;background:linear-gradient(135deg,#8a8a9a,#4a4a58,#7a7a8a,#2a2a35);box-shadow:0 0 20px #9696a080,inset 0 2px 8px #dcdce659}.badge-crystal--copper{--badge-glow:#b87333a6;background:linear-gradient(135deg,#d4854c,#b86a28,#e09060,#7a3a10);box-shadow:0 0 20px #b8733380,inset 0 2px 8px #ffb47859}.badge-crystal--crimson{--badge-glow:#c81e32a6;background:linear-gradient(135deg,#e84060,#a00020,#d03050,#600010);box-shadow:0 0 22px #c81e328c,inset 0 2px 8px #ff96a059}.badge-crystal--pearl{--badge-glow:#f0ead6cc;background:linear-gradient(135deg,#fffdf6,#f0ead6,#fff8ee,#d0c0a0);box-shadow:0 0 24px #f0ead6b3,inset 0 2px 10px #ffffffe6}.badge-crystal--jade{--badge-glow:#32b482a6;background:linear-gradient(135deg,#70d4a4,#1a8a5a,#50c090,#0a5030);box-shadow:0 0 22px #32b4828c,inset 0 2px 8px #96ffc859}.badge-crystal--midnight{--badge-glow:#3c3c96a6;background:linear-gradient(135deg,#4050b0,#101050,#3040a0,#080830);box-shadow:0 0 22px #3c3c968c,inset 0 2px 8px #96a0ff4d}.badge-crystal--dawn{--badge-glow:#ffb932b3;background:linear-gradient(135deg,#ffd060,#e08020,#ffb840,#a05010);box-shadow:0 0 24px #ffb93299,inset 0 2px 8px #fff09673}.badge-crystal--rose{--badge-glow:#dc508ca6;background:linear-gradient(135deg,#f080b0,#c03070,#e060a0,#801050);box-shadow:0 0 22px #dc508c8c,inset 0 2px 8px #ffb4dc59}.badge-crystal--pearlWhite{--badge-glow:#fafaffd9;background:linear-gradient(135deg,#fff,#e8e8f8,#fff,#c0c0d8);box-shadow:0 0 28px #dcdcffcc,inset 0 2px 10px #fff}.badge-crystal--topaz{--badge-glow:#ffc850b3;background:linear-gradient(135deg,#ffe080,#d4a020,#f0c040,#906000);box-shadow:0 0 24px #ffc85099,inset 0 2px 8px #fffab473}.badge-final-cross{flex-shrink:0;justify-content:center;align-items:center;display:flex;position:relative}.badge-final-cross:before{content:"";filter:blur(4px);z-index:1;pointer-events:none;background:radial-gradient(circle,#fffae18c 0%,#ffd77847 38%,#0000 70%);border-radius:50%;position:absolute;inset:-6%}.badge-final-cross--locked:before{display:none}.badge-final-cross__shape{z-index:2;filter:drop-shadow(0 2px 3px #5a37008c);clip-path:polygon(35% 0%,65% 0%,65% 35%,100% 35%,100% 65%,65% 65%,65% 100%,35% 100%,35% 65%,0% 65%,0% 35%,35% 35%);background:linear-gradient(135deg,#fffdf2 0%,#ffe89a 16%,#ffd24d 34%,#e9a417 52%,#ffcf52 70%,#fff1b0 86%,#d99412 100%);animation:2.5s ease-in-out infinite crossGlow;position:relative}.badge-final-cross__rays{pointer-events:none;z-index:0;filter:blur(3px);background:radial-gradient(62% 78% at 50% 58%,#fff8c8eb 0%,#ffc846b3 20%,#ff8c2380 38%,#ff461447 56%,#96140a1f 72%,#0000 84%);animation:1.4s ease-in-out infinite crossFlame;position:absolute;inset:-12%}.badge-final-cross__rays:after{content:"";filter:blur(2px);background:radial-gradient(55% 72% at 50% 56%,#ffffe6d9 0%,#ffaa3280 42%,#0000 72%);animation:.85s ease-in-out infinite alternate crossFlameInner;position:absolute;inset:18%}.badge-final-cross__shine{pointer-events:none;z-index:3;mix-blend-mode:screen;clip-path:polygon(35% 0%,65% 0%,65% 35%,100% 35%,100% 65%,65% 65%,65% 100%,35% 100%,35% 65%,0% 65%,0% 35%,35% 35%);background:linear-gradient(45deg,#0000 28%,#ffffff8c 44%,#fff 50%,#ffffff8c 56%,#0000 72%);animation:2.4s ease-in-out infinite shineSweep;position:absolute;inset:0}.badge-final-cross__shape{animation:2.5s ease-in-out infinite crossGlow,2.4s ease-in-out infinite crossBrighten}@keyframes crossBrighten{0%,to{filter:drop-shadow(0 2px 3px #5a37008c)brightness(1.04)saturate(1.1)}50%{filter:drop-shadow(0 2px 5px #5a370080)brightness(1.22)saturate(1.25)}}.badge-final-cross--locked .badge-final-cross__shape{filter:grayscale()brightness(.4);background:linear-gradient(135deg,#555,#333,#555,#222);animation:none}.badge-final-cross--locked .badge-final-cross__rays,.badge-final-cross--locked .badge-final-cross__shine{display:none}.badge-final-cross--gallery .badge-final-cross__shape{animation:4s ease-in-out infinite crossGlow}.badge-galaxy{background:#000;border-radius:50%;flex-shrink:0;animation:3s ease-in-out infinite galaxyGlow;position:relative;overflow:hidden;box-shadow:0 0 16px #825fff8c,0 0 38px #5032c857,inset 0 0 16px #000000d9}.badge-galaxy__spin{animation:26s linear infinite galaxySpin}@keyframes galaxySpin{to{transform:rotate(360deg)}}@keyframes galaxyGlow{0%,to{box-shadow:0 0 14px #825fff80,0 0 30px #5032c84d,inset 0 0 16px #000000d9}50%{box-shadow:0 0 26px #a078ffd9,0 0 60px #6e46eb8c,inset 0 0 16px #000c}}.badge-galaxy__star{animation:2.2s ease-in-out infinite starTwinkle}@keyframes starTwinkle{0%,to{opacity:.25}50%{opacity:1}}.badge-galaxy__shine{pointer-events:none;z-index:3;filter:blur(2px);background:linear-gradient(100deg,#0000 0%,#ffffff8c 50%,#0000 100%);width:45%;animation:3.6s ease-in-out infinite galaxyShine;position:absolute;top:-10%;bottom:-10%;left:-60%;transform:skew(-12deg)}@keyframes galaxyShine{0%{opacity:0;left:-60%}35%{opacity:.85}65%{opacity:.85}to{opacity:0;left:160%}}.badge-galaxy--locked{filter:grayscale(.7)brightness(.45);animation:none;box-shadow:inset 0 0 16px #000000e6}.badge-earth{border-radius:50%;flex-shrink:0;animation:3.4s ease-in-out infinite earthHalo;position:relative}@keyframes earthHalo{0%,to{filter:drop-shadow(0 0 5px #82cdff8c)drop-shadow(0 0 13px #ffcd6e66)drop-shadow(0 3px 7px #0000008c)}50%{filter:drop-shadow(0 0 13px #a0dcffd9)drop-shadow(0 0 30px #ffcd6ea6)drop-shadow(0 3px 7px #00000080)}}.badge-earth__spin{animation:16s linear infinite earthSpin}@keyframes earthSpin{to{transform:rotate(360deg)}}.badge-earth__gleam{pointer-events:none;z-index:3;border-radius:50%;position:absolute;inset:7%;overflow:hidden}.badge-earth__gleam:before{content:"";filter:blur(2px);background:linear-gradient(100deg,#0000 0%,#fff9 50%,#0000 100%);width:55%;height:150%;animation:3.8s ease-in-out infinite earthGleam;position:absolute;top:-25%;left:-60%;transform:skew(-15deg)}@keyframes earthGleam{0%{opacity:0;left:-60%}35%{opacity:.9}65%{opacity:.9}to{opacity:0;left:165%}}.badge-earth--locked{filter:grayscale()brightness(.45);animation:none}
