/* General Reset and Body Styling */ * { box-sizing: border-box; margin: 0; padding: 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } body { font-family: var(--font-sans-serif); background-color: var(--color-primary); color: var(--color-text-primary); display: flex; justify-content: center; align-items: center; height: 100vh; } /* Main Chat Container Layout */ .chat-container { display: flex; width: 90vw; height: 90vh; max-width: 1400px; background-color: var(--color-surface-light); border-radius: 24px; overflow: hidden; box-shadow: 0 10px 40px rgba(0, 0, 0, 0.1); } /* --- Main Chat Area --- */ .chat-main { flex-grow: 1; display: flex; flex-direction: column; background-color: var(--color-surface-light); } .chat-header { padding: 24px; border-bottom: 1px solid var(--color-border); } .chat-header h1 { font-family: var(--font-serif); font-size: 28px; font-weight: 600; } /* Chat Messages */ .chat-messages { flex-grow: 1; padding: 24px; overflow-y: auto; display: flex; flex-direction: column-reverse; gap: 16px; } .message-group-status { text-align: center; font-size: 12px; color: var(--color-text-secondary); margin: 8px 0; } .message-group { display: flex; flex-direction: column; max-width: 70%; } .message-group.user { align-self: flex-end; align-items: flex-end; } .message-group.bot { align-self: flex-start; align-items: flex-start; } .message-bubble { padding: 12px 16px; border-radius: 18px; max-width: 100%; } .message-group.bot .message-bubble { background-color: var(--color-surface-mid); border-top-left-radius: 4px; } .message-group.user .message-bubble { background-color: var(--color-primary); color: white; border-top-right-radius: 4px; } .message-bubble p { line-height: 1.6; } .message-bubble ul { list-style-position: inside; padding-left: 8px; margin-top: 8px; } .message-bubble li { margin-bottom: 4px; } /* --- Files Sidebar --- */ .files-sidebar { width: 280px; background-color: var(--color-surface-light); padding: 24px; display: flex; flex-direction: column; border-left: 1px solid var(--color-border); } .files-sidebar h4 { font-family: var(--font-serif); font-weight: 600; font-size: 20px; color: var(--color-text-primary); margin-bottom: 20px; padding-bottom: 16px; border-bottom: 1px solid var(--color-border); } .attached-files-list { list-style: none; display: flex; flex-direction: column; gap: 4px; overflow-y: auto; flex-grow: 1; } .attached-files-list li { display: flex; align-items: center; background-color: transparent; padding: 8px; border-radius: 8px; font-size: 14px; transition: background-color 0.2s ease; } .attached-files-list li:hover { background-color: var(--color-surface-mid); } .attached-files-list li span { flex-grow: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-right: 8px; color: var(--color-text-secondary); } .attached-files-list li:hover span { color: var(--color-text-primary); } .icon-button.small { width: 28px; height: 28px; flex-shrink: 0; } .icon-button.small .material-symbols-outlined { font-size: 18px; } /* Chat Footer / Input Area */ .chat-footer { padding: 16px 24px; border-top: 1px solid var(--color-border); background-color: var(--color-surface-light); } .input-wrapper { display: flex; align-items: center; background-color: var(--color-surface-mid); border-radius: 12px; padding: 4px; } .input-wrapper input { flex-grow: 1; border: none; background: none; padding: 12px; font-size: 16px; color: var(--color-text-primary); outline: none; } .icon-button { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; background: none; border: none; cursor: pointer; color: var(--color-text-secondary); transition: color 0.2s ease; } .icon-button:hover { color: var(--color-primary); } .icon-button .material-symbols-outlined { font-size: 24px; } .send-button { background-color: var(--color-primary); color: white; border-radius: 8px; } .send-button:hover { color: white; opacity: 0.9; } .replay-btn { background: none; border: none; cursor: pointer; color: inherit; opacity: 0.7; transition: transform 0.2s, opacity 0.2s; } .replay-btn:hover { opacity: 1; transform: scale(1.1); } .icon-button.recording .material-symbols-outlined { color: var(--color-error, #e74c3c); animation: pulse 1.5s infinite; } @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.2); } 100% { transform: scale(1); } }