@tailwind base; @tailwind components; @tailwind utilities; @layer base { body { @apply bg-gradient-to-br from-slate-50 via-blue-50 to-indigo-50 text-slate-900 min-h-screen; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } code { font-family: source-code-pro, Menlo, Monaco, Consolas, 'Courier New', monospace; } } @layer components { .glass-effect { @apply bg-white/80 backdrop-blur-xl border border-white/20 shadow-xl; } .gradient-text { @apply bg-clip-text text-transparent bg-gradient-to-r from-primary-600 to-accent-600; } .hover-lift { @apply transition-transform duration-300 hover:-translate-y-1 hover:shadow-2xl; } .btn-primary { @apply bg-gradient-to-r from-primary-600 to-primary-700 text-white px-6 py-3 rounded-xl font-semibold shadow-lg hover:shadow-xl transition-all duration-300 hover:scale-105 active:scale-95; } .btn-secondary { @apply bg-white text-primary-700 border-2 border-primary-200 px-6 py-3 rounded-xl font-semibold hover:bg-primary-50 transition-all duration-300 hover:border-primary-300; } .card { @apply glass-effect rounded-2xl p-6 hover-lift; } .input-field { @apply w-full px-4 py-3 rounded-xl border-2 border-slate-200 focus:border-primary-500 focus:ring-4 focus:ring-primary-100 transition-all duration-300 outline-none bg-white; } } /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #f1f5f9; } ::-webkit-scrollbar-thumb { background: linear-gradient(180deg, #0ea5e9, #a855f7); border-radius: 10px; } ::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg, #0284c7, #9333ea); } /* Smooth page transitions */ .page-transition-enter { opacity: 0; transform: translateY(20px); } .page-transition-enter-active { opacity: 1; transform: translateY(0); transition: opacity 300ms, transform 300ms; } .page-transition-exit { opacity: 1; } .page-transition-exit-active { opacity: 0; transform: translateY(-20px); transition: opacity 300ms, transform 300ms; }