* { box-sizing: border-box; margin: 0; padding: 0; } body { background: #f8f9fa; color: #202124; font-family: 'Google Sans', 'Roboto', -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; overflow: hidden; } /* App Container */ .app-container { display: flex; flex-direction: column; height: 100vh; max-width: 100vw; background: #ffffff; } /* Header */ .header { background: #ffffff; border-bottom: 1px solid #e8eaed; padding: 12px 20px; position: sticky; top: 0; z-index: 100; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } .header-content { display: flex; justify-content: space-between; align-items: center; max-width: 1200px; margin: 0 auto; } .header-title { display: flex; align-items: center; gap: 12px; } .header-title h1 { font-size: 22px; font-weight: 500; color: #202124; margin: 0; } .model-badge { background: #e8f0fe; color: #1967d2; padding: 4px 12px; border-radius: 16px; font-size: 13px; font-weight: 500; } .header-actions { display: flex; gap: 8px; } .icon-btn { background: transparent; border: none; width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: background 0.2s; font-size: 20px; padding: 0; } .icon-btn:hover { background: #f1f3f4; opacity: 1; } .icon-btn:active { background: #e8eaed; } /* Settings Panel */ .settings-panel { background: #ffffff; border-bottom: 1px solid #e8eaed; max-height: 70vh; overflow-y: auto; animation: slideDown 0.3s ease-out; } @keyframes slideDown { from { max-height: 0; opacity: 0; } to { max-height: 70vh; opacity: 1; } } .settings-content { max-width: 800px; margin: 0 auto; padding: 24px 20px; } .settings-content h2 { font-size: 20px; font-weight: 500; color: #202124; margin-bottom: 20px; } /* Fields */ .field { margin-bottom: 24px; } label { display: block; font-size: 14px; color: #5f6368; margin-bottom: 8px; font-weight: 500; text-transform: none; letter-spacing: 0; } select, input[type="text"] { width: 100%; background: #ffffff; color: #202124; border: 1px solid #dadce0; border-radius: 8px; padding: 12px 16px; font-size: 14px; outline: none; transition: all 0.2s; font-family: inherit; } select:hover, input[type="text"]:hover { border-color: #bdc1c6; } select:focus, input[type="text"]:focus { border-color: #1967d2; box-shadow: 0 0 0 3px rgba(25, 103, 210, 0.1); } /* Buttons */ button { background: #1967d2; color: #ffffff; border: none; border-radius: 24px; padding: 10px 24px; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.2s; font-family: inherit; } button:hover { background: #1557b0; box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24); opacity: 1; } button:active { background: #1446a0; } button:disabled { background: #f1f3f4; color: #9aa0a6; cursor: not-allowed; box-shadow: none; opacity: 1; } /* Pull row */ .pull-row { display: flex; gap: 12px; margin-bottom: 12px; } .pull-row input { flex: 1; } .btn-pull { white-space: nowrap; padding: 10px 20px; font-size: 14px; } .status { font-size: 13px; color: #5f6368; margin-top: 8px; padding: 8px 12px; background: #f8f9fa; border-radius: 8px; } /* Model list */ .model-list { margin-top: 12px; max-height: 300px; overflow-y: auto; } .model-item { display: flex; align-items: center; justify-content: space-between; padding: 12px 16px; background: #f8f9fa; border: 1px solid #e8eaed; border-radius: 8px; margin-bottom: 8px; transition: all 0.2s; } .model-item:hover { background: #f1f3f4; border-color: #dadce0; } .model-info { display: flex; flex-direction: column; gap: 4px; } .model-name { font-size: 14px; font-weight: 500; color: #202124; } .model-size { font-size: 12px; color: #5f6368; } .btn-delete { background: transparent; color: #5f6368; padding: 8px; font-size: 18px; border-radius: 50%; width: 36px; height: 36px; display: flex; align-items: center; justify-content: center; } .btn-delete:hover { background: #fce8e6; color: #d93025; opacity: 1; } .empty { color: #5f6368; font-size: 14px; text-align: center; padding: 32px 20px; } /* Chat Container */ .chat-container { flex: 1; overflow-y: auto; background: #f8f9fa; padding: 20px; } /* Empty State */ .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100%; text-align: center; color: #5f6368; } .empty-icon { font-size: 64px; margin-bottom: 16px; opacity: 0.5; } .empty-state h2 { font-size: 24px; font-weight: 400; color: #202124; margin-bottom: 8px; } .empty-state p { font-size: 14px; color: #5f6368; } /* Messages */ .messages { max-width: 900px; margin: 0 auto; display: flex; flex-direction: column; gap: 16px; } .message { display: flex; gap: 12px; animation: fadeIn 0.3s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } .message-avatar { width: 36px; height: 36px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 20px; flex-shrink: 0; background: #e8eaed; } .message-user .message-avatar { background: #e8f0fe; } .message-assistant .message-avatar { background: #e8eaed; } .message-content { flex: 1; min-width: 0; } .message-text { background: #ffffff; padding: 12px 16px; border-radius: 8px; font-size: 14px; line-height: 1.6; color: #202124; white-space: pre-wrap; word-wrap: break-word; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); border: 1px solid #e8eaed; } .message-user .message-text { background: #e8f0fe; border-color: #d2e3fc; } .message-meta { font-size: 12px; color: #5f6368; margin-top: 6px; padding: 0 4px; } .message-model { color: #1967d2; } /* Typing Indicator */ .typing-indicator { display: flex; gap: 6px; padding: 12px 16px; } .typing-indicator span { width: 8px; height: 8px; border-radius: 50%; background: #5f6368; animation: typing 1.4s infinite; } .typing-indicator span:nth-child(2) { animation-delay: 0.2s; } .typing-indicator span:nth-child(3) { animation-delay: 0.4s; } @keyframes typing { 0%, 60%, 100% { opacity: 0.3; transform: translateY(0); } 30% { opacity: 1; transform: translateY(-8px); } } /* Input Container */ .input-container { background: #ffffff; border-top: 1px solid #e8eaed; padding: 16px 20px; box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.05); } .input-wrapper { max-width: 900px; margin: 0 auto; display: flex; gap: 12px; align-items: flex-end; } .chat-input { flex: 1; background: #f8f9fa; color: #202124; border: 1px solid #e8eaed; border-radius: 24px; padding: 12px 20px; font-size: 14px; outline: none; resize: none; max-height: 150px; font-family: inherit; line-height: 1.5; transition: all 0.2s; } .chat-input:hover { border-color: #dadce0; } .chat-input:focus { background: #ffffff; border-color: #1967d2; box-shadow: 0 0 0 3px rgba(25, 103, 210, 0.1); } .chat-input:disabled { background: #f1f3f4; color: #9aa0a6; cursor: not-allowed; } .send-btn { width: 48px; height: 48px; border-radius: 50%; padding: 0; display: flex; align-items: center; justify-content: center; font-size: 20px; flex-shrink: 0; background: #1967d2; color: #ffffff; } .send-btn:hover { background: #1557b0; } .send-btn:disabled { background: #f1f3f4; color: #9aa0a6; } /* Mobile Responsive */ @media (max-width: 768px) { .header { padding: 12px 16px; } .header-title h1 { font-size: 18px; } .model-badge { font-size: 11px; padding: 3px 8px; } .settings-content { padding: 20px 16px; } .chat-container { padding: 16px; } .messages { gap: 12px; } .message-avatar { width: 32px; height: 32px; font-size: 16px; } .message-text { font-size: 14px; padding: 10px 14px; } .input-container { padding: 12px 16px; } .chat-input { padding: 10px 16px; font-size: 16px; /* Prevents zoom on iOS */ } .send-btn { width: 44px; height: 44px; } .empty-icon { font-size: 48px; } .empty-state h2 { font-size: 20px; } } @media (max-width: 480px) { .header-title { gap: 8px; } .header-title h1 { font-size: 16px; } .model-badge { display: none; } .icon-btn { width: 36px; height: 36px; font-size: 18px; } .settings-content h2 { font-size: 18px; } .field { margin-bottom: 20px; } .pull-row { flex-direction: column; gap: 8px; } .btn-pull { width: 100%; } }