/* ======================================================== CareerAI — Claude-Style Interface Premium, clean, warm design system ======================================================== */ /* ===== RESET & BASE ===== */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } :root { /* Dark Theme Palette */ --bg-primary: #111822; --bg-secondary: #0d131b; --bg-sidebar: #0f151e; --bg-hover: #1e293b; --bg-input: #1a2332; --bg-message-ai: transparent; --bg-message-user: transparent; /* Text */ --text-primary: #ffffff; --text-secondary: #94a3b8; --text-tertiary: #64748b; --text-placeholder: #475569; --text-link: #55c970; /* Accent (Green and Blue from logo) */ --accent-primary: #55c970; --accent-secondary: #5584c0; --accent-bg: rgba(85, 201, 112, 0.1); /* Borders */ --border-light: #263346; --border-medium: #334155; --border-input: #334155; --border-focus: #55c970; /* Shadows */ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.2); --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.3); --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.4); --shadow-input: 0 1px 3px rgba(0, 0, 0, 0.2), 0 0 0 1px var(--border-input); --shadow-input-focus: 0 0 0 2px rgba(85, 201, 112, 0.25), 0 1px 3px rgba(0, 0, 0, 0.2); /* Sidebar */ --sidebar-width: 260px; /* Transitions */ --transition-fast: 150ms cubic-bezier(0.4, 0, 0.2, 1); --transition-normal: 250ms cubic-bezier(0.4, 0, 0.2, 1); --transition-smooth: 350ms cubic-bezier(0.25, 0.46, 0.45, 0.94); /* Typography */ --font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif; --font-serif: 'Georgia', 'Times New Roman', serif; } html { height: 100%; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; } body { font-family: var(--font-family); background: var(--bg-primary); color: var(--text-primary); height: 100%; display: flex; overflow: hidden; line-height: 1.5; font-size: 15px; } /* ===== SCROLLBAR ===== */ ::-webkit-scrollbar { width: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: var(--border-light); border-radius: 100px; } ::-webkit-scrollbar-thumb:hover { background: var(--border-medium); } /* ===== SIDEBAR ===== */ .sidebar { width: var(--sidebar-width); min-width: var(--sidebar-width); height: 100vh; background: var(--bg-sidebar); border-right: 1px solid var(--border-light); display: flex; flex-direction: column; transition: transform var(--transition-smooth), width var(--transition-smooth), min-width var(--transition-smooth); z-index: 100; position: relative; } .sidebar.collapsed { width: 0; min-width: 0; transform: translateX(-100%); border-right: none; } .sidebar-inner { display: flex; flex-direction: column; height: 100%; overflow: hidden; width: var(--sidebar-width); } /* Sidebar Top */ .sidebar-top { display: flex; align-items: center; justify-content: space-between; padding: 12px 12px 8px; } .sidebar-icon-btn { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border: none; background: transparent; color: var(--text-secondary); border-radius: 8px; cursor: pointer; transition: all var(--transition-fast); } .sidebar-icon-btn:hover { background: var(--bg-hover); color: var(--text-primary); } #toggleSidebar { display: none; } #newChatBtn { margin-left: auto; } /* Search */ .sidebar-search { padding: 4px 12px 12px; display: flex; align-items: center; gap: 8px; background: var(--bg-hover); margin: 0 12px 8px; border-radius: 8px; padding: 8px 10px; color: var(--text-tertiary); } .sidebar-search input { border: none; background: transparent; font-size: 0.82rem; color: var(--text-primary); outline: none; width: 100%; font-family: var(--font-family); } .sidebar-search input::placeholder { color: var(--text-placeholder); } /* Nav */ .sidebar-nav { padding: 4px 8px; display: flex; flex-direction: column; gap: 1px; } .nav-item { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border-radius: 8px; color: var(--text-secondary); text-decoration: none; font-size: 0.88rem; font-weight: 500; transition: all var(--transition-fast); cursor: pointer; } .nav-item:hover { background: var(--bg-hover); color: var(--text-primary); } .nav-item.active { background: var(--bg-hover); color: var(--text-primary); font-weight: 600; } /* Sidebar sections */ .sidebar-section { padding: 12px 12px 4px; flex: 1; overflow-y: auto; min-height: 0; } .sidebar-section-label { font-size: 0.72rem; font-weight: 600; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 0.08em; padding: 0 4px 8px; } /* Conversation list */ .conversation-list { display: flex; flex-direction: column; gap: 1px; } .conversation-item { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; border-radius: 8px; font-size: 0.84rem; color: var(--text-secondary); cursor: pointer; transition: all var(--transition-fast); } .conversation-item:hover { background: var(--bg-hover); color: var(--text-primary); } .conversation-item.active { background: var(--bg-hover); color: var(--text-primary); font-weight: 500; } .conversation-delete { background: transparent; border: none; color: var(--text-tertiary); cursor: pointer; opacity: 0; transition: all var(--transition-fast); display: flex; align-items: center; justify-content: center; padding: 4px; border-radius: 4px; margin-left: 6px; } .conversation-item:hover .conversation-delete { opacity: 1; } .conversation-delete:hover { color: #ef4444; /* subtle red */ background: rgba(239, 68, 68, 0.1); } /* Document list */ .document-list { display: flex; flex-direction: column; gap: 4px; } .doc-item { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 8px; font-size: 0.8rem; color: var(--text-secondary); transition: all var(--transition-fast); } .doc-item:hover { background: var(--bg-hover); } .doc-item .doc-icon { font-size: 0.9rem; } .doc-item .doc-name { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .doc-item .doc-remove { opacity: 0; cursor: pointer; color: var(--text-tertiary); border: none; background: none; font-size: 0.75rem; transition: opacity var(--transition-fast); } .doc-item:hover .doc-remove { opacity: 1; } .empty-docs { display: flex; align-items: center; gap: 6px; padding: 8px; font-size: 0.8rem; color: var(--text-tertiary); } .empty-docs-icon { font-size: 1rem; } /* Footer */ .sidebar-footer { padding: 12px; border-top: 1px solid var(--border-light); margin-top: auto; } .sidebar-plan { text-align: center; font-size: 0.78rem; color: var(--text-tertiary); margin-bottom: 10px; } .plan-separator { margin: 0 4px; } .plan-upgrade { color: var(--text-link); text-decoration: underline; text-underline-offset: 2px; font-weight: 500; } .plan-upgrade:hover { color: var(--accent-secondary); } .sidebar-user { display: flex; align-items: center; gap: 10px; padding: 8px; border-radius: 10px; cursor: pointer; transition: all var(--transition-fast); } .sidebar-user:hover { background: var(--bg-hover); } .user-avatar { width: 28px; height: 28px; background: linear-gradient(135deg, var(--accent-secondary), var(--accent-primary)); border-radius: 6px; display: flex; align-items: center; justify-content: center; font-size: 0.68rem; font-weight: 700; color: white; letter-spacing: 0.02em; } .user-name { font-size: 0.84rem; font-weight: 500; color: var(--text-primary); } /* ===== MOBILE SIDEBAR TOGGLE ===== */ .mobile-sidebar-toggle { display: none; position: fixed; top: 12px; left: 12px; z-index: 200; width: 36px; height: 36px; align-items: center; justify-content: center; background: var(--bg-primary); border: 1px solid var(--border-light); border-radius: 8px; cursor: pointer; color: var(--text-secondary); box-shadow: var(--shadow-sm); transition: all var(--transition-fast); } .mobile-sidebar-toggle:hover { background: var(--bg-hover); color: var(--text-primary); } /* ===== MAIN CONTENT ===== */ .main-content { flex: 1; display: flex; flex-direction: column; height: 100vh; overflow: hidden; transition: margin-left var(--transition-smooth); } /* Notification bar */ .notification-bar { display: flex; align-items: center; justify-content: center; padding: 6px 16px; font-size: 0.78rem; color: var(--text-tertiary); background: var(--bg-primary); border-bottom: 1px solid var(--border-light); gap: 4px; } .notification-separator { color: var(--text-placeholder); } .notification-link { color: var(--text-primary); text-decoration: underline; text-underline-offset: 2px; font-weight: 500; transition: color var(--transition-fast); } .notification-link:hover { color: var(--accent-primary); } /* ===== WELCOME SCREEN ===== */ .welcome-screen { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 40px 24px; gap: 0; animation: fadeIn 0.5s ease-out; overflow-y: auto; } @keyframes fadeIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } /* Logo */ .welcome-logo { margin-bottom: 24px; } /* Heading */ .welcome-heading { font-family: var(--font-serif); font-size: clamp(1.8rem, 4vw, 2.6rem); font-weight: 400; color: var(--text-primary); text-align: center; line-height: 1.25; margin-bottom: 36px; letter-spacing: -0.02em; } /* Welcome input */ .welcome-input-container { width: 100%; max-width: 620px; margin-bottom: 20px; } .welcome-input-wrapper { background: var(--bg-input); border: 1px solid var(--border-input); border-radius: 16px; box-shadow: var(--shadow-input); overflow: hidden; transition: all var(--transition-normal); } .welcome-input-wrapper:focus-within { border-color: var(--border-focus); box-shadow: var(--shadow-input-focus); } .welcome-input { width: 100%; padding: 16px 18px 8px; border: none; outline: none; font-size: 0.95rem; font-family: var(--font-family); color: var(--text-primary); resize: none; line-height: 1.5; background: transparent; min-height: 48px; max-height: 200px; } .welcome-input::placeholder { color: var(--text-placeholder); } .welcome-input-actions { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; } .input-action-btn { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border: none; background: transparent; color: var(--text-tertiary); border-radius: 8px; cursor: pointer; transition: all var(--transition-fast); } .input-action-btn:hover { background: var(--bg-hover); color: var(--text-primary); } .input-right-actions { display: flex; align-items: center; gap: 8px; } /* Model selector */ .model-selector { display: flex; align-items: center; gap: 4px; padding: 4px 10px; border-radius: 8px; font-size: 0.82rem; color: var(--text-tertiary); cursor: pointer; transition: all var(--transition-fast); user-select: none; } .model-selector:hover { background: var(--bg-hover); color: var(--text-secondary); } .model-name { font-weight: 500; } /* Send button */ .send-btn { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border: none; background: var(--text-primary); color: var(--bg-primary); border-radius: 10px; cursor: pointer; transition: all var(--transition-fast); opacity: 0.3; } .send-btn:not(:disabled) { opacity: 1; } .send-btn:not(:disabled):hover { background: var(--accent-primary); transform: scale(1.05); } .send-btn:disabled { cursor: not-allowed; } /* Suggestion chips */ .suggestion-chips { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; max-width: 700px; margin-top: 4px; } .chip { display: inline-flex; align-items: center; gap: 6px; padding: 8px 16px; border: 1px solid var(--border-light); border-radius: 999px; background: var(--bg-input); color: var(--text-secondary); font-size: 0.84rem; font-family: var(--font-family); font-weight: 500; cursor: pointer; transition: all var(--transition-fast); white-space: nowrap; } .chip:hover { border-color: var(--border-medium); background: var(--bg-hover); color: var(--text-primary); transform: translateY(-1px); box-shadow: var(--shadow-sm); } .chip:active { transform: translateY(0); } .chip-icon { font-size: 0.82rem; } /* ===== CHAT SCREEN ===== */ .chat-screen { flex: 1; display: flex; flex-direction: column; overflow: hidden; } .chat-screen.hidden { display: none; } /* Chat messages */ .chat-messages { flex: 1; overflow-y: auto; padding: 20px 0; } .message { padding: 24px 0; animation: messageIn 0.35s ease-out; } @keyframes messageIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } } .message-inner { max-width: 768px; margin: 0 auto; padding: 0 24px; display: flex; gap: 16px; } .message-avatar { width: 28px; height: 28px; min-width: 28px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 0.95rem; margin-top: 2px; } .message-avatar.user { background: var(--bg-hover); border: 1px solid var(--border-light); } .message-avatar.ai { background: transparent; color: white; font-size: 0.75rem; } .message-avatar.ai svg { width: 24px; height: 24px; } .message-body { flex: 1; min-width: 0; } .message-author { font-size: 0.84rem; font-weight: 600; color: var(--text-primary); margin-bottom: 6px; } .message-content { font-size: 0.94rem; line-height: 1.65; color: var(--text-primary); word-break: break-word; } .message-content p { margin-bottom: 12px; } .message-content p:last-child { margin-bottom: 0; } .message-content strong { font-weight: 600; } .message-content code { background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-size: 0.88em; font-family: 'SF Mono', 'Fira Code', 'Consolas', monospace; } .message-content pre { background: #1a1915; color: #e4e4e7; padding: 16px; border-radius: 10px; overflow-x: auto; margin: 12px 0; font-size: 0.85rem; line-height: 1.5; } .message-content pre code { background: none; padding: 0; color: inherit; } .message-content ul, .message-content ol { padding-left: 20px; margin: 8px 0; } .message-content li { margin-bottom: 4px; } /* Message actions */ .message-actions { display: flex; gap: 4px; margin-top: 12px; opacity: 0; transition: opacity var(--transition-fast); } .message:hover .message-actions { opacity: 1; } .action-btn { width: 30px; height: 30px; display: flex; align-items: center; justify-content: center; border: none; background: transparent; color: var(--text-tertiary); border-radius: 6px; cursor: pointer; transition: all var(--transition-fast); } .action-btn:hover { background: var(--bg-hover); color: var(--text-secondary); } .action-btn.copied { color: #16a34a; } /* AI message specific */ .message.ai { background: var(--bg-message-ai); } /* Typing indicator */ .typing-indicator { display: flex; gap: 4px; padding: 4px 0; } .typing-dot { width: 6px; height: 6px; background: var(--text-tertiary); border-radius: 50%; animation: typingBounce 1.4s infinite ease-in-out; } .typing-dot:nth-child(2) { animation-delay: 0.2s; } .typing-dot:nth-child(3) { animation-delay: 0.4s; } @keyframes typingBounce { 0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; } 40% { transform: scale(1); opacity: 1; } } /* Chat input (bottom) */ .chat-input-container { padding: 12px 24px 20px; background: linear-gradient(to top, var(--bg-primary) 70%, transparent); } .chat-input-wrapper { max-width: 768px; margin: 0 auto; background: var(--bg-input); border: 1px solid var(--border-input); border-radius: 16px; box-shadow: var(--shadow-input); overflow: hidden; transition: all var(--transition-normal); } .chat-input-wrapper:focus-within { border-color: var(--border-focus); box-shadow: var(--shadow-input-focus); } .chat-input { width: 100%; padding: 14px 18px 6px; border: none; outline: none; font-size: 0.95rem; font-family: var(--font-family); color: var(--text-primary); resize: none; line-height: 1.5; background: transparent; min-height: 44px; max-height: 200px; } .chat-input::placeholder { color: var(--text-placeholder); } .chat-input-actions { display: flex; align-items: center; justify-content: space-between; padding: 6px 12px; } /* ===== MODEL DROPDOWN ===== */ .model-dropdown { position: fixed; background: var(--bg-input); border: 1px solid var(--border-light); border-radius: 12px; box-shadow: var(--shadow-lg); min-width: 260px; z-index: 500; padding: 6px; animation: dropdownIn 0.2s ease-out; } .model-dropdown.hidden { display: none; } @keyframes dropdownIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: translateY(0); } } .model-dropdown-header { font-size: 0.72rem; font-weight: 600; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 0.08em; padding: 8px 12px 6px; } .model-option { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border-radius: 8px; cursor: pointer; transition: all var(--transition-fast); overflow: hidden; } .model-option:hover { background: var(--bg-hover); } .model-option.active { background: var(--accent-bg); } .model-option-icon { width: 26px; height: 26px; max-width: 26px; max-height: 26px; min-width: 26px; border-radius: 6px; object-fit: contain; flex-shrink: 0; } .model-option-info { display: flex; flex-direction: column; flex: 1; } .model-option-name { font-size: 0.88rem; font-weight: 500; color: var(--text-primary); } .model-option-desc { font-size: 0.75rem; color: var(--text-tertiary); margin-top: 1px; } .model-check { color: var(--accent-primary); opacity: 0; transition: opacity var(--transition-fast); } .model-option.active .model-check { opacity: 1; } /* ===== UPLOAD MODAL ===== */ .upload-modal { position: fixed; inset: 0; z-index: 400; display: flex; align-items: center; justify-content: center; } .upload-modal.hidden { display: none; } .upload-modal-backdrop { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.4); backdrop-filter: blur(4px); animation: backdropIn 0.25s ease-out; } @keyframes backdropIn { from { opacity: 0; } to { opacity: 1; } } .upload-modal-content { position: relative; background: var(--bg-input); border-radius: 18px; box-shadow: var(--shadow-lg); width: 90%; max-width: 520px; animation: modalIn 0.3s ease-out; } @keyframes modalIn { from { opacity: 0; transform: scale(0.96) translateY(8px); } to { opacity: 1; transform: scale(1) translateY(0); } } .upload-modal-header { display: flex; align-items: center; justify-content: space-between; padding: 20px 24px 12px; } .upload-modal-header h3 { font-size: 1.05rem; font-weight: 600; color: var(--text-primary); } .upload-close { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border: none; background: transparent; font-size: 1.4rem; color: var(--text-tertiary); border-radius: 8px; cursor: pointer; transition: all var(--transition-fast); } .upload-close:hover { background: var(--bg-hover); color: var(--text-primary); } .upload-modal-body { padding: 0 24px 24px; } /* Upload type selector */ .upload-type-selector { display: grid; grid-template-columns: repeat(4, 1fr); gap: 6px; margin-bottom: 16px; } .upload-type { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 6px; border: 1px solid var(--border-light); border-radius: 10px; font-size: 0.72rem; font-weight: 500; color: var(--text-secondary); cursor: pointer; text-align: center; transition: all var(--transition-fast); } .upload-type:hover { border-color: var(--border-medium); background: var(--bg-hover); } .upload-type.active { border-color: var(--accent-primary); background: var(--accent-bg); color: var(--accent-primary); } .upload-type span { font-size: 1.2rem; } /* Dropzone */ .upload-dropzone { border: 2px dashed var(--border-light); border-radius: 14px; padding: 36px 24px; text-align: center; cursor: pointer; transition: all var(--transition-normal); color: var(--text-tertiary); } .upload-dropzone:hover, .upload-dropzone.drag-over { border-color: var(--accent-primary); background: var(--accent-bg); color: var(--accent-primary); } .upload-dropzone svg { margin-bottom: 12px; opacity: 0.5; } .upload-dropzone p { font-size: 0.88rem; color: var(--text-secondary); margin-bottom: 6px; } .upload-dropzone strong { color: var(--accent-primary); } .upload-formats { font-size: 0.75rem; color: var(--text-tertiary); } /* ===== HIDDEN UTILITY ===== */ .hidden { display: none !important; } /* ===== PROCESSING STATE ===== */ .upload-processing { display: flex; align-items: center; gap: 10px; padding: 16px; background: var(--accent-bg); border-radius: 10px; font-size: 0.88rem; color: var(--accent-primary); font-weight: 500; } .upload-processing .spinner { width: 18px; height: 18px; border: 2px solid var(--border-light); border-top-color: var(--accent-primary); border-radius: 50%; animation: spin 0.7s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Upload success */ .upload-success { display: flex; align-items: center; gap: 10px; padding: 12px 16px; background: rgba(22, 163, 74, 0.06); border: 1px solid rgba(22, 163, 74, 0.15); border-radius: 10px; font-size: 0.85rem; color: #16a34a; font-weight: 500; margin-top: 12px; } /* ===== RESPONSIVE ===== */ @media (max-width: 768px) { .sidebar { position: fixed; left: 0; top: 0; bottom: 0; z-index: 300; width: 100%; max-width: 300px; /* Instead of taking the whole screen on tablets */ } .sidebar.collapsed { transform: translateX(-100%); width: 100%; min-width: 100%; border-right: 1px solid var(--border-light); } .mobile-sidebar-toggle { display: flex; } .sidebar:not(.collapsed)~.mobile-sidebar-toggle { display: none; } #toggleSidebar { display: flex; } .welcome-heading { font-size: 1.6rem; } .suggestion-chips { flex-direction: column; align-items: center; } .chip { width: 100%; max-width: 300px; justify-content: center; } .message-inner { padding: 0 16px; } .upload-type-selector { grid-template-columns: repeat(2, 1fr); } /* Force show delete button on mobile since there is no hover */ .conversation-delete { opacity: 1; padding: 6px; /* slightly bigger touch target */ } } @media (max-width: 480px) { .welcome-heading { font-size: 1.35rem; } .sidebar { width: 100%; min-width: 100%; } .sidebar-inner { width: 100%; } .notification-bar { font-size: 0.72rem; } } /* ===== EXPORT TOOLBAR (in messages) ===== */ .export-toolbar { display: flex; align-items: center; gap: 6px; margin-top: 12px; flex-wrap: wrap; } .export-btn { padding: 5px 12px; border: 1px solid var(--border-light); border-radius: 8px; background: var(--bg-input); color: var(--text-secondary); font-size: 0.76rem; font-weight: 500; font-family: var(--font-family); cursor: pointer; transition: all var(--transition-fast); display: flex; align-items: center; gap: 4px; } .export-btn:hover { border-color: var(--accent-primary); color: var(--accent-primary); background: var(--accent-bg); } /* ===== TOAST NOTIFICATION ===== */ .toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(100px); background: var(--text-primary); color: var(--bg-primary); padding: 10px 20px; border-radius: 10px; font-size: 0.85rem; font-weight: 500; z-index: 1000; opacity: 0; transition: all 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); pointer-events: none; } .toast.show { opacity: 1; transform: translateX(-50%) translateY(0); } /* ===== MARKDOWN STYLES in AI messages ===== */ .message-content h1, .message-content h2, .message-content h3 { margin-top: 16px; margin-bottom: 8px; font-weight: 600; color: var(--text-primary); } .message-content h1 { font-size: 1.25rem; } .message-content h2 { font-size: 1.1rem; } .message-content h3 { font-size: 1rem; } .message-content blockquote { border-left: 3px solid var(--accent-primary); padding-left: 16px; margin: 12px 0; color: var(--text-secondary); font-style: italic; } .message-content hr { border: none; border-top: 1px solid var(--border-light); margin: 16px 0; } .message-content table { border-collapse: collapse; width: 100%; margin: 12px 0; font-size: 0.88rem; } .message-content th, .message-content td { border: 1px solid var(--border-light); padding: 8px 12px; text-align: left; } .message-content th { background: var(--bg-hover); font-weight: 600; } /* ===== API KEY CONFIG PANEL ===== */ .config-panel { max-width: 768px; margin: 40px auto; padding: 0 24px; } .config-card { background: var(--bg-input); border: 1px solid var(--border-light); border-radius: 16px; padding: 32px; box-shadow: var(--shadow-md); } .config-card h2 { font-size: 1.15rem; font-weight: 600; margin-bottom: 8px; display: flex; align-items: center; gap: 8px; } .config-card p { color: var(--text-secondary); font-size: 0.88rem; margin-bottom: 20px; } .config-input-group { display: flex; gap: 8px; margin-bottom: 12px; } .config-input { flex: 1; padding: 10px 14px; border: 1px solid var(--border-input); border-radius: 10px; font-size: 0.9rem; font-family: var(--font-family); color: var(--text-primary); background: var(--bg-primary); outline: none; transition: all var(--transition-fast); } .config-input:focus { border-color: var(--border-focus); box-shadow: var(--shadow-input-focus); } .config-btn { padding: 10px 20px; border: none; background: var(--text-primary); color: var(--bg-primary); border-radius: 10px; font-size: 0.88rem; font-weight: 600; font-family: var(--font-family); cursor: pointer; transition: all var(--transition-fast); white-space: nowrap; } .config-btn:hover { background: var(--accent-primary); transform: translateY(-1px); } .config-status { display: flex; align-items: center; gap: 6px; font-size: 0.82rem; font-weight: 500; } .config-status.connected { color: #16a34a; } .config-status.disconnected { color: #dc2626; } /* ===== LOGIN MODAL ===== */ .google-btn { display: flex; align-items: center; justify-content: center; gap: 12px; width: 100%; padding: 12px 16px; background: white; color: #3c4043; border: 1px solid #dadce0; border-radius: 8px; font-size: 0.95rem; font-weight: 500; font-family: 'Roboto', var(--font-family); cursor: pointer; transition: all var(--transition-fast); } .google-btn:hover { background: #f8f9fa; box-shadow: 0 1px 3px rgba(60, 64, 67, 0.3); } .google-btn svg { min-width: 20px; } .status-dot { width: 6px; height: 6px; border-radius: 50%; background: currentColor; } /* ===== DARK SELECT DROPDOWNS ===== */ select.welcome-input, select { background-color: var(--bg-secondary) !important; color: var(--text-primary) !important; border-color: var(--border-medium) !important; color-scheme: dark; -webkit-appearance: none; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23888' stroke-width='2'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 10px center; padding-right: 32px !important; } select.welcome-input option, select option { background-color: var(--bg-secondary) !important; color: var(--text-primary) !important; } /* ===== JOBS CUSTOM DROPDOWNS ===== */ .jobs-custom-select { position: relative; user-select: none; } .jobs-select-btn { display: flex; align-items: center; justify-content: space-between; gap: 6px; padding: 6px 10px; background: var(--bg-hover); border: 1px solid var(--border-medium); border-radius: 6px; color: var(--text-primary); font-size: 0.8rem; cursor: pointer; transition: border-color 0.2s, background 0.2s; white-space: nowrap; } .jobs-select-btn:hover { border-color: var(--accent-primary); background: var(--bg-secondary); } .jobs-select-btn svg { flex-shrink: 0; color: var(--text-tertiary); transition: transform 0.2s; } .jobs-custom-select.open .jobs-select-btn svg { transform: rotate(180deg); } .jobs-custom-select.open .jobs-select-btn { border-color: var(--accent-primary); } .jobs-select-menu { display: none; position: absolute; top: calc(100% + 4px); left: 0; min-width: 100%; background: var(--bg-secondary); border: 1px solid var(--border-medium); border-radius: 8px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4); z-index: 9999; overflow: hidden; animation: dropdownFadeIn 0.15s ease; } @keyframes dropdownFadeIn { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } } .jobs-custom-select.open .jobs-select-menu { display: block; } .jobs-select-option { padding: 8px 14px; font-size: 0.82rem; color: var(--text-secondary); cursor: pointer; transition: background 0.15s, color 0.15s; white-space: nowrap; } .jobs-select-option:hover { background: var(--bg-hover); color: var(--text-primary); } .jobs-select-option.active { color: var(--accent-primary); font-weight: 600; background: rgba(139, 92, 246, 0.08); }