/* springbox-3d.css — couche scroll-3D cinematique, chargee apres
   springbox.min.css. Ne redefinit aucun token : reutilise les variables
   deja verrouillees (--bg-base #08080a, --gold #cc9166, --green #10b981).
   Additive uniquement : rien ici ne doit changer l'apparence des sections
   existantes hors de la zone hero. */

#scene3d {
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  opacity: 1;
  transition: opacity 0.5s ease;
}

#scene3d-canvas {
  display: block;
  width: 100%;
  height: 100%;
}

/* Garde-fou : sans JS (ou WebGL/reduced-motion indisponible), l'element est
   retire du DOM par scroll3d-init.esm.js — mais si le script ne charge pas
   du tout, ce bloc reste invisible par defaut plutot que de flasher au
   premier paint. */
#scene3d:not(.scene3d-active) {
  display: none;
}

/* Contient le cristal 3D strictement a la sequence hero : toutes les
   sections qui suivent recoivent un fond opaque explicite (meme valeur que
   le fond de page actuel), pour que le canvas fixe ne transparaisse nulle
   part ailleurs que derriere le hero. Zero changement visuel : ces
   sections utilisaient deja implicitement --bg-base via le body. */
.dashboard-wrap,
.problem-section,
.advance-section,
.session-section,
.regime-section,
.tools-section,
.trust-section {
  position: relative;
  z-index: 1;
  background: var(--bg-base);
}

/* Lettre-par-lettre du titre hero (scroll3d-init.esm.js decoupe le texte en
   spans ; ce selecteur ne fait qu'assurer un rendu propre pendant le split). */
.hero-title [data-i18n] {
  display: inline-block;
}
