<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url><loc>https://www.totalshowdown.com/</loc><changefreq>daily</changefreq><priority>1.0</priority></url>
  <url><loc>https://www.totalshowdown.com/tournaments</loc><changefreq>daily</changefreq><priority>0.9</priority></url>
  <!-- 🔴 SP-4 (2026-08-11) · THE PLAYER DIRECTORY HUB WAS IN NO SITEMAP AT ALL.
       functions/v1/sitemap?type=players publishes 383 CHILD urls (/players/:id)
       and never published their parent, and this static file did not list it
       either — so the one page that links to all of them, with its A–Z buckets
       (`/players?letter=A`, real <Link>s, see components/profile/PlayerDirectory)
       and its CollectionPage + ItemList structured data, was undiscoverable
       except by guessing the URL. Every player page depended on the sitemap
       alone for discovery. Verified public: `/players` renders PlayerDirectory
       for a signed-out visitor (ProfileScreen.tsx:735) and emits index,follow
       unless its own read failed. -->
  <url><loc>https://www.totalshowdown.com/players</loc><changefreq>daily</changefreq><priority>0.9</priority></url>
  <url><loc>https://www.totalshowdown.com/eleague</loc><changefreq>daily</changefreq><priority>0.8</priority></url>
  <!-- Streamers League stopped being a redirect onto /eleague on 2026-08-11 and
       became its own page (64 individual creators, a different product from the
       /eleague clan pipeline). It has its own <SEO> and had no sitemap entry. -->
  <url><loc>https://www.totalshowdown.com/streamers-league</loc><changefreq>weekly</changefreq><priority>0.7</priority></url>
  <!-- SP-2 · SWITCHED-OFF SYSTEMS ARE NOT ADVERTISED.
       site_settings.site_mode.hidden_systems = ["clans","store","rankings"] in
       production, so SiteModeGate serves a `noindex` SystemLockedScreen on
       /clans, /rankings and /store. Submitting a URL whose own <meta robots>
       says "do not index" is counted against the whole site — the same defect
       the functions/v1/sitemap edge function had with 38 per-clan URLs.
       This file is STATIC and cannot read site_mode, so the hub entries are
       parked here instead of deleted: un-comment the matching line the moment
       its system is unhidden. (The per-entity children — /clans/:id etc. —
       are handled automatically by the edge function.)
  <url><loc>https://www.totalshowdown.com/clans</loc><changefreq>weekly</changefreq><priority>0.8</priority></url>
  <url><loc>https://www.totalshowdown.com/rankings</loc><changefreq>daily</changefreq><priority>0.7</priority></url>
  -->
  <url><loc>https://www.totalshowdown.com/match-center</loc><changefreq>daily</changefreq><priority>0.7</priority></url>
  <url><loc>https://www.totalshowdown.com/giveaway</loc><changefreq>weekly</changefreq><priority>0.7</priority></url>
  <url><loc>https://www.totalshowdown.com/explore</loc><changefreq>daily</changefreq><priority>0.6</priority></url>
  <url><loc>https://www.totalshowdown.com/news</loc><changefreq>daily</changefreq><priority>0.6</priority></url>
  <!-- The EDITORIAL profile hub. Its children (/legends/:slug) are published by
       functions/v1/sitemap?type=legends; this line is the hub itself, exactly
       like /players above. High priority on purpose: these pages exist to answer
       a search for a person's NAME, which is the query the owner asked for. -->
  <url><loc>https://www.totalshowdown.com/legends</loc><changefreq>weekly</changefreq><priority>0.8</priority></url>
  <url><loc>https://www.totalshowdown.com/seasons</loc><changefreq>weekly</changefreq><priority>0.6</priority></url>
  <url><loc>https://www.totalshowdown.com/hall-of-fame</loc><changefreq>weekly</changefreq><priority>0.6</priority></url>
  <url><loc>https://www.totalshowdown.com/how-it-works</loc><changefreq>monthly</changefreq><priority>0.6</priority></url>
  <!-- /services (2026-08-11) — the platform's COMMERCIAL page: OBS stream
       production for eFootball and website builds, $30/hour, business@ for
       partnerships. Priority 0.7 rather than 0.5: it is the only page whose
       whole purpose is to be found by a stranger searching for the service,
       and it carries Service structured data with the real price. Public, no
       PageGate, and linked from /support so it is reachable by a human rather
       than only listed here. -->
  <url><loc>https://www.totalshowdown.com/services</loc><changefreq>monthly</changefreq><priority>0.7</priority></url>
  <url><loc>https://www.totalshowdown.com/rules</loc><changefreq>monthly</changefreq><priority>0.5</priority></url>
  <url><loc>https://www.totalshowdown.com/league</loc><changefreq>daily</changefreq><priority>0.6</priority></url>
  <url><loc>https://www.totalshowdown.com/community</loc><changefreq>weekly</changefreq><priority>0.5</priority></url>
  <url><loc>https://www.totalshowdown.com/awards</loc><changefreq>weekly</changefreq><priority>0.5</priority></url>
  <!-- hidden system (see the SP-2 note above) — restore when "store" leaves hidden_systems
  <url><loc>https://www.totalshowdown.com/store</loc><changefreq>weekly</changefreq><priority>0.5</priority></url>
  -->
  <!-- SP-1 · the public match RECORD corpus (/match/:id — 1,572 URLs when the
       eligibility query was re-run on 2026-08-11, up from the 1,567 measured
       when this comment was written) is generated by
       functions/v1/sitemap?type=matches, which robots.txt already points
       crawlers at. Nothing per-match belongs in this static file.
       As of 2026-08-11 those pages are also LINKED, not just listed: a
       completed row in /match-center points at /match/:id, and each record
       lists its siblings. Before that, `grep` over all of src/ found exactly
       one reference to a /match/ URL and it was in a test. -->
  <url><loc>https://www.totalshowdown.com/calendar</loc><changefreq>daily</changefreq><priority>0.5</priority></url>
  <url><loc>https://www.totalshowdown.com/scrims</loc><changefreq>weekly</changefreq><priority>0.4</priority></url>
  <url><loc>https://www.totalshowdown.com/titles</loc><changefreq>monthly</changefreq><priority>0.4</priority></url>
  <!-- NOT LISTED, on purpose, and checked rather than assumed:
       · /support — reads as PUB in docs/VISUAL_QA_ROUTES.md, but
         SupportCenter.tsx renders a "Sign in to contact support" wall for a
         signed-out visitor. Submitting a sign-in wall is submitting nothing.
       · /federations — the page is real and public, but `federations` has 0
         rows; a directory of nothing is thin content. Add it with the first
         federation, not before.
       · /awards, /hall-of-fame — LISTED above and genuinely empty today
         (season_awards = 0). Whether an empty entity page should be noindex
         until it has content is an OWNER DECISION; it is raised, not taken. -->

  <url><loc>https://www.totalshowdown.com/sponsors</loc><changefreq>monthly</changefreq><priority>0.5</priority></url>
  <url><loc>https://www.totalshowdown.com/vod</loc><changefreq>weekly</changefreq><priority>0.5</priority></url>
  <url><loc>https://www.totalshowdown.com/fan-hub</loc><changefreq>weekly</changefreq><priority>0.5</priority></url>
  <url><loc>https://www.totalshowdown.com/download</loc><changefreq>monthly</changefreq><priority>0.5</priority></url>
  <url><loc>https://www.totalshowdown.com/privacy</loc><changefreq>yearly</changefreq><priority>0.3</priority></url>
  <url><loc>https://www.totalshowdown.com/terms</loc><changefreq>yearly</changefreq><priority>0.3</priority></url>
</urlset>
