/* Custom Scrollbar */ ::-webkit-scrollbar { width: 10px; } ::-webkit-scrollbar-track { background: #0f172a; } ::-webkit-scrollbar-thumb { background: #334155; border-radius: 5px; } ::-webkit-scrollbar-thumb:hover { background: #475569; } /* Smooth Scroll */ html { scroll-behavior: smooth; } /* Glassmorphism Utilities */ .glass { background: rgba(30, 41, 59, 0.7); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid rgba(255, 255, 255, 0.1); } /* Text Gradients */ .text-gradient { background: linear-gradient(135deg, #8b5cf6 0%, #06b6d4 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Animation Delays */ .delay-100 { animation-delay: 100ms; } .delay-200 { animation-delay: 200ms; } .delay-300 { animation-delay: 300ms; } .delay-400 { animation-delay: 400ms; } .delay-500 { animation-delay: 500ms; } /* Hover Lift Effect */ .hover-lift { transition: transform 0.3s ease, box-shadow 0.3s ease; } .hover-lift:hover { transform: translateY(-5px); box-shadow: 0 20px 40px -15px rgba(139, 92, 246, 0.3); } /* Glow Effects */ .glow-primary { box-shadow: 0 0 20px rgba(139, 92, 246, 0.5); } .glow-secondary { box-shadow: 0 0 20px rgba(6, 182, 212, 0.5); } /* Loading Skeleton */ .skeleton { background: linear-gradient(90deg, #1e293b 25%, #334155 50%, #1e293b 75%); background-size: 200% 100%; animation: loading 1.5s infinite; } @keyframes loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* Custom Selection */ ::selection { background: rgba(139, 92, 246, 0.3); color: white; } /* Focus Visible */ *:focus-visible { outline: 2px solid #8b5cf6; outline-offset: 2px; } /* Mobile Menu Animation */ .mobile-menu-enter { opacity: 0; transform: translateY(-10px); } .mobile-menu-enter-active { opacity: 1; transform: translateY(0); transition: opacity 0.3s ease, transform 0.3s ease; } /* Card Shine Effect */ .card-shine { position: relative; overflow: hidden; } .card-shine::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent); transition: left 0.5s; } .card-shine:hover::before { left: 100%; } /* Gradient Border */ .gradient-border { position: relative; background: #0f172a; border-radius: 1rem; } .gradient-border::before { content: ''; position: absolute; inset: -2px; border-radius: 1rem; padding: 2px; background: linear-gradient(135deg, #8b5cf6, #06b6d4); -webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0); -webkit-mask-composite: xor; mask-composite: exclude; }