<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title> EduCycle</title>
    <link rel="icon" type="image/svg+xml" href="/favicon.svg?v=4KnZtlqpfg_DvFYu8hX4xMlEL9Lyqrgex0M2uNYMOtE" />
    <link rel="alternate icon" href="/favicon.ico?v=qkMAvxc4ZY4plYWpaZvhc3XRbVcxtsYbfo6ixpjve7I" />
    <link rel="apple-touch-icon" href="/img/apple-touch-icon.png?v=AsGzr2baaCeKhhyZtIBbqZvlzI95sdo9nj51wYHdZT0" />
    <link rel="manifest" href="/site.webmanifest" />
    <meta name="theme-color" content="#1d6fdb" />
    <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.min.css" />
    <link rel="stylesheet" href="/css/ec-theme.css?v=D9bw6CesuWrfJ7kg03yBBKkgxIjucXVBcjShh2OZbNo" />
    <link rel="stylesheet" href="/css/site.css?v=8s4cdoKS_a_2x2ETh99PnrwnmtzyPJUr3Z0X9dMAa-0" />
    <link rel="stylesheet" href="/EduCycle.Web.styles.css?v=Fd8VF4yV6wyU2XO9qvvAKx5UaN7xMOX-xaVv-BsjANI" />
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.0/font/bootstrap-icons.css" />
</head>
<body>
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  <url>
    <loc>http://demo.educycle.app/</loc>
    <changefreq>weekly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>http://demo.educycle.app/Catalogue/Index</loc>
    <changefreq>weekly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>http://demo.educycle.app/Auth/Login</loc>
    <changefreq>monthly</changefreq>
    <priority>0.5</priority>
  </url>
  <url>
    <loc>http://demo.educycle.app/Auth/Register</loc>
    <changefreq>monthly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>http://demo.educycle.app/Actualites/4</loc>
    <changefreq>weekly</changefreq>
    <priority>0.6</priority>
  </url>
</urlset>


<script src="/lib/jquery/dist/jquery.min.js"></script>
<script src="/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="/js/site.js?v=hqPoNzCKDGqoRXxqXVgUNbvaCNxlWGKxlIKEZ0Eom0s"></script>

    <script type="module" src="/dist/bundle.js?v=WA6pRA0BdDDfiZAJ2QU3RIKanI7pGweyK7qL7zoNCd8"></script>


<script>
document.addEventListener('DOMContentLoaded', function() {
    document.querySelectorAll('.alert-success.alert-dismissible').forEach(function(el) {
        setTimeout(function() { bootstrap.Alert.getOrCreateInstance(el).close(); }, 3000);
    });
});
</script>

<!-- Modal confirmation global -->
<div b-yysxz8q47z id="ec-confirm-overlay" style="display:none;position:fixed;inset:0;background:rgba(15,23,42,.5);z-index:1055;align-items:center;justify-content:center;">
  <div b-yysxz8q47z style="background:#fff;border-radius:14px;padding:28px 28px 22px;max-width:400px;width:90%;box-shadow:0 12px 40px rgba(0,0,0,.2);">
    <p b-yysxz8q47z id="ec-confirm-msg" style="font-size:.9rem;color:#1e293b;margin:0 0 22px;line-height:1.55;font-weight:500;"></p>
    <div b-yysxz8q47z style="display:flex;justify-content:flex-end;gap:10px;">
      <button b-yysxz8q47z id="ec-confirm-cancel" class="btn btn-sm btn-outline-secondary px-4">Annuler</button>
      <button b-yysxz8q47z id="ec-confirm-ok"     class="btn btn-sm btn-danger px-4">Confirmer</button>
    </div>
  </div>
</div>
<script>
(function () {
  const overlay  = document.getElementById('ec-confirm-overlay');
  const msgEl    = document.getElementById('ec-confirm-msg');
  const btnOk    = document.getElementById('ec-confirm-ok');
  const btnCancel= document.getElementById('ec-confirm-cancel');
  let _resolve;

  function ecConfirm(msg) {
    return new Promise(res => {
      _resolve = res;
      msgEl.textContent = msg;
      overlay.style.display = 'flex';
    });
  }

  function close(val) { overlay.style.display = 'none'; _resolve && _resolve(val); }
  btnOk.addEventListener('click',    () => close(true));
  btnCancel.addEventListener('click',() => close(false));
  overlay.addEventListener('click',  e => { if (e.target === overlay) close(false); });
  document.addEventListener('keydown', e => { if (e.key === 'Escape') close(false); });

  // Formulaires : data-ec-confirm="..."
  document.addEventListener('submit', async function (e) {
    const msg = e.target.dataset.ecConfirm;
    if (!msg) return;
    e.preventDefault();
    if (await ecConfirm(msg)) e.target.submit();
  }, true);

  // Boutons : data-ec-confirm="..." [data-ec-target="form-id"]
  document.addEventListener('click', async function (e) {
    const el = e.target.closest('[data-ec-confirm]:not(form)');
    if (!el || el.dataset.ecConfirmed) return;
    e.preventDefault(); e.stopPropagation();
    if (await ecConfirm(el.dataset.ecConfirm)) {
      const t = el.dataset.ecTarget;
      if (t) {
        document.getElementById(t).submit();
      } else {
        // Re-clic natif pour inclure name/value du bouton submit
        el.dataset.ecConfirmed = '1';
        el.click();
        delete el.dataset.ecConfirmed;
      }
    }
  }, true);

  window.ecConfirm = ecConfirm;
})();
</script>

<script>
// ── Sidebar focus mode ────────────────────────────────────────
(function () {
  const sidebar  = document.getElementById('ec-sidebar');
  const btn      = document.getElementById('ec-focus-btn');
  const icon     = document.getElementById('ec-focus-icon');
  const search   = document.getElementById('ec-search-input');
  if (!sidebar || !btn) return;

  function setCollapsed(collapsed) {
    sidebar.classList.toggle('is-collapsed', collapsed);
    if (icon) {
      icon.classList.toggle('bi-chevron-right', collapsed);
      icon.classList.toggle('bi-chevron-left', !collapsed);
    }
    try { localStorage.setItem('ec-sidebar-collapsed', collapsed ? '1' : '0'); } catch (_) {}
  }

  // Restore state
  try {
    if (localStorage.getItem('ec-sidebar-collapsed') === '1') setCollapsed(true);
  } catch (_) {}

  btn.addEventListener('click', () => setCollapsed(!sidebar.classList.contains('is-collapsed')));

  // ⌘K / Ctrl+K → focus search
  document.addEventListener('keydown', e => {
    if ((e.metaKey || e.ctrlKey) && e.key === 'k') {
      e.preventDefault();
      if (sidebar.classList.contains('is-collapsed')) setCollapsed(false);
      search?.focus();
    }
  });
})();
</script>
<script>
(function () {
  var toggleBtn = document.getElementById('ec-shell-toggle');
  var sidebar   = document.getElementById('ec-sidebar');
  var overlay   = document.getElementById('ec-shell-overlay');
  if (!toggleBtn || !sidebar || !overlay) return;
  toggleBtn.addEventListener('click', function () {
    sidebar.classList.toggle('open');
    overlay.classList.toggle('open');
  });
  overlay.addEventListener('click', function () {
    sidebar.classList.remove('open');
    overlay.classList.remove('open');
  });
})();
</script>
</body>
</html>
