@tailwind base; @tailwind components; @tailwind utilities; /* Custom scrollbar */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: #f1f5f9; } ::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 4px; } ::-webkit-scrollbar-thumb:hover { background: #94a3b8; } /* Smooth scrolling */ html { scroll-behavior: smooth; } /* Animation classes */ @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 20px rgba(139, 92, 246, 0.3); } 50% { box-shadow: 0 0 40px rgba(139, 92, 246, 0.6); } } .animate-float { animation: float 3s ease-in-out infinite; } .animate-pulse-glow { animation: pulse-glow 2s ease-in-out infinite; } /* Gradient text animation */ .gradient-text { background: linear-gradient(135deg, #8b5cf6 0%, #a78bfa 50%, #c4b5fd 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Card hover effect */ .card-hover { transition: all 0.3s ease; } .card-hover:hover { transform: translateY(-5px); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); } /* Button shine effect */ .btn-shine { position: relative; overflow: hidden; } .btn-shine::after { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient( 90deg, transparent, rgba(255, 255, 255, 0.2), transparent ); transition: left 0.5s ease; } .btn-shine:hover::after { left: 100%; } /* Loading skeleton */ .skeleton { background: linear-gradient( 90deg, #f1f5f9 25%, #e2e8f0 50%, #f1f5f9 75% ); background-size: 200% 100%; animation: skeleton-loading 1.5s infinite; } @keyframes skeleton-loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* Focus styles */ *:focus { outline: none; } *:focus-visible { outline: 2px solid #8b5cf6; outline-offset: 2px; } /* Selection color */ ::selection { background: rgba(139, 92, 246, 0.2); color: #1e293b; } /* Code block styling */ pre { counter-reset: line; } code { counter-increment: line; } /* Responsive typography */ @media (max-width: 640px) { html { font-size: 14px; } } /* Glass morphism effect */ .glass { background: rgba(255, 255, 255, 0.7); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.3); } /* Gradient border */ .gradient-border { position: relative; background: white; border-radius: 1rem; } .gradient-border::before { content: ''; position: absolute; inset: -2px; border-radius: 1.1rem; background: linear-gradient(135deg, #8b5cf6, #a78bfa, #c4b5fd); z-index: -1; } /* Typing animation */ .typing-cursor::after { content: '|'; animation: blink 1s step-end infinite; } @keyframes blink { 0%, 100% { opacity: 1; } 50% { opacity: 0; } }