@import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap'); @tailwind base; @tailwind components; @tailwind utilities; body { margin: 0; font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; background: #1a1d24; min-height: 100vh; } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* ThirdWeb-inspired animations and styles */ @keyframes fadeIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: translateY(0); } } @keyframes shimmer { 0% { background-position: -1000px 0; } 100% { background-position: 1000px 0; } } @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 5px rgba(59, 130, 246, 0.5); } 50% { box-shadow: 0 0 20px rgba(59, 130, 246, 0.8), 0 0 30px rgba(147, 51, 234, 0.6); } } .animate-fadeIn { animation: fadeIn 0.5s ease-out; } .animate-shimmer { animation: shimmer 2s infinite linear; background: linear-gradient( to right, #f6f7f8 0%, #edeef1 20%, #f6f7f8 40%, #f6f7f8 100% ); background-size: 1000px 100%; } .animate-pulse-glow { animation: pulse-glow 2s ease-in-out infinite; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 10px; } ::-webkit-scrollbar-thumb { background: linear-gradient(to bottom, #3b82f6, #8b5cf6); border-radius: 10px; } ::-webkit-scrollbar-thumb:hover { background: linear-gradient(to bottom, #2563eb, #7c3aed); } /* 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.18); } /* Gradient text */ .gradient-text { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* Button hover effects */ .btn-gradient { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); transition: all 0.3s ease; } .btn-gradient:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(102, 126, 234, 0.4); } /* 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); } /* Additional animations */ @keyframes slideIn { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } @keyframes scaleIn { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } } @keyframes bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } @keyframes spin-slow { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .animate-slideIn { animation: slideIn 0.3s ease-out; } .animate-scaleIn { animation: scaleIn 0.2s ease-out; } .animate-bounce { animation: bounce 1s infinite; } .animate-spin-slow { animation: spin-slow 3s linear infinite; } /* Focus styles for accessibility */ *:focus-visible { outline: 2px solid #3b82f6; outline-offset: 2px; border-radius: 4px; } /* Input focus styles */ input:focus, select:focus, textarea:focus { outline: none; ring: 2px; ring-color: rgba(59, 130, 246, 0.5); } /* Smooth transitions */ * { transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } /* Responsive text sizing */ @media (max-width: 640px) { html { font-size: 14px; } } /* Loading spinner */ .spinner { border: 3px solid rgba(59, 130, 246, 0.1); border-top-color: #3b82f6; border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } /* Success checkmark animation */ @keyframes checkmark { 0% { stroke-dashoffset: 100; } 100% { stroke-dashoffset: 0; } } .checkmark { stroke-dasharray: 100; stroke-dashoffset: 100; animation: checkmark 0.5s ease-out forwards; } /* Gradient backgrounds */ .bg-gradient-primary { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); } .bg-gradient-secondary { background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%); } .bg-gradient-success { background: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%); } /* Text selection */ ::selection { background-color: rgba(59, 130, 246, 0.3); color: inherit; } /* Portal Styling Enhancements */ /* Animated grid pattern for portal effect */ @keyframes gridMove { 0% { transform: translate(0, 0); } 100% { transform: translate(60px, 60px); } } .portal-grid { background-image: linear-gradient(rgba(34, 211, 238, 0.1) 1px, transparent 1px), linear-gradient(90deg, rgba(34, 211, 238, 0.1) 1px, transparent 1px); background-size: 60px 60px; animation: gridMove 20s linear infinite; } /* Portal entrance animation */ @keyframes portalOpen { 0% { opacity: 0; transform: scale(0.8) rotateY(90deg); filter: blur(10px); } 100% { opacity: 1; transform: scale(1) rotateY(0deg); filter: blur(0px); } } .portal-entrance { animation: portalOpen 0.6s cubic-bezier(0.34, 1.56, 0.64, 1); } /* Holographic shimmer effect */ @keyframes holographic { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } .holographic-text { background: linear-gradient( 90deg, #06b6d4 0%, #8b5cf6 25%, #ec4899 50%, #8b5cf6 75%, #06b6d4 100% ); background-size: 200% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; animation: holographic 3s linear infinite; } /* Energy flow animation */ @keyframes energyFlow { 0% { transform: translateX(-200%) translateY(-50%); } 100% { transform: translateX(200%) translateY(-50%); } } .energy-flow::before { content: ''; position: absolute; top: 50%; left: 0; width: 100%; height: 2px; background: linear-gradient( 90deg, transparent, rgba(34, 211, 238, 0.8), rgba(168, 85, 247, 0.8), rgba(236, 72, 153, 0.8), transparent ); animation: energyFlow 2s ease-in-out infinite; } /* Portal glow pulse */ @keyframes portalGlow { 0%, 100% { box-shadow: 0 0 20px rgba(34, 211, 238, 0.4), 0 0 40px rgba(168, 85, 247, 0.3), inset 0 0 20px rgba(34, 211, 238, 0.1); } 50% { box-shadow: 0 0 40px rgba(34, 211, 238, 0.6), 0 0 80px rgba(168, 85, 247, 0.5), inset 0 0 30px rgba(34, 211, 238, 0.2); } } .portal-glow { animation: portalGlow 3s ease-in-out infinite; } /* Floating particles */ @keyframes float { 0%, 100% { transform: translateY(0) translateX(0); opacity: 0.3; } 50% { transform: translateY(-20px) translateX(10px); opacity: 0.8; } } .floating-particle { animation: float 4s ease-in-out infinite; } /* Neon border effect */ .neon-border { border: 2px solid; border-image: linear-gradient( 45deg, rgba(34, 211, 238, 0.5), rgba(168, 85, 247, 0.5), rgba(236, 72, 153, 0.5), rgba(34, 211, 238, 0.5) ) 1; box-shadow: 0 0 10px rgba(34, 211, 238, 0.3), inset 0 0 10px rgba(34, 211, 238, 0.1); } /* Portal ring effect */ @keyframes portalRing { 0%, 100% { opacity: 0.3; transform: scale(1); } 50% { opacity: 0.6; transform: scale(1.05); } } .portal-ring { animation: portalRing 2s ease-in-out infinite; }