<?xml version="1.0" encoding="UTF-8"?>
<!--
  On a launch host `/` and `/landing` render the SAME marketing page
  (lib/stealth-routes.js), and index.html declares `/` as the canonical URL, so
  only `/` is listed. Offering Google two URLs for one page lets it pick.

  The policy pages ARE listed: they resolve on every host, signed in or not,
  and Stripe's review expects a buyer to be able to reach the refund, shipping
  and privacy terms before paying. A crawlable copy is part of "conspicuously
  posted" (California Civ. Code §1723).

  NOT listed: /landing/* — the funnel steps behind the CTA need a lead in
  storage and bounce to /landing/join without one, so they are not entry points.
-->
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>https://dancedojo.app/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://dancedojo.app/legal/privacy</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://dancedojo.app/legal/terms</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://dancedojo.app/legal/refunds</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://dancedojo.app/legal/shipping</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
  <url>
    <loc>https://dancedojo.app/legal/contact</loc>
    <changefreq>yearly</changefreq>
    <priority>0.3</priority>
  </url>
</urlset>
