<?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. Estuvo listada aquí y Google la agrupó con la
  portada.

  Ojo con la explicación fácil, que estuvo escrita aquí y es FALSA: no es que
  Googlebot no renderice. Sí renderiza. La inspección de URL del 2026-09-20 dice
  que en /trabaja-con-nosotras leyó la canónica puesta por JavaScript —«declarada
  por el usuario: ella misma»— y aun así eligió `/`. Y en /reservar, que es otra
  ruta de routes.js con el mismo montaje, leyó la suya y LA HONRÓ. Misma técnica,
  decisiones opuestas.

  La conclusión prudente no es un mecanismo, es un riesgo medido: cuando lo único
  que distingue a una ruta llega por JavaScript, que se indexe o no lo decide
  Google y puede caer de cualquier lado. Las de tratamientos/, que traen su
  cuerpo en el HTML servido, están indexadas las cinco. Por eso este mapa sólo
  promete documentos servidos.

  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.

       NO TOCAR aunque se parezca a /trabaja-con-nosotras. Se parece: es ruta de
       routes.js y declara su canónica por JavaScript. Pero Google la HONRA.
       Medido el 2026-09-20 en la inspección de URL —«seleccionada por Google
       como canónica: la URL inspeccionada»— y en el informe de rendimiento:
       indexada, 101 impresiones en 48 días, la segunda del sitio tras la
       portada. Mandarla a `sinDocumentoPropio` tiraría todo eso a la basura.

       Lo suyo es otro problema y sigue abierto: 101 impresiones y CERO clics.
       Sale en los resultados y nadie entra. Eso es título y descripción, no
       canónica. -->
  <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, y el documento que Firebase
       sirve en esa ruta es index.html tal cual.

       Google la marcó «Duplicada: ha elegido una versión canónica diferente a
       la del usuario» (2026-09-15) y eligió `/`. La inspección de URL confirma
       que SÍ leyó la canónica que le pone el JavaScript: la leyó y la descartó.
       Retirada el 2026-09-20, con su canónica alineada con la portada en
       index.html —que es ponerse de acuerdo con una decisión ya tomada, no
       arreglarla—.

       Para volver necesita cuerpo EN EL HTML SERVIDO, como tratamientos/: un
       documento propio con su <h1> y su texto sin depender de JavaScript. -->

  <!-- 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>
