:root { --color-primary: #2563eb; --color-secondary: #0f172a; --color-accent: #3b82f6; } * { font-family: 'Inter', sans-serif; } .gradient-bg { background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-accent) 100%); } .card-hover { transition: all 0.3s ease; } .card-hover:hover { transform: translateY(-8px); box-shadow: 0 20px 40px rgba(0, 0, 0, 0.1); } .smooth-scroll { scroll-behavior: smooth; } .btn-primary { background-color: var(--color-primary); transition: all 0.3s ease; } .btn-primary:hover { background-color: var(--color-accent); transform: scale(1.05); } .nav-link { position: relative; transition: color 0.3s ease; } .nav-link::after { content: ''; position: absolute; bottom: -2px; left: 0; width: 0; height: 2px; background-color: var(--color-primary); transition: width 0.3s ease; } .nav-link:hover::after { width: 100%; } .section-title { position: relative; display: inline-block; } .section-title::after { content: ''; position: absolute; bottom: -10px; left: 50%; transform: translateX(-50%); width: 60px; height: 4px; background-color: var(--color-primary); border-radius: 2px; } /* Animations et reveals */ @media (prefers-reduced-motion: reduce) { .card-hover, .btn-primary, .animate-fade-in, .reveal { transition: none !important; animation: none !important; } } .reveal { opacity: 0; transform: translateY(12px); transition: opacity 0.6s ease, transform 0.6s ease; will-change: opacity, transform; } .animate-fade-in { opacity: 1 !important; transform: translateY(0) !important; } /* Header scrolled state */ .header-scrolled { background-color: rgba(255, 255, 255, 0.98); box-shadow: 0 8px 24px rgba(15, 23, 42, 0.08); backdrop-filter: blur(6px); } /* Service icon micro-interaction */ .service-icon { transition: transform 0.35s ease; display: inline-block; } .card-hover:hover .service-icon { transform: translateY(-6px) rotate(-6deg) scale(1.05); } /* Buttons */ .btn-primary { box-shadow: 0 8px 20px rgba(37, 99, 235, 0.12); } .btn-primary:focus { outline: 3px solid rgba(37, 99, 235, 0.12); outline-offset: 2px; } /* Ensure avatars have a minimum height to avoid layout shift */ #team-container .aspect-square { min-height: 260px; } /* Background gradient + subtle noise */ body { background-image: radial-gradient(circle at 10% 10%, rgba(59, 130, 246, 0.06), transparent 10%), radial-gradient(circle at 90% 90%, rgba(99, 102, 241, 0.04), transparent 12%), linear-gradient(180deg, #fbfdff 0%, #f8fafc 100%); background-attachment: fixed; } /* Animated floating blobs */ .bg-blob { position: absolute; filter: blur(40px); opacity: 0.18; transform-origin: center; } .blob-1 { width: 420px; height: 420px; left: -80px; top: -60px; background: linear-gradient(135deg, rgba(37, 99, 235, 0.9), rgba(59, 130, 246, 0.6)); animation: floatY 8s ease-in-out infinite; } .blob-2 { width: 300px; height: 300px; right: -60px; bottom: -80px; background: linear-gradient(135deg, rgba(59, 130, 246, 0.9), rgba(99, 102, 241, 0.6)); animation: floatX 9s ease-in-out infinite; } @keyframes floatY { 0% { transform: translateY(0) } 50% { transform: translateY(18px) } 100% { transform: translateY(0) } } @keyframes floatX { 0% { transform: translateX(0) } 50% { transform: translateX(-18px) } 100% { transform: translateX(0) } } /* Hero illustration container */ .hero-illustration { position: relative; width: 100%; height: 420px; display: flex; align-items: center; justify-content: center; } .hero-illustration svg { width: 100%; height: 100%; max-width: 560px; } /* Testimonials */ .testimonials { background: linear-gradient(180deg, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.9)); padding: 4rem 0; border-radius: 12px; } .testimonial-slide { display: none; } .testimonial-slide.active { display: block; } .testimonials .controls { display: flex; gap: 12px; align-items: center; justify-content: center; margin-top: 1rem } .testimonials .dot { width: 10px; height: 10px; border-radius: 999px; background: rgba(15, 23, 42, 0.12); } .testimonials .dot.active { background: var(--color-primary); box-shadow: 0 6px 18px rgba(37, 99, 235, 0.14); } /* CTA micro-animation */ .cta-anim { transition: transform 0.35s cubic-bezier(.2, .9, .2, 1), box-shadow 0.35s; } .cta-anim:hover { transform: translateY(-6px); box-shadow: 0 18px 36px rgba(37, 99, 235, 0.14); } /* Background blobs and hero micro styles */ .bg-blob { will-change: transform, opacity; } /* Hero responsive */ @media (max-width: 768px) { .hero-illustration { height: 320px; } }