/* ========================================================================= PARALLAX INTRO — MVA Global Fret Page unique, fixe (pas de scroll). Vidéo Terre rotative + ligne rouge 3D Paris ↔ Antananarivo (suit la rotation du globe) + bouton centré. ========================================================================= */ :root { --navy: #1a1a3e; --navy-deep: #050518; --gold: #c5a55a; --gold-light: #e0c98a; --red: #ff2a3d; --white: #fff; --mx: 0; --my: 0; } * { box-sizing: border-box; margin: 0; padding: 0; } html, body { height: 100%; overflow: hidden; } .parallax-body { font-family: 'Inter', sans-serif; color: var(--white); background: var(--navy-deep); } /* ── HEADER ─────────────────────────────────────────────────────────────── */ .parallax-header { position: fixed; top: 0; left: 0; right: 0; display: flex; align-items: center; justify-content: space-between; padding: 22px 36px; z-index: 50; } .parallax-logo { display: inline-flex; align-items: center; gap: 12px; color: var(--white); font-family: 'Poppins', sans-serif; font-weight: 700; letter-spacing: 1.2px; font-size: 0.92rem; text-transform: uppercase; user-select: none; } .parallax-logo img { height: 44px; width: auto; filter: drop-shadow(0 4px 14px rgba(0,0,0,0.65)); } .lang-switcher { display: inline-flex; background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.18); border-radius: 50px; padding: 4px; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); } .lang-switcher button { background: transparent; border: none; color: rgba(255,255,255,0.7); padding: 6px 14px; cursor: pointer; border-radius: 50px; font-weight: 600; font-size: 0.78rem; font-family: inherit; transition: all 0.2s; } .lang-switcher button.active { background: var(--gold); color: var(--navy); } .lang-switcher button:hover:not(.active) { color: var(--white); } /* ── STAGE ──────────────────────────────────────────────────────────────── */ .stage { position: relative; width: 100vw; height: 100vh; overflow: hidden; } .layer { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; will-change: transform; } /* Parallaxe vidéo : suit la souris avec easing. Sur-dimensionnée pour masquer les bords quand elle bouge. */ .layer-video { object-fit: cover; object-position: center; transform: translate(calc(var(--mx) * -22px), calc(var(--my) * -22px)) scale(1.06); } /* Voile très léger — la vidéo en golden hour est belle, on la laisse vivre. Petit assombrissement vers les bords pour la lisibilité du bouton. */ .layer-tint { background: radial-gradient(ellipse at center, transparent 0%, rgba(5, 5, 24, 0.32) 100%), linear-gradient(180deg, transparent 50%, rgba(5, 5, 24, 0.35) 100%); } /* ── PARACHUTE + BOUTON-NUAGE ──────────────────────────────────────────── Le bloc tombe du haut de l'écran jusqu'au centre via translateY animé, plus rapide que les parachutes de la vidéo (~1.6s vs 7s). Après l'atter- rissage, le parachute Lottie continue à boucler doucement au-dessus du nuage. Aucune parallaxe souris sur ce groupe — la chute est l'effet. */ .cta-stack { position: absolute; top: 50%; left: 50%; z-index: 10; display: flex; flex-direction: column; align-items: center; pointer-events: none; transform: translate(-50%, -50%); animation: parachute-drop 1.6s cubic-bezier(0.34, 0.4, 0.5, 1) 0.2s both; } .cta-stack > * { pointer-events: auto; } @keyframes parachute-drop { 0% { transform: translate(-50%, -130vh); opacity: 0; } 10% { opacity: 1; } 85% { transform: translate(-50%, -42%); opacity: 1; } 100% { transform: translate(-50%, -50%); } } .cta-parachute { width: 170px; height: 170px; margin-bottom: -22px; filter: drop-shadow(0 12px 18px rgba(0, 0, 0, 0.35)); pointer-events: none; } /* ── BOUTON-NUAGE ──────────────────────────────────────────────────────── Pill blanche moelleuse + 5 puffs en absolu pour la silhouette nuage. */ .cloud-btn { position: relative; display: inline-flex; align-items: center; text-decoration: none; padding: 22px 52px; border-radius: 60px; background: linear-gradient(180deg, #ffffff 0%, #eaf1ff 100%); color: var(--navy); font-family: 'Poppins', sans-serif; font-weight: 700; font-size: 1.1rem; letter-spacing: 0.4px; white-space: nowrap; box-shadow: 0 24px 70px rgba(120, 150, 220, 0.45), 0 6px 18px rgba(20, 20, 50, 0.18), inset 0 -3px 8px rgba(180, 200, 235, 0.5), inset 0 2px 0 rgba(255, 255, 255, 0.95); transition: transform 0.32s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.32s cubic-bezier(0.2, 0.8, 0.2, 1); } .cloud-btn:hover { transform: scale(1.04); box-shadow: 0 30px 85px rgba(120, 150, 220, 0.55), 0 10px 24px rgba(20, 20, 50, 0.22), inset 0 -3px 8px rgba(180, 200, 235, 0.5), inset 0 2px 0 rgba(255, 255, 255, 1); } /* Puffs de nuage — 5 boules positionnées autour de la pill */ .cloud-puff { position: absolute; background: linear-gradient(180deg, #ffffff 0%, #e7eefc 100%); border-radius: 50%; box-shadow: inset 0 -3px 6px rgba(180, 200, 235, 0.5), inset 0 2px 0 rgba(255, 255, 255, 0.9); z-index: 0; } .cloud-puff-tl { width: 60px; height: 60px; top: -22px; left: 8%; } .cloud-puff-tm { width: 52px; height: 52px; top: -32px; left: 50%; transform: translateX(-50%); } .cloud-puff-tr { width: 56px; height: 56px; top: -22px; right: 8%; } .cloud-puff-bl { width: 44px; height: 44px; bottom: -18px; left: 22%; } .cloud-puff-br { width: 48px; height: 48px; bottom: -20px; right: 22%; } .cloud-content { position: relative; z-index: 1; display: inline-flex; align-items: center; gap: 14px; } .cloud-content i { font-size: 0.95rem; transition: transform 0.32s ease; } .cloud-btn:hover .cloud-content i { transform: translateX(6px); } /* ── RESPONSIVE ─────────────────────────────────────────────────────────── */ @media (max-width: 768px) { .parallax-header { padding: 14px 18px; } .parallax-logo span { display: none; } .parallax-logo img { height: 38px; } .lang-switcher button { padding: 5px 10px; font-size: 0.74rem; } .cta-parachute { width: 130px; height: 130px; margin-bottom: -16px; } .cloud-btn { padding: 16px 34px; font-size: 0.98rem; } .cloud-puff-tl { width: 50px; height: 50px; top: -22px; } .cloud-puff-tm { width: 44px; height: 44px; top: -26px; } .cloud-puff-tr { width: 46px; height: 46px; top: -22px; } .cloud-puff-bl { width: 38px; height: 38px; bottom: -16px; } .cloud-puff-br { width: 42px; height: 42px; bottom: -18px; } } @media (prefers-reduced-motion: reduce) { .cta-stack { animation: none; } }