site-mva-global-fret/css/parallax.css
MVA Global Fret 5756669c67 Replace Earth intro with Antananarivo parachute-drop video
Swap the rotating Earth backdrop for an AI-generated golden-hour shot
of Antananarivo's skyline with navy cardboard boxes parachuting in
from across the frame. The hero box at center gets the MVA Global Fret
shield overlaid for the last second of the loop, so each cycle ends
on a brand reveal.

Pipeline: source video cropped (bottom 150px) to remove the HeyGen
watermark, audio stripped, MVA logo composited on the foreground box
from t=4 to t=5 with a 0.3s alpha fade-in, re-encoded to H.264 at CRF
22 (1.1 MB total).

Tint overlay softened — the original navy gradient was tuned for the
dark space backdrop and was crushing the golden hour light.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-05-05 00:46:18 +02:00

211 lines
5.7 KiB
CSS

/* =========================================================================
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%);
}
/* ── 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;
display: inline-flex;
align-items: center;
gap: 16px;
padding: 22px 56px;
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.1rem;
letter-spacing: 0.6px;
overflow: hidden;
white-space: nowrap;
box-shadow:
0 20px 60px rgba(197, 165, 90, 0.55),
0 0 0 0 rgba(197, 165, 90, 0.4),
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);
}
.cta-btn:hover {
transform: translate(
calc(-50% + var(--mx) * 8px),
calc(-50% + var(--my) * 8px)
) scale(1.04);
box-shadow:
0 28px 75px rgba(197, 165, 90, 0.7),
0 0 0 12px rgba(197, 165, 90, 0.12),
inset 0 1px 0 rgba(255, 255, 255, 0.55);
}
.cta-btn-shine {
position: absolute;
top: 0; left: -120%;
width: 60%; height: 100%;
background: linear-gradient(90deg, transparent, rgba(255,255,255,0.65), transparent);
transform: skewX(-22deg);
transition: left 0.7s ease;
pointer-events: none;
}
.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(8px); }
.cta-btn::after {
content: '';
position: absolute;
inset: -3px;
border-radius: 50px;
border: 2px solid rgba(197, 165, 90, 0.55);
animation: ctaPulse 2.8s ease-out infinite;
pointer-events: none;
}
@keyframes ctaPulse {
0% { transform: scale(1); opacity: 0.7; }
100% { transform: scale(1.18); opacity: 0; }
}
/* ── 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-btn {
padding: 16px 36px;
font-size: 0.98rem;
}
}
@media (prefers-reduced-motion: reduce) {
.cta-btn::after { animation: none; }
}