/* Custom CSS for animations and effects that Tailwind can't handle */ @keyframes gradient { 0%, 100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } } .animate-gradient { background-size: 200% auto; animation: gradient 8s ease infinite; } @keyframes float { 0%, 100% { transform: translateY(0px) rotate(0deg); } 50% { transform: translateY(-20px) rotate(180deg); } } .particle { animation: float 20s infinite ease-in-out; box-shadow: 0 0 20px rgba(251, 191, 36, 0.5); } /* Glassmorphism enhancements */ .glass { background: rgba(255, 255, 255, 0.1); backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.2); } .dark .glass { background: rgba(0, 0, 0, 0.2); border: 1px solid rgba(255, 255, 255, 0.1); } /* Custom scrollbar */ ::-webkit-scrollbar { width: 10px; } ::-webkit-scrollbar-track { background: #f1f5f9; } ::-webkit-scrollbar-thumb { background: #3b82f6; border-radius: 5px; } ::-webkit-scrollbar-thumb:hover { background: #2563eb; } .dark ::-webkit-scrollbar-track { background: #0f172a; } .dark ::-webkit-scrollbar-thumb { background: #60a5fa; } /* Smooth transitions for dark mode */ * { transition: background-color 0.3s ease, border-color 0.3s ease; } /* Calculator input enhancements */ input[type="number"], input[type="text"], input[type="email"], select, textarea { transition: all 0.3s ease; } input:focus, select:focus, textarea:focus { transform: translateY(-2px); box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); } /* Dark mode toggle animation */ .dark-mode-toggle { position: relative; width: 60px; height: 30px; background: #e2e8f0; border-radius: 15px; cursor: pointer; transition: background 0.3s ease; } .dark-mode-toggle.active { background: #3b82f6; } .dark-mode-toggle::after { content: ''; position: absolute; top: 3px; left: 3px; width: 24px; height: 24px; background: white; border-radius: 50%; transition: transform 0.3s ease; box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); } .dark-mode-toggle.active::after { transform: translateX(30px); } /* Hover effects for cards */ .hover-lift { transition: transform 0.3s ease, box-shadow 0.3s ease; } .hover-lift:hover { transform: translateY(-8px); box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); } /* Loading spinner */ .spinner { border: 3px solid #f3f3f3; border-top: 3px solid #3b82f6; border-radius: 50%; width: 40px; height: 40px; animation: spin 1s linear infinite; } .dark .spinner { border: 3px solid #1e293b; border-top: 3px solid #60a5fa; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }