@import "tailwindcss"; body { margin: 0; font-family: 'Inter', system-ui, -apple-system, sans-serif; background-color: #f8fafc; /* slate-50 */ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } /* Skeleton loading animation */ @keyframes skeleton-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } } .skeleton { animation: skeleton-pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite; background: linear-gradient(90deg, #e2e8f0 25%, #f1f5f9 50%, #e2e8f0 75%); background-size: 200% 100%; animation: skeleton-shimmer 1.5s ease-in-out infinite; border-radius: 0.5rem; } @keyframes skeleton-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* Custom scrollbar */ ::-webkit-scrollbar { width: 6px; height: 6px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: #cbd5e1; /* slate-300 */ border-radius: 3px; } ::-webkit-scrollbar-thumb:hover { background: #94a3b8; /* slate-400 */ } /* Hide scrollbar utility */ .scrollbar-hide::-webkit-scrollbar { display: none; } .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; } /* Page transition */ .page-enter { opacity: 0; transform: translateY(8px); } .page-enter-active { opacity: 1; transform: translateY(0); transition: opacity 200ms ease-out, transform 200ms ease-out; } /* Smooth transitions for interactive elements */ button, a, input, select, textarea { transition: all 150ms ease; }