<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:html="http://www.w3.org/1999/xhtml">
  <html:meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <html:title>Plan du site — 1 Thunomètre</html:title>

  <html:header>
    <html:a class="brand" href="./index.html">
      <html:img src="./icons/icon.svg" alt=""/>
      <html:span>1 Thunomètre</html:span>
    </html:a>
    <html:nav aria-label="Navigation">
      <html:a href="./index.html#page=home,contrib">Contribuer</html:a>
      <html:a href="./index.html#page=home,inspi">Inspirations</html:a>
      <html:a href="./index.html#page=home,alter">Alternatives</html:a>
    </html:nav>
  </html:header>

  <html:main class="introduction">
    <html:h1>Plan du site</html:h1>
  </html:main>

  <url>
    <loc>https://thunometre.fr/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=home,contrib</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=home,inspi</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=home,alter</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=home,custom</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=overview</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=quiz</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=summary</loc>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=feedback</loc>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=preSend</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=charts</loc>
    <changefreq>daily</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=budget</loc>
    <changefreq>daily</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=legal</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>https://thunometre.fr/#page=delete</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>

    <html:style><![CDATA[
    :root {
      color-scheme: light dark;
      font-family: Inter, ui-sans-serif, system-ui, sans-serif;
      --background: #f4f1e8;
      --surface: #fffdf8;
      --text: #17231f;
      --muted: #58645f;
      --border: #c8d0ca;
      --accent: #0b7558;
    }
    @media (prefers-color-scheme: dark) {
      :root { --background: #101714; --surface: #18221e; --text: #eef6f1; --muted: #b8c7bf; --border: #405149; --accent: #67d5ad; }
    }
    * { box-sizing: border-box; }
    urlset { min-height: 100vh; display: flex; flex-direction: column; margin: 0; background: var(--background); color: var(--text); }
    header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: .75rem max(1rem, calc((100vw - 99rem) / 2)); border-bottom: 1px solid var(--border); background: var(--surface); }
    a { color: var(--accent); }
    .brand { display: flex; align-items: center; gap: .6rem; color: var(--text); font-size: 1.2rem; font-weight: 800; text-decoration: none; }
    .brand img { width: 2rem; height: 2rem; border-radius: .45rem; }
    nav { display: flex; flex-wrap: wrap; gap: .5rem; }
    nav a { padding: .55rem .7rem; border-radius: .6rem; color: var(--muted); font-weight: 700; text-decoration: none; }
    nav a:hover { color: var(--accent); }
    .introduction { width: min(100% - 2rem, 70rem); margin: 0 auto; padding: clamp(2rem, 6vw, 5rem) 0 1rem; }
    h1 { margin: 0 0 .6rem; font-size: clamp(2rem, 6vw, 3.4rem); }
    .lead { margin: 0 0 .4rem; color: var(--muted); font-size: 1.1rem; line-height: 1.6; }
    url { position: relative; width: min(100% - 2rem, 70rem); display: grid; grid-template-columns: minmax(13rem, auto) minmax(0, 1fr); align-items: center; gap: 1rem; margin: 0 auto .75rem; padding: 1rem; border: 1px solid var(--border); border-radius: .9rem; background: var(--surface); transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease; }
    url:hover { border-color: var(--accent); box-shadow: 0 .2rem .7rem color-mix(in srgb, var(--accent) 14%, transparent); transform: translateY(-1px); }
    url:has(.location:focus-visible) { outline: .2rem solid color-mix(in srgb, var(--accent) 45%, transparent); outline-offset: .15rem; }
    .page-identity { display: flex; min-width: 0; align-items: center; gap: .8rem; }
    .page-icon { display: grid; flex: 0 0 2.5rem; width: 2.5rem; height: 2.5rem; place-items: center; border-radius: .7rem; background: color-mix(in srgb, var(--accent) 11%, transparent); color: var(--accent); font-size: 1.35rem; font-weight: 850; }
    .page-icon svg { width: 1.25rem; height: 1.25rem; fill: currentColor; }
    .page-title { line-height: 1.3; }
    loc, .location { overflow-wrap: anywhere; color: var(--accent); font-weight: 750; text-decoration: none; }
    .location { justify-self: end; text-align: end; }
    .location::after { content: ''; position: absolute; z-index: 1; inset: 0; border-radius: inherit; cursor: pointer; }
    .location:focus-visible { outline: none; }
    .location:hover { text-decoration: underline; }
    changefreq, priority { display: none; }
    footer { display: flex; flex-wrap: wrap; justify-content: center; gap: .5rem 1.25rem; margin-top: auto; padding: 1rem 1.5rem; border-top: 1px solid var(--border); background: var(--surface); color: var(--muted); font-size: .8rem; text-align: center; }
    .footer-links { display: flex; gap: 1rem; }
    style, script, meta, title { display: none; }
    @media (max-width: 650px) {
      header { align-items: flex-start; flex-direction: column; }
      url { grid-template-columns: 1fr; }
      .location { justify-self: start; text-align: start; }
    }
    ]]></html:style>

    <html:script><![CDATA[
    (() => {
      const xhtml = 'http://www.w3.org/1999/xhtml'
      const svgNamespace = 'http://www.w3.org/2000/svg'
      const canonical = 'https://thunometre.fr/'
      const icons = new Map([
        ['home', [512, 512, 'M277.8 8.6c-12.3-11.4-31.3-11.4-43.5 0l-224 208c-9.6 9-12.8 22.9-8 35.1S18.8 272 32 272l16 0 0 176c0 35.3 28.7 64 64 64l288 0c35.3 0 64-28.7 64-64l0-176 16 0c13.2 0 25-8.1 29.8-20.3s1.6-26.2-8-35.1l-224-208zM240 320l32 0c26.5 0 48 21.5 48 48l0 96-128 0 0-96c0-26.5 21.5-48 48-48z']],
        ['contribute', [576, 512, 'M279.6 31C265.5 11.5 242.9 0 218.9 0 177.5 0 144 33.5 144 74.9l0 2.4c0 64.4 82 133.4 122.2 163.3 13 9.7 30.5 9.7 43.5 0 40.2-30 122.2-98.9 122.2-163.3l0-2.4c0-41.4-33.5-74.9-74.9-74.9-24 0-46.6 11.5-60.7 31L288 42.7 279.6 31zM109.3 341.5L66.7 384 32 384c-17.7 0-32 14.3-32 32l0 64c0 17.7 14.3 32 32 32l320.5 0c29 0 57.3-9.3 80.7-26.5l126.6-93.3c17.8-13.1 21.6-38.1 8.5-55.9s-38.1-21.6-55.9-8.5L392.6 416 280 416c-13.3 0-24-10.7-24-24s10.7-24 24-24l72 0c17.7 0 32-14.3 32-32s-14.3-32-32-32l-152.2 0c-33.9 0-66.5 13.5-90.5 37.5z']],
        ['inspiration', [384, 512, 'M292.9 384c7.3-22.3 21.9-42.5 38.4-59.9 32.7-34.4 52.7-80.9 52.7-132.1 0-106-86-192-192-192S0 86 0 192c0 51.2 20 97.7 52.7 132.1 16.5 17.4 31.2 37.6 38.4 59.9l201.7 0zM288 432l-192 0 0 16c0 44.2 35.8 80 80 80l32 0c44.2 0 80-35.8 80-80l0-16zM184 112c-39.8 0-72 32.2-72 72 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-66.3 53.7-120 120-120 13.3 0 24 10.7 24 24s-10.7 24-24 24z']],
        ['alternatives', [512, 512, 'M502.6 150.6l-96 96c-9.2 9.2-22.9 11.9-34.9 6.9S352 236.9 352 224l0-64-320 0c-17.7 0-32-14.3-32-32S14.3 96 32 96l320 0 0-64c0-12.9 7.8-24.6 19.8-29.6s25.7-2.2 34.9 6.9l96 96c12.5 12.5 12.5 32.8 0 45.3zm-397.3 352l-96-96c-12.5-12.5-12.5-32.8 0-45.3l96-96c9.2-9.2 22.9-11.9 34.9-6.9S160 275.1 160 288l0 64 320 0c17.7 0 32 14.3 32 32s-14.3 32-32 32l-320 0 0 64c0 12.9-7.8 24.6-19.8 29.6s-25.7 2.2-34.9-6.9z']],
        ['custom', [512, 512, 'M195.1 9.5C198.1-5.3 211.2-16 226.4-16l59.8 0c15.2 0 28.3 10.7 31.3 25.5L332 79.5c14.1 6 27.3 13.7 39.3 22.8l67.8-22.5c14.4-4.8 30.2 1.2 37.8 14.4l29.9 51.8c7.6 13.2 4.9 29.8-6.5 39.9L447 233.3c.9 7.4 1.3 15 1.3 22.7s-.5 15.3-1.3 22.7l53.4 47.5c11.4 10.1 14 26.8 6.5 39.9l-29.9 51.8c-7.6 13.1-23.4 19.2-37.8 14.4l-67.8-22.5c-12.1 9.1-25.3 16.7-39.3 22.8l-14.4 69.9c-3.1 14.9-16.2 25.5-31.3 25.5l-59.8 0c-15.2 0-28.3-10.7-31.3-25.5l-14.4-69.9c-14.1-6-27.2-13.7-39.3-22.8L73.5 432.3c-14.4 4.8-30.2-1.2-37.8-14.4L5.8 366.1c-7.6-13.2-4.9-29.8 6.5-39.9l53.4-47.5c-.9-7.4-1.3-15-1.3-22.7s.5-15.3 1.3-22.7L12.3 185.8c-11.4-10.1-14-26.8-6.5-39.9L35.7 94.1c7.6-13.2 23.4-19.2 37.8-14.4l67.8 22.5c12.1-9.1 25.3-16.7 39.3-22.8L195.1 9.5zM256.3 336a80 80 0 1 0-.6-160 80 80 0 1 0 .6 160z']],
        ['overview', [512, 512, 'M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM224 160a32 32 0 1 1 64 0 32 32 0 1 1-64 0zm-8 64l48 0c13.3 0 24 10.7 24 24l0 88 8 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-80 0c-13.3 0-24-10.7-24-24s10.7-24 24-24l24 0 0-64-24 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z']],
        ['quiz', [512, 512, 'M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zm0-336c-17.7 0-32 14.3-32 32 0 13.3-10.7 24-24 24s-24-10.7-24-24c0-44.2 35.8-80 80-80s80 35.8 80 80c0 47.2-36 67.2-56 74.5l0 3.8c0 13.3-10.7 24-24 24s-24-10.7-24-24l0-8.1c0-20.5 14.8-35.2 30.1-40.2 6.4-2.1 13.2-5.5 18.2-10.3 4.3-4.2 7.7-10 7.7-19.6 0-17.7-14.3-32-32-32zM224 368a32 32 0 1 1 64 0 32 32 0 1 1-64 0z']],
        ['summary', [512, 512, 'M256 512a256 256 0 1 1 0-512 256 256 0 1 1 0 512zM374 145.7c-10.7-7.8-25.7-5.4-33.5 5.3L221.1 315.2 169 263.1c-9.4-9.4-24.6-9.4-33.9 0s-9.4 24.6 0 33.9l72 72c5 5 11.8 7.5 18.8 7s13.4-4.1 17.5-9.8L379.3 179.2c7.8-10.7 5.4-25.7-5.3-33.5z']],
        ['feedback', [512, 512, 'M256 512a256 256 0 1 0 0-512 256 256 0 1 0 0 512zM176 176a32 32 0 1 1 0 64 32 32 0 1 1 0-64zm128 32a32 32 0 1 1 64 0 32 32 0 1 1-64 0zM176 320l160 0c13.3 0 24 10.7 24 24s-10.7 24-24 24l-160 0c-13.3 0-24-10.7-24-24s10.7-24 24-24z']],
        ['preSend', [448, 512, 'M256 109.3L256 320c0 17.7-14.3 32-32 32s-32-14.3-32-32l0-210.7-41.4 41.4c-12.5 12.5-32.8 12.5-45.3 0s-12.5-32.8 0-45.3l96-96c12.5-12.5 32.8-12.5 45.3 0l96 96c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L256 109.3zM224 400c44.2 0 80-35.8 80-80l80 0c35.3 0 64 28.7 64 64l0 32c0 35.3-28.7 64-64 64L64 480c-35.3 0-64-28.7-64-64l0-32c0-35.3 28.7-64 64-64l80 0c0 44.2 35.8 80 80 80zm144 24a24 24 0 1 0 0-48 24 24 0 1 0 0 48z']],
        ['charts', [512, 512, 'M64 64c0-17.7-14.3-32-32-32S0 46.3 0 64L0 400c0 44.2 35.8 80 80 80l400 0c17.7 0 32-14.3 32-32s-14.3-32-32-32L80 416c-8.8 0-16-7.2-16-16L64 64zm406.6 86.6c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L320 210.7 262.6 153.4c-12.5-12.5-32.8-12.5-45.3 0l-96 96c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l73.4-73.4 57.4 57.4c12.5 12.5 32.8 12.5 45.3 0l128-128z']],
        ['budget', [384, 512, 'M64 0C28.7 0 0 28.7 0 64L0 448c0 35.3 28.7 64 64 64l256 0c35.3 0 64-28.7 64-64l0-384c0-35.3-28.7-64-64-64L64 0zM96 64l192 0c17.7 0 32 14.3 32 32l0 32c0 17.7-14.3 32-32 32L96 160c-17.7 0-32-14.3-32-32l0-32c0-17.7 14.3-32 32-32zm16 168a24 24 0 1 1-48 0 24 24 0 1 1 48 0zm80 24a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm128-24a24 24 0 1 1-48 0 24 24 0 1 1 48 0zM88 352a24 24 0 1 1 0-48 24 24 0 1 1 0 48zm128-24a24 24 0 1 1-48 0 24 24 0 1 1 48 0zm80 24a24 24 0 1 1 0-48 24 24 0 1 1 0 48zM64 424c0-13.3 10.7-24 24-24l112 0c13.3 0 24 10.7 24 24s-10.7 24-24 24L88 448c-13.3 0-24-10.7-24-24zm232-24c13.3 0 24 10.7 24 24s-10.7 24-24 24-24-10.7-24-24 10.7-24 24-24z']],
        ['legal', [576, 512, 'M169.6 153.4l-18.7-18.7c-12.5-12.5-12.5-32.8 0-45.3L265.6-25.4c12.5-12.5 32.8-12.5 45.3 0L329.6-6.6c12.5 12.5 12.5 32.8 0 45.3L214.9 153.4c-12.5 12.5-32.8 12.5-45.3 0zM276 211.7l-31.4-31.4 112-112 119.4 119.4-112 112-31.4-31.4-232 232c-15.6 15.6-40.9 15.6-56.6 0s-15.6-40.9 0-56.6l232-232zM390.9 374.6c-12.5-12.5-12.5-32.8 0-45.3L505.6 214.6c12.5-12.5 32.8-12.5 45.3 0l18.7 18.7c12.5 12.5 12.5 32.8 0 45.3L454.9 393.4c-12.5 12.5-32.8 12.5-45.3 0l-18.7-18.7z']],
        ['delete', [448, 512, 'M136.7 5.9C141.1-7.2 153.3-16 167.1-16l113.9 0c13.8 0 26 8.8 30.4 21.9L320 32 416 32c17.7 0 32 14.3 32 32s-14.3 32-32 32L32 96C14.3 96 0 81.7 0 64S14.3 32 32 32l96 0 8.7-26.1zM32 144l384 0 0 304c0 35.3-28.7 64-64 64L96 512c-35.3 0-64-28.7-64-64l0-304zm88 64c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24zm104 0c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24zm104 0c-13.3 0-24 10.7-24 24l0 192c0 13.3 10.7 24 24 24s24-10.7 24-24l0-192c0-13.3-10.7-24-24-24z']],
      ])
      const pages = new Map([
        ['', ['home', 'Accueil']],
        ['#page=home,contrib', ['contribute', 'Contribuer']],
        ['#page=home,inspi', ['inspiration', 'Inspirations']],
        ['#page=home,alter', ['alternatives', 'Alternatives']],
        ['#page=home,custom', ['custom', 'Charger un thunomètre personnalisé']],
        ['#page=overview', ['overview', 'Présentation du thunomètre']],
        ['#page=quiz', ['quiz', 'Questionnaire de thunomètre']],
        ['#page=summary', ['summary', 'Bilan individuel']],
        ['#page=feedback', ['feedback', 'Questionnaire de ressenti']],
        ['#page=preSend', ['preSend', 'Préparation de l’envoi']],
        ['#page=charts', ['charts', 'Résultats comparatifs']],
        ['#page=budget', ['budget', 'Répartir un budget']],
        ['#page=legal', ['legal', 'Mentions légales']],
        ['#page=delete', ['delete', 'Supprimer un résultat']],
      ])
      for (const locationNode of document.querySelectorAll('loc')) {
        const target = locationNode.textContent.trim()
        const route = target.startsWith(canonical) ? target.slice(canonical.length) : target
        const [iconName, title] = pages.get(route) ?? ['overview', 'Page']
        const identity = document.createElementNS(xhtml, 'span')
        identity.className = 'page-identity'
        const icon = document.createElementNS(xhtml, 'span')
        icon.className = 'page-icon'
        icon.setAttribute('aria-hidden', 'true')
        const [width, height, pathData] = icons.get(iconName) ?? icons.get('overview')
        const svg = document.createElementNS(svgNamespace, 'svg')
        svg.setAttribute('viewBox', `0 0 ${width} ${height}`)
        svg.setAttribute('aria-hidden', 'true')
        const path = document.createElementNS(svgNamespace, 'path')
        path.setAttribute('d', pathData)
        svg.append(path)
        icon.append(svg)
        const heading = document.createElementNS(xhtml, 'strong')
        heading.className = 'page-title'
        heading.textContent = title
        identity.append(icon, heading)
        locationNode.parentNode?.prepend(identity)
        const link = document.createElementNS(xhtml, 'a')
        link.className = 'location'
        link.textContent = target
        link.setAttribute('aria-label', `${title} — ${target}`)
        link.href = window.location.protocol === 'file:' && target.startsWith(canonical)
          ? `./index.html${target.slice(canonical.length)}`
          : target
        locationNode.replaceWith(link)
      }

      const footer = document.createElementNS(xhtml, 'footer')
      const footerLinks = document.createElementNS(xhtml, 'span')
      footerLinks.className = 'footer-links'
      for (const [label, href] of [['Plan du site', './sitemap.xml'], ['Mentions légales', './index.html#page=legal']]) {
        const link = document.createElementNS(xhtml, 'a')
        link.href = href
        link.textContent = label
        footerLinks.append(link)
      }
      footer.append(footerLinks)
      const signature = document.createElementNS(xhtml, 'span')
      const parts = [
        ['Réalisé par ', '1000i100', 'https://framagit.org/1000i100/'],
        [', dopé à l’', 'I.A.', 'https://openai.com/codex/'],
        [' — Licence ', 'AGPLv3', 'https://choosealicense.com/licenses/agpl-3.0/'],
        [' (', 'Code source', 'https://framagit.org/contribulibre/1thunometre'],
      ]
      for (const [before, label, href] of parts) {
        signature.append(document.createTextNode(before))
        const link = document.createElementNS(xhtml, 'a')
        link.href = href
        link.textContent = label
        signature.append(link)
      }
      signature.append(document.createTextNode(')'))
      footer.append(signature)
      document.documentElement.append(footer)
    })()
    ]]></html:script>
  </url>
</urlset>
