<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://www.qfitpro.com/</loc>
    <lastmod>2026-05-29</lastmod>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/Home</loc>
    <lastmod>2026-06-19</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/About</loc>
    <lastmod>2026-05-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/Join1</loc>
    <lastmod>2026-05-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/Troubleshooting</loc>
    <lastmod>2026-05-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/ContactUs</loc>
    <lastmod>2026-05-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/Tips</loc>
    <lastmod>2026-05-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/SecurityAndPrivacy</loc>
    <lastmod>2026-05-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/TermsOfService</loc>
    <lastmod>2026-05-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/Calculators</loc>
    <lastmod>2026-06-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/Timer</loc>
    <lastmod>2026-06-14</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <!-- Topical fitness content, added 2026-08-06 alongside the matching robots.txt
       Allow lines. These three were serving 200 to anonymous visitors (they are in
       Site.Master.vb's PublicPages) while robots.txt Disallowed them, so the only
       pages on the site a stranger could plausibly search for were excluded from
       search entirely. Shape mirrors PacklistPRO's GearGuide* block: monthly, with
       the hub-equivalent page a notch above its siblings.
       /Muscles is the flagship — 33 anatomy cards carrying symptom search terms
       (shin splints, plantar fasciitis, sciatica, IT band), so it gets About's 0.8.
       /Motivation is here by owner decision on 2026-08-06, closing ledger D39: it was
       Disallowed and emitting its own noindex on a false "duplicate of the original"
       premise. The noindex has been removed from Motivation.aspx too — a sitemap
       entry for a noindex page is a self-contradicting signal.
       Deliberately NOT listed: /Walkthrough, /UseCases and /Tutorials — product
       documentation, still Disallowed in robots.txt. -->
  <!-- /CommonProblems REMOVED 2026-09-06, and this note is kept so the removal is not
       mistaken for an oversight. It was added 2026-09-01 on the argument that got
       /Muscles listed, only stronger: the page names 267 conditions outright - the
       symptom terms a stranger actually types - and it carried 0.8, a second flagship
       rather than a notch below one. The owner then closed it, and its 264 detail
       pages, to signed-out visitors ("Common Problems page and related pages should be
       for logged in users only"). It now answers 302 -> /Login for a crawler, so
       listing it would be the same self-contradicting signal that got /Invite removed
       from this file. robots.txt says "Disallow: /CommonProblems" to match.
       This is the largest single withdrawal of search surface this file has ever had;
       reversing it means reversing the gate first (CommonProblems.aspx.vb, AppConfig's
       demo wall, and the Web.config deny), not just re-adding the <url>. -->
  <url>
    <loc>https://www.qfitpro.com/Muscles</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/FitnessTips</loc>
    <lastmod>2026-08-08</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <!-- /TrainingTips was removed 2026-08-08: the page was merged into /FitnessTips
       above and deleted. A sitemap must list only canonical 200s, and that URL now
       301s here. It stays crawlable in robots.txt on purpose so the redirect is
       followed and the old URL's ranking consolidates onto /FitnessTips. -->
  <url>
    <loc>https://www.qfitpro.com/Motivation</loc>
    <lastmod>2026-08-06</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/Glossary</loc>
    <lastmod>2026-06-14</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.4</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/Donate</loc>
    <lastmod>2026-05-29</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.4</priority>
  </url>
  <!-- /Walkthrough and /UseCases ADDED 2026-08-29, in the same pass that flipped both
       from Disallow to Allow in robots.txt. Read that file's two blocks for the full
       reasoning; the short version is that they were excluded because their "Try It ->"
       links "send an anonymous reader straight to /Login", and auto-demo made that
       false — measured the same day, 27 of 28 in-site links on /Walkthrough and 8 of 10
       on /UseCases return 200 to a signed-out visitor, and not one miss is a login wall.
       Both carry a correct self-canonical and neither ships a robots meta, so the
       sitemap entry and the Allow agree (unlike the /Invite case noted below).
       ⚠ /Tutorials and /GuidedTour were NOT added: Tutorials ships its own
       "noindex, nofollow" meta, which is exactly the self-contradiction the /Invite
       note describes, and GuidedTour is a tour of the UI with no search intent.
       priority 0.6: below the topical fitness content (0.7-0.8), which is what a
       stranger actually searches for, and above the boilerplate (0.4). -->
  <url>
    <loc>https://www.qfitpro.com/Walkthrough</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://www.qfitpro.com/UseCases</loc>
    <lastmod>2026-08-29</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <!-- ══ The 267 per-problem explainer pages ══════════════════════════════════
       One URL per named condition (/Problem-plantar-fasciitis, /Problem-sciatica,
       /Problem-frozen-shoulder …), generated by qFIT\Build-ProblemPages.ps1 from
       Shared\docs\CONTROL_qFIT_ProblemRoutines.csv. GENERATED - everything between
       the two markers is rewritten on every run and a hand edit is lost.

       They are listed for the same reason /CommonProblems is: this is the site's
       real search surface, the pages a stranger reaches without knowing qFIT
       exists. robots.txt carries the matching prefix "Allow: /Problem-".
       ⚠ Priority 0.5 on purpose - a notch below /Glossary and /Donate, and well
       below the 0.8 of /CommonProblems, which is the hub all 267 of these hang off.
       267 pages claiming the hub's own priority would flatten the only ranking
       signal this file carries; the point of listing them is coverage, not weight.
       ══════════════════════════════════════════════════════════════════════════ -->
  <!-- BEGIN GENERATED Problem pages (Build-ProblemPages.ps1) -->
  <!-- 258 per-problem pages, deliberately UNLISTED since 2026-09-06: they are
       signed-in only (App_Code\ProblemPage.vb) and every URL here would 302 to /Login.
       robots.txt carries the matching "Disallow: /Problem-". See Build-ProblemPages.ps1. -->
<!-- END GENERATED Problem pages -->
  <!-- /Invite is deliberately NOT listed. The page ships its own
       <meta name="robots" content="noindex, nofollow">, and PacklistPRO,
       NobodyHasTHIS, paulmendelson.com and qMEET all Disallow it in robots.txt —
       qFIT was the last site still advertising it. Listing a noindex page in a
       sitemap is a self-contradicting signal, so the entry was removed and
       robots.txt flipped Allow -> Disallow to match the family (2026-08-05). -->
</urlset>
