/* Container */ .chat-container { overflow-y: overlay; padding-top: 10vw; height: 30vw; } /* Message wrapper */ .chat-message { display: flex; flex-direction: column; gap: 6px; animation: fadeIn 0.25s ease-out; max-width: 100%; } .user-message, .bot-message { display: flex; align-items: center; padding: 12px 20px; gap: 2vw; } .user-message { justify-content: flex-start; } .bot-message { justify-content: flex-end; align-self: flex-end; } .avatar { width: 40px; height: 40px; border-radius: 50%; overflow: hidden; box-shadow: 0 4px 6px rgba(0,0,0,0.1); } .avatar img { width: 100%; height: 100%; object-fit: cover; } .user-message .message-content, .bot-message .message-content { padding: 12px 20px; border-radius: 10px; box-shadow: 0 4px 10px rgba(0,0,0,0.1); width: 50%; markdown { font-family: 'Roboto', sans-serif; color: #333; font-size: 1vw; line-height: 1.5; } } .user-message .message-content { background-color: #f4f4f4; width: auto; } .bot-message .message-content { background-color: #f4f4f4; } .message-content p { margin: 0; color: #333; font-size: 1vw; line-height: 1.5; } /* Input */ .input-box { display: flex; gap: 1vw; padding: 2vw; border-top: 1px solid #ddd; background-color: #fff; position: absolute; bottom: 0; width: -webkit-fill-available; } .input-box input { flex: 1 1 auto; padding: 1vw; font-size: 1vw; border-radius: 12px; border: 1px solid #ddd; box-shadow: 0 4px 6px rgba(0,0,0,0.05); outline: none; transition: border 0.3s ease; font-family: 'Roboto', sans-serif; } .input-box input:focus { border-color: #4e8fff; box-shadow: 0 4px 10px rgba(78,143,255,0.3); } .input-box button { padding: 1vw; background-color: #4e8fff; color: #fff; border: none; border-radius: 12px; cursor: pointer; box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); transition: background-color 0.3s ease; font-family: "Roboto", sans-serif; font-weight: bold; font-size: 1vw; } .input-box button:hover { background-color: #1e6ab2; } /* Typing dots */ .typing { display: inline-flex; align-items: center; gap: 6px; height: 1em; } .typing span { width: 6px; height: 6px; border-radius: 50%; background: #333; display: inline-block; animation: bounce 1s infinite ease-in-out; } .typing span:nth-child(2) { animation-delay: 0.15s; } .typing span:nth-child(3) { animation-delay: 0.30s; } @keyframes bounce { 0%, 80%, 100% { transform: translateY(0); opacity: 0.4; } 40% { transform: translateY(-6px); opacity: 1; } } /* Enter animation */ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } }