@tailwind base; @tailwind components; @tailwind utilities; @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap'); @layer base { :root { --background: 210 20% 98%; --foreground: 220 25% 10%; --card: 0 0% 100%; --card-foreground: 220 25% 10%; --popover: 0 0% 100%; --popover-foreground: 220 25% 10%; --primary: 174 72% 40%; --primary-foreground: 0 0% 100%; --secondary: 210 20% 96%; --secondary-foreground: 220 25% 20%; --muted: 210 15% 94%; --muted-foreground: 220 10% 45%; --accent: 174 60% 94%; --accent-foreground: 174 72% 25%; --destructive: 0 72% 50%; --destructive-foreground: 0 0% 100%; --success: 152 70% 40%; --success-foreground: 0 0% 100%; --warning: 38 92% 50%; --warning-foreground: 0 0% 100%; --border: 220 15% 90%; --input: 220 15% 90%; --ring: 174 72% 40%; --radius: 0.75rem; --gradient-primary: linear-gradient(135deg, hsl(174, 72%, 40%), hsl(190, 80%, 45%)); --gradient-hero: linear-gradient(180deg, hsl(210, 20%, 98%) 0%, hsl(174, 40%, 96%) 100%); --gradient-card: linear-gradient(145deg, hsl(0, 0%, 100%) 0%, hsl(210, 20%, 99%) 100%); --shadow-soft: 0 4px 20px -4px hsl(220 25% 10% / 0.08); --shadow-card: 0 8px 30px -8px hsl(220 25% 10% / 0.1); --shadow-glow: 0 0 40px hsl(174 72% 40% / 0.15); --sidebar-background: 0 0% 98%; --sidebar-foreground: 240 5.3% 26.1%; --sidebar-primary: 240 5.9% 10%; --sidebar-primary-foreground: 0 0% 98%; --sidebar-accent: 240 4.8% 95.9%; --sidebar-accent-foreground: 240 5.9% 10%; --sidebar-border: 220 13% 91%; --sidebar-ring: 217.2 91.2% 59.8%; } .dark { --background: 222 30% 8%; --foreground: 210 20% 96%; --card: 222 25% 12%; --card-foreground: 210 20% 96%; --popover: 222 25% 12%; --popover-foreground: 210 20% 96%; --primary: 174 72% 50%; --primary-foreground: 222 30% 8%; --secondary: 222 20% 16%; --secondary-foreground: 210 20% 90%; --muted: 222 20% 18%; --muted-foreground: 220 15% 55%; --accent: 174 40% 18%; --accent-foreground: 174 72% 70%; --destructive: 0 65% 45%; --destructive-foreground: 0 0% 100%; --success: 152 60% 45%; --success-foreground: 0 0% 100%; --warning: 38 85% 55%; --warning-foreground: 0 0% 100%; --border: 222 20% 20%; --input: 222 20% 20%; --ring: 174 72% 50%; --gradient-primary: linear-gradient(135deg, hsl(174, 72%, 50%), hsl(190, 70%, 55%)); --gradient-hero: linear-gradient(180deg, hsl(222, 30%, 8%) 0%, hsl(222, 35%, 12%) 100%); --gradient-card: linear-gradient(145deg, hsl(222, 25%, 14%) 0%, hsl(222, 25%, 11%) 100%); --shadow-soft: 0 4px 20px -4px hsl(0 0% 0% / 0.3); --shadow-card: 0 8px 30px -8px hsl(0 0% 0% / 0.4); --shadow-glow: 0 0 50px hsl(174 72% 50% / 0.2); --sidebar-background: 222 25% 10%; --sidebar-foreground: 210 20% 90%; --sidebar-primary: 174 72% 50%; --sidebar-primary-foreground: 222 30% 8%; --sidebar-accent: 222 20% 16%; --sidebar-accent-foreground: 210 20% 90%; --sidebar-border: 222 20% 18%; --sidebar-ring: 174 72% 50%; } } @layer base { * { @apply border-border; } body { @apply bg-background text-foreground font-sans antialiased; font-family: 'Inter', sans-serif; } h1, h2, h3, h4, h5, h6 { font-family: 'Space Grotesk', sans-serif; } } @layer components { .gradient-text { @apply bg-clip-text text-transparent; background-image: var(--gradient-primary); } .glass-card { @apply backdrop-blur-xl border border-border/50; background: var(--gradient-card); box-shadow: var(--shadow-card); } .upload-zone { @apply border-2 border-dashed border-primary/30 rounded-2xl transition-all duration-300; } .upload-zone:hover { @apply border-primary/60 bg-accent/50; box-shadow: var(--shadow-glow); } .upload-zone.dragging { @apply border-primary bg-accent; box-shadow: var(--shadow-glow); } .status-normal { background-color: hsl(var(--success) / 0.1); color: hsl(var(--success)); border-color: hsl(var(--success) / 0.3); } .status-mild { background-color: hsl(var(--warning) / 0.1); color: hsl(var(--warning)); border-color: hsl(var(--warning) / 0.3); } .status-failure { background-color: hsl(var(--destructive) / 0.1); color: hsl(var(--destructive)); border-color: hsl(var(--destructive) / 0.3); } .metric-card { @apply relative overflow-hidden; } .metric-card::before { content: ''; @apply absolute top-0 left-0 w-1 h-full bg-primary rounded-l-lg; } .animate-pulse-slow { animation: pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite; } .animate-float { animation: float 6s ease-in-out infinite; } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } } @layer utilities { .text-balance { text-wrap: balance; } }