@tailwind base; @tailwind components; @tailwind utilities; /* ── Google Fonts ──────────────────────────────────────────── */ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap'); /* ── CSS Variables ──────────────────────────────────────────── */ :root { --color-bg-primary: #0f172a; --color-bg-secondary: #1e293b; --color-bg-card: #1e293b; --color-border: #334155; --color-text-primary: #f1f5f9; --color-text-muted: #94a3b8; --color-accent-blue: #3b82f6; --color-accent-purple: #8b5cf6; --color-accent-cyan: #06b6d4; --color-accent-green: #10b981; --color-accent-amber: #f59e0b; --scrollbar-width: 6px; } /* ── Base Styles ────────────────────────────────────────────── */ * { box-sizing: border-box; margin: 0; padding: 0; } html, body, #root { height: 100%; width: 100%; } body { font-family: 'Inter', system-ui, sans-serif; background-color: var(--color-bg-primary); color: var(--color-text-primary); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* ── Custom Scrollbar ───────────────────────────────────────── */ ::-webkit-scrollbar { width: var(--scrollbar-width); height: var(--scrollbar-width); } ::-webkit-scrollbar-track { background: var(--color-bg-primary); } ::-webkit-scrollbar-thumb { background: var(--color-border); border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: #475569; } /* ── Prose / Markdown Styling ──────────────────────────────── */ .prose-dark { color: var(--color-text-primary); line-height: 1.7; } .prose-dark h1, .prose-dark h2, .prose-dark h3 { color: #f8fafc; font-weight: 600; margin: 1rem 0 0.5rem; } .prose-dark p { margin: 0.5rem 0; } .prose-dark code { background: #334155; padding: 0.15em 0.4em; border-radius: 4px; font-family: 'JetBrains Mono', monospace; font-size: 0.875em; color: var(--color-accent-cyan); } .prose-dark pre { background: #0d1117; border: 1px solid var(--color-border); border-radius: 8px; padding: 1rem; overflow-x: auto; margin: 0.75rem 0; } .prose-dark pre code { background: transparent; padding: 0; color: #e2e8f0; } .prose-dark ul, .prose-dark ol { padding-left: 1.5rem; margin: 0.5rem 0; } .prose-dark li { margin: 0.25rem 0; } .prose-dark blockquote { border-left: 3px solid var(--color-accent-blue); padding-left: 1rem; color: var(--color-text-muted); margin: 0.75rem 0; } .prose-dark table { width: 100%; border-collapse: collapse; margin: 0.75rem 0; font-size: 0.875rem; } .prose-dark th { background: #334155; padding: 0.5rem 0.75rem; text-align: left; font-weight: 600; border: 1px solid var(--color-border); } .prose-dark td { padding: 0.5rem 0.75rem; border: 1px solid var(--color-border); } .prose-dark tr:nth-child(even) td { background: #1a2436; } /* ── Glassmorphism Cards ─────────────────────────────────────── */ .glass-card { background: rgba(30, 41, 59, 0.7); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid rgba(51, 65, 85, 0.5); border-radius: 12px; } /* ── Gradient Text ───────────────────────────────────────────── */ .gradient-text { background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 50%, #06b6d4 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* ── Agent Type Badges ───────────────────────────────────────── */ .agent-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; border-radius: 20px; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; } .agent-badge.retrieval { background: rgba(59,130,246,0.15); color: #60a5fa; border: 1px solid rgba(59,130,246,0.3); } .agent-badge.sql { background: rgba(16,185,129,0.15); color: #34d399; border: 1px solid rgba(16,185,129,0.3); } .agent-badge.analytics { background: rgba(245,158,11,0.15); color: #fbbf24; border: 1px solid rgba(245,158,11,0.3); } .agent-badge.code { background: rgba(139,92,246,0.15); color: #a78bfa; border: 1px solid rgba(139,92,246,0.3); } .agent-badge.web { background: rgba(6,182,212,0.15); color: #22d3ee; border: 1px solid rgba(6,182,212,0.3); } .agent-badge.hr { background: rgba(236,72,153,0.15); color: #f472b6; border: 1px solid rgba(236,72,153,0.3); } /* ── Typing Indicator ─────────────────────────────────────────── */ .typing-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--color-accent-blue); animation: typingBounce 1.2s ease-in-out infinite; } .typing-dot:nth-child(2) { animation-delay: 0.2s; } .typing-dot:nth-child(3) { animation-delay: 0.4s; } @keyframes typingBounce { 0%, 80%, 100% { transform: translateY(0); opacity: 0.5; } 40% { transform: translateY(-6px); opacity: 1; } } /* ── Sidebar hover glow ───────────────────────────────────────── */ .sidebar-item:hover { background: rgba(59, 130, 246, 0.1); box-shadow: inset 2px 0 0 var(--color-accent-blue); } .sidebar-item.active { background: rgba(59, 130, 246, 0.15); box-shadow: inset 2px 0 0 var(--color-accent-blue); } /* ── Input focus glow ─────────────────────────────────────────── */ .input-glow:focus { outline: none; box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.3), 0 0 20px rgba(59, 130, 246, 0.1); } /* ── Fade-in animation ─────────────────────────────────────────── */ @keyframes fadeSlideIn { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } } .animate-message { animation: fadeSlideIn 0.25s ease-out forwards; }