site-mva-global-fret/css/parallax.css
MVA Global Fret 1ddd7b12d8 Add cinematic parallax intro page as new landing
The new index.html is a 3-act scroll-driven storytelling intro:

  Act 1 (Tarmac at sunset)
    Sunset gradient sky, mountain silhouettes, hangar, runway with
    centerline lights. Inline SVG cargo plane (MVA-branded gold tail)
    sits on the ground while box emojis cycle up a loading ramp.

  Act 2 (Take-off at dusk)
    Dusk sky, two parallax cloud layers and distant mountains. The
    plane translates diagonally up-and-right with a slight tilt and
    a glowing contrail, sized down progressively.

  Act 3 (Arrival at night)
    Deep navy night sky with twinkling stars, a glowing moon, and
    the Madagascar coastline silhouette. A small plane fades in
    descending toward the island, then a centered CTA block reveals:
    "Bienvenue à bord" with the gold "Accéder au site" button that
    routes to accueil.html (the real homepage).

Implementation:
- Pure CSS layered scenes; no library
- Scroll progress driven by a single CSS custom property --scroll
  (0→1) updated via rAF, layers transform off it
- Mouse-move parallax on layers via --mx/--my (skipped on touch)
- Inline SVG plane reused across the 3 scenes
- All text is i18n-driven with a new `intro` section in FR/EN/MG

Architecture changes:
- index.html  → new parallax intro
- accueil.html → former index.html content (full homepage)
- All nav/logo/footer links updated index.html → accueil.html across
  the 8 existing pages
- Mobile-nav on accueil.html now also includes Service Commande

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

707 lines
21 KiB
CSS

/* =========================================================================
PARALLAX INTRO PAGE — MVA Global Fret
Scroll-driven storytelling: tarmac → décollage → arrivée à Madagascar
========================================================================= */
:root {
--navy: #1a1a3e;
--navy-deep: #0d0d24;
--navy-light: #2a2a5e;
--gold: #c5a55a;
--gold-light: #e0c98a;
--white: #ffffff;
--scroll: 0;
--mx: 0;
--my: 0;
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html, body {
scroll-behavior: smooth;
overflow-x: hidden;
}
.parallax-body {
font-family: 'Inter', sans-serif;
color: var(--white);
background: var(--navy-deep);
}
/* ── HEADER MINIMAL ─────────────────────────────────────────────────────── */
.parallax-header {
position: fixed;
top: 0; left: 0; right: 0;
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);
}
.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;
}
.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;
}
.lang-switcher {
display: inline-flex;
background: rgba(255,255,255,0.08);
border: 1px solid rgba(255,255,255,0.15);
border-radius: 50px;
padding: 4px;
backdrop-filter: blur(8px);
}
.lang-switcher button {
background: transparent;
border: none;
color: rgba(255,255,255,0.6);
padding: 5px 12px;
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); }
.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 {
position: relative;
width: 100%;
height: 100vh;
overflow: hidden;
}
.layer {
position: absolute;
inset: 0;
pointer-events: none;
will-change: transform;
}
/* ──────────────────────────────────────────────────────────────────────────
SCÈNE 1 — TARMAC (avion qui se charge au coucher de soleil)
────────────────────────────────────────────────────────────────────────── */
.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,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 200' preserveAspectRatio='none'><path d='M0,200 L0,140 L80,80 L150,120 L220,60 L300,110 L380,70 L470,130 L550,90 L640,40 L730,100 L820,70 L900,130 L990,80 L1080,110 L1200,60 L1200,200 Z' fill='%231a1230' opacity='0.85'/></svg>");
background-size: cover;
background-repeat: no-repeat;
background-position: bottom;
transform: translate(calc(var(--mx) * -8px), calc(var(--scroll) * -25vh));
}
.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,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 100' preserveAspectRatio='none'><path d='M0,100 L0,30 Q0,15 15,15 L80,15 L100,5 L120,15 L185,15 Q200,15 200,30 L200,100 Z' fill='black'/></svg>") no-repeat;
-webkit-mask-size: 100% 100%;
mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 100' preserveAspectRatio='none'><path d='M0,100 L0,30 Q0,15 15,15 L80,15 L100,5 L120,15 L185,15 Q200,15 200,30 L200,100 Z' fill='black'/></svg>") no-repeat;
mask-size: 100% 100%;
transform: translate(calc(var(--mx) * -15px), calc(var(--scroll) * -40vh));
}
.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));
}
.scene-tarmac .tarmac::before {
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);
}
/* ── 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); }
}
/* ──────────────────────────────────────────────────────────────────────────
SCÈNE 2 — DÉCOLLAGE
────────────────────────────────────────────────────────────────────────── */
.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,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 400' preserveAspectRatio='none'><g fill='%23fff' opacity='0.18'><ellipse cx='150' cy='90' rx='90' ry='28'/><ellipse cx='400' cy='160' rx='110' ry='32'/><ellipse cx='700' cy='100' rx='80' ry='26'/><ellipse cx='950' cy='200' rx='130' ry='34'/><ellipse cx='1100' cy='90' rx='80' ry='24'/></g></svg>");
transform: translate(calc(var(--scroll) * -20vw), calc(var(--mx) * 5px));
}
.scene-takeoff .clouds-mid {
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 400' preserveAspectRatio='none'><g fill='%23fff' opacity='0.4'><ellipse cx='100' cy='220' rx='130' ry='40'/><ellipse cx='550' cy='280' rx='160' ry='48'/><ellipse cx='950' cy='250' rx='140' ry='42'/></g></svg>");
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,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 200' preserveAspectRatio='none'><path d='M0,200 L0,160 L100,100 L200,140 L320,80 L450,140 L580,90 L720,150 L850,100 L980,150 L1100,80 L1200,130 L1200,200 Z' fill='%231a1230' opacity='0.9'/></svg>");
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 {
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,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1200 250' preserveAspectRatio='none'><path d='M0,250 L0,180 Q40,160 80,165 Q140,170 200,150 Q260,130 320,140 Q380,150 440,125 Q500,100 580,115 Q640,130 700,110 Q780,90 860,120 Q940,150 1020,135 Q1100,120 1200,150 L1200,250 Z' fill='%230a0820'/></svg>");
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;
}
.cta-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;
}
.cta-title {
font-family: 'Poppins', sans-serif;
font-size: clamp(2.4rem, 6vw, 4rem);
font-weight: 800;
letter-spacing: -1px;
background: linear-gradient(135deg, #fff 0%, #c5a55a 60%, #fff 100%);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
line-height: 1.1;
}
.cta-subtitle {
margin-top: 18px;
font-size: 1.1rem;
color: rgba(255, 255, 255, 0.85);
font-weight: 300;
line-height: 1.6;
}
.parallax-cta-btn {
display: inline-flex;
align-items: center;
gap: 14px;
margin-top: 36px;
padding: 18px 42px;
background: linear-gradient(135deg, var(--gold), var(--gold-light));
color: var(--navy);
text-decoration: none;
border-radius: 50px;
font-family: 'Poppins', sans-serif;
font-weight: 700;
font-size: 1.05rem;
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;
}
.parallax-cta-btn::before {
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;
}
.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);
}
.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 {
display: flex;
justify-content: center;
gap: 32px;
margin-top: 36px;
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);
}
/* ── 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; }
.plane-loading,
.plane-takeoff { width: 100vw; }
.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; }
}
@media (prefers-reduced-motion: reduce) {
.box,
.scroll-mouse span,
.night-stars { animation: none; }
html { scroll-behavior: auto; }
}