);
}
// ---------- HeroScene ----------
// Background : photo réelle "Burkina Faso sur la carte d'Afrique de l'Ouest"
// fournie par l'utilisateur (assets/burkina-map.jpg). Les couches SVG
// précédentes (montagnes, sun, étoiles) sont conservées en superposition très
// atténuée pour la profondeur, mais ne dominent plus la scène.
function HeroScene() {
const y = useScrollY();
const px = (mult) => Math.min(y * mult, 400);
return (
{/* Photo de fond — Burkina Faso planté sur la carte Afrique de l'Ouest */}
{/* Overlay sombre dégradé pour garantir la lisibilité du texte par-dessus */}
{/* Sun rays */}
{/* Stars */}
{/* Shooting stars */}
{[0,1,2,3].map(i => (
))}
{/* Sun disk */}
{/* Distant mountain layer */}
{/* Mid mountain layer */}
{/* Near mountain layer */}
{/* Atmospheric fog bands */}
{/* Horizon road + bus — épuré : route en perspective sobre, plus de
traînée LED RGB qui traversait la scène. La voie centrale guide
juste l'œil vers le point de fuite à l'horizon. */}
);
}
// Salutations rotatives — incarne l'identité culturelle dès le 1er regard
function GreetingRotator({ greetings }) {
const [idx, setIdx] = _useState(0);
_useEffect(() => {
if (!greetings || greetings.length < 2) return;
const id = setInterval(() => setIdx((i) => (i + 1) % greetings.length), 2400);
return () => clearInterval(id);
}, [greetings]);
if (!greetings || greetings.length === 0) return null;
const cur = greetings[idx];
return (
{/* LogoCoin animé (spin + halo) — déplacé en floating top-right pour
* laisser le Mascot prendre la place principale du hero sans perdre
* l'animation signature du logo. Pointer-events:none pour ne pas
* bloquer les interactions avec ce qui est dessous. */}
{t.hero.eyebrow}
{t.hero.title1}
{t.hero.title2}
{t.hero.sub}
{/* LANDING-WEB-CTA (déploiement — 2026-06-18) : bouton principal qui
ouvre directement l'app passager web (app.fasotravel.app). */}
{/* variant="blur" et non "mask" car la tête est positionnée avec
* top:-25% (dépasse au-dessus de sa bbox) et le mask clip-path
* coupe les débordements. Le blur fade-in n'a pas ce souci. */}