site-mva-global-fret/css/parallax.css
MVA Global Fret 90e5ff7116 Drop the parachute, scale cloud up to 520x360, fit text inside
The Lottie parachute was floating above the cloud as an extra layer,
which felt busy. Strip it out — the dotlottie player script tag, the
.cta-stack wrapper, the .cta-parachute rule, and assets/parachute.json
all go.

The cloud is now the only landing element. Bumped width 360→520 and
height 200→360 so the Fluent cloud renders much larger; bumped font
size 1.15→1.4rem; added a small negative margin-top to seat the text
on the cloud's "body" (Fluent's base is heavy, the body sits a bit
above the geometric center).

Drop animation moved off the wrapper onto the button itself, with the
:hover rule overriding animation:none + applying the centered scale
transform so hover doesn't fight the keyframe.

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

199 lines
5.4 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-NUAGE ────────────────────────────────────────────────────────
Le nuage tombe du haut jusqu'au centre via animation, ~3.4s avec léger
overshoot. Une fois posé, hover scale léger. */
.cloud-btn {
position: absolute;
top: 50%;
left: 50%;
z-index: 10;
display: inline-flex;
align-items: center;
justify-content: center;
text-decoration: none;
width: 520px;
height: 360px;
color: var(--navy);
font-family: 'Poppins', sans-serif;
font-weight: 700;
font-size: 1.4rem;
letter-spacing: 0.4px;
white-space: nowrap;
filter: drop-shadow(0 28px 38px rgba(20, 20, 50, 0.45));
animation: cloud-drop 3.4s cubic-bezier(0.34, 0.4, 0.5, 1) 0.3s both;
}
@keyframes cloud-drop {
0% { transform: translate(-50%, -130vh); opacity: 0; }
10% { opacity: 1; }
85% { transform: translate(-50%, -42%); opacity: 1; }
100% { transform: translate(-50%, -50%); }
}
.cloud-btn:hover {
transform: translate(-50%, -50%) scale(1.05);
/* hover désactive l'animation de chute pour que scale ne saute pas */
animation: none;
}
.cloud-bg {
position: absolute;
inset: 0;
width: 100%;
height: 100%;
object-fit: contain;
pointer-events: none;
z-index: 0;
user-select: none;
}
/* Texte centré sur le « cœur » du nuage (légèrement plus haut que le centre
géométrique de l'image, parce que le nuage Fluent a une grosse base et un
sommet bombé). */
.cloud-content {
position: relative;
z-index: 1;
display: inline-flex;
align-items: center;
gap: 14px;
margin-top: -10px;
text-shadow: 0 1px 2px rgba(255, 255, 255, 0.6);
}
.cloud-content i {
font-size: 1.05rem;
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; }
.cloud-btn { width: 360px; height: 250px; font-size: 1.05rem; }
}
@media (prefers-reduced-motion: reduce) {
.cloud-btn { animation: none; }
}