<?xml version="1.0" encoding="UTF-8"?>
<!--
  LES SURFACES PUBLIQUES DE LA VITRINE, ET ELLES SEULES.

  UNE SEULE PAGE DE VENTE DEPUIS LE 2026-09-08: le hall `/`, en DEUX LANGUES
  (le chemin nu est français, le préfixe `/en` est anglais). Plus `/legal`,
  qui n'existe qu'en anglais. Les trois portes `/meal-prep`, `/couples` et
  `/families` sont RETIRÉES ce jour-là, avec leurs six entrées; `vercel.json`
  redirige leurs URL vers le hall en permanent.

  ⚠️ CHAQUE ENTRÉE DÉCLARE SES ALTERNATIVES (`xhtml:link`), Y COMPRIS
  ELLE-MÊME. C'est la règle de `hreflang` la plus souvent ratée: un jeu
  d'alternatives doit être RÉCIPROQUE et se contenir. Une page française qui
  nommerait l'anglaise sans que l'anglaise la nomme en retour fait ignorer la
  paire entière par Google. Les mêmes balises sont posées dans le `<head>` par
  `components/SEO.tsx`; les deux doivent dire la même chose.

  ⚠️ `x-default` POINTE SUR L'ANGLAIS, cohérent avec `DEFAULT_UI_LOCALE` de
  `i18n/catalog.ts`. C'est la page servie à qui ne correspond à aucune des deux
  langues.

  ⚠️ TROIS ENTRÉES MORTES ONT ÉTÉ RETIRÉES le 2026-08-12: `/le-plan`,
  `/l-architecte` et `/formules`. Les deux dernières ne correspondaient à AUCUNE
  route de `App.tsx` — elles annonçaient à Google des pages 404 depuis la
  suppression du produit grand public. `/le-plan` existe encore comme route
  legacy mais n'est plus une surface qu'on veut indexer, et se déclare
  `noindex` depuis le 2026-09-03.

  ⚠️ NE PAS AJOUTER ICI les portes fonctionnelles (`/start`, `/join`,
  `/join-household`, `/auth`): ce ne sont pas des pages de vente, et `/join`
  porte un jeton. `/start` reste indexable — c'est la page qu'un curieux doit
  pouvoir trouver, et la page d'arrivée des annonces — mais un sitemap déclare
  ce qu'on VEND, pas chaque porte du produit. `/legal` reste, c'est une
  crédential qu'un vérificateur cherche.

  ⚠️ LANCEMENT B2C — LES QUATRE URL PROFESSIONNELLES SONT RETIRÉES:
  `/pro`, `/coaches`, `/gyms` et `/communities`. Leurs ROUTES sont démontées
  dans `App.tsx` sous `VITE_B2C_ONLY` (voir `src/security/proSurface.ts`), et
  les pages elles-mêmes sont intactes dans le dépôt — le jour où le monde pro
  rouvre, ce fichier reprend ses quatre entrées.

  ⚠️ CE FICHIER EST STATIQUE ET NE CONNAÎT AUCUN DRAPEAU. Si `VITE_B2C_ONLY`
  est levé sans que ces quatre lignes soient remises, le sitemap annonce à
  Google quatre pages que le routeur ne sert plus: quatre 404 déguisées en 200,
  puisqu'une SPA rend `index.html` sur tout. `NotFoundPage` se déclare
  `noindex` précisément pour ce cas. ET L'INVERSE EST VRAI DEPUIS LE LANCEMENT:
  `isProSurfaceHidden()` retombe sur `false` quand la variable n'est pas posée,
  donc un déploiement qui l'oublie REMET les quatre pages en ligne sans qu'une
  seule ligne de ce fichier les déclare.
-->
<urlset
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
  xmlns:xhtml="http://www.w3.org/1999/xhtml">

  <!-- ── LE HALL ─────────────────────────────────────────────────────────── -->
  <url>
    <loc>https://sophia-coach.ai/</loc>
    <xhtml:link rel="alternate" hreflang="fr-FR" href="https://sophia-coach.ai/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://sophia-coach.ai/en"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://sophia-coach.ai/en"/>
    <lastmod>2026-09-08</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://sophia-coach.ai/en</loc>
    <xhtml:link rel="alternate" hreflang="fr-FR" href="https://sophia-coach.ai/"/>
    <xhtml:link rel="alternate" hreflang="en" href="https://sophia-coach.ai/en"/>
    <xhtml:link rel="alternate" hreflang="x-default" href="https://sophia-coach.ai/en"/>
    <lastmod>2026-09-08</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <!-- ── LA CRÉDENTIAL ───────────────────────────────────────────────────────
       PAS D'ALTERNATIVE DE LANGUE, et ce n'est pas un oubli: le corps de
       `Legal.tsx` est mille lignes d'anglais EN DUR, hors de tout `t()`. La
       page n'est pas déclarée traduite dans `i18n/catalog.ts`, et déclarer ici
       une variante française promettrait une page qui n'existe pas. -->
  <url>
    <loc>https://sophia-coach.ai/legal</loc>
    <lastmod>2026-03-10</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
