/* =========================================================
   =========================================================
   BELIEVE BALI  -  VERSION CLAIRE EDITORIALE
   Langage visuel et typographie inspires de melinegobet.fr :
   serif delicat et tres contraste pour les titres (poids leger),
   sans-serif humaniste pour le corps, accent manuscrit rare et
   precieux. Beaucoup de blanc, rythme aere, lignes fines, register
   feutre et haut de gamme.

   On garde STRICTEMENT la palette officielle de Camille : creme,
   navy, corail, bleu ciel. Seules les proportions, la typographie
   et la respiration changent. Tout est porte par body.theme-clair :
   le site sombre d'origine n'est jamais touche.
   ========================================================= */

/* --- Defilement fluide Lenis : reglages de base recommandes ---
   Quand Lenis est actif, il pose .lenis.lenis-smooth sur <html>.
   On neutralise alors le scroll-behavior natif (sinon conflit avec
   l'inertie) et on laisse la hauteur se calculer librement. Si JS ou
   Lenis ne chargent pas, ces regles dorment et le scroll natif reste. */
html.lenis,
html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }
.lenis.lenis-smooth iframe { pointer-events: none; }

/* --- Colonne de lecture editoriale (extrait de livre, texte long) ---
   Une seule mesure confortable, centree sous l'en-tete de section.
   Les paragraphes .prose interieurs epousent toute la colonne. */
.theme-clair .prose-colonne {
  max-width: 40rem;
  margin-inline: auto;
  margin-top: clamp(2rem, 4vh, 3.25rem);
}
.theme-clair .prose-colonne .prose { max-width: none; }
.theme-clair .prose-colonne .prose:first-child { margin-top: 0; }

body.theme-clair {
  /* --- Typographie melinegobet, transposee en polices libres --- */
  --police-serif:  "Cormorant Garamond", "Sentient", Georgia, serif;  /* titres delicats */
  --police-corps:  "Lato", system-ui, -apple-system, sans-serif;       /* corps, UI */
  --police-script: "Parisienne", "Cormorant Garamond", cursive;        /* accent manuscrit rare */

  /* --- Palette claire chaude (nos couleurs, retournees vers la lumiere) --- */
  --c-creme:      #E6E3D9;   /* sable chaud, fond principal (charte) */
  --c-creme-pale: #EFEDE6;   /* creme eclaircie, grandes surfaces aerees */
  --c-blanc-chaud:#FBFAF6;   /* blanc ivoire, sections en alternance */
  --c-pur:        #FFFFFF;   /* blanc pur, cartes elevees */
  --c-pied:       #DEDACE;   /* creme un peu plus dense, ancrage du pied */

  /* --- Encres --- */
  --c-encre:      #11202F;   /* navy profond, titres (proche charte #040F1F) */
  --c-encre-pure: #040F1F;   /* navy charte, pour les plus grands titres */
  --c-corps:      #46535F;   /* ardoise douce et chaude, texte courant */
  --c-doux:       #57636E;   /* gris-bleu attenue, legendes - AA sur creme (4.8:1) */

  /* --- Accents --- */
  --c-corail:       #F58754;  /* corail charte, aplats et touches chaudes */
  --c-corail-fonce: #C75A30;  /* corail approfondi, lisible en texte/lien */
  --c-bleu:         #91D8FF;  /* bleu ciel charte, touche fraiche rare */
  --c-bleu-fonce:   #2C7FB0;  /* bleu ciel approfondi si besoin de contraste */

  /* --- Traits et ombres, chaleureux et tres discrets --- */
  --c-trait:      rgba(17, 32, 47, 0.12);
  --c-trait-fin:  rgba(17, 32, 47, 0.08);
  --c-trait-fort: rgba(17, 32, 47, 0.20);
  --c-ombre:      rgba(40, 44, 38, 0.16);

  /* Respiration encore plus genereuse : le souffle melinegobet */
  --bloc-y: clamp(6rem, 14vh, 11rem);

  background: var(--c-creme);
  color: var(--c-corps);
  font-weight: 400;
  letter-spacing: 0.005em;
  -webkit-font-smoothing: antialiased;
}

/* Corps Lato : taille de base un peu plus genereuse, interligne aere */
.theme-clair {
  font-size: 1.02rem;
}

/* =========================================================
   TITRES  -  serif delicat, poids leger, grande echelle aeree
   ========================================================= */
.theme-clair .titre,
.theme-clair .titre--sombre,
.theme-clair .carte__titre,
.theme-clair .benefice__titre,
.theme-clair .repere__valeur,
.theme-clair .frise__titre,
.theme-clair .membre__nom,
.theme-clair .nav__marque,
.theme-clair .pied__logo {
  font-family: var(--police-serif);
  font-weight: 400;
  color: var(--c-encre);
  letter-spacing: 0.004em;
}

.theme-clair .titre {
  font-size: clamp(2.1rem, 1.3rem + 3.1vw, 3.7rem);
  line-height: 1.12;
  font-weight: 400;
  max-width: 20ch;
}
.theme-clair .titre--xl {
  font-size: clamp(2.9rem, 1.5rem + 5.4vw, 6rem);
  line-height: 1.04;
  font-weight: 300;            /* le plus delicat : haute couture serif */
  letter-spacing: 0.002em;
  max-width: 14ch;
}
/* En-tete centre (equipe, temoignages) : le grand titre reste centre et
   pleine largeur. Sans ca, le max-width 14ch ci-dessus le coince a gauche
   dans une colonne etroite, desaligne du kicker et de l'intro centres. */
.theme-clair .entete-page--centre .titre--xl {
  max-width: 100%;
  margin-inline: auto;
}
.theme-clair .titre--sombre { color: var(--c-encre); }

/* Titre hero "Philosophie" facon melinegobet : Fraunces, serif display chaud,
   fort contraste (opsz au max), terminaisons adoucies (SOFT) et caractere
   legerement irregulier (WONK 1). Police libre OFL, donc OK sur un site client. */
.theme-clair .titre--plume {
  font-family: "Fraunces", var(--police-serif);
  font-weight: 430;
  font-variation-settings: "opsz" 144, "SOFT" 32, "WONK" 1;
  letter-spacing: -0.004em;
  line-height: 1.0;
}

/* =========================================================
   EYEBROWS / KICKERS  -  petites capitales espacees
   ========================================================= */
.theme-clair .kicker {
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.7rem;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--c-corail-fonce);
  margin-bottom: 1.7rem;
}
.theme-clair .kicker__sep { opacity: 0.45; }
.theme-clair .kicker--sombre { color: rgba(17, 32, 47, 0.45); }

/* =========================================================
   CORPS  -  Lato aere, ardoise douce
   ========================================================= */
.theme-clair .prose {
  font-family: var(--police-corps);
  font-weight: 400;
  font-size: clamp(1.02rem, 0.99rem + 0.3vw, 1.14rem);
  line-height: 1.85;
  color: var(--c-corps);
  margin-top: 1.7rem;
}
.theme-clair .prose--sombre { color: var(--c-corps); }

/* Grandes declarations : serif leger, presque chuchote */
.theme-clair .prose--grande {
  font-family: var(--police-serif);
  font-weight: 300;
  font-size: clamp(1.5rem, 1.05rem + 1.9vw, 2.6rem);
  line-height: 1.42;
  letter-spacing: 0.004em;
  color: var(--c-encre);
}
/* L'emphase devient un trait manuscrit corail : la signature melinegobet */
.theme-clair .prose--grande em {
  font-family: var(--police-script);
  font-style: normal;
  font-weight: 400;
  font-size: 1.32em;
  line-height: 1;
  color: var(--c-corail-fonce);
  letter-spacing: 0.01em;
}

/* =========================================================
   BOUTONS  -  fines pilules, capitales espacees, retenues
   ========================================================= */
.theme-clair .bouton {
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  padding: 1.05em 2.1em;
  border-radius: 999px;
  border: 1px solid transparent;
}
.theme-clair .bouton--plein {
  background: var(--c-encre-pure);
  color: var(--c-creme);
  box-shadow: 0 18px 40px -24px rgba(4, 15, 31, 0.55);
}
.theme-clair .bouton--plein:hover {
  background: var(--c-corail-fonce);
  color: #fff;
  box-shadow: 0 22px 50px -22px rgba(199, 90, 48, 0.5);
}
.theme-clair .bouton--ligne {
  background: transparent;
  color: var(--c-encre);
  border-color: var(--c-trait-fort);
}
.theme-clair .bouton--ligne:hover {
  background: var(--c-encre-pure);
  color: var(--c-creme);
  border-color: var(--c-encre-pure);
}
.theme-clair .bouton--chaud {
  background: var(--c-corail);
  color: #3a1606;
  box-shadow: 0 18px 40px -22px rgba(245, 135, 84, 0.6);
}
.theme-clair .bouton--chaud:hover {
  background: #f7965f;
  box-shadow: 0 24px 54px -22px rgba(245, 135, 84, 0.7);
}

/* Liens-fleche : capitales fines, la fleche pousse au survol */
.theme-clair .lien-fleche {
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.74rem;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: var(--c-corail-fonce);
}
.theme-clair .lien-fleche:hover { color: var(--c-encre); }
.theme-clair .lien-fleche--sombre { color: var(--c-encre); }
.theme-clair .lien-fleche--sombre:hover { color: var(--c-corail-fonce); }

/* Deux liens tenus aux deux bouts de la grille, un a gauche, un a droite.
   Colles l'un a l'autre a gauche, ils se lisaient comme un seul bloc et la
   deuxieme proposition passait inapercue. Ecartes, chacun retrouve son poids
   et l'oeil balaie toute la largeur des cartes. */
.theme-clair .boutons--extremites {
  justify-content: space-between;
  align-items: baseline;
  gap: 1.4rem 2rem;
}
/* En colonne etroite, "space-between" n'aurait plus rien a separer : les liens
   s'empilent et on revient a un alignement a gauche, propre et lisible. */
@media (max-width: 760px) {
  .theme-clair .boutons--extremites {
    flex-direction: column;
    align-items: flex-start;
    gap: 1.1rem;
  }
}

/* =========================================================
   VOILE D'EVEIL  -  on emerge dans une lumiere ivoire chaude
   ========================================================= */
.theme-clair .eveil {
  background: radial-gradient(120% 120% at 50% 46%,
      #fdfcf8 0%,
      #f1eee6 58%,
      #e6e3d9 100%);
}

/* =========================================================
   LE PORTAIL  -  signature conservee : la mer turquoise + l'eclosion
   On garde la scene aimee, on accorde juste le bas et la signature
   au monde clair qui suit.
   ========================================================= */
.theme-clair .portail { background-color: var(--c-creme); }

.theme-clair .portail__image {
  filter: saturate(1.05) brightness(1.06) contrast(0.98);
}

.theme-clair .portail__video {
  filter: saturate(1.05) brightness(1.06) contrast(0.98);
}

/* Le bas du portail fond exactement dans la creme de la 1re section :
   aucune couture entre la mer et le texte. */
.theme-clair .portail__voile {
  background: linear-gradient(to bottom,
      rgba(255, 255, 255, 0.22) 0%,
      rgba(230, 227, 217, 0.06) 24%,
      rgba(230, 227, 217, 0.06) 46%,
      rgba(230, 227, 217, 0.34) 66%,
      rgba(230, 227, 217, 0.70) 82%,
      rgba(230, 227, 217, 0.92) 92%,
      rgba(230, 227, 217, 1.00) 99%);
}
.theme-clair .portail__vignette {
  background: radial-gradient(125% 108% at 50% 47%,
      rgba(255, 255, 255, 0.00) 0%,
      rgba(239, 237, 230, 0.08) 38%,
      rgba(230, 227, 217, 0.30) 72%,
      rgba(222, 218, 206, 0.52) 100%);
}
.theme-clair .portail__grain { opacity: 0.025; }

/* Le logo, medaillon pose sur la mer claire : floraison blanche + ombre douce */
.theme-clair .sceau::before {
  background: radial-gradient(circle at center,
      rgba(255, 255, 255, 0.78) 0%,
      rgba(255, 248, 238, 0.45) 34%,
      rgba(145, 216, 255, 0.16) 56%,
      rgba(145, 216, 255, 0.00) 74%);
  opacity: 0.95;
}
.theme-clair .sceau__logo {
  filter:
    drop-shadow(0 16px 38px rgba(13, 30, 50, 0.26))
    drop-shadow(0 4px 14px rgba(13, 30, 50, 0.18));
}
.theme-clair .sceau:hover .sceau__logo,
.theme-clair .sceau:focus-visible .sceau__logo,
.theme-clair .sceau.is-eclos .sceau__logo {
  filter:
    drop-shadow(0 22px 50px rgba(13, 30, 50, 0.28))
    drop-shadow(0 0 60px rgba(245, 135, 84, 0.45))
    brightness(1.03);
}

/* Signature : un trait manuscrit, l'ame du register feminin melinegobet */
.theme-clair .signature {
  font-family: var(--police-script);
  font-style: normal;
  font-weight: 400;
  font-size: clamp(1.7rem, 1.2rem + 1.4vw, 2.5rem);
  letter-spacing: 0.01em;
  color: var(--c-encre);
  /* Halo blanc en couches : le navy garde son contraste sur toutes les zones
     de la photo (eau claire comme reliefs sombres), sans voile rectangulaire. */
  text-shadow:
    0 0 10px rgba(255, 255, 255, 0.92),
    0 0 26px rgba(255, 255, 255, 0.70),
    0 1px 40px rgba(255, 255, 255, 0.55);
}

/* Invitation a entrer : encre + corail, fin */
.theme-clair .invitation__mot {
  font-family: var(--police-corps);
  color: var(--c-corail-fonce);
}
.theme-clair .invitation:hover .invitation__mot { color: var(--c-encre); }
.theme-clair .invitation__ligne {
  background: linear-gradient(to bottom,
      rgba(199, 90, 48, 0.0) 0%,
      rgba(199, 90, 48, 0.5) 50%,
      rgba(199, 90, 48, 0.0) 100%);
}
.theme-clair .invitation__ligne::after {
  background: var(--c-corail);
  box-shadow: 0 0 10px 1px rgba(245, 135, 84, 0.5);
}

/* =========================================================
   ALTERNANCE DES SECTIONS  -  creme / ivoire / blanc
   Le rythme melinegobet : grandes plages claires qui respirent.
   ========================================================= */
.theme-clair .bloc--navy  { background: var(--c-creme);      color: var(--c-corps); }
.theme-clair .bloc--creme { background: var(--c-blanc-chaud); color: var(--c-corps); }
.theme-clair #philosophie,
.theme-clair #bali { background: var(--c-pur); }
.theme-clair .contact {
  background: linear-gradient(180deg, var(--c-blanc-chaud) 0%, var(--c-creme) 100%);
}

/* =========================================================
   LE SEUIL  -  la lumiere chaude qui descend dans le texte
   ========================================================= */
.theme-clair .seuil::before {
  background:
    radial-gradient(44% 92% at 50% -6%,
        rgba(255, 246, 236, 0.85) 0%,
        rgba(245, 135, 84, 0.10) 30%,
        rgba(245, 135, 84, 0.04) 52%,
        rgba(245, 135, 84, 0.00) 74%),
    radial-gradient(30% 44% at 50% -8%,
        rgba(145, 216, 255, 0.12) 0%,
        rgba(145, 216, 255, 0.00) 64%);
}

/* Mention presse (logo Marie Claire) sous le seuil */
.theme-clair .presse-mini {
  font-family: var(--police-corps);
  color: rgba(17, 32, 47, 0.5);
  letter-spacing: 0.18em;
}
.theme-clair .presse-mini img { filter: none; opacity: 0.7; }
.theme-clair .presse-mini:hover { color: var(--c-encre); }

/* Coupure presse Marie Claire (ECRAN 9, #presse) : le visuel n'est pas une
   photo mais une "page de magazine" composee (vrai bandeau + titre reel de
   l'article). On garde le cadre portrait 4:5 a TOUTES les tailles (sur mobile
   le cadre passe sinon en 16/11 et rognerait le bandeau et la date), le
   contenu est centre, sur un fond ivoire de page, avec une ombre un peu plus
   douce que les vraies photos. */
.theme-clair #presse .split__visuel {
  aspect-ratio: 4 / 5;
  background: #FDFCF9;
  box-shadow: 0 40px 80px -50px var(--c-ombre);
}
.theme-clair #presse .split__visuel img { object-position: center; }

/* =========================================================
   NAVIGATION  -  verre ivoire, liens en petites capitales
   ========================================================= */
.theme-clair .nav {
  background: rgba(251, 250, 246, 0.78);
  border-bottom: 1px solid var(--c-trait-fin);
}
.theme-clair .nav__marque {
  font-weight: 500;
  font-size: 1.42rem;
  color: var(--c-encre);
}
.theme-clair .nav__marque span { color: var(--c-corail-fonce); }
.theme-clair .nav__liens a {
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.72rem;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: rgba(17, 32, 47, 0.72);
}
.theme-clair .nav__liens a:hover { color: var(--c-corail-fonce); }
.theme-clair .nav__cta {
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  color: var(--c-creme);
  background: var(--c-encre-pure);
}
.theme-clair .nav__cta:hover { background: var(--c-corail-fonce); }
.theme-clair .nav__bascule { color: var(--c-encre); }
.theme-clair .nav--multipage .nav__liens {
  background: rgba(251, 250, 246, 0.98);
  border-bottom: 1px solid var(--c-trait);
}
.theme-clair .nav--multipage .nav__liens a { border-bottom: 1px solid var(--c-trait-fin); }
.theme-clair .nav__liens a[aria-current="page"] { color: var(--c-corail-fonce); }
.theme-clair .nav__liens a[aria-current="page"]::after { background: var(--c-corail); }

/* Selecteur de langue FR / EN : discret dans la barre, la langue active
   en encre pleine, l'autre en gris doux qui s'anime au survol. Reste
   visible sur mobile (hors du panneau deroulant) pour que les anglophones
   trouvent l'anglais sans ouvrir le menu. */
.nav__langue {
  display: inline-flex;
  align-items: center;
  gap: 0.55em;
  white-space: nowrap;
}
.theme-clair .nav__langue a {
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.68rem;
  text-transform: uppercase;
  letter-spacing: 0.16em;
  color: rgba(17, 32, 47, 0.5);
  text-decoration: none;
  transition: color 400ms var(--ease-doux);
}
.theme-clair .nav__langue a:hover { color: var(--c-corail-fonce); }
.theme-clair .nav__langue a[aria-current="true"] { color: var(--c-encre); }
.theme-clair .nav__langue-sep {
  width: 1px;
  height: 0.82em;
  background: var(--c-trait-fort);
}
/* Barre resserree sur mobile : le selecteur + la pastille Contact + le
   hamburger doivent tenir sans se chevaucher, meme sur les petits ecrans. */
@media (max-width: 760px) {
  .theme-clair .nav { gap: 0.85rem; }
  .theme-clair .nav__langue { gap: 0.45em; }
}

/* =========================================================
   SPLIT  -  image + texte, ombre tres douce et chaude
   ========================================================= */
.theme-clair .split__visuel {
  border-radius: 4px;
  box-shadow: 0 50px 90px -52px var(--c-ombre);
}

/* Cadre video verticale (9:16) : la video "sur mesure" est filmee au
   format portrait. On bascule le cadre en 9/16, on borne sa largeur pour
   qu'il reste elegant sans devorer la colonne, et on le centre. Coins
   arrondis et ombre douce sont herites de la regle ci-dessus. */
.theme-clair .split__visuel--portrait {
  aspect-ratio: 9 / 16;
  width: 100%;
  max-width: 21rem;
  margin-inline: auto;
  background: var(--c-encre);
  /* Coins franchement adoucis : le cadre respire et s'accorde au ton doux
     du site (plus harmonieux que le 4px hérité, trop sec pour une video). */
  border-radius: 18px;
}
.theme-clair .split__visuel--portrait video {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  /* Reprend l'arrondi du cadre pour que la video (et Safari) clippe ses coins. */
  border-radius: inherit;
}

/* ---------------------------------------------------------
   Lecteur video maison (video "sur mesure", format 9:16).
   Objectif : AUCUN bouton plein ecran, sur aucun navigateur.
   Le plein ecran d'une video verticale sur un ecran paysage
   l'afficherait coincee entre deux larges bandes noires, et
   les controles natifs ne permettent pas de retirer ce bouton
   de facon fiable partout (Safari surtout). D'ou ces controles.
   Amelioration progressive : sans JS, les controles natifs du
   <video> restent (le script les retire et active ceux-ci).
   --------------------------------------------------------- */
.theme-clair .video-perso {
  position: absolute;
  inset: 0;
  border-radius: inherit;
  overflow: hidden;
  background: var(--c-encre);
}
.theme-clair .video-perso.is-enhanced .video-perso__media { cursor: pointer; }

/* Tant que le JS n'a pas pris la main : controles maison caches,
   on laisse au navigateur ses controles natifs (secours sans JS). */
.theme-clair .video-perso__play,
.theme-clair .video-perso__barre { display: none; }
.theme-clair .video-perso.is-enhanced .video-perso__play { display: inline-flex; }
.theme-clair .video-perso.is-enhanced .video-perso__barre { display: flex; }

/* Gros bouton lecture central (etat repos) */
.theme-clair .video-perso__play {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 4.6rem;
  height: 4.6rem;
  align-items: center;
  justify-content: center;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: rgba(251, 250, 246, 0.92);
  color: var(--c-encre);
  cursor: pointer;
  box-shadow: 0 16px 34px -16px rgba(4, 15, 31, 0.6);
  transition: transform 0.25s ease, background-color 0.25s ease,
              opacity 0.25s ease, visibility 0.25s ease;
}
.theme-clair .video-perso__play svg { margin-left: 3px; } /* centre optique du triangle */
.theme-clair .video-perso__play:hover { background: #fff; transform: translate(-50%, -50%) scale(1.06); }
.theme-clair .video-perso__play:focus-visible { outline: 2px solid var(--c-corail); outline-offset: 4px; }
.theme-clair .video-perso.is-started .video-perso__play {
  opacity: 0;
  visibility: hidden;
  transform: translate(-50%, -50%) scale(0.85);
}

/* Barre de controle basse, sur un leger voile degrade */
.theme-clair .video-perso__barre {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  align-items: center;
  gap: 0.7rem;
  padding: 1.5rem 0.9rem 0.85rem;
  background: linear-gradient(to top, rgba(4, 15, 31, 0.74), rgba(4, 15, 31, 0));
  opacity: 0;
  transform: translateY(6px);
  transition: opacity 0.25s ease, transform 0.25s ease;
  pointer-events: none;
}
.theme-clair .video-perso.is-started .video-perso__barre,
.theme-clair .video-perso.is-enhanced:hover .video-perso__barre,
.theme-clair .video-perso.is-enhanced:focus-within .video-perso__barre {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}

.theme-clair .video-perso__btn {
  flex: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: none;
  color: var(--c-blanc-chaud);
  cursor: pointer;
  transition: transform 0.2s ease;
}
.theme-clair .video-perso__btn:hover { transform: scale(1.12); }
.theme-clair .video-perso__btn:focus-visible { outline: 2px solid var(--c-corail); outline-offset: 2px; }

/* Bascule des icones selon l'etat (play/pause, son/muet) */
.theme-clair .video-perso__i-pause,
.theme-clair .video-perso.is-playing .video-perso__i-play { display: none; }
.theme-clair .video-perso.is-playing .video-perso__i-pause { display: block; }
.theme-clair .video-perso__i-muet,
.theme-clair .video-perso.is-muted .video-perso__i-son { display: none; }
.theme-clair .video-perso.is-muted .video-perso__i-muet { display: block; }

/* Piste de progression (clic pour se deplacer) */
.theme-clair .video-perso__piste {
  flex: 1 1 auto;
  position: relative;
  height: 3px;
  border-radius: 999px;
  background: rgba(251, 250, 246, 0.32);
  cursor: pointer;
}
.theme-clair .video-perso__piste::before {
  /* zone cliquable plus haute que le trait, sans l'epaissir visuellement */
  content: "";
  position: absolute;
  inset: -9px 0;
}
.theme-clair .video-perso__remplissage {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 0;
  background: var(--c-corail);
  border-radius: inherit;
}
.theme-clair .video-perso__temps {
  flex: none;
  min-width: 4ch;
  font-family: var(--police-corps);
  font-size: 0.78rem;
  letter-spacing: 0.02em;
  color: var(--c-blanc-chaud);
  font-variant-numeric: tabular-nums;
  text-align: center;
}

@media (prefers-reduced-motion: reduce) {
  .theme-clair .video-perso__play,
  .theme-clair .video-perso__barre,
  .theme-clair .video-perso__btn { transition: none; }
}

/* =========================================================
   SECTION "MA VISION"  -  le logo Believe en filigrane glissant
   La photo cede la place au logo, pose en medaillon a droite, qui
   glisse doucement en Y au fil du defilement (parallaxe, pilotee par
   --glisse dans main.js). Sans JS / mouvement reduit : --glisse vaut 0,
   le medaillon reste centre et immobile.
   ========================================================= */
.theme-clair .vision { position: relative; overflow: hidden; }
.theme-clair .vision__corps { position: relative; z-index: 1; }
.theme-clair .vision .split__texte { max-width: 33rem; }

.theme-clair .vision__filigrane {
  position: absolute;
  z-index: 0;
  top: 50%;
  right: clamp(-7rem, -3vw, -3rem);
  width: clamp(17rem, 36vw, 30rem);
  pointer-events: none;
  transform: translate3d(0, calc(-50% + var(--glisse, 0px)), 0);
  will-change: transform;
}
.theme-clair .vision__filigrane img {
  display: block;
  width: 100%;
  height: auto;
  /* Pas de border-radius : le PNG est deja detoure (fond transparent).
     Le clip circulaire rognait le "Believe" et laissait un liseré clair
     sur le bord (le fameux "contour blanc"). On laisse la transparence
     definir la forme ; l'ombre epouse la silhouette via drop-shadow. */
  opacity: 1;
  filter: drop-shadow(0 30px 50px rgba(4, 15, 31, 0.42));
}

/* Sous 820px : le medaillon passe DERRIERE le texte, centre et tres
   discret, et continue de glisser doucement. */
@media (max-width: 820px) {
  .theme-clair .vision .split__texte { max-width: none; }
  .theme-clair .vision__filigrane {
    right: 50%;
    width: min(78vw, 22rem);
    transform: translate3d(50%, calc(-50% + var(--glisse, 0px)), 0);
  }
  .theme-clair .vision__filigrane img {
    opacity: 0.1;
    filter: none;
  }
}

/* =========================================================
   PHILOSOPHIE  -  respiration entre le hero et "Ma vision"
   Depuis le retrait du pendule, le hero et "Ma vision"
   partageaient le meme creme : deux blocs colles qui se
   lisaient comme un seul pave lourd. On redonne de l'air,
   sans rien ajouter de decoratif :
   - "Ma vision" passe sur le blanc chaud : douce rupture de
     ton, l'oeil separe enfin les deux moments.
   - Un peu plus d'espace en haut du bloc, pour l'ouverture.
   - Le medaillon Believe redevient un vrai filigrane : il
     etait a pleine opacite (opacity:1), trop present et
     lourd ; il s'efface derriere le texte.
   Scope a .vision (unique a la page Philosophie).
   ========================================================= */
.theme-clair .vision.bloc--navy {
  background: var(--c-blanc-chaud);
  padding-top: clamp(7rem, 15vh, 12rem);
}
/* Desktop uniquement : le mobile garde deja son filigrane a 0.10, centre. */
@media (min-width: 821px) {
  .theme-clair .vision__filigrane img {
    opacity: 0.18;
    filter: drop-shadow(0 16px 30px rgba(4, 15, 31, 0.12));
  }
}

/* Hero plein ecran (desktop) : arrive en haut de la page, on ne voit que
   l'en-tete "La philosophie Believe", rien du bloc "Ma vision" ne deborde.
   Le hero occupe toute la hauteur visible sous la nav fixe, contenu centre
   verticalement. Scope a .page-philosophie pour ne toucher que cette page.
   L'::before decoratif est en position:absolute, donc passer .entete-page
   en flex ne le transforme pas en item : la mise en page reste intacte. */
@media (min-width: 821px) {
  .theme-clair.page-philosophie .entete-page--navy {
    min-height: calc(100vh - var(--nav-h, 76px));
    display: flex;
    flex-direction: column;
    justify-content: center;
  }
}

/* =========================================================
   PENDULE DE RADIESTHESIE  -  grande coupure entre l'intro et "Ma vision"
   Cristal corail rose taille sur-mesure, suspendu a une chaine doree, sur
   une bande creme lumineuse : une vraie respiration plein ecran avant le
   bloc navy "Ma vision".
   - La CHAINE (--p-chaine) se dessine du haut vers le bas au defilement,
     puis la PIERRE + son halo (--p-pierre) apparaissent (script bas de page).
   - Le balancier oscille en continu (pur transform, GPU-safe).
   - Tout est scope a .pendule* : aucune autre page n'est touchee.
   ========================================================= */
.theme-clair .pendule-bande {
  position: relative;
  min-height: 96vh;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background:
    radial-gradient(120% 78% at 50% 42%, #FCFBF7 0%, #F3F0E8 48%, #E6E2D7 100%);
  border-top: 1px solid rgba(17, 32, 47, 0.06);
}
/* voile lumineux rose derriere le cristal */
.theme-clair .pendule-bande::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(44% 50% at 50% 56%, rgba(255, 216, 200, 0.38), transparent 72%);
  mix-blend-mode: screen;
}
/* leger vignettage chaud sur les bords */
.theme-clair .pendule-bande::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(130% 100% at 50% 50%, transparent 58%, rgba(120, 96, 70, 0.07) 100%);
}
.theme-clair .pendule {
  position: relative;
  z-index: 1;
  width: auto;
  /* Defauts : si le JS ne tourne pas, le pendule reste visible entier. */
  --p-chaine: 1;
  --p-pierre: 1;
}
.theme-clair .pendule__svg {
  display: block;
  height: clamp(540px, 88vh, 900px);
  width: auto;
  overflow: visible;
  backface-visibility: hidden;
}
/* Le balancier pivote autour de l'anneau du haut (180,22).
   will-change + backface-visibility : force un calque GPU rasterise a la
   resolution de l'ecran (dpr 2), sinon Safari/Chrome rasterisent l'oscillation
   en 1x puis l'affichent en 2x -> cristal legerement flou, surtout au defilement. */
.theme-clair .pendule__balancier {
  transform-box: view-box;
  transform-origin: 180px 22px;
  animation: pendule-osc 6.6s cubic-bezier(0.37, 0, 0.63, 1) infinite;
  will-change: transform;
  backface-visibility: hidden;
}
/* La chaine se dessine du haut vers le bas au fil du defilement. */
.theme-clair .pendule__chaine {
  clip-path: inset(0 0 calc((1 - var(--p-chaine)) * 100%) 0);
  transition: clip-path 1s ease;
}
/* La pierre + son halo apparaissent ensuite, puis restent pleins et nets. */
.theme-clair .pendule__pierre {
  opacity: var(--p-pierre);
  transition: opacity 1s ease 0.5s;
}
.theme-clair .pendule__halo {
  opacity: calc(var(--p-pierre) * 0.66);
  transition: opacity 1.1s ease 0.5s;
  transform-box: view-box;
  transform-origin: 180px 640px;
  animation: halo-pulse 7s ease-in-out infinite alternate;
  will-change: transform;
}
.theme-clair .pendule__sparkle {
  transform-box: view-box;
  animation: sparkle-tw 3s ease-in-out infinite alternate;
}
.theme-clair .pendule__sparkle--a { transform-origin: 180px 508px; }
.theme-clair .pendule__sparkle--b {
  transform-origin: 152px 566px;
  animation-duration: 2.3s;
  animation-delay: 0.6s;
}

@keyframes pendule-osc {
  0%   { transform: rotate(-7deg); }
  50%  { transform: rotate(7deg); }
  100% { transform: rotate(-7deg); }
}
@keyframes halo-pulse {
  from { transform: scale(0.94); }
  to   { transform: scale(1.07); }
}
@keyframes sparkle-tw {
  from { opacity: 0.12; transform: scale(0.72); }
  to   { opacity: 0.66; transform: scale(1.12); }
}

/* Mouvement reduit : pas de balancement, chaine et pierre montrees entieres. */
@media (prefers-reduced-motion: reduce) {
  .theme-clair .pendule__balancier,
  .theme-clair .pendule__halo,
  .theme-clair .pendule__sparkle { animation: none; transform: none; }
  .theme-clair .pendule__chaine { clip-path: none; }
  .theme-clair .pendule__pierre,
  .theme-clair .pendule__halo,
  .theme-clair .pendule__chaine { transition: none; }
}

/* =========================================================
   TABLEAUX PLEINE LARGEUR  -  immersion en pleine lumiere
   ========================================================= */
.theme-clair .tableau { background: var(--c-creme); }
.theme-clair .tableau__fond img {
  filter: saturate(1.02) brightness(1.05) contrast(0.98);
}
.theme-clair .tableau__voile {
  background:
    radial-gradient(120% 120% at 50% 50%, rgba(251,250,246,0.46) 0%, rgba(251,250,246,0.28) 100%),
    linear-gradient(to bottom, rgba(251,250,246,0.42) 0%, rgba(251,250,246,0.18) 40%, rgba(251,250,246,0.42) 100%);
}
.theme-clair .tableau__texte .prose--grande { color: var(--c-encre); }

/* =========================================================
   MON APPROCHE  -  le mot de Camille, citation seule sur creme.
   Pas de photo : colonne etroite centree, beaucoup de souffle.
   Le bloc s'efface, il ne reste qu'une parole posee (esprit melinegobet).
   Fond --c-blanc-chaud herite de .bloc--creme, en continuite douce avec
   le bloc "En pratique" qui suit : aucune rupture, fluidite extreme.
   ========================================================= */
.theme-clair .bloc--mot {
  padding-block: clamp(7rem, 17vh, 13rem);
}
.theme-clair .mot__col {
  max-width: 40rem;
  margin-inline: auto;
  padding-inline: var(--bord);
  text-align: center;
}
.theme-clair .bloc--mot .kicker {
  justify-content: center;   /* le kicker est inline-flex : on le recentre */
  margin-bottom: 2.4rem;
}
.theme-clair .bloc--mot .prose--grande {
  max-width: none;
  margin-top: 0;
  line-height: 1.46;         /* un soupcon plus aere encore, pour le souffle */
}
@media (max-width: 600px) {
  .theme-clair .bloc--mot .prose--grande { line-height: 1.42; }
}
/* Variante plein ecran (page Retraites) : la citation « L'univers est en toi »
   occupe tout le viewport, centree. Un vrai temps de pause : on ne voit qu'elle,
   puis le reste apparait au defilement. Scope a .bloc--mot-plein, pose uniquement
   sur cette section ; le « mot de Camille » de la page Soins reste intact. */
.theme-clair .bloc--mot-plein {
  min-height: 100vh;
  min-height: 100dvh;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding-block: clamp(4rem, 10vh, 7rem);
}

/* Citation pleine largeur : grand serif italique, attribution manuscrite */
.theme-clair .citation__texte {
  font-family: var(--police-serif);
  font-weight: 300;
  font-style: italic;
  color: var(--c-encre);
  text-shadow: 0 2px 30px rgba(255, 255, 255, 0.65);
}
.theme-clair .citation__auteur {
  font-family: var(--police-corps);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  color: var(--c-corail-fonce);
}
.theme-clair .citation__auteur span { opacity: 0.5; }

/* Citation « jardin » (accueil, ECRAN 8) : la photo aerienne du jardin d'Ubud
   est vive et tres dense. Le lavis creme clair du theme n'y porte pas le texte.
   On offre a CE bandeau seul un traitement cinematographique sombre : la photo
   est assombrie, un voile marine doux ramene le contraste, la parole passe en
   blanc serif avec une signature corail chaude. Un vrai temps de respiration
   immersif au milieu d'une page claire. La citation « voile rose » de la page
   Histoire garde, elle, le traitement clair d'origine (scope .tableau--jardin). */
.theme-clair .tableau--jardin .tableau__fond img {
  filter: saturate(0.94) brightness(0.6) contrast(1.06);
}
.theme-clair .tableau--jardin .tableau__voile {
  background:
    radial-gradient(92% 92% at 50% 52%, rgba(4,15,31,0.60) 0%, rgba(4,15,31,0.40) 55%, rgba(4,15,31,0.30) 100%),
    linear-gradient(to bottom, rgba(4,15,31,0.34) 0%, rgba(4,15,31,0.50) 50%, rgba(4,15,31,0.34) 100%);
}
.theme-clair .tableau--jardin .citation__texte {
  color: var(--c-pur);
  text-shadow: 0 4px 44px rgba(4, 15, 31, 0.62);
}
.theme-clair .tableau--jardin .citation__auteur {
  color: var(--c-corail);
}
.theme-clair .tableau--jardin .citation__auteur span { opacity: 0.6; }

/* =========================================================
   VITRINE VIDEO  -  le teaser Believe en plein cadre (ECRAN 7b).
   Meme temps cinematographique sombre que la citation jardin :
   image assombrie, voile marine, parole blanche serif, kicker corail.
   Un battement vivant apres la galerie, au milieu de la page claire.
   ========================================================= */
/* #bali doit rester blanc (c'est ce blanc que la video revele en se fondant),
   donc sa marge interieure haute ne peut pas etre creme. On colle la video au
   haut de la section, et c'est le creme de la section precedente (les benefices)
   qui descend jusqu'a elle : l'ecart au-dessus reste creme, en continuite, sans
   cassure blanche. En dessous, l'ecart blanc convient (on enchaine sur du blanc). */
.theme-clair #bali:has(> .tableau--video:first-child) { padding-top: 0; }

/* La section creme juste avant la vitrine prolonge son fond jusqu'a la video :
   l'espace reste creme et pousse un peu la video vers le bas. */
.theme-clair .bloc--navy:has(+ #bali) {
  padding-bottom: calc(var(--bloc-y) + clamp(6.5rem, 12vh, 10rem));
}

/* Un fond blanc, identique a la section #bali, se tient derriere la video :
   quand la video s'efface en fin de lecture, c'est ce blanc reel qui apparait,
   donc une fusion sans couture avec le site (aucun bord de video visible). */
.theme-clair .tableau--video {
  background: var(--c-pur);
  margin-bottom: clamp(4rem, 9vh, 8rem);
}
.theme-clair .tableau--video .tableau__fond { background: var(--c-pur); }

.theme-clair .tableau--video .tableau__fond video {
  filter: saturate(1.02) brightness(0.9) contrast(1.02);
  transition: opacity 0.8s ease;
}
.theme-clair .tableau--video .tableau__voile {
  background:
    radial-gradient(120% 90% at 50% 54%, rgba(4,15,31,0.44) 0%, rgba(4,15,31,0.22) 46%, rgba(4,15,31,0.10) 100%),
    linear-gradient(to bottom, rgba(4,15,31,0.30) 0%, rgba(4,15,31,0.05) 34%, rgba(4,15,31,0.05) 66%, rgba(4,15,31,0.34) 100%);
  transition: opacity 0.8s ease;
}
.theme-clair .tableau--video .tableau__texte { max-width: 760px; transition: opacity 0.55s ease; }
.theme-clair .tableau--video .tableau__texte .kicker { color: var(--c-corail); }
.theme-clair .tableau--video .tableau__texte .titre {
  color: var(--c-pur);
  text-shadow: 0 4px 44px rgba(4, 15, 31, 0.62);
}
.theme-clair .tableau--video .tableau__texte .prose {
  color: rgba(255, 255, 255, 0.9);
}

/* Le logo signature : un vrai PNG (donc parfaitement net), centre, invisible par
   defaut. C'est aussi le bouton pour revoir la video, d'ou le reset de bouton.
   Une ombre douce le detache du blanc facon sceau ; au survol il grandit
   legerement (curseur main) pour signaler qu'on peut cliquer pour relancer. */
.theme-clair .tableau--video .tableau__signature {
  position: absolute;
  top: 50%;
  left: 50%;
  width: clamp(210px, 31%, 400px);
  margin: 0;
  padding: 0;
  border: 0;
  background: none;
  font: inherit;
  transform: translate(-50%, -50%) scale(0.94);
  opacity: 0;
  pointer-events: none;
  cursor: pointer;
  z-index: 3;
  transition: opacity 0.8s ease, transform 1s ease;
}
.theme-clair .tableau--video .tableau__signature img {
  display: block;
  width: 100%;
  height: auto;
  filter: drop-shadow(0 26px 50px rgba(4, 15, 31, 0.22));
  transition: transform 0.5s ease;
}
.theme-clair .tableau--video .tableau__signature:hover img { transform: scale(1.03); }
.theme-clair .tableau--video .tableau__signature:focus-visible {
  outline: 2px solid var(--c-corail);
  outline-offset: 10px;
  border-radius: 6px;
}

/* Fin de boucle (.is-outro, pilote par main.js) : la video et le voile
   s'effacent, l'accroche disparait, le blanc du site prend le cadre et le logo
   se revele, net et centre. Au redemarrage, le lac se refond depuis ce blanc. */
.theme-clair .tableau--video.is-outro .tableau__fond video { opacity: 0; }
.theme-clair .tableau--video.is-outro .tableau__voile { opacity: 0; }
.theme-clair .tableau--video.is-outro .tableau__texte {
  opacity: 0;
  pointer-events: none;
}
.theme-clair .tableau--video.is-outro .tableau__signature {
  opacity: 1;
  pointer-events: auto;
  transform: translate(-50%, -50%) scale(1);
}

/* Mouvement reduit : on fige la video sur son poster (le lac), sans animation. */
@media (prefers-reduced-motion: reduce) {
  .theme-clair .tableau--video .tableau__fond video { display: none; }
  .theme-clair .tableau--video .tableau__fond {
    background: center / cover no-repeat url("assets/believe-teaser-vitrine.webp?v=20260719c");
    filter: saturate(0.96) brightness(0.66) contrast(1.05);
  }
}

/* ---------------------------------------------------------------------------
   Mobile : la video paysage (16:9) s'affiche EN ENTIER, pleine largeur, sans
   recadrage. Avant, dans un grand cadre portrait, l'object-fit:cover n'en
   laissait voir que le milieu. Ici la section devient une band 16:9 exacte
   (donc aucun recognage), l'accroche passe SOUS la video en encre sur blanc,
   et le logo de fin se revele centre sur la band quand la lecture se termine.
   --------------------------------------------------------------------------- */
@media (max-width: 760px) {
  .theme-clair .tableau--video {
    display: block;
    min-height: 0;
    padding-bottom: clamp(1.5rem, 6vw, 2.5rem);
  }
  .theme-clair .tableau--video .tableau__fond {
    position: relative;
    inset: auto;
    width: 100%;
    aspect-ratio: 16 / 9;
    background: var(--c-pur);
  }
  .theme-clair .tableau--video .tableau__fond video { transform: none; }
  .theme-clair .tableau--video .tableau__voile { display: none; }
  .theme-clair .tableau--video .tableau__texte {
    position: relative;
    z-index: 2;
    max-width: 34rem;
    margin: 0 auto;
    padding: clamp(1.25rem, 5vw, 1.75rem) 1.25rem 0;
    text-align: center;
  }
  .theme-clair .tableau--video .tableau__texte .titre {
    color: var(--c-encre);
    text-shadow: none;
  }
  .theme-clair .tableau--video .tableau__texte .prose {
    color: var(--c-encre);
    opacity: 0.82;
  }
  /* En fin de video, l'accroche sous la band reste lisible : sur desktop elle
     est en overlay et doit s'effacer, ici elle est en contenu sous la video et
     doit rester. On annule donc l'opacity:0 de l'etat is-outro. */
  .theme-clair .tableau--video.is-outro .tableau__texte {
    opacity: 1;
    pointer-events: auto;
  }
  .theme-clair .tableau--video.is-outro .tableau__texte .prose { opacity: 0.82; }
  /* Le logo de fin se centre sur la band video (56.25vw = hauteur d'un 16:9
     en pleine largeur), pas sur toute la section devenue plus haute. */
  .theme-clair .tableau--video .tableau__signature {
    top: 0;
    left: 0;
    width: 100%;
    height: 56.25vw;
    display: grid;
    place-items: center;
    padding: 0;
    transform: none;
  }
  .theme-clair .tableau--video .tableau__signature img { width: clamp(150px, 42vw, 240px); }
  .theme-clair .tableau--video.is-outro .tableau__signature { transform: none; }
}

/* =========================================================
   LES TROIS CARTES  -  editorial : blanc, filet fin, peu d'ombre
   ========================================================= */
.theme-clair .carte {
  background: var(--c-pur);
  border: 1px solid var(--c-trait-fin);
  border-radius: 4px;
  box-shadow: 0 40px 70px -54px var(--c-ombre);
}
.theme-clair .carte:hover {
  box-shadow: 0 54px 96px -52px rgba(40, 44, 38, 0.24);
}
.theme-clair .carte__img { border-radius: 0; }
.theme-clair .carte__meta {
  font-family: var(--police-corps);
  font-weight: 700;
  letter-spacing: 0.2em;
  color: rgba(17, 32, 47, 0.45);
}
.theme-clair .carte__titre {
  font-size: 1.7rem;
  color: var(--c-encre);
}
.theme-clair .carte__texte { color: var(--c-corps); }
.theme-clair .carte__prix {
  font-family: var(--police-serif);
  color: var(--c-encre);
  border-top: 1px solid var(--c-trait-fin);
}
.theme-clair .carte__prix span { color: var(--c-corail-fonce); }

/* =========================================================
   ACCUEIL  -  photos adoucies (coherence "douceur")
   Les cadres photo (.split__visuel : portrait de Camille + coupure
   Marie Claire) et les 3 cartes de soins passent au meme rayon que
   la galerie Bali et la video de Soins (18px). Scope .page-accueil
   uniquement : soins.html / retraites.html gardent leur rendu net.
   .carte a overflow:hidden, l'arrondi clippe donc le haut de la photo.
   ========================================================= */
.theme-clair.page-accueil .split__visuel { border-radius: 18px; }
.theme-clair.page-accueil .carte { border-radius: 18px; }

/* =========================================================
   SOINS  -  photos adoucies (meme douceur que l'accueil)
   Le portrait d'en-tete (.entete-page__visuel : soin-ceremonie) et le
   cadre plus bas (.split__visuel : camille-ceremonie) passent de leur
   rayon net (10px / 4px) au 18px de la galerie et de la video portrait.
   Scope .page-soins uniquement : les autres pages gardent leur rendu.
   ========================================================= */
.theme-clair.page-soins .entete-page__visuel { border-radius: 18px; }
/* "En pratique" : la photo du soin (soin-energetique) est horizontale ;
   on passe le cadre en paysage pour ne pas la recadrer en portrait. */
.theme-clair.page-soins .split__visuel { border-radius: 18px; aspect-ratio: 16 / 9; }

/* =========================================================
   LES BENEFICES  -  grands numeros serif, filets fins
   ========================================================= */
.theme-clair .benefice { border-top: 1px solid var(--c-trait); }
.theme-clair .benefice__num {
  font-family: var(--police-serif);
  font-weight: 300;
  color: rgba(245, 135, 84, 0.6);
}
.theme-clair .benefice__titre { color: var(--c-encre); }
.theme-clair .benefice__texte { color: var(--c-corps); }

/* =========================================================
   CONTACT  -  offre, coordonnees
   ========================================================= */
.theme-clair .offre {
  font-family: var(--police-corps);
  border: 1px solid var(--c-trait-fort);
  background: rgba(255, 255, 255, 0.55);
  color: var(--c-corail-fonce);
}
.theme-clair .offre__pastille { color: var(--c-corail); }
.theme-clair .coords__ligne { border-bottom: 1px solid var(--c-trait); }
.theme-clair .coords dt {
  font-family: var(--police-corps);
  font-weight: 700;
  letter-spacing: 0.2em;
  color: var(--c-corail-fonce);
}
.theme-clair .coords dd { color: var(--c-encre); }
.theme-clair .coords a:hover { color: var(--c-corail-fonce); }

/* =========================================================
   PIED DE PAGE  -  creme dense, minimal
   ========================================================= */
.theme-clair .pied {
  background: var(--c-pied);
  border-top: 1px solid var(--c-trait);
}
.theme-clair .pied__logo { color: var(--c-encre); }
.theme-clair .pied__logo span { color: var(--c-corail-fonce); }

/* LISIBILITE DU PIED, 26/07/2026. Le pied paraissait terne. La tentation etait
   de passer le texte en corail : mauvaise idee, mesures a l'appui. Sur ce fond
   creme (#DEDACE), le corail fonce ne donne que 3,05 de contraste et le corail
   clair 1,77, la ou il en faut 4,5. On aurait perdu en lisibilite ce qu'on
   croyait gagner en presence. Le vrai coupable n'etait pas la teinte mais
   l'opacite : le texte etait pose entre 48 et 66% d'encre, et la mention de
   droits tombait a 2,84. On remonte donc l'encre, et le corail reste ce qu'il
   fait de mieux : l'accent du logo et le signal de survol. */
.theme-clair .pied__slogan {
  font-family: var(--police-script);
  font-style: normal;
  font-size: 1.3rem;
  letter-spacing: 0.01em;
  color: rgba(17, 32, 47, 0.72);   /* etait 0.62  ->  contraste 4,14 puis 5,53 */
}
.theme-clair .pied__sociaux a {
  font-family: var(--police-corps);
  font-weight: 400;
  letter-spacing: 0.04em;
  color: rgba(17, 32, 47, 0.80);   /* etait 0.66  ->  contraste 4,64 puis 6,99 */
}
.theme-clair .pied__sociaux a:hover { color: var(--c-corail-fonce); }
.theme-clair .pied__bas {
  color: rgba(17, 32, 47, 0.68);   /* etait 0.48  ->  contraste 2,84 puis 4,92 */
  border-top: 1px solid var(--c-trait);
}
.theme-clair .pied__bas a {
  color: rgba(17, 32, 47, 0.72);   /* etait 0.62  ->  contraste 4,14 puis 5,53 */
  text-decoration: none;
  transition: color 200ms ease;
}
.theme-clair .pied__bas a:hover { color: var(--c-corail-fonce); text-decoration: underline; text-underline-offset: 3px; }
.theme-clair .pied__bas a[aria-current="page"] { color: var(--c-corail-fonce); }

/* =========================================================
   FOCUS VISIBLE  -  anneau lisible et chaud
   ========================================================= */
.theme-clair a:focus-visible,
.theme-clair .bouton:focus-visible {
  outline: 2px solid var(--c-corail-fonce);
  outline-offset: 3px;   /* l'anneau respire autour de l'element, plus net */
  border-radius: 4px;
}

/* =========================================================
   =========================================================
   PAGES INTERIEURES  -  histoire, soins, retraites, equipe,
   temoignages. Memes briques, register clair editorial.
   ========================================================= */

/* En-tete de page : bandeaux clairs au lieu de navy */
.theme-clair .entete-page--navy  { background: var(--c-creme);      color: var(--c-corps); }
.theme-clair .entete-page--creme { background: var(--c-blanc-chaud); color: var(--c-corps); }
.theme-clair .entete-page--navy::before {
  background: radial-gradient(circle at center,
      rgba(245, 135, 84, 0.10) 0%,
      rgba(245, 135, 84, 0.04) 42%,
      rgba(245, 135, 84, 0.00) 70%);
}

/* Fil d'Ariane */
.theme-clair .fil { color: rgba(17, 32, 47, 0.5); }
.theme-clair .fil a:hover { color: var(--c-corail-fonce); }
.theme-clair .fil__courant { color: var(--c-corail-fonce); }
.theme-clair .entete-page--creme .fil { color: rgba(17, 32, 47, 0.5); }
.theme-clair .entete-page--creme .fil__courant { color: var(--c-corail-fonce); }

.theme-clair .entete-page__visuel {
  border-radius: 4px;
  box-shadow: 0 50px 90px -52px var(--c-ombre);
}

/* Image hero "Philosophie" adoucie : grand arrondi (contour doux, facon melinegobet)
   et ombre plus diffuse et legere, pour un cadre qui respire au lieu de trancher. */
.theme-clair .entete-page__visuel--doux {
  border-radius: clamp(2rem, 4.5vw, 3.25rem);
  box-shadow: 0 38px 80px -48px rgba(17, 32, 47, 0.40);
}

/* Soins : photo de ceremonie verticale. Cadrage soigne sur les visages
   et le panache de fumee ; on reste en portrait a toutes les tailles
   (sinon le cadre paysage 16/11 ecrase la photo en bande mince). */
.theme-clair .entete-page__visuel--portrait img { object-position: 50% 34%; }
@media (max-width: 920px) {
  .theme-clair .entete-page__visuel--portrait {
    aspect-ratio: 4 / 5;
    max-width: 440px;
  }
}

/* Cartes double cadre : on allege radicalement (editorial, pas "hardware") */
.theme-clair .coque {
  border-radius: 6px;
  background: transparent;
  border: 1px solid var(--c-trait-fin);
}
.theme-clair .coque__coeur {
  border-radius: 4px;
  background: var(--c-pur);
  border: 1px solid transparent;
}
.theme-clair .coque:hover {
  border-color: var(--c-trait);
  box-shadow: 0 50px 86px -54px rgba(40, 44, 38, 0.24);
}
.theme-clair .coque--clair { background: transparent; border-color: var(--c-trait-fin); }
.theme-clair .coque--clair .coque__coeur { background: var(--c-pur); border-color: transparent; }
.theme-clair .coque--clair:hover {
  border-color: var(--c-trait);
  box-shadow: 0 50px 86px -54px rgba(40, 44, 38, 0.22);
}

/* Frise d'etapes : parcours epure, "points d'energie" centres.
   On abandonne le grand numero et la carte double cadre : chaque temps
   se reduit a un marqueur concentrique (echo des chakras) et son titre,
   centres, poses directement sur la creme. */
.theme-clair .frise {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: clamp(2.6rem, 4.5vw, 4rem) clamp(2rem, 4vw, 3.4rem);
}
.theme-clair .frise__etape {
  flex: 0 1 190px;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: clamp(1.2rem, 2vw, 1.7rem);
}
/* Marqueur : un vrai pictogramme Phosphor (poids light), propre a chaque
   temps : namaste, yin-yang, lotus, oeil, sablier, bulles, lune etoilee.
   Trace plein en corail, mis a l'echelle du marqueur. */
.theme-clair .frise__marque {
  width: 50px;
  height: 50px;
  fill: var(--c-corail-fonce);
  transition: transform 600ms cubic-bezier(0.32, 0.72, 0, 1);
}
.theme-clair .frise__etape:hover .frise__marque {
  transform: translateY(-4px);
}
.theme-clair .frise__titre {
  color: var(--c-encre);
  max-width: 15ch;
  margin-inline: auto;
  font-size: clamp(1.05rem, 1.4vw, 1.18rem);
  line-height: 1.32;
}

/* En-tete de section centree : centrer aussi le kicker (sinon il reste a gauche) */
.theme-clair .entete-section--centre .kicker { justify-content: center; }
/* ... et rendre sa pleine largeur au titre (sinon le max-width: 20ch du theme
   le coince a gauche et il parait decentre malgre le text-align: center). */
.theme-clair .entete-section--centre .titre { max-width: 100%; }
/* La prose d'un en-tete centre doit se centrer comme BLOC (pas seulement ses
   lignes) : sinon elle garde sa mesure de 60ch calee a gauche et parait
   decentree. Mesure resserree, plus elegante sous un titre centre. */
.theme-clair .entete-section--centre .prose {
  max-width: min(54ch, 100%);
  margin-inline: auto;
}
/* Variante large : pour les titres longs (« ...en groupe ou couple a Bali. »,
   « Les retraites sur mesure. »), on offre une mesure un peu plus genereuse
   afin qu'ils respirent sur 2 lignes equilibrees plutot que 4 lignes serrees. */
.theme-clair .entete-section--large { max-width: min(48rem, 100%); }

/* =========================================================
   RETRAITE EN GROUPE - le « Pourquoi a plusieurs » en duo (image
   nette d'un cote, texte lisible de l'autre), puis deux axes larges.
   Plus aucun texte pose SUR la photo : l'oeil sait ou se poser.
   ========================================================= */
.theme-clair .duo-pourquoi {
  display: grid;
  grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(2rem, 5vw, 4.5rem);
  max-width: 1120px;
  margin-inline: auto;
}
.theme-clair .duo-pourquoi__visuel {
  margin: 0;
  border-radius: 22px;
  overflow: hidden;
  aspect-ratio: 3 / 2;
  box-shadow: 0 34px 80px -46px rgba(17, 32, 47, 0.5);
}
.theme-clair .duo-pourquoi__visuel img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}
.theme-clair .duo-pourquoi__titre {
  font-size: clamp(1.9rem, 1.3rem + 2vw, 2.9rem);
  line-height: 1.1;
  margin-top: clamp(1.1rem, 2vw, 1.5rem);
  margin-bottom: clamp(1.6rem, 3.2vw, 2.3rem);
}
.theme-clair .duo-pourquoi__intention {
  color: var(--c-corps);
  font-size: clamp(1.08rem, 1rem + 0.42vw, 1.28rem);
  line-height: 1.95;
  max-width: 44ch;
}
@media (max-width: 860px) {
  .theme-clair .duo-pourquoi {
    grid-template-columns: 1fr;
    gap: clamp(1.8rem, 6vw, 2.6rem);
  }
  .theme-clair .duo-pourquoi__visuel {
    aspect-ratio: 16 / 11;
    max-height: 58vh;
    width: 100%;
    margin-inline: auto;
  }
}

.theme-clair .axes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(2.6rem, 5vw, 5rem);
  max-width: 1080px;
  margin-inline: auto;
}
.theme-clair .axe__titre {
  font-size: clamp(1.35rem, 1.1rem + 0.9vw, 1.75rem);
  line-height: 1.16;
  max-width: 22ch;
  padding-bottom: clamp(1.1rem, 2.2vw, 1.5rem);
  margin-bottom: clamp(1.9rem, 3.4vw, 2.7rem);
  border-bottom: 1px solid var(--c-trait);
}
.theme-clair .atout + .atout { margin-top: clamp(2.9rem, 5.2vw, 4.2rem); }
.theme-clair .atout__titre {
  font-family: var(--police-corps);
  font-size: 0.98rem;
  font-weight: 700;
  letter-spacing: 0.02em;
  color: var(--c-corail-fonce);
  margin-bottom: 1rem;
}
.theme-clair .atout__texte {
  color: var(--c-corps);
  line-height: 1.95;
  font-size: clamp(1rem, 0.97rem + 0.16vw, 1.07rem);
}
@media (max-width: 800px) {
  .theme-clair .axes { grid-template-columns: 1fr; gap: clamp(2.6rem, 9vw, 3.6rem); }
  .theme-clair .axe__titre { max-width: 100%; }
}

/* =========================================================
   RETRAITES SUR MESURE  -  pratiques (liste editoriale) + fil des jours
   ========================================================= */
/* Les pratiques : un sommaire raffine. Nom en serif a gauche, description a
   droite, filets fins entre chaque. Se plie en pile sur mobile. */
.theme-clair .pratiques-liste {
  max-width: 880px;
  margin-inline: auto;
  border-top: 1px solid var(--c-trait);
}
.theme-clair .pratique {
  display: grid;
  grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.6fr);
  gap: clamp(0.8rem, 3.5vw, 3rem);
  align-items: baseline;
  padding: clamp(1.5rem, 3vw, 2.4rem) 0;
  border-bottom: 1px solid var(--c-trait);
}
.theme-clair .pratique__nom {
  margin: 0;
  font-family: var(--police-serif);
  font-size: clamp(1.4rem, 1rem + 1.5vw, 1.78rem);
  line-height: 1.12;
  color: var(--c-corail-fonce);
}
.theme-clair .pratique__desc {
  margin: 0;
  color: var(--c-corps);
  font-size: 1rem;
  line-height: 1.8;
  max-width: 48ch;
}
@media (max-width: 640px) {
  .theme-clair .pratique {
    grid-template-columns: 1fr;
    gap: 0.5rem;
    padding: clamp(1.3rem, 5vw, 1.9rem) 0;
  }
}
/* Label "Jour N" de la frise : nettement decale de l'intitule pour rester
   lisible. Un court filet centre marque la separation. */
.theme-clair .frise__jour {
  display: block;
  font-family: var(--police-corps);
  font-size: 0.74rem;
  font-weight: 700;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-corail-fonce);
  margin-bottom: 0.95rem;
}
.theme-clair .frise__jour::after {
  content: "";
  display: block;
  width: 22px;
  height: 1px;
  margin: 0.7rem auto 0;
  background: var(--c-trait);
}

/* Reperes (duree, tarif, dates) : 2 cartes en haut, la 3e allongee pleine
   largeur en dessous, pour un bloc equilibre plutot qu'un 2 + 1 bancal. */
.theme-clair .reperes {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}
.theme-clair .reperes .repere:last-child {
  grid-column: 1 / -1;
}
/* Deux sessions seules : cote a cote sur une meme ligne, pas de carte etalee. */
.theme-clair .reperes--paire .repere:last-child { grid-column: auto; }
@media (max-width: 560px) {
  .theme-clair .reperes { grid-template-columns: 1fr; }
}
.theme-clair .repere {
  background: var(--c-pur);
  border: 1px solid var(--c-trait-fin);
  border-radius: 4px;
}
.theme-clair .repere--clair { background: var(--c-pur); border-color: var(--c-trait-fin); }
.theme-clair .repere__label {
  font-family: var(--police-corps);
  font-weight: 700;
  letter-spacing: 0.2em;
  color: var(--c-corail-fonce);
}
.theme-clair .repere--clair .repere__label { color: var(--c-corail-fonce); }
.theme-clair .repere__valeur { color: var(--c-encre); }
.theme-clair .repere--clair .repere__valeur { color: var(--c-encre); }
.theme-clair .repere__valeur small {
  font-family: var(--police-corps);
  color: var(--c-corps);
}
.theme-clair .repere--clair .repere__valeur small { color: var(--c-corps); }

/* --- Soins · bloc "En pratique" facon hybride (phrase + deux chiffres) ---
   Une phrase douce (chapo serif leger) porte le lieu et l'esprit, avec le nom
   du lieu accentue en Fraunces corail (meme accent que le titre Philosophie).
   Puis seulement deux chiffres (duree, tarif) poses sous un filet fin, sans
   cartes. Tout est scope a .repere-phrase et .reperes--duo : retraites et les
   autres usages de .reperes ne bougent pas. */
.theme-clair .repere-phrase {
  font-family: var(--police-serif);
  font-weight: 300;
  font-size: clamp(1.35rem, 1rem + 1.2vw, 1.7rem);
  line-height: 1.5;
  color: var(--c-encre);
  max-width: 32ch;
  margin-top: clamp(1rem, 2.5vw, 1.6rem);
}
.theme-clair .repere-phrase em {
  font-style: normal;
  font-family: "Fraunces", var(--police-serif);
  font-variation-settings: "opsz" 90, "SOFT" 30, "WONK" 1;
  color: var(--c-corail-fonce);
}
.theme-clair .reperes--duo {
  display: flex;
  flex-wrap: wrap;
  gap: clamp(2rem, 6vw, 3.5rem);
  border-top: 1px solid var(--c-trait);
  padding-top: clamp(1.2rem, 3vw, 1.7rem);
  margin-top: clamp(1.8rem, 4vw, 2.6rem);
}
.theme-clair .reperes--duo .repere,
.theme-clair .reperes--duo .repere--clair {
  background: none;
  border: 0;
  border-radius: 0;
  padding: 0;
}

/* Inclusions */
.theme-clair .inclusion {
  border-bottom: 1px solid var(--c-trait);
  color: var(--c-corps);
}
.theme-clair .inclusion__puce { background: var(--c-corail); box-shadow: none; }
.theme-clair .inclusions--clair .inclusion {
  border-bottom-color: var(--c-trait);
  color: var(--c-corps);
}
.theme-clair .inclusions--clair .inclusion__puce { background: var(--c-corail); }

/* =========================================================
   SOINS · OU VIVRE LE SOIN  -  modalites (presentiel / a distance)
   Deux groupes fideles au parcours de Camille. Cartes blanches a filet
   fin (meme langage que .carte / .repere, sur fond ivoire elles se posent
   en douceur). La modalite a distance prend une carte large a filet corail :
   elle porte le message cle, un soin aussi intense a distance qu'en
   presentiel. Tout est scope a .modalite* : rien d'autre ne bouge.
   ========================================================= */
.theme-clair .modalites-groupe {
  max-width: 1000px;
  margin-inline: auto;
}
.theme-clair .modalites-groupe:first-of-type {
  margin-top: clamp(3rem, 6vh, 5rem);
}
.theme-clair .modalites-groupe + .modalites-groupe {
  margin-top: clamp(2rem, 4.5vw, 3.2rem);
}
.theme-clair .modalites-groupe__cat {
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.74rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--c-corail-fonce);
  margin: 0 0 clamp(1.1rem, 2.4vw, 1.6rem);
  padding-bottom: clamp(0.75rem, 1.6vw, 1.05rem);
  border-bottom: 1px solid var(--c-trait);
}
.theme-clair .modalites-duo {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1.1rem, 2.4vw, 1.8rem);
}
.theme-clair .modalite {
  background: var(--c-pur);
  border: 1px solid var(--c-trait-fin);
  border-radius: 6px;
  padding: clamp(1.7rem, 3vw, 2.4rem);
  box-shadow: 0 40px 70px -54px var(--c-ombre);
}
.theme-clair .modalite__titre {
  font-family: var(--police-serif);
  font-weight: 400;
  font-size: clamp(1.45rem, 1.15rem + 1vw, 1.8rem);
  line-height: 1.14;
  color: var(--c-encre);
  margin: 0 0 0.8rem;
}
.theme-clair .modalite__texte {
  color: var(--c-corps);
  line-height: 1.9;
  font-size: 1rem;
  margin: 0;
  max-width: 46ch;
}
/* Carte large "a distance" : filet corail en tete, titre a gauche facon
   sommaire, corps a droite, message cle en serif italique corail. */
.theme-clair .modalite--large {
  display: grid;
  grid-template-columns: minmax(0, 0.75fr) minmax(0, 1.6fr);
  gap: clamp(1rem, 4vw, 3.2rem);
  align-items: start;
  border-top: 3px solid var(--c-corail);
  padding: clamp(2rem, 3.6vw, 2.8rem) clamp(1.7rem, 3vw, 2.6rem);
}
.theme-clair .modalite--large .modalite__titre { margin: 0; }
.theme-clair .modalite__cle {
  margin: clamp(1rem, 2.2vw, 1.4rem) 0 0;
  font-family: var(--police-serif);
  font-style: italic;
  font-size: clamp(1.18rem, 1rem + 0.7vw, 1.45rem);
  line-height: 1.5;
  color: var(--c-corail-fonce);
}
@media (max-width: 760px) {
  .theme-clair .modalites-duo { grid-template-columns: 1fr; }
  .theme-clair .modalite--large {
    grid-template-columns: 1fr;
    gap: clamp(0.9rem, 3vw, 1.4rem);
  }
}

/* BALI - Pourquoi cette terre (accueil, #bali) */
.theme-clair .bali-raisons {
  margin-top: clamp(3.5rem, 8vw, 6rem);
}
.theme-clair .bali-raisons__intro {
  font-family: var(--police-serif);
  font-weight: 300;
  font-size: clamp(1.5rem, 1.1rem + 1.6vw, 2.2rem);
  line-height: 1.4;
  color: var(--c-encre);
  max-width: 26ch;
  margin: 0;
}
.theme-clair .bali-raisons__intro em {
  font-style: normal;
  font-family: "Fraunces", var(--police-serif);
  font-variation-settings: "opsz" 90, "SOFT" 30, "WONK" 1;
  color: var(--c-corail-fonce);
}
.theme-clair .bali-raisons__grille {
  list-style: none;
  margin: clamp(2.2rem, 5vw, 3.4rem) 0 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1.8rem, 4vw, 3.2rem) clamp(2.4rem, 6vw, 5rem);
}
.theme-clair .bali-raison {
  border-top: 1px solid var(--c-trait);
  padding-top: clamp(1rem, 2vw, 1.35rem);
}
.theme-clair .bali-raison__icone {
  display: block;
  color: var(--c-corail-fonce);
  line-height: 0;
}
.theme-clair .bali-raison__icone svg {
  width: 30px;
  height: 30px;
  display: block;
}
.theme-clair .bali-raison__titre {
  font-family: var(--police-serif);
  font-weight: 400;
  font-size: clamp(1.28rem, 1rem + 0.9vw, 1.6rem);
  line-height: 1.22;
  color: var(--c-encre);
  margin: 0.7rem 0 0;
  max-width: 22ch;
}
.theme-clair .bali-raison__texte {
  font-family: var(--police-corps);
  font-weight: 400;
  font-size: 0.98rem;
  line-height: 1.72;
  color: var(--c-corps);
  margin: 0.7rem 0 0;
}
.theme-clair .bali-raisons__note {
  font-family: var(--police-serif);
  font-weight: 300;
  font-style: italic;
  font-size: clamp(1.15rem, 0.95rem + 0.8vw, 1.5rem);
  line-height: 1.5;
  color: var(--c-encre);
  margin-top: clamp(2.4rem, 5vw, 3.6rem);
  padding-top: clamp(1.4rem, 3vw, 2rem);
  border-top: 1px solid var(--c-trait);
  text-align: center;
}
@media (max-width: 620px) {
  .theme-clair .bali-raisons__grille { grid-template-columns: 1fr; }
}

/* BALI - accroche centree au-dessus de la galerie */
.theme-clair .bali-intro {
  max-width: 66ch;
  margin-inline: auto;
  text-align: center;
}
.theme-clair .bali-intro .titre { margin-inline: auto; }
.theme-clair .bali-intro__prose {
  margin-top: clamp(1.3rem, 3vw, 2rem);
  max-width: 52rem;
  margin-inline: auto;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(1.3rem, 3.5vw, 2.6rem);
  text-align: left;
}
@media (max-width: 640px) {
  .theme-clair .bali-intro__prose { grid-template-columns: 1fr; }
}

/* BALI - galerie circulaire des lieux sacres */
.theme-clair .galerie-bali {
  margin-top: clamp(2.6rem, 6vw, 4.6rem);
  width: 100%;
  -webkit-user-select: none;
          user-select: none;
  outline: none;
}
.theme-clair .galerie-bali__scene {
  position: relative;
  height: clamp(480px, 56vw, 690px);
  overflow: hidden;
  cursor: grab;
  touch-action: pan-y;
  perspective: 1600px; /* recalculee par le JS selon la taille reelle des cartes */
}
.theme-clair .galerie-bali.est-saisi .galerie-bali__scene { cursor: grabbing; }
.theme-clair .galerie-bali__piste {
  position: absolute;
  inset: 0;
  margin: 0;
  padding: 0;
  list-style: none;
  transform-style: preserve-3d;
}
.theme-clair .galerie-bali__carte {
  position: absolute;
  top: 50%;
  left: 50%;
  height: clamp(440px, 52vw, 640px);
  width: auto;
  aspect-ratio: 3 / 4;
  border-radius: 18px;
  overflow: hidden;
  background: #e8e1d2;
  box-shadow:
    0 44px 84px -34px rgba(17, 32, 47, 0.5),
    0 16px 32px -18px rgba(17, 32, 47, 0.38);
  transform-origin: center center;
  transform: translate(-50%, -50%);
  will-change: transform, opacity;
  backface-visibility: hidden;
  opacity: 0;
}
.theme-clair .galerie-bali__carte img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  pointer-events: none;
}
.theme-clair .galerie-bali__carte::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.16);
  background: linear-gradient(180deg, rgba(17, 32, 47, 0) 36%, rgba(17, 32, 47, 0.16) 56%, rgba(15, 28, 42, 0.66) 100%);
  pointer-events: none;
}
.theme-clair .galerie-bali__carte-texte {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 2;
  padding: clamp(0.62rem, 1.4vw, 1rem) clamp(0.66rem, 1.5vw, 1.05rem);
  display: flex;
  flex-direction: column;
  gap: 0.16rem;
  text-align: left;
  pointer-events: none;
  opacity: 0; /* pilote par le JS : net uniquement sur la carte de face */
  transition: opacity 0.3s ease;
}
.theme-clair .galerie-bali__carte-lieu {
  font-family: var(--police-serif);
  font-weight: 400;
  font-size: clamp(0.95rem, 0.7rem + 0.6vw, 1.22rem);
  line-height: 1.08;
  color: #fff;
  text-shadow: 0 1px 12px rgba(10, 20, 31, 0.6);
}
.theme-clair .galerie-bali__carte-desc {
  margin-top: 0.05rem;
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.56rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.92);
  text-shadow: 0 1px 8px rgba(10, 20, 31, 0.55);
}
.theme-clair .galerie-bali__socle {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: clamp(1.1rem, 3vw, 2rem);
  margin-top: clamp(1.4rem, 3vw, 2.3rem);
}
.theme-clair .galerie-bali__legende {
  margin: 0;
  text-align: center;
  min-width: 13rem;
  transition: opacity 0.4s ease, transform 0.4s ease;
}
.theme-clair .galerie-bali__legende:not(.est-visible) {
  opacity: 0;
  transform: translateY(7px);
}
/* la legende du bas fait doublon avec le texte incruste : gardee pour les
   lecteurs d'ecran (aria-live) mais masquee visuellement */
.theme-clair .galerie-bali__legende--sr {
  position: absolute;
  width: 1px;
  height: 1px;
  min-width: 0;
  margin: -1px;
  padding: 0;
  border: 0;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  overflow: hidden;
  white-space: nowrap;
}
.theme-clair .galerie-bali__lieu {
  display: block;
  font-family: var(--police-serif);
  font-weight: 400;
  font-size: clamp(1.3rem, 1rem + 1vw, 1.75rem);
  line-height: 1.14;
  color: var(--c-encre);
}
.theme-clair .galerie-bali__desc {
  display: block;
  margin-top: 0.32rem;
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.68rem;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--c-corail-fonce);
}
.theme-clair .galerie-bali__fleche {
  flex: none;
  width: 2.9rem;
  height: 2.9rem;
  border-radius: 50%;
  border: 1px solid var(--c-trait);
  background: var(--c-blanc-chaud);
  color: var(--c-encre);
  display: grid;
  place-items: center;
  cursor: pointer;
  transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease, transform 0.25s ease;
}
.theme-clair .galerie-bali__fleche:hover {
  background: var(--c-corail);
  color: #fff;
  border-color: var(--c-corail);
  transform: translateY(-2px);
}
.theme-clair .galerie-bali__fleche:focus-visible {
  outline: 2px solid var(--c-corail);
  outline-offset: 3px;
}
.theme-clair .galerie-bali__aide {
  margin: 0;
  text-align: center;
  font-family: var(--police-corps);
  font-weight: 400;
  font-size: 0.66rem;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: var(--c-doux);
}
.theme-clair .galerie-bali:focus-visible {
  outline: 2px solid var(--c-corail);
  outline-offset: 6px;
  border-radius: 4px;
}
/* Mobile : les deux grandes ombres floues (blur 84px + 32px) des cartes sont
   repeintes a chaque frame sur 28 vignettes -> saccade. On garde une seule ombre
   courte, quasi identique a l'oeil mais bien plus legere a peindre. */
@media (max-width: 700px) {
  .theme-clair .galerie-bali__carte {
    box-shadow: 0 16px 28px -16px rgba(17, 32, 47, 0.5);
  }
}
@media (prefers-reduced-motion: reduce) {
  .theme-clair .galerie-bali__aide { display: none; }
}

/* Equipe */
.theme-clair .membre__mono {
  background:
    radial-gradient(120% 90% at 50% 18%, rgba(245, 135, 84, 0.14) 0%, rgba(245, 135, 84, 0) 60%),
    linear-gradient(160deg, #f3efe6 0%, #e6e3d9 70%);
}
.theme-clair .membre__initiales {
  font-family: var(--police-serif);
  font-weight: 400;
  color: var(--c-corail-fonce);
  text-shadow: none;
}
.theme-clair .membre__role {
  font-family: var(--police-corps);
  font-weight: 700;
  letter-spacing: 0.2em;
  color: var(--c-corail-fonce);
}
.theme-clair .membre__nom { color: var(--c-encre); }
.theme-clair .membre__nom small {
  font-family: var(--police-corps);
  color: var(--c-doux);
}
.theme-clair .membre__texte { color: var(--c-corps); }

/* Avis / temoignages */
.theme-clair .avis__marque {
  font-family: var(--police-serif);
  color: rgba(245, 135, 84, 0.55);
}
.theme-clair .avis__texte {
  font-family: var(--police-serif);
  font-weight: 400;
  font-style: italic;
  color: var(--c-encre);
}
.theme-clair .avis__pied { border-top: 1px solid var(--c-trait); }
.theme-clair .avis__pastille {
  background: rgba(245, 135, 84, 0.1);
  border: 1px solid rgba(245, 135, 84, 0.32);
  font-family: var(--police-serif);
  color: var(--c-corail-fonce);
}
.theme-clair .avis__nom {
  font-family: var(--police-corps);
  font-weight: 700;
  color: var(--c-encre);
}
.theme-clair .avis__contexte {
  font-family: var(--police-corps);
  letter-spacing: 0.16em;
  color: var(--c-corail-fonce);
}

/* Pile d'avis au defilement : cartes opaques claires */
.theme-clair .pile.is-actif .pile__carte .coque {
  background: var(--c-pur);
  border-color: var(--c-trait);
  box-shadow: 0 46px 80px -50px rgba(40, 44, 38, 0.4);
}
.theme-clair .pile.is-actif .pile__carte .coque__coeur {
  background: var(--c-pur);
  border-color: transparent;
}

/* =========================================================
   AVIS VIDEO : le pied de carte devient un declencheur.
   Le vrai visage (miniature YouTube du temoignage) remplace
   la pastille-initiale ; un clic ouvre la video en surimpression.
   Plus reel, plus incarne, sans quitter la page.
   ========================================================= */
.theme-clair .avis__lecture {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  margin: 1.8rem 0 0;
  padding: 1.4rem 0 0;
  border: 0;
  border-top: 1px solid var(--c-trait);
  background: transparent;
  color: inherit;
  font: inherit;
  text-align: left;
  cursor: pointer;
}
.theme-clair .avis__portrait {
  position: relative;
  flex: none;
  width: 62px;
  height: 62px;
}
.theme-clair .avis__portrait img {
  width: 100%;
  height: 100%;
  border-radius: 50%;
  object-fit: cover;
  object-position: center 28%;
  display: block;
  box-shadow: 0 0 0 2px rgba(245, 135, 84, 0.32),
              0 10px 22px -12px rgba(40, 44, 38, 0.55);
  transition: transform 0.35s ease, box-shadow 0.35s ease;
}
.theme-clair .avis__play {
  position: absolute;
  right: -3px;
  bottom: -3px;
  display: grid;
  place-items: center;
  width: 25px;
  height: 25px;
  border-radius: 50%;
  background: var(--c-corail-fonce);
  color: #fff;
  box-shadow: 0 0 0 2.5px var(--c-pur);
  transition: transform 0.35s ease, background 0.3s ease;
}
.theme-clair .avis__play svg { transform: translateX(1px); }
.theme-clair .avis__voir {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin-top: 0.5rem;
  font-family: var(--police-corps);
  font-size: 0.82rem;
  font-weight: 700;
  letter-spacing: 0.01em;
  text-transform: none;
  color: var(--c-corail-fonce);
}
.theme-clair .avis__voir::before {
  content: "";
  width: 0;
  height: 0;
  border-style: solid;
  border-width: 4px 0 4px 7px;
  border-color: transparent transparent transparent currentColor;
}
.theme-clair .avis__lecture:hover .avis__portrait img,
.theme-clair .avis__lecture:focus-visible .avis__portrait img {
  transform: scale(1.05);
  box-shadow: 0 0 0 2px rgba(245, 135, 84, 0.55),
              0 14px 26px -12px rgba(40, 44, 38, 0.6);
}
.theme-clair .avis__lecture:hover .avis__play { transform: scale(1.08); }
.theme-clair .avis__lecture:hover .avis__voir {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.theme-clair .avis__lecture:focus-visible {
  outline: 2px solid var(--c-corail);
  outline-offset: 4px;
  border-radius: 6px;
}

/* =========================================================
   LIGHTBOX VIDEO : le temoignage YouTube en surimpression.
   ========================================================= */
.theme-clair .lightbox {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: grid;
  place-items: center;
  padding: clamp(1.1rem, 4vw, 3rem);
}
.theme-clair .lightbox[hidden] { display: none; }
.theme-clair .lightbox__voile {
  position: absolute;
  inset: 0;
  background: rgba(4, 15, 31, 0.84);
  -webkit-backdrop-filter: blur(6px);
  backdrop-filter: blur(6px);
  opacity: 0;
  transition: opacity 0.35s ease;
}
.theme-clair .lightbox.is-ouvert .lightbox__voile { opacity: 1; }
.theme-clair .lightbox__cadre {
  position: relative;
  width: min(980px, 100%);
  opacity: 0;
  transform: translateY(14px) scale(0.98);
  transition: opacity 0.4s ease, transform 0.4s ease;
}
.theme-clair .lightbox.is-ouvert .lightbox__cadre {
  opacity: 1;
  transform: translateY(0) scale(1);
}
.theme-clair .lightbox__video {
  position: relative;
  aspect-ratio: 16 / 9;
  background: #000;
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 40px 90px -30px rgba(0, 0, 0, 0.8);
}
.theme-clair .lightbox__video iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}
.theme-clair .lightbox__fermer {
  position: absolute;
  top: -14px;
  right: -14px;
  z-index: 2;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 0;
  border-radius: 50%;
  background: var(--c-pur);
  color: var(--c-encre);
  cursor: pointer;
  box-shadow: 0 10px 26px -10px rgba(0, 0, 0, 0.6);
  transition: transform 0.25s ease, background 0.25s ease, color 0.25s ease;
}
.theme-clair .lightbox__fermer:hover {
  transform: rotate(90deg);
  background: var(--c-corail-fonce);
  color: #fff;
}
.theme-clair .lightbox__fermer:focus-visible {
  outline: 2px solid var(--c-corail);
  outline-offset: 3px;
}
@media (max-width: 620px) {
  .theme-clair .lightbox__fermer { top: -12px; right: 2px; }
}
/* Fond fige tant que la video est ouverte. */
html.video-ouverte { overflow: hidden; }
@media (prefers-reduced-motion: reduce) {
  .theme-clair .avis__portrait img,
  .theme-clair .avis__play,
  .theme-clair .lightbox__voile,
  .theme-clair .lightbox__cadre,
  .theme-clair .lightbox__fermer { transition: none; }
  .theme-clair .lightbox__cadre { transform: none; }
}

/* Lightbox en mode portrait : pour les Shorts verticaux (9/16). */
.theme-clair .lightbox.is-portrait .lightbox__cadre {
  width: min(430px, calc(86vh * 9 / 16), 100%);
}
.theme-clair .lightbox.is-portrait .lightbox__video {
  aspect-ratio: 9 / 16;
  border-radius: 16px;
}

/* =========================================================
   ENVOI : la signature de Camille, derniere note avant le
   pied de page. Reprend la phrase de son site d'origine.
   ========================================================= */
.theme-clair .envoi {
  text-align: center;
  /* Meme fond plat que la section des avis (.bloc--navy) : halo corail retire
     pour qu'il n'y ait aucune rupture de couleur entre les deux sections. */
  background: var(--c-creme);
  /* PLEIN ECRAN, demande du 26/07/2026. Au bout des temoignages, la phrase de
     Camille prend tout le cadre : c'est un temps d'arret, on ne la lit plus en
     passant. On descend ensuite et on tombe sur l'appel final.
     100svh plutot que 100vh : sur telephone, svh tient compte de la barre du
     navigateur. Avec vh, le bloc depasserait et la signature serait coupee.
     La ligne 100vh reste en secours pour les navigateurs sans svh. */
  min-height: 100vh;
  min-height: 100svh;
  display: grid;
  place-items: center;
  padding-top: clamp(2rem, 6vh, 4rem);
  padding-bottom: clamp(2rem, 6vh, 4rem);
  /* La marge negative qui tirait ce bloc par-dessus la fin de l'empilement est
     retiree. Elle servait a coller la phrase aux temoignages quand elle etait
     une simple ligne de fin. Maintenant que la section prend tout l'ecran, ce
     recouvrement de 120 px laissait depasser le bas de la derniere carte en
     haut du cadre : on ne tombait plus sur la phrase seule, mais sur la phrase
     plus un morceau de carte. Sans la marge, le plein ecran est net.
     Le padding-bottom de la section des avis reste a zero (regle ci-dessous),
     donc aucun vide n'est reapparu au passage. */
  margin-top: 0;
}
/* Sans ca, les 120px de padding du bas des avis et du haut du ruban
   recreaient un grand vide autour de la signature. Ici on annule carrement le
   padding bas des avis pour que la phrase colle a l'empilement ; regle limitee
   a la page temoignages (la signature .envoi n'existe que la). */
.theme-clair .bloc--navy:has(+ .envoi) { padding-bottom: 0; }
.theme-clair .envoi + .bloc { padding-top: clamp(2.5rem, 5vw, 3.5rem); }
.theme-clair .envoi__inner {
  max-width: 46rem;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.theme-clair .envoi__etoile {
  color: var(--c-corail-fonce);
  line-height: 0;
}
.theme-clair .envoi__phrase {
  /* Etoile remontee : on ecarte la phrase du symbole. Le groupe etant centre
     dans le plein ecran, agrandir cet ecart fait monter l'etoile et lui donne
     l'air d'une ouverture, plutot que d'un petit signe pose sur le texte. */
  margin: clamp(2.2rem, 4.6vw, 3.4rem) 0 0;
  font-size: clamp(1.7rem, 1.2rem + 2.1vw, 2.85rem);
  line-height: 1.3;
}
.theme-clair .envoi__phrase p { margin: 0; }
.theme-clair .envoi__signe {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  margin-top: clamp(1.6rem, 3.4vw, 2.4rem);
}
.theme-clair .envoi__nom {
  font-family: var(--police-script);
  font-size: clamp(1.7rem, 1.25rem + 1.5vw, 2.2rem);
  line-height: 1;
  color: var(--c-encre);
}
.theme-clair .envoi__role {
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.74rem;
  text-transform: uppercase;
  letter-spacing: 0.22em;
  color: var(--c-corail-fonce);
}

/* Declarations / pull-quotes (page Histoire) */
.theme-clair .declaration {
  border-left: 2px solid var(--c-corail);
  background: rgba(245, 135, 84, 0.05);
}
.theme-clair .declaration p {
  font-family: var(--police-serif);
  font-weight: 400;
  font-style: italic;
  color: var(--c-encre);
}
.theme-clair .mission p {
  color: var(--c-corps);
  border-left: 1px solid var(--c-corail);
}


/* =========================================================
   LE TIRAGE  -  page Equipe : chaque membre est une carte
   de tarot. Dos mystique (embleme Believe) -> clic : la
   personne se revele -> signe ankh -> clic : flip 3D vers
   la biographie. Tout en transform/opacity, scope theme-clair.
   ========================================================= */

/* Ligne d'invite au-dessus du tirage */
.theme-clair .tirage__indice {
  max-width: 34rem;
  margin: 0 auto clamp(2.4rem, 5vw, 3.6rem);
  text-align: center;
  font-family: var(--police-corps);
  font-weight: 400;
  font-size: 0.98rem;
  line-height: 1.65;
  color: var(--c-doux);
}
.theme-clair .tirage__ankh { color: var(--c-corail-fonce); font-size: 1.1em; }

/* Le tirage : 4 cartes alignees sur une seule rangee, aerees et egales.
   On elargit un peu l'enveloppe de cette page pour des cartes plus grandes. */
.theme-clair .tirage .enveloppe { max-width: 1340px; }
.theme-clair .tarots {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  align-items: start;
  gap: clamp(1.3rem, 2.4vw, 2.4rem);
  list-style: none;
  margin: 0;
  padding: 0.5rem 0 1.5rem;
}
.theme-clair .tarots__place {
  width: 100%;
}

/* La carte : alignee (pas d'eventail 2D, qui cassait le retournement 3D) + preserve-3d.
   On garde l'aspect portrait, un peu plus haut pour accueillir la biographie. */
.theme-clair .tarot {
  position: relative;
  width: 100%;
  aspect-ratio: 250 / 410;
  border-radius: 0.85rem;
  cursor: pointer;
  -webkit-perspective: 1600px;    /* prefixe pour les anciennes versions de Safari */
  perspective: 1600px;            /* camera 3D : la profondeur vient du parent du pivot */
  box-shadow: 0 26px 52px -30px rgba(4, 15, 31, 0.6);
  transition: transform 720ms var(--ease-eclosion), box-shadow 720ms var(--ease-doux);
}
.theme-clair .tarot:hover,
.theme-clair .tarot:focus-within,
.theme-clair .tarot.est-revele {
  transform: translateY(-1.1rem) rotate(0deg) scale(1.035);
  box-shadow: 0 56px 96px -38px rgba(4, 15, 31, 0.62);
  z-index: 6;
}

/* Le pivot : porte la rotation du retournement */
.theme-clair .tarot__pivot {
  position: relative;
  width: 100%;
  height: 100%;
  -webkit-transform-style: preserve-3d;   /* prefixe Safari */
  transform-style: preserve-3d;
  transition: transform 880ms var(--ease-eclosion);
}
.theme-clair .tarot.est-retourne .tarot__pivot { transform: rotateY(180deg); }

/* Les deux faces.
   IMPORTANT (Safari/WebKit) : ne PAS mettre "overflow:hidden" ici.
   overflow + backface-visibility sur le meme element fait que Safari
   ignore le masquage de la face arriere -> on voyait la photo "a l'envers"
   au lieu de la bio. Le decoupage des coins arrondis est donc porte par
   les couches internes (.tarot__dos, .tarot__perso, .tarot__bio). */
.theme-clair .tarot__face {
  position: absolute;
  inset: 0;
  border-radius: 0.85rem;
  backface-visibility: hidden;
  -webkit-backface-visibility: hidden;
  /* GARANTIE anti-miroir, tous navigateurs (Safari inclus).
     Certains Safari ignorent "backface-visibility" et laissent voir la
     photo "a l'envers" au lieu de la bio. On masque donc la face inactive
     par l'OPACITE (toujours respectee). Le fondu est tres court et cale
     pile sur le passage "sur la tranche" du retournement : a cet instant
     la carte est vue par la tranche (largeur nulle), le bascule d'opacite
     est donc invisible. La courbe --ease-eclosion (880ms) atteint 90deg
     vers ~90ms -> fondu 70->110ms, centre sur la tranche.
     Symetrique : meme transition a l'aller et au retour. */
  transition: opacity 40ms linear 70ms;
}
.theme-clair .tarot__face--avant {
  opacity: 1;
}
.theme-clair .tarot__face--arriere {
  /* double rotation (face 180 + pivot 180 = 360) -> la bio reste a l'endroit */
  transform: rotateY(180deg);
  opacity: 0;
}
.theme-clair .tarot.est-retourne .tarot__face--avant {
  opacity: 0;
}
.theme-clair .tarot.est-retourne .tarot__face--arriere {
  opacity: 1;
}

/* --- DOS mystique --- */
.theme-clair .tarot__dos {
  position: absolute;
  inset: 0;
  z-index: 1;
  display: grid;
  place-items: center;
  border-radius: inherit;
  overflow: hidden;               /* contient le halo (la face ne clippe plus) */
  background: radial-gradient(125% 80% at 50% 12%, #103154 0%, #0a2138 46%, #050f1f 100%);
  transition: opacity 600ms var(--ease-doux);
}
.theme-clair .tarot.est-revele .tarot__dos { opacity: 0; }
.theme-clair .tarot__dos::before {
  content: "";
  position: absolute;
  inset: 0.7rem;
  border: 1px solid rgba(145, 216, 255, 0.30);
  border-radius: 0.5rem;
  pointer-events: none;
}
.theme-clair .tarot__dos::after {
  content: "";
  position: absolute;
  inset: 1.05rem;
  border: 1px solid rgba(245, 135, 84, 0.32);
  border-radius: 0.35rem;
  pointer-events: none;
}
.theme-clair .tarot__halo {
  position: absolute;
  top: -6%;
  left: -12%;
  width: 124%;
  height: 64%;
  background: radial-gradient(circle at 50% 50%, rgba(145, 216, 255, 0.20), rgba(145, 216, 255, 0) 62%);
  pointer-events: none;
}
.theme-clair .tarot__embleme {
  position: relative;
  width: 74%;
  height: auto;
  opacity: 0.95;
  mix-blend-mode: screen;
  filter: drop-shadow(0 0 22px rgba(145, 216, 255, 0.28));
}

/* --- PERSONNE revelee --- */
.theme-clair .tarot__perso {
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: inherit;
  overflow: hidden;
  opacity: 0;
  transition: opacity 760ms var(--ease-doux);
}
.theme-clair .tarot.est-revele .tarot__perso { opacity: 1; }
.theme-clair .tarot__perso img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.05);
  transition: transform 1300ms var(--ease-doux);
}
.theme-clair .tarot.est-revele .tarot__perso img { transform: scale(1); }
.theme-clair .tarot__voile {
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(4, 15, 31, 0.94) 0%, rgba(4, 15, 31, 0.45) 30%, rgba(4, 15, 31, 0) 56%);
}
.theme-clair .tarot__id {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 3.6rem;
  padding: 0 1.1rem;
  text-align: center;
}
.theme-clair .tarot__role {
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.6rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--c-corail);
}
.theme-clair .tarot__nom {
  font-family: var(--police-serif);
  font-weight: 500;
  font-size: 1.2rem;
  line-height: 1.15;
  color: #ffffff;
  margin-top: 0.25rem;
}
.theme-clair .tarot__nom small {
  display: block;
  margin-top: 0.3rem;
  font-family: var(--police-corps);
  font-weight: 400;
  font-size: 0.6rem;
  letter-spacing: 0.04em;
  text-transform: none;
  color: rgba(255, 255, 255, 0.72);
}

/* Bouton invisible qui couvre le dos : revele la personne */
.theme-clair .tarot__reveler {
  position: absolute;
  inset: 0;
  z-index: 4;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  padding-bottom: 1.25rem;
  border: 0;
  background: transparent;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}
.theme-clair .tarot.est-revele .tarot__reveler { display: none; }
.theme-clair .tarot__reveler-txt {
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.58rem;
  letter-spacing: 0.26em;
  text-transform: uppercase;
  color: rgba(230, 227, 217, 0.92);
  padding: 0.5rem 1.05rem;
  border: 1px solid rgba(145, 216, 255, 0.42);
  border-radius: 999px;
  background: rgba(4, 15, 31, 0.4);
  transition: background 380ms, border-color 380ms, transform 380ms var(--ease-eclosion);
}
.theme-clair .tarot__reveler:hover .tarot__reveler-txt,
.theme-clair .tarot__reveler:focus-visible .tarot__reveler-txt {
  background: rgba(245, 135, 84, 0.24);
  border-color: rgba(245, 135, 84, 0.6);
  transform: translateY(-2px);
}

/* Le signe ankh : apparait une fois la personne revelee */
.theme-clair .tarot__signe {
  position: absolute;
  left: 50%;
  bottom: 0.85rem;
  z-index: 5;
  width: 2.9rem;   /* >= 44px : cible tactile confortable (WCAG 2.5.5) */
  height: 2.9rem;
  display: grid;
  place-items: center;
  border: 1px solid rgba(245, 135, 84, 0.55);
  border-radius: 50%;
  background: rgba(245, 135, 84, 0.18);
  color: #ffdcc6;
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
  transform: translateX(-50%) translateY(8px) scale(0.85);
  transition: opacity 520ms var(--ease-doux), transform 520ms var(--ease-eclosion),
              background 300ms, border-color 300ms;
}
.theme-clair .tarot.est-revele .tarot__signe {
  opacity: 1;
  pointer-events: auto;
  transform: translateX(-50%) translateY(0) scale(1);
}
.theme-clair .tarot__signe:hover,
.theme-clair .tarot__signe:focus-visible {
  background: rgba(245, 135, 84, 0.34);
  border-color: rgba(245, 135, 84, 0.88);
}
.theme-clair .tarot__ankh { font-size: 1.45rem; line-height: 1; }
.theme-clair .tarot__signe::after {
  content: "";
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  border: 1px solid rgba(245, 135, 84, 0.5);
  opacity: 0;
  pointer-events: none;
}
.theme-clair .tarot.est-revele .tarot__signe::after {
  animation: tarot-pulse 2800ms var(--ease-doux) infinite;
}
@keyframes tarot-pulse {
  0%   { opacity: 0.55; transform: scale(0.9); }
  70%  { opacity: 0;    transform: scale(1.4); }
  100% { opacity: 0;    transform: scale(1.4); }
}

/* --- FACE ARRIERE : la biographie --- */
.theme-clair .tarot__bio {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  padding: 1.5rem 1.3rem 1.25rem;
  border-radius: inherit;
  overflow: hidden;               /* coins arrondis nets (la face ne clippe plus) */
  background: radial-gradient(120% 70% at 50% 0%, #fbf7ef 0%, #f1ebde 60%, #e8e1d2 100%);
}
.theme-clair .tarot__bio::before {
  content: "";
  position: absolute;
  inset: 0.7rem;
  border: 1px solid rgba(17, 32, 47, 0.14);
  border-radius: 0.5rem;
  pointer-events: none;
}
.theme-clair .tarot__bio::after {
  content: "\2625";              /* ankh discret en filigrane */
  position: absolute;
  top: 0.85rem;
  right: 1.05rem;
  font-size: 1rem;
  color: rgba(199, 90, 48, 0.5);
}
.theme-clair .tarot__bio .tarot__role { color: var(--c-corail-fonce); }
.theme-clair .tarot__bio .tarot__nom {
  color: var(--c-encre);
  font-size: 1.18rem;
  margin-top: 0.3rem;
}
.theme-clair .tarot__bio .tarot__nom small { color: var(--c-doux); }
.theme-clair .tarot__texte {
  flex: 1;
  min-height: 0;                     /* autorise le defilement a l'interieur du flex */
  margin-top: 0.7rem;
  padding-right: 0.55rem;            /* de l'air pour la barre de defilement */
  padding-bottom: 1.7rem;            /* la derniere ligne passe au-dessus du fondu */
  overflow-y: auto;
  -webkit-overflow-scrolling: touch; /* inertie tactile sur iOS */
  /* Fondu bas via un MASQUE : le texte s'efface sur le vrai degrade de la
     carte, aucune bande de couleur rapportee. La marge basse garantit que la
     derniere ligne reste nette une fois arrive en bas. */
  -webkit-mask-image: linear-gradient(to bottom, #000 calc(100% - 1.5rem), transparent);
          mask-image: linear-gradient(to bottom, #000 calc(100% - 1.5rem), transparent);
  scrollbar-width: thin;             /* Firefox */
  scrollbar-color: rgba(199, 90, 48, 0.55) rgba(17, 32, 47, 0.08);
  font-family: var(--police-corps);
  font-weight: 400;
  font-size: 0.84rem;
  line-height: 1.62;
  color: var(--c-corps);
}
/* Barre de defilement visible et sur-mesure : signale qu'on peut lire la suite. */
/* La bio ne descend plus toute seule : elle est donc rendue focusable
   (tabindex="0" dans le HTML) pour rester lisible en entier au clavier, aux
   fleches. Sans anneau visible, on ne saurait pas ou l'on se trouve. */
.theme-clair .tarot__texte:focus-visible {
  outline: 2px solid var(--c-corail-fonce);
  outline-offset: 2px;
  border-radius: 4px;
}
.theme-clair .tarot__texte::-webkit-scrollbar { width: 5px; }
.theme-clair .tarot__texte::-webkit-scrollbar-track {
  background: rgba(17, 32, 47, 0.06);
  border-radius: 999px;
}
.theme-clair .tarot__texte::-webkit-scrollbar-thumb {
  background: rgba(199, 90, 48, 0.55);
  border-radius: 999px;
}
.theme-clair .tarot__retour {
  align-self: flex-start;
  margin-top: 0.9rem;
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.5rem 0.95rem;
  border: 1px solid rgba(199, 90, 48, 0.42);
  border-radius: 999px;
  background: transparent;
  font-family: var(--police-corps);
  font-weight: 700;
  font-size: 0.58rem;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--c-corail-fonce);
  cursor: pointer;
  transition: background 300ms, border-color 300ms, color 300ms;
}
.theme-clair .tarot__retour:hover,
.theme-clair .tarot__retour:focus-visible {
  background: var(--c-encre-pure);
  border-color: var(--c-encre-pure);
  color: var(--c-creme);
}
.theme-clair .tarot__retour-ic { font-size: 0.95rem; }

/* Tablette : la rangee de 4 passe en grille 2 x 2 */
@media (max-width: 920px) {
  .theme-clair .tarots {
    grid-template-columns: repeat(2, 1fr);
    gap: clamp(1.4rem, 4vw, 2rem);
    max-width: 40rem;
    margin-inline: auto;
  }
}

/* Mobile : une seule colonne */
@media (max-width: 560px) {
  .theme-clair .tarots {
    grid-template-columns: 1fr;
    max-width: 20rem;
  }
}

/* Mouvement reduit : on garde la fonction, on coupe l'animation */
@media (prefers-reduced-motion: reduce) {
  .theme-clair .tarot,
  .theme-clair .tarot__pivot,
  .theme-clair .tarot__perso,
  .theme-clair .tarot__perso img,
  .theme-clair .tarot__dos,
  .theme-clair .tarot__face,
  .theme-clair .tarot__signe,
  .theme-clair .tarot__reveler-txt { transition: none !important; }
  .theme-clair .tarot.est-revele .tarot__signe::after { animation: none; }
}

/* =========================================================
   FAQ  -  accordeon accessible (details/summary, sans JS)
   Register clair : questions serif, filets fins, toggle corail.
   ========================================================= */
.theme-clair .faq {
  max-width: 760px;
  margin: clamp(2.6rem, 5vw, 4rem) auto 0;
}
.theme-clair .faq__item { border-top: 1px solid var(--c-trait-fin); }
.theme-clair .faq__item:last-child { border-bottom: 1px solid var(--c-trait-fin); }

.theme-clair .faq__q {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.4rem;
  padding: clamp(1.15rem, 2.4vw, 1.6rem) 0;
  font-family: var(--police-serif);
  font-weight: 500;
  font-size: clamp(1.12rem, 1rem + 0.5vw, 1.32rem);
  line-height: 1.35;
  color: var(--c-encre);
  transition: color 240ms var(--ease-doux);
}
.theme-clair .faq__q::-webkit-details-marker { display: none; }
.theme-clair .faq__q:hover { color: var(--c-corail-fonce); }
.theme-clair .faq__item[open] > .faq__q { color: var(--c-corail-fonce); }
.theme-clair .faq__q:focus-visible {
  outline: 2px solid var(--c-corail-fonce);
  outline-offset: 3px;
  border-radius: 4px;
}

/* Indicateur + qui pivote en x a l'ouverture */
.theme-clair .faq__q::after {
  content: "";
  flex: 0 0 auto;
  width: 16px;
  height: 16px;
  background:
    linear-gradient(var(--c-corail-fonce), var(--c-corail-fonce)) center/16px 1.5px no-repeat,
    linear-gradient(var(--c-corail-fonce), var(--c-corail-fonce)) center/1.5px 16px no-repeat;
  transition: transform 320ms var(--ease-eclosion);
}
.theme-clair .faq__item[open] > .faq__q::after { transform: rotate(45deg); }

.theme-clair .faq__r {
  padding: 0 0 clamp(1.3rem, 2.6vw, 1.8rem);
  max-width: 62ch;
}
.theme-clair .faq__r p {
  margin: 0;
  color: var(--c-corps);
  font-size: 1rem;
  line-height: 1.75;
}

@media (prefers-reduced-motion: reduce) {
  .theme-clair .faq__q,
  .theme-clair .faq__q::after { transition: none; }
}

/* -----------------------------------------------------------------
   RESTER EN LIEN  (accueil) : capture email douce. Champ et bouton
   accordes a la charte ; cote a cote sur ordi, empiles sur mobile.
   ----------------------------------------------------------------- */
.theme-clair .lettre__form {
  display: flex;
  align-items: stretch;
  gap: 0.6rem;
  max-width: 30rem;                 /* ~480px : forme contenue, jamais etalee */
  margin: clamp(1.8rem, 4vw, 2.6rem) auto 0;
}
/* Une fois inscrit, le formulaire s'efface : le display:flex ci-dessus
   l'emporte sur l'attribut hidden natif, il faut donc le neutraliser. */
.theme-clair .lettre__form[hidden] { display: none; }
.theme-clair .lettre__label {       /* la pour les lecteurs d'ecran, masque a l'oeil */
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}
.theme-clair .lettre__input {
  flex: 1 1 auto;
  min-width: 0;
  font-family: var(--police-corps);
  font-size: 1rem;
  color: var(--c-encre);
  background: var(--c-pur);
  border: 1px solid var(--c-trait);
  border-radius: 999px;
  padding: 0.95rem 1.5rem;
  transition: border-color 220ms var(--ease-doux), box-shadow 220ms var(--ease-doux);
}
.theme-clair .lettre__input::placeholder { color: var(--c-doux); }
.theme-clair .lettre__input:focus {
  outline: none;
  border-color: var(--c-corail);
  box-shadow: 0 0 0 3px rgba(245, 135, 84, 0.18);
}
.theme-clair .lettre__input[aria-invalid="true"] {
  border-color: var(--c-corail-fonce);
  box-shadow: 0 0 0 3px rgba(199, 90, 48, 0.16);
}
.theme-clair .lettre__submit {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.theme-clair .lettre__ok {
  max-width: 32rem;
  margin: clamp(1.4rem, 3vw, 2rem) auto 0;
  text-align: center;
  font-family: var(--police-serif);
  font-size: clamp(1.15rem, 1rem + 0.6vw, 1.42rem);
  line-height: 1.4;
  color: var(--c-corail-fonce);
}
.theme-clair .lettre__ok:focus { outline: none; }
/* Echec d'envoi. Ton mesure : ce n'est pas la faute du visiteur, et on lui
   donne tout de suite une porte de sortie qui marche. Corps de texte plutot
   que serif, pour que le message ait moins de solennite que le remerciement. */
.theme-clair .lettre__erreur {
  max-width: 32rem;
  margin: clamp(1.4rem, 3vw, 2rem) auto 0;
  text-align: center;
  font-family: var(--police-corps);
  font-size: 0.94rem;
  line-height: 1.6;
  color: rgba(17, 32, 47, 0.72);
}
.theme-clair .lettre__erreur a {
  color: var(--c-corail-fonce);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.theme-clair .lettre__erreur:focus { outline: none; }
/* Le bouton grise le temps de l'envoi : on le signale sans le faire disparaitre. */
.theme-clair .lettre__submit[disabled] {
  opacity: 0.6;
  cursor: progress;
}
.theme-clair .lettre__note {
  margin: 1rem auto 0;
  text-align: center;
  font-size: 0.82rem;
  letter-spacing: 0.01em;
  color: var(--c-doux);
}

@media (max-width: 560px) {
  .theme-clair .lettre__form { flex-direction: column; gap: 0.7rem; }
  .theme-clair .lettre__submit { width: 100%; }
}
