  /* Masque semi-opaque */
  html.db-page-loading::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 2147483647;
    background: rgba(0, 0, 0, 0.85);
    cursor: progress;
  }
  
  /* Spinner centré */
  html.db-page-loading::after {
    content: "";
    position: fixed;
    top: 50%;
    left: 50%;
    width: 44px;
    height: 44px;
    box-sizing: border-box;
    border: 4px solid #9C5242;
    border-top-color: #e4c0b5;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    animation: dbLoaderSpin 0.8s linear infinite;
    z-index: 2147483647;
    pointer-events: none;
  }
  
  @keyframes dbLoaderSpin {
    to {
      transform: translate(-50%, -50%) rotate(360deg);
    }
  }
</style>
<script>
(function () {
  const root = document.documentElement;

  // Affiche le loader
  root.classList.add('db-page-loading');

  // Supprime le loader quand tout est chargé
  function hideLoader() {
    root.classList.remove('db-page-loading');
  }

  if (document.readyState === 'complete') {
    hideLoader();
  } else {
    window.addEventListener('load', hideLoader, { once: true });
  }

  // Gère aussi le retour à la page depuis le cache du navigateur
  window.addEventListener('pageshow', hideLoader, { once: true });
})();  