@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; } body { @apply bg-neutral-light text-neutral-dark antialiased; } } .conference-card { @apply bg-white rounded-lg shadow-sm hover:shadow-md transition-shadow duration-300 p-4 flex flex-col; } .tag { @apply inline-flex items-center px-2 py-1 rounded-full text-sm font-medium bg-primary/10 text-primary; } .countdown { @apply text-2xl font-semibold text-primary; } @keyframes scale-up { from { transform: scale(0.8); opacity: 0; filter: blur(8px); } to { transform: scale(1); opacity: 1; filter: blur(0); } } @keyframes scale-down { from { transform: scale(1); opacity: 1; filter: blur(0); } to { transform: scale(0.8); opacity: 0; filter: blur(8px); } } .dialog-content { animation: scale-up 0.4s cubic-bezier(0.16, 1, 0.3, 1); will-change: transform, opacity, filter; } .dialog-overlay { animation: fade-in 0.4s cubic-bezier(0.16, 1, 0.3, 1); } [data-state="closed"] .dialog-content { animation: scale-down 0.3s cubic-bezier(0.16, 1, 0.3, 1); } [data-state="closed"] .dialog-overlay { animation: fade-out 0.3s cubic-bezier(0.16, 1, 0.3, 1); } @keyframes fade-in { from { opacity: 0; backdrop-filter: blur(0px); } to { opacity: 1; backdrop-filter: blur(4px); } } @keyframes fade-out { from { opacity: 1; backdrop-filter: blur(4px); } to { opacity: 0; backdrop-filter: blur(0px); } }