/* Palette values switch with server configuration; utilities resolve them at use time. */ @custom-variant white (&:where([data-theme="white"], [data-theme="white"] *)); @custom-variant dark (&:where([data-theme="dark"], [data-theme="dark"] *)); @custom-variant compact (@media (max-width: 600px)); @custom-variant short (@media (max-height: 640px)); @theme inline { --color-surface: var(--bg); --color-surface-raised: var(--bg-elev); --color-surface-overlay: var(--bg-elev-2); --color-foreground: var(--text); --color-muted: var(--text-dim); --color-faint: var(--text-faint); --color-line: var(--border); --color-line-strong: var(--border-strong); --color-brand: var(--brand); --color-brand-secondary: var(--brand-2); --color-brand-tertiary: var(--brand-3); --color-accent: var(--accent); --color-accent-secondary: var(--accent-2); --color-listening: var(--listening); --color-speaking: var(--speaking); --color-processing: var(--processing); --color-error: var(--error); --color-success: var(--success); --color-voice-user: var(--voice-user); --color-voice-assistant: var(--voice-assistant); --color-voice-tool: var(--voice-tool); --radius-control: var(--app-radius-control); --radius-panel: var(--app-radius-panel); --radius-card: var(--app-radius-card); --shadow-panel: var(--shadow-soft); --shadow-brand: var(--shadow-glow-brand); --shadow-card-glass: var(--shadow-glass); } @theme { --font-sans: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; --font-mono: "Geist Mono", ui-monospace, SFMono-Regular, "SF Mono", Menlo, monospace; } @layer base { :root { --bg: #07080d; --bg-elev: rgba(22, 25, 37, 0.55); --bg-elev-2: rgba(31, 35, 52, 0.55); --border: rgba(255, 255, 255, 0.08); --border-strong: rgba(255, 255, 255, 0.16); --glass: rgba(18, 20, 30, 0.45); --glass-strong: rgba(18, 20, 30, 0.62); --text: #f5f6fa; --text-dim: rgba(245, 246, 250, 0.7); --text-faint: rgba(245, 246, 250, 0.48); --brand: #8b5cf6; --brand-2: #ec4899; --brand-3: #22d3ee; --accent: #a78bfa; --accent-2: #22d3ee; --listening: #22d3ee; --speaking: #a78bfa; --processing: #fbbf24; --error: #ff6a75; --success: #34d399; --brand-gradient: linear-gradient(135deg, #8b5cf6 0%, #ec4899 50%, #22d3ee 100%); --brand-soft-gradient: linear-gradient( 135deg, color-mix(in srgb, #8b5cf6 55%, transparent), color-mix(in srgb, #ec4899 48%, transparent) 55%, color-mix(in srgb, #22d3ee 55%, transparent) ); --voice-user: var(--accent-2); --voice-assistant: var(--accent); --voice-tool: var(--processing); --app-radius-control: 10px; --app-radius-panel: 16px; --app-radius-card: 26px; --shadow-soft: 0 10px 40px rgba(0, 0, 0, 0.35); --shadow-glow-brand: 0 0 40px -10px color-mix(in srgb, var(--brand) 60%, transparent), 0 0 80px -30px color-mix(in srgb, var(--brand-2) 55%, transparent); --shadow-glass: 0 8px 40px rgba(0, 0, 0, 0.32), 0 2px 8px rgba(0, 0, 0, 0.18); --message-user-background: linear-gradient( 180deg, color-mix(in srgb, var(--voice-user) 10%, var(--bg-elev-2)), color-mix(in srgb, var(--voice-user) 6%, var(--bg-elev-2)) ) padding-box; --message-assistant-background: linear-gradient( 180deg, color-mix(in srgb, var(--voice-assistant) 10%, var(--bg-elev-2)), color-mix(in srgb, var(--voice-assistant) 5%, var(--bg-elev-2)) ) padding-box; --message-user-border: color-mix(in srgb, var(--voice-user) 44%, var(--border)); --message-assistant-border: color-mix(in srgb, var(--voice-assistant) 42%, var(--border)); --message-user-shadow: 0 10px 28px rgb(0 0 0 / 0.28), 0 0 0 1px color-mix(in srgb, var(--voice-user) 16%, rgb(255 255 255 / 0.05)) inset, 0 0 28px -14px color-mix(in srgb, var(--voice-user) 66%, transparent); --message-assistant-shadow: 0 10px 28px rgb(0 0 0 / 0.28), 0 0 0 1px color-mix(in srgb, var(--voice-assistant) 14%, rgb(255 255 255 / 0.05)) inset, 0 0 28px -14px color-mix(in srgb, var(--voice-assistant) 62%, transparent); color-scheme: dark; } html[data-theme="white"] { color-scheme: light; --bg: #ffffff; --bg-elev: #f8fafc; --bg-elev-2: #f1f5f9; --border: rgba(15, 23, 42, 0.08); --border-strong: rgba(15, 23, 42, 0.16); --glass: rgba(255, 255, 255, 0.85); --glass-strong: rgba(248, 250, 252, 0.92); --text: #0f172a; --text-dim: rgba(15, 23, 42, 0.72); --text-faint: rgba(15, 23, 42, 0.55); --brand: #1f6feb; --brand-2: #3b82f6; --brand-3: #60a5fa; --accent: #2563eb; --accent-2: #3b82f6; --listening: #2563eb; --speaking: #1d4ed8; --processing: #d97706; --error: #dc2626; --success: #16a34a; --brand-gradient: linear-gradient(135deg, #2563eb 0%, #3b82f6 55%, #60a5fa 100%); --brand-soft-gradient: linear-gradient( 135deg, rgba(37, 99, 235, 0.18), rgba(59, 130, 246, 0.14) 55%, rgba(96, 165, 250, 0.18) ); --voice-user: #2563eb; --voice-assistant: #64748b; --voice-tool: #d97706; --shadow-soft: 0 6px 20px rgba(15, 23, 42, 0.06); --shadow-glow-brand: 0 0 28px -6px rgba(37, 99, 235, 0.45), 0 0 60px -18px rgba(59, 130, 246, 0.4); --shadow-glass: 0 2px 12px rgba(15, 23, 42, 0.06), 0 1px 3px rgba(15, 23, 42, 0.04); --message-user-background: #dbeafe; --message-assistant-background: #f3f4f6; --message-user-border: transparent; --message-assistant-border: transparent; --message-user-shadow: none; --message-assistant-shadow: none; --app-radius-control: 10px; --app-radius-panel: 16px; --app-radius-card: 22px; } }