body { font-family: 'Inter', sans-serif; background-color: #1a0a0a; color: #f8e8e8; display: flex; justify-content: center; align-items: center; min-height: 100vh; margin: 0; padding: 20px; box-sizing: border-box; } .chat-container { background-color: #360a0a; border-radius: 1rem; box-shadow: 0 10px 15px rgba(0, 0, 0, 0.3); width: 100%; max-width: 800px; height: 90vh; display: flex; flex-direction: column; overflow: hidden; } .chat-header { background-color: #8B0000; padding: 1rem 1.5rem; border-bottom: 1px solid #5c0a0a; display: flex; justify-content: space-between; align-items: center; border-top-left-radius: 1rem; border-top-right-radius: 1rem; } .chat-messages { flex-grow: 1; padding: 1.5rem; overflow-y: auto; background-color: #2b2b2b; display: flex; flex-direction: column; gap: 1rem; scroll-behavior: smooth; } .chat-messages::-webkit-scrollbar { width: 8px; } .chat-messages::-webkit-scrollbar-track { background: transparent; border-radius: 10px; } .chat-messages::-webkit-scrollbar-thumb { background: transparent; border-radius: 10px; height: 80px; min-height: 50px; } .chat-messages:hover::-webkit-scrollbar-thumb, .chat-messages:focus::-webkit-scrollbar-thumb { background: #8B0000; } .chat-messages::-webkit-scrollbar-thumb:hover { background: #DC143C; } .message-wrapper { max-width: 100%; display: flex; flex-direction: column; word-wrap: break-word; } .message-wrapper.user { align-self: flex-end; } .message-wrapper.model { align-self: flex-start; } .message-content { padding: 0.75rem 1rem; border-radius: 0.75rem; } .message-wrapper.user .message-content { background-color: #555555; color: #DDDDDD; border-bottom-right-radius: 0.25rem; } .message-wrapper.model .message-content { background-color: #991b1b; color: #DDDDDD; border-bottom-left-radius: 0.25rem; } .message-content img, .message-content video { max-width: 100%; border-radius: 0.5rem; margin-top: 0.5rem; display: block; } .message-content pre { white-space: pre-wrap; word-wrap: break-word; background-color: rgba(0, 0, 0, 0.2); padding: 0.5rem; border-radius: 0.5rem; margin-top: 0.5rem; overflow-x: auto; } .message-content p { margin-top: 0.5em; margin-bottom: 0.5em; } .message-content p:first-child { margin-top: 0; } .message-content p:last-child { margin-bottom: 0; } .message-content h1, .message-content h2, .message-content h3, .message-content h4, .message-content h5, .message-content h6 { font-weight: bold; margin-top: 1em; margin-bottom: 0.5em; line-height: 1.2; } .message-content h1 { font-size: 1.8em; } .message-content h2 { font-size: 1.5em; } .message-content h3 { font-size: 1.3em; } .message-content h4 { font-size: 1.1em; } .message-content ul { list-style-type: disc; padding-left: 2em; margin-bottom: 0.5em; margin-top: 0.5em; } .message-content ol { list-style-type: decimal; padding-left: 2em; margin-bottom: 0.5em; margin-top: 0.5em; } .message-content li { margin-bottom: 0.25em; } .message-content code { background-color: rgba(0, 0, 0, 0.3); padding: 0.1em 0.3em; border-radius: 0.3em; font-family: 'Fira Code', 'Cascadia Code', monospace; font-size: 0.9em; } .message-content pre code { display: block; padding: 0.8em; overflow-x: auto; border-radius: 0.5em; background-color: rgba(0, 0, 0, 0.4); } .message-content strong { font-weight: bold; } .message-content em { font-style: italic; } .message-content a { color: #ADD8E6; text-decoration: underline; } .message-content blockquote { border-left: 4px solid #c08484; padding-left: 1em; margin-left: 0; opacity: 0.8; } .message-content hr { border: none; border-top: 1px solid rgba(255, 255, 255, 0.2); margin: 1em 0; } .message-actions { margin-top: 0.25rem; display: flex; font-size: 0.75rem; } .message-wrapper.user .message-actions { justify-content: flex-end; } .message-wrapper.model .message-actions { justify-content: flex-start; } .message-actions button { background: none; border: none; color: #a0a0a0; cursor: pointer; padding: 0.2rem 0.4rem; border-radius: 0.25rem; transition: background-color 0.2s; display: flex; align-items: center; gap: 0.25rem; } .message-actions button:hover { background-color: rgba(255, 255, 255, 0.1); } .message-content textarea { background-color: #3a3a3a; border: none; border-radius: 0.75rem; padding: 0.75rem 1rem; color: #f8e8e8; resize: none; outline: none; overflow-y: hidden; width: 100%; } .chat-input-area { background-color: #8B0000; padding: 1rem 1.5rem; border-top: 1px solid #5c0a0a; display: flex; flex-direction: column; align-items: stretch; gap: 0.75rem; border-bottom-left-radius: 1rem; border-bottom-right-radius: 1rem; } .chat-input-area .input-row { display: flex; align-items: center; gap: 0.75rem; } .chat-input-area textarea { flex-grow: 1; background-color: #3a3a3a; border: none; border-radius: 0.75rem; padding: 0.75rem 1rem; color: #f8e8e8; resize: none; outline: none; min-height: 40px; max-height: 120px; overflow-y: auto; } .chat-input-area textarea::-webkit-scrollbar { width: 8px; } .chat-input-area textarea::-webkit-scrollbar-track { background: transparent; border-radius: 10px; } .chat-input-area textarea::-webkit-scrollbar-thumb { background: transparent; border-radius: 10px; height: 60px; min-height: 40px; } .chat-input-area textarea:hover::-webkit-scrollbar-thumb, .chat-input-area textarea:focus::-webkit-scrollbar-thumb { background: #e5e7eb; } .chat-input-area textarea::-webkit-scrollbar-thumb:hover { background: #b0b0b0; } .chat-input-area button { background-color: #BF2222; color: white; padding: 0.75rem 1rem; border-radius: 0.75rem; border: none; cursor: pointer; transition: background-color 0.2s, transform 0.1s; display: flex; align-items: center; justify-content: center; } .chat-input-area button:hover { background-color: #b91c1c; transform: translateY(-1px); } .chat-input-area button:active { transform: translateY(0); } .chat-input-area button:disabled { background-color: #6b7280; cursor: not-allowed; } .loading-indicator { display: flex; align-items: center; gap: 0.5rem; color: #e5e7eb; font-size: 0.9rem; } .loading-dot { width: 8px; height: 8px; background-color: #e5e7eb; border-radius: 50%; animation: bounce 1.4s infinite ease-in-out both; } .loading-dot:nth-child(1) { animation-delay: -0.32s; } .loading-dot:nth-child(2) { animation-delay: -0.16s; } .loading-dot:nth-child(3) { animation-delay: 0s; } @keyframes bounce { 0%, 80%, 100% { transform: scale(0); } 40% { transform: scale(1); } } .modal-overlay { position: fixed; top: 0; left: 0; width: 100vw; height: 100vh; background-color: rgba(0, 0, 0, 0.7); display: flex; justify-content: center; align-items: center; z-index: 1000; opacity: 0; visibility: hidden; transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out; } .modal-overlay.show { opacity: 1; visibility: visible; } .modal-content { background-color: #360a0a; padding: 2rem; border-radius: 1rem; box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5); text-align: center; max-width: 400px; width: 90%; } .modal-content h3 { font-size: 1.5rem; margin-bottom: 1rem; color: #f8e8e8; } .modal-content p { margin-bottom: 1.5rem; color: #c08484; } .modal-buttons { display: flex; justify-content: center; gap: 1rem; } .modal-buttons button { background-color: #dc2626; color: white; padding: 0.75rem 1.5rem; border-radius: 0.75rem; border: none; cursor: pointer; transition: background-color 0.2s; } .modal-buttons button:hover { background-color: #b91c1c; } .modal-buttons button.cancel-btn { background-color: #b91c1c; } .modal-buttons button.cancel-btn:hover { background-color: #991b1b; } #fileInput { display: none !important; } .file-preview-item { position: relative; display: flex; align-items: center; gap: 0.5rem; background-color: rgba(0, 0, 0, 0.2); padding: 0.5rem; border-radius: 0.5rem; } .file-preview-item img, .file-preview-item video { max-width: 80px; max-height: 80px; border-radius: 0.25rem; object-fit: cover; } .file-preview-item .remove-file-btn { background-color: #dc2626; color: white; border-radius: 50%; width: 20px; height: 20px; font-size: 0.75rem; display: flex; justify-content: center; align-items: center; cursor: pointer; position: absolute; top: -5px; right: -5px; border: 1px solid #360a0a; } .file-preview-item .remove-file-btn:hover { background-color: #b91c1c; }