/* Custom Animations */ @keyframes fade-in-up { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } } .animate-fade-in-up { animation: fade-in-up 0.8s ease-out; } .animate-fade-in { animation: fade-in 0.8s ease-out; } /* Smooth Scroll Behavior */ html { scroll-behavior: smooth; } /* 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; } /* Selection Color */ ::selection { background: rgba(124, 58, 237, 0.3); color: white; } /* Glassmorphism Utilities */ .glass { background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.1); } /* Gradient Text Utility */ .text-gradient { background-clip: text; -webkit-background-clip: text; -webkit-text-fill-color: transparent; } /* Focus Visible Styles */ :focus-visible { outline: 2px solid #7c3aed; outline-offset: 2px; } /* Prevent FOUC */ .loading * { transition: none !important; animation: none !important; } /* Image Loading State */ img { background: linear-gradient(110deg, #1e293b 8%, #334155 18%, #1e293b 33%); background-size: 200% 100%; animation: shimmer 1.5s linear infinite; } img[src] { animation: none; background: transparent; } @keyframes shimmer { to { background-position-x: -200%; } } /* Mobile Menu Animation */ .mobile-menu-enter { transform: translateX(100%); opacity: 0; } .mobile-menu-enter-active { transform: translateX(0); opacity: 1; transition: all 0.3s ease-out; } .mobile-menu-exit { transform: translateX(0); opacity: 1; } .mobile-menu-exit-active { transform: translateX(100%); opacity: 0; transition: all 0.3s ease-in; }