.loading-text{animation:fadeIn 1.5s ease-in-out infinite alternate}.loading-dots:after{content:"";animation:dots 1.5s steps(4) infinite}@keyframes fadeIn{0%{opacity:.6}to{opacity:1}}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}@keyframes fade-in{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.animate-fade-in{animation:fade-in .3s ease forwards}.confetti{position:absolute;width:10px;height:10px;transform:rotate(45deg);animation:fall 6s linear infinite,sway 2s ease-in-out infinite;opacity:.9}@keyframes fall{0%{transform:translateY(0) rotate(45deg)}to{transform:translateY(100vh) rotate(405deg)}}@keyframes sway{0%,to{transform:translateX(0)}50%{transform:translateX(10px)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes float-slow{0%,to{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-15px) rotate(180deg)}}.animate-float{animation:float 6s ease-in-out infinite}.animate-float-delay{animation:float 6s ease-in-out 2s infinite}.animate-float-slow{animation:float-slow 8s ease-in-out infinite}