/* Animations */ /* Spinner Animation */ @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } .spinner { animation: spin 1s linear infinite; } /* Fade In Animation */ @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .fade-in { animation: fadeIn 0.5s ease-in; } /* Slide Up Animation */ @keyframes slideUp { from { transform: translateY(20px); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .slide-up { animation: slideUp 0.5s ease-out; } /* Pulse Animation */ @keyframes pulse { 0% { transform: scale(1); } 50% { transform: scale(1.05); } 100% { transform: scale(1); } } .pulse { animation: pulse 2s infinite; } /* Scale Animation */ @keyframes scale { from { transform: scale(0.95); } to { transform: scale(1); } } .scale { animation: scale 0.3s ease-out; } /* Button Hover Effects */ .analyze-btn:not(:disabled):hover { transform: translateY(-2px); box-shadow: 0 4px 6px rgba(37, 99, 235, 0.25); } .analyze-btn:not(:disabled):active { transform: translateY(0); } /* Card Hover Effects */ .feature-card:hover .feature-icon { transform: scale(1.1); background-color: rgba(37, 99, 235, 0.15); } /* File Upload Animation */ .upload-area.dragover { transform: scale(1.02); } /* Tab Button Animation */ .tab-btn { transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease, transform 0.2s ease; } .tab-btn:hover:not(.active) { transform: translateY(-2px); } .tab-btn.active { transform: translateY(-3px); } /* Results Container Animation */ .results-container { transition: transform 0.3s ease, box-shadow 0.3s ease; } .results-container:hover { box-shadow: var(--shadow-lg); } /* Section Transitions */ .section-title, .feature-card, .about-content p { opacity: 0; transform: translateY(20px); transition: opacity 0.5s ease, transform 0.5s ease; } /* These will be activated by JavaScript when elements come into view */ .appear { opacity: 1; transform: translateY(0); } /* Hero Section Animation */ .hero { background-size: 200% 200%; animation: gradientAnimation 15s ease infinite; } @keyframes gradientAnimation { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* Logo Animation */ .logo i { transition: transform 0.3s ease; } .logo:hover i { transform: rotate(15deg); } /* Action Buttons Animation */ .action-btn { transition: all 0.2s ease; } .action-btn:hover { transform: translateY(-2px); } .action-btn:active { transform: translateY(0); } /* File Selected Animation */ .file-selected { border-color: var(--success-color) !important; background-color: rgba(16, 185, 129, 0.05) !important; } .file-selected i { color: var(--success-color); }