site-mva-global-fret/index.html
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

267 lines
13 KiB
HTML

<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>MVA Global Fret — Bienvenue</title>
<meta name="description" content="MVA Global Fret — Le pont aérien entre Paris et Antananarivo. Bienvenue à bord.">
<link rel="icon" type="image/png" href="PNG MVA GLOBAL FRET.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600&family=Poppins:wght@600;700;800&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css">
<link rel="stylesheet" href="css/parallax.css">
</head>
<body class="parallax-body">
<!-- Header minimal : logo + skip + lang -->
<header class="parallax-header">
<a href="accueil.html" class="parallax-logo" aria-label="MVA Global Fret">
<img src="PNG MVA GLOBAL FRET.png" alt="MVA Global Fret">
<span>MVA Global Fret</span>
</a>
<div class="parallax-header-right">
<div class="lang-switcher" role="group" aria-label="Choisir la langue">
<button data-lang="fr" class="active">FR</button>
<button data-lang="en">EN</button>
<button data-lang="mg">MG</button>
</div>
<a href="accueil.html" class="parallax-skip" data-i18n="intro.skip">Passer <i class="fa-solid fa-arrow-right"></i></a>
</div>
</header>
<!-- ÉTAGE 1 — Tarmac : avion qui se charge -->
<section class="parallax-scene scene-tarmac" data-scene="1">
<!-- Ciel coucher de soleil -->
<div class="layer sky"></div>
<div class="layer sun"></div>
<div class="layer stars"></div>
<!-- Montagnes lointaines -->
<div class="layer mountains"></div>
<!-- Hangar arrière-plan -->
<div class="layer hangar"></div>
<!-- Tarmac -->
<div class="layer tarmac"></div>
<!-- Avion immobile au sol -->
<div class="plane-stage plane-loading">
<svg class="plane" viewBox="0 0 600 180" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<!-- Aile arrière -->
<path d="M 220 100 L 320 110 L 360 130 L 240 130 Z" fill="#d8d8e3" stroke="#1a1a3e" stroke-width="1.5"/>
<!-- Fuselage -->
<path d="M 60 100 Q 60 70 110 65 L 480 65 Q 540 65 555 85 Q 555 105 530 110 L 110 110 Q 60 110 60 100 Z" fill="#fafafa" stroke="#1a1a3e" stroke-width="1.5"/>
<!-- Bande dorée -->
<rect x="110" y="76" width="380" height="3" fill="#c5a55a"/>
<!-- Cockpit -->
<path d="M 75 88 Q 80 76 95 74 L 105 74 L 105 92 L 80 92 Z" fill="#1a1a3e"/>
<!-- Hublots -->
<g fill="#1a1a3e">
<circle cx="135" cy="88" r="3"/>
<circle cx="160" cy="88" r="3"/>
<circle cx="185" cy="88" r="3"/>
<circle cx="210" cy="88" r="3"/>
<circle cx="235" cy="88" r="3"/>
<circle cx="260" cy="88" r="3"/>
<circle cx="285" cy="88" r="3"/>
<circle cx="310" cy="88" r="3"/>
<circle cx="335" cy="88" r="3"/>
<circle cx="360" cy="88" r="3"/>
<circle cx="385" cy="88" r="3"/>
<circle cx="410" cy="88" r="3"/>
<circle cx="435" cy="88" r="3"/>
<circle cx="460" cy="88" r="3"/>
</g>
<!-- Porte cargo -->
<rect x="120" y="78" width="22" height="22" fill="none" stroke="#1a1a3e" stroke-width="1"/>
<!-- Aile principale + moteur -->
<path d="M 180 100 L 380 145 L 430 145 L 280 100 Z" fill="#e8e8ef" stroke="#1a1a3e" stroke-width="1.5"/>
<ellipse cx="320" cy="145" rx="22" ry="9" fill="#1a1a3e"/>
<ellipse cx="320" cy="145" rx="14" ry="5" fill="#3a3a5e"/>
<!-- Empennage vertical -->
<path d="M 480 65 L 510 25 L 540 25 L 555 65 Z" fill="#c5a55a" stroke="#1a1a3e" stroke-width="1.5"/>
<text x="510" y="50" font-family="Poppins, sans-serif" font-size="10" font-weight="700" fill="#1a1a3e">MVA</text>
<!-- Stabilisateur horizontal -->
<path d="M 510 70 L 580 50 L 580 65 L 530 80 Z" fill="#fafafa" stroke="#1a1a3e" stroke-width="1.5"/>
<!-- Train d'atterrissage -->
<line x1="220" y1="110" x2="220" y2="135" stroke="#1a1a3e" stroke-width="2"/>
<circle cx="220" cy="140" r="6" fill="#1a1a3e"/>
<line x1="450" y1="110" x2="450" y2="135" stroke="#1a1a3e" stroke-width="2"/>
<circle cx="450" cy="140" r="6" fill="#1a1a3e"/>
</svg>
<!-- Rampe de chargement -->
<div class="ramp"></div>
<!-- Boîtes qui se chargent -->
<div class="box box-1">📦</div>
<div class="box box-2">📦</div>
<div class="box box-3">📦</div>
<!-- Pile de boîtes au sol -->
<div class="ground-boxes">
<div class="ground-box gb-1"></div>
<div class="ground-box gb-2"></div>
<div class="ground-box gb-3"></div>
</div>
</div>
<!-- Texte hero -->
<div class="scene-text scene-text--hero">
<div class="hero-pretitle" data-i18n="intro.pretitle">Bienvenue chez</div>
<h1 class="hero-title">MVA Global Fret</h1>
<div class="hero-line"></div>
<p class="hero-subtitle" data-i18n="intro.subtitle">Le pont aérien entre Paris et Madagascar</p>
</div>
<!-- Indicateur de scroll -->
<div class="scroll-indicator">
<span data-i18n="intro.scrollHint">Faites défiler pour le voyage</span>
<div class="scroll-mouse"><span></span></div>
</div>
</section>
<!-- ÉTAGE 2 — Décollage -->
<section class="parallax-scene scene-takeoff" data-scene="2">
<div class="layer sky-2"></div>
<div class="layer clouds-far"></div>
<div class="layer clouds-mid"></div>
<div class="layer mountains-2"></div>
<!-- Avion qui décolle -->
<div class="plane-stage plane-takeoff">
<svg class="plane" viewBox="0 0 600 180" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<path d="M 220 100 L 320 110 L 360 130 L 240 130 Z" fill="#d8d8e3" stroke="#1a1a3e" stroke-width="1.5"/>
<path d="M 60 100 Q 60 70 110 65 L 480 65 Q 540 65 555 85 Q 555 105 530 110 L 110 110 Q 60 110 60 100 Z" fill="#fafafa" stroke="#1a1a3e" stroke-width="1.5"/>
<rect x="110" y="76" width="380" height="3" fill="#c5a55a"/>
<path d="M 75 88 Q 80 76 95 74 L 105 74 L 105 92 L 80 92 Z" fill="#1a1a3e"/>
<g fill="#1a1a3e">
<circle cx="135" cy="88" r="3"/><circle cx="160" cy="88" r="3"/><circle cx="185" cy="88" r="3"/>
<circle cx="210" cy="88" r="3"/><circle cx="235" cy="88" r="3"/><circle cx="260" cy="88" r="3"/>
<circle cx="285" cy="88" r="3"/><circle cx="310" cy="88" r="3"/><circle cx="335" cy="88" r="3"/>
<circle cx="360" cy="88" r="3"/><circle cx="385" cy="88" r="3"/><circle cx="410" cy="88" r="3"/>
<circle cx="435" cy="88" r="3"/><circle cx="460" cy="88" r="3"/>
</g>
<path d="M 180 100 L 380 145 L 430 145 L 280 100 Z" fill="#e8e8ef" stroke="#1a1a3e" stroke-width="1.5"/>
<ellipse cx="320" cy="145" rx="22" ry="9" fill="#1a1a3e"/>
<ellipse cx="320" cy="145" rx="14" ry="5" fill="#3a3a5e"/>
<path d="M 480 65 L 510 25 L 540 25 L 555 65 Z" fill="#c5a55a" stroke="#1a1a3e" stroke-width="1.5"/>
<text x="510" y="50" font-family="Poppins, sans-serif" font-size="10" font-weight="700" fill="#1a1a3e">MVA</text>
<path d="M 510 70 L 580 50 L 580 65 L 530 80 Z" fill="#fafafa" stroke="#1a1a3e" stroke-width="1.5"/>
</svg>
<!-- Traînée de condensation -->
<div class="contrail"></div>
</div>
<!-- Texte étape 2 -->
<div class="scene-text scene-text--takeoff">
<div class="step-marker">02</div>
<h2 data-i18n="intro.step2Title">Décollage</h2>
<p data-i18n="intro.step2Desc">Cap sur l'océan Indien, direction Madagascar</p>
</div>
</section>
<!-- ÉTAGE 3 — Arrivée -->
<section class="parallax-scene scene-arrival" data-scene="3">
<div class="layer night-sky"></div>
<div class="layer night-stars"></div>
<div class="layer moon"></div>
<div class="layer madagascar-silhouette"></div>
<!-- Petit avion en approche -->
<div class="plane-stage plane-arrival">
<svg class="plane plane-small" viewBox="0 0 600 180" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<path d="M 220 100 L 320 110 L 360 130 L 240 130 Z" fill="#d8d8e3" stroke="#1a1a3e" stroke-width="1.5"/>
<path d="M 60 100 Q 60 70 110 65 L 480 65 Q 540 65 555 85 Q 555 105 530 110 L 110 110 Q 60 110 60 100 Z" fill="#fafafa" stroke="#1a1a3e" stroke-width="1.5"/>
<rect x="110" y="76" width="380" height="3" fill="#c5a55a"/>
<path d="M 75 88 Q 80 76 95 74 L 105 74 L 105 92 L 80 92 Z" fill="#1a1a3e"/>
<path d="M 180 100 L 380 145 L 430 145 L 280 100 Z" fill="#e8e8ef" stroke="#1a1a3e" stroke-width="1.5"/>
<ellipse cx="320" cy="145" rx="22" ry="9" fill="#1a1a3e"/>
<path d="M 480 65 L 510 25 L 540 25 L 555 65 Z" fill="#c5a55a" stroke="#1a1a3e" stroke-width="1.5"/>
<text x="510" y="50" font-family="Poppins, sans-serif" font-size="10" font-weight="700" fill="#1a1a3e">MVA</text>
<path d="M 510 70 L 580 50 L 580 65 L 530 80 Z" fill="#fafafa" stroke="#1a1a3e" stroke-width="1.5"/>
</svg>
</div>
<!-- Bloc CTA final -->
<div class="parallax-cta-block">
<div class="cta-pretitle" data-i18n="intro.ctaPretitle">Antananarivo</div>
<h2 class="cta-title" data-i18n="intro.ctaTitle">Bienvenue à bord</h2>
<div class="hero-line"></div>
<p class="cta-subtitle" data-i18n="intro.ctaSubtitle">Découvrez nos services, nos tarifs et inscrivez-vous en quelques clics.</p>
<a href="accueil.html" class="parallax-cta-btn">
<span data-i18n="intro.ctaBtn">Accéder au site</span>
<i class="fa-solid fa-arrow-right"></i>
</a>
<div class="cta-meta">
<span><i class="fa-solid fa-plane"></i> <span data-i18n="intro.metaShipments">2 envois / semaine</span></span>
<span><i class="fa-solid fa-clock"></i> <span data-i18n="intro.metaDelay">2 semaines depuis Paris</span></span>
<span><i class="fa-solid fa-tag"></i> <span data-i18n="intro.metaPrice">70 000 Ar / kg</span></span>
</div>
</div>
</section>
<script src="js/translations.js"></script>
<script>
// ── i18n minimal pour la page parallaxe ──────────────────────────────────
(function () {
const lang = localStorage.getItem('mva-lang') || 'fr';
applyLang(lang);
document.querySelectorAll('.lang-switcher button').forEach(btn => {
btn.addEventListener('click', () => applyLang(btn.dataset.lang));
});
function applyLang(l) {
document.documentElement.lang = l;
localStorage.setItem('mva-lang', l);
document.querySelectorAll('.lang-switcher button').forEach(b =>
b.classList.toggle('active', b.dataset.lang === l)
);
const t = window.translations?.[l];
if (!t) return;
document.querySelectorAll('[data-i18n]').forEach(el => {
const keys = el.dataset.i18n.split('.');
let v = t;
for (const k of keys) v = v?.[k];
if (v != null) el.textContent = v;
});
}
})();
// ── Parallaxe scroll-driven ──────────────────────────────────────────────
(function () {
const root = document.documentElement;
let ticking = false;
function update() {
const max = document.body.scrollHeight - window.innerHeight;
const progress = max > 0 ? Math.min(1, Math.max(0, window.scrollY / max)) : 0;
root.style.setProperty('--scroll', progress.toFixed(4));
ticking = false;
}
window.addEventListener('scroll', () => {
if (!ticking) {
window.requestAnimationFrame(update);
ticking = true;
}
}, { passive: true });
update();
})();
// ── Mouse parallaxe (depth effect) ───────────────────────────────────────
(function () {
if (window.matchMedia('(hover: none)').matches) return;
const root = document.documentElement;
window.addEventListener('mousemove', (e) => {
const x = (e.clientX / window.innerWidth - 0.5) * 2;
const y = (e.clientY / window.innerHeight - 0.5) * 2;
root.style.setProperty('--mx', x.toFixed(3));
root.style.setProperty('--my', y.toFixed(3));
}, { passive: true });
})();
</script>
</body>
</html>