| @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); |
|
|
| @tailwind base; |
| @tailwind components; |
| @tailwind utilities; |
|
|
| @layer base { |
| :root { |
| |
| --background: 220 20% 10%; |
| --foreground: 210 40% 98%; |
|
|
| --card: 220 15% 15%; |
| --card-foreground: 210 40% 98%; |
|
|
| --popover: 220 15% 12%; |
| --popover-foreground: 210 40% 98%; |
|
|
| --primary: 210 100% 60%; |
| --primary-foreground: 222.2 47.4% 11.2%; |
|
|
| --secondary: 220 15% 20%; |
| --secondary-foreground: 210 40% 98%; |
|
|
| --muted: 220 15% 18%; |
| --muted-foreground: 215 20% 55%; |
|
|
| --accent: 220 15% 22%; |
| --accent-foreground: 210 40% 98%; |
|
|
| --destructive: 0 84% 60%; |
| --destructive-foreground: 210 40% 98%; |
|
|
| --border: 220 15% 20%; |
| --input: 220 15% 15%; |
| --ring: 210 100% 60%; |
|
|
| --radius: 1rem; |
|
|
| |
| --glass: 220 15% 12% / 0.6; |
| --glass-border: 220 15% 25% / 0.5; |
| --glass-highlight: 210 100% 98% / 0.05; |
| --glow: 210 100% 60%; |
| --glow-soft: 210 100% 60% / 0.15; |
|
|
| |
| --sidebar-background: 220 20% 8%; |
| --sidebar-foreground: 210 40% 98%; |
| --sidebar-primary: 210 100% 60%; |
| --sidebar-primary-foreground: 210 40% 98%; |
| --sidebar-accent: 220 15% 15%; |
| --sidebar-accent-foreground: 210 40% 98%; |
| --sidebar-border: 220 15% 15%; |
| --sidebar-ring: 210 100% 60%; |
|
|
| |
| --ollama: 148 60% 45%; |
| --openai: 0 0% 100%; |
| } |
|
|
| .light { |
| --background: 0 0% 100%; |
| --foreground: 222.2 84% 4.9%; |
| --card: 0 0% 100%; |
| --card-foreground: 222.2 84% 4.9%; |
| --popover: 0 0% 100%; |
| --popover-foreground: 222.2 84% 4.9%; |
| --primary: 210 100% 50%; |
| --primary-foreground: 210 40% 98%; |
| --secondary: 210 40% 96.1%; |
| --secondary-foreground: 222.2 47.4% 11.2%; |
| --muted: 210 40% 96.1%; |
| --muted-foreground: 215.4 16.3% 46.9%; |
| --accent: 210 40% 96.1%; |
| --accent-foreground: 222.2 47.4% 11.2%; |
| --destructive: 0 84.2% 60.2%; |
| --destructive-foreground: 210 40% 98%; |
| --border: 214.3 31.8% 91.4%; |
| --input: 214.3 31.8% 91.4%; |
| --ring: 210 100% 50%; |
| --glass: 0 0% 100% / 0.7; |
| --glass-border: 0 0% 0% / 0.1; |
| --glass-highlight: 0 0% 100% / 0.5; |
| --sidebar-background: 0 0% 98%; |
| --sidebar-foreground: 222.2 84% 4.9%; |
| --sidebar-primary: 210 100% 50%; |
| --sidebar-primary-foreground: 210 40% 98%; |
| --sidebar-accent: 210 40% 96.1%; |
| --sidebar-accent-foreground: 222.2 47.4% 11.2%; |
| --sidebar-border: 214.3 31.8% 91.4%; |
| } |
| } |
|
|
| @layer base { |
| * { |
| @apply border-border; |
| } |
|
|
| body { |
| @apply bg-background text-foreground font-sans antialiased; |
| font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'SF Pro Display', sans-serif; |
| } |
|
|
| |
| ::-webkit-scrollbar { |
| width: 6px; |
| height: 6px; |
| } |
|
|
| ::-webkit-scrollbar-track { |
| background: transparent; |
| } |
|
|
| ::-webkit-scrollbar-thumb { |
| background: hsl(var(--muted)); |
| border-radius: 3px; |
| } |
|
|
| ::-webkit-scrollbar-thumb:hover { |
| background: hsl(var(--muted-foreground)); |
| } |
| } |
|
|
| @layer utilities { |
| |
| .glass { |
| background: hsl(var(--glass)); |
| backdrop-filter: blur(24px); |
| -webkit-backdrop-filter: blur(24px); |
| border: 1px solid hsl(var(--glass-border)); |
| } |
|
|
| .glass-subtle { |
| background: hsl(var(--glass)); |
| backdrop-filter: blur(16px); |
| -webkit-backdrop-filter: blur(16px); |
| } |
|
|
| .glass-card { |
| background: linear-gradient( |
| 135deg, |
| hsl(var(--glass)) 0%, |
| hsl(var(--card) / 0.8) 100% |
| ); |
| backdrop-filter: blur(20px); |
| -webkit-backdrop-filter: blur(20px); |
| border: 1px solid hsl(var(--glass-border)); |
| box-shadow: |
| 0 4px 24px -4px hsl(0 0% 0% / 0.3), |
| inset 0 1px 0 0 hsl(var(--glass-highlight)); |
| } |
|
|
| .glass-sidebar { |
| background: linear-gradient( |
| 180deg, |
| hsl(var(--sidebar-background) / 0.95) 0%, |
| hsl(var(--sidebar-background) / 0.85) 100% |
| ); |
| backdrop-filter: blur(30px); |
| -webkit-backdrop-filter: blur(30px); |
| } |
|
|
| |
| .glow { |
| box-shadow: |
| 0 0 20px hsl(var(--glow) / 0.3), |
| 0 0 40px hsl(var(--glow) / 0.2); |
| } |
|
|
| .glow-sm { |
| box-shadow: 0 0 10px hsl(var(--glow) / 0.2); |
| } |
|
|
| .text-glow { |
| text-shadow: 0 0 20px hsl(var(--glow) / 0.5); |
| } |
|
|
| |
| @keyframes voice-wave { |
| 0%, 100% { |
| transform: scaleY(0.5); |
| } |
| 50% { |
| transform: scaleY(1); |
| } |
| } |
|
|
| @keyframes pulse-glow { |
| 0%, 100% { |
| box-shadow: 0 0 5px hsl(var(--destructive) / 0.5); |
| } |
| 50% { |
| box-shadow: 0 0 20px hsl(var(--destructive) / 0.8); |
| } |
| } |
|
|
| @keyframes shimmer { |
| 0% { |
| background-position: -200% 0; |
| } |
| 100% { |
| background-position: 200% 0; |
| } |
| } |
|
|
| @keyframes float { |
| 0%, 100% { |
| transform: translateY(0); |
| } |
| 50% { |
| transform: translateY(-5px); |
| } |
| } |
|
|
| .animate-voice-wave { |
| animation: voice-wave 0.5s ease-in-out infinite; |
| } |
|
|
| .animate-pulse-glow { |
| animation: pulse-glow 2s ease-in-out infinite; |
| } |
|
|
| .animate-shimmer { |
| animation: shimmer 2s linear infinite; |
| background: linear-gradient( |
| 90deg, |
| transparent 0%, |
| hsl(var(--glass-highlight)) 50%, |
| transparent 100% |
| ); |
| background-size: 200% 100%; |
| } |
|
|
| .animate-float { |
| animation: float 3s ease-in-out infinite; |
| } |
|
|
| |
| .provider-ollama { |
| background: hsl(var(--ollama) / 0.15); |
| border-color: hsl(var(--ollama) / 0.3); |
| color: hsl(var(--ollama)); |
| } |
|
|
| .provider-openai { |
| background: hsl(var(--openai) / 0.1); |
| border-color: hsl(var(--openai) / 0.2); |
| color: hsl(var(--openai)); |
| } |
|
|
| |
| .hover-lift { |
| transition: transform 0.2s ease, box-shadow 0.2s ease; |
| } |
|
|
| .hover-lift:hover { |
| transform: translateY(-2px); |
| box-shadow: 0 8px 30px -8px hsl(0 0% 0% / 0.4); |
| } |
| } |
|
|