@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); :root { --primary-color: #3b82f6; --secondary-color: #60a5fa; --dark-color: #1e293b; --light-color: #f8fafc; } * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Inter', sans-serif; } body { background-color: #f1f5f9; } .message { max-width: 80%; padding: 12px 16px; border-radius: 18px; animation: fadeIn 0.3s ease-in-out; } .message.user { background-color: var(--primary-color); color: white; align-self: flex-end; border-bottom-right-radius: 4px; } .message.bot { background-color: #e2e8f0; color: var(--dark-color); align-self: flex-start; border-bottom-left-radius: 4px; } .message.system { background-color: #fef3c7; color: #92400e; align-self: center; text-align: center; max-width: 90%; font-size: 0.85rem; } .message-content { white-space: pre-wrap; word-break: break-word; } .message-time { font-size: 0.7rem; opacity: 0.8; margin-top: 4px; text-align: right; } .attachment-preview { display: flex; align-items: center; background-color: rgba(255, 255, 255, 0.7); border-radius: 8px; padding: 8px 12px; margin-top: 8px; border: 1px solid #cbd5e1; } .attachment-icon { margin-right: 8px; color: var(--primary-color); } .audio-player { display: flex; align-items: center; background-color: #e0f2fe; border-radius: 8px; padding: 8px 12px; margin-top: 8px; } .audio-player button { background: none; border: none; cursor: pointer; margin-right: 10px; } .audio-player progress { flex-grow: 1; height: 5px; } .typing-indicator { display: flex; align-items: center; padding: 12px 16px; background-color: #e2e8f0; border-radius: 18px; align-self: flex-start; border-bottom-left-radius: 4px; } .typing-dot { width: 8px; height: 8px; background-color: #94a3b8; border-radius: 50%; margin: 0 2px; animation: typing 1.4s infinite ease-in-out; } .typing-dot:nth-child(1) { animation-delay: 0s; } .typing-dot:nth-child(2) { animation-delay: 0.2s; } .typing-dot:nth-child(3) { animation-delay: 0.4s; } @keyframes typing { 0%, 60%, 100% { transform: translateY(0); } 30% { transform: translateY(-5px); } } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* Responsive adjustments */ @media (max-width: 768px) { .message { max-width: 90%; } main { padding: 1rem; } }