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 @@
-
+