/* Global Styles for FaceSwap Magic */ * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif; overflow-x: hidden; } /* Custom scrollbar */ ::-webkit-scrollbar { width: 10px; } ::-webkit-scrollbar-track { background: #f1f1f1; border-radius: 5px; } ::-webkit-scrollbar-thumb { background: var(--primary); border-radius: 5px; } ::-webkit-scrollbar-thumb:hover { background: var(--primary-dark); } /* Animation Classes */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } @keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } } @keyframes shimmer { 0% { background-position: -1000px 0; } 100% { background-position: 1000px 0; } } .animate-fadeInUp { animation: fadeInUp 0.6s ease-out forwards; } .animate-pulse { animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; } .animate-shimmer { background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.4) 50%, transparent 100%); background-size: 1000px 100%; animation: shimmer 2s infinite; } /* Loading spinner */ .spinner { border: 3px solid rgba(255, 255, 255, 0.3); border-radius: 50%; border-top: 3px solid var(--primary); width: 40px; height: 40px; animation: spin 1s linear infinite; } @keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } } /* File upload hover effects */ .upload-area:hover .upload-icon { transform: translateY(-5px); transition: transform 0.3s ease; } .upload-icon { transition: transform 0.3s ease; } /* Button hover effects */ .btn-primary { background: linear-gradient(135deg, var(--primary) 0%, var(--primary-dark) 100%); transition: all 0.3s ease; } .btn-primary:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(139, 92, 246, 0.3); } .btn-secondary { background: linear-gradient(135deg, var(--secondary) 0%, var(--secondary-dark) 100%); transition: all 0.3s ease; } .btn-secondary:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(245, 158, 11, 0.3); } /* Card hover effects */ .hover-card { transition: all 0.3s ease; } .hover-card:hover { transform: translateY(-5px); } /* Image preview styling */ .image-preview { position: relative; overflow: hidden; border-radius: 12px; } .image-preview img { transition: transform 0.5s ease; } .image-preview:hover img { transform: scale(1.05); } /* Range slider customization */ input[type="range"] { -webkit-appearance: none; appearance: none; height: 8px; border-radius: 4px; background: #e5e7eb; outline: none; } input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 20px; height: 20px; border-radius: 50%; background: var(--primary); cursor: pointer; border: 3px solid white; box-shadow: 0 2px 5px rgba(0,0,0,0.2); } input[type="range"]::-moz-range-thumb { width: 20px; height: 20px; border-radius: 50%; background: var(--primary); cursor: pointer; border: 3px solid white; box-shadow: 0 2px 5px rgba(0,0,0,0.2); } /* Toast notification */ .toast { position: fixed; top: 20px; right: 20px; background: white; padding: 16px 24px; border-radius: 8px; box-shadow: 0 10px 25px rgba(0,0,0,0.1); transform: translateX(150%); transition: transform 0.3s ease; z-index: 1000; border-left: 4px solid var(--primary); } .toast.show { transform: translateX(0); } /* Responsive adjustments */ @media (max-width: 768px) { .hero-title { font-size: 2.5rem; } .feature-grid { grid-template-columns: 1fr; } .upload-section { padding: 1.5rem; } } @media (max-width: 480px) { .hero-title { font-size: 2rem; } .button-group { flex-direction: column; gap: 1rem; } .button-group button, .button-group a { width: 100%; justify-content: center; } } /* Print styles */ @media print { .no-print { display: none; } }