diff --git a/css/parallax.css b/css/parallax.css index a88afa8..935d659 100644 --- a/css/parallax.css +++ b/css/parallax.css @@ -1,16 +1,16 @@ /* ========================================================================= - PARALLAX INTRO PAGE — MVA Global Fret - Scroll-driven storytelling: tarmac → décollage → arrivée à Madagascar + PARALLAX INTRO — MVA Global Fret + Page unique fixe. Parallaxe pilotée à la souris uniquement. + Photos professionnelles Unsplash, aucun dessin maison. ========================================================================= */ :root { --navy: #1a1a3e; - --navy-deep: #0d0d24; + --navy-deep: #050518; --navy-light: #2a2a5e; --gold: #c5a55a; --gold-light: #e0c98a; --white: #ffffff; - --scroll: 0; --mx: 0; --my: 0; } @@ -18,8 +18,8 @@ * { box-sizing: border-box; margin: 0; padding: 0; } html, body { - scroll-behavior: smooth; - overflow-x: hidden; + height: 100%; + overflow: hidden; } .parallax-body { @@ -35,51 +35,42 @@ html, body { display: flex; align-items: center; justify-content: space-between; - padding: 18px 36px; - z-index: 100; - background: linear-gradient(to bottom, rgba(13,13,36,0.55), transparent); - backdrop-filter: blur(6px); - -webkit-backdrop-filter: blur(6px); + padding: 20px 36px; + z-index: 50; } .parallax-logo { display: inline-flex; align-items: center; gap: 12px; - text-decoration: none; color: var(--white); font-family: 'Poppins', sans-serif; font-weight: 700; letter-spacing: 1px; font-size: 0.95rem; text-transform: uppercase; + user-select: none; } - .parallax-logo img { height: 44px; width: auto; - filter: drop-shadow(0 4px 8px rgba(0,0,0,0.35)); -} - -.parallax-header-right { - display: flex; - align-items: center; - gap: 18px; + filter: drop-shadow(0 4px 12px rgba(0,0,0,0.5)); } .lang-switcher { display: inline-flex; background: rgba(255,255,255,0.08); - border: 1px solid rgba(255,255,255,0.15); + border: 1px solid rgba(255,255,255,0.18); border-radius: 50px; padding: 4px; - backdrop-filter: blur(8px); + backdrop-filter: blur(10px); + -webkit-backdrop-filter: blur(10px); } .lang-switcher button { background: transparent; border: none; - color: rgba(255,255,255,0.6); - padding: 5px 12px; + color: rgba(255,255,255,0.7); + padding: 6px 14px; cursor: pointer; border-radius: 50px; font-weight: 600; @@ -93,614 +84,299 @@ html, body { } .lang-switcher button:hover:not(.active) { color: var(--white); } -.parallax-skip { - display: inline-flex; - align-items: center; - gap: 8px; - padding: 9px 18px; - border: 1px solid rgba(255,255,255,0.25); - border-radius: 50px; - color: var(--white); - text-decoration: none; - font-size: 0.85rem; - font-weight: 500; - transition: all 0.25s ease; - backdrop-filter: blur(8px); - background: rgba(255,255,255,0.05); -} -.parallax-skip:hover { - background: var(--gold); - color: var(--navy); - border-color: var(--gold); - transform: translateX(2px); -} -.parallax-skip i { transition: transform 0.25s; font-size: 0.75rem; } -.parallax-skip:hover i { transform: translateX(3px); } - -/* ── SCÈNES PARALLAX ─────────────────────────────────────────────────────── */ -.parallax-scene { +/* ── STAGE ──────────────────────────────────────────────────────────────── */ +.stage { position: relative; - width: 100%; + width: 100vw; height: 100vh; overflow: hidden; + perspective: 1000px; } .layer { position: absolute; - inset: 0; + inset: -8% -8%; /* Marge pour que la parallaxe ne révèle pas les bords */ pointer-events: none; will-change: transform; } /* ────────────────────────────────────────────────────────────────────────── - SCÈNE 1 — TARMAC (avion qui se charge au coucher de soleil) + COUCHE 1 — Terre depuis l'espace (background le plus profond) + Photo : NASA / Unsplash @nasa ────────────────────────────────────────────────────────────────────────── */ -.scene-tarmac { - background: linear-gradient(to bottom, - #1a1a3e 0%, - #2d2350 25%, - #6b3050 50%, - #c47a3f 75%, - #f4b669 95%, - #f9d28a 100%); -} - -.scene-tarmac .sky { - background: radial-gradient(ellipse at 50% 90%, rgba(255, 200, 120, 0.4), transparent 60%); - transform: translateY(calc(var(--scroll) * -50vh)); -} - -.scene-tarmac .sun { - position: absolute; - bottom: 18%; - left: 50%; - transform: translateX(-50%) translateY(calc(var(--scroll) * -120vh)); - width: 240px; - height: 240px; - background: radial-gradient(circle, #ffe9b6 0%, #ffb874 35%, transparent 70%); - border-radius: 50%; - filter: blur(10px); -} - -.scene-tarmac .stars { display: none; } - -.scene-tarmac .mountains { - bottom: 18%; - height: 30%; - background: - linear-gradient(to right, - transparent 0%, transparent 5%, - #2d2350 5%, #2d2350 14%, - transparent 14%, transparent 18%, - #1f1839 18%, #1f1839 32%, - transparent 32%, transparent 38%, - #2d2350 38%, #2d2350 55%, - transparent 55%, transparent 60%, - #1f1839 60%, #1f1839 78%, - transparent 78%, transparent 82%, - #2d2350 82%, #2d2350 100%); - -webkit-mask: linear-gradient(135deg, transparent 30%, black 30%, black 70%, transparent 70%); - mask: linear-gradient(135deg, transparent 30%, black 30%, black 70%, transparent 70%); - /* simpler approach with SVG mountain silhouette */ - background-image: url("data:image/svg+xml;utf8,"); +.layer-earth { + background-image: url('https://images.unsplash.com/photo-1451187580459-43490279c0fa?w=2400&q=85'); background-size: cover; - background-repeat: no-repeat; - background-position: bottom; - transform: translate(calc(var(--mx) * -8px), calc(var(--scroll) * -25vh)); + background-position: center; + /* Bouge légèrement à la souris */ + transform: translate(calc(var(--mx) * -18px), calc(var(--my) * -18px)) scale(1.04); } -.scene-tarmac .hangar { - bottom: 17%; - left: -5%; - width: 30%; - height: 18%; - background: linear-gradient(180deg, #14102a 0%, #0a081c 100%); - -webkit-mask: url("data:image/svg+xml;utf8,") no-repeat; - -webkit-mask-size: 100% 100%; - mask: url("data:image/svg+xml;utf8,") no-repeat; - mask-size: 100% 100%; - transform: translate(calc(var(--mx) * -15px), calc(var(--scroll) * -40vh)); +/* ────────────────────────────────────────────────────────────────────────── + COUCHE 2 — Voile bleu nuit pour assombrir et amener la palette de marque + ────────────────────────────────────────────────────────────────────────── */ +.layer-tint { + background: + radial-gradient(ellipse at center, rgba(26, 26, 62, 0.4) 0%, rgba(5, 5, 24, 0.85) 100%), + linear-gradient(180deg, rgba(26, 26, 62, 0.5) 0%, rgba(5, 5, 24, 0.7) 100%); + inset: 0; } -.scene-tarmac .tarmac { - bottom: 0; - height: 18%; - background: linear-gradient(to bottom, - rgba(40, 30, 60, 0.4) 0%, - rgba(20, 15, 30, 0.85) 50%, - rgba(10, 8, 18, 1) 100%); - border-top: 1px solid rgba(197, 165, 90, 0.2); - transform: translateY(calc(var(--scroll) * 20vh)); +/* ────────────────────────────────────────────────────────────────────────── + COUCHE 3 — Nuages au coucher de soleil (vue aérienne) + Mode soft-light pour fusionner avec la Terre + Photo : Unsplash + ────────────────────────────────────────────────────────────────────────── */ +.layer-clouds { + background-image: url('https://images.unsplash.com/photo-1530908295418-a12e326966ba?w=2400&q=85'); + background-size: cover; + background-position: center; + opacity: 0.28; + mix-blend-mode: soft-light; + transform: translate(calc(var(--mx) * -32px), calc(var(--my) * -32px)) scale(1.06); } -.scene-tarmac .tarmac::before { + +/* ────────────────────────────────────────────────────────────────────────── + COUCHE 4 — Halo doré central qui suit la souris + ────────────────────────────────────────────────────────────────────────── */ +.layer-glow { + background: radial-gradient(circle at calc(50% + var(--mx) * 8%) calc(50% + var(--my) * 8%), + rgba(197, 165, 90, 0.22) 0%, + rgba(197, 165, 90, 0.10) 25%, + transparent 55%); + inset: 0; + mix-blend-mode: screen; +} + +/* ────────────────────────────────────────────────────────────────────────── + COUCHE 5 — Particules dorées flottantes (parallaxe la plus rapide) + ────────────────────────────────────────────────────────────────────────── */ +.layer-particles { + inset: 0; + transform: translate(calc(var(--mx) * -55px), calc(var(--my) * -55px)); +} +.particle { + position: absolute; + border-radius: 50%; + background: radial-gradient(circle, #fff 0%, var(--gold) 50%, transparent 100%); + pointer-events: none; + filter: blur(0.5px); + animation: float 14s ease-in-out infinite; +} +.particle::after { content: ''; position: absolute; - top: 30%; - left: 0; right: 0; - height: 2px; - background: repeating-linear-gradient(to right, - transparent 0, transparent 30px, - rgba(255, 220, 150, 0.5) 30px, rgba(255, 220, 150, 0.5) 60px); + inset: -4px; + border-radius: 50%; + background: radial-gradient(circle, rgba(197, 165, 90, 0.5) 0%, transparent 70%); + filter: blur(4px); } +.p1 { top: 12%; left: 8%; width: 4px; height: 4px; animation-delay: 0s; animation-duration: 12s; } +.p2 { top: 22%; left: 78%; width: 3px; height: 3px; animation-delay: -2s; animation-duration: 16s; } +.p3 { top: 35%; left: 18%; width: 5px; height: 5px; animation-delay: -5s; animation-duration: 14s; } +.p4 { top: 48%; left: 88%; width: 2px; height: 2px; animation-delay: -8s; animation-duration: 18s; } +.p5 { top: 60%; left: 14%; width: 4px; height: 4px; animation-delay: -3s; animation-duration: 13s; } +.p6 { top: 72%; left: 72%; width: 3px; height: 3px; animation-delay: -6s; animation-duration: 17s; } +.p7 { top: 82%; left: 30%; width: 5px; height: 5px; animation-delay: -1s; animation-duration: 15s; } +.p8 { top: 18%; left: 48%; width: 2px; height: 2px; animation-delay: -7s; animation-duration: 19s; } +.p9 { top: 40%; left: 56%; width: 3px; height: 3px; animation-delay: -4s; animation-duration: 14s; } +.p10 { top: 88%; left: 92%; width: 4px; height: 4px; animation-delay: -9s; animation-duration: 16s; } +.p11 { top: 6%; left: 35%; width: 3px; height: 3px; animation-delay: -10s; animation-duration: 13s; } +.p12 { top: 92%; left: 56%; width: 2px; height: 2px; animation-delay: -11s; animation-duration: 17s; } -/* ── PLANE STAGES (3 versions, une par scène) ───────────────────────────── */ -.plane-stage { - position: absolute; - pointer-events: none; - will-change: transform; -} - -.plane { - width: 100%; - height: auto; - display: block; - filter: drop-shadow(0 12px 24px rgba(0, 0, 0, 0.45)); -} - -/* Avion scène 1 : au sol, immobile */ -.plane-loading { - bottom: 14%; - left: 50%; - transform: translateX(-50%) translateY(calc(var(--scroll) * 30vh)); - width: min(640px, 75vw); - z-index: 5; -} - -/* Rampe de chargement */ -.ramp { - position: absolute; - bottom: 8%; - left: calc(50% - 280px); - width: 90px; - height: 8px; - background: linear-gradient(90deg, #5a4520, #8a6a30); - transform: rotate(-18deg); - transform-origin: right; - border-radius: 4px; - box-shadow: 0 4px 12px rgba(0,0,0,0.4); - z-index: 4; - transform: translateY(calc(var(--scroll) * 30vh)) rotate(-18deg); -} - -/* Boîtes qui montent dans l'avion (animation) */ -.box { - position: absolute; - bottom: 6%; - font-size: 28px; - z-index: 6; - animation: loadBox 4s ease-in-out infinite; - filter: drop-shadow(0 4px 8px rgba(0,0,0,0.5)); - transform: translateY(calc(var(--scroll) * 30vh)); -} -.box-1 { left: calc(50% - 320px); animation-delay: 0s; } -.box-2 { left: calc(50% - 320px); animation-delay: 1.3s; } -.box-3 { left: calc(50% - 320px); animation-delay: 2.6s; } - -@keyframes loadBox { - 0% { transform: translate(0, calc(var(--scroll, 0) * 30vh)) scale(1); opacity: 0; } - 10% { opacity: 1; } - 60% { transform: translate(140px, calc(-30px + var(--scroll, 0) * 30vh)) scale(0.95); opacity: 1; } - 90% { transform: translate(170px, calc(-20px + var(--scroll, 0) * 30vh)) scale(0.7); opacity: 0; } - 100% { transform: translate(170px, calc(-20px + var(--scroll, 0) * 30vh)) scale(0.7); opacity: 0; } -} - -.ground-boxes { - position: absolute; - bottom: 2%; - left: calc(50% - 350px); - display: flex; - gap: 6px; - z-index: 4; - transform: translateY(calc(var(--scroll) * 30vh)); -} -.ground-box { - width: 28px; height: 28px; - background: linear-gradient(135deg, #c5a55a, #8a6a30); - border: 1px solid #5a4520; - border-radius: 3px; - box-shadow: 0 4px 8px rgba(0,0,0,0.5); -} -.gb-1 { transform: translateY(0); } -.gb-2 { transform: translateY(-2px); } -.gb-3 { transform: translateY(-1px); } - -/* ── TEXTE HERO (scène 1) ────────────────────────────────────────────────── */ -.scene-text { - position: absolute; - z-index: 10; - text-align: center; - width: 100%; - padding: 0 20px; -} - -.scene-text--hero { - top: 22%; - left: 0; - right: 0; - opacity: calc(1 - var(--scroll) * 3); - transform: translateY(calc(var(--scroll) * -30vh)); -} - -.hero-pretitle { - font-family: 'Poppins', sans-serif; - font-weight: 500; - letter-spacing: 6px; - text-transform: uppercase; - color: var(--gold); - font-size: 0.85rem; - margin-bottom: 14px; - opacity: 0.9; -} - -.hero-title { - font-family: 'Poppins', sans-serif; - font-size: clamp(2.2rem, 6vw, 4.5rem); - font-weight: 800; - letter-spacing: -1px; - line-height: 1; - background: linear-gradient(135deg, #fff 0%, #c5a55a 50%, #fff 100%); - -webkit-background-clip: text; - background-clip: text; - -webkit-text-fill-color: transparent; - color: transparent; - text-shadow: 0 6px 30px rgba(0,0,0,0.5); -} - -.hero-line { - width: 80px; - height: 3px; - background: var(--gold); - margin: 22px auto; - border-radius: 2px; -} - -.hero-subtitle { - font-size: clamp(1rem, 2vw, 1.3rem); - font-weight: 300; - color: rgba(255, 255, 255, 0.88); - letter-spacing: 0.5px; - text-shadow: 0 2px 12px rgba(0,0,0,0.5); -} - -.scroll-indicator { - position: absolute; - bottom: 30px; - left: 50%; - transform: translateX(-50%); - z-index: 10; - text-align: center; - color: rgba(255, 255, 255, 0.7); - font-size: 0.75rem; - letter-spacing: 2px; - text-transform: uppercase; - opacity: calc(1 - var(--scroll) * 4); -} -.scroll-mouse { - width: 22px; - height: 36px; - border: 2px solid rgba(255, 255, 255, 0.6); - border-radius: 12px; - margin: 10px auto 0; - position: relative; -} -.scroll-mouse span { - display: block; - width: 4px; - height: 8px; - background: var(--gold); - border-radius: 2px; - position: absolute; - top: 6px; - left: 50%; - transform: translateX(-50%); - animation: scrollDown 1.8s ease-in-out infinite; -} -@keyframes scrollDown { - 0%, 20% { opacity: 0; transform: translate(-50%, 0); } - 50% { opacity: 1; transform: translate(-50%, 6px); } - 100% { opacity: 0; transform: translate(-50%, 14px); } +@keyframes float { + 0%, 100% { transform: translate(0, 0); opacity: 0.4; } + 25% { transform: translate(20px, -30px); opacity: 1; } + 50% { transform: translate(-15px, -50px); opacity: 0.6; } + 75% { transform: translate(-25px, -20px); opacity: 1; } } /* ────────────────────────────────────────────────────────────────────────── - SCÈNE 2 — DÉCOLLAGE + CARTE CENTRALE — CTA ────────────────────────────────────────────────────────────────────────── */ -.scene-takeoff { - background: linear-gradient(to bottom, - #2a2058 0%, - #5a3470 35%, - #b06850 70%, - #f0a060 100%); -} - -.scene-takeoff .sky-2 { - background: radial-gradient(ellipse at 50% 60%, rgba(240, 160, 100, 0.5), transparent 70%); -} - -.scene-takeoff .clouds-far, -.scene-takeoff .clouds-mid { - background-repeat: no-repeat; - background-size: cover; -} -.scene-takeoff .clouds-far { - background-image: url("data:image/svg+xml;utf8,"); - transform: translate(calc(var(--scroll) * -20vw), calc(var(--mx) * 5px)); -} -.scene-takeoff .clouds-mid { - background-image: url("data:image/svg+xml;utf8,"); - transform: translate(calc(var(--scroll) * -40vw + 100vw), calc(var(--mx) * 12px)); -} - -.scene-takeoff .mountains-2 { - bottom: 0; - height: 25%; - background-image: url("data:image/svg+xml;utf8,"); - background-size: cover; - background-position: bottom; - background-repeat: no-repeat; - transform: translate(calc(var(--mx) * -10px), calc(var(--scroll) * 15vh)); -} - -/* Avion scène 2 : monte en diagonale et grandit/avance */ -.plane-takeoff { - bottom: 30%; - left: 50%; - width: min(580px, 70vw); - z-index: 5; - /* progress in scene = (scroll - 0.33) / 0.34 */ - transform: translateX(calc(-50% + (var(--scroll) - 0.5) * 60vw)) - translateY(calc((var(--scroll) - 0.5) * -40vh)) - rotate(calc((var(--scroll) - 0.33) * -10deg)); -} - -.contrail { +.center-card { position: absolute; top: 50%; - right: 90%; - width: 200px; - height: 6px; - background: linear-gradient(to left, rgba(255,255,255,0.85), transparent); - border-radius: 3px; - filter: blur(2px); - transform: translateY(-3px); -} - -.scene-text--takeoff { - top: 18%; left: 50%; - transform: translate(-50%, calc(-20vh + var(--scroll) * 40vh)); - text-align: center; - max-width: 600px; - padding: 0 20px; -} - -.step-marker { - font-family: 'Poppins', sans-serif; - font-weight: 800; - font-size: 4.5rem; - background: linear-gradient(135deg, var(--gold), var(--gold-light)); - -webkit-background-clip: text; - background-clip: text; - -webkit-text-fill-color: transparent; - line-height: 1; - opacity: 0.85; -} - -.scene-text--takeoff h2 { - font-family: 'Poppins', sans-serif; - font-size: clamp(2rem, 5vw, 3.2rem); - font-weight: 700; - margin-top: 8px; - letter-spacing: -0.5px; - text-shadow: 0 4px 20px rgba(0,0,0,0.4); -} - -.scene-text--takeoff p { - margin-top: 14px; - font-size: 1.15rem; - color: rgba(255, 255, 255, 0.85); - font-weight: 300; -} - -/* ────────────────────────────────────────────────────────────────────────── - SCÈNE 3 — ARRIVÉE (nuit étoilée + Madagascar) - ────────────────────────────────────────────────────────────────────────── */ -.scene-arrival { - background: linear-gradient(to bottom, - #050518 0%, - #0d0d2a 40%, - #1a1a3e 80%, - #1f2050 100%); - height: 110vh; - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; -} - -.scene-arrival .night-sky { - background: radial-gradient(ellipse at 70% 30%, rgba(60, 60, 120, 0.3), transparent 70%); -} - -.scene-arrival .night-stars { - background-image: - radial-gradient(2px 2px at 20% 18%, #fff 50%, transparent 100%), - radial-gradient(1px 1px at 35% 42%, #fff 50%, transparent 100%), - radial-gradient(2px 2px at 60% 22%, #fff 50%, transparent 100%), - radial-gradient(1.5px 1.5px at 80% 35%, #fff 50%, transparent 100%), - radial-gradient(1px 1px at 50% 65%, #fff 50%, transparent 100%), - radial-gradient(1.5px 1.5px at 12% 70%, #fff 50%, transparent 100%), - radial-gradient(1px 1px at 90% 80%, #fff 50%, transparent 100%), - radial-gradient(2px 2px at 25% 85%, #c5a55a 50%, transparent 100%), - radial-gradient(1px 1px at 78% 12%, #fff 50%, transparent 100%); - animation: twinkle 4s ease-in-out infinite alternate; - transform: translate(calc(var(--mx) * -6px), calc(var(--my) * -4px)); -} -@keyframes twinkle { - 0% { opacity: 0.7; } - 100% { opacity: 1; } -} - -.scene-arrival .moon { - position: absolute; - top: 12%; - right: 12%; - width: 110px; - height: 110px; - background: radial-gradient(circle at 35% 35%, #fff 0%, #f4e4b4 40%, #c5a55a 100%); - border-radius: 50%; - box-shadow: 0 0 60px rgba(244, 228, 180, 0.6), 0 0 120px rgba(197, 165, 90, 0.3); - transform: translate(calc(var(--mx) * -10px), calc(var(--my) * -6px)); -} - -.scene-arrival .madagascar-silhouette { - bottom: 0; - left: 0; - height: 35%; - background-image: url("data:image/svg+xml;utf8,"); - background-size: cover; - background-position: bottom; - background-repeat: no-repeat; - transform: translateY(calc((1 - var(--scroll)) * 20vh)); -} - -/* Petit avion en approche */ -.plane-arrival { - position: absolute; - top: 22%; - left: 30%; - width: min(280px, 32vw); - z-index: 5; - transform: translate(calc((var(--scroll) - 0.66) * 100vw), calc((1 - var(--scroll)) * -10vh)) - rotate(8deg); - opacity: calc((var(--scroll) - 0.55) * 3); -} - -.plane-small { opacity: 0.95; } - -/* CTA bloc final */ -.parallax-cta-block { - position: relative; z-index: 10; text-align: center; - max-width: 720px; - padding: 0 30px; - opacity: calc((var(--scroll) - 0.7) * 4); - transform: translateY(calc((1 - var(--scroll)) * 50px)); - transition: opacity 0.5s, transform 0.5s; + width: min(560px, calc(100vw - 40px)); + padding: 50px 50px 44px; + background: rgba(13, 13, 36, 0.45); + border: 1px solid rgba(197, 165, 90, 0.25); + border-radius: 28px; + backdrop-filter: blur(24px) saturate(140%); + -webkit-backdrop-filter: blur(24px) saturate(140%); + box-shadow: + 0 30px 80px rgba(0, 0, 0, 0.55), + inset 0 1px 0 rgba(255, 255, 255, 0.08); + /* La carte bouge en sens INVERSE des autres couches (effet de tilt 3D) */ + transform: translate( + calc(-50% + var(--mx) * 12px), + calc(-50% + var(--my) * 12px) + ); + transition: transform 0.05s linear; } -.cta-pretitle { +/* Halo doré derrière la carte */ +.center-card::before { + content: ''; + position: absolute; + inset: -2px; + border-radius: 28px; + background: linear-gradient(135deg, rgba(197, 165, 90, 0.6), transparent 40%, transparent 60%, rgba(197, 165, 90, 0.4)); + z-index: -1; + opacity: 0.5; + filter: blur(8px); +} + +.card-pretitle { font-family: 'Poppins', sans-serif; font-weight: 500; letter-spacing: 8px; text-transform: uppercase; color: var(--gold); - font-size: 0.9rem; - margin-bottom: 16px; + font-size: 0.78rem; + margin-bottom: 14px; + opacity: 0.92; } -.cta-title { +.card-title { font-family: 'Poppins', sans-serif; - font-size: clamp(2.4rem, 6vw, 4rem); + font-size: clamp(2rem, 4.6vw, 3.4rem); font-weight: 800; letter-spacing: -1px; - background: linear-gradient(135deg, #fff 0%, #c5a55a 60%, #fff 100%); + line-height: 1; + background: linear-gradient(135deg, #fff 0%, #c5a55a 55%, #fff 100%); -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; - line-height: 1.1; + color: transparent; + text-shadow: 0 8px 30px rgba(0, 0, 0, 0.5); } -.cta-subtitle { - margin-top: 18px; - font-size: 1.1rem; - color: rgba(255, 255, 255, 0.85); +.card-line { + width: 64px; + height: 2px; + background: var(--gold); + margin: 22px auto 18px; + border-radius: 1px; + position: relative; +} +.card-line::after { + content: ''; + position: absolute; + inset: 0; + background: var(--gold); + filter: blur(4px); + opacity: 0.6; +} + +.card-subtitle { + font-size: clamp(0.95rem, 1.5vw, 1.1rem); font-weight: 300; - line-height: 1.6; + color: rgba(255, 255, 255, 0.8); + line-height: 1.55; + letter-spacing: 0.3px; + max-width: 420px; + margin: 0 auto 36px; } -.parallax-cta-btn { +/* ── BOUTON CTA ─────────────────────────────────────────────────────────── */ +.cta-btn { + position: relative; display: inline-flex; align-items: center; gap: 14px; - margin-top: 36px; - padding: 18px 42px; - background: linear-gradient(135deg, var(--gold), var(--gold-light)); + padding: 18px 44px; + background: linear-gradient(135deg, var(--gold) 0%, var(--gold-light) 50%, var(--gold) 100%); color: var(--navy); text-decoration: none; border-radius: 50px; font-family: 'Poppins', sans-serif; font-weight: 700; - font-size: 1.05rem; + font-size: 1.02rem; letter-spacing: 0.5px; - box-shadow: 0 12px 35px rgba(197, 165, 90, 0.45), - 0 0 0 0 rgba(197, 165, 90, 0.5); - transition: all 0.3s ease; - position: relative; overflow: hidden; + box-shadow: + 0 14px 40px rgba(197, 165, 90, 0.5), + 0 0 0 0 rgba(197, 165, 90, 0.4), + inset 0 1px 0 rgba(255, 255, 255, 0.4); + transition: all 0.32s cubic-bezier(0.2, 0.8, 0.2, 1); + z-index: 1; } -.parallax-cta-btn::before { +.cta-btn-shine { + position: absolute; + top: 0; left: -120%; + width: 50%; height: 100%; + background: linear-gradient(90deg, transparent, rgba(255,255,255,0.6), transparent); + transform: skewX(-20deg); + transition: left 0.7s ease; +} +.cta-btn:hover { + transform: translateY(-4px) scale(1.02); + box-shadow: + 0 22px 55px rgba(197, 165, 90, 0.65), + 0 0 0 10px rgba(197, 165, 90, 0.12), + inset 0 1px 0 rgba(255, 255, 255, 0.5); +} +.cta-btn:hover .cta-btn-shine { left: 130%; } +.cta-btn i { + font-size: 0.95rem; + transition: transform 0.32s ease; +} +.cta-btn:hover i { transform: translateX(6px); } + +/* Pulse autour du bouton (continu) */ +.cta-btn::after { content: ''; position: absolute; - top: 0; left: -100%; - width: 100%; height: 100%; - background: linear-gradient(90deg, transparent, rgba(255,255,255,0.4), transparent); - transition: left 0.6s; + inset: -3px; + border-radius: 50px; + border: 2px solid rgba(197, 165, 90, 0.5); + animation: ctaPulse 2.5s ease-out infinite; + pointer-events: none; } -.parallax-cta-btn:hover { - transform: translateY(-4px); - box-shadow: 0 18px 45px rgba(197, 165, 90, 0.6), - 0 0 0 8px rgba(197, 165, 90, 0.15); +@keyframes ctaPulse { + 0% { transform: scale(1); opacity: 0.6; } + 100% { transform: scale(1.18); opacity: 0; } } -.parallax-cta-btn:hover::before { left: 100%; } -.parallax-cta-btn i { - transition: transform 0.3s; - font-size: 0.95rem; -} -.parallax-cta-btn:hover i { transform: translateX(6px); } -.cta-meta { +/* ── META INFOS SOUS LE BOUTON ──────────────────────────────────────────── */ +.card-meta { + margin-top: 32px; display: flex; justify-content: center; - gap: 32px; - margin-top: 36px; + gap: 14px; flex-wrap: wrap; - color: rgba(255, 255, 255, 0.65); - font-size: 0.85rem; -} -.cta-meta span { - display: inline-flex; - align-items: center; - gap: 8px; -} -.cta-meta i { - color: var(--gold); + color: rgba(255, 255, 255, 0.6); + font-size: 0.82rem; } +.card-meta span { display: inline-flex; align-items: center; gap: 8px; } +.card-meta i { color: var(--gold); font-size: 0.85rem; } +.meta-sep { color: rgba(197, 165, 90, 0.4); padding: 0 4px; } /* ── RESPONSIVE ─────────────────────────────────────────────────────────── */ @media (max-width: 768px) { .parallax-header { padding: 14px 18px; } .parallax-logo span { display: none; } - .parallax-logo img { height: 38px; } - .parallax-skip { padding: 7px 14px; font-size: 0.78rem; } - .lang-switcher button { padding: 4px 8px; font-size: 0.72rem; } - .parallax-header-right { gap: 10px; } + .parallax-logo img { height: 40px; } + .lang-switcher button { padding: 5px 10px; font-size: 0.74rem; } - .plane-loading, - .plane-takeoff { width: 100vw; } + .center-card { + width: calc(100vw - 28px); + padding: 36px 28px 32px; + border-radius: 22px; + } + .card-pretitle { letter-spacing: 5px; font-size: 0.72rem; } + .card-subtitle { font-size: 0.92rem; margin-bottom: 28px; } + .cta-btn { padding: 14px 30px; font-size: 0.95rem; } - .ramp, - .box, - .ground-boxes { display: none; } - - .scroll-indicator span { font-size: 0.7rem; } - .cta-meta { gap: 18px; font-size: 0.78rem; } - .parallax-cta-btn { padding: 14px 28px; font-size: 0.95rem; } + .card-meta { gap: 10px; font-size: 0.76rem; } + .meta-sep { display: none; } } @media (prefers-reduced-motion: reduce) { - .box, - .scroll-mouse span, - .night-stars { animation: none; } - html { scroll-behavior: auto; } + .particle, .cta-btn::after { animation: none; } + .layer-earth, .layer-clouds, .layer-particles, .center-card { transition: none; } } diff --git a/index.html b/index.html index 4b384ef..c3ade6c 100644 --- a/index.html +++ b/index.html @@ -14,203 +14,83 @@ - +
-
- -
- -
-
-
- -
- -
- -
+ +
- -
- + +
- -
+ +
- -
📦
-
📦
-
📦
+ +
- -
-
-
-
-
+ +
+ + +
+ + + + + + + + + + + +
- -
-
Bienvenue chez
-

MVA Global Fret

-
-

Le pont aérien entre Paris et Madagascar

-
+ +
+
Bienvenue chez
+

MVA Global Fret

+
+

Le pont aérien entre Paris et Madagascar

- -
- Faites défiler pour le voyage -
-
-
- - -
-
-
-
-
- - -
- - -
-
- - -
-
02
-

Décollage

-

Cap sur l'océan Indien, direction Madagascar

-
-
- - -
-
-
-
-
- - -
- -
- - -
-
Antananarivo
-

Bienvenue à bord

-
-

Découvrez nos services, nos tarifs et inscrivez-vous en quelques clics.

- + + Accéder au site -
+ +
2 envois / semaine + · 2 semaines depuis Paris + · 70 000 Ar / kg
-
+ +