<?xml version="1.0" encoding="UTF-8"?>
<!--
  Sitemap fuer Neural Perfection — listet alle indexierbaren URLs.
  DE-only Launch (2026-05): keine hreflang-Annotationen (Sprach-Switch ist
  via FEATURES.langSwitchEnabled deaktiviert). Wenn EN reaktiviert wird,
  die <xhtml:link rel="alternate" hreflang=...> Tags wieder hinzufuegen.
  Private/personalisierte Pages (Drill-Sessions, Billing, Lobby-mit-Code) sind
  via meta robots noindex gegated und werden hier NICHT gelistet.
-->
<!--
  lastmod = Datum der letzten Aenderung an der AUSLIEFERUNG, nicht das
  Datum des Deploys und schon gar nicht „heute".

  Stand 2026-08-30: an dem Tag lief die letzte Aenderung am Vorrenderer
  ein. Davor am 29.08. der Portal-Fix (verwaistes DOM aus dem body), am
  27.08. der JSON-LD-Umbau und die Sicherheitsheader. Alle acht Adressen
  sind davon betroffen, weil sie durch denselben Vorrenderer laufen —
  deshalb steht ueberall dasselbe Datum, und das ist keine Nachlaessigkeit.

  Wer hier auf das Tagesdatum stellt, ohne dass sich etwas geaendert hat,
  verbrennt ein Vertrauenssignal: Google gewichtet lastmod danach, ob es
  sich als verlaesslich erwiesen hat.
-->
<urlset
  xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
>
  <!-- Hauptlanding: Type Challenge (Welcome + Game).

       Die Wurzel `/` fehlt hier — und die Begruendung, die bis zum
       2026-08-25 an dieser Stelle stand, war der Fehler selbst. Sie lautete
       sinngemaess: die Wurzel sei nicht gelistet, weil sie per React-Router
       auf /type-challenge weiterleite; Google habe das als „Seite mit
       Weiterleitung" und „Alternative Seite mit kanonischem Tag" gemeldet,
       und beides sei aufgeloest, indem nur die kanonische Ziel-Adresse
       gelistet werde.

       Aufgeloest war nichts. Search Console meldet am 2026-08-25 weiterhin
       3 Seiten indexiert und 16 nicht, und `/` steht unveraendert unter
       „Seite mit Weiterleitung", zuletzt gecrawlt am 15.08.2026. Die
       Adresse aus der Sitemap zu nehmen hat den Befund nicht behoben,
       sondern nur aus diesem Dokument entfernt — Google crawlt die Wurzel
       ohnehin.

       Die Ursache ist `src/App.tsx:2613`. Sie wird im Wurzel-Umbau behoben
       (`docs/design/wurzel-umbau.md`); mit Schritt S6 gehoert `/` hier
       hinein. -->
  <!-- Die Wurzel. Seit dem 2026-08-25 eine eigene Seite (Schritt S6 des
       Wurzel-Umbaus) — vorher leitete sie per JavaScript weiter und stand
       deshalb bewusst nicht hier. Hoechste Prioritaet: sie traegt den
       Markenbegriff und bekommt die meisten externen Verweise. -->
  <url>
    <loc>https://neural-perfection.com/</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <!-- Speed Test: SEO-Hub fuer "typing speed test" / "schreibgeschwindigkeit test" -->
  <url>
    <loc>https://neural-perfection.com/speed-test</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>

  <!-- Trainer-Hub: Haupt-Produkt mit 40 Lektionen + KI-Bewegungsanalyse -->
  <url>
    <loc>https://neural-perfection.com/learn</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>

  <!-- Challenge: Long-Tail SEO-Page ("wie funktioniert tipp challenge", "tier system erklaerung")
       Komplementaer zu /type-challenge (= Hub mit Mode-Picker), nicht Ersatz. Andere Keyword-Cluster. -->
  <url>
    <loc>https://neural-perfection.com/challenge</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>

  <!-- /pricing und /play sind hier NICHT gelistet.

       2026-08-22 (SEO-Audit): entfernt, weil beide Routen bei
       proSubscription: false sofort auf / weiterleiten und damit den Inhalt
       der Startseite unter eigener Adresse lieferten. Wieder aufnehmen,
       sobald Pro live ist.

       2026-08-25: An dieser Stelle standen zwei ineinander verschachtelte
       Kommentare — der zweite begann, bevor der erste geschlossen war. XML
       kennt keine Verschachtelung und verbietet zwei Bindestriche innerhalb
       eines Kommentars; ein strenger Parser bricht hier ab. Folgenlos war
       das nur, weil alle vier Eintraege davorstehen. Der naechste Eintrag
       waere unsichtbar gewesen. -->
  <!-- Rechtstexte, seit 2026-08-25 unter eigener Adresse.

       Bis dahin lagen Impressum, Datenschutz und AGB ausschliesslich hinter
       Schaltflaechen, die eine Raute setzten — kein einziges <a href>, keine
       eigene Adresse. Sie stehen hier mit niedriger Prioritaet: sie sollen
       auffindbar sein, aber keine Suchanfrage tragen. -->
  <url>
    <loc>https://neural-perfection.com/impressum</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>

  <url>
    <loc>https://neural-perfection.com/datenschutz</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>

  <url>
    <loc>https://neural-perfection.com/agb</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>

  <!-- Widerrufsbelehrung, seit 2026-08-27 unter eigener Adresse. Der Text lag
       seit jeher als Datei im Repo und war nirgends erreichbar; die AGB
       verwiesen in §8 auf einen Anker, den das Rauten-Routing nicht kannte. -->
  <url>
    <loc>https://neural-perfection.com/widerruf</loc>
    <lastmod>2026-08-30</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>

</urlset>
