@import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Inter:wght@300;400;500;600&family=JetBrains+Mono:wght@400;500&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; @layer base { :root { --background: 0 0% 100%; --foreground: 240 10% 3.9%; --card: 0 0% 100%; --card-foreground: 240 10% 3.9%; --popover: 0 0% 100%; --popover-foreground: 240 10% 3.9%; --primary: 240 5.9% 10%; --primary-foreground: 0 0% 98%; --secondary: 240 4.8% 95.9%; --secondary-foreground: 240 5.9% 10%; --muted: 240 4.8% 95.9%; --muted-foreground: 240 3.8% 46.1%; --accent: 240 4.8% 95.9%; --accent-foreground: 240 5.9% 10%; --destructive: 0 84.2% 60.2%; --destructive-foreground: 0 0% 98%; --border: 240 5.9% 90%; --input: 240 5.9% 90%; --ring: 240 5.9% 10%; --chart-1: 12 76% 61%; --chart-2: 173 58% 39%; --chart-3: 197 37% 24%; --chart-4: 43 74% 66%; --chart-5: 27 87% 67%; --radius: 0.5rem; --brand: 217 91% 60%; } .dark { --background: 0 0% 4%; --foreground: 0 0% 98%; --card: 0 0% 4%; --card-foreground: 0 0% 98%; --popover: 0 0% 4%; --popover-foreground: 0 0% 98%; --primary: 0 0% 98%; --primary-foreground: 0 0% 9%; --secondary: 0 0% 14.9%; --secondary-foreground: 0 0% 98%; --muted: 0 0% 14.9%; --muted-foreground: 0 0% 63.9%; --accent: 0 0% 14.9%; --accent-foreground: 0 0% 98%; --destructive: 0 62.8% 30.6%; --destructive-foreground: 0 0% 98%; --border: 0 0% 14.9%; --input: 0 0% 14.9%; --ring: 0 0% 83.1%; --chart-1: 220 70% 50%; --chart-2: 160 60% 45%; --chart-3: 30 80% 55%; --chart-4: 280 65% 60%; --chart-5: 340 75% 55%; } } @layer base { * { @apply border-border; } body { @apply bg-background text-foreground; font-family: 'Inter', sans-serif; } h1, h2, h3, h4, h5, h6 { font-family: 'Outfit', sans-serif; } } /* Smooth transitions for theme toggle */ html { transition: background-color 0.3s ease, color 0.3s ease; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: hsl(var(--muted)); } ::-webkit-scrollbar-thumb { background: hsl(var(--muted-foreground)); border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: hsl(var(--foreground)); } /* Glass morphism utilities */ .glass { background: hsl(var(--background) / 0.7); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); } .glass-border { border: 1px solid hsl(var(--border) / 0.4); } /* Hover lift effect */ .hover-lift { transition: transform 0.2s ease, box-shadow 0.2s ease; } .hover-lift:hover { transform: translateY(-4px); box-shadow: 0 12px 40px rgba(0, 0, 0, 0.12); } /* Gradient text */ .gradient-text { background: linear-gradient(135deg, hsl(var(--foreground)) 0%, hsl(var(--muted-foreground)) 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Brand accent glow */ .brand-glow { box-shadow: 0 0 20px hsl(var(--brand) / 0.3); } /* Animation classes */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideInRight { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); } } .animate-fade-in-up { animation: fadeInUp 0.5s ease forwards; } .animate-fade-in { animation: fadeIn 0.4s ease forwards; } .animate-slide-in-right { animation: slideInRight 0.4s ease forwards; } /* Stagger animation delays */ .stagger-1 { animation-delay: 0.1s; } .stagger-2 { animation-delay: 0.2s; } .stagger-3 { animation-delay: 0.3s; } .stagger-4 { animation-delay: 0.4s; } .stagger-5 { animation-delay: 0.5s; } /* Button press effect */ .btn-press { transition: transform 0.1s ease; } .btn-press:active { transform: scale(0.97); } /* Card hover border effect */ .card-hover-border { position: relative; transition: border-color 0.3s ease; } .card-hover-border::before { content: ''; position: absolute; inset: 0; border-radius: inherit; padding: 1px; background: linear-gradient(135deg, transparent 0%, hsl(var(--brand)) 50%, transparent 100%); -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; opacity: 0; transition: opacity 0.3s ease; } .card-hover-border:hover::before { opacity: 1; } /* Focus visible styles */ button:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible { outline: 2px solid hsl(var(--ring)); outline-offset: 2px; } @layer base { [data-debug-wrapper="true"] { display: contents !important; } }