/* GUIDKO Branches étendues — data-driven, chacune avec sa porte d'entrée distincte.
   Dépannage · Contrôle technique · Lavage · Financement · Recyclage · Tourisme · Recharge solidaire.
   Motif commun : landing split (présentation + 2 portes) → page contenu structurée. Relié Wallet/GPS/Assurance. */

const BRANCH_DATA = {
  depannage: {
    fr: "Dépannage", en: "Roadside", code: "DÉPANNAGE", icon: "shield", accent: "#E11D48",
    h1: { fr: "Tombé en panne ?", en: "Broken down?" }, h2: { fr: "On arrive.", en: "We're coming." },
    sub: { fr: "Assistance et remorquage géolocalisés via GUIDAROUTE, couverts par ton Assurance. Un dépanneur près de toi, en minutes.", en: "Geolocated assistance & towing via GUIDAROUTE, covered by your insurance. A truck near you, in minutes." },
    stats: [["8 min", { fr: "DÉLAI MOYEN", en: "AVG ETA" }], ["24/7", { fr: "DISPONIBLE", en: "AVAILABLE" }], ["GPS", { fr: "LIA INTÉGRÉ", en: "LIA BUILT-IN" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "AUTOMOBILISTE", en: "DRIVER" }, title: { fr: "J'ai besoin d'aide", en: "I need help" }, desc: { fr: "Demande un dépannage immédiat, suivi en direct.", en: "Request immediate assistance, live tracking." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "DÉPANNEUR", en: "TOW PRO" }, title: { fr: "Je dépanne", en: "I assist" }, desc: { fr: "Reçois les missions proches, gagne via Wallet.", en: "Get nearby missions, earn via Wallet." } },
    ],
    listTitle: { fr: "INTERVENTIONS DISPONIBLES", en: "AVAILABLE CALLOUTS" },
    items: [
      { name: { fr: "Batterie à plat · Nation", en: "Flat battery · Nation" }, meta: { fr: "0.6 km · prise en charge assurance", en: "0.6 km · insurance covered" }, price: 0, cta: { fr: "Demander", en: "Request" } },
      { name: { fr: "Crevaison · Bd Voltaire", en: "Flat tyre · Bd Voltaire" }, meta: { fr: "1.2 km · 39 € ou couvert", en: "1.2 km · €39 or covered" }, price: 39, cta: { fr: "Demander", en: "Request" } },
      { name: { fr: "Remorquage garage · 12e", en: "Tow to garage · 12e" }, meta: { fr: "Vers Garage Central · escrow", en: "To Garage Central · escrow" }, price: 89, cta: { fr: "Demander", en: "Request" } },
    ],
  },
  controle: {
    fr: "Contrôle technique", en: "Vehicle inspection", code: "CONTRÔLE TECHNIQUE", icon: "check", accent: "#0FB76B",
    h1: { fr: "Ton contrôle,", en: "Your inspection," }, h2: { fr: "réservé en 30 s.", en: "booked in 30s." },
    sub: { fr: "Centres partenaires agréés, créneaux en direct, rappel automatique d'échéance par Lia. Paiement Wallet.", en: "Approved partner centers, live slots, automatic Lia reminders. Wallet payment." },
    stats: [["120+", { fr: "CENTRES", en: "CENTERS" }], ["48 h", { fr: "DÉLAI MOYEN", en: "AVG WAIT" }], ["Lia", { fr: "RAPPELS", en: "REMINDERS" }]],
    doors: [
      { side: "client", icon: "auto", tag: { fr: "PARTICULIER", en: "OWNER" }, title: { fr: "Je réserve un créneau", en: "Book a slot" }, desc: { fr: "Trouve un centre, choisis l'horaire, paie via Wallet.", en: "Find a center, pick a time, pay via Wallet." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "CENTRE PARTENAIRE", en: "PARTNER CENTER" }, title: { fr: "Je gère mes créneaux", en: "Manage my slots" }, desc: { fr: "Publie tes disponibilités, reçois des réservations.", en: "Publish availability, receive bookings." } },
    ],
    listTitle: { fr: "CENTRES PROCHES", en: "NEARBY CENTERS" },
    items: [
      { name: { fr: "Autosur · Nation", en: "Autosur · Nation" }, meta: { fr: "0.9 km · dispo demain 9h", en: "0.9 km · free tmrw 9am" }, price: 78, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Dekra · Bastille", en: "Dekra · Bastille" }, meta: { fr: "1.5 km · contre-visite incluse", en: "1.5 km · re-test included" }, price: 85, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Sécuritest · 12e", en: "Sécuritest · 12e" }, meta: { fr: "0.7 km · véhicule élec OK", en: "0.7 km · EV ready" }, price: 82, cta: { fr: "Réserver", en: "Book" } },
    ],
  },
  lavage: {
    fr: "Lavage & Esthétique", en: "Wash & Detailing", code: "LAVAGE", icon: "bolt", accent: "#3B6FF8",
    h1: { fr: "Une voiture", en: "A car" }, h2: { fr: "comme neuve.", en: "like new." },
    sub: { fr: "Lavage à la demande, à domicile ou en station, intérieur et carrosserie. Réservation et paiement Wallet.", en: "On-demand wash, at home or station, interior and body. Wallet booking and payment." },
    stats: [["45 min", { fr: "À DOMICILE", en: "AT HOME" }], ["Eco", { fr: "SANS EAU", en: "WATERLESS" }], ["★4.9", { fr: "QUALITÉ", en: "QUALITY" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "PARTICULIER", en: "OWNER" }, title: { fr: "Je fais laver", en: "Get it washed" }, desc: { fr: "À domicile ou en station, intérieur/extérieur.", en: "At home or station, interior/exterior." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "LAVEUR PRO", en: "WASH PRO" }, title: { fr: "Je propose mes services", en: "Offer my service" }, desc: { fr: "Reçois des prestations près de toi.", en: "Receive jobs nearby." } },
    ],
    listTitle: { fr: "FORMULES", en: "PACKAGES" },
    items: [
      { name: { fr: "Express extérieur", en: "Express exterior" }, meta: { fr: "20 min · station", en: "20 min · station" }, price: 12, cta: { fr: "Choisir", en: "Choose" } },
      { name: { fr: "Complet intérieur + ext.", en: "Full interior + ext." }, meta: { fr: "45 min · à domicile", en: "45 min · at home" }, price: 39, cta: { fr: "Choisir", en: "Choose" } },
      { name: { fr: "Premium détailing", en: "Premium detailing" }, meta: { fr: "2 h · cire + rénovation", en: "2 h · wax + restore" }, price: 89, cta: { fr: "Choisir", en: "Choose" } },
    ],
  },
  financement: {
    fr: "Financement", en: "Financing", code: "FINANCEMENT", icon: "finance", accent: "#A78BFA",
    h1: { fr: "Roule maintenant,", en: "Drive now," }, h2: { fr: "paie à ton rythme.", en: "pay your way." },
    sub: { fr: "Crédit, leasing (LOA/LLD) et paiement en plusieurs fois, simulés par Lia. Relié au Marché Auto et au Wallet.", en: "Loan, leasing (PCP/lease) and installments, simulated by Lia. Linked to the Auto Market and Wallet." },
    stats: [["2.9%", { fr: "TAEG DÈS", en: "APR FROM" }], ["4x", { fr: "SANS FRAIS", en: "FEE-FREE" }], ["Lia", { fr: "SIMULATION", en: "SIMULATION" }]],
    doors: [
      { side: "client", icon: "auto", tag: { fr: "ACHETEUR", en: "BUYER" }, title: { fr: "Je finance un véhicule", en: "Finance a vehicle" }, desc: { fr: "Simule ton crédit ou leasing en quelques secondes.", en: "Simulate your loan or lease in seconds." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "PARTENAIRE FINANCIER", en: "FINANCE PARTNER" }, title: { fr: "Je propose des offres", en: "Offer financing" }, desc: { fr: "Diffuse tes offres auprès des acheteurs GUIDKO.", en: "Publish offers to GUIDKO buyers." } },
    ],
    listTitle: { fr: "SIMULATIONS", en: "SIMULATIONS" },
    items: [
      { name: { fr: "Crédit auto · 12 400 €", en: "Car loan · €12,400" }, meta: { fr: "48 mois · 289 €/mois", en: "48 mo · €289/mo" }, price: 289, cta: { fr: "Simuler", en: "Simulate" } },
      { name: { fr: "LOA Peugeot 208", en: "Lease Peugeot 208" }, meta: { fr: "36 mois · 199 €/mois", en: "36 mo · €199/mo" }, price: 199, cta: { fr: "Simuler", en: "Simulate" } },
      { name: { fr: "Paiement 4× pièces", en: "4× parts payment" }, meta: { fr: "Sans frais · via Wallet", en: "Fee-free · via Wallet" }, price: 0, cta: { fr: "Activer", en: "Enable" } },
    ],
  },
  recyclage: {
    fr: "Recyclage / Casse", en: "Recycling / Scrap", code: "RECYCLAGE", icon: "auto", accent: "#0FB76B",
    h1: { fr: "Fin de vie ?", en: "End of life?" }, h2: { fr: "Rien ne se perd.", en: "Nothing is lost." },
    sub: { fr: "Reprise de véhicules hors d'usage, revente de pièces d'occasion, primes à la conversion. Centres VHU agréés.", en: "Take-back of end-of-life vehicles, used parts resale, conversion bonuses. Approved scrap centers." },
    stats: [["VHU", { fr: "AGRÉÉ", en: "APPROVED" }], ["48 h", { fr: "ENLÈVEMENT", en: "PICKUP" }], ["Prime", { fr: "CONVERSION", en: "BONUS" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "PARTICULIER", en: "OWNER" }, title: { fr: "Je cède mon véhicule", en: "Hand over my vehicle" }, desc: { fr: "Reprise, enlèvement gratuit, certificat de destruction.", en: "Take-back, free pickup, destruction certificate." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "CENTRE VHU", en: "SCRAP CENTER" }, title: { fr: "Je rachète & revends", en: "Buy & resell" }, desc: { fr: "Pièces d'occasion sur le Marché GUIDKO.", en: "Used parts on the GUIDKO Market." } },
    ],
    listTitle: { fr: "PIÈCES D'OCCASION", en: "USED PARTS" },
    items: [
      { name: { fr: "Moteur 1.6 HDi · 84 000 km", en: "1.6 HDi engine · 84,000 km" }, meta: { fr: "Garantie 3 mois · escrow", en: "3-mo warranty · escrow" }, price: 680, cta: { fr: "Voir", en: "View" } },
      { name: { fr: "Phares avant (paire)", en: "Front headlights (pair)" }, meta: { fr: "Bon état · 11e", en: "Good condition · 11e" }, price: 95, cta: { fr: "Voir", en: "View" } },
      { name: { fr: "Reprise pour destruction", en: "Take-back for scrap" }, meta: { fr: "Prime jusqu'à 500 €", en: "Bonus up to €500" }, price: 0, cta: { fr: "Estimer", en: "Estimate" } },
    ],
  },
  tourisme: {
    fr: "Tourisme & LLD", en: "Tourism & long-term", code: "TOURISME", icon: "region", accent: "#FF5A1F",
    h1: { fr: "Pars loin,", en: "Go far," }, h2: { fr: "roule serein.", en: "drive easy." },
    sub: { fr: "Location longue durée et véhicules de voyage : vacances, road-trips, déplacements pros. Assurance et GUIDAROUTE inclus.", en: "Long-term rental and travel vehicles: holidays, road-trips, business trips. Insurance and GUIDAROUTE included." },
    stats: [["7j+", { fr: "LONGUE DURÉE", en: "LONG-TERM" }], ["GPS", { fr: "LIA INCLUS", en: "LIA INCLUDED" }], ["14", { fr: "PAYS", en: "COUNTRIES" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "VOYAGEUR", en: "TRAVELER" }, title: { fr: "Je loue pour voyager", en: "Rent to travel" }, desc: { fr: "Véhicule longue durée, assurance et GPS inclus.", en: "Long-term vehicle, insurance and GPS included." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "LOUEUR / AGENCE", en: "RENTAL AGENCY" }, title: { fr: "Je propose ma flotte", en: "List my fleet" }, desc: { fr: "Mets tes véhicules en location longue durée.", en: "List vehicles for long-term rental." } },
    ],
    listTitle: { fr: "OFFRES LONGUE DURÉE", en: "LONG-TERM OFFERS" },
    items: [
      { name: { fr: "SUV familial · 1 semaine", en: "Family SUV · 1 week" }, meta: { fr: "Tout inclus · 320 €", en: "All-in · €320" }, price: 320, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Van aménagé · road-trip", en: "Camper van · road-trip" }, meta: { fr: "10 j · 890 €", en: "10 d · €890" }, price: 890, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Citadine · LLD 3 mois", en: "City car · 3-mo lease" }, meta: { fr: "249 €/mois · tout inclus", en: "€249/mo · all-in" }, price: 249, cta: { fr: "Réserver", en: "Book" } },
    ],
  },
  recharge: {
    fr: "Recharge solidaire", en: "Solidarity charging", code: "RECHARGE FLOTTE", icon: "bolt", accent: "#0FB76B",
    h1: { fr: "L'énergie", en: "Energy" }, h2: { fr: "qui se partage.", en: "that's shared." },
    sub: { fr: "Bornes partagées entre particuliers et flottes électriques d'entreprise. Réserve un créneau, partage la tienne, facturation Wallet.", en: "Shared charging between individuals and corporate EV fleets. Book a slot, share yours, Wallet billing." },
    stats: [["P2P", { fr: "PARTAGE", en: "SHARING" }], ["Flotte", { fr: "ENTREPRISE", en: "FLEET" }], ["kWh", { fr: "FACTURÉ", en: "BILLED" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "CONDUCTEUR ÉLEC", en: "EV DRIVER" }, title: { fr: "Je recharge", en: "I charge" }, desc: { fr: "Réserve une borne partagée près de toi.", en: "Book a shared charger near you." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "FLOTTE / HÔTE", en: "FLEET / HOST" }, title: { fr: "Je partage mes bornes", en: "Share my chargers" }, desc: { fr: "Rentabilise ta flotte et tes bornes d'entreprise.", en: "Monetize your fleet and corporate chargers." } },
    ],
    listTitle: { fr: "BORNES PARTAGÉES", en: "SHARED CHARGERS" },
    items: [
      { name: { fr: "Borne particulier · 11e", en: "Private charger · 11e" }, meta: { fr: "7 kW · 0,28 €/kWh", en: "7 kW · €0.28/kWh" }, price: 0, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Flotte LogiPro · accès soir", en: "LogiPro fleet · evening" }, meta: { fr: "22 kW · 0,35 €/kWh", en: "22 kW · €0.35/kWh" }, price: 0, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Partager ma borne", en: "Share my charger" }, meta: { fr: "Revenus passifs · Wallet", en: "Passive income · Wallet" }, price: 0, cta: { fr: "Publier", en: "List" } },
    ],
  },
  emploi: {
    fr: "Emploi mobilité", en: "Mobility jobs", code: "EMPLOI", icon: "b2b", accent: "#3B6FF8",
    h1: { fr: "Ton métier", en: "Your career" }, h2: { fr: "est sur la route.", en: "is on the road." },
    sub: { fr: "Recrutement dédié mobilité : moniteurs, chauffeurs, livreurs, dépanneurs, mécaniciens. Profil vérifié par KYC, mis en relation par Lia.", en: "Mobility-focused hiring: instructors, drivers, couriers, mechanics. KYC-verified profiles, matched by Lia." },
    stats: [["KYC", { fr: "PROFILS VÉRIFIÉS", en: "VERIFIED" }], ["Lia", { fr: "MATCHING", en: "MATCHING" }], ["24/7", { fr: "ANNONCES", en: "LISTINGS" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "CANDIDAT", en: "CANDIDATE" }, title: { fr: "Je cherche un emploi", en: "Find a job" }, desc: { fr: "Postule aux offres mobilité, profil KYC prêt.", en: "Apply to mobility jobs, KYC profile ready." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "RECRUTEUR", en: "RECRUITER" }, title: { fr: "Je recrute", en: "I hire" }, desc: { fr: "Publie une offre, reçois des candidats vérifiés.", en: "Post a job, get verified candidates." } },
    ],
    listTitle: { fr: "OFFRES DU MOMENT", en: "CURRENT OPENINGS" },
    items: [
      { name: { fr: "Moniteur·rice B · Lubasa", en: "B Instructor · Lubasa" }, meta: { fr: "CDI · Paris 11e · 2 400 €/mois", en: "Full-time · Paris · €2,400/mo" }, price: 0, cta: { fr: "Postuler", en: "Apply" } },
      { name: { fr: "Livreur scooter · temps partiel", en: "Scooter courier · part-time" }, meta: { fr: "Flexible · dès 14 €/h", en: "Flexible · from €14/h" }, price: 0, cta: { fr: "Postuler", en: "Apply" } },
      { name: { fr: "Mécanicien VHU · 93", en: "Scrap mechanic · 93" }, meta: { fr: "CDD · centre agréé", en: "Contract · approved center" }, price: 0, cta: { fr: "Postuler", en: "Apply" } },
    ],
  },
  formation: {
    fr: "Formation Pro", en: "Pro training", code: "FORMATION", icon: "eleve", accent: "#A78BFA",
    h1: { fr: "Monte en", en: "Level up" }, h2: { fr: "compétences.", en: "your skills." },
    sub: { fr: "Au-delà du permis B : FIMO/FCO, CACES, permis poids lourd, carte VTC/Taxi, éco-conduite. Financement CPF, suivi par Lia.", en: "Beyond the B licence: truck, bus, VTC/Taxi card, eco-driving. CPF funding, Lia tracking." },
    stats: [["CPF", { fr: "FINANÇABLE", en: "FUNDABLE" }], ["12+", { fr: "FORMATIONS", en: "COURSES" }], ["Lia", { fr: "PARCOURS", en: "PATHWAY" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "APPRENANT", en: "LEARNER" }, title: { fr: "Je me forme", en: "Train myself" }, desc: { fr: "Choisis ta formation pro, finance via CPF/Wallet.", en: "Pick a pro course, fund via CPF/Wallet." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "ORGANISME", en: "TRAINING BODY" }, title: { fr: "Je forme", en: "I train" }, desc: { fr: "Publie tes formations agréées, gère les sessions.", en: "List accredited courses, manage sessions." } },
    ],
    listTitle: { fr: "CATALOGUE", en: "CATALOG" },
    items: [
      { name: { fr: "Permis C (poids lourd)", en: "C licence (truck)" }, meta: { fr: "105 h · CPF · 2 800 €", en: "105h · CPF · €2,800" }, price: 2800, cta: { fr: "S'inscrire", en: "Enroll" } },
      { name: { fr: "Carte VTC", en: "VTC card" }, meta: { fr: "Préparation examen · 690 €", en: "Exam prep · €690" }, price: 690, cta: { fr: "S'inscrire", en: "Enroll" } },
      { name: { fr: "Éco-conduite (1 j)", en: "Eco-driving (1 day)" }, meta: { fr: "Entreprises & flottes", en: "Companies & fleets" }, price: 240, cta: { fr: "Réserver", en: "Book" } },
    ],
  },
  pass: {
    fr: "Pass Mobilité", en: "Mobility Pass", code: "PASS", icon: "region", accent: "#FF5A1F",
    h1: { fr: "Toute la mobilité,", en: "All mobility," }, h2: { fr: "un seul pass.", en: "one pass." },
    sub: { fr: "L'abonnement qui réunit covoiturage, livraison, stationnement et recharge en un forfait. Un prix, tous les services, facturation Wallet.", en: "The subscription bundling carpool, delivery, parking and charging. One price, all services, Wallet billing." },
    stats: [["1", { fr: "FORFAIT", en: "PLAN" }], ["4+", { fr: "SERVICES", en: "SERVICES" }], ["-25%", { fr: "VS SÉPARÉ", en: "VS SEPARATE" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "PARTICULIER", en: "PERSONAL" }, title: { fr: "Mon pass perso", en: "My personal pass" }, desc: { fr: "Un forfait mobilité tout-en-un pour mon quotidien.", en: "An all-in-one mobility plan for daily life." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "ENTREPRISE", en: "BUSINESS" }, title: { fr: "Pass collaborateurs", en: "Employee pass" }, desc: { fr: "Offre la mobilité à tes équipes, gestion centralisée.", en: "Offer mobility to your teams, centralized." } },
    ],
    listTitle: { fr: "FORMULES PASS", en: "PASS PLANS" },
    items: [
      { name: { fr: "Pass Essentiel", en: "Essential Pass" }, meta: { fr: "Covoit + parking · /mois", en: "Carpool + parking · /mo" }, price: 29, cta: { fr: "Choisir", en: "Choose" } },
      { name: { fr: "Pass Complet", en: "Full Pass" }, meta: { fr: "+ livraison + recharge", en: "+ delivery + charging" }, price: 59, cta: { fr: "Choisir", en: "Choose" } },
      { name: { fr: "Pass Entreprise", en: "Business Pass" }, meta: { fr: "Par collaborateur · sur devis", en: "Per employee · quote" }, price: 0, cta: { fr: "Demander", en: "Request" } },
    ],
  },
  carrosserie: {
    fr: "Carrosserie & Sinistre", en: "Bodywork & Claims", code: "CARROSSERIE", icon: "shield", accent: "#E11D48",
    h1: { fr: "Un choc ?", en: "A dent?" }, h2: { fr: "On répare tout.", en: "We fix it all." },
    sub: { fr: "Réparation carrosserie et gestion de sinistre de bout en bout : constat, devis Lia, prise en charge Assurance, véhicule de prêt.", en: "Bodywork repair and end-to-end claims: report, Lia quote, insurance handling, courtesy car." },
    stats: [["Lia", { fr: "DEVIS PHOTO", en: "PHOTO QUOTE" }], ["48 h", { fr: "PRISE EN CHARGE", en: "HANDLING" }], ["Assur.", { fr: "INTÉGRÉE", en: "BUILT-IN" }]],
    doors: [
      { side: "client", icon: "auto", tag: { fr: "ASSURÉ", en: "INSURED" }, title: { fr: "Déclarer un sinistre", en: "File a claim" }, desc: { fr: "Photos, constat, devis instantané, suivi réparation.", en: "Photos, report, instant quote, repair tracking." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "CARROSSIER", en: "BODY SHOP" }, title: { fr: "Je répare", en: "I repair" }, desc: { fr: "Reçois les dossiers, devis, paiement Assurance via Wallet.", en: "Get cases, quote, insurance payment via Wallet." } },
    ],
    listTitle: { fr: "DOSSIERS EN COURS", en: "OPEN CASES" },
    items: [
      { name: { fr: "Pare-chocs AR · Clio", en: "Rear bumper · Clio" }, meta: { fr: "Devis Lia 420 € · pris en charge", en: "Lia quote €420 · covered" }, price: 0, cta: { fr: "Suivre", en: "Track" } },
      { name: { fr: "Rayure portière · 208", en: "Door scratch · 208" }, meta: { fr: "180 € · franchise Wallet", en: "€180 · Wallet excess" }, price: 180, cta: { fr: "Réparer", en: "Repair" } },
      { name: { fr: "Pare-brise · Mégane", en: "Windshield · Mégane" }, meta: { fr: "Sans franchise · à domicile", en: "No excess · at home" }, price: 0, cta: { fr: "Réserver", en: "Book" } },
    ],
  },
  mobilitedouce: {
    fr: "Mobilité douce", en: "Soft mobility", code: "MOBILITÉ DOUCE", icon: "covoit", accent: "#0FB76B",
    h1: { fr: "Vélos, trottinettes,", en: "Bikes, scooters," }, h2: { fr: "en libre-service.", en: "free-floating." },
    sub: { fr: "Vélos et trottinettes en libre-service, déverrouillage par l'app, trajet payé via Wallet. Relié au GUIDAROUTE et au Pass Mobilité.", en: "Free-floating bikes and scooters, app unlock, ride paid via Wallet. Linked to GUIDAROUTE and Mobility Pass." },
    stats: [["1 200+", { fr: "VÉHICULES", en: "VEHICLES" }], ["0,20 €", { fr: "/ MINUTE", en: "/ MINUTE" }], ["Pass", { fr: "INCLUS", en: "INCLUDED" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "USAGER", en: "RIDER" }, title: { fr: "Déverrouiller un véhicule", en: "Unlock a vehicle" }, desc: { fr: "Scanne, roule, paie à la minute via Wallet.", en: "Scan, ride, pay per minute via Wallet." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "OPÉRATEUR", en: "OPERATOR" }, title: { fr: "Je gère ma flotte", en: "Manage my fleet" }, desc: { fr: "Déploie, recharge, suis l'usage de tes véhicules.", en: "Deploy, recharge, track your vehicles' usage." } },
    ],
    listTitle: { fr: "AUTOUR DE TOI", en: "AROUND YOU" },
    items: [
      { name: { fr: "Vélo électrique · 80 m", en: "E-bike · 80 m" }, meta: { fr: "Batterie 86% · déverrouiller", en: "Battery 86% · unlock" }, price: 1, cta: { fr: "Déverrouiller", en: "Unlock" } },
      { name: { fr: "Trottinette · 140 m", en: "Scooter · 140 m" }, meta: { fr: "Batterie 64%", en: "Battery 64%" }, price: 1, cta: { fr: "Déverrouiller", en: "Unlock" } },
      { name: { fr: "Vélo cargo · 300 m", en: "Cargo bike · 300 m" }, meta: { fr: "Idéal courses & enfants", en: "Ideal errands & kids" }, price: 2, cta: { fr: "Déverrouiller", en: "Unlock" } },
    ],
  },
  convoyage: {
    fr: "Convoyage", en: "Vehicle transport", code: "CONVOYAGE", icon: "b2b", accent: "#6B7280",
    h1: { fr: "Un véhicule", en: "A vehicle" }, h2: { fr: "à déplacer ?", en: "to move?" },
    sub: { fr: "Convoyage et transport de véhicules entre pros, particuliers et concessions. Chauffeur vérifié KYC, assuré, suivi GUIDAROUTE.", en: "Vehicle ferrying and transport between pros, individuals and dealers. KYC-verified driver, insured, GUIDAROUTE tracking." },
    stats: [["KYC", { fr: "CHAUFFEURS", en: "DRIVERS" }], ["Assur.", { fr: "TRAJET COUVERT", en: "TRIP COVERED" }], ["GPS", { fr: "SUIVI LIVE", en: "LIVE TRACK" }]],
    doors: [
      { side: "client", icon: "auto", tag: { fr: "EXPÉDITEUR", en: "SENDER" }, title: { fr: "Faire convoyer", en: "Send a vehicle" }, desc: { fr: "Achat à distance, mutation flotte : on l'amène.", en: "Remote purchase, fleet move: we bring it." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "CONVOYEUR", en: "FERRY DRIVER" }, title: { fr: "Je convoie", en: "I ferry" }, desc: { fr: "Missions de convoyage payées au km, via Wallet.", en: "Ferrying missions paid per km, via Wallet." } },
    ],
    listTitle: { fr: "MISSIONS DE CONVOYAGE", en: "FERRY MISSIONS" },
    items: [
      { name: { fr: "Paris → Lyon · berline", en: "Paris → Lyon · sedan" }, meta: { fr: "462 km · 280 €", en: "462 km · €280" }, price: 280, cta: { fr: "Accepter", en: "Accept" } },
      { name: { fr: "Lot 3 véhicules · concession", en: "3-vehicle batch · dealer" }, meta: { fr: "B2B · 640 €", en: "B2B · €640" }, price: 640, cta: { fr: "Voir", en: "View" } },
      { name: { fr: "Livraison achat · Marché", en: "Purchase delivery · Market" }, meta: { fr: "Relié à ta vente · escrow", en: "Linked to your sale · escrow" }, price: 150, cta: { fr: "Accepter", en: "Accept" } },
    ],
  },
  vtc: {
    fr: "Taxi & VTC", en: "Taxi & Ride", code: "TAXI & VTC", icon: "covoit", accent: "#FF5A1F",
    h1: { fr: "Une course,", en: "A ride," }, h2: { fr: "à la demande.", en: "on demand." },
    sub: { fr: "Course immédiate ou réservée, chauffeur VTC/taxi vérifié KYC, tarif connu d'avance, paiement Wallet. Guidage GUIDAROUTE.", en: "Instant or booked ride, KYC-verified VTC/taxi driver, upfront fare, Wallet payment. GUIDAROUTE guidance." },
    stats: [["3 min", { fr: "ATTENTE MOY.", en: "AVG WAIT" }], ["KYC", { fr: "CHAUFFEURS", en: "DRIVERS" }], ["24/7", { fr: "DISPONIBLE", en: "AVAILABLE" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "PASSAGER", en: "RIDER" }, title: { fr: "Commander une course", en: "Book a ride" }, desc: { fr: "Adresse, prix d'avance, suivi en direct.", en: "Address, upfront price, live tracking." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "CHAUFFEUR VTC", en: "VTC DRIVER" }, title: { fr: "Je conduis", en: "I drive" }, desc: { fr: "Reçois les courses proches, gagne via Wallet.", en: "Get nearby rides, earn via Wallet." } },
    ],
    listTitle: { fr: "COURSES PROCHES", en: "NEARBY RIDES" },
    items: [
      { name: { fr: "Nation → Gare de Lyon", en: "Nation → Gare de Lyon" }, meta: { fr: "3.2 km · 14 €", en: "3.2 km · €14" }, price: 14, cta: { fr: "Accepter", en: "Accept" } },
      { name: { fr: "Aéroport CDG · réservé 18h", en: "CDG Airport · booked 6pm" }, meta: { fr: "Forfait · 52 €", en: "Flat · €52" }, price: 52, cta: { fr: "Voir", en: "View" } },
      { name: { fr: "Course partagée · -30%", en: "Shared ride · -30%" }, meta: { fr: "Relié Covoiturage", en: "Linked Carpool" }, price: 9, cta: { fr: "Accepter", en: "Accept" } },
    ],
  },
  adapte: {
    fr: "Transport adapté", en: "Accessible transport", code: "TRANSPORT ADAPTÉ", icon: "shield", accent: "#3B6FF8",
    h1: { fr: "Une mobilité", en: "Mobility" }, h2: { fr: "pour tous.", en: "for everyone." },
    sub: { fr: "Transport PMR, seniors et personnes à besoins spécifiques. Véhicules équipés, chauffeurs formés, prise en charge accompagnée.", en: "Transport for reduced-mobility, seniors and special needs. Equipped vehicles, trained drivers, assisted pickup." },
    stats: [["♿", { fr: "VÉHICULES ÉQUIPÉS", en: "EQUIPPED" }], ["Formés", { fr: "CHAUFFEURS", en: "DRIVERS" }], ["Aides", { fr: "PRISE EN CHARGE", en: "FUNDING" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "USAGER / AIDANT", en: "USER / CARER" }, title: { fr: "Réserver un trajet", en: "Book a trip" }, desc: { fr: "Trajet accompagné, véhicule adapté à ton besoin.", en: "Assisted trip, vehicle fit to your need." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "TRANSPORTEUR", en: "OPERATOR" }, title: { fr: "Je transporte", en: "I transport" }, desc: { fr: "Missions adaptées, conventions aides sociales.", en: "Adapted missions, social-aid agreements." } },
    ],
    listTitle: { fr: "TRAJETS À VENIR", en: "UPCOMING TRIPS" },
    items: [
      { name: { fr: "Domicile → Hôpital · fauteuil", en: "Home → Hospital · wheelchair" }, meta: { fr: "Véhicule PMR · pris en charge", en: "PRM vehicle · covered" }, price: 0, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Senior · courses hebdo", en: "Senior · weekly errands" }, meta: { fr: "Accompagnement inclus", en: "Assistance included" }, price: 18, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Trajet scolaire adapté", en: "Adapted school trip" }, meta: { fr: "Convention · récurrent", en: "Agreement · recurring" }, price: 0, cta: { fr: "Demander", en: "Request" } },
    ],
  },
  autopartage: {
    fr: "Auto-partage", en: "Car-sharing", code: "AUTO-PARTAGE", icon: "auto", accent: "#0FB76B",
    h1: { fr: "Une voiture,", en: "A car," }, h2: { fr: "quand tu veux.", en: "whenever." },
    sub: { fr: "Voitures en libre-service à la minute ou à l'heure, déverrouillage par l'app, sans rendez-vous. Stations ou free-floating, paiement Wallet.", en: "Self-service cars by the minute or hour, app unlock, no appointment. Stations or free-floating, Wallet payment." },
    stats: [["0,35 €", { fr: "/ MINUTE", en: "/ MINUTE" }], ["Sans clé", { fr: "DÉVERROUILLAGE", en: "KEYLESS" }], ["Pass", { fr: "INCLUS", en: "INCLUDED" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "USAGER", en: "USER" }, title: { fr: "Réserver une voiture", en: "Book a car" }, desc: { fr: "Repère, déverrouille, roule, paie au temps.", en: "Spot, unlock, drive, pay by time." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "PROPRIÉTAIRE / FLOTTE", en: "OWNER / FLEET" }, title: { fr: "Je partage ma flotte", en: "Share my fleet" }, desc: { fr: "Mets tes véhicules en auto-partage, revenus passifs.", en: "List your vehicles for sharing, passive income." } },
    ],
    listTitle: { fr: "VOITURES DISPONIBLES", en: "AVAILABLE CARS" },
    items: [
      { name: { fr: "Citadine élec. · 120 m", en: "Electric city car · 120 m" }, meta: { fr: "Batterie 92% · déverrouiller", en: "Battery 92% · unlock" }, price: 1, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Break · station Nation", en: "Estate · Nation station" }, meta: { fr: "Idéal week-end", en: "Ideal weekend" }, price: 1, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Utilitaire · 300 m", en: "Van · 300 m" }, meta: { fr: "Déménagement express", en: "Quick move" }, price: 2, cta: { fr: "Réserver", en: "Book" } },
    ],
  },
  demarches: {
    fr: "Démarches auto", en: "Admin & papers", code: "DÉMARCHES AUTO", icon: "contracts", accent: "#A78BFA",
    h1: { fr: "Carte grise,", en: "Registration," }, h2: { fr: "sans la paperasse.", en: "without paperwork." },
    sub: { fr: "Carte grise, plaques, changement de titulaire, certificat de cession : toutes les démarches administratives, guidées par Lia, signées en ligne.", en: "Registration, plates, ownership transfer, sale certificate: all admin handled, Lia-guided, signed online." },
    stats: [["100%", { fr: "EN LIGNE", en: "ONLINE" }], ["Lia", { fr: "GUIDAGE", en: "GUIDED" }], ["48 h", { fr: "TRAITEMENT", en: "PROCESSING" }]],
    doors: [
      { side: "client", icon: "auto", tag: { fr: "PARTICULIER", en: "OWNER" }, title: { fr: "Faire ma démarche", en: "Start my request" }, desc: { fr: "Carte grise, plaques, cession : guidé pas à pas.", en: "Registration, plates, transfer: step by step." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "MANDATAIRE", en: "AGENT" }, title: { fr: "Je traite les dossiers", en: "Process requests" }, desc: { fr: "Habilité, traite les démarches en lot, via Wallet.", en: "Authorized, process requests in batch, via Wallet." } },
    ],
    listTitle: { fr: "DÉMARCHES COURANTES", en: "COMMON REQUESTS" },
    items: [
      { name: { fr: "Carte grise (changement titulaire)", en: "Registration (ownership change)" }, meta: { fr: "Relié à ta vente Marché", en: "Linked to your Market sale" }, price: 38, cta: { fr: "Démarrer", en: "Start" } },
      { name: { fr: "Plaques d'immatriculation", en: "Number plates" }, meta: { fr: "Posées · 29 €", en: "Fitted · €29" }, price: 29, cta: { fr: "Commander", en: "Order" } },
      { name: { fr: "Certificat de cession", en: "Sale certificate" }, meta: { fr: "Signé en ligne · gratuit", en: "Signed online · free" }, price: 0, cta: { fr: "Générer", en: "Generate" } },
    ],
  },
  train: {
    fr: "Train & Ferroviaire", en: "Rail", code: "TRAIN & FERROVIAIRE", icon: "region", accent: "#3B6FF8",
    h1: { fr: "Le rail,", en: "Rail," }, h2: { fr: "dans le pont.", en: "in the bridge." },
    sub: { fr: "Billets de train et trajets ferroviaires intégrés : recherche, réservation, paiement Wallet. Combiné porte-à-porte avec covoiturage et mobilité douce.", en: "Integrated train tickets and rail journeys: search, booking, Wallet payment. Door-to-door combined with carpool and soft mobility." },
    stats: [["Porte-à-porte", { fr: "COMBINÉ", en: "COMBINED" }], ["Wallet", { fr: "PAIEMENT", en: "PAYMENT" }], ["Lia", { fr: "ITINÉRAIRE", en: "ROUTING" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "VOYAGEUR", en: "TRAVELER" }, title: { fr: "Réserver un billet", en: "Book a ticket" }, desc: { fr: "Train + dernier km en covoit/vélo, un seul trajet.", en: "Train + last mile by carpool/bike, one journey." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "OPÉRATEUR", en: "OPERATOR" }, title: { fr: "Opérateur ferroviaire", en: "Rail operator" }, desc: { fr: "Distribue tes billets, intègre tes lignes au pont.", en: "Distribute tickets, plug your lines into the bridge." } },
    ],
    listTitle: { fr: "PROCHAINS DÉPARTS", en: "NEXT DEPARTURES" },
    items: [
      { name: { fr: "Paris → Lyon · 2h", en: "Paris → Lyon · 2h" }, meta: { fr: "TGV · dès 39 € · + dernier km", en: "High-speed · from €39 · + last mile" }, price: 39, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Trajet régional · abonnés", en: "Regional · pass holders" }, meta: { fr: "Inclus Pass Mobilité", en: "Included in Mobility Pass" }, price: 0, cta: { fr: "Voir", en: "View" } },
      { name: { fr: "Billet + covoit retour", en: "Ticket + carpool back" }, meta: { fr: "Combiné · -15%", en: "Combined · -15%" }, price: 33, cta: { fr: "Réserver", en: "Book" } },
    ],
  },
  bus: {
    fr: "Bus & Car", en: "Bus & Coach", code: "BUS & CAR", icon: "b2b", accent: "#0FB76B",
    h1: { fr: "Lignes & cars,", en: "Lines & coaches," }, h2: { fr: "réservés.", en: "booked." },
    sub: { fr: "Lignes urbaines, cars longue distance et transport scolaire. Horaires en direct, billets et abonnements via Wallet, affrètement pour groupes.", en: "Urban lines, long-distance coaches and school transport. Live schedules, tickets and passes via Wallet, group charter." },
    stats: [["Direct", { fr: "HORAIRES", en: "SCHEDULES" }], ["Wallet", { fr: "BILLETS", en: "TICKETS" }], ["Groupes", { fr: "AFFRÈTEMENT", en: "CHARTER" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "VOYAGEUR", en: "TRAVELER" }, title: { fr: "Prendre le bus/car", en: "Take a bus/coach" }, desc: { fr: "Ligne, horaire en direct, billet ou abonnement.", en: "Line, live schedule, ticket or pass." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "TRANSPORTEUR", en: "OPERATOR" }, title: { fr: "Exploiter mes lignes", en: "Run my lines" }, desc: { fr: "Gère lignes, horaires, billettique, affrètement.", en: "Manage lines, schedules, ticketing, charter." } },
    ],
    listTitle: { fr: "AUTOUR DE TOI", en: "AROUND YOU" },
    items: [
      { name: { fr: "Ligne 56 · dans 4 min", en: "Line 56 · in 4 min" }, meta: { fr: "Ticket 1,90 € · Wallet", en: "Ticket €1.90 · Wallet" }, price: 1.9, cta: { fr: "Acheter", en: "Buy" } },
      { name: { fr: "Car Paris → Bruxelles", en: "Coach Paris → Brussels" }, meta: { fr: "Longue distance · 19 €", en: "Long distance · €19" }, price: 19, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Affrètement scolaire", en: "School charter" }, meta: { fr: "Groupe · sur devis", en: "Group · quote" }, price: 0, cta: { fr: "Demander", en: "Request" } },
    ],
  },
  bateau: {
    fr: "Maritime & Fluvial", en: "Sea & River", code: "MARITIME & FLUVIAL", icon: "region", accent: "#3B6FF8",
    h1: { fr: "Ferries, navettes,", en: "Ferries, shuttles," }, h2: { fr: "et permis bateau.", en: "and boat licence." },
    sub: { fr: "Traversées ferry, navettes fluviales et location de bateaux. Billets via Wallet, et formation au permis bateau reliée à l'Espace Élève.", en: "Ferry crossings, river shuttles and boat rentals. Tickets via Wallet, boat-licence training linked to the Student space." },
    stats: [["Ferry", { fr: "TRAVERSÉES", en: "CROSSINGS" }], ["Permis", { fr: "BATEAU", en: "BOAT" }], ["Location", { fr: "À L'HEURE", en: "HOURLY" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "VOYAGEUR", en: "TRAVELER" }, title: { fr: "Réserver une traversée", en: "Book a crossing" }, desc: { fr: "Ferry, navette ou location bateau, paiement Wallet.", en: "Ferry, shuttle or boat rental, Wallet payment." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "ARMATEUR / LOUEUR", en: "OPERATOR / RENTER" }, title: { fr: "Opérer mes navires", en: "Run my vessels" }, desc: { fr: "Lignes, horaires, billetterie et flotte nautique.", en: "Lines, schedules, ticketing and nautical fleet." } },
    ],
    listTitle: { fr: "DÉPARTS & OFFRES", en: "DEPARTURES & OFFERS" },
    items: [
      { name: { fr: "Ferry · traversée 1h", en: "Ferry · 1h crossing" }, meta: { fr: "Piéton 12 € · véhicule 48 €", en: "Foot €12 · vehicle €48" }, price: 12, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Navette fluviale · centre", en: "River shuttle · downtown" }, meta: { fr: "Inclus Pass Mobilité", en: "Included in Mobility Pass" }, price: 0, cta: { fr: "Voir", en: "View" } },
      { name: { fr: "Permis bateau · formation", en: "Boat licence · training" }, meta: { fr: "Relié Espace Élève · 295 €", en: "Linked Student space · €295" }, price: 295, cta: { fr: "S'inscrire", en: "Enroll" } },
    ],
  },
  aerien: {
    fr: "Aérien & Drone", en: "Air & Drone", code: "AÉRIEN & DRONE", icon: "region", accent: "#A78BFA",
    h1: { fr: "Le ciel aussi,", en: "The sky too," }, h2: { fr: "fait partie du pont.", en: "is part of the bridge." },
    sub: { fr: "Navettes aéroport, vols régionaux partenaires, et livraison par drone pour le dernier km. Brevet télépilote relié à la Formation Pro.", en: "Airport shuttles, partner regional flights, and drone delivery for the last mile. Drone-pilot licence linked to Pro Training." },
    stats: [["Aéroport", { fr: "NAVETTES", en: "SHUTTLES" }], ["Drone", { fr: "DERNIER KM", en: "LAST MILE" }], ["Brevet", { fr: "TÉLÉPILOTE", en: "PILOT" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "VOYAGEUR", en: "TRAVELER" }, title: { fr: "Navette ou vol", en: "Shuttle or flight" }, desc: { fr: "Transfert aéroport combiné, vols partenaires.", en: "Combined airport transfer, partner flights." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "OPÉRATEUR / TÉLÉPILOTE", en: "OPERATOR / PILOT" }, title: { fr: "Opérer / télépiloter", en: "Operate / fly" }, desc: { fr: "Livraison drone, navettes, missions aériennes.", en: "Drone delivery, shuttles, air missions." } },
    ],
    listTitle: { fr: "SERVICES AÉRIENS", en: "AIR SERVICES" },
    items: [
      { name: { fr: "Navette aéroport CDG", en: "CDG airport shuttle" }, meta: { fr: "Combiné porte-à-porte · 29 €", en: "Door-to-door combined · €29" }, price: 29, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Livraison drone · dernier km", en: "Drone delivery · last mile" }, meta: { fr: "Relié Livraison · zones éligibles", en: "Linked Delivery · eligible zones" }, price: 6, cta: { fr: "Tester", en: "Try" } },
      { name: { fr: "Brevet télépilote drone", en: "Drone pilot licence" }, meta: { fr: "Relié Formation Pro · CPF", en: "Linked Pro Training · CPF" }, price: 690, cta: { fr: "S'inscrire", en: "Enroll" } },
    ],
  },
  peage: {
    fr: "Péage & Autoroute", en: "Tolls & Highway", code: "PÉAGE & AUTOROUTE", icon: "region", accent: "#6B7280",
    h1: { fr: "L'autoroute,", en: "The highway," }, h2: { fr: "sans s'arrêter.", en: "without stopping." },
    sub: { fr: "Télépéage, vignettes et abonnements autoroute via Wallet. Passage en flux libre, facturation automatique, relié au GUIDAROUTE.", en: "Electronic tolling, vignettes and highway passes via Wallet. Free-flow passage, auto-billing, linked to GUIDAROUTE." },
    stats: [["Flux libre", { fr: "SANS ARRÊT", en: "NON-STOP" }], ["Wallet", { fr: "FACTURÉ", en: "BILLED" }], ["Auto", { fr: "DÉTECTION", en: "DETECTION" }]],
    doors: [
      { side: "client", icon: "auto", tag: { fr: "CONDUCTEUR", en: "DRIVER" }, title: { fr: "Activer le télépéage", en: "Activate e-toll" }, desc: { fr: "Badge virtuel, passages facturés au Wallet.", en: "Virtual badge, passages billed to Wallet." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "FLOTTE", en: "FLEET" }, title: { fr: "Télépéage flotte", en: "Fleet e-toll" }, desc: { fr: "Un badge par véhicule, facturation centralisée.", en: "One badge per vehicle, central billing." } },
    ],
    listTitle: { fr: "MES PASSAGES", en: "MY PASSAGES" },
    items: [
      { name: { fr: "Badge télépéage virtuel", en: "Virtual e-toll badge" }, meta: { fr: "Sans abonnement · Wallet", en: "No subscription · Wallet" }, price: 0, cta: { fr: "Activer", en: "Activate" } },
      { name: { fr: "Vignette environnementale", en: "Emissions sticker" }, meta: { fr: "Conforme par ville", en: "City-compliant" }, price: 12, cta: { fr: "Commander", en: "Order" } },
      { name: { fr: "Abonnement A1 · trajets fréquents", en: "A1 pass · frequent" }, meta: { fr: "-30% · télébadge", en: "-30% · e-badge" }, price: 19, cta: { fr: "Souscrire", en: "Subscribe" } },
    ],
  },
  fret: {
    fr: "Fret & Transport lourd", en: "Freight", code: "FRET & TRANSPORT LOURD", icon: "b2b", accent: "#6B7280",
    h1: { fr: "Marchandises,", en: "Goods," }, h2: { fr: "longue distance.", en: "long haul." },
    sub: { fr: "Transport de marchandises poids lourd, commissionnaire de transport, affrètement national et international. Bourse de fret, suivi GPS, paiement Wallet.", en: "Heavy goods transport, freight forwarding, national and international charter. Freight exchange, GPS tracking, Wallet payment." },
    stats: [["Bourse", { fr: "DE FRET", en: "EXCHANGE" }], ["PL", { fr: "FLOTTE", en: "TRUCKS" }], ["Intl", { fr: "AFFRÈTEMENT", en: "CHARTER" }]],
    doors: [
      { side: "client", icon: "b2b", tag: { fr: "EXPÉDITEUR", en: "SHIPPER" }, title: { fr: "Expédier du fret", en: "Ship freight" }, desc: { fr: "Publie ton lot, reçois des offres transporteurs.", en: "Post your load, get carrier offers." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "TRANSPORTEUR", en: "CARRIER" }, title: { fr: "Trouver du fret", en: "Find freight" }, desc: { fr: "Remplis tes retours à vide, optimise tes tournées.", en: "Fill empty returns, optimize routes." } },
    ],
    listTitle: { fr: "BOURSE DE FRET", en: "FREIGHT EXCHANGE" },
    items: [
      { name: { fr: "Palettes · Paris → Marseille", en: "Pallets · Paris → Marseille" }, meta: { fr: "12 t · 780 €", en: "12t · €780" }, price: 780, cta: { fr: "Proposer", en: "Bid" } },
      { name: { fr: "Retour à vide · Lyon → Paris", en: "Empty return · Lyon → Paris" }, meta: { fr: "Optimisé Lia · -40%", en: "Lia-optimized · -40%" }, price: 420, cta: { fr: "Accepter", en: "Accept" } },
      { name: { fr: "Conteneur · international", en: "Container · international" }, meta: { fr: "Multimodal · sur devis", en: "Multimodal · quote" }, price: 0, cta: { fr: "Demander", en: "Request" } },
    ],
  },
  sanitaire: {
    fr: "Transport sanitaire", en: "Medical transport", code: "TRANSPORT SANITAIRE", icon: "shield", accent: "#E11D48",
    h1: { fr: "L'urgence,", en: "Urgency," }, h2: { fr: "et le soin.", en: "and care." },
    sub: { fr: "Ambulances, VSL et taxis conventionnés pour transport médical. Réservation, prise en charge sécu, chauffeurs diplômés, suivi en direct.", en: "Ambulances, medical cars and approved taxis for health transport. Booking, insurance coverage, certified drivers, live tracking." },
    stats: [["Conventionné", { fr: "SÉCU", en: "COVERED" }], ["Diplômés", { fr: "CHAUFFEURS", en: "DRIVERS" }], ["24/7", { fr: "URGENCE", en: "EMERGENCY" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "PATIENT / SOIGNANT", en: "PATIENT / CARER" }, title: { fr: "Réserver un transport", en: "Book transport" }, desc: { fr: "VSL, ambulance ou taxi conventionné, pris en charge.", en: "Medical car, ambulance or approved taxi, covered." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "SOCIÉTÉ AMBULANCE", en: "AMBULANCE CO." }, title: { fr: "Gérer mes missions", en: "Manage missions" }, desc: { fr: "Missions, facturation sécu, planning équipage.", en: "Missions, insurance billing, crew planning." } },
    ],
    listTitle: { fr: "TRANSPORTS À VENIR", en: "UPCOMING" },
    items: [
      { name: { fr: "VSL · dialyse (récurrent)", en: "Medical car · dialysis (recurring)" }, meta: { fr: "Pris en charge à 100%", en: "100% covered" }, price: 0, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Ambulance · sortie hôpital", en: "Ambulance · hospital discharge" }, meta: { fr: "Sur prescription", en: "On prescription" }, price: 0, cta: { fr: "Demander", en: "Request" } },
      { name: { fr: "Taxi conventionné · RDV", en: "Approved taxi · appointment" }, meta: { fr: "Réservation simple", en: "Easy booking" }, price: 0, cta: { fr: "Réserver", en: "Book" } },
    ],
  },
  loisirs: {
    fr: "Loisirs & Camping-car", en: "Leisure & Camper", code: "LOISIRS & CAMPING-CAR", icon: "region", accent: "#0FB76B",
    h1: { fr: "L'évasion,", en: "Getaway," }, h2: { fr: "sur quatre roues.", en: "on four wheels." },
    sub: { fr: "Location de camping-cars, vans aménagés et caravanes entre particuliers et pros. Assurance voyage incluse, itinéraires Lia, aires partenaires.", en: "Rent campers, fitted vans and caravans, private or pro. Travel insurance included, Lia routes, partner sites." },
    stats: [["Van", { fr: "& CAMPING-CAR", en: "& CAMPER" }], ["Assur.", { fr: "VOYAGE", en: "TRAVEL" }], ["Aires", { fr: "PARTENAIRES", en: "PARTNER SITES" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "VOYAGEUR", en: "TRAVELER" }, title: { fr: "Louer pour partir", en: "Rent to roam" }, desc: { fr: "Van ou camping-car, assurance et itinéraire inclus.", en: "Van or camper, insurance and route included." } },
      { side: "pro", dark: true, icon: "auto", tag: { fr: "PROPRIÉTAIRE", en: "OWNER" }, title: { fr: "Louer mon véhicule", en: "Rent out mine" }, desc: { fr: "Mets ton van en location, revenus + escrow Wallet.", en: "List your van, income + Wallet escrow." } },
    ],
    listTitle: { fr: "À LOUER PRÈS DE TOI", en: "TO RENT NEAR YOU" },
    items: [
      { name: { fr: "Van aménagé · 4 places", en: "Fitted van · 4 berths" }, meta: { fr: "89 €/jour · particulier", en: "€89/day · private" }, price: 89, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Camping-car · famille", en: "Camper · family" }, meta: { fr: "139 €/jour · assurance incl.", en: "€139/day · insurance incl." }, price: 139, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Caravane · pro", en: "Caravan · pro" }, meta: { fr: "Dès 49 €/jour", en: "From €49/day" }, price: 49, cta: { fr: "Réserver", en: "Book" } },
    ],
  },
  engins: {
    fr: "Engins & BTP", en: "Machinery & Construction", code: "ENGINS & BTP", icon: "b2b", accent: "#FF5A1F",
    h1: { fr: "Chantier,", en: "Worksite," }, h2: { fr: "agricole, industrie.", en: "farm, industry." },
    sub: { fr: "Location d'engins de chantier, matériel agricole et industriel, avec ou sans opérateur. Formation CACES reliée, assurance pro, livraison sur site.", en: "Rent construction, farm and industrial machinery, with or without operator. Linked CACES training, pro insurance, on-site delivery." },
    stats: [["Avec/sans", { fr: "OPÉRATEUR", en: "OPERATOR" }], ["CACES", { fr: "FORMATION", en: "TRAINING" }], ["Sur site", { fr: "LIVRAISON", en: "DELIVERY" }]],
    doors: [
      { side: "client", icon: "b2b", tag: { fr: "CHANTIER / EXPLOITANT", en: "SITE / FARMER" }, title: { fr: "Louer un engin", en: "Rent machinery" }, desc: { fr: "Mini-pelle, tracteur, nacelle — livré sur site.", en: "Digger, tractor, lift — delivered on-site." } },
      { side: "pro", dark: true, icon: "auto", tag: { fr: "LOUEUR / PROPRIÉTAIRE", en: "RENTER / OWNER" }, title: { fr: "Louer mon parc", en: "Rent my fleet" }, desc: { fr: "Engins en location, opérateurs, escrow Wallet.", en: "Machinery for rent, operators, Wallet escrow." } },
    ],
    listTitle: { fr: "ENGINS DISPONIBLES", en: "AVAILABLE MACHINERY" },
    items: [
      { name: { fr: "Mini-pelle 2,5 t", en: "Mini digger 2.5t" }, meta: { fr: "180 €/jour · livré", en: "€180/day · delivered" }, price: 180, cta: { fr: "Louer", en: "Rent" } },
      { name: { fr: "Tracteur + opérateur", en: "Tractor + operator" }, meta: { fr: "Saison agricole · 45 €/h", en: "Farm season · €45/h" }, price: 45, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Nacelle élévatrice", en: "Aerial lift" }, meta: { fr: "CACES requis · formation dispo", en: "CACES required · training avail." }, price: 120, cta: { fr: "Louer", en: "Rent" } },
    ],
  },
  prevention: {
    fr: "Prévention & Stages", en: "Safety & Courses", code: "PRÉVENTION & STAGES", icon: "shield", accent: "#0FB76B",
    h1: { fr: "Conduire mieux,", en: "Drive better," }, h2: { fr: "récupérer ses points.", en: "recover your points." },
    sub: { fr: "Stages de récupération de points, sensibilisation sécurité routière, post-permis et remise à niveau. Centres agréés, suivi Lia, attestation en ligne.", en: "Points-recovery courses, road-safety awareness, post-licence and refreshers. Approved centers, Lia tracking, online certificate." },
    stats: [["Agréé", { fr: "CENTRES", en: "CENTERS" }], ["+4 pts", { fr: "RÉCUPÉRÉS", en: "RECOVERED" }], ["En ligne", { fr: "ATTESTATION", en: "CERTIFICATE" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "CONDUCTEUR", en: "DRIVER" }, title: { fr: "M'inscrire à un stage", en: "Join a course" }, desc: { fr: "Récupère des points ou révise, centre près de toi.", en: "Recover points or refresh, center near you." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "CENTRE AGRÉÉ", en: "APPROVED CENTER" }, title: { fr: "Organiser des stages", en: "Run courses" }, desc: { fr: "Publie tes sessions, gère inscriptions et attestations.", en: "List sessions, manage signups and certificates." } },
    ],
    listTitle: { fr: "STAGES À VENIR", en: "UPCOMING COURSES" },
    items: [
      { name: { fr: "Récupération de points (2 j)", en: "Points recovery (2 days)" }, meta: { fr: "+4 points · 230 €", en: "+4 points · €230" }, price: 230, cta: { fr: "S'inscrire", en: "Enroll" } },
      { name: { fr: "Post-permis jeune conducteur", en: "Young-driver post-licence" }, meta: { fr: "Réduit la période probatoire", en: "Cuts probation period" }, price: 90, cta: { fr: "S'inscrire", en: "Enroll" } },
      { name: { fr: "Sensibilisation entreprise", en: "Corporate awareness" }, meta: { fr: "Flotte · sur site", en: "Fleet · on-site" }, price: 0, cta: { fr: "Demander", en: "Request" } },
    ],
  },
  evenement: {
    fr: "Événementiel", en: "Events & Shuttles", code: "ÉVÉNEMENTIEL", icon: "covoit", accent: "#A78BFA",
    h1: { fr: "Mariages, congrès,", en: "Weddings, summits," }, h2: { fr: "festivals.", en: "festivals." },
    sub: { fr: "Navettes et transport de groupe pour événements : mariages, séminaires, festivals, sport. Voitures de prestige, bus, coordination logistique par Lia.", en: "Shuttles and group transport for events: weddings, seminars, festivals, sport. Prestige cars, buses, Lia logistics coordination." },
    stats: [["Groupe", { fr: "NAVETTES", en: "SHUTTLES" }], ["Prestige", { fr: "VÉHICULES", en: "VEHICLES" }], ["Lia", { fr: "COORDINATION", en: "COORDINATION" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "ORGANISATEUR", en: "ORGANIZER" }, title: { fr: "Organiser le transport", en: "Plan transport" }, desc: { fr: "Navettes invités, voiture des mariés, coordination.", en: "Guest shuttles, wedding car, coordination." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "PRESTATAIRE", en: "PROVIDER" }, title: { fr: "Proposer mes services", en: "Offer my services" }, desc: { fr: "Flotte événementielle, devis, contrats via Wallet.", en: "Event fleet, quotes, contracts via Wallet." } },
    ],
    listTitle: { fr: "PRESTATIONS", en: "SERVICES" },
    items: [
      { name: { fr: "Voiture de mariage + chauffeur", en: "Wedding car + driver" }, meta: { fr: "Demi-journée · 290 €", en: "Half-day · €290" }, price: 290, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Navettes festival · 50 pers.", en: "Festival shuttles · 50 pax" }, meta: { fr: "Groupe · sur devis", en: "Group · quote" }, price: 0, cta: { fr: "Demander", en: "Request" } },
      { name: { fr: "Transfert séminaire", en: "Seminar transfer" }, meta: { fr: "B2B · facturation Wallet", en: "B2B · Wallet billing" }, price: 0, cta: { fr: "Demander", en: "Request" } },
    ],
  },
  voiturier: {
    fr: "Voiturier & Gardiennage", en: "Valet & Storage", code: "VOITURIER & GARDIENNAGE", icon: "location", accent: "#6B7280",
    h1: { fr: "On gare,", en: "We park," }, h2: { fr: "on garde.", en: "we keep." },
    sub: { fr: "Voiturier à la demande, gardiennage et hivernage de véhicules, bateaux et camping-cars. Lieux sécurisés, assurance incluse, suivi photo.", en: "On-demand valet, storage and winterizing for cars, boats and campers. Secure sites, insurance included, photo tracking." },
    stats: [["Sécurisé", { fr: "LIEUX", en: "SITES" }], ["Assur.", { fr: "INCLUSE", en: "INCLUDED" }], ["Photo", { fr: "SUIVI", en: "TRACKING" }]],
    doors: [
      { side: "client", icon: "auto", tag: { fr: "PROPRIÉTAIRE", en: "OWNER" }, title: { fr: "Confier mon véhicule", en: "Drop my vehicle" }, desc: { fr: "Voiturier, garage ou hivernage longue durée.", en: "Valet, garage or long-term storage." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "GARDIEN / SITE", en: "KEEPER / SITE" }, title: { fr: "Proposer mes places", en: "List my spaces" }, desc: { fr: "Loue tes places de gardiennage, revenus Wallet.", en: "Rent storage spaces, Wallet income." } },
    ],
    listTitle: { fr: "OFFRES", en: "OFFERS" },
    items: [
      { name: { fr: "Voiturier · restaurant", en: "Valet · restaurant" }, meta: { fr: "À l'heure · 9 €", en: "Hourly · €9" }, price: 9, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Hivernage camping-car", en: "Camper winterizing" }, meta: { fr: "Box couvert · 89 €/mois", en: "Covered box · €89/mo" }, price: 89, cta: { fr: "Réserver", en: "Book" } },
      { name: { fr: "Gardiennage bateau", en: "Boat storage" }, meta: { fr: "Port sec · sur devis", en: "Dry dock · quote" }, price: 0, cta: { fr: "Demander", en: "Request" } },
    ],
  },
  connect: {
    fr: "Connectivité & Objets", en: "Connectivity & IoT", code: "CONNECTIVITÉ & OBJETS", icon: "bolt", accent: "#3B6FF8",
    h1: { fr: "Ton véhicule,", en: "Your vehicle," }, h2: { fr: "connecté.", en: "connected." },
    sub: { fr: "Boîtier connecté, traceur GPS antivol, SIM embarquée, diagnostic à distance. Le véhicule parle à l'écosystème — assurance au km, sécurité, alertes.", en: "Connected box, anti-theft GPS tracker, embedded SIM, remote diagnostics. The vehicle talks to the ecosystem — pay-per-km insurance, security, alerts." },
    stats: [["Antivol", { fr: "TRACEUR", en: "TRACKER" }], ["Au km", { fr: "ASSURANCE", en: "INSURANCE" }], ["Live", { fr: "DIAGNOSTIC", en: "DIAGNOSTICS" }]],
    doors: [
      { side: "client", icon: "auto", tag: { fr: "CONDUCTEUR", en: "DRIVER" }, title: { fr: "Connecter mon véhicule", en: "Connect my vehicle" }, desc: { fr: "Traceur, alertes vol, diagnostic, assurance au km.", en: "Tracker, theft alerts, diagnostics, pay-per-km." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "FLOTTE / INSTALLATEUR", en: "FLEET / INSTALLER" }, title: { fr: "Équiper ma flotte", en: "Equip my fleet" }, desc: { fr: "Boîtiers en lot, supervision temps réel, API.", en: "Bulk boxes, real-time supervision, API." } },
    ],
    listTitle: { fr: "ÉQUIPEMENTS", en: "DEVICES" },
    items: [
      { name: { fr: "Traceur GPS antivol", en: "Anti-theft GPS tracker" }, meta: { fr: "9 €/mois · alerte vol", en: "€9/mo · theft alert" }, price: 9, cta: { fr: "Activer", en: "Activate" } },
      { name: { fr: "Boîtier assurance au km", en: "Pay-per-km box" }, meta: { fr: "Relié Assurance · -25%", en: "Linked Insurance · -25%" }, price: 0, cta: { fr: "Souscrire", en: "Subscribe" } },
      { name: { fr: "Diagnostic à distance", en: "Remote diagnostics" }, meta: { fr: "Alerte panne · relié Entretien", en: "Fault alert · linked Service" }, price: 5, cta: { fr: "Activer", en: "Activate" } },
    ],
  },
  equipement: {
    fr: "Équipement & Accessoires", en: "Gear & Accessories", code: "ÉQUIPEMENT & ACCESSOIRES", icon: "auto", accent: "#A78BFA",
    h1: { fr: "Tout l'équipement,", en: "All the gear," }, h2: { fr: "au bon prix.", en: "fair price." },
    sub: { fr: "Casques, sièges enfants, pneus, coffres de toit, équipement moto et accessoires. Conseil Lia selon ton véhicule, livraison ou pose en garage partenaire.", en: "Helmets, child seats, tyres, roof boxes, motorcycle gear and accessories. Lia advice for your vehicle, delivery or fitting at a partner garage." },
    stats: [["Conseil", { fr: "LIA", en: "LIA" }], ["Pose", { fr: "PARTENAIRE", en: "PARTNER" }], ["Escrow", { fr: "PAIEMENT", en: "PAYMENT" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "ACHETEUR", en: "BUYER" }, title: { fr: "M'équiper", en: "Gear up" }, desc: { fr: "Casque, siège, pneus — conseillé selon ton véhicule.", en: "Helmet, seat, tyres — advised for your vehicle." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "VENDEUR / ÉQUIPEMENTIER", en: "SELLER / SUPPLIER" }, title: { fr: "Vendre mes produits", en: "Sell my products" }, desc: { fr: "Boutique d'accessoires, pose, paiement Wallet.", en: "Accessory shop, fitting, Wallet payment." } },
    ],
    listTitle: { fr: "RAYONS", en: "DEPARTMENTS" },
    items: [
      { name: { fr: "Pneus hiver (jeu de 4)", en: "Winter tyres (set of 4)" }, meta: { fr: "Posés · dès 320 €", en: "Fitted · from €320" }, price: 320, cta: { fr: "Commander", en: "Order" } },
      { name: { fr: "Siège enfant homologué", en: "Approved child seat" }, meta: { fr: "Conseil Lia · 89 €", en: "Lia advice · €89" }, price: 89, cta: { fr: "Acheter", en: "Buy" } },
      { name: { fr: "Casque moto + intercom", en: "Helmet + intercom" }, meta: { fr: "Relié Marché Moto", en: "Linked Moto Market" }, price: 149, cta: { fr: "Acheter", en: "Buy" } },
    ],
  },
  transit: {
    fr: "Transit urbain", en: "Urban transit", code: "TRANSIT URBAIN", icon: "region", accent: "#0FB76B",
    h1: { fr: "Métro, tram,", en: "Metro, tram," }, h2: { fr: "un seul titre.", en: "one ticket." },
    sub: { fr: "Métro, tram et transports urbains : titre unique billettique, plan en direct, et combinaison avec vélo, covoit et parking-relais. Inclus au Pass Mobilité.", en: "Metro, tram and urban transit: single ticket, live maps, combined with bike, carpool and park-and-ride. Included in the Mobility Pass." },
    stats: [["1 titre", { fr: "MULTIMODAL", en: "MULTIMODAL" }], ["Direct", { fr: "PLAN", en: "MAP" }], ["Pass", { fr: "INCLUS", en: "INCLUDED" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "VOYAGEUR", en: "RIDER" }, title: { fr: "Acheter un titre", en: "Buy a ticket" }, desc: { fr: "Métro/tram + vélo + parking-relais, un seul pass.", en: "Metro/tram + bike + park-and-ride, one pass." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "RÉSEAU / VILLE", en: "NETWORK / CITY" }, title: { fr: "Intégrer mon réseau", en: "Integrate my network" }, desc: { fr: "Billettique, plans, données ouverts au pont.", en: "Ticketing, maps, data opened to the bridge." } },
    ],
    listTitle: { fr: "AUTOUR DE TOI", en: "AROUND YOU" },
    items: [
      { name: { fr: "Ticket unitaire", en: "Single ticket" }, meta: { fr: "Métro/tram/bus · 1,90 €", en: "Metro/tram/bus · €1.90" }, price: 1.9, cta: { fr: "Acheter", en: "Buy" } },
      { name: { fr: "Forfait journée multimodal", en: "Multimodal day pass" }, meta: { fr: "Illimité · 8,50 €", en: "Unlimited · €8.50" }, price: 8.5, cta: { fr: "Acheter", en: "Buy" } },
      { name: { fr: "Parking-relais + transit", en: "Park-and-ride + transit" }, meta: { fr: "Combiné · -40%", en: "Combined · -40%" }, price: 6, cta: { fr: "Réserver", en: "Book" } },
    ],
  },
  verte: {
    fr: "Mobilité verte & Carbone", en: "Green & Carbon", code: "MOBILITÉ VERTE & CARBONE", icon: "bolt", accent: "#0FB76B",
    h1: { fr: "Rouler,", en: "Drive," }, h2: { fr: "compenser, gagner.", en: "offset, earn." },
    sub: { fr: "Suivi carbone de tes trajets, compensation CO2, bonus écologique et prime à la conversion. Récompenses fidélité pour la mobilité douce et partagée.", en: "Carbon tracking of your trips, CO2 offset, eco-bonus and conversion grant. Loyalty rewards for soft and shared mobility." },
    stats: [["CO2", { fr: "SUIVI", en: "TRACKED" }], ["Bonus", { fr: "ÉCOLOGIQUE", en: "ECO-GRANT" }], ["Récompenses", { fr: "FIDÉLITÉ", en: "REWARDS" }]],
    doors: [
      { side: "client", icon: "eleve", tag: { fr: "PARTICULIER", en: "PERSONAL" }, title: { fr: "Suivre mon impact", en: "Track my impact" }, desc: { fr: "Empreinte CO2, compensation, bonus conversion.", en: "CO2 footprint, offset, conversion grant." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "ENTREPRISE", en: "BUSINESS" }, title: { fr: "Bilan carbone flotte", en: "Fleet carbon report" }, desc: { fr: "Reporting RSE, crédits carbone, plan de verdissement.", en: "ESG reporting, carbon credits, greening plan." } },
    ],
    listTitle: { fr: "ACTIONS", en: "ACTIONS" },
    items: [
      { name: { fr: "Compenser mes trajets du mois", en: "Offset my month's trips" }, meta: { fr: "1,2 t CO2 · 14 €", en: "1.2t CO2 · €14" }, price: 14, cta: { fr: "Compenser", en: "Offset" } },
      { name: { fr: "Prime à la conversion élec.", en: "EV conversion grant" }, meta: { fr: "Jusqu'à 4 000 € · éligibilité Lia", en: "Up to €4,000 · Lia check" }, price: 0, cta: { fr: "Vérifier", en: "Check" } },
      { name: { fr: "Récompense mobilité douce", en: "Soft-mobility reward" }, meta: { fr: "Points fidélité · Wallet", en: "Loyalty points · Wallet" }, price: 0, cta: { fr: "Voir", en: "View" } },
    ],
  },
  data: {
    fr: "Data & Infrastructure", en: "Data & Infrastructure", code: "DATA & INFRASTRUCTURE", icon: "b2b", accent: "#6B7280",
    h1: { fr: "La donnée", en: "The data" }, h2: { fr: "qui fait rouler.", en: "that keeps it moving." },
    sub: { fr: "Pour villes, assureurs et opérateurs : cartographie temps réel, installation de bornes, API mobilité et tableaux smart-city. La couche invisible de l'écosystème.", en: "For cities, insurers and operators: real-time mapping, charger install, mobility API and smart-city dashboards. The ecosystem's invisible layer." },
    stats: [["API", { fr: "MOBILITÉ", en: "MOBILITY" }], ["Bornes", { fr: "INSTALLATION", en: "INSTALL" }], ["Smart", { fr: "CITY", en: "CITY" }]],
    doors: [
      { side: "client", icon: "b2b", tag: { fr: "COLLECTIVITÉ", en: "CITY / GOV" }, title: { fr: "Piloter ma ville", en: "Run my city" }, desc: { fr: "Flux temps réel, smart-city, planification mobilité.", en: "Real-time flows, smart-city, mobility planning." } },
      { side: "pro", dark: true, icon: "b2b", tag: { fr: "OPÉRATEUR / ASSUREUR", en: "OPERATOR / INSURER" }, title: { fr: "Brancher mes données", en: "Plug my data" }, desc: { fr: "API mobilité, scoring conduite, infrastructure.", en: "Mobility API, driving score, infrastructure." } },
    ],
    listTitle: { fr: "SERVICES DATA", en: "DATA SERVICES" },
    items: [
      { name: { fr: "API mobilité GUIDKO", en: "GUIDKO mobility API" }, meta: { fr: "Flux temps réel · sur devis", en: "Real-time feed · quote" }, price: 0, cta: { fr: "Demander", en: "Request" } },
      { name: { fr: "Installation de bornes", en: "Charger installation" }, meta: { fr: "Domicile & entreprise", en: "Home & business" }, price: 0, cta: { fr: "Devis", en: "Quote" } },
      { name: { fr: "Tableau smart-city", en: "Smart-city dashboard" }, meta: { fr: "Flux, zones, prévision", en: "Flows, zones, forecast" }, price: 0, cta: { fr: "Demander", en: "Request" } },
    ],
  },
};

function BranchPage({ branchKey, navigate }) {
  const C = GK.colors;
  const { t, lang } = useI18n();
  const toast = useToast();
  const d = BRANCH_DATA[branchKey];
  const money = (v) => window.GKmoney ? window.GKmoney(v) : v + " €";
  const [view, setView] = React.useState("landing");
  const [side, setSide] = React.useState("client");
  if (!d) return null;

  if (view === "landing") {
    const door = (o) => (
      <div onClick={() => { setSide(o.side); setView("app"); }} style={{ display: "flex", alignItems: "center", gap: 16, padding: "20px 22px", borderRadius: 16, cursor: "pointer", background: o.dark ? C.ink : "#fff", color: o.dark ? "#fff" : C.ink, border: `1px solid ${o.dark ? C.ink : C.softLine}`, transition: "transform .14s, box-shadow .14s" }}
        onMouseEnter={e => { e.currentTarget.style.transform = "translateY(-3px)"; e.currentTarget.style.boxShadow = "0 18px 44px rgba(11,15,31,.12)"; }}
        onMouseLeave={e => { e.currentTarget.style.transform = "none"; e.currentTarget.style.boxShadow = "none"; }}>
        <div style={{ width: 50, height: 50, borderRadius: 14, background: o.dark ? `${d.accent}33` : C.cream, color: o.dark ? "#fff" : C.ink, display: "grid", placeItems: "center", flexShrink: 0 }}>{window.GKIcon && window.hasGKIcon(o.icon) ? <GKIcon name={o.icon} size={23} /> : "◆"}</div>
        <div style={{ flex: 1, minWidth: 0 }}>
          <span style={{ display: "inline-block", fontFamily: "'Geist Mono', monospace", fontSize: 9.5, letterSpacing: "0.14em", color: o.dark ? d.accent : C.sky, marginBottom: 5 }}>{o.tag[lang] || o.tag.fr}</span>
          <div style={{ fontFamily: "'Instrument Serif', serif", fontSize: 23, fontWeight: 400, lineHeight: 1, marginBottom: 6 }}>{o.title[lang] || o.title.fr}</div>
          <p style={{ fontSize: 12.5, color: o.dark ? "#9098B5" : C.slate, lineHeight: 1.45 }}>{o.desc[lang] || o.desc.fr}</p>
        </div>
        <span style={{ color: o.dark ? d.accent : C.slate, fontSize: 20, flexShrink: 0 }}>→</span>
      </div>
    );
    return (
      <div className="gk-scroll" style={{ height: "100%", overflowY: "auto", display: "grid", gridTemplateColumns: "1fr 1fr", background: C.paper }}>
        <div style={{ background: C.ink, color: "#fff", padding: "44px 40px", display: "flex", flexDirection: "column", justifyContent: "center", position: "relative", overflow: "hidden" }}>
          <div style={{ position: "absolute", right: -60, bottom: -50, opacity: 0.07, color: d.accent }}>{window.GKIcon && window.hasGKIcon(d.icon) ? <GKIcon name={d.icon} size={260} /> : null}</div>
          <div style={{ display: "inline-flex", alignItems: "center", gap: 10, marginBottom: 22 }}>
            <div style={{ width: 38, height: 38, borderRadius: 11, background: d.accent, display: "grid", placeItems: "center" }}>{window.GKIcon && window.hasGKIcon(d.icon) ? <GKIcon name={d.icon} size={19} /> : "◆"}</div>
            <span style={{ fontWeight: 800, letterSpacing: "0.04em" }}>GUIDKO</span>
            <span style={{ fontFamily: "'Geist Mono', monospace", fontSize: 9, color: d.accent, letterSpacing: "0.18em", paddingLeft: 10, borderLeft: "1px solid #1F2542" }}>{d.code}</span>
          </div>
          <h1 style={{ fontFamily: "'Instrument Serif', serif", fontSize: 44, fontWeight: 400, lineHeight: 1.02, letterSpacing: "-0.025em", margin: "0 0 16px" }}>
            {d.h1[lang] || d.h1.fr} <span style={{ fontStyle: "italic", color: d.accent }}>{d.h2[lang] || d.h2.fr}</span>
          </h1>
          <p style={{ fontSize: 15, color: "#C9CEE3", lineHeight: 1.55, maxWidth: 390 }}>{d.sub[lang] || d.sub.fr}</p>
          <div style={{ display: "flex", gap: 26, marginTop: 30 }}>
            {d.stats.map(([v, l]) => (
              <div key={v}><div style={{ fontFamily: "'Instrument Serif', serif", fontSize: 24, lineHeight: 1 }}>{v}</div><div style={{ fontFamily: "'Geist Mono', monospace", fontSize: 8, color: "#7A82A8", letterSpacing: "0.14em", marginTop: 5 }}>{l[lang] || l.fr}</div></div>
            ))}
          </div>
        </div>
        <div style={{ padding: "44px 40px", display: "flex", flexDirection: "column", justifyContent: "center", gap: 14 }}>
          <div style={{ fontFamily: "'Geist Mono', monospace", fontSize: 10, letterSpacing: "0.16em", color: C.slate, marginBottom: 2 }}>{t("CHOISIS TON ENTRÉE", "CHOOSE YOUR ENTRY")}</div>
          {d.doors.map((o, i) => <React.Fragment key={i}>{door(o)}</React.Fragment>)}
          <div style={{ marginTop: 6, padding: 13, background: "#FBF8EE", borderRadius: 10, borderLeft: `3px solid ${d.accent}`, fontSize: 12, color: C.slate, lineHeight: 1.5 }}>
            {t("Branche reliée au socle GUIDKO : Wallet, Confiance/KYC, GUIDAROUTE et Assurance.", "Branch linked to the GUIDKO core: Wallet, Trust/KYC, GUIDAROUTE and Insurance.")}
          </div>
        </div>
      </div>
    );
  }

  return (
    <>
      <Topbar subtitle={d.code + (side === "pro" ? t(" · PRO", " · PRO") : t(" · CLIENT", " · CLIENT"))} title={d[lang] || d.fr} search={false}
        actions={<><Button kind="ghost" size="sm" onClick={() => setView("landing")}>{t("Changer d'entrée", "Switch entry")}</Button><Button kind="primary" onClick={() => navigate && navigate(`/${branchKey}/wallet`)}>{t("Payer via Wallet", "Pay via Wallet")}</Button></>}/>
      <PageBody>
        <Card dark style={{ padding: 22, marginBottom: 16, display: "flex", alignItems: "center", gap: 16 }}>
          <div style={{ width: 50, height: 50, borderRadius: 14, background: d.accent, display: "grid", placeItems: "center", color: "#fff", flexShrink: 0 }}>{window.GKIcon && window.hasGKIcon(d.icon) ? <GKIcon name={d.icon} size={24} /> : "◆"}</div>
          <div>
            <div style={{ fontFamily: "'Instrument Serif', serif", fontSize: 26, lineHeight: 1 }}>{d.h1[lang] || d.h1.fr} {d.h2[lang] || d.h2.fr}</div>
            <div style={{ fontSize: 13, color: "#9098B5", marginTop: 6, maxWidth: 520, lineHeight: 1.5 }}>{d.sub[lang] || d.sub.fr}</div>
          </div>
        </Card>
        <Label style={{ marginBottom: 12 }}>{d.listTitle[lang] || d.listTitle.fr}</Label>
        <div style={{ display: "grid", gridTemplateColumns: "repeat(auto-fill, minmax(280px, 1fr))", gap: 12 }}>
          {d.items.map((it, i) => (
            <Card key={i} hover style={{ padding: 18 }}>
              <div style={{ fontSize: 14.5, fontWeight: 600 }}>{it.name[lang] || it.name.fr}</div>
              <div style={{ fontSize: 12.5, color: C.slate, marginTop: 4 }}>{it.meta[lang] || it.meta.fr}</div>
              <div style={{ display: "flex", alignItems: "center", justifyContent: "space-between", marginTop: 14, paddingTop: 14, borderTop: `1px solid ${C.softLine}` }}>
                <span style={{ fontFamily: "'Instrument Serif', serif", fontSize: 22 }}>{it.price === 0 ? t("Sur devis", "Quote") : money(it.price)}</span>
                <Button size="sm" kind="primary" onClick={() => toast.push(t("Demande envoyée — suivi via Wallet & messages.", "Request sent — tracked via Wallet & messages."), "signal")}>{it.cta[lang] || it.cta.fr}</Button>
              </div>
            </Card>
          ))}
        </div>
        <div style={{ marginTop: 16, padding: 14, background: "#FBF8EE", borderRadius: 10, borderLeft: `3px solid ${d.accent}`, fontSize: 12.5, lineHeight: 1.5 }}>
          {t("Tout est relié : paiement et escrow via Wallet, itinéraires via GUIDAROUTE, couverture via Assurance, et Lia t'accompagne à chaque étape.", "Everything is linked: payment & escrow via Wallet, routes via GUIDAROUTE, cover via Insurance, and Lia guides each step.")}
        </div>
      </PageBody>
    </>
  );
}

window.BranchPage = BranchPage;
window.BRANCH_DATA = BRANCH_DATA;
