diff --git a/css/parallax.css b/css/parallax.css index 6dc8109..20970b1 100644 --- a/css/parallax.css +++ b/css/parallax.css @@ -1,7 +1,7 @@ /* ========================================================================= 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é. + Page scrollable (4 viewports) avec scène Three.js fixée. La timeline + pilote la caméra et l'avion 3D. À 100% du scroll, le bouton CTA apparaît. ========================================================================= */ :root { @@ -19,13 +19,15 @@ html, body { height: 100%; - overflow: hidden; + background: var(--navy-deep); } -.parallax-body { +html { scroll-behavior: smooth; } + +body.parallax-body { font-family: 'Inter', sans-serif; color: var(--white); - background: var(--navy-deep); + overflow-x: hidden; } /* ── HEADER ─────────────────────────────────────────────────────────────── */ @@ -36,7 +38,7 @@ html, body { align-items: center; justify-content: space-between; padding: 22px 36px; - z-index: 50; + z-index: 100; } .parallax-logo { @@ -54,13 +56,13 @@ html, body { .parallax-logo img { height: 44px; width: auto; - filter: drop-shadow(0 4px 14px rgba(0,0,0,0.65)); + 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); + 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); @@ -69,7 +71,7 @@ html, body { .lang-switcher button { background: transparent; border: none; - color: rgba(255,255,255,0.7); + color: rgba(255, 255, 255, 0.7); padding: 6px 14px; cursor: pointer; border-radius: 50px; @@ -84,12 +86,16 @@ html, body { } .lang-switcher button:hover:not(.active) { color: var(--white); } -/* ── STAGE ──────────────────────────────────────────────────────────────── */ -.stage { - position: relative; +/* ── SCÈNE FIXE (vidéo + voile + canvas Three.js) ──────────────────────── + .stage-fixed reste plein-écran pendant que la page se déroule derrière. +*/ +.stage-fixed { + position: fixed; + inset: 0; width: 100vw; height: 100vh; overflow: hidden; + z-index: 1; } .layer { @@ -101,8 +107,6 @@ html, body { 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; @@ -115,17 +119,86 @@ html, body { linear-gradient(180deg, rgba(5, 5, 24, 0.25) 0%, rgba(5, 5, 24, 0.5) 100%); } +.layer-three { + display: block; + z-index: 2; +} + +/* ── SCROLL STAGE — sentinelles invisibles qui donnent la hauteur ──────── */ +.scroll-stage { + position: relative; + z-index: 5; + pointer-events: none; +} +.scroll-stage .act { + height: 100vh; +} + +/* ── ÉTIQUETTES D'ACTE ──────────────────────────────────────────────────── */ +.act-label { + position: absolute; + left: 50%; + bottom: 18%; + transform: translateX(-50%); + z-index: 30; + pointer-events: none; + text-align: center; + font-family: 'Poppins', sans-serif; + font-weight: 700; + letter-spacing: 4px; + text-transform: uppercase; + font-size: 1.05rem; + color: var(--white); + text-shadow: 0 4px 18px rgba(0, 0, 0, 0.7); + opacity: 0; +} +.act-label span { + display: inline-block; + padding: 14px 28px; + background: rgba(5, 5, 24, 0.45); + backdrop-filter: blur(12px); + -webkit-backdrop-filter: blur(12px); + border: 1px solid rgba(255, 255, 255, 0.18); + border-radius: 8px; + line-height: 1.35; +} + +/* ── INDICATEUR SCROLL ─────────────────────────────────────────────────── */ +.scroll-hint { + position: absolute; + left: 50%; + bottom: 36px; + transform: translateX(-50%); + z-index: 40; + display: inline-flex; + flex-direction: column; + align-items: center; + gap: 8px; + font-family: 'Poppins', sans-serif; + font-weight: 600; + font-size: 0.78rem; + letter-spacing: 2px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.85); + text-shadow: 0 2px 8px rgba(0, 0, 0, 0.6); + animation: scrollBob 1.8s ease-in-out infinite; + transition: opacity 0.5s ease; +} +.scroll-hint.hidden { opacity: 0; pointer-events: none; } +.scroll-hint i { font-size: 1rem; } + +@keyframes scrollBob { + 0%, 100% { transform: translate(-50%, 0); } + 50% { transform: translate(-50%, 8px); } +} + /* ── BOUTON CTA centré ──────────────────────────────────────────────────── */ .cta-btn { position: absolute; top: 50%; left: 50%; - /* Bouge légèrement en sens INVERSE des couches → effet de tilt 3D */ - transform: translate( - calc(-50% + var(--mx) * 8px), - calc(-50% + var(--my) * 8px) - ); - z-index: 10; + transform: translate(-50%, -50%); + z-index: 50; display: inline-flex; align-items: center; gap: 16px; @@ -146,13 +219,14 @@ html, body { inset 0 1px 0 rgba(255, 255, 255, 0.45); transition: box-shadow 0.32s cubic-bezier(0.2, 0.8, 0.2, 1), transform 0.32s cubic-bezier(0.2, 0.8, 0.2, 1); + /* Caché au départ ; révélé via GSAP en fin de scroll */ + opacity: 0; + pointer-events: none; } +.cta-btn.revealed { pointer-events: auto; } .cta-btn:hover { - transform: translate( - calc(-50% + var(--mx) * 8px), - calc(-50% + var(--my) * 8px) - ) scale(1.04); + transform: translate(-50%, -50%) scale(1.04); box-shadow: 0 28px 75px rgba(197, 165, 90, 0.7), 0 0 0 12px rgba(197, 165, 90, 0.12), @@ -163,7 +237,7 @@ html, body { position: absolute; top: 0; left: -120%; width: 60%; height: 100%; - background: linear-gradient(90deg, transparent, rgba(255,255,255,0.65), transparent); + background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.65), transparent); transform: skewX(-22deg); transition: left 0.7s ease; pointer-events: none; @@ -201,8 +275,13 @@ html, body { padding: 16px 36px; font-size: 0.98rem; } + .act-label { font-size: 0.85rem; bottom: 22%; } } @media (prefers-reduced-motion: reduce) { - .cta-btn::after { animation: none; } + .cta-btn::after { animation: none; } + .scroll-hint { animation: none; display: none; } + .scroll-stage { display: none; } + .cta-btn { opacity: 1; pointer-events: auto; } + html { scroll-behavior: auto; } } diff --git a/index.html b/index.html index 3e14ffd..b23bd93 100644 --- a/index.html +++ b/index.html @@ -11,6 +11,18 @@ + + + + + +
@@ -26,8 +38,8 @@ -