@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse-slow{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes blink{0%,50%{opacity:1}51%,to{opacity:0}}@keyframes bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-4px)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}.message-content{animation:.3s ease-out fadeIn}@keyframes pulse-dot{0%,to{opacity:.3}50%{opacity:1}}.typing-dot{animation:1s infinite pulse-dot}@keyframes pulse-ring{0%{transform:scale(1);box-shadow:0 0 #6366f166}70%{transform:scale(1.05);box-shadow:0 0 0 8px #6366f100}to{transform:scale(1);box-shadow:0 0 #6366f100}}.animate-pulse-ring{animation:1.5s ease-in-out infinite pulse-ring}@keyframes ping-ring{0%{opacity:1;transform:scale(.8);box-shadow:0 0 #8b5cf64d}to{opacity:0;transform:scale(1.2);box-shadow:0 0 0 16px #8b5cf600}}.animate-ping-ring{animation:2s ease-out infinite ping-ring}@keyframes thinking-dot{0%,to{opacity:.4;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}.animate-thinking-dot{animation:1s ease-in-out infinite thinking-dot}@keyframes sparkle{0%,to{opacity:.3;transform:scale(.8)}50%{opacity:1;transform:scale(1.2)}}.animate-sparkle{animation:.9s ease-in-out infinite sparkle;display:inline-block}.animate-bounce{animation:1s infinite bounce}.animate-blink{animation:.8s infinite blink}
