.fade-in{animation:fadeIn .6s ease-out forwards}.fade-in-up{animation:fadeInUp .6s ease-out forwards}.fade-in-down{animation:fadeInDown .6s ease-out forwards}.fade-in-left{animation:fadeInLeft .6s ease-out forwards}.fade-in-right{animation:fadeInRight .6s ease-out forwards}.fade-out{animation:fadeOut .3s ease-out forwards}.fade-out-up{animation:fadeOutUp .3s ease-out forwards}.fade-out-down{animation:fadeOutDown .3s ease-out forwards}.scale-in{animation:scaleIn .3s ease-out forwards}.scale-out{animation:scaleOut .3s ease-out forwards}.slide-in-left{animation:slideInLeft .4s ease-out forwards}.slide-in-right{animation:slideInRight .4s ease-out forwards}.slide-out-left{animation:slideOutLeft .3s ease-out forwards}.slide-out-right{animation:slideOutRight .3s ease-out forwards}.bounce{animation:bounce .6s ease}.bounce-in{animation:bounceIn .5s ease-out forwards}.rotate{animation:rotate .6s linear}.spin{animation:spin 1s linear infinite}.shake{animation:shake .5s ease}.pulse{animation:pulse 1.5s ease infinite}.loading-spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;animation:spin 1s linear infinite}.loading-dots::after{content:'.';animation:loadingDots 1.5s steps(3,end) infinite}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes fadeInUp{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{from{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{from{opacity:0;transform:translateX(-30px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{from{opacity:0;transform:translateX(30px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeOutUp{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-30px)}}@keyframes fadeOutDown{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(30px)}}@keyframes scaleIn{from{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes scaleOut{from{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes slideInLeft{from{transform:translateX(-100%)}to{transform:translateX(0)}}@keyframes slideInRight{from{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes slideOutLeft{from{transform:translateX(0)}to{transform:translateX(-100%)}}@keyframes slideOutRight{from{transform:translateX(0)}to{transform:translateX(100%)}}@keyframes bounce{0%,100%,20%,50%,80%{transform:translateY(0)}40%{transform:translateY(-20px)}60%{transform:translateY(-10px)}}@keyframes bounceIn{0%{opacity:0;transform:scale(.3)}50%{opacity:1;transform:scale(1.05)}70%{transform:scale(.9)}100%{transform:scale(1)}}@keyframes rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes shake{0%,100%{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}@keyframes pulse{0%{transform:scale(1);opacity:1}50%{transform:scale(1.05);opacity:.8}100%{transform:scale(1);opacity:1}}@keyframes loadingDots{0%,20%{content:'.'}40%{content:'..'}100%,60%{content:'...'}}.delay-100{animation-delay:.1s}.delay-200{animation-delay:.2s}.delay-300{animation-delay:.3s}.delay-400{animation-delay:.4s}.delay-500{animation-delay:.5s}.duration-fast{animation-duration:.2s!important}.duration-normal{animation-duration:.3s!important}.duration-slow{animation-duration:.6s!important}.duration-slower{animation-duration:1s!important}.animated{animation-duration:.3s;animation-fill-mode:both}.infinite{animation-iteration-count:infinite}.paused{animation-play-state:paused}