@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes float-delayed{0%,to{transform:translateY(0)}50%{transform:translateY(10px)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@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}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.animate-float{animation:6s ease-in-out infinite float}.animate-float-delayed{animation:8s ease-in-out 1s infinite float-delayed}.animate-fadeIn{animation:.6s ease-out forwards fadeIn}.animate-fadeInUp{animation:.8s ease-out forwards fadeInUp}.animate-scaleIn{animation:.5s ease-out forwards scaleIn}.animate-slideInLeft{animation:.6s ease-out forwards slideInLeft}.animate-slideInRight{animation:.6s ease-out forwards slideInRight}html{scroll-behavior:smooth}.hover-lift{transition:transform .3s cubic-bezier(.4,0,.2,1),box-shadow .3s}.hover-lift:hover{transform:translateY(-4px);box-shadow:0 12px 24px -10px #00000026}.shimmer{background:linear-gradient(90deg,#0000 0%,#ffffff4d 50%,#0000 100%) 0 0/1000px 100%;animation:2s infinite shimmer}.interactive-scale{transition:transform .2s}.interactive-scale:active{transform:scale(.98)}.stagger-1{animation-delay:.1s}.stagger-2{animation-delay:.2s}.stagger-3{animation-delay:.3s}.stagger-4{animation-delay:.4s}.stagger-5{animation-delay:.5s}.stagger-6{animation-delay:.6s}button:focus-visible,a:focus-visible{outline-offset:2px;outline:2px solid #374151}.micro-interaction{transition:all .15s}.micro-interaction:hover{transform:scale(1.02)}.micro-interaction:active{transform:scale(.98)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-in-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes shine{to{transform:translate(100%)}}@keyframes pulse-soft{0%,to{opacity:.6;transform:scale(1)}50%{opacity:.8;transform:scale(1.05)}}@keyframes fade-in-left{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}@keyframes fade-in-right{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}.animate-fade-in{animation:.5s ease-out forwards fade-in}.animate-fade-in-up{animation:.6s ease-out fade-in-up}.animate-fade-in-left{animation:.6s ease-out forwards fade-in-left}.animate-fade-in-right{animation:.6s ease-out forwards fade-in-right}.animate-pulse-soft{animation:4s ease-in-out infinite pulse-soft}.animate-shine{animation:1s ease-in-out shine}
.typing-indicator{align-items:center;height:16px;display:flex}.typing-indicator span{background-color:#9ca3af;border-radius:50%;width:6px;height:6px;margin:0 1px;animation:1.4s infinite typing;display:block}.typing-indicator span:first-child{animation-delay:0s}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@keyframes typing{0%,60%,to{opacity:.5;transform:translateY(0)}30%{opacity:1;transform:translateY(-10px)}}@media (prefers-color-scheme:dark){.typing-indicator span{background-color:#d1d5db}}.message-status-check{transition:color .2s}.connection-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.message-bubble-enter{animation:.3s ease-out slideInUp}@keyframes slideInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.attachment-preview{transition:all .2s}.attachment-preview:hover{transform:scale(1.02);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.messages-container{scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:#9ca3af80 transparent;overflow-y:auto}.messages-container::-webkit-scrollbar{width:6px}.messages-container::-webkit-scrollbar-track{background:0 0}.messages-container::-webkit-scrollbar-thumb{background-color:#9ca3af80;border-radius:3px}.messages-container::-webkit-scrollbar-thumb:hover{background-color:#9ca3afb3}.load-more-spinner{animation:1s linear infinite spin}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.message-actions{opacity:0;transition:opacity .2s}.message-wrapper:hover .message-actions{opacity:1}.message-sending{opacity:.7}.message-failed{border-color:#ef4444;animation:.3s ease-in-out shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}