/* ═════════ Base ═════════ */
:root {
  --bg: #FBF9F5;
  --bg-alt: #F3EEE7;
  --ink: #2A2140;
  --ink-soft: #5D5470;
  --violet: #7C5CBF;
  --violet-deep: #5B3FA0;
  --gold: #C9A227;
  --gold-soft: #E4C465;
  --card: #FFFFFF;
  --radius: 20px;
  --shadow: 0 10px 40px -12px rgba(42, 33, 64, .14);
  --font-title: "Fraunces", Georgia, serif;
  --font-body: "Outfit", system-ui, sans-serif;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--font-body);
  font-weight: 300;
  color: var(--ink);
  background: var(--bg);
  line-height: 1.65;
  overflow-x: hidden;
}
/* Texture papier subtile (grain SVG, technique de la variante Provence) */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 2000;
  opacity: .5;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
}
h1, h2, h3 { font-family: var(--font-title); font-weight: 400; line-height: 1.15; }
h2 { font-size: clamp(2rem, 4vw, 2.9rem); }
img { max-width: 100%; }
a { color: inherit; }

.kicker {
  text-transform: uppercase;
  letter-spacing: .22em;
  font-size: .74rem;
  font-weight: 500;
  color: var(--gold);
  margin-bottom: .6rem;
}
.grad {
  background: linear-gradient(100deg, var(--violet) 10%, #D4547A 40%, var(--gold) 60%, var(--violet) 90%);
  background-size: 220% auto;
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: shimmer 7s ease-in-out infinite;
}
@keyframes shimmer {
  0%, 100% { background-position: 0% center; }
  50%      { background-position: 100% center; }
}

/* barre de progression de lecture */
.progress {
  position: fixed;
  top: 0; left: 0;
  height: 3px;
  width: 0;
  z-index: 300;
  background: linear-gradient(90deg, var(--violet-deep), var(--violet), #D4547A, var(--gold));
  border-radius: 0 3px 3px 0;
}

/* ═════════ Boutons ═════════ */
.btn {
  display: inline-block;
  padding: .85rem 2rem;
  border-radius: 999px;
  border: none;
  background: linear-gradient(120deg, var(--violet-deep), var(--violet));
  color: #fff;
  font-family: var(--font-body);
  font-size: .95rem;
  font-weight: 500;
  letter-spacing: .02em;
  text-decoration: none;
  cursor: pointer;
  transition: transform .3s ease, box-shadow .3s ease;
  box-shadow: 0 8px 24px -8px rgba(91, 63, 160, .5);
}
.btn:hover { transform: translateY(-2px); box-shadow: 0 14px 30px -8px rgba(91, 63, 160, .55); }
.btn-ghost {
  background: transparent;
  color: var(--violet-deep);
  box-shadow: inset 0 0 0 1.5px var(--violet);
}
.btn-ghost:hover { box-shadow: inset 0 0 0 1.5px var(--violet), 0 10px 24px -10px rgba(91,63,160,.35); }
.btn-small { padding: .55rem 1.4rem; font-size: .85rem; }
.btn-full { width: 100%; }

/* ═════════ Navigation ═════════ */
.nav {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem clamp(1.2rem, 4vw, 3rem);
  transition: background .35s ease, box-shadow .35s ease, padding .35s ease;
}
.nav::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background: rgba(251, 249, 245, .82);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  opacity: 0;
  transition: opacity .35s ease;
}
/* Le flou reste sur le fond : appliqué au header, il enferme le menu fixe. */
.nav.scrolled::before, .nav.menu-open::before { opacity: 1; }
.nav.scrolled {
  box-shadow: 0 1px 0 rgba(42, 33, 64, .07);
  padding-block: .55rem;
}
.nav-brand {
  display: flex;
  align-items: center;
  gap: .7rem;
  text-decoration: none;
  font-family: var(--font-title);
  font-size: 1.12rem;
}
.nav-brand em { font-style: normal; color: var(--violet-deep); }
.nav-links { display: flex; align-items: center; gap: clamp(1rem, 2.5vw, 2.2rem); }
.nav-links a:not(.btn) {
  text-decoration: none;
  font-size: .93rem;
  font-weight: 400;
  color: var(--ink-soft);
  transition: color .25s;
}
.nav-links a:not(.btn):hover { color: var(--violet-deep); }
.nav-burger { display: none; }

/* ═════════ Hero ═════════ */
.hero {
  position: relative;
  min-height: 100svh;
  display: grid;
  place-items: center;
  text-align: center;
  padding: 7rem 1.5rem 4rem;
  overflow: hidden;
}
.hero-inner { position: relative; z-index: 3; max-width: 780px; }
.hero-kicker {
  font-size: 1rem;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-bottom: 1.2rem;
}
.hero h1 { font-size: clamp(2.6rem, 6.5vw, 4.6rem); margin-bottom: 1.4rem; }
.hero-sub { font-size: clamp(1.02rem, 2vw, 1.2rem); color: var(--ink-soft); margin-bottom: 2rem; }
.hero-chips { display: flex; flex-wrap: wrap; gap: .6rem; justify-content: center; margin-bottom: 2.4rem; }
.chip {
  padding: .45rem 1.1rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, .65);
  border: 1px solid rgba(124, 92, 191, .25);
  font-size: .85rem;
  backdrop-filter: blur(6px);
}
.chip i { font-style: normal; color: var(--gold); margin: 0 .2em; }
.approche-label {
  text-transform: uppercase;
  letter-spacing: .28em;
  font-size: .72rem;
  font-weight: 500;
  color: var(--gold);
  margin-bottom: 1.5rem;
}
/* pastilles teintées de leur couleur */
.hero-chips .chip {
  background: color-mix(in srgb, var(--c, #7C5CBF) 14%, #fff);
  border-color: color-mix(in srgb, var(--c, #7C5CBF) 45%, transparent);
  color: color-mix(in srgb, var(--c, #7C5CBF) 72%, var(--ink));
  font-weight: 400;
}
.chip .dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  margin: 0 .5rem 1px 0;
  border-radius: 50%;
  background: var(--c, var(--violet));
  box-shadow: 0 0 8px var(--c, var(--violet));
  vertical-align: middle;
}
.hero-chips .chip { animation: floatDoux 6s ease-in-out infinite; }
.hero-chips .chip:nth-child(2) { animation-delay: -1.5s; }
.hero-chips .chip:nth-child(3) { animation-delay: -3s; }
.hero-chips .chip:nth-child(4) { animation-delay: -4.5s; }
.hero-chips .chip:nth-child(5) { animation-delay: -6s; }
@keyframes floatDoux {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-5px); }
}
.hero-cta { display: flex; gap: 1rem; justify-content: center; flex-wrap: wrap; }
.hero-cta .btn:not(.btn-ghost) { animation: halo 3.6s ease-in-out infinite; }
@keyframes halo {
  0%, 100% { box-shadow: 0 8px 24px -8px rgba(91, 63, 160, .5); }
  50%      { box-shadow: 0 10px 36px -4px rgba(91, 63, 160, .75); }
}

/* orbes flottants */
.hero-orbs .orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(70px);
  opacity: .5;
  animation: float 14s ease-in-out infinite alternate;
}
.o1 { width: 44vmax; height: 44vmax; background: #E4D5F7; top: -18vmax; left: -12vmax; }
.o2 { width: 36vmax; height: 36vmax; background: #F7E8D0; bottom: -14vmax; right: -10vmax; animation-delay: -5s; }
.o3 { width: 26vmax; height: 26vmax; background: #D9EEEC; bottom: 8vmax; left: 6vmax; animation-delay: -9s; }
@keyframes float {
  from { transform: translate(0, 0) scale(1); }
  to   { transform: translate(4vmax, -3vmax) scale(1.12); }
}

/* géométrie sacrée en rotation */
.hero-geometry {
  position: absolute;
  z-index: 1;
  width: min(88vmin, 640px);
  color: var(--violet);
  opacity: .13;
}
.geo-slow { transform-origin: 300px 300px; animation: spin 120s linear infinite; }
.geo-fast { transform-origin: 300px 300px; animation: spin 80s linear infinite reverse; }
@keyframes spin { to { transform: rotate(360deg); } }

/* indicateur scroll */
.hero-scroll {
  position: absolute;
  z-index: 3;
  bottom: clamp(80px, 11vw, 150px);
  left: 50%;
  translate: -50% 0;
  width: 26px; height: 42px;
  border: 1.5px solid var(--ink-soft);
  border-radius: 14px;
  opacity: .55;
}
.hero-scroll span {
  position: absolute;
  top: 7px; left: 50%;
  width: 4px; height: 8px;
  translate: -50% 0;
  border-radius: 4px;
  background: var(--ink-soft);
  animation: wheel 1.8s ease-in-out infinite;
}
@keyframes wheel { 50% { transform: translateY(12px); opacity: .2; } }

/* ═════════ Sections ═════════ */
.section { padding: clamp(4.5rem, 9vw, 7.5rem) clamp(1.2rem, 5vw, 4rem); }
.section-alt { background: var(--bg-alt); }
.section-head { text-align: center; max-width: 640px; margin: 0 auto 3.2rem; }

/* ═════════ Cartes thérapies ═════════ */
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1.6rem;
  max-width: 1180px;
  margin: 0 auto;
  align-items: start; /* la carte ouverte grandit seule, les voisines gardent leur hauteur */
}
.card {
  position: relative;
  display: flex;
  flex-direction: column;
  background: var(--card);
  border-radius: var(--radius);
  padding: 2rem 1.8rem;
  box-shadow: var(--shadow);
  transition: transform .35s ease, box-shadow .35s ease;
  overflow: hidden;
}
/* aligner sous-titres, descriptions et « En savoir plus » d'une rangée à l'autre :
   hauteurs minimales réservées (2 lignes de titre, 2 de sous-titre, 3 de description) */
@media (min-width: 721px) {
  .card h3 { min-height: 2.3em; }
  .card .card-meta { min-height: 3.3em; }
  .card > p:not(.card-meta) { min-height: 5em; }
}
/* voile coloré dans le coin de l'icône */
.card::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(150px 150px at 100% 0%, color-mix(in srgb, var(--tint, var(--violet)) 13%, transparent), transparent 72%);
  pointer-events: none;
}
/* icône thématique sans cadre, en haut à droite — flottement doux */
.card-deco {
  position: absolute;
  top: 1.35rem;
  right: 1.35rem;
  width: 58px;
  height: 58px;
  color: var(--tint, var(--violet));
  opacity: .85;
  animation: floatDoux 6.5s ease-in-out infinite;
  transition: opacity .3s ease;
}
.card:hover .card-deco { opacity: 1; }
.cards .card:nth-child(2) .card-deco { animation-delay: -1.2s; }
.cards .card:nth-child(3) .card-deco { animation-delay: -2.4s; }
.cards .card:nth-child(4) .card-deco { animation-delay: -3.6s; }
.cards .card:nth-child(5) .card-deco { animation-delay: -4.8s; }
.cards .card:nth-child(6) .card-deco { animation-delay: -6s; }
.card h3, .card .card-meta { padding-right: 3.4rem; position: relative; }
.card:hover { transform: translateY(-6px); box-shadow: 0 22px 50px -14px rgba(42, 33, 64, .2); }
/* carte seule sur la dernière rangée : centrée en affichage 3 colonnes */
@media (min-width: 1080px) {
  .cards .card:last-child:nth-child(3n + 1) { grid-column: 2; }
}
.card-icon {
  width: 52px; height: 52px;
  display: grid; place-items: center;
  border-radius: 16px;
  margin-bottom: 1.2rem;
  color: var(--tint, var(--violet));
  background: color-mix(in srgb, var(--tint, var(--violet)) 12%, transparent);
}
.card-icon svg { width: 26px; height: 26px; }
.card h3 { font-size: 1.28rem; margin-bottom: .35rem; }
.card-meta { font-size: .78rem; letter-spacing: .06em; color: var(--gold); font-weight: 500; margin-bottom: .8rem; }
.card > p:not(.card-meta) { font-size: .95rem; color: var(--ink-soft); }
.card details { margin-top: .9rem; font-size: .92rem; color: var(--ink-soft); }
.card .dcontent { overflow: hidden; transition: height .45s ease, opacity .4s ease; }
.card details[data-animated]:not(.ouvert) .dcontent { opacity: 0; }
.card details.ouvert .dcontent { opacity: 1; }
.card summary {
  cursor: pointer;
  list-style: none;
  color: var(--violet-deep);
  font-weight: 500;
  font-size: .88rem;
}
.card summary::after { content: " +"; color: var(--gold); }
.card details[open] summary::after { content: " −"; }
.card details p { margin-top: .6rem; }

/* ═════════ À propos ═════════ */
.apropos {
  display: grid;
  grid-template-columns: 1fr 1.5fr;
  gap: clamp(2rem, 6vw, 5rem);
  align-items: center;
  max-width: 1080px;
  margin: 0 auto;
}
.portrait {
  aspect-ratio: 4 / 5;
  border-radius: 46% 54% 52% 48% / 55% 48% 52% 45%;
  background:
    radial-gradient(circle at 30% 25%, rgba(228, 196, 101, .55), transparent 55%),
    radial-gradient(circle at 75% 70%, rgba(124, 92, 191, .4), transparent 60%),
    linear-gradient(160deg, #EFE6F8, #F7EEDC);
  display: grid;
  place-items: center;
  box-shadow: var(--shadow);
  animation: morph 12s ease-in-out infinite alternate;
}
@keyframes morph {
  to { border-radius: 54% 46% 48% 52% / 45% 52% 48% 55%; }
}
.portrait img { opacity: .9; }
.apropos-text p { color: var(--ink-soft); margin-bottom: 1rem; max-width: 56ch; }
.apropos-text h2 { margin-bottom: 1.2rem; }
.h2-accent {
  font-style: italic;
  color: var(--violet-deep);
}
.apropos-soustitre {
  font-family: var(--font-title);
  font-style: italic;
  font-size: 1.2rem;
  color: var(--violet-deep);
  margin-bottom: 1.1rem;
}
/* soulignement doré qui se dessine à l'apparition de la section */
.apropos-soustitre::after {
  content: "";
  display: block;
  width: 0;
  height: 2px;
  margin-top: .4rem;
  border-radius: 2px;
  background: linear-gradient(90deg, var(--gold), var(--gold-soft), transparent);
  transition: width 1.3s ease .5s;
}
.apropos-text.visible .apropos-soustitre::after { width: 62%; }
.apropos-pivot {
  font-family: var(--font-title);
  font-style: italic;
  font-size: 1.08rem;
  color: var(--violet-deep);
  border-left: 2px solid var(--gold-soft);
  padding-left: .9rem;
}

.timeline {
  list-style: none;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.4rem 1.5rem;
  margin-top: 1.8rem;
  padding-top: 1.6rem;
  border-top: 1px solid rgba(42, 33, 64, .12);
}
@media (max-width: 560px) {
  .timeline { grid-template-columns: repeat(2, 1fr); }
}
.timeline li { display: flex; flex-direction: column; }
.timeline b { font-family: var(--font-title); font-weight: 500; font-size: 1.25rem; color: var(--violet-deep); }
.timeline span { font-size: .8rem; color: var(--ink-soft); }

/* ═════════ Formations — frise horizontale ═════════ */
.frise {
  list-style: none;
  position: relative;
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  gap: 1.2rem;
  max-width: 1140px;
  margin: 0 auto;
  padding-top: 6px;
}
.frise::before {
  content: "";
  position: absolute;
  top: 27px;
  left: 4%;
  right: 4%;
  height: 2px;
  border-radius: 2px;
  background: linear-gradient(90deg, transparent, var(--gold-soft) 12%, var(--violet) 50%, var(--gold-soft) 88%, transparent);
  opacity: .5;
}
/* médaillons illustrés sur la ligne */
.frise-ico {
  width: 44px;
  height: 44px;
  padding: 9px;
  border-radius: 50%;
  background: var(--card);
  border: 2px solid var(--gold-soft);
  box-shadow: 0 0 12px rgba(201, 162, 39, .35);
  color: var(--tc, var(--violet));
  z-index: 1;
  animation: floatDoux 7s ease-in-out infinite;
}
.frise li:nth-child(2n) .frise-ico { animation-delay: -2.3s; }
.frise li:nth-child(3n) .frise-ico { animation-delay: -4.6s; }
.frise li {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .35rem;
  text-align: center;
}
.frise-dot {
  width: 13px;
  height: 13px;
  border-radius: 50%;
  background: var(--card);
  border: 3px solid var(--gold);
  box-shadow: 0 0 10px rgba(201, 162, 39, .5);
  z-index: 1;
}
.frise b {
  font-family: var(--font-title);
  font-weight: 500;
  font-size: 1.35rem;
  color: var(--violet-deep);
}
.frise span { font-size: .8rem; color: var(--ink-soft); line-height: 1.45; max-width: 180px; }
.frise li:nth-child(2) { transition-delay: .1s; }
.frise li:nth-child(3) { transition-delay: .2s; }
.frise li:nth-child(4) { transition-delay: .3s; }
.frise li:nth-child(5) { transition-delay: .4s; }
.frise li:nth-child(6) { transition-delay: .5s; }
.frise li:nth-child(7) { transition-delay: .6s; }
.frise li:nth-child(8) { transition-delay: .7s; }
@media (max-width: 980px) {
  .frise { grid-template-columns: repeat(3, 1fr); gap: 1.6rem 1.2rem; }
  .frise::before { display: none; }
}
@media (max-width: 540px) {
  .frise { grid-template-columns: repeat(2, 1fr); }
}

/* ═════════ Tarifs ═════════ */
.pricing {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 340px));
  gap: 1.8rem;
  justify-content: center;
}
.price-card {
  background: var(--card);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 2.6rem 2.2rem;
  text-align: center;
  transition: transform .35s ease;
}
.price-card:hover { transform: translateY(-6px); }
.price-icon {
  width: 58px; height: 58px;
  margin: 0 auto 1.2rem;
  display: grid; place-items: center;
  border-radius: 50%;
  color: var(--gold);
  background: rgba(201, 162, 39, .12);
}
.price-icon svg { width: 28px; height: 28px; }
.price-card h3 { font-size: 1.4rem; margin-bottom: .8rem; }
.price { margin-bottom: 1rem; }
.price b {
  font-family: var(--font-title);
  font-size: 2.6rem;
  font-weight: 500;
  color: var(--violet-deep);
}
.price span { color: var(--ink-soft); margin-left: .3rem; }
.price-desc { font-size: .92rem; color: var(--ink-soft); margin-bottom: 1.6rem; }

/* ═════════ Contact ═════════ */
.contact {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: clamp(2.5rem, 6vw, 5rem);
  max-width: 1080px;
  margin: 0 auto;
  align-items: start;
}
.contact > * { min-width: 0; }
.contact-info h2 { margin-bottom: 1rem; }
.contact-info > p { color: var(--ink-soft); max-width: 44ch; }
.contact-list { list-style: none; margin-top: 2rem; display: grid; gap: 1.2rem; }
.contact-list li { display: flex; flex-direction: column; }
.contact-list b { font-size: .76rem; text-transform: uppercase; letter-spacing: .18em; color: var(--gold); font-weight: 500; }
.contact-list a, .contact-list span { font-size: 1.05rem; text-decoration: none; }
.contact-list a:hover { color: var(--violet-deep); }
.contact-list small { display: block; font-size: .78rem; color: var(--ink-soft); font-weight: 300; line-height: 1.45; margin-top: .2rem; }
.btn-carte {
  display: inline-flex;
  align-items: center;
  gap: .35rem;
  margin-top: .55rem;
  align-self: flex-start;
  font-size: .72rem;
  padding: .28rem .8rem;
  font-weight: 400;
}
.btn-carte svg { flex: none; width: 12px; height: 12px; }

.contact-form {
  background: var(--card);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 2.4rem 2.2rem;
  display: grid;
  gap: 1.1rem;
}
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.1rem; }
.contact-form label {
  display: grid;
  gap: .35rem;
  font-size: .82rem;
  font-weight: 500;
  letter-spacing: .04em;
  color: var(--ink-soft);
}
.contact-form input,
.contact-form select,
.contact-form textarea {
  min-width: 0;
  width: 100%;
  font: inherit;
  font-weight: 300;
  color: var(--ink);
  padding: .7rem .9rem;
  border: 1.5px solid rgba(42, 33, 64, .15);
  border-radius: 12px;
  background: var(--bg);
  transition: border-color .25s, box-shadow .25s;
}
.contact-form :is(input, select, textarea):focus {
  outline: none;
  border-color: var(--violet);
  box-shadow: 0 0 0 3px rgba(124, 92, 191, .15);
}
.cf-turnstile { display: flex; justify-content: center; min-height: 65px; }
.turnstile-slot {
  border: 1.5px dashed rgba(42, 33, 64, .2);
  border-radius: 12px;
  padding: .9rem;
  text-align: center;
  font-size: .85rem;
  color: var(--ink-soft);
  background: repeating-linear-gradient(45deg, transparent, transparent 8px, rgba(42,33,64,.02) 8px, rgba(42,33,64,.02) 16px);
}
.form-status { font-size: .9rem; color: var(--violet-deep); min-height: 1.2em; text-align: center; }
.form-rgpd { font-size: .72rem; color: var(--ink-soft); text-align: center; line-height: 1.5; }
.form-rgpd a { color: var(--violet-deep); }
.footer-note a { color: inherit; }

/* ═════════ Footer ═════════ */
.footer {
  text-align: center;
  padding: 3rem 1.5rem 2.4rem;
  font-size: .88rem;
  color: var(--ink-soft);
}
.footer img { margin-bottom: .8rem; }
.footer-note { font-size: .76rem; opacity: .75; margin-top: .4rem; }

/* ═════════ Reveal au scroll ═════════ */
.reveal {
  transition: opacity .8s ease, transform .8s ease;
}
.reveal.reveal-pending { opacity: 0; transform: translateY(26px); }
.reveal.visible { opacity: 1; transform: none; }
.cards .reveal:nth-child(2) { transition-delay: .08s; }
.cards .reveal:nth-child(3) { transition-delay: .16s; }
.cards .reveal:nth-child(4) { transition-delay: .06s; }
.cards .reveal:nth-child(5) { transition-delay: .14s; }
.cards .reveal:nth-child(6) { transition-delay: .22s; }

/* ═════════ Illustrations thématiques ═════════ */

/* Hero — silhouette en méditation intégrée à la géométrie */
.hero-figure {
  position: absolute;
  z-index: 2;
  width: min(44vmin, 320px);
  color: var(--violet-deep);
  opacity: .22;
  pointer-events: none;
}
.chakra-halo { animation: chakraGlow 3.4s ease-in-out infinite; }
@keyframes chakraGlow {
  0%, 100% { opacity: .18; }
  50%      { opacity: .75; }
}

/* Transitions en collines superposées (technique de la variante Provence) :
   couches d'une même teinte en opacités croissantes, coiffées par la couleur du fond suivant */
.hills { display: block; width: 100%; height: clamp(60px, 9vw, 130px); pointer-events: none; }
.hills-hero { position: absolute; left: 0; right: 0; bottom: -1px; z-index: 2; }

/* Décors de section (thérapies) */
.section-deco {
  position: absolute;
  pointer-events: none;
  color: var(--violet);
}
#therapies { position: relative; overflow: hidden; }
.deco-hands { width: clamp(200px, 24vw, 320px); right: -3rem; bottom: -2rem; opacity: .09; animation: sway 10s ease-in-out infinite alternate; transform-origin: 50% 90%; }
.deco-waves { width: clamp(160px, 20vw, 260px); left: -3rem; top: 4rem; opacity: .1; color: var(--gold); animation: spin 55s linear infinite; }
@keyframes sway {
  from { transform: rotate(-2deg); }
  to   { transform: rotate(2.5deg); }
}

/* À propos — silhouette au halo d'énergie */
.portrait svg { width: 82%; height: auto; }
.halo-rotate { transform-origin: 130px 108px; animation: spin 60s linear infinite; }

/* Tarifs — illustrations des formules */
#tarifs { position: relative; overflow: hidden; }
.deco-tarifs { width: clamp(180px, 22vw, 300px); right: -2.5rem; top: 3rem; opacity: .07; animation: spin 70s linear infinite reverse; }
.price-illus {
  width: 122px;
  height: 96px;
  margin: 0 auto 1.2rem;
  color: var(--violet-deep);
  animation: floatDoux 7s ease-in-out infinite;
}
.pricing .price-card:nth-child(2) .price-illus { animation-delay: -2.3s; }
.pricing .price-card:nth-child(3) .price-illus { animation-delay: -4.6s; }
.price-illus svg { width: 100%; height: 100%; }

/* Contact — lotus ouvert, pétales fins et reflets. */
.contact-lotus {
  display: block;
  width: min(320px, 100%);
  height: auto;
  margin: 1.5rem auto 0;
  overflow: visible;
}
.contact-lotus .l-petales,
.contact-lotus .l-corolle { transform-origin: 180px 193px; }
.contact-info.visible .contact-lotus .l-petales {
  animation: lotusRespire 4.8s ease-in-out both, lotusSouffle 6s ease-in-out 4.8s infinite;
}
@keyframes lotusRespire {
  0% { transform: translateY(3px) scale(.97); }
  60% { transform: translateY(-2px) scale(1.015); }
  100% { transform: none; }
}
.contact-info.visible .l-corolle-gauche { animation: lotusOuvreGauche 4.8s ease-in-out both, lotusBalanceGauche 6s ease-in-out 4.8s infinite; }
.contact-info.visible .l-corolle-droite { animation: lotusOuvreDroite 4.8s ease-in-out both, lotusBalanceDroite 6s ease-in-out 4.8s infinite; }
@keyframes lotusOuvreGauche {
  0% { transform: rotate(7deg); }
  65% { transform: rotate(-1deg); }
  100% { transform: none; }
}
@keyframes lotusOuvreDroite {
  0% { transform: rotate(-7deg); }
  65% { transform: rotate(1deg); }
  100% { transform: none; }
}
.contact-lotus .l-onde { transform-origin: 180px 211px; }
.contact-info.visible .l-onde { animation: lotusReflet 4.8s ease-out both, lotusOndule 6.8s ease-in-out 4.8s infinite; }
.contact-info.visible .l-onde-interieure { animation-delay: 0s, 5.8s; }
@keyframes lotusReflet {
  0% { transform: scaleX(.72); opacity: 0; }
  55% { opacity: .55; }
  100% { transform: none; }
}

/* Après l'ouverture : respiration ample, pétales mobiles et reflets décalés. */
@keyframes lotusSouffle {
  0%, 100% { transform: translateY(0) scale(1); }
  50% { transform: translateY(-8px) scale(1.06); }
}
@keyframes lotusBalanceGauche {
  0%, 100% { transform: rotate(0); }
  50% { transform: rotate(-5deg); }
}
@keyframes lotusBalanceDroite {
  0%, 100% { transform: rotate(0); }
  50% { transform: rotate(5deg); }
}
@keyframes lotusOndule {
  0%, 100% { transform: scaleX(1); }
  50% { transform: scaleX(1.2) scaleY(1.12); }
}
.contact-lotus .l-aureole { transform-origin: 180px 130px; }
.contact-info.visible .l-aureole { animation: lotusLueur 6s ease-in-out 4.8s infinite; }
@keyframes lotusLueur {
  0%, 100% { opacity: .55; transform: scale(1); }
  50% { opacity: .95; transform: scale(1.055); }
}
.contact-lotus.lotus-paused * { animation-play-state: paused !important; }

/* logo qui tourne au survol */
.nav-brand img, .footer img { transition: transform .7s ease; }
.nav-brand:hover img, .footer img:hover { transform: rotate(180deg); }

@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal.reveal-pending { opacity: 1; transform: none; transition: none; }
  .apropos-soustitre::after { transition: none; width: 62%; }
  .geo-slow, .geo-fast, .orb, .portrait, .hero-scroll span,
  .chakra-halo, .halo-rotate, .grad, .hero-chips .chip, .hero-cta .btn,
  .card-deco, .deco-hands, .deco-waves, .deco-tarifs, .price-illus,
  .contact-lotus, .contact-lotus *,
  .frise-ico { animation: none !important; }
  html { scroll-behavior: auto; }
}

/* ═════════ Responsive ═════════ */
@media (max-width: 880px) {
  .apropos { grid-template-columns: 1fr; }
  .apropos-visual { max-width: 280px; margin: 0 auto; }
  .contact { grid-template-columns: 1fr; }
  .contact-lotus { margin-inline: auto; display: block; }
}
@media (max-width: 1100px) {
  .nav:has(.nav-burger) {
    height: 72px;
    gap: .5rem;
  }
  #navLinks {
    display: none;
    position: absolute;
    inset: 100% 0 auto;
    z-index: 99;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: .35rem;
    width: auto;
    min-width: 0;
    max-height: calc(100vh - 72px);
    max-height: calc(100dvh - 72px);
    margin: 0;
    padding: 1rem 1.2rem 1.5rem;
    overflow-y: auto;
    overscroll-behavior: contain;
    background: #fbf9ff;
    box-shadow: 0 16px 22px #30264014;
  }
  #navLinks.open { display: flex; }
  #navLinks a {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 44px;
    max-width: 100%;
    text-align: center;
    white-space: normal;
  }
  .nav-burger {
    display: grid;
    grid-template-columns: 24px;
    grid-template-rows: repeat(3, 2px);
    align-content: center;
    justify-content: center;
    gap: 5px;
    width: 44px;
    height: 44px;
    flex: 0 0 44px;
    z-index: 101;
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
  }
  .nav-burger span {
    display: block;
    width: 24px; height: 2px;
    background: var(--ink);
    border-radius: 2px;
    transition: transform .3s, opacity .3s;
  }
  .nav-burger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .nav-burger.open span:nth-child(2) { opacity: 0; }
  .nav-burger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
}
@media (max-width: 380px) {
  .nav:has(.nav-burger) .nav-brand { font-size: 1rem; gap: .5rem; }
}
@media (max-width: 720px) {
  .form-row { grid-template-columns: 1fr; }
}
