@import "tailwindcss"; /* ── Design Tokens ─────────────────────────────────────── */ @theme { /* Surfaces */ --color-surface: #f8f8fa; --color-surface-white: #ffffff; --color-surface-warm: #f3f2f0; --color-surface-hover: #f0eff2; /* Borders */ --color-border: rgba(0, 0, 0, 0.06); --color-border-subtle: rgba(0, 0, 0, 0.04); --color-border-focus: rgba(99, 102, 241, 0.35); /* Text */ --color-text-primary: #1a1a2e; --color-text-secondary: #4a4a5e; --color-text-muted: #8b8b9e; --color-text-dim: #b5b5c6; --color-text-ghost: #d0d0da; /* Accent */ --color-accent: #6366f1; --color-accent-light: #818cf8; --color-accent-soft: rgba(99, 102, 241, 0.08); --color-accent-softer: rgba(99, 102, 241, 0.04); /* Semantic */ --color-emerald: #34d399; --color-emerald-soft: rgba(52, 211, 153, 0.10); --color-amber: #fbbf24; --color-amber-soft: rgba(251, 191, 36, 0.10); --color-blue: #60a5fa; --color-blue-soft: rgba(96, 165, 250, 0.08); --color-rose: #fb7185; --color-rose-soft: rgba(251, 113, 133, 0.08); /* Typography */ --font-family-sans: 'Inter', system-ui, -apple-system, sans-serif; --font-family-mono: 'JetBrains Mono', 'SF Mono', monospace; } /* ── Reset ─────────────────────────────────────────────── */ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-family: var(--font-family-sans); -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility; } body { background-color: var(--color-surface); color: var(--color-text-primary); min-height: 100dvh; overflow-x: hidden; } #root { min-height: 100dvh; } /* ── Scrollbar ─────────────────────────────────────────── */ ::-webkit-scrollbar { width: 5px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: rgba(0, 0, 0, 0.08); border-radius: 10px; } ::-webkit-scrollbar-thumb:hover { background: rgba(0, 0, 0, 0.14); } /* ── Cards — glassmorphic ─────────────────────────────── */ .card { background: rgba(255, 255, 255, 0.30); backdrop-filter: blur(24px) saturate(1.4); -webkit-backdrop-filter: blur(24px) saturate(1.4); border: none; box-shadow: inset 0 0 0 0.5px rgba(255, 255, 255, 0.35), 0 2px 8px rgba(0, 0, 0, 0.02), 0 8px 20px rgba(0, 0, 0, 0.012); } .card-elevated { background: rgba(255, 255, 255, 0.38); backdrop-filter: blur(28px) saturate(1.4); -webkit-backdrop-filter: blur(28px) saturate(1.4); border: none; box-shadow: inset 0 0 0 0.5px rgba(255, 255, 255, 0.4), 0 2px 8px rgba(0, 0, 0, 0.03), 0 8px 24px rgba(0, 0, 0, 0.02); } /* ── User message bubble ──────────────────────────────── */ .bubble-user { background: rgba(99, 102, 241, 0.08); backdrop-filter: blur(24px) saturate(1.3); -webkit-backdrop-filter: blur(24px) saturate(1.3); border: none; box-shadow: none; } /* ── Agent message bubble ─────────────────────────────── */ .bubble-agent { background: rgba(255, 255, 255, 0.28); backdrop-filter: blur(24px) saturate(1.4); -webkit-backdrop-filter: blur(24px) saturate(1.4); border: none; box-shadow: none; } /* ── Input ─────────────────────────────────────────────── */ .input-glass { background: rgba(255, 255, 255, 0.35); backdrop-filter: blur(28px) saturate(1.4); -webkit-backdrop-filter: blur(28px) saturate(1.4); border: none; box-shadow: inset 0 0 0 0.5px rgba(255, 255, 255, 0.35), 0 2px 8px rgba(0, 0, 0, 0.02), 0 8px 24px rgba(0, 0, 0, 0.015); transition: box-shadow 0.4s ease, transform 0.4s cubic-bezier(0.25, 0.46, 0.45, 0.94); } .input-glass:focus-within { box-shadow: inset 0 0 0 0.5px rgba(99, 102, 241, 0.2), 0 2px 8px rgba(0, 0, 0, 0.02), 0 8px 24px rgba(0, 0, 0, 0.015), 0 0 0 3px rgba(99, 102, 241, 0.05); transform: scale(1.008); } /* ── Header — glass bar ───────────────────────────────── */ .header-glass { background: rgba(248, 248, 250, 0.5); backdrop-filter: blur(20px) saturate(1.3); -webkit-backdrop-filter: blur(20px) saturate(1.3); border: none; border-bottom: none; } /* ── Message content ───────────────────────────────────── */ .message-content { line-height: 1.75; letter-spacing: 0.005em; } .message-content p { margin-bottom: 0.6em; } .message-content p:last-child { margin-bottom: 0; } .message-content ul, .message-content ol { margin: 0.5em 0; padding-left: 1.4em; } .message-content li { margin-bottom: 0.3em; } .message-content strong { color: var(--color-text-primary); font-weight: 600; } .message-content code { background: rgba(99, 102, 241, 0.08); color: var(--color-accent); padding: 0.15em 0.4em; border-radius: 5px; font-size: 0.85em; font-family: var(--font-family-mono); } /* ── Heading styles inside messages ────────────────────── */ .message-content h1, .message-content h2, .message-content h3 { font-weight: 650; color: var(--color-text-primary); margin-top: 0.8em; margin-bottom: 0.4em; } .message-content h1 { font-size: 1.1em; } .message-content h2 { font-size: 1.0em; } .message-content h3 { font-size: 0.95em; } .message-content h1:first-child, .message-content h2:first-child, .message-content h3:first-child { margin-top: 0; } /* ── Selection ─────────────────────────────────────────── */ ::selection { background: rgba(99, 102, 241, 0.15); color: var(--color-text-primary); }