| |
| @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; |
| } |
|
|
| |
| html { |
| scroll-behavior: smooth; |
| } |
|
|
| |
| ::-webkit-scrollbar { |
| width: 10px; |
| } |
|
|
| ::-webkit-scrollbar-track { |
| background: #0f172a; |
| } |
|
|
| ::-webkit-scrollbar-thumb { |
| background: #334155; |
| border-radius: 5px; |
| } |
|
|
| ::-webkit-scrollbar-thumb:hover { |
| background: #475569; |
| } |
|
|
| |
| ::selection { |
| background: rgba(124, 58, 237, 0.3); |
| color: white; |
| } |
|
|
| |
| .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); |
| } |
|
|
| |
| .text-gradient { |
| background-clip: text; |
| -webkit-background-clip: text; |
| -webkit-text-fill-color: transparent; |
| } |
|
|
| |
| :focus-visible { |
| outline: 2px solid #7c3aed; |
| outline-offset: 2px; |
| } |
|
|
| |
| .loading * { |
| transition: none !important; |
| animation: none !important; |
| } |
|
|
| |
| 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-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; |
| } |