@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; @layer base { html { font-family: 'Inter', system-ui, sans-serif; } body { @apply bg-gray-50 text-gray-900 antialiased; } h1 { @apply text-3xl font-bold; } h2 { @apply text-2xl font-semibold; } p { @apply text-base; } small { @apply text-sm; } } @layer components { .btn { @apply inline-flex items-center justify-center px-4 py-2 rounded-button font-medium transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2; } .btn-primary { @apply btn bg-primary-600 text-white hover:bg-primary-700 focus:ring-primary-500; } .btn-secondary { @apply btn bg-secondary-200 text-secondary-800 hover:bg-secondary-300 focus:ring-secondary-500; } .btn-danger { @apply btn bg-red-600 text-white hover:bg-red-700 focus:ring-red-500; } .btn-ghost { @apply btn text-secondary-600 hover:text-secondary-800 hover:bg-secondary-100 focus:ring-secondary-500; } .input-field { @apply block w-full px-3 py-2 border border-gray-300 rounded-button placeholder-gray-400 focus:outline-none focus:ring-primary-500 focus:border-primary-500; } .card { @apply bg-white rounded-card shadow-sm border border-gray-200; } .badge { @apply inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium; } .badge-success { @apply badge bg-accent-100 text-accent-800; } .badge-warning { @apply badge bg-alert-100 text-alert-800; } .badge-error { @apply badge bg-red-100 text-red-800; } .badge-info { @apply badge bg-blue-100 text-blue-800; } } /* Smooth page transitions */ .page-enter { opacity: 0; transform: translateY(10px); } .page-enter-active { opacity: 1; transform: translateY(0); transition: opacity 300ms, transform 300ms; } /* Loading skeleton animation */ @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } .skeleton { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; }