.enveloppe {
  position: relative;
  z-index: 1;
  max-width: 760px;
  margin: 0 auto;
  padding: 0 var(--espace-md);
}

/* ================= ÉCRAN-BANDEAU (pub) ================= */

.ecran-bandeau {
  max-width: 900px;
  margin: var(--espace-lg) auto 0;
  padding: 0 var(--espace-md);
  position: relative;
  z-index: 1;
}

.ecran-cadre {
  --couleur-cat: var(--led-vert);
  position: relative;
  background: linear-gradient(160deg, var(--fond-coque-clair) 0%, var(--fond-coque) 45%, var(--fond-coque-ombre) 100%);
  clip-path: polygon(
    22px 0, calc(100% - 22px) 0, 100% 22px,
    100% calc(100% - 22px), calc(100% - 22px) 100%,
    22px 100%, 0 calc(100% - 22px), 0 22px
  );
  padding: 12px;
  border: 1.5px solid color-mix(in srgb, var(--couleur-cat) 55%, var(--acier-clair));
  filter:
    drop-shadow(0 0 7px color-mix(in srgb, var(--couleur-cat) 45%, transparent))
    drop-shadow(0 18px 34px rgba(20, 22, 24, 0.35));
}

.ecran-cadre::before,
.ecran-cadre::after,
.ecran-vis-bg,
.ecran-vis-bd {
  content: '';
  position: absolute;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 35%, #fff, var(--acier-clair));
}

.ecran-cadre::before { top: 16px; left: 16px; }
.ecran-cadre::after { top: 16px; right: 16px; }
.ecran-vis-bg { bottom: 16px; left: 16px; }
.ecran-vis-bd { bottom: 16px; right: 16px; }

.ecran-interieur {
  position: relative;
  background: var(--fond-ecran);
  clip-path: polygon(
    14px 0, calc(100% - 14px) 0, 100% 14px,
    100% calc(100% - 14px), calc(100% - 14px) 100%,
    14px 100%, 0 calc(100% - 14px), 0 14px
  );
  border: 1px solid rgba(0, 0, 0, 0.6);
  min-height: 110px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}

.ecran-interieur--image {
  height: 180px;
  padding: 0;
}

.ecran-image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

@media (max-width: 560px) {
  .ecran-interieur--image {
    height: 130px;
  }
}

/* Décor pleine image (pages du jeu de piste) — affichée en entier, jamais
   rognée : contrairement à .ecran-interieur--image (hublot, hauteur fixe +
   cover), la hauteur suit ici le ratio naturel de l'image. */
.decor-scene {
  position: relative;
  max-width: 900px;
  margin: var(--espace-lg) auto;
  border-radius: var(--rayon);
  overflow: hidden;
  border: 1.5px solid color-mix(in srgb, var(--or) 45%, var(--acier-clair));
  filter:
    drop-shadow(0 0 7px color-mix(in srgb, var(--or) 30%, transparent))
    drop-shadow(0 18px 34px rgba(20, 22, 24, 0.35));
}

.decor-scene-image {
  width: 100%;
  height: auto;
  display: block;
}


.ecran-interieur::before {
  content: '';
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    to bottom,
    rgba(255, 255, 255, 0.025) 0px,
    rgba(255, 255, 255, 0.025) 1px,
    transparent 1px,
    transparent 3px
  );
  pointer-events: none;
}

.ecran-interieur::after {
  content: '';
  position: absolute;
  inset: 0;
  box-shadow: inset 0 0 50px rgba(0, 0, 0, 0.75);
  pointer-events: none;
}

.ecran-led {
  position: absolute;
  top: 14px;
  right: 16px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, var(--led-vert-vif), var(--led-vert) 60%, var(--led-vert-ombre));
  box-shadow: 0 0 5px 1px rgba(53, 201, 107, 0.7);
  z-index: 1;
}

.ecran-led--actif {
  animation: pulsation 2.4s ease-in-out infinite;
}

.ecran-canal {
  position: absolute;
  top: 12px;
  left: 16px;
  font-family: var(--police-technique);
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--texte-discret);
  z-index: 1;
}

.ad-slot-label {
  font-family: var(--police-technique);
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--texte-discret);
  z-index: 1;
}

@keyframes pulsation {
  0%, 100% { opacity: 1; box-shadow: 0 0 5px 1px rgba(53, 201, 107, 0.7); }
  50% { opacity: 0.5; box-shadow: 0 0 5px 4px rgba(53, 201, 107, 0); }
}

/* ================= BANDEAU DE STATUT ================= */

.statut-plaque {
  width: fit-content;
  margin: var(--espace-lg) auto 0;
  padding: 10px 30px;
  background: linear-gradient(160deg, var(--fond-coque-clair) 0%, var(--fond-coque) 45%, var(--fond-coque-ombre) 100%);
  clip-path: polygon(
    12px 0, calc(100% - 12px) 0, 100% 12px,
    100% calc(100% - 12px), calc(100% - 12px) 100%,
    12px 100%, 0 calc(100% - 12px), 0 12px
  );
  border: 1.5px solid color-mix(in srgb, var(--led-vert) 50%, var(--acier-clair));
  position: relative;
  z-index: 1;
  filter:
    drop-shadow(0 0 5px color-mix(in srgb, var(--led-vert) 40%, transparent))
    drop-shadow(0 10px 18px rgba(20, 22, 24, 0.3));
}

.bandeau-statut {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: var(--espace-lg);
  font-family: var(--police-technique);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--texte-coque-discret);
}

.bandeau-statut li {
  list-style: none;
  display: inline-flex;
  align-items: center;
  gap: 7px;
}

.point {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, var(--led-vert-vif), var(--led-vert) 55%, var(--led-vert-ombre) 100%);
  box-shadow:
    0 0 5px 1px rgba(53, 201, 107, 0.75),
    inset 0 0 1px rgba(255, 255, 255, 0.8);
}

/* ================= EN-TÊTE / MARQUE ================= */

.entete {
  position: relative;
  z-index: 1;
  padding: var(--espace-xl) var(--espace-md) var(--espace-lg);
  max-width: 760px;
  margin: 0 auto;
  text-align: center;
}

.eyebrow {
  display: table;
  margin: 0 auto var(--espace-sm);
  font-family: var(--police-technique);
  font-size: 12px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--or-coque);
}

.eyebrow-lien {
  cursor: pointer;
  transition: color 0.3s ease, text-shadow 0.3s ease;
}

.eyebrow-lien:hover,
.eyebrow-lien:focus-visible {
  color: var(--cat-secret);
  text-shadow: 0 0 8px color-mix(in srgb, var(--cat-secret) 50%, transparent);
}

.halo-titre {
  position: absolute;
  z-index: -1;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 640px;
  height: 320px;
  max-width: 100vw;
  background: radial-gradient(closest-side, rgba(217, 164, 65, 0.22), transparent 72%);
  filter: blur(10px);
  pointer-events: none;
}

.plaque-titre {
  position: relative;
  z-index: 1;
  padding: var(--espace-xl) var(--espace-lg);
  background: linear-gradient(160deg, var(--fond-coque-clair) 0%, var(--fond-coque) 45%, var(--fond-coque-ombre) 100%);
  clip-path: polygon(
    28px 0, calc(100% - 28px) 0, 100% 28px,
    100% calc(100% - 28px), calc(100% - 28px) 100%,
    28px 100%, 0 calc(100% - 28px), 0 28px
  );
  border: 1.5px solid color-mix(in srgb, var(--led-vert) 45%, var(--acier-clair));
  filter:
    drop-shadow(0 0 8px color-mix(in srgb, var(--led-vert) 35%, transparent))
    drop-shadow(0 26px 44px rgba(20, 22, 24, 0.4));
}

.tampon {
  display: inline-block;
  font-family: var(--police-technique);
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--rouge-coque);
  border: 1px solid color-mix(in srgb, var(--rouge-coque) 45%, transparent);
  padding: 4px 14px;
  border-radius: 999px;
  transform: rotate(-4deg);
  margin-bottom: var(--espace-md);
}

.entete h1 {
  font-family: var(--police-marque);
  font-size: clamp(2rem, 6vw, 3.8rem);
  line-height: 1.15;
  letter-spacing: 0.01em;
  color: var(--texte-coque-primaire);
  overflow-wrap: break-word;
}

.titre-accent {
  color: var(--or-coque);
}

.sous-titre {
  max-width: 480px;
  margin: var(--espace-md) auto 0;
  color: var(--texte-coque-secondaire);
  font-size: 15px;
}

/* ================= TABLE DES TRAJECTOIRES (panneau à deux colonnes) ================= */

.section-panneau {
  position: relative;
  z-index: 1;
  max-width: 780px;
  margin: 0 auto;
  padding: var(--espace-lg) var(--espace-md) var(--espace-xl);
}

.section-panneau > .eyebrow {
  text-align: center;
}

.panneau-cadre {
  --couleur-cat: var(--led-vert);
  position: relative;
  z-index: 1;
  padding: var(--espace-lg) var(--espace-lg) var(--espace-xl);
  background: linear-gradient(160deg, var(--fond-coque-clair) 0%, var(--fond-coque) 45%, var(--fond-coque-ombre) 100%);
  clip-path: polygon(
    28px 0, calc(100% - 28px) 0, 100% 28px,
    100% calc(100% - 28px), calc(100% - 28px) 100%,
    28px 100%, 0 calc(100% - 28px), 0 28px
  );
  border: 1.5px solid color-mix(in srgb, var(--couleur-cat) 45%, var(--acier-clair));
  filter:
    drop-shadow(0 0 8px color-mix(in srgb, var(--couleur-cat) 35%, transparent))
    drop-shadow(0 26px 44px rgba(20, 22, 24, 0.4));
}

.panneau-vertical {
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: var(--espace-xl);
  row-gap: 4px;
  margin-top: var(--espace-lg);
}

.spine-centrale {
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  width: 2px;
  background: linear-gradient(var(--laiton), var(--or), var(--laiton));
  opacity: 0.3;
  z-index: 0;
  transform: translateX(-50%);
}

.noeud {
  --couleur-cat: var(--or);
  position: relative;
  z-index: 1;
  display: flex;
  align-items: flex-start;
  gap: var(--espace-md);
  padding: var(--espace-md);
  background: linear-gradient(160deg, var(--fond-coque-clair) 0%, var(--fond-coque) 45%, var(--fond-coque-ombre) 100%);
  clip-path: polygon(
    14px 0, calc(100% - 14px) 0, 100% 14px,
    100% calc(100% - 14px), calc(100% - 14px) 100%,
    14px 100%, 0 calc(100% - 14px), 0 14px
  );
  border: 1.5px solid color-mix(in srgb, var(--couleur-cat) 55%, var(--acier-clair));
  filter:
    drop-shadow(0 0 5px color-mix(in srgb, var(--couleur-cat) 35%, transparent))
    drop-shadow(0 10px 16px rgba(20, 22, 24, 0.28));
  transition: filter 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
}

.noeud:hover,
.noeud:focus-visible {
  border-color: color-mix(in srgb, var(--couleur-cat) 75%, var(--acier-clair));
  transform: translateY(-3px);
  filter:
    drop-shadow(0 0 9px color-mix(in srgb, var(--couleur-cat) 55%, transparent))
    drop-shadow(0 16px 24px rgba(20, 22, 24, 0.32));
}

.noeud-icone {
  flex: 0 0 52px;
  width: 52px;
  height: 52px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--fond-abysse);
  border: 1.5px solid var(--couleur-cat);
  color: var(--couleur-cat);
  box-shadow: 0 0 14px -4px var(--couleur-cat);
  transition: box-shadow 0.15s ease;
}

.noeud:hover .noeud-icone,
.noeud:focus-visible .noeud-icone {
  box-shadow: 0 0 20px -2px var(--couleur-cat);
}

.noeud-icone svg {
  width: 22px;
  height: 22px;
}

.noeud-texte {
  padding-top: 4px;
}

.noeud-id {
  font-family: var(--police-technique);
  font-size: 11px;
  letter-spacing: 0.1em;
  color: var(--texte-coque-discret);
}

.noeud-titre {
  font-family: var(--police-texte);
  font-weight: 500;
  font-size: 17px;
  color: var(--texte-coque-primaire);
  margin-top: 2px;
}

.noeud-desc {
  font-size: 13px;
  color: var(--texte-coque-secondaire);
  margin-top: 3px;
}

/* ================= ANTENNE DE COMMUNICATION EXTERNE (M13, hors grille) ================= */

.panneau-vertical--solo {
  grid-template-columns: 1fr;
}

.panneau-vertical--solo .noeud {
  width: calc((100% - var(--espace-xl)) / 2);
  margin: 0 auto;
}

@media (max-width: 640px) {
  .panneau-vertical--solo .noeud {
    width: 100%;
  }
}

.noeud-statut-externe {
  position: absolute;
  top: 12px;
  right: 16px;
  display: flex;
  align-items: center;
  gap: 6px;
  font-family: var(--police-technique);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--texte-coque-discret);
}

/* ================= PAGES DE CONTENU ================= */

.page-nav {
  position: relative;
  z-index: 1;
  max-width: 700px;
  margin: var(--espace-lg) auto 0;
  padding: 0 var(--espace-md);
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
  font-family: var(--police-technique);
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.page-nav a {
  color: var(--texte-coque-secondaire);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.page-nav a:hover {
  color: var(--or-coque);
}

.page-nav span {
  color: var(--texte-coque-discret);
}

/* ================= SÉLECTEUR DE LANGUE ================= */

.langue-switch {
  display: inline-flex;
  gap: 2px;
  padding: 3px;
  background: linear-gradient(160deg, var(--fond-coque-clair) 0%, var(--fond-coque) 45%, var(--fond-coque-ombre) 100%);
  border: 1.5px solid color-mix(in srgb, var(--couleur-cat, var(--led-vert)) 45%, var(--acier-clair));
  border-radius: 999px;
  filter:
    drop-shadow(0 0 4px color-mix(in srgb, var(--couleur-cat, var(--led-vert)) 35%, transparent))
    drop-shadow(0 6px 12px rgba(20, 22, 24, 0.25));
}

.langue-lien {
  font-family: var(--police-technique);
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 5px 10px;
  border-radius: 999px;
  color: var(--texte-coque-secondaire);
  transition: background 0.15s ease, color 0.15s ease;
}

.langue-lien:hover {
  color: var(--or-coque);
}

.langue-lien.actif {
  background: var(--or-coque);
  color: #fff;
  cursor: default;
  pointer-events: none;
}

.page-section {
  position: relative;
  z-index: 1;
  max-width: 700px;
  margin: 0 auto;
  padding: var(--espace-lg) var(--espace-md) var(--espace-xl);
}

.plaque-page {
  padding: var(--espace-xl) var(--espace-lg);
  background: linear-gradient(160deg, var(--fond-coque-clair) 0%, var(--fond-coque) 45%, var(--fond-coque-ombre) 100%);
  clip-path: polygon(
    20px 0, calc(100% - 20px) 0, 100% 20px,
    100% calc(100% - 20px), calc(100% - 20px) 100%,
    20px 100%, 0 calc(100% - 20px), 0 20px
  );
  border: 1.5px solid var(--acier-clair);
  filter: drop-shadow(0 20px 36px rgba(20, 22, 24, 0.3));
}

.page-contenu h1 {
  font-family: var(--police-marque);
  font-size: clamp(1.6rem, 4vw, 2.2rem);
  letter-spacing: 0.02em;
  color: var(--texte-coque-primaire);
  margin-bottom: var(--espace-lg);
}

.page-contenu h2 {
  font-family: var(--police-texte);
  font-weight: 500;
  font-size: 16px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--or-coque);
  margin: var(--espace-lg) 0 var(--espace-sm);
}

.page-contenu h2:first-of-type {
  margin-top: 0;
}

.page-contenu p,
.page-contenu li {
  color: var(--texte-coque-secondaire);
  font-size: 15px;
  line-height: 1.7;
  margin-bottom: var(--espace-sm);
}

.page-contenu ul {
  padding-left: 1.2em;
  margin-bottom: var(--espace-sm);
}

.page-contenu a {
  color: var(--or-coque);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.page-contenu strong {
  color: var(--texte-coque-primaire);
  font-weight: 500;
}

.contact-adresse a {
  color: var(--led-vert-vif);
  text-decoration: none;
}

.page-maj {
  margin-top: var(--espace-lg);
  font-family: var(--police-technique);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--texte-coque-discret);
}

.contact-adresse {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-top: var(--espace-sm);
  padding: 10px 20px;
  background: var(--fond-abysse);
  clip-path: polygon(
    10px 0, calc(100% - 10px) 0, 100% 10px,
    100% calc(100% - 10px), calc(100% - 10px) 100%,
    10px 100%, 0 calc(100% - 10px), 0 10px
  );
  border: 1.5px solid color-mix(in srgb, var(--led-vert) 50%, var(--acier-clair));
  filter: drop-shadow(0 0 6px color-mix(in srgb, var(--led-vert) 40%, transparent));
  font-family: var(--police-technique);
  font-size: 15px;
  color: var(--texte-primaire);
}

/* ================= PIED DE PAGE ================= */

.pied-page {
  position: relative;
  z-index: 1;
  max-width: 760px;
  margin: 0 auto;
  padding: var(--espace-lg) var(--espace-md) var(--espace-xl);
  border-top: 0.5px solid var(--ligne-coque);
  text-align: center;
  font-size: 13px;
  color: var(--texte-coque-discret);
}

.pied-page a {
  color: var(--texte-coque-secondaire);
}

.pied-page a:hover {
  color: var(--or-coque);
}

.secret-invisible {
  color: var(--fond-coque);
  user-select: text;
}

@media (max-width: 640px) {
  .panneau-vertical {
    grid-template-columns: 1fr;
  }

  .spine-centrale {
    display: none;
  }

  .panneau-cadre {
    padding: var(--espace-md) var(--espace-sm) var(--espace-lg);
  }
}

@media (max-width: 480px) {
  .bandeau-statut {
    gap: var(--espace-md);
  }
}

/* ================= MINI-FENÊTRE D'ÉNIGME ================= */

.enigme-declencheur {
  cursor: pointer;
}

.enigme-fenetre {
  position: absolute;
  z-index: 40;
  width: min(320px, calc(100vw - 24px));
  padding: var(--espace-md);
  background: linear-gradient(160deg, var(--fond-panneau) 0%, var(--fond-abysse) 100%);
  border: 1.5px solid color-mix(in srgb, var(--or) 45%, var(--acier-clair));
  border-radius: var(--rayon);
  box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.4), 0 18px 34px rgba(0, 0, 0, 0.45);
  opacity: 0;
  transform: translateY(-6px);
  pointer-events: none;
  transition: opacity 0.15s ease, transform 0.15s ease;
}

.enigme-fenetre--ouverte {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.enigme-fenetre-entete {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}

.enigme-verrou {
  display: block;
  width: 20px;
  height: 20px;
  color: var(--rouge-coque);
}

.enigme-verrou svg {
  width: 20px;
  height: 20px;
  display: block;
}

.enigme-verrou .enigme-verrou-ouvert {
  display: none;
}

.enigme-fenetre--resolue .enigme-verrou {
  color: var(--led-vert);
}

.enigme-fenetre--resolue .enigme-verrou-ferme {
  display: none;
}

.enigme-fenetre--resolue .enigme-verrou-ouvert {
  display: block;
}

.enigme-fenetre-fermer {
  color: var(--texte-secondaire);
  font-size: 18px;
  line-height: 1;
  padding: 2px 6px;
  cursor: pointer;
}

.enigme-fenetre-fermer:hover {
  color: var(--texte-primaire);
}

.enigme-fenetre-texte {
  font-family: var(--police-texte);
  font-size: 13px;
  line-height: 1.5;
  color: var(--texte-primaire);
  margin-bottom: 10px;
}

.enigme-fenetre-form {
  display: flex;
  gap: 8px;
}

.enigme-fenetre-champ {
  flex: 1;
  min-width: 0;
  padding: 8px 10px;
  font-family: var(--police-technique);
  font-size: 13px;
  color: var(--texte-primaire);
  background: var(--fond-ecran);
  border: 1px solid var(--acier-clair);
  border-radius: 6px;
}

.enigme-fenetre-champ:focus {
  border-color: var(--or);
  outline: none;
}

.enigme-fenetre-bouton {
  font-family: var(--police-technique);
  font-size: 11px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  padding: 8px 14px;
  color: #fff;
  background: var(--or-coque);
  border: 1px solid color-mix(in srgb, var(--or-coque) 70%, black);
  border-radius: 6px;
  cursor: pointer;
  white-space: nowrap;
}

.enigme-fenetre-bouton:hover {
  filter: brightness(1.1);
}

.enigme-fenetre--resolue .enigme-fenetre-form {
  display: none;
}

.enigme-fenetre-message {
  margin: 8px 0 0;
  font-size: 12px;
  min-height: 14px;
  color: var(--texte-discret);
}

.enigme-fenetre-message--erreur {
  color: var(--rouge-coque);
}

.enigme-fenetre-message--succes {
  color: var(--led-vert);
}

@media (max-width: 640px) {
  .enigme-fenetre {
    position: fixed;
    left: 12px !important;
    right: 12px;
    top: auto !important;
    bottom: 12px;
    width: auto;
  }
}

/* ================= THÈME EXCLUSIF — CADRES DES MODULES ================= */
/* Une fois le Sanctuaire débloqué (et le thème exclusif actif) : remplace
   les 6 couleurs de catégorie distinctes des cadres de modules par un
   dégradé or → turquoise unifié, réparti sur les 13 modules. --couleur-cat
   est fixé en style inline sur chaque .noeud (voir index.html) : !important
   est nécessaire ici pour l'emporter. */
html[data-sanctuaire="true"] .noeud:nth-of-type(1)  { --couleur-cat: #d9a441 !important; }
html[data-sanctuaire="true"] .noeud:nth-of-type(2)  { --couleur-cat: #cba84c !important; }
html[data-sanctuaire="true"] .noeud:nth-of-type(3)  { --couleur-cat: #bcac56 !important; }
html[data-sanctuaire="true"] .noeud:nth-of-type(4)  { --couleur-cat: #aeb061 !important; }
html[data-sanctuaire="true"] .noeud:nth-of-type(5)  { --couleur-cat: #a0b46b !important; }
html[data-sanctuaire="true"] .noeud:nth-of-type(6)  { --couleur-cat: #91b876 !important; }
html[data-sanctuaire="true"] .noeud:nth-of-type(7)  { --couleur-cat: #83bc80 !important; }
html[data-sanctuaire="true"] .noeud:nth-of-type(8)  { --couleur-cat: #75c08b !important; }
html[data-sanctuaire="true"] .noeud:nth-of-type(9)  { --couleur-cat: #66c495 !important; }
html[data-sanctuaire="true"] .noeud:nth-of-type(10) { --couleur-cat: #58c8a0 !important; }
html[data-sanctuaire="true"] .noeud:nth-of-type(11) { --couleur-cat: #4accaa !important; }
html[data-sanctuaire="true"] .noeud:nth-of-type(12) { --couleur-cat: #3bd0b5 !important; }
html[data-sanctuaire="true"] .panneau-vertical--solo .noeud { --couleur-cat: #2dd4bf !important; }

/* ================= THÈME EXCLUSIF — GRANDS CADRES ================= */
/* Étend le dégradé or → turquoise (même paire de teintes que le dégradé des
   modules ci-dessus) aux autres grands cadres du site : le hublot et les
   panneaux "Modules de commande" / "Antenne externe" de l'accueil, chaque
   panneau outil des 13 pages de module (.panneau-cadre y est partagé), les
   bandeaux décor du jeu de piste, et les pastilles clair/sombre + langue. */
html[data-sanctuaire="true"] {
  --gradient-exclusif: linear-gradient(135deg, #d9a441, #2dd4bf);
  /* Teinte plate unifiée pour les halos (drop-shadow ne sait pas afficher
     un dégradé), à mi-chemin entre l'or et le turquoise du dégradé. */
  --cat-vert: #66c495;
  --cat-bleu: #66c495;
  --cat-violet: #66c495;
  --cat-teal: #66c495;
  --cat-rouge: #66c495;
  --cat-rose: #66c495;
  --cat-bitcoin: #66c495;
  --cat-secret: #66c495;
}

html[data-sanctuaire="true"] .ecran-cadre,
html[data-sanctuaire="true"] .panneau-cadre {
  --couleur-cat: #66c495;
  border-image: var(--gradient-exclusif) 1;
}

html[data-sanctuaire="true"] .decor-scene,
html[data-sanctuaire="true"] .langue-switch,
html[data-sanctuaire="true"] .bouton-theme {
  border-image: var(--gradient-exclusif) 1;
}
