:root { --bg: #0f172a; --card-bg: rgba(30, 41, 59, 0.7); --accent: #38bdf8; --accent-glow: rgba(56, 189, 248, 0.3); --text: #f1f5f9; --text-dim: #94a3b8; } * { box-sizing: border-box; margin: 0; padding: 0; } body { background-color: var(--bg); color: var(--text); font-family: 'Inter', sans-serif; height: 100vh; display: flex; justify-content: center; align-items: center; overflow: hidden; } .background-blobs { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: -1; filter: blur(80px); } .blob { position: absolute; width: 300px; height: 300px; border-radius: 50%; background: var(--accent-glow); opacity: 0.4; animation: move 20s infinite alternate; } .blob-1 { top: -100px; left: -100px; background: #6366f1; } .blob-2 { bottom: -100px; right: -100px; background: #38bdf8; } .blob-3 { top: 40%; left: 50%; width: 500px; height: 500px; background: #1e1b4b; } @keyframes move { from { transform: translate(0, 0); } to { transform: translate(50px, 50px); } } .app-container { width: 90%; max-width: 900px; height: 85vh; background: var(--card-bg); backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 20px; display: flex; flex-direction: column; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.5); position: relative; } header { padding: 20px 30px; border-bottom: 1px solid rgba(255, 255, 255, 0.1); display: flex; justify-content: space-between; align-items: center; } .logo { display: flex; align-items: center; gap: 12px; } .logo-icon { font-size: 1.5rem; } h1 { font-family: 'Outfit', sans-serif; font-size: 1.4rem; font-weight: 700; } h1 span { color: var(--accent); } /* BYOK Settings */ .settings-toggle { margin-left: auto; margin-right: 15px; cursor: pointer; font-size: 1.2rem; padding: 8px; border-radius: 50%; transition: all 0.3s; background: rgba(255, 255, 255, 0.05); display: flex; align-items: center; justify-content: center; } .settings-toggle:hover { background: rgba(255, 255, 255, 0.15); transform: rotate(30deg); } .settings-panel { background: rgba(15, 23, 42, 0.95); backdrop-filter: blur(12px); border: 1px solid rgba(56, 189, 248, 0.2); border-radius: 16px; padding: 24px; margin: 0 20px 25px 20px; display: none; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5); position: relative; z-index: 1000; } .settings-panel.active { display: block; } .settings-panel h3 { margin: 0 0 20px 0; font-size: 1.1rem; color: var(--accent); letter-spacing: 0.5px; text-transform: uppercase; } .settings-group { margin-bottom: 16px; } .settings-group label { display: block; font-size: 0.85rem; margin-bottom: 8px; color: rgba(255, 255, 255, 0.8); font-weight: 500; } .settings-group input { width: 100%; background: rgba(0, 0, 0, 0.4); border: 1px solid rgba(255, 255, 255, 0.15); border-radius: 8px; padding: 10px 14px; color: white; font-family: inherit; font-size: 0.95rem; transition: border-color 0.3s; } .settings-group input:focus { outline: none; border-color: var(--accent); background: rgba(0, 0, 0, 0.6); } .settings-note { font-size: 0.75rem; color: rgba(255, 255, 255, 0.4); margin-top: 15px; font-style: italic; } .status { display: flex; align-items: center; gap: 8px; font-size: 0.8rem; color: var(--text-dim); } .status-dot { width: 8px; height: 8px; background: #10b981; border-radius: 50%; box-shadow: 0 0 10px #10b981; } main { flex: 1; padding: 30px; overflow-y: auto; display: flex; flex-direction: column; gap: 20px; } .welcome-message { text-align: center; padding: 40px 20px; max-width: 600px; margin: auto; } .welcome-message h2 { font-family: 'Outfit', sans-serif; margin-bottom: 15px; } .welcome-message p { color: var(--text-dim); line-height: 1.6; margin-bottom: 25px; } .suggestions { display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; } .suggestions button { background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); color: white; padding: 8px 16px; border-radius: 20px; cursor: pointer; font-size: 0.85rem; transition: all 0.2s; } .suggestions button:hover { background: var(--accent-glow); border-color: var(--accent); } /* Chat Messages */ .message { max-width: 80%; padding: 14px 18px; border-radius: 18px; font-size: 0.95rem; line-height: 1.5; word-wrap: break-word; } .user-message { align-self: flex-end; background: linear-gradient(135deg, #1e3a8a, #1e40af); border-bottom-right-radius: 4px; } .bot-message { align-self: flex-start; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.1); border-bottom-left-radius: 4px; } .loading-msg { padding: 10px 18px; } .typing-indicator { display: flex; gap: 5px; } .typing-indicator span { width: 6px; height: 6px; background: var(--text-dim); border-radius: 50%; animation: bounce 1.4s infinite; } .typing-indicator span:nth-child(2) { animation-delay: 0.2s; } .typing-indicator span:nth-child(3) { animation-delay: 0.4s; } @keyframes bounce { 0%, 80%, 100% { transform: translateY(0); } 40% { transform: translateY(-6px); } } /* Footer & Input */ footer { padding: 20px 30px; border-top: 1px solid rgba(255, 255, 255, 0.1); } .input-wrapper { display: flex; align-items: flex-end; background: rgba(0, 0, 0, 0.2); border: 1px solid rgba(255, 255, 255, 0.1); border-radius: 12px; padding: 10px; gap: 15px; } textarea { flex: 1; background: none; border: none; color: white; resize: none; font-family: inherit; font-size: 1rem; max-height: 150px; padding: 5px; } textarea:focus { outline: none; } #send-btn { background: var(--accent); color: black; border: none; width: 40px; height: 40px; border-radius: 10px; display: flex; justify-content: center; align-items: center; cursor: pointer; flex-shrink: 0; transition: transform 0.2s; } #send-btn:hover { transform: scale(1.05); } #send-btn svg { width: 20px; height: 20px; } .pipeline-stats { margin-top: 15px; text-align: center; font-size: 0.75rem; color: var(--text-dim); }