@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideInLeft{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slideOutLeft{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes typingDot{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-10px)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.animate-fade-in-up{animation:.3s ease-out fadeInUp}.animate-fade-in{animation:.2s ease-out fadeIn}.animate-slide-in-left{animation:.3s ease-out slideInLeft}.animate-slide-out-left{animation:.3s ease-out slideOutLeft}.animate-pulse-slow{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}.animate-scale-in{animation:.2s ease-out scaleIn}.animate-shimmer{background:linear-gradient(90deg,#f0f0f0 0%,#e0e0e0 20%,#f0f0f0 40% 100%) 0 0/1000px 100%;animation:2s linear infinite shimmer}.typing-indicator{gap:4px;padding:12px 16px;display:flex}.typing-indicator span{background-color:#9ca3af;border-radius:50%;width:8px;height:8px;animation:1.4s infinite typingDot}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}.transition-smooth{transition:all .3s cubic-bezier(.4,0,.2,1)}
