@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}@keyframes shake{0%,to{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}.animate-fadeIn{animation:fadeIn .5s ease-out}.animate-slideInUp{animation:slideInUp .5s ease-out}.animate-slideInDown{animation:slideInDown .5s ease-out}.animate-pulse-slow{animation:pulse 2s infinite}.animate-shake{animation:shake .5s ease-in-out}.phone-input-custom{transition:all .2s ease-in-out}.phone-input-custom:focus-within{box-shadow:0 0 0 3px rgba(59,130,246,.1);transform:scale(1.01)}.phone-input-custom.border-red-500{border-color:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.1)}.phone-input-custom.border-green-500{border-color:#10b981;box-shadow:0 0 0 3px rgba(16,185,129,.1)}.spinner{animation:spin 1s linear infinite;border-radius:50%;border:2px solid #f3f3f3;border-top-color:#3498db;height:16px;width:16px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.button-hover-scale{transition:transform .2s ease-in-out}.button-hover-scale:hover:not(:disabled){transform:scale(1.02)}.button-hover-scale:active:not(:disabled){transform:scale(.98)}.error-shake{animation:shake .5s ease-in-out}.success-bounce{animation:bounce .6s ease-in-out}@keyframes bounce{0%,20%,60%,to{transform:translateY(0)}40%{transform:translateY(-10px)}80%{transform:translateY(-5px)}}