@tailwind base; @tailwind components; @tailwind utilities; @layer base { :root { --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: 222.2 47.4% 11.2%; --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: 222.2 84% 4.9%; --radius: 0.5rem; } .dark { --background: 222.2 84% 4.9%; --foreground: 210 40% 98%; --card: 222.2 84% 4.9%; --card-foreground: 210 40% 98%; --popover: 222.2 84% 4.9%; --popover-foreground: 210 40% 98%; --primary: 210 40% 98%; --primary-foreground: 222.2 47.4% 11.2%; --secondary: 217.2 32.6% 17.5%; --secondary-foreground: 210 40% 98%; --muted: 217.2 32.6% 17.5%; --muted-foreground: 215 20.2% 65.1%; --accent: 217.2 32.6% 17.5%; --accent-foreground: 210 40% 98%; --destructive: 0 62.8% 30.6%; --destructive-foreground: 210 40% 98%; --border: 217.2 32.6% 17.5%; --input: 217.2 32.6% 17.5%; --ring: 212.7 26.8% 83.9%; } } @layer base { * { @apply border-border; } body { @apply bg-background text-foreground min-h-screen antialiased; font-feature-settings: "rlig" 1, "calt" 1; } } /* Custom styles */ .container { @apply mx-auto px-4 sm:px-6 lg:px-8 max-w-7xl; } /* Smooth scrolling */ html { scroll-behavior: smooth; } /* Focus styles */ *:focus-visible { @apply outline-none ring-2 ring-primary ring-offset-2; } /* Selection styles */ ::selection { @apply bg-primary/20 text-primary; } /* Scrollbar styles */ ::-webkit-scrollbar { @apply w-2; } ::-webkit-scrollbar-track { @apply bg-muted; } ::-webkit-scrollbar-thumb { @apply bg-muted-foreground/50 rounded-full hover:bg-muted-foreground/70; } /* Typography */ h1, h2, h3, h4, h5, h6 { @apply font-semibold tracking-tight; } h1 { @apply text-4xl sm:text-5xl md:text-6xl; } h2 { @apply text-3xl sm:text-4xl md:text-5xl; } h3 { @apply text-2xl sm:text-3xl md:text-4xl; } h4 { @apply text-xl sm:text-2xl md:text-3xl; } h5 { @apply text-lg sm:text-xl md:text-2xl; } h6 { @apply text-base sm:text-lg md:text-xl; } /* Link styles */ a { @apply text-primary hover:text-primary/80 transition-colors; } /* Button styles */ button, .button { @apply inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:opacity-50 disabled:pointer-events-none ring-offset-background; } /* Form styles */ input, textarea, select { @apply rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50; } /* Card styles */ .card { @apply rounded-lg border bg-card text-card-foreground shadow-sm; } /* Badge styles */ .badge { @apply inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2; } /* Animation utilities */ .animate-in { animation: animate-in 0.5s ease-out; } @keyframes animate-in { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } /* Loading spinner */ .spinner { @apply animate-spin rounded-full border-2 border-current border-t-transparent; } /* Responsive utilities */ .responsive-container { @apply container mx-auto px-4 sm:px-6 lg:px-8; } .responsive-grid { @apply grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 sm:gap-6 lg:gap-8; } /* Accessibility */ .sr-only { @apply absolute w-px h-px p-0 -m-px overflow-hidden whitespace-nowrap border-0; } /* Print styles */ @media print { .no-print { display: none; } }