@keyframes slideUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.animate-slideUp{animation:slideUp .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fadeIn{animation:fadeIn .4s ease-out}@keyframes pulse-slow{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse-slow{animation:pulse-slow 2s ease-in-out infinite}@keyframes scaleIn{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.animate-scaleIn{animation:scaleIn .3s ease-out}.btn-touch-feedback:active:not(:disabled){transform:scale(.98);transition:transform .1s ease-out}.input-focus-effect:focus{transform:scale(1.01);transition:transform .2s ease-out}.spinner{border:3px solid rgba(0,0,0,.1);border-top-color:#3b82f6;border-radius:50%;width:24px;height:24px;animation:spin .6s linear infinite}.spinner-large{width:48px;height:48px;border-width:4px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:1000px 100%;animation:shimmer 2s infinite}