Spaces:
Sleeping
Sleeping
| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap'); | |
| :root { | |
| --bg-primary: #0d1117; | |
| --bg-secondary: #161b22; | |
| --bg-tertiary: #21262d; | |
| --border-color: #30363d; | |
| --text-primary: #c9d1d9; | |
| --text-secondary: #8b949e; | |
| --accent-color: #58a6ff; | |
| --user-msg-bg: #21262d; | |
| --bot-msg-bg: #161b22; | |
| --danger-color: #f85149; | |
| } | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| } | |
| body { | |
| font-family: 'Inter', sans-serif; | |
| background-color: var(--bg-primary); | |
| color: var(--text-primary); | |
| overflow: hidden; | |
| } | |
| .app-container { | |
| display: grid; | |
| grid-template-columns: 240px 1fr; /* Bố cục 5 cột có thể quá phức tạp, 2 cột (1 cho menu, 1 cho chat) hiệu quả hơn */ | |
| height: 100vh; | |
| } | |
| /* --- Sidebar (Menu) --- */ | |
| .sidebar { | |
| background-color: var(--bg-secondary); | |
| border-right: 1px solid var(--border-color); | |
| padding: 20px; | |
| } | |
| .sidebar-header h3 { | |
| font-size: 1.2rem; | |
| margin-bottom: 24px; | |
| } | |
| .menu ul { | |
| list-style-type: none; | |
| } | |
| .menu li a { | |
| display: block; | |
| padding: 10px 15px; | |
| text-decoration: none; | |
| color: var(--text-secondary); | |
| border-radius: 6px; | |
| transition: background-color 0.2s, color 0.2s; | |
| } | |
| .menu li a:hover { | |
| background-color: var(--bg-tertiary); | |
| color: var(--text-primary); | |
| } | |
| .menu li.active a { | |
| background-color: rgba(88, 166, 255, 0.1); | |
| color: var(--accent-color); | |
| font-weight: 500; | |
| } | |
| /* --- Chat Container --- */ | |
| .chat-container { | |
| display: flex; | |
| flex-direction: column; | |
| background-color: var(--bg-primary); | |
| } | |
| .chat-header { | |
| padding: 20px 30px; | |
| border-bottom: 1px solid var(--border-color); | |
| background-color: var(--bg-secondary); | |
| } | |
| .chat-header h2 { | |
| font-size: 1.25rem; | |
| } | |
| .chat-header p { | |
| color: var(--text-secondary); | |
| font-size: 0.9rem; | |
| } | |
| .chat-body { | |
| flex-grow: 1; | |
| overflow-y: auto; | |
| padding: 20px 30px; | |
| } | |
| /* --- Tin nhắn --- */ | |
| .message-row { | |
| display: flex; | |
| align-items: flex-start; | |
| gap: 15px; | |
| margin-bottom: 20px; | |
| max-width: 80%; | |
| } | |
| .bot-row { | |
| justify-content: flex-start; | |
| } | |
| .user-row { | |
| justify-content: flex-end; | |
| margin-left: auto; /* Đẩy tin nhắn người dùng sang phải */ | |
| } | |
| .avatar { | |
| width: 36px; | |
| height: 36px; | |
| border-radius: 50%; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| font-size: 1.2rem; | |
| background-color: var(--bg-tertiary); | |
| } | |
| .bot-msg, .user-msg { | |
| padding: 12px 16px; | |
| border-radius: 18px; | |
| line-height: 1.6; | |
| border: 1px solid var(--border-color); | |
| } | |
| .bot-msg { | |
| background-color: var(--bot-msg-bg); | |
| border-top-left-radius: 4px; | |
| } | |
| .user-msg { | |
| background-color: var(--user-msg-bg); | |
| border-top-right-radius: 4px; | |
| } | |
| /* --- Hiệu ứng đang gõ --- */ | |
| .typing { | |
| color: var(--text-secondary); | |
| padding: 10px 30px; | |
| font-style: italic; | |
| animation: pulse 1.5s infinite ease-in-out; | |
| } | |
| @keyframes pulse { | |
| 0% { opacity: 0.5; } | |
| 50% { opacity: 1; } | |
| 100% { opacity: 0.5; } | |
| } | |
| /* --- Chat Footer & Form --- */ | |
| .chat-footer { | |
| padding: 15px 30px; | |
| border-top: 1px solid var(--border-color); | |
| background-color: var(--bg-secondary); | |
| } | |
| .chat-form { | |
| display: flex; | |
| align-items: center; | |
| gap: 10px; | |
| background-color: var(--bg-primary); | |
| border-radius: 8px; | |
| padding: 5px; | |
| border: 1px solid var(--border-color); | |
| } | |
| .input-wrapper { | |
| flex-grow: 1; | |
| position: relative; | |
| display: flex; | |
| align-items: center; | |
| } | |
| .input-wrapper input[type="text"] { | |
| width: 100%; | |
| background: none; | |
| border: none; | |
| outline: none; | |
| color: var(--text-primary); | |
| font-size: 1rem; | |
| padding: 10px; | |
| } | |
| .input-wrapper input[type="text"]:disabled { | |
| cursor: not-allowed; | |
| color: var(--text-secondary); | |
| } | |
| .icon-btn, .send-btn { | |
| background: none; | |
| border: none; | |
| color: var(--text-secondary); | |
| cursor: pointer; | |
| padding: 8px; | |
| border-radius: 6px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: background-color 0.2s, color 0.2s; | |
| } | |
| .icon-btn:hover { | |
| background-color: var(--bg-tertiary); | |
| color: var(--text-primary); | |
| } | |
| .send-btn { | |
| background-color: var(--accent-color); | |
| color: var(--bg-primary); | |
| border-radius: 50%; | |
| width: 38px; | |
| height: 38px; | |
| transition: background-color 0.2s; | |
| } | |
| .send-btn:hover { | |
| background-color: #79c0ff; | |
| } | |
| .send-btn svg { | |
| width: 20px; | |
| height: 20px; | |
| transform: translateX(1px); | |
| } | |
| /* --- File Card --- */ | |
| #fileCard { | |
| display: none; /* Ẩn mặc định */ | |
| align-items: center; | |
| gap: 8px; | |
| background-color: var(--bg-tertiary); | |
| padding: 5px 10px; | |
| border-radius: 6px; | |
| margin-left: 10px; | |
| font-size: 0.9rem; | |
| position: absolute; | |
| } | |
| #fileName { | |
| max-width: 200px; | |
| white-space: nowrap; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| } | |
| #removeFile { | |
| background: none; | |
| border: none; | |
| color: var(--text-secondary); | |
| cursor: pointer; | |
| font-size: 1.2rem; | |
| line-height: 1; | |
| } | |
| #removeFile:hover { | |
| color: var(--danger-color); | |
| } | |
| /* --- Scrollbar --- */ | |
| .chat-body::-webkit-scrollbar { | |
| width: 8px; | |
| } | |
| .chat-body::-webkit-scrollbar-track { | |
| background: var(--bg-secondary); | |
| } | |
| .chat-body::-webkit-scrollbar-thumb { | |
| background-color: var(--bg-tertiary); | |
| border-radius: 10px; | |
| border: 2px solid var(--bg-secondary); | |
| } |