/* Catppuccin Latte (light) */ :root { --bg: #e6e9ef; /* Mantle */ --surface: #eff1f5; /* Base */ --sidebar-bg: #e6e9ef; /* Mantle */ --border: #ccd0da; /* Surface0 */ --text: #4c4f69; /* Text */ --text-muted: #8c8fa1; /* Overlay1 */ --input-bg: #eff1f5; /* Base */ --input-border: #bcc0cc; /* Surface1 */ --user-hover: #ccd0da; /* Surface0 */ --reload-bg: #dce0e8; /* Crust */ --reload-border: #bcc0cc; /* Surface1 */ --reload-hover: #ccd0da; /* Surface0 */ --msg-received-bg: #ccd0da; /* Surface0 */ --msg-received-text:#4c4f69; /* Text */ --error-bg: #f2cdcd; /* Flamingo tint */ --error-text: #d20f39; /* Red */ --accent: #1e66f5; /* Blue */ --accent-hover: #04a5e5; /* Sky */ --accent-text: #eff1f5; /* Base */ } /* Catppuccin Mocha (dark) */ [data-theme="dark"] { --bg: #181825; /* Mantle */ --surface: #1e1e2e; /* Base */ --sidebar-bg: #181825; /* Mantle */ --border: #313244; /* Surface0 */ --text: #cdd6f4; /* Text */ --text-muted: #6c7086; /* Overlay0 */ --input-bg: #1e1e2e; /* Base */ --input-border: #45475a; /* Surface1 */ --user-hover: #313244; /* Surface0 */ --reload-bg: #313244; /* Surface0 */ --reload-border: #45475a; /* Surface1 */ --reload-hover: #45475a; /* Surface1 */ --msg-received-bg: #313244; /* Surface0 */ --msg-received-text:#cdd6f4; /* Text */ --error-bg: #3b1b27; /* custom deep red */ --error-text: #f38ba8; /* Red */ --accent: #89b4fa; /* Blue */ --accent-hover: #74c7ec; /* Sapphire */ --accent-text: #1e1e2e; /* Base */ } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: 'Segoe UI', Arial, sans-serif; background: var(--bg); color: var(--text); min-height: 100vh; display: flex; justify-content: center; align-items: flex-start; padding: 2rem; transition: background 0.2s, color 0.2s; } .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; } #theme-toggle { position: fixed; top: 1rem; right: 1rem; background: var(--surface); color: var(--text); border: 1px solid var(--border); border-radius: 20px; padding: 0.35rem 0.75rem; font-size: 0.85rem; cursor: pointer; transition: background 0.2s, color 0.2s, border-color 0.2s; z-index: 100; } #theme-toggle:hover { background: var(--user-hover); } .auth-container { width: 100%; max-width: 440px; } .auth-section { background: var(--surface); border-radius: 8px; padding: 1.5rem; margin-bottom: 1rem; box-shadow: 0 1px 4px rgba(0,0,0,0.1); transition: background 0.2s; } .auth-section h2 { margin-bottom: 1rem; font-size: 1.2rem; color: var(--text); } form { display: flex; flex-direction: column; gap: 0.6rem; } input, select { padding: 0.6rem 0.8rem; border: 1px solid var(--input-border); border-radius: 6px; font-size: 0.95rem; transition: border-color 0.2s, background 0.2s, color 0.2s; background: var(--input-bg); color: var(--text); } input:focus, select:focus { outline: none; border-color: var(--accent); } button[type="submit"] { padding: 0.6rem; background: var(--accent); color: var(--accent-text); border: none; border-radius: 6px; font-size: 0.95rem; cursor: pointer; transition: background 0.2s; } button[type="submit"]:hover { background: var(--accent-hover); } .chat-app { display: flex; width: 100%; max-width: 900px; height: 80vh; background: var(--surface); border-radius: 12px; overflow: hidden; box-shadow: 0 4px 20px rgba(0,0,0,0.12); transition: background 0.2s; } #user-list { width: 220px; border-right: 1px solid var(--border); overflow-y: auto; padding: 1rem; background: var(--sidebar-bg); transition: background 0.2s, border-color 0.2s; } #user-list h3 { font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-muted); margin-bottom: 0.8rem; } .user-item { padding: 0.6rem 0.8rem; border-radius: 6px; cursor: pointer; font-size: 0.95rem; color: var(--text); transition: background 0.15s; } .user-item:hover { background: var(--user-hover); } .user-item.active { background: var(--accent); color: var(--accent-text); } .chat-main { flex: 1; display: flex; flex-direction: column; min-width: 0; } .chat-header { display: flex; align-items: center; justify-content: space-between; padding: 0.6rem 1rem; border-bottom: 1px solid var(--border); background: var(--surface); font-weight: 600; font-size: 0.95rem; color: var(--text); transition: background 0.2s, border-color 0.2s; } .chat-header button { padding: 0.3rem 0.8rem; font-size: 0.8rem; background: var(--reload-bg); color: var(--text); border: 1px solid var(--reload-border); border-radius: 6px; cursor: pointer; transition: background 0.15s; } .chat-header button:hover { background: var(--reload-hover); } #messages { flex: 1; overflow-y: auto; padding: 1rem; display: flex; flex-direction: column; gap: 4px; } .message { max-width: 70%; width: fit-content; padding: 8px 12px; border-radius: 12px; font-size: 0.95rem; line-height: 1.4; word-break: break-word; display: flex; flex-direction: column; gap: 2px; } .message-time { font-size: 0.7rem; opacity: 0.65; } .sent { align-self: flex-end; background: var(--accent); color: var(--accent-text); border-bottom-right-radius: 4px; } .received { align-self: flex-start; background: var(--msg-received-bg); color: var(--msg-received-text); border-bottom-left-radius: 4px; } .message-form { display: flex; padding: 0.8rem; border-top: 1px solid var(--border); gap: 0.5rem; } .message-form input { flex: 1; border-radius: 20px; } .message-form button { border-radius: 20px; padding: 0.6rem 1.2rem; } .error-message { background: var(--error-bg); color: var(--error-text); padding: 0.6rem 1rem; border-radius: 6px; margin-top: 0.5rem; font-size: 0.9rem; }