@import "tailwindcss"; @theme { /* Clean, modern color palette */ --color-background: oklch(95% 0.02 220); --color-foreground: oklch(20% 0.02 220); --color-card: oklch(100% 0 0); --color-card-foreground: oklch(20% 0.02 220); --color-popover: oklch(100% 0 0); --color-popover-foreground: oklch(20% 0.02 220); /* Primary: Professional blue */ --color-primary: oklch(65% 0.25 250); --color-primary-foreground: oklch(100% 0 0); --color-primary-hover: oklch(60% 0.25 250); /* Secondary: Subtle gray-blue */ --color-secondary: oklch(95% 0.02 220); --color-secondary-foreground: oklch(30% 0.02 220); /* Accent: Vibrant teal */ --color-accent: oklch(65% 0.20 180); --color-accent-foreground: oklch(100% 0 0); /* Muted */ --color-muted: oklch(93% 0.02 220); --color-muted-foreground: oklch(50% 0.02 220); /* Destructive */ --color-destructive: oklch(60% 0.22 25); --color-destructive-foreground: oklch(100% 0 0); /* Success */ --color-success: oklch(55% 0.20 150); --color-success-foreground: oklch(100% 0 0); /* Warning */ --color-warning: oklch(65% 0.22 60); --color-warning-foreground: oklch(100% 0 0); /* Borders and inputs */ --color-border: oklch(88% 0.02 220); --color-input: oklch(88% 0.02 220); --color-ring: oklch(65% 0.25 250); /* Border radius */ --radius-lg: 0.5rem; --radius-md: calc(0.5rem - 2px); --radius-sm: calc(0.5rem - 4px); /* Animations */ --animate-fade-in: fade-in 0.5s ease-out; --animate-slide-in-right: slide-in-right 0.5s ease-out; --animate-slide-in-left: slide-in-left 0.5s ease-out; --animate-scale-in: scale-in 0.3s ease-out; --animate-shimmer: shimmer 2s linear infinite; --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; --animate-float: float 3s ease-in-out infinite; } @layer base { body { background-color: var(--color-background); color: var(--color-foreground); font-feature-settings: "rlig" 1, "calt" 1; } } @layer utilities { /* Animations */ @keyframes fade-in { 0% { opacity: 0; transform: translateY(10px); } 100% { opacity: 1; transform: translateY(0); } } @keyframes slide-in-right { 0% { opacity: 0; transform: translateX(20px); } 100% { opacity: 1; transform: translateX(0); } } @keyframes slide-in-left { 0% { opacity: 0; transform: translateX(-20px); } 100% { opacity: 1; transform: translateX(0); } } @keyframes scale-in { 0% { opacity: 0; transform: scale(0.95); } 100% { opacity: 1; transform: scale(1); } } @keyframes shimmer { 0% { background-position: -1000px 0; } 100% { background-position: 1000px 0; } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.8; } } @keyframes float { 0%, 100% { transform: translateY(0px); } 50% { transform: translateY(-10px); } } .animate-fade-in { animation: fade-in 0.5s ease-out; } .animate-slide-in-right { animation: slide-in-right 0.5s ease-out; } .animate-slide-in-left { animation: slide-in-left 0.5s ease-out; } .animate-scale-in { animation: scale-in 0.3s ease-out; } .animate-shimmer { animation: shimmer 2s linear infinite; } .animate-pulse { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } .animate-float { animation: float 3s ease-in-out infinite; } /* Custom scrollbar */ .scrollbar-thin::-webkit-scrollbar { width: 6px; height: 6px; } .scrollbar-thin::-webkit-scrollbar-track { background: var(--color-muted); border-radius: 3px; } .scrollbar-thin::-webkit-scrollbar-thumb { background: color-mix(in oklch, var(--color-muted-foreground) 30%, transparent); border-radius: 3px; } .scrollbar-thin::-webkit-scrollbar-thumb:hover { background: color-mix(in oklch, var(--color-muted-foreground) 50%, transparent); } .scrollbar-hide::-webkit-scrollbar { display: none; } .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; } } @layer components { /* Page header */ .page-header { margin-bottom: 2rem; } .page-title { font-size: 1.875rem; font-weight: 700; color: var(--color-foreground); margin-bottom: 0.5rem; } .page-description { color: var(--color-muted-foreground); font-size: 0.875rem; } /* Section */ .section { background: var(--color-card); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 1.5rem; box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05); } .section-header { font-size: 1.125rem; font-weight: 600; color: var(--color-foreground); margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--color-border); } /* Status badge */ .status-badge { display: inline-flex; align-items: center; padding: 0.25rem 0.75rem; border-radius: 9999px; font-size: 0.75rem; font-weight: 500; } .status-badge-success { background: color-mix(in oklch, var(--color-success) 10%, transparent); color: var(--color-success); } .status-badge-warning { background: color-mix(in oklch, var(--color-warning) 10%, transparent); color: var(--color-warning); } .status-badge-error { background: color-mix(in oklch, var(--color-destructive) 10%, transparent); color: var(--color-destructive); } .status-badge-info { background: color-mix(in oklch, var(--color-primary) 10%, transparent); color: var(--color-primary); } }