.fx-popup{position:absolute;transform:translate(-50%,-50%);font-weight:800;white-space:nowrap;text-shadow:0 0 12px rgba(0,0,0,.8);animation:fx-float-up 1.1s ease-out forwards}@keyframes fx-float-up{0%{opacity:0;transform:translate(-50%,-30%) scale(.6)}15%{opacity:1;transform:translate(-50%,-60%) scale(1.15)}to{opacity:0;transform:translate(-50%,-220%) scale(1)}}.fx-particle{position:absolute;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:9999px;animation:fx-burst .8s cubic-bezier(.1,.8,.3,1) forwards}@keyframes fx-burst{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(var(--dx),var(--dy)) scale(.3)}}.fx-ring{position:absolute;width:20px;height:20px;margin:-10px 0 0 -10px;border-radius:9999px;border:3px solid;animation:fx-ring .7s ease-out forwards}@keyframes fx-ring{0%{opacity:1;transform:scale(.5)}to{opacity:0;transform:scale(5)}}.fx-shake{animation:fx-shake .4s}@keyframes fx-shake{0%,to{transform:none}20%{transform:translateX(-10px)}40%{transform:translateX(9px)}60%{transform:translateX(-6px)}80%{transform:translateX(3px)}}.fx-banner{animation:fx-banner 1.4s ease-in-out forwards}@keyframes fx-banner{0%{opacity:0;transform:scale(1.8);letter-spacing:.4em}25%{opacity:1;transform:scale(1);letter-spacing:.05em}75%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.9)}}.fx-pop{animation:fx-pop .5s cubic-bezier(.2,1.6,.4,1) both}@keyframes fx-pop{0%{opacity:0;transform:scale(.2) rotate(-25deg)}to{opacity:1;transform:none}}.fx-rise{animation:fx-rise .6s cubic-bezier(.2,.7,.2,1) both}@keyframes fx-rise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}.fx-leave{animation:fx-leave .45s ease-in forwards}@keyframes fx-leave{to{opacity:0;transform:translateY(-40px) scale(.95)}}.fx-confetti{position:fixed;top:-20px;left:var(--x);width:9px;height:14px;z-index:50;pointer-events:none;animation:fx-fall var(--t,2.4s) cubic-bezier(.3,.6,.6,1) forwards}@keyframes fx-fall{to{transform:translate(var(--drift),105vh) rotate(var(--spin));opacity:.6}}.fx-glow{animation:fx-glow 1.6s ease-in-out infinite alternate}@keyframes fx-glow{0%{box-shadow:0 0 0 rgba(250,210,80,0)}to{box-shadow:0 0 28px rgba(250,210,80,.45)}}.fx-card{transition:transform .25s,box-shadow .25s}.fx-card:hover{transform:translateY(-6px);box-shadow:0 12px 40px rgba(110,140,255,.25)}@media (prefers-reduced-motion:reduce){.fx-glow,.fx-shake,.fx-starfield:after,.fx-starfield:before{animation:none}}.fx-sky{position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse at 20% 0,rgba(70,90,180,.22),transparent 60%),radial-gradient(ellipse at 90% 100%,rgba(120,60,160,.18),transparent 55%),#0a0e1c}.fx-sky-layer{position:absolute;inset:0;width:100%;height:100%;animation:fx-sky-twinkle 6s ease-in-out infinite alternate}.fx-sky-layer-alt{animation-delay:-3s;animation-duration:7s}@keyframes fx-sky-twinkle{0%{opacity:.7}to{opacity:1}}@media (prefers-reduced-motion:reduce){.fx-sky-layer{animation:none}}