<?xml version="1.0" encoding="UTF-8"?>
<!--
  Afrodita Spa — mapa del sitio.

  Aquí solo van DOCUMENTOS DISTINTOS, no rutas que respondan 200.

  La distinción importa porque casi todo el sitio es una sola página. El rewrite
  `**` de firebase.json devuelve la portada para cualquier ruta, y el mapa
  `routes` de index.html resuelve /servicios, /bogota, /boston, /sedes,
  /nosotras, /testimonios y /contacto con un scrollIntoView sobre una sección de
  esa misma portada. Renderizan el cuerpo entero: las mismas secciones, las
  mismas ~911 palabras. Solo cambia el <title>.

  Estaban las siete listadas aquí. Eso le presentaba a Google siete copias de un
  único documento y competía consigo mismo, además de contradecir a la canónica
  del HTML servido, que siempre ha dicho `/`. Ahora son anclas declaradas en
  `window.AFRODITA_SEO.anclas` y su canónica apunta a la portada; siguen
  funcionando como enlaces, pero no se ofrecen como páginas.

  Para que una de ellas vuelva aquí tiene que tener cuerpo propio: su propio
  encabezado y su propio texto, no un desplazamiento. Y tenerlo EN EL HTML
  SERVIDO. Eso último costó una segunda lección: /trabaja-con-nosotras cumplía
  lo primero —encabezado, descripción y formulario, todos suyos— pero los pinta
  `assets/routes.js` al cargar, así que Googlebot solo veía index.html con su
  canónica `/`. Estuvo listada aquí y acabó igual que las anclas, como duplicada
  de la portada. Si el cuerpo lo pone JavaScript, la ruta no es una página para
  este mapa.

  La otra pregunta antes de añadir nada: ¿se lee SIN cuenta? /diagnostico tenía
  fichero propio y contenido propio, y aun así era el portal de clienta tras un
  redirect a /ingresar. Fichero propio no significa público.

  Quedan fuera, como antes, las rutas de cuenta y compra (ver robots.txt).
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">

  <!-- La vitrina. Hoy es, ella sola, casi todo el sitio indexable. -->
  <url>
    <loc>https://afrodita-spa.com/</loc>
    <lastmod>2026-08-02</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <!-- Tratamientos. Estas SÍ se ganaron estar aquí: documentos estáticos con su
       propio <h1>, su precio, su protocolo, sus preguntas y su marcado, todo en
       el HTML servido y sin depender de JavaScript. Se generan con
       tools/generar-tratamientos.mjs; si se añade o se quita uno, hay que
       tocarlo también aquí, que el generador no edita este fichero. -->
  <url>
    <loc>https://afrodita-spa.com/tratamientos</loc>
    <lastmod>2026-08-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://afrodita-spa.com/tratamientos/limpieza-facial-profunda</loc>
    <lastmod>2026-08-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://afrodita-spa.com/tratamientos/rejuvenecimiento-facial</loc>
    <lastmod>2026-08-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://afrodita-spa.com/tratamientos/manchas-y-melasma</loc>
    <lastmod>2026-08-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://afrodita-spa.com/tratamientos/acne</loc>
    <lastmod>2026-08-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>

  <url>
    <loc>https://afrodita-spa.com/tratamientos/aclaramiento-de-axilas</loc>
    <lastmod>2026-08-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <!-- /diagnostico estuvo aquí, descrita como «documento aparte de verdad».
       Lo es —diagnostico.html es un fichero propio— pero es la pantalla de
       diagnósticos del PORTAL DE CLIENTA: `assets/diagnostico.js` manda a
       /ingresar a quien no traiga sesión, y /ingresar está en Disallow. Lo que
       Google habría rastreado es una redirección a una puerta cerrada.
       Retirada el 2026-09-20, ya con `noindex` en la propia página. Tener el
       cuerpo en su propio fichero NO la hace pública; eso lo decide si se
       puede leer sin cuenta. -->

  <!-- Ruta standalone: el cuerpo se reduce a la sección de reserva, así que sí
       es una vista distinta de la portada. -->
  <url>
    <loc>https://afrodita-spa.com/reservar</loc>
    <lastmod>2026-08-02</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>

  <!-- /trabaja-con-nosotras estuvo aquí por «tener cuerpo propio»: kicker,
       título, descripción y formulario de postulación. Los tiene, pero los
       pinta `assets/routes.js` DESPUÉS de cargar. El documento que Firebase
       sirve en esa ruta es index.html tal cual, y su HTML crudo declara
       `<link rel="canonical" href="https://afrodita-spa.com/">`.

       Google canonicaliza en la pasada previa al render, así que leía `/` y
       descartaba la ruta: «Duplicada: Google ha elegido una versión canónica
       diferente a la del usuario» (detectada el 2026-09-15). Este mapa afirmaba
       una cosa y el HTML servido la contraria. Retirada el 2026-09-20 y su
       canónica alineada con la portada en index.html.

       Para que vuelva necesita cuerpo EN EL HTML SERVIDO, como tratamientos/:
       un documento propio con su <h1> y su texto sin depender de JavaScript.
       Que el cuerpo lo pinte el enrutador no basta; es la misma trampa que las
       anclas, un paso más tarde. -->

  <!-- revista.html. Documento propio, pero su contenido lo carga JS y sin
       promociones vigentes se queda en "Cargando promociones…": 24 palabras.
       Se mantiene porque es una página real, no un ancla; si se comprueba que
       pasa temporadas vacía, sacarla de aquí antes de que Google la marque
       como contenido insuficiente. -->
  <url>
    <loc>https://afrodita-spa.com/promociones</loc>
    <lastmod>2026-08-02</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.5</priority>
  </url>

</urlset>
