/* Custom Scrollbar */ ::-webkit-scrollbar { width: 10px; } ::-webkit-scrollbar-track { background: linear-gradient(180deg, #0f172a, #1e293b); } ::-webkit-scrollbar-thumb { background: linear-gradient(180deg, #0ea5e9, #8b5cf6); border-radius: 5px; border: 2px solid #1e293b; } ::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg, #38bdf8, #a78bfa); box-shadow: 0 0 10px rgba(14, 165, 233, 0.5); } /* Smooth transitions */ * { transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* Custom animations */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-10px); } } @keyframes shimmer { 0% { background-position: -200% center; } 100% { background-position: 200% center; } } @keyframes pulse-glow { 0%, 100% { box-shadow: 0 0 20px rgba(14, 165, 233, 0.3); } 50% { box-shadow: 0 0 40px rgba(14, 165, 233, 0.6); } } .fade-in-up { animation: fadeInUp 0.6s ease-out; } .float-animation { animation: float 3s ease-in-out infinite; } /* Glass morphism effect */ .glass { background: rgba(30, 41, 59, 0.4); backdrop-filter: blur(12px) saturate(180%); border: 1px solid rgba(255, 255, 255, 0.1); box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); } .glass-dark { background: rgba(15, 23, 42, 0.7); backdrop-filter: blur(16px) saturate(200%); border: 1px solid rgba(148, 163, 184, 0.1); } /* Hover glow effect */ .hover-glow:hover { box-shadow: 0 10px 30px rgba(14, 165, 233, 0.4); transform: translateY(-5px); } /* Gradient text animation */ .gradient-text { background: linear-gradient(90deg, #0ea5e9, #8b5cf6, #ec4899, #0ea5e9); background-size: 300% 300%; animation: gradientShift 4s ease infinite; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* Shimmer effect */ .shimmer { background: linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.1) 50%, rgba(255,255,255,0) 100%); background-size: 200% 100%; animation: shimmer 2s infinite; } /* Custom button styles */ .btn-primary { background: linear-gradient(135deg, #0ea5e9, #8b5cf6); color: white; padding: 0.75rem 1.5rem; border-radius: 0.75rem; font-weight: 600; border: none; cursor: pointer; transition: all 0.3s; position: relative; overflow: hidden; } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(14, 165, 233, 0.4); } .btn-primary::after { content: ''; position: absolute; top: -50%; left: -60%; width: 20%; height: 200%; background: rgba(255, 255, 255, 0.1); transform: rotate(30deg); transition: all 0.5s; } .btn-primary:hover::after { left: 140%; } /* Card styles */ .subject-card { background: linear-gradient(145deg, #1e293b, #0f172a); border-radius: 1.25rem; padding: 1.5rem; border: 1px solid rgba(148, 163, 184, 0.1); transition: all 0.3s; position: relative; overflow: hidden; } .subject-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: linear-gradient(90deg, #0ea5e9, #8b5cf6); opacity: 0; transition: opacity 0.3s; } .subject-card:hover::before { opacity: 1; } /* Stats counter animation */ .stat-number { font-feature-settings: "tnum"; font-variant-numeric: tabular-nums; } /* Loading skeleton */ .skeleton { background: linear-gradient(90deg, #1e293b 25%, #334155 50%, #1e293b 75%); background-size: 200% 100%; animation: shimmer 1.5s infinite; border-radius: 0.5rem; } /* Particle background */ .particle-bg { position: relative; overflow: hidden; } .particle-bg::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background-image: radial-gradient(circle at 20% 80%, rgba(14, 165, 233, 0.15) 0%, transparent 50%), radial-gradient(circle at 80% 20%, rgba(139, 92, 246, 0.15) 0%, transparent 50%), radial-gradient(circle at 40% 40%, rgba(236, 72, 153, 0.1) 0%, transparent 50%); pointer-events: none; } /* Responsive improvements */ @media (max-width: 768px) { .glass { backdrop-filter: blur(8px); } .subject-card { padding: 1rem; } } /* Print styles */ @media print { .glass, .subject-card { box-shadow: none; border: 1px solid #ddd; } }