@keyframes message-appear{0%{opacity:0;transform:translateY(20px) scale(.95)}50%{opacity:.8;transform:translateY(-2px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes message-bounce{0%,20%,50%,80%,to{transform:translateY(0) scale(1)}40%{transform:translateY(-4px) scale(1.05)}60%{transform:translateY(-2px) scale(1.02)}}@keyframes typing-appear{0%{opacity:0;transform:translateY(10px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes typing-pulse{0%,to{transform:scale(1);box-shadow:0 2px 4px rgba(0,0,0,.1)}50%{transform:scale(1.02);box-shadow:0 4px 8px rgba(0,0,0,.15)}}@keyframes connection-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(1.2)}}@keyframes notification-badge{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.animate-message-appear{animation:message-appear .6s cubic-bezier(.34,1.56,.64,1)}.animate-message-bounce{animation:message-bounce .8s cubic-bezier(.68,-.55,.265,1.55)}.animate-typing-appear{animation:typing-appear .3s ease-out}.animate-typing-pulse{animation:typing-pulse 2s ease-in-out infinite}.animate-connection-pulse{animation:connection-pulse 2s ease-in-out infinite}.animate-notification-badge{animation:notification-badge .5s ease-in-out}.message-hover{transition:all .2s cubic-bezier(.4,0,.2,1)}.message-hover:hover{transform:scale(1.02);box-shadow:0 4px 12px rgba(0,0,0,.15)}.send-button{transition:all .2s cubic-bezier(.4,0,.2,1)}.send-button:hover{transform:scale(1.05);box-shadow:0 6px 20px rgba(59,130,246,.4)}.send-button:active{transform:scale(.95)}.input-focus{transition:all .2s cubic-bezier(.4,0,.2,1)}.input-focus:focus{transform:scale(1.02);box-shadow:0 4px 12px rgba(59,130,246,.2)}.conversation-item{transition:all .2s cubic-bezier(.4,0,.2,1)}.conversation-item:hover{transform:translateX(4px) scale(1.01);box-shadow:0 2px 8px rgba(0,0,0,.1)}.conversation-item:active{transform:translateX(2px) scale(.99)}.smooth-transition{transition:all .2s cubic-bezier(.4,0,.2,1)}.loading-shimmer{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}