<?xml version="1.0" encoding="UTF-8"?>
<!--
  PWR BALLS® sitemap.

  ⚠ URLs are written against the PRIMARY origin — LIVE_ORIGIN in
  src/config/beta.ts, which became www.pwrballs.com on 11 Oct 2026 (from
  pwrm8.com.au). A sitemap is a statement about where the canonical pages live,
  so every <loc> must use the SAME host as the canonical link in index.html.
  Listing a page here under one host while index.html names another is how a
  site ends up competing with itself in search results.

  ⚠ THE `www.` MATTERS. www.pwrballs.com and pwrballs.com are different hosts to
  a crawler. The apex 301s to www (public/_redirects), and this file lists only
  the www form.

  Only PUBLIC pages are listed. The /app routes are a single-page application
  behind no server rendering — there is nothing there for a crawler to index.

  /legal/beta is deliberately absent: it existed only while BETA_MODE was true
  and is gone now that the beta has ended.

  qa/deploy-hygiene.mjs asserts every <loc> shares one origin and that it
  matches the origin declared in robots.txt.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.pwrballs.com/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <!-- 🔴 THE AUTHORITY PAGE. The research lived at /app/learn — inside the
         tracker, out of this sitemap, excluded from the prerender — so no
         search engine or AI crawler had ever seen it. It is also the only
         subject the keyword research found a real gap for. Highest priority
         after the home page. -->
    <loc>https://www.pwrballs.com/protein</loc>
    <changefreq>monthly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <!-- The protein-matched table at its own address. Added 26 Oct 2026: it is
         the page most worth linking to, and until now it had no URL of its own.
         Weekly, and a priority under the home page but above the legal set. -->
    <loc>https://www.pwrballs.com/compare</loc>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <!-- 🔴 THE COMMERCIAL PAGE. The range was a section two-thirds of the way
         down the home page, so the one page with buying intent had no address,
         no title and no description of its own. Added 26 Oct 2026, step 3 of
         claude/site-restructure-plan-oct-2026. -->
    <loc>https://www.pwrballs.com/range</loc>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>
  <!-- ⚠ /snacks WAS LISTED HERE AND IS DELETED (Joseph, 27 Oct 2026).
       It was a "high protein savoury snacks" category page. The route is gone
       from App.tsx and public/_redirects 301s the URL to /compare.

       🔴 DO NOT LIST A URL HERE THAT THE BUILD DOES NOT PRODUCE. The
       prerenderer reads its route list from THIS FILE, so a stale <loc> makes
       scripts/prerender.mjs try to render a page that no longer exists — it
       would capture the SPA catch-all's home page and write it to
       dist/snacks/index.html, resurrecting the URL with the home page's body
       under its own canonical. The entry and the route live and die together. -->
  <url>
    <!-- The free tracker, publicly. It was an untitled band in the middle of
         the home page; it is the O-Week conversion path and the install steps
         now live here, where a search for "how to install" can reach them. -->
    <loc>https://www.pwrballs.com/how-it-works</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <!-- Short, and it props up /protein, /range and /compare: all three rest on
         the same accredited analysis, and until now the evidence for it had no
         address to cite. -->
    <loc>https://www.pwrballs.com/quality</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://www.pwrballs.com/legal/privacy</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://www.pwrballs.com/legal/terms</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://www.pwrballs.com/legal/medical</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://www.pwrballs.com/legal/methodology</loc>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.pwrballs.com/legal/data-sources</loc>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.pwrballs.com/legal/accessibility</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://www.pwrballs.com/legal/contact</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
