@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes success-ripple{0%{opacity:0;transform:scale(.8)}40%{opacity:1;transform:scale(1.05)}60%{transform:scale(.98)}to{transform:scale(1)}}@keyframes success-ring{0%{opacity:.4;transform:scale(.8)}to{opacity:0;transform:scale(1.8)}}@keyframes error-x{0%{opacity:0;transform:scale(.3)}50%{opacity:.8;transform:scale(1.2)}to{opacity:1;transform:scale(1)}}.animate-spin{transform-origin:50%;animation:1.2s linear infinite spin;display:inline-block}.animate-success{border-radius:50%;animation:.8s cubic-bezier(.22,.61,.36,1) forwards success-ripple}.animate-error{animation:.3s cubic-bezier(.175,.885,.32,1.275) forwards error-x}
