/* ============================================
   ACUPOINT — CENTRE SUWEN
   Design System — Relaunch 2026
   ============================================ */

:root {
  /* Colors — primary #E09292 (Acupoint brand 2026) */
  --rose-50:  #fdf4f4;
  --rose-100: #f9e3e3;
  --rose-200: #f1c8c8;
  --rose-300: #ebb1b1;
  --rose-400: #e5a1a1;
  --rose-500: #e09292;   /* primary — brand rose */
  --rose-600: #c87575;
  --rose-700: #a05959;

  --sand-50:  #fdfaf6;
  --sand-100: #f8f1e7;
  --sand-200: #ede0cd;
  --sand-300: #d9c3a3;

  --gold-400: #c9a87c;
  --gold-500: #b89469;
  --gold-600: #93724c;

  --ink-900:  #2b211c;   /* primary text */
  --ink-700:  #4d3f37;
  --ink-500:  #74645a;
  --ink-400:  #94857a;
  --ink-300:  #b8aba0;

  --line:     #e8ddd1;
  --line-2:   #f0e6da;
  --white:    #ffffff;

  /* Type */
  --serif: "Cormorant Garamond", "Playfair Display", Georgia, serif;
  --sans: "Manrope", "Nunito Sans", -apple-system, BlinkMacSystemFont, system-ui, sans-serif;

  /* Radii & shadow */
  --r-sm: 6px;
  --r-md: 14px;
  --r-lg: 24px;
  --r-pill: 999px;

  --shadow-sm: 0 2px 6px rgba(80, 50, 35, 0.06);
  --shadow-md: 0 10px 30px rgba(80, 50, 35, 0.08);
  --shadow-lg: 0 24px 60px rgba(80, 50, 35, 0.10);

  /* Spacing rhythm */
  --container: 1240px;
  --gutter: clamp(20px, 4vw, 56px);
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.6;
  color: var(--ink-900);
  background: var(--sand-50);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }

/* ---------- Typography ---------- */
h1, h2, h3, h4, h5 {
  font-family: var(--serif);
  font-weight: 500;
  letter-spacing: -0.01em;
  margin: 0 0 0.4em;
  color: var(--ink-900);
  line-height: 1.12;
  text-wrap: balance;
}
h1 { font-size: clamp(2.6rem, 5.2vw, 4.8rem); font-weight: 400; }
h2 { font-size: clamp(2rem, 3.8vw, 3.2rem); font-weight: 400; }
h3 { font-size: clamp(1.4rem, 2.2vw, 1.85rem); }
h4 { font-size: 1.2rem; }

p { margin: 0 0 1em; color: var(--ink-700); text-wrap: pretty; }

.eyebrow {
  font-family: var(--sans);
  text-transform: uppercase;
  letter-spacing: 0.22em;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--gold-600);
  margin: 0 0 1.25rem;
  display: inline-flex;
  align-items: center;
  gap: 12px;
}
.eyebrow::before {
  content: "";
  width: 28px;
  height: 1px;
  background: var(--gold-500);
}

.lead {
  font-size: clamp(1.05rem, 1.3vw, 1.18rem);
  color: var(--ink-700);
  line-height: 1.65;
  max-width: 62ch;
}

.italic { font-style: italic; }
.script {
  font-family: var(--serif);
  font-style: italic;
  font-weight: 400;
  color: var(--rose-500);
}

/* ---------- Layout ---------- */
.container {
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
  padding-inline: var(--gutter);
}

.section {
  padding-block: clamp(64px, 9vw, 130px);
}
.section--tight { padding-block: clamp(48px, 6vw, 80px); }
.section--cream { background: var(--sand-100); }
.section--rose { background: var(--rose-50); }
.section--ink { background: var(--ink-900); color: var(--sand-50); }
.section--ink h1, .section--ink h2, .section--ink h3 { color: var(--sand-50); }
.section--ink p { color: rgba(255,255,255,0.78); }

.grid { display: grid; gap: 32px; }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 980px) {
  .grid-3, .grid-4 { grid-template-columns: repeat(2, 1fr); }
  .grid-2 { grid-template-columns: 1fr; }
}
@media (max-width: 620px) {
  .grid-3, .grid-4 { grid-template-columns: 1fr; }
}

.flex { display: flex; gap: 20px; }
.flex-center { display: flex; align-items: center; justify-content: center; }
.flex-between { display: flex; align-items: center; justify-content: space-between; gap: 24px; }

/* ---------- Header ---------- */
.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(253, 250, 246, 0.92);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--line-2);
}
.header-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding-block: 18px;
  gap: 32px;
}
.brand {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-shrink: 0;
}
.brand-logo {
  width: 56px;
  height: 56px;
  object-fit: contain;
}
.brand-name {
  font-family: var(--serif);
  font-size: 1.4rem;
  line-height: 1;
  color: var(--ink-900);
  letter-spacing: 0.02em;
}
.brand-tag {
  font-family: var(--sans);
  font-size: 0.65rem;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--gold-600);
  margin-top: 4px;
}

.nav {
  display: flex;
  gap: 4px;
  align-items: center;
  list-style: none;
  margin: 0;
  padding: 0;
}
.nav > li { position: relative; }
.nav a {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 10px 14px;
  font-size: 0.92rem;
  font-weight: 500;
  color: var(--ink-700);
  border-radius: var(--r-pill);
  transition: color 0.2s, background 0.2s;
}
.nav a:hover, .nav a.active { color: var(--rose-500); background: var(--rose-50); }
.nav .has-mega > a::after,
.nav .has-sub > a::after {
  content: "";
  width: 6px; height: 6px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg);
  display: inline-block;
  margin-left: 8px;
  vertical-align: 2px;
  opacity: 0.5;
}

.submenu {
  position: absolute;
  top: calc(100% + 12px);
  left: 50%;
  transform: translateX(-50%) translateY(8px);
  background: var(--white);
  border: 1px solid var(--line-2);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-md);
  padding: 12px;
  min-width: 220px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  opacity: 0;
  pointer-events: none;
  transition: all 0.25s;
  z-index: 50;
}
.submenu a {
  padding: 10px 14px;
  font-size: 0.92rem;
  color: var(--ink-700);
  border-radius: 8px;
  text-decoration: none;
}
.submenu a:hover { background: var(--rose-50); color: var(--rose-500); }
.has-sub { position: relative; }
.has-sub:hover .submenu { opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(0); }

/* Invisible bridge that fills the 12–14px gap between the menu item and the
   submenu so the cursor never leaves the LI's :hover during the traversal.
   Transparent, positioned just below each top-level item — width matches the
   item itself; once the cursor reaches the submenu (a descendant of the LI),
   the LI keeps its :hover via descendant-hover. */
.nav .has-sub::after,
.nav .has-mega::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  height: 18px;
  background: transparent;
  z-index: 49;
}

.mega {
  position: absolute;
  top: calc(100% + 14px);
  left: 50%;
  transform: translateX(-50%) translateY(8px);
  background: var(--white);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-lg);
  padding: 28px;
  min-width: 820px;
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px 24px;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.25s, transform 0.25s;
  border: 1px solid var(--line-2);
}
.mega::before {
  content: "";
  position: absolute;
  top: -7px;
  left: 50%;
  transform: translateX(-50%) rotate(45deg);
  width: 14px; height: 14px;
  background: var(--white);
  border-left: 1px solid var(--line-2);
  border-top: 1px solid var(--line-2);
}
.has-mega:hover .mega { opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(0); }
.mega-col h5 {
  font-family: var(--sans);
  text-transform: uppercase;
  font-size: 0.7rem;
  letter-spacing: 0.2em;
  color: var(--gold-600);
  margin: 0 0 10px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line-2);
}
.mega a {
  display: block;
  padding: 8px 10px;
  font-size: 0.92rem;
  color: var(--ink-700);
  border-radius: 8px;
  background: none;
}
.mega a:hover { background: var(--rose-50); color: var(--rose-500); }

.header-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.menu-toggle {
  display: none;
  width: 44px; height: 44px;
  border-radius: 50%;
  background: var(--sand-100);
  border: 1px solid var(--line);
  align-items: center;
  justify-content: center;
  cursor: pointer;
}
.menu-toggle span {
  width: 18px; height: 1.5px;
  background: var(--ink-900);
  display: block;
  position: relative;
}
.menu-toggle span::before,
.menu-toggle span::after {
  content: "";
  width: 18px; height: 1.5px;
  background: var(--ink-900);
  position: absolute;
  left: 0;
}
.menu-toggle span::before { top: -6px; }
.menu-toggle span::after { top: 6px; }

@media (max-width: 1080px) {
  .nav, .header-cta { display: none; }
  .menu-toggle { display: inline-flex; }
}

/* Mobile drawer */
.drawer {
  position: fixed;
  inset: 0;
  background: var(--sand-50);
  z-index: 100;
  transform: translateX(100%);
  transition: transform 0.35s ease;
  overflow-y: auto;
  padding: 24px;
}
.drawer.open { transform: translateX(0); }
.drawer-close {
  position: absolute;
  top: 24px; right: 24px;
  width: 44px; height: 44px;
  border-radius: 50%;
  border: 1px solid var(--line);
  background: var(--white);
  cursor: pointer;
  font-size: 1.6rem;
  line-height: 1;
}
.drawer-nav { list-style: none; padding: 80px 12px 24px; margin: 0; }
.drawer-nav li { border-bottom: 1px solid var(--line-2); }
.drawer-nav a {
  display: block;
  padding: 18px 6px;
  font-family: var(--serif);
  font-size: 1.4rem;
  color: var(--ink-900);
}
.drawer-nav .sub { padding-left: 20px; }
.drawer-nav .sub a { font-family: var(--sans); font-size: 0.95rem; padding: 12px 6px; color: var(--ink-700); }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  padding: 14px 26px;
  font-family: var(--sans);
  font-size: 0.92rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  border-radius: var(--r-pill);
  border: 1.5px solid transparent;
  cursor: pointer;
  transition: all 0.25s;
  text-decoration: none;
  white-space: nowrap;
}
.btn--primary { background: var(--rose-500); color: var(--white); }
.btn--primary:hover { background: var(--rose-600); transform: translateY(-1px); box-shadow: var(--shadow-md); }
.btn--ghost { background: transparent; border-color: var(--rose-500); color: var(--rose-600); }
.btn--ghost:hover { background: var(--rose-500); color: var(--white); border-color: var(--rose-500); }
.btn--ink { background: var(--ink-900); color: var(--sand-50); }
.btn--ink:hover { background: var(--ink-700); }
.btn--gold { background: var(--gold-500); color: var(--white); }
.btn--gold:hover { background: var(--gold-600); }
.btn--link {
  background: none;
  padding: 4px 0;
  color: var(--rose-500);
  border-radius: 0;
  border-bottom: 1px solid var(--rose-300);
}
.btn--link:hover { color: var(--rose-600); border-bottom-color: var(--rose-500); }

.btn .arrow { transition: transform 0.25s; }
.btn:hover .arrow { transform: translateX(4px); }

/* ---------- Cards ---------- */
.card-formation {
  display: flex;
  flex-direction: column;
  background: var(--white);
  border-radius: var(--r-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: transform 0.3s, box-shadow 0.3s;
  border: 1px solid var(--line-2);
}
.card-formation:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.card-formation .card-img {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--sand-200);
}
.card-formation .card-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.6s;
}
.card-formation:hover .card-img img { transform: scale(1.05); }
.card-formation .tag {
  position: absolute;
  top: 14px; left: 14px;
  background: rgba(253, 250, 246, 0.94);
  backdrop-filter: blur(8px);
  padding: 6px 12px;
  border-radius: var(--r-pill);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--rose-500);
}
.card-formation .card-body {
  padding: 24px 24px 26px;
  display: flex;
  flex-direction: column;
  flex: 1;
}
.card-formation h3 {
  font-size: 1.4rem;
  margin: 0 0 8px;
}
.card-formation .meta {
  display: flex;
  align-items: center;
  gap: 14px;
  font-family: var(--sans);
  font-size: 0.82rem;
  color: var(--ink-500);
  margin-bottom: 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line-2);
}
.card-formation .meta .dot { width: 3px; height: 3px; background: var(--ink-300); border-radius: 50%; }
.card-formation .price {
  font-family: var(--serif);
  font-size: 1.6rem;
  color: var(--rose-500);
  font-weight: 500;
}
.card-formation p { font-size: 0.94rem; margin-bottom: 18px; flex: 1; }
.card-formation .card-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}

/* ---------- Footer ---------- */
.site-footer {
  background: var(--ink-900);
  color: rgba(255,255,255,0.72);
  padding: 80px 0 30px;
}
.site-footer h4 {
  color: var(--sand-100);
  font-family: var(--serif);
  font-size: 1.15rem;
  margin-bottom: 18px;
}
.footer-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1fr;
  gap: 56px;
  padding-bottom: 56px;
  border-bottom: 1px solid rgba(255,255,255,0.1);
}
@media (max-width: 900px) { .footer-grid { grid-template-columns: 1fr 1fr; gap: 40px; } }
@media (max-width: 540px) { .footer-grid { grid-template-columns: 1fr; gap: 32px; } }
.footer-grid ul { list-style: none; padding: 0; margin: 0; }
.footer-grid li a {
  display: block;
  padding: 5px 0;
  font-size: 0.92rem;
  color: rgba(255,255,255,0.72);
  transition: color 0.2s;
}
.footer-grid li a:hover { color: var(--rose-300); }
.footer-brand .brand-name { color: var(--sand-50); }
.footer-brand p { color: rgba(255,255,255,0.6); font-size: 0.9rem; margin-top: 16px; }
.socials { display: flex; gap: 10px; margin-top: 22px; }
.socials a {
  width: 38px; height: 38px;
  border-radius: 50%;
  border: 1px solid rgba(255,255,255,0.18);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.9rem;
  color: rgba(255,255,255,0.7);
  transition: all 0.2s;
}
.socials a:hover { background: var(--rose-500); border-color: var(--rose-500); color: white; }
.footer-bottom {
  padding-top: 28px;
  display: flex;
  justify-content: space-between;
  font-size: 0.82rem;
  color: rgba(255,255,255,0.5);
  flex-wrap: wrap;
  gap: 16px;
}

/* ---------- Hero (homepage) ---------- */
.hero {
  position: relative;
  padding: clamp(70px, 11vw, 140px) 0 clamp(80px, 12vw, 160px);
  overflow: hidden;
  background:
    radial-gradient(ellipse 800px 600px at 100% 0%, var(--rose-100) 0%, transparent 60%),
    radial-gradient(ellipse 700px 500px at 0% 100%, var(--sand-200) 0%, transparent 55%),
    var(--sand-50);
}
.hero-inner {
  display: grid;
  grid-template-columns: 1.05fr 1fr;
  gap: 60px;
  align-items: center;
  position: relative;
  z-index: 2;
}
@media (max-width: 960px) {
  .hero-inner { grid-template-columns: 1fr; gap: 48px; }
}
.hero h1 {
  margin-bottom: 24px;
  letter-spacing: -0.02em;
}
.hero h1 .accent {
  display: block;
  font-style: italic;
  color: var(--rose-500);
  font-weight: 300;
}
.hero-image-wrap {
  position: relative;
  aspect-ratio: 4/5;
  max-width: 520px;
  margin-left: auto;
}
.hero-image-wrap .photo {
  width: 100%;
  height: 100%;
  border-radius: 280px 280px 32px 32px;
  background: linear-gradient(160deg, var(--rose-200), var(--sand-200));
  position: relative;
  overflow: hidden;
}
.hero-image-wrap .photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.hero-image-wrap .badge {
  position: absolute;
  background: var(--white);
  border-radius: var(--r-md);
  padding: 18px 22px;
  box-shadow: var(--shadow-lg);
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 0.88rem;
}
.hero-image-wrap .badge-1 { bottom: 60px; left: -40px; }
.hero-image-wrap .badge-2 { top: 80px; right: -30px; }
.hero-image-wrap .badge-num {
  font-family: var(--serif);
  font-size: 1.8rem;
  color: var(--rose-500);
  line-height: 1;
}

/* Decorative petals (preserved motif) */
.petal {
  position: absolute;
  opacity: 0.5;
  pointer-events: none;
  z-index: 0;
}

/* ---------- Stats / inline metrics ---------- */
.stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 40px;
  padding-block: 32px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
@media (max-width: 720px) { .stats { grid-template-columns: repeat(2, 1fr); gap: 24px; } }
.stat .num {
  font-family: var(--serif);
  font-size: clamp(2rem, 3.5vw, 2.8rem);
  color: var(--rose-500);
  line-height: 1;
}
.stat .label { font-size: 0.84rem; color: var(--ink-500); margin-top: 8px; }

/* ---------- Page hero (interior) ---------- */
.page-hero {
  padding: clamp(72px, 10vw, 130px) 0 clamp(56px, 7vw, 84px);
  background:
    radial-gradient(ellipse 700px 400px at 80% 0%, var(--rose-100) 0%, transparent 60%),
    var(--sand-50);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.page-hero .breadcrumb {
  font-size: 0.82rem;
  color: var(--ink-500);
  letter-spacing: 0.08em;
  margin-bottom: 18px;
}
.page-hero .breadcrumb a { color: var(--ink-500); }
.page-hero .breadcrumb a:hover { color: var(--rose-500); }
.page-hero h1 { margin: 8px auto 22px; max-width: 18ch; }
.page-hero .lead { margin: 0 auto; }

/* ---------- Photo placeholder ---------- */
.ph {
  background: linear-gradient(135deg, var(--rose-100), var(--sand-200));
  position: relative;
  overflow: hidden;
  color: var(--rose-500);
  font-family: var(--serif);
  font-style: italic;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 20px;
}
.ph::before {
  content: "";
  position: absolute;
  inset: 12px;
  border: 1px dashed var(--rose-300);
  border-radius: inherit;
  pointer-events: none;
}

/* ---------- Utility ---------- */
.center { text-align: center; }
.mb-0 { margin-bottom: 0; }
.mb-2 { margin-bottom: 1rem; }
.mb-4 { margin-bottom: 2rem; }
.mt-4 { margin-top: 2rem; }
.divider {
  width: 56px;
  height: 1px;
  background: var(--gold-500);
  margin: 1.4rem auto;
}

/* ---------- Testimonials ---------- */
.testimonial {
  background: var(--white);
  padding: 36px;
  border-radius: var(--r-md);
  border: 1px solid var(--line-2);
  position: relative;
}
.testimonial::before {
  content: "“";
  position: absolute;
  top: 10px; left: 22px;
  font-family: var(--serif);
  font-size: 5rem;
  color: var(--rose-200);
  line-height: 1;
}
.testimonial p {
  font-family: var(--serif);
  font-size: 1.15rem;
  line-height: 1.55;
  color: var(--ink-700);
  font-style: italic;
  margin: 0 0 24px;
  padding-top: 16px;
}
.testimonial .author {
  display: flex;
  align-items: center;
  gap: 12px;
}
.testimonial .av {
  width: 44px; height: 44px;
  border-radius: 50%;
  background: var(--rose-200);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--serif);
  color: var(--rose-600);
  font-size: 1.1rem;
}
.testimonial .author strong { font-family: var(--sans); font-weight: 600; font-size: 0.92rem; color: var(--ink-900); }
.testimonial .author span { font-size: 0.8rem; color: var(--ink-500); display: block; }
.stars { color: var(--gold-500); margin-bottom: 6px; font-size: 0.92rem; letter-spacing: 0.15em; }

/* ---------- CTA Band ---------- */
.cta-band {
  background:
    radial-gradient(ellipse 600px 400px at 0% 50%, rgba(201, 134, 120, 0.4) 0%, transparent 60%),
    var(--ink-900);
  color: var(--sand-50);
  padding: clamp(56px, 7vw, 90px) var(--gutter);
  border-radius: var(--r-lg);
  margin: clamp(40px, 6vw, 80px) auto;
  max-width: calc(var(--container) - var(--gutter) * 2);
  position: relative;
  overflow: hidden;
}
.cta-band h2 { color: var(--sand-50); margin-bottom: 16px; }
.cta-band p { color: rgba(255,255,255,0.78); max-width: 50ch; margin-bottom: 28px; }
.cta-band .cta-inner {
  display: grid;
  grid-template-columns: 1.5fr auto;
  gap: 32px;
  align-items: center;
}
@media (max-width: 720px) { .cta-band .cta-inner { grid-template-columns: 1fr; } }
.cta-band .btn--primary { background: var(--rose-500); }
.cta-band .btn--primary:hover { background: var(--rose-400); }

/* ---------- Form ---------- */
.form {
  display: grid;
  gap: 18px;
}
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
@media (max-width: 620px) { .form-row { grid-template-columns: 1fr; } }
.field label {
  display: block;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--ink-700);
  margin-bottom: 7px;
  letter-spacing: 0.02em;
}
.field input, .field select, .field textarea {
  width: 100%;
  padding: 14px 16px;
  font-family: var(--sans);
  font-size: 0.94rem;
  color: var(--ink-900);
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: 10px;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.field input:focus, .field select:focus, .field textarea:focus {
  outline: none;
  border-color: var(--rose-400);
  box-shadow: 0 0 0 4px var(--rose-100);
}
.field textarea { min-height: 140px; resize: vertical; }
.checkbox {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-size: 0.88rem;
  color: var(--ink-700);
}
.checkbox input { width: 18px; height: 18px; margin-top: 2px; accent-color: var(--rose-500); }

/* ---------- Animations ---------- */
@keyframes float { 0%,100% { transform: translateY(0); } 50% { transform: translateY(-12px); } }
.float-1 { animation: float 7s ease-in-out infinite; }
.float-2 { animation: float 9s ease-in-out infinite reverse; }


/* ===== ACU-BLOCK:HEADER START ===== */
/* =====================================================================
   HEADER — Elementor native widgets override
   site-header container > header-inner container > brand / nav-menu / button
   Restyle Elementor's default widget output to match the Suwen design.
   ===================================================================== */

.elementor-element.site-header,
.elementor-element-edit-mode.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(253, 250, 246, 0.92);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid var(--line-2);
}
/* Ensure header containers actually behave as a single horizontal row at desktop */
.elementor-element.header-inner.e-con {
  flex-wrap: nowrap !important;
}
.elementor-element.brand.e-con {
  flex-shrink: 0;
  flex-wrap: nowrap !important;
  width: auto !important;
}
.elementor-element.brand-text.e-con {
  width: auto !important;
  flex-shrink: 0;
}
.brand-text .elementor-heading-title {
  white-space: nowrap;
}

.brand-logo img,
.elementor-widget-image.brand-logo img {
  width: 56px;
  height: 56px;
  object-fit: contain;
}
/* Trim Elementor's default vertical widget margins inside the header so the
   bar height matches the maquette (~92px total). */
.elementor-element.header-inner .elementor-widget,
.elementor-element.brand .elementor-widget,
.elementor-element.brand-text .elementor-widget {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}
.elementor-element.header-inner .elementor-widget-container {
  padding: 0 !important;
}
/* Elementor doubles the vertical padding on .e-con-boxed (outer)
   AND .e-con-inner — kill the inner one so 18px top+bottom only.
   Also force align-items: center so flex children don't stretch. */
.elementor-element.header-inner > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
  align-items: center !important;
}
.elementor-element.header-inner {
  align-items: center !important;
}
.elementor-element.brand,
.elementor-element.brand > .e-con-inner {
  align-items: center !important;
}
/* Brand name — serif, dark ink, large */
.brand-name .elementor-heading-title,
.elementor-widget-heading.brand-name .elementor-heading-title,
.elementor-widget-heading .elementor-heading-title.brand-name {
  font-family: var(--serif) !important;
  font-size: 1.4rem !important;
  font-weight: 500 !important;
  line-height: 1 !important;
  color: var(--ink-900) !important;
  letter-spacing: 0.02em !important;
  margin: 0 !important;
}
/* Brand tag — sans, uppercase, gold */
.brand-tag .elementor-heading-title,
.elementor-widget-heading.brand-tag .elementor-heading-title,
.elementor-widget-heading .elementor-heading-title.brand-tag {
  font-family: var(--sans) !important;
  font-size: 0.65rem !important;
  letter-spacing: 0.28em !important;
  text-transform: uppercase !important;
  color: var(--gold-600) !important;
  margin: 4px 0 0 !important;
  font-weight: 500 !important;
  line-height: 1 !important;
}

/* ---------- Nav Menu (Elementor Pro) — top level ---------- */
.elementor-nav-menu--main .elementor-nav-menu {
  display: flex;
  gap: 4px;
  align-items: center;
}
.elementor-nav-menu--main .elementor-nav-menu > li {
  position: relative;
}
.elementor-nav-menu--main .elementor-item,
.elementor-nav-menu .elementor-item {
  padding: 10px 14px !important;
  font-family: var(--sans) !important;
  font-size: 0.92rem !important;
  font-weight: 500 !important;
  color: var(--ink-700) !important;
  border-radius: var(--r-pill) !important;
  transition: color 0.2s, background 0.2s !important;
  fill: currentColor;
  letter-spacing: normal !important;
  text-transform: none !important;
}
/* Hover / open-submenu state — keeps the soft rose pill highlight */
.elementor-nav-menu--main .elementor-item:hover,
.elementor-nav-menu--main .elementor-item:focus,
.elementor-nav-menu--main .elementor-item.highlighted {
  color: var(--rose-500) !important;
  background: var(--rose-50) !important;
}
/* Current-page state — only the text turns rose, NO background pill. */
.elementor-nav-menu--main .elementor-item.elementor-item-active {
  color: var(--rose-500) !important;
  background: transparent !important;
}
/* Same rule for sub-items in dropdowns */
.elementor-nav-menu--main .sub-menu .elementor-sub-item.elementor-item-active {
  color: var(--rose-500) !important;
  background: transparent !important;
}
/* Hide Elementor's default Font-Awesome sub-arrow icon — we draw our own
   chevron via CSS to match the design (rotated-square borders). */
.elementor-nav-menu--main .sub-arrow {
  display: none !important;
}
/* Kill Elementor's pointer ::before (rose underline/pill that animates on hover) —
   we disabled pointer in the widget but the base pseudo still ships with the CSS. */
.elementor-nav-menu--main a.elementor-item::before {
  content: none !important;
  display: none !important;
  background: transparent !important;
  opacity: 0 !important;
}
/* Custom chevron — a 6×6 square rotated 45° with right+bottom borders.
   High specificity + !important because Elementor's pointer CSS applies a
   default `opacity: 0; transition: opacity` to a.elementor-item::after that
   would otherwise hide our chevron. */
.elementor-nav-menu--main .menu-item-has-children > a.elementor-item::after,
.elementor-nav-menu .menu-item-has-children > a.elementor-item::after {
  content: "" !important;
  width: 6px !important;
  height: 6px !important;
  border-right: 1.5px solid currentColor !important;
  border-bottom: 1.5px solid currentColor !important;
  border-top: 0 !important;
  border-left: 0 !important;
  background: transparent !important;
  transform: rotate(45deg) !important;
  display: inline-block !important;
  margin-left: 8px !important;
  vertical-align: 2px !important;
  opacity: 0.5 !important;
  transition: transform 0.2s ease, opacity 0.2s ease !important;
  position: static !important;
  /* The pointer-animation rules sometimes set width:100% or height:1px — undo: */
  inset: auto !important;
  top: auto !important;
  bottom: auto !important;
  left: auto !important;
  right: auto !important;
}
.elementor-nav-menu--main .menu-item-has-children:hover > a.elementor-item::after,
.elementor-nav-menu--main .menu-item-has-children.highlighted > a.elementor-item::after,
.elementor-nav-menu .menu-item-has-children:hover > a.elementor-item::after,
.elementor-nav-menu .menu-item-has-children.highlighted > a.elementor-item::after {
  transform: rotate(225deg) !important;
  opacity: 1 !important;
}

/* Kill Elementor's vertical divider between menu items (we disabled the control
   in the widget settings too, but defensively reset the CSS variables in case
   stale data lingers). Critically: only reset the border bits, NOT `content`,
   because our hover bridge ::after also lives on this LI. */
.elementor-widget-nav-menu,
.elementor-nav-menu--main {
  --e-nav-menu-divider-width: 0 !important;
  --e-nav-menu-divider-height: 0 !important;
  --e-nav-menu-divider-color: transparent !important;
  --e-nav-menu-divider-style: none !important;
}
/* Re-state the bridge AFTER the variable reset so the border:0 wins over the
   Elementor CSS that previously gave it a border-left from the divider vars. */
.elementor-nav-menu--main > .elementor-nav-menu > li.menu-item-has-children::after {
  border: 0 !important;
}

/* Hover bridge — fill the gap between item and dropdown panel */
.elementor-nav-menu--main > .elementor-nav-menu > li.menu-item-has-children::after {
  content: "";
  position: absolute;
  top: 100%;
  left: 0; right: 0;
  height: 18px;
  background: transparent;
  z-index: 49;
}

/* ---------- Dropdown panel — standard 1-column ----------
   IMPORTANT: do NOT force `display` here. SmartMenus (Elementor's Nav Menu JS)
   toggles `display: none/block` inline to hide/show. We only style the look. */
.elementor-nav-menu--main .sub-menu {
  background: var(--white) !important;
  border: 1px solid var(--line-2) !important;
  border-radius: var(--r-md) !important;
  box-shadow: var(--shadow-md) !important;
  padding: 12px !important;
  min-width: 240px;
  margin-top: 14px !important;
}
.elementor-nav-menu--main .sub-menu .elementor-sub-item {
  padding: 10px 14px !important;
  font-family: var(--sans) !important;
  font-size: 0.92rem !important;
  font-weight: 500 !important;
  color: var(--ink-700) !important;
  border-radius: 8px !important;
}
.elementor-nav-menu--main .sub-menu .elementor-sub-item:hover,
.elementor-nav-menu--main .sub-menu .elementor-sub-item:focus {
  background: var(--rose-50) !important;
  color: var(--rose-500) !important;
}

/* ---------- Mega menu (3 columns) — CSS class mega-menu-3col on the parent menu item ----------
   The grid uses `dense column` auto-flow so explicit-column items fill the first
   available row of their column, not the bottom of the previously-filled column.
   We DO use !important on grid here because SmartMenus only toggles `display`
   between `none` and `block`/`flex` — we override `block` to `grid` *only* when
   the menu is visible (i.e. doesn't have inline display:none). */
/* Keep position:relative on the parent LI so the bridge ::after is positioned
   relative to the LI itself (not the whole nav) — otherwise the bridge
   covers the entire row below the header and triggers hover globally. */
.elementor-nav-menu--main > .elementor-nav-menu > li.mega-menu-3col {
  position: relative;
}
.elementor-nav-menu--main > .elementor-nav-menu > li.mega-menu-3col > .sub-menu {
  /* Layout only — visibility/display still managed by SmartMenus */
  grid-template-columns: 1fr 1fr 1fr;
  grid-auto-flow: dense;
  grid-auto-rows: min-content;
  gap: 4px 32px;
  min-width: 860px;
  max-width: 1100px;
  padding: 28px !important;
  /* Center the wide panel on the (narrower) LI; allow it to overflow both sides */
  position: absolute !important;
  left: 50% !important;
  right: auto !important;
  transform: translateX(-50%);
}
/* Show the mega-menu as a grid ONLY when SmartMenus marks the parent as
   open (.highlighted class) or the user is hovering. Default state stays
   `display: none` from Elementor core. */
.elementor-nav-menu--main > .elementor-nav-menu > li.mega-menu-3col:hover > .sub-menu,
.elementor-nav-menu--main > .elementor-nav-menu > li.mega-menu-3col.highlighted > .sub-menu,
.elementor-nav-menu--main > .elementor-nav-menu > li.mega-menu-3col[aria-expanded="true"] > .sub-menu {
  display: grid !important;
}
/* Ensure the closed mega-menu is truly hidden — fight any leftover CSS that
   tries to keep .elementor-nav-menu--dropdown visible. */
.elementor-nav-menu--main > .elementor-nav-menu > li.mega-menu-3col > .sub-menu {
  display: none;
}

.elementor-nav-menu--main > .elementor-nav-menu > li.mega-menu-3col > .sub-menu > li {
  list-style: none;
}
.elementor-nav-menu--main > .elementor-nav-menu > li.mega-menu-3col > .sub-menu > li.mega-col-1 { grid-column: 1; }
.elementor-nav-menu--main > .elementor-nav-menu > li.mega-menu-3col > .sub-menu > li.mega-col-2 { grid-column: 2; }
.elementor-nav-menu--main > .elementor-nav-menu > li.mega-menu-3col > .sub-menu > li.mega-col-3 { grid-column: 3; }

/* Mega-menu column headings — CSS class mega-heading on the item */
.elementor-nav-menu--main li.mega-heading > .elementor-sub-item {
  font-family: var(--sans) !important;
  text-transform: uppercase;
  font-size: 0.7rem !important;
  letter-spacing: 0.2em !important;
  color: var(--gold-600) !important;
  margin: 0 0 6px !important;
  padding: 8px 10px !important;
  border-bottom: 1px solid var(--line-2) !important;
  pointer-events: none;
  cursor: default;
  font-weight: 600 !important;
  background: transparent !important;
  border-radius: 0 !important;
}
.elementor-nav-menu--main li.mega-heading > .elementor-sub-item:hover {
  background: transparent !important;
  color: var(--gold-600) !important;
}
/* Headings after the first column header get a top margin so they breathe */
.elementor-nav-menu--main li.mega-heading ~ li.mega-heading > .elementor-sub-item {
  margin-top: 14px !important;
}

/* ---------- CTA "S'inscrire" — .acu-cta button widget ---------- */
.elementor-widget-button .acu-cta a.elementor-button,
.elementor-element .acu-cta .elementor-button {
  background: var(--rose-500) !important;
  color: var(--white) !important;
  font-family: var(--sans) !important;
  font-size: 0.92rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em;
  padding: 14px 26px !important;
  border-radius: var(--r-pill) !important;
  border: 1.5px solid transparent !important;
  transition: all 0.25s;
}
.elementor-element .acu-cta .elementor-button:hover {
  background: var(--rose-600) !important;
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}

/* ====================================================================
   MOBILE — burger + full-width drawer + S'inscrire inside the drawer
   Breakpoint: ≤ 767px (matches the widget setting `dropdown: 'mobile'`).
   ==================================================================== */

/* Burger button styling — circular, vertically centered with the logo */
.elementor-menu-toggle {
  background: var(--sand-100) !important;
  border: 1px solid var(--line) !important;
  border-radius: 50% !important;
  color: var(--ink-900) !important;
  width: 44px !important;
  height: 44px !important;
  align-self: center !important;
  margin-left: auto !important;
}

@media (max-width: 767px) {
  /* Hide the desktop horizontal nav (the widget already toggles its own
     classes but we belt-and-suspenders) */
  .elementor-nav-menu--main .elementor-nav-menu { display: none !important; }

  /* Hide the desktop "S'inscrire" CTA in the header bar — it'll appear
     inside the drawer instead (via a CTA menu item with class .cta-mobile). */
  .elementor-element.acu-cta {
    display: none !important;
  }

  /* Header inner: brand on left, burger on right, both vertically centered */
  .elementor-element.header-inner > .e-con-inner {
    flex-direction: row !important;
    justify-content: space-between !important;
    align-items: center !important;
    flex-wrap: nowrap !important;
  }

  /* Drawer (dropdown clone) — full viewport width, slide-in from top */
  .elementor-nav-menu__container.elementor-nav-menu--dropdown {
    position: fixed !important;
    top: 92px !important;     /* below header height — admin bar will offset */
    left: 0 !important;
    right: 0 !important;
    width: 100vw !important;
    max-width: none !important;
    min-height: calc(100vh - 92px) !important;
    background: var(--sand-50) !important;
    padding: 24px !important;
    z-index: 49 !important;
    overflow-y: auto !important;
  }
  /* Push drawer below WP admin bar when present */
  body.admin-bar .elementor-nav-menu__container.elementor-nav-menu--dropdown {
    top: 124px !important; /* 92 header + 32 admin */
    min-height: calc(100vh - 124px) !important;
  }
  /* Drawer menu items — bigger, serif, separated by a thin line.
     Force transparent background in ALL states (default / hover / active /
     highlighted / aria-expanded) — only the text colour signals the state. */
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item:hover,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item:focus,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item.highlighted,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item.elementor-item-active,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .menu-item-has-children > .elementor-item,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .menu-item.current-menu-item > .elementor-item,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .menu-item.current-menu-parent > .elementor-item,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .menu-item.current-menu-ancestor > .elementor-item {
    padding: 18px 6px !important;
    font-family: var(--serif) !important;
    font-size: 1.4rem !important;
    font-weight: 400 !important;
    color: var(--ink-900) !important;
    border-bottom: 1px solid var(--line-2) !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }
  /* Only the colour distinguishes the active item — no bg pill */
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .elementor-item.elementor-item-active,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .menu-item.current-menu-item > .elementor-item {
    color: var(--rose-500) !important;
    background: transparent !important;
  }
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .sub-menu {
    padding-left: 18px !important;
    border: 0 !important;
    box-shadow: none !important;
    background: transparent !important;
    margin-top: 0 !important;
  }
  /* Sub-items in drawer — same all-states reset. The dark fill came from
     .elementor-item-active on sub-items (current page hilight). */
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .sub-menu .elementor-sub-item,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .sub-menu .elementor-sub-item:hover,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .sub-menu .elementor-sub-item:focus,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .sub-menu .elementor-sub-item.highlighted,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .sub-menu .menu-item.current-menu-item > .elementor-sub-item,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .sub-menu li > a {
    font-family: var(--sans) !important;
    font-size: 0.95rem !important;
    padding: 12px 6px !important;
    color: var(--ink-700) !important;
    border-bottom: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
  }
  /* Active sub-item — only rose text, no fill */
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .sub-menu .elementor-sub-item.elementor-item-active,
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .sub-menu .menu-item.current-menu-item > .elementor-sub-item {
    color: var(--rose-500) !important;
    background: transparent !important;
  }

  /* Mobile-only "S'inscrire" CTA menu item (class .menu-cta seeded by installer). */
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .menu-item.menu-cta {
    margin-top: 40px !important;
    padding: 0 !important;
    border-bottom: 0 !important;
    list-style: none;
  }
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .menu-item.menu-cta > a.elementor-item {
    display: block !important;
    text-align: center !important;
    background: var(--rose-500) !important;
    color: var(--white) !important;
    font-family: var(--sans) !important;
    font-size: 0.95rem !important;
    font-weight: 600 !important;
    letter-spacing: 0.02em !important;
    padding: 14px 26px !important;
    border-radius: var(--r-pill) !important;
    border: 0 !important;
    border-bottom: 0 !important;
  }
  .elementor-nav-menu__container.elementor-nav-menu--dropdown .menu-item.menu-cta > a.elementor-item:hover {
    background: var(--rose-600) !important;
  }
}

/* Hide the .menu-cta item in the DESKTOP nav (only show inside the mobile drawer) */
.elementor-nav-menu--main .menu-item.menu-cta { display: none !important; }

/* ===== ACU-BLOCK:HEADER END ===== */


/* ===== ACU-BLOCK:FOOTER START ===== */
/* =====================================================================
   FOOTER — Elementor native widgets override
   Container.site-footer (dark) > Container.footer-inner (boxed 1240)
   > Container.footer-grid (4 cols) + Container.footer-bottom
   ===================================================================== */

/* Defuse the legacy `.site-footer` / `.footer-grid` rules from the original
   design CSS — they were sized for the old single-HTML-widget layout and
   now double-up on top of the native container's padding/borders. */
.elementor-element.site-footer {
  background: var(--ink-900) !important;
  color: rgba(255, 255, 255, 0.72);
  padding: 0 !important;          /* kill legacy 80/0/30 — native container handles it */
}
.elementor-element.site-footer * { color: rgba(255, 255, 255, 0.72); }
.elementor-element.footer-grid {
  border-bottom: 0 !important;     /* kill legacy separator at bottom of grid */
  padding-bottom: 0 !important;
}

/* Trim widget container default padding inside the footer */
.elementor-element.site-footer .elementor-widget-container {
  padding: 0 !important;
}
.elementor-element.site-footer .elementor-widget {
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* ---------- 4-column grid (collapses to 2 cols then 1 col) ----------
   footer-grid is a full-width container (no .e-con-inner wrapper) — we apply
   the grid directly on the container element itself. */
.elementor-element.footer-grid {
  display: grid !important;
  grid-template-columns: 1.4fr 1fr 1fr 1fr !important;
  gap: 56px !important;
  align-items: start !important;
  width: 100% !important;
}
@media (max-width: 900px) {
  .elementor-element.footer-grid {
    grid-template-columns: 1fr 1fr !important;
    gap: 40px !important;
  }
}
@media (max-width: 540px) {
  .elementor-element.footer-grid {
    grid-template-columns: 1fr !important;
    gap: 32px !important;
  }
  /* Mobile only: stack logo above the brand name+tag, all centered. */
  .elementor-element.footer-col-brand {
    align-items: center !important;
    text-align: center !important;
  }
  .elementor-element.footer-brand-row {
    flex-direction: column !important;
    align-items: center !important;
    gap: 10px !important;
    text-align: center !important;
  }
  .elementor-element.footer-brand-text {
    align-items: center !important;
    text-align: center !important;
  }
  .footer-brand-name .elementor-heading-title,
  .footer-brand-tag .elementor-heading-title {
    text-align: center !important;
  }
  /* Also centers the description + socials nicely on mobile */
  .elementor-element.footer-col-brand .footer-description {
    text-align: center !important;
  }
  .elementor-element.footer-col-brand .elementor-social-icons-wrapper {
    justify-content: center !important;
  }
}

/* Each column — flex column, fills the grid cell */
.elementor-element.footer-col,
.elementor-element.footer-col-brand {
  display: flex !important;
  flex-direction: column !important;
  width: 100% !important;
}

/* ---------- Brand block ---------- */
.elementor-element .footer-logo img {
  width: 56px !important;
  height: 56px !important;
  object-fit: contain !important;
  filter: brightness(1.1) saturate(1.1);
}
.footer-brand-name {
  font-family: var(--serif) !important;
  font-size: 1.4rem !important;
  font-weight: 500 !important;
  line-height: 1 !important;
  color: var(--sand-50) !important;
  letter-spacing: 0.02em !important;
  margin: 0 !important;
}
.footer-brand-tag {
  font-family: var(--sans) !important;
  font-size: 0.65rem !important;
  letter-spacing: 0.28em !important;
  text-transform: uppercase !important;
  color: var(--gold-500) !important;
  font-weight: 500 !important;
  line-height: 1 !important;
  margin: 4px 0 0 !important;
}
.footer-description p {
  color: rgba(255, 255, 255, 0.6) !important;
  font-family: var(--sans) !important;
  font-size: 0.9rem !important;
  line-height: 1.6;
  margin: 0 !important;
}

/* ---------- Socials (Social Icons widget, circular) ----------
   Override Elementor's default coloured social brand bgs to keep our
   minimal outlined-circle aesthetic. */
.elementor-element.footer-socials .elementor-social-icons-wrapper {
  display: flex !important;
  gap: 10px !important;
  flex-wrap: wrap;
  grid-template-columns: none !important;
  grid-column-gap: 10px !important;
  grid-row-gap: 10px !important;
}
.elementor-element.footer-socials .elementor-grid-item {
  margin: 0 !important;
  padding: 0 !important;
}
.elementor-element.footer-socials .elementor-icon.elementor-social-icon {
  width: 38px !important;
  height: 38px !important;
  border-radius: 50% !important;
  border: 1px solid rgba(255, 255, 255, 0.18) !important;
  background: transparent !important;
  color: rgba(255, 255, 255, 0.7) !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  padding: 0 !important;
  transition: all 0.2s;
  font-size: 14px !important;
}
.elementor-element.footer-socials .elementor-icon.elementor-social-icon:hover {
  background: var(--rose-500) !important;
  border-color: var(--rose-500) !important;
  color: var(--white) !important;
}
.elementor-element.footer-socials .elementor-icon.elementor-social-icon i,
.elementor-element.footer-socials .elementor-icon.elementor-social-icon svg {
  width: 14px !important;
  height: 14px !important;
  font-size: 14px !important;
  fill: currentColor !important;
  color: inherit !important;
}

/* ---------- Column titles (h4) ---------- */
.footer-col-title {
  color: var(--sand-100) !important;
  font-family: var(--serif) !important;
  font-size: 1.15rem !important;
  font-weight: 500 !important;
  margin: 0 0 18px !important;
  line-height: 1.2;
}
.footer-col-title .elementor-heading-title {
  color: var(--sand-100) !important;
  font-family: var(--serif) !important;
  font-size: 1.15rem !important;
  font-weight: 500 !important;
}

/* ---------- Link lists (Icon List without icons) ---------- */
.elementor-element .footer-links .elementor-icon-list-items {
  display: flex !important;
  flex-direction: column;
  gap: 0;
}
.elementor-element .footer-links .elementor-icon-list-item {
  margin: 0 !important;
  padding: 0 !important;
}
.elementor-element .footer-links .elementor-icon-list-item > a,
.elementor-element .footer-links .elementor-icon-list-link {
  display: block !important;
  padding: 5px 0 !important;
  font-size: 0.92rem !important;
  font-family: var(--sans) !important;
  color: rgba(255, 255, 255, 0.72) !important;
  text-decoration: none !important;
  transition: color 0.2s;
}
.elementor-element .footer-links .elementor-icon-list-item > a:hover,
.elementor-element .footer-links .elementor-icon-list-link:hover {
  color: var(--rose-300) !important;
}
/* Hide the empty icon slot when no icon is set */
.elementor-element .footer-links .elementor-icon-list-icon {
  display: none !important;
}
.elementor-element .footer-links .elementor-icon-list-text {
  margin: 0 !important;
  padding: 0 !important;
  color: inherit !important;
}

/* ---------- Contact column (Text Editor) ---------- */
.elementor-element .footer-contact p {
  margin: 0 0 5px !important;
  padding: 5px 0;
  font-size: 0.92rem !important;
  color: rgba(255, 255, 255, 0.72) !important;
  font-family: var(--sans) !important;
}
.elementor-element .footer-contact a {
  color: rgba(255, 255, 255, 0.72) !important;
  text-decoration: none !important;
  transition: color 0.2s;
}
.elementor-element .footer-contact a:hover {
  color: var(--rose-300) !important;
}

/* ---------- Footer-bottom (legal row) — full-width container so we style it directly ---------- */
.elementor-element.footer-bottom {
  border-top: 1px solid rgba(255, 255, 255, 0.1);
  margin-top: 56px !important;
  display: flex !important;
  flex-direction: row !important;
  justify-content: space-between !important;
  flex-wrap: wrap !important;
  gap: 16px !important;
  padding-top: 28px !important;
  padding-bottom: 0 !important;
  width: 100% !important;
}
.elementor-element .footer-copyright p,
.elementor-element .footer-legal p {
  margin: 0 !important;
  font-size: 0.82rem !important;
  color: rgba(255, 255, 255, 0.5) !important;
  font-family: var(--sans) !important;
}
.elementor-element .footer-legal a {
  color: rgba(255, 255, 255, 0.5) !important;
  text-decoration: none !important;
  transition: color 0.2s;
}
.elementor-element .footer-legal a:hover {
  color: var(--rose-300) !important;
}
@media (max-width: 720px) {
  .elementor-element.footer-bottom {
    flex-direction: column !important;
    align-items: flex-start !important;
  }
}

/* ===== ACU-BLOCK:FOOTER END ===== */


/* ===== ACU-BLOCK:PHOTOS START ===== */
/* =====================================================================
   PHOTOS — img overlay helper inside placeholder boxes
   ===================================================================== */

.acupoint-theme .ph,
.acupoint-theme .approach-photo,
.acupoint-theme .vs-photo,
.acupoint-theme .photo,
.acupoint-theme .kim-intro-photo,
.acupoint-theme .voyage-photo,
.acupoint-theme .galerie-item-photo,
.elementor-element .ph,
.elementor-element .approach-photo,
.elementor-element .vs-photo,
.elementor-element .photo,
.elementor-element .kim-intro-photo,
.elementor-element .voyage-photo,
.elementor-element .galerie-item-photo {
  position: relative;
  overflow: hidden;
}

/* The <img class="acu-img"> covers the entire wrapper at any aspect-ratio,
   inheriting the wrapper's border-radius. */
img.acu-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: inherit;
  display: block;
  z-index: 1;
}

/* When an acu-img is present inside .ph, hide the placeholder text/decoration. */
.ph:has(img.acu-img),
.approach-photo:has(img.acu-img),
.vs-photo:has(img.acu-img) {
  color: transparent;
}

/* Keep the decorative dashed border on top of the photo for a stylized look,
   but make it subtle. */
.approach-photo:has(img.acu-img)::before,
.vs-photo:has(img.acu-img)::before {
  z-index: 2;
  opacity: 0.5;
}

/* ---- Hero accueil : branche cerisier (img sur fond transparent) ---- */
.elementor-element.hero-image-wrap .photo.hero-cherry {
  background: transparent !important;
  border-radius: 0 !important;
  overflow: visible !important;
}
.elementor-element.hero-image-wrap .photo.hero-cherry img.acu-img {
  object-fit: contain;
  border-radius: 0;
}

/* ---- Section Kim : photo ronde sur fond rose (img déjà ronde) ---- */
.kim-photo-wrap .photo.kim-photo-rose {
  background: transparent !important;
  border-radius: 50% !important;
  aspect-ratio: 1 / 1 !important;
  max-width: 460px;
}
.kim-photo-wrap .photo.kim-photo-rose img.acu-img {
  object-fit: cover;
  border-radius: 50%;
}

/* ===== ACU-BLOCK:PHOTOS END ===== */


/* ===== ACU-BLOCK:ACCUEIL START ===== */
/* =====================================================================
   ACCUEIL — sections styling for the home page (Elementor native)
   ===================================================================== */

/* Acupoint button system applied via _css_classes */
.elementor-element .elementor-button.acu-btn,
.elementor-element .acu-btn .elementor-button,
.elementor-element a.acu-btn,
.acu-btn .elementor-button {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 10px !important;
  padding: 14px 26px !important;
  font-family: var(--sans) !important;
  font-size: 0.92rem !important;
  font-weight: 600 !important;
  letter-spacing: 0.02em !important;
  border-radius: var(--r-pill) !important;
  border: 1.5px solid transparent !important;
  transition: all 0.25s !important;
  text-decoration: none !important;
}
.acu-btn-primary .elementor-button,
.elementor-element .acu-btn-primary .elementor-button {
  background: var(--rose-500) !important;
  color: var(--white) !important;
}
.acu-btn-primary .elementor-button:hover {
  background: var(--rose-600) !important;
  transform: translateY(-1px);
  box-shadow: var(--shadow-md);
}
.acu-btn-ghost .elementor-button,
.elementor-element .acu-btn-ghost .elementor-button {
  background: transparent !important;
  border-color: var(--rose-500) !important;
  color: var(--rose-600) !important;
}
.acu-btn-ghost .elementor-button:hover {
  background: var(--rose-500) !important;
  color: var(--white) !important;
}
.acu-btn-ink .elementor-button,
.elementor-element .acu-btn-ink .elementor-button {
  background: var(--ink-900) !important;
  color: var(--sand-50) !important;
}
.acu-btn-ink .elementor-button:hover {
  background: var(--ink-700) !important;
}
.acu-btn-ghost-dark .elementor-button {
  background: rgba(255,255,255,0.08) !important;
  color: var(--white) !important;
  border: 1px solid rgba(255,255,255,0.2) !important;
}

/* ---------- Global: kill the Elementor Kit's rose-primary heading override ----------
   Site-wide, all headings should default to ink-900 (dark text). The rose
   `.script` (italic) and `.accent` (block italic) modifiers explicitly opt-in to rose. */
.acupoint-theme .elementor-widget-heading .elementor-heading-title {
  color: var(--ink-900);
}
.acupoint-theme .elementor-widget-heading .elementor-heading-title .script,
.acupoint-theme .elementor-widget-heading .elementor-heading-title .accent {
  color: var(--rose-500) !important;
  font-family: var(--serif);
  font-style: italic;
  font-weight: 400;
}
/* H2 .accent variant on hero — display as block (new line, smaller weight) */
.acupoint-theme .hero-title .accent {
  display: block !important;
  font-weight: 300 !important;
}

/* Kill the doubled e-con-inner padding for our accueil sections (boxed
   containers add their padding to BOTH .e-con-boxed and .e-con-inner). */
.elementor-element.hero > .e-con-inner,
.elementor-element.featured-formations > .e-con-inner,
.elementor-element.pourquoi-section > .e-con-inner,
.elementor-element.yoga-section > .e-con-inner,
.elementor-element.about-kim > .e-con-inner,
.elementor-element.next-dates > .e-con-inner,
.elementor-element.voyage-section > .e-con-inner,
.elementor-element.testimonials > .e-con-inner,
.elementor-element.partners > .e-con-inner,
.elementor-element.cta-band-wrap > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* ---------- HERO ---------- */
.elementor-element.hero {
  background:
    radial-gradient(ellipse 800px 600px at 100% 0%, var(--rose-100) 0%, transparent 60%),
    radial-gradient(ellipse 700px 500px at 0% 100%, var(--sand-200) 0%, transparent 55%),
    var(--sand-50);
  overflow: hidden;
  position: relative;
}
/* Hero has its own padding via container — cap the e-con-inner extra padding. */
.elementor-element.hero > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
/* Mobile: give the hero comfortable left/right margins so content doesn't
   touch the screen edges. */
@media (max-width: 767px) {
  .elementor-element.hero {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
  .elementor-element.hero > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}
/* Hero layout — 2-col classique : texte à gauche, photo à droite arrondie */
.elementor-element.hero-inner > .e-con-inner,
.elementor-element.hero-inner {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  align-items: center;
}
@media (max-width: 960px) {
  .elementor-element.hero-inner > .e-con-inner,
  .elementor-element.hero-inner {
    grid-template-columns: 1fr !important;
    gap: 48px !important;
  }
}
.elementor-widget-heading.hero-title .elementor-heading-title {
  font-family: var(--serif) !important;
  font-size: clamp(2.6rem, 5.2vw, 4.8rem) !important;
  font-weight: 400 !important;
  letter-spacing: -0.02em;
  line-height: 1.12;
  margin: 0 0 24px !important;
}
.hero-title .elementor-heading-title .accent {
  display: block;
  font-style: italic;
  color: var(--rose-500);
  font-weight: 300;
}
.hero-lead p {
  font-size: clamp(1.05rem, 1.3vw, 1.18rem) !important;
  color: var(--ink-700) !important;
  line-height: 1.65 !important;
  max-width: 62ch;
  margin: 0;
}
.hero-buttons { margin-top: 12px; }

/* Stats inline strip */
.elementor-element.hero-stats {
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  padding-block: 32px !important;
  margin-top: 60px;
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
}
@media (max-width: 720px) {
  .elementor-element.hero-stats { grid-template-columns: repeat(2, 1fr) !important; gap: 24px !important; }
}
.elementor-element.stat {
  align-items: flex-start !important;
}
.elementor-element.stat .stat-num .elementor-heading-title,
.stat-num .elementor-heading-title {
  font-family: var(--serif) !important;
  font-size: clamp(2rem, 3.5vw, 2.8rem) !important;
  color: var(--rose-500) !important;
  line-height: 1 !important;
  font-weight: 400 !important;
  margin: 0 !important;
}
.stat-label p { font-size: 0.84rem !important; color: var(--ink-500) !important; margin: 0 !important; }

/* Hero image — 2-col classique, photo arrondie modérée (24px uniforme) */
.elementor-element.hero-image-wrap .hero-image-inner {
  position: relative;
  aspect-ratio: 4/5;
  max-width: 460px;       /* légèrement réduit (était 520) */
  margin-left: auto;
  margin-right: 24px;     /* léger air à droite pour badge-2 visible */
  overflow: visible;
}
.elementor-element.hero-image-wrap .photo {
  width: 100%;
  height: 100%;
  border-radius: var(--r-lg, 24px); /* rounded modéré uniforme (au lieu de l'arche 280px) */
  background: linear-gradient(160deg, var(--rose-200), var(--sand-200));
  position: relative;
  overflow: hidden;
}
.elementor-element.hero-image-wrap .acu-img {
  object-fit: cover;
  object-position: center;
  border-radius: inherit;
}
/* Text overlay — semi-transparent backdrop card on the left side */
/* hero-left : reset, layout grid prend en charge le positionnement */

/* Mobile: photo stays as backdrop but text gets a solid card */
@media (max-width: 768px) {
  .elementor-element.hero-image-wrap .photo::after {
    background: linear-gradient(
      180deg,
      rgba(253, 250, 246, 0.92) 0%,
      rgba(253, 250, 246, 0.75) 45%,
      rgba(253, 250, 246, 0.55) 75%,
      rgba(253, 250, 246, 0.85) 100%
    );
  }
  .elementor-element.hero-left {
    padding: 36px 24px;
    max-width: 100%;
  }
}
.elementor-element.hero-image-wrap .badge {
  position: absolute;
  background: var(--white);
  border-radius: var(--r-md);
  padding: 18px 22px;
  box-shadow: var(--shadow-lg);
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 0.88rem;
}
/* Badges flottent autour de la photo sans la cacher — légèrement débordants pour effet card */
.elementor-element.hero-image-wrap .badge-1 { bottom: 32px; left: -32px; z-index: 3; }
.elementor-element.hero-image-wrap .badge-2 { top: 32px; right: -60px; z-index: 3; }

/* Mobile : remonter le badge 5★ au-dessus de la photo pour ne pas chevaucher le visage */
@media (max-width: 768px) {
  .elementor-element.hero-image-wrap .hero-image-inner {
    margin-top: 50px; /* fait de la place au badge qui dépasse vers le haut */
  }
  .elementor-element.hero-image-wrap .badge-2 {
    top: -40px !important;
    right: 12px !important;
    padding: 12px 16px !important;
    font-size: 0.82rem !important;
  }
  .elementor-element.hero-image-wrap .badge-1 {
    bottom: 12px !important;
    left: 12px !important;
    padding: 12px 16px !important;
    font-size: 0.82rem !important;
  }
}
.elementor-element.hero-image-wrap .badge-num {
  font-family: var(--serif);
  font-size: 1.8rem;
  color: var(--rose-500);
  line-height: 1;
}

/* ---------- AUDIO BAND ---------- */
.elementor-element.audio-band {
  background: var(--gold-500) !important;
  color: white;
}
.elementor-element.audio-band .audio-text,
.elementor-element.audio-band .audio-text p,
.elementor-element.audio-band .audio-text strong {
  color: white !important;
}
.elementor-element.audio-band .audio-text p {
  margin: 0 !important;
  font-size: 0.96rem !important;
  display: inline-flex;
  align-items: center;
}
/* Button bg white, text gold — NOT inherited from the wildcard */
.elementor-element.audio-band .audio-btn .elementor-button,
.elementor-element.audio-band .audio-btn .elementor-button-text,
.audio-btn .elementor-button {
  background: white !important;
  color: var(--gold-600) !important;
  padding: 10px 22px !important;
  border-radius: var(--r-pill) !important;
  font-weight: 600 !important;
  font-family: var(--sans) !important;
  border: 0 !important;
}
.elementor-element.audio-band .audio-btn .elementor-button:hover {
  background: var(--gold-600) !important;
  color: white !important;
}

/* ---------- Generic section headers (eyebrow + h2 + divider + lead) ---------- */
.elementor-element .section-header-stack {
  text-align: center;
}
.elementor-element .section-header-stack .eyebrow {
  justify-content: center;
}

/* ---------- FEATURED FORMATIONS (custom widget styles in widget itself) ---------- */
.elementor-element.featured-formations {
  background: var(--sand-50);
}
.acu-formations-grid { width: 100%; }
.acu-formations-grid .card-formation {
  display: flex;
  flex-direction: column;
  background: var(--white);
  border-radius: var(--r-md);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: transform 0.3s, box-shadow 0.3s;
  border: 1px solid var(--line-2);
}
.acu-formations-grid .card-formation:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}
.acu-formations-grid .card-img {
  position: relative;
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: var(--sand-200);
}
.acu-formations-grid .card-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.6s;
}
.acu-formations-grid .card-formation:hover .card-img img { transform: scale(1.05); }
.acu-formations-grid .tag {
  position: absolute;
  top: 14px; left: 14px;
  background: rgba(253, 250, 246, 0.94);
  backdrop-filter: blur(8px);
  padding: 6px 12px;
  border-radius: var(--r-pill);
  font-size: 0.72rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--rose-500);
}
.acu-formations-grid .card-body {
  padding: 24px 24px 26px;
  display: flex; flex-direction: column;
  flex: 1;
}
.acu-formations-grid .card-body h3 {
  font-size: 1.4rem;
  margin: 0 0 8px;
  font-family: var(--serif);
  font-weight: 500;
}
.acu-formations-grid .meta {
  display: flex; align-items: center;
  gap: 14px;
  font-family: var(--sans);
  font-size: 0.82rem;
  color: var(--ink-500);
  margin-bottom: 14px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line-2);
}
.acu-formations-grid .meta .dot {
  width: 3px; height: 3px;
  background: var(--ink-300); border-radius: 50%;
}
.acu-formations-grid .price {
  font-family: var(--serif);
  font-size: 1.6rem;
  color: var(--rose-500);
  font-weight: 500;
}
.acu-formations-grid .card-body p {
  font-size: 0.94rem;
  margin-bottom: 18px;
  flex: 1;
  color: var(--ink-700);
}
.acu-formations-grid .card-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
}
.acu-formations-grid .btn--link {
  background: none;
  padding: 4px 0;
  color: var(--rose-500) !important;
  border-radius: 0;
  border-bottom: 1px solid var(--rose-300);
  font-family: var(--sans);
  font-weight: 600;
  font-size: 0.92rem;
}
.acu-formations-grid .btn--link:hover { color: var(--rose-600) !important; border-bottom-color: var(--rose-500); }

@media (max-width: 980px) { .acu-formations-grid { grid-template-columns: repeat(2, 1fr) !important; } }
@media (max-width: 620px) { .acu-formations-grid { grid-template-columns: 1fr !important; } }

/* ---------- YOGA & SONS (2 big cards via HTML widget) ---------- */
.elementor-element.yoga-section { background: var(--sand-100); }
.elementor-element.yoga-grid {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 32px !important;
}
.yoga-grid .big-card-wrap { display: contents; }
/* Big-card image: 1:1 square (matches the 300×300 source images) */
.yoga-grid .card-formation .card-img,
.big-card-wrap .card-formation .card-img {
  aspect-ratio: 1 / 1 !important;
}
@media (max-width: 900px) {
  .elementor-element.yoga-grid { grid-template-columns: 1fr !important; }
}

/* ---------- ABOUT KIM ---------- */
.elementor-element.about-kim {
  background: var(--rose-50);
}
.elementor-element.kim-grid {
  display: grid !important;
  grid-template-columns: 0.9fr 1.1fr;
  gap: 70px !important;
  align-items: center !important;
}
@media (max-width: 900px) {
  .elementor-element.kim-grid { grid-template-columns: 1fr !important; }
}
.kim-photo-wrap .photo {
  aspect-ratio: 4/5;
  border-radius: 240px 240px 24px 24px;
  background: linear-gradient(160deg, var(--rose-200), var(--sand-300));
  overflow: hidden;
  max-width: 460px;
  position: relative;
  display: flex; align-items: center; justify-content: center;
  color: var(--rose-500); font-family: var(--serif); font-style: italic;
}

/* ---------- AGENDA (dark) ---------- */
.elementor-element.next-dates {
  background: var(--ink-900);
  color: var(--sand-50);
}
.elementor-element.next-dates * { color: var(--sand-50); }
.elementor-element.next-dates .lead { color: rgba(255,255,255,0.75) !important; }
.elementor-element.next-dates .agenda-title .elementor-heading-title {
  color: var(--sand-50) !important;
}
.elementor-element.next-dates .eyebrow {
  color: var(--rose-300) !important;
}
.elementor-element.next-dates .eyebrow::before { background: var(--rose-300); }
.elementor-element.next-dates .agenda-cta .elementor-button {
  background: var(--rose-500) !important;
  color: white !important;
}
.elementor-element.next-dates .agenda {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px !important;
  margin-top: 50px !important;
}
@media (max-width: 980px) {
  .elementor-element.next-dates .agenda { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (max-width: 620px) {
  .elementor-element.next-dates .agenda { grid-template-columns: 1fr !important; }
}
.elementor-element.next-dates .agenda-item {
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: var(--r-md);
  padding: 24px 26px;
  transition: background 0.25s, border-color 0.25s;
}
.elementor-element.next-dates .agenda-item:hover {
  background: rgba(255,255,255,0.04);
  border-color: var(--rose-400);
}
.elementor-element.next-dates .agenda-item .date {
  display: flex; align-items: baseline; gap: 8px;
  color: var(--rose-300) !important;
  font-family: var(--serif);
  font-style: italic;
  margin-bottom: 10px;
  font-size: 0.95rem;
}
.elementor-element.next-dates .agenda-item h4 {
  color: var(--sand-50) !important;
  font-size: 1.25rem;
  font-family: var(--serif);
  font-weight: 500;
  margin-bottom: 8px;
}
.elementor-element.next-dates .agenda-item .info {
  display: flex; gap: 14px;
  font-size: 0.84rem;
  color: rgba(255,255,255,0.6) !important;
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid rgba(255,255,255,0.08);
}

/* ---------- VOYAGE SONORE ---------- */
.elementor-element.voyage-feature {
  display: grid !important;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 60px !important;
  align-items: center !important;
}
@media (max-width: 900px) {
  .elementor-element.voyage-feature { grid-template-columns: 1fr !important; }
}
.voyage-photo-wrap .voyage-photo {
  aspect-ratio: 1;
  border-radius: 50%;
  max-width: 480px;
  background: linear-gradient(135deg, var(--rose-100), var(--sand-200));
  display: flex; align-items: center; justify-content: center;
  color: var(--rose-500); font-family: var(--serif); font-style: italic;
  position: relative;
  padding: 20px;
}
.voyage-photo-wrap .voyage-photo::before {
  content: "";
  position: absolute;
  inset: 12px;
  border: 1px dashed var(--rose-300);
  border-radius: inherit;
  pointer-events: none;
}
.voyage-list { padding: 0; margin: 0; list-style: none; display: grid; gap: 8px; }
.voyage-list li { display: flex; gap: 12px; font-size: 0.96rem; color: var(--ink-700); }
.voyage-list li::before {
  content: "";
  flex-shrink: 0;
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--rose-500);
  margin-top: 10px;
}

/* ---------- TESTIMONIALS ---------- */
.elementor-element.testimonials { background: var(--rose-50); }
.elementor-element.testimonials-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px !important;
}
@media (max-width: 980px) { .elementor-element.testimonials-grid { grid-template-columns: 1fr 1fr !important; } }
@media (max-width: 620px) { .elementor-element.testimonials-grid { grid-template-columns: 1fr !important; } }
.testimonial-wrap .testimonial {
  background: var(--white);
  padding: 36px;
  border-radius: var(--r-md);
  border: 1px solid var(--line-2);
  position: relative;
}
.testimonial-wrap .testimonial::before {
  content: "“";
  position: absolute;
  top: 10px; left: 22px;
  font-family: var(--serif);
  font-size: 5rem;
  color: var(--rose-200);
  line-height: 1;
}
.testimonial-wrap .testimonial p {
  font-family: var(--serif);
  font-size: 1.15rem;
  line-height: 1.55;
  color: var(--ink-700);
  font-style: italic;
  margin: 0 0 24px;
  padding-top: 16px;
}
.testimonial-wrap .author { display: flex; align-items: center; gap: 12px; }
.testimonial-wrap .av {
  width: 44px; height: 44px;
  border-radius: 50%;
  background: var(--rose-200);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--serif);
  color: var(--rose-600);
  font-size: 1.1rem;
}
.testimonial-wrap .author strong { font-family: var(--sans); font-weight: 600; font-size: 0.92rem; color: var(--ink-900); }
.testimonial-wrap .author span { font-size: 0.8rem; color: var(--ink-500); display: block; }
.testimonial-wrap .stars { color: var(--gold-500); margin-bottom: 6px; font-size: 0.92rem; letter-spacing: 0.15em; }

/* ---------- HOME VIDEO ---------- */
.elementor-element.video-section > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}
.home-video-wrap .home-video {
  position: relative;
  aspect-ratio: 16 / 9;
  background: #000;
  border-radius: var(--r-lg);
  overflow: hidden;
  box-shadow: var(--shadow-md);
}
.home-video-wrap .home-video iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* ---------- PARTNERS ---------- */
.elementor-element.partners-grid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: 32px !important;
  align-items: center !important;
}
@media (max-width: 720px) { .elementor-element.partners-grid { grid-template-columns: repeat(2, 1fr) !important; } }
.partner-card-wrap .partner-card {
  text-align: center;
  padding: 24px;
  border-radius: var(--r-md);
  transition: background 0.3s;
}
.partner-card-wrap .partner-card:hover { background: var(--white); }
.partner-card-wrap .partner-card .ph {
  width: 100px; height: 100px;
  border-radius: 50%;
  margin: 0 auto 14px;
  background: linear-gradient(135deg, var(--rose-100), var(--sand-200));
  display: flex; align-items: center; justify-content: center;
  color: var(--rose-500); font-family: var(--serif); font-style: italic;
  position: relative;
  overflow: hidden;
}
.partner-card-wrap .partner-card .ph::before {
  content: "";
  position: absolute; inset: 8px;
  border: 1px dashed var(--rose-300);
  border-radius: inherit;
}
/* When a real logo image is present, drop the gradient + dashed border */
.partner-card-wrap .partner-card .ph.partner-logo {
  background: var(--white);
  border: 1px solid var(--line-2);
}
.partner-card-wrap .partner-card .ph.partner-logo::before { display: none; }
.partner-card-wrap .partner-card .ph.partner-logo img.acu-img {
  object-fit: contain;
  padding: 12px;
  border-radius: inherit;
}
.partner-card-wrap .partner-card strong {
  font-family: var(--serif); display: block;
  font-size: 1.05rem; color: var(--ink-900);
}
.partner-card-wrap .partner-card span { font-size: 0.82rem; color: var(--ink-500); }

/* ---------- CTA BAND (dark inscription invitation) ---------- */
.elementor-element.cta-band {
  background:
    radial-gradient(ellipse 600px 400px at 0% 50%, rgba(201, 134, 120, 0.4) 0%, transparent 60%),
    var(--ink-900);
  color: var(--sand-50);
  border-radius: var(--r-lg);
  position: relative;
  overflow: hidden;
}
.elementor-element.cta-band * { color: var(--sand-50); }
.elementor-element.cta-band .eyebrow { color: var(--rose-300) !important; }
.elementor-element.cta-band .eyebrow::before { background: var(--rose-300); }
.cta-band-heading .elementor-heading-title {
  color: var(--sand-50) !important;
  font-family: var(--serif) !important;
  font-size: clamp(1.6rem, 2.6vw, 2.2rem) !important;
  margin: 0 0 16px !important;
  font-weight: 400 !important;
}
.elementor-element.cta-band p { color: rgba(255,255,255,0.78) !important; }
/* CTA Band inner — design uses a 1.5fr / auto grid so text+buttons sit side-by-side */
.elementor-element.cta-band-inner {
  display: grid !important;
  grid-template-columns: 1.5fr auto !important;
  gap: 32px !important;
  align-items: center !important;
}
@media (max-width: 720px) {
  .elementor-element.cta-band-inner {
    grid-template-columns: 1fr !important;
  }
}

/* Agenda header — same fix : grid with left text / right CTA button */
.elementor-element.agenda-header {
  display: grid !important;
  grid-template-columns: 1fr auto !important;
  gap: 24px !important;
  align-items: end !important;
}
@media (max-width: 720px) {
  .elementor-element.agenda-header {
    grid-template-columns: 1fr !important;
  }
}

/* ---------- Hero — decorative floating petals (FULL hero width) ---------- */
/* The petals widget is a direct child of .hero; position absolutely relative
   to the hero section, not the image column. */
.elementor-element.hero {
  position: relative;
}
.elementor-element.hero .hero-petals {
  position: absolute !important;
  inset: 0 !important;
  pointer-events: none;
  z-index: 0;
}
.elementor-element.hero .hero-petals,
.elementor-element.hero .hero-petals .elementor-widget-container {
  width: 100% !important;
  height: 100% !important;
}
.elementor-element.hero .petal {
  position: absolute;
  opacity: 0.5;
  pointer-events: none;
  z-index: 0;
}
.elementor-element.hero .petal-1 {
  width: 280px;
  top: 6%;
  right: -60px;
  transform: rotate(20deg);
}
.elementor-element.hero .petal-2 {
  width: 200px;
  bottom: 8%;
  left: -40px;
  transform: rotate(200deg);
}
/* Make sure the hero content stays ABOVE the petals */
.elementor-element.hero .hero-inner {
  position: relative;
  z-index: 1;
}
@keyframes acu-float {
  0%, 100% { transform: translateY(0) rotate(20deg); }
  50%      { transform: translateY(-12px) rotate(20deg); }
}
@keyframes acu-float-2 {
  0%, 100% { transform: translateY(0) rotate(200deg); }
  50%      { transform: translateY(-12px) rotate(200deg); }
}
.elementor-element.hero .float-1 { animation: acu-float 7s ease-in-out infinite; }
.elementor-element.hero .float-2 { animation: acu-float-2 9s ease-in-out infinite; }

/* Audio band — boxed via wrapper container */
.elementor-element.audio-band-wrap {
  background: var(--sand-50);
}
.elementor-element.audio-band-wrap > .e-con-inner > .audio-band {
  border-radius: var(--r-md);
}

/* Google reviews badge — positioned top-right (overrode by main badge-2 rule above) */

/* ---------- POURQUOI SE FORMER AVEC KIM (3-col checklist cards) ---------- */
.elementor-element.pourquoi-section { background: var(--rose-50); }
.elementor-element.pourquoi-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: 22px !important;
}
@media (max-width: 980px) {
  .elementor-element.pourquoi-grid { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 620px) {
  .elementor-element.pourquoi-grid { grid-template-columns: 1fr !important; }
}
.pourquoi-card-wrap .pourquoi-card {
  background: var(--sand-50);
  padding: 26px 24px;
  border-radius: var(--r-md);
  border: 1px solid var(--line-2);
  display: flex;
  gap: 16px;
  align-items: flex-start;
  height: 100%;
  transition: transform 0.25s, box-shadow 0.25s, border-color 0.25s, background 0.25s;
}
.pourquoi-card-wrap .pourquoi-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-sm);
  border-color: var(--rose-300);
  background: var(--white);
}
.pourquoi-card-wrap .check {
  width: 34px; height: 34px;
  border-radius: 50%;
  background: var(--rose-100);
  color: var(--rose-600);
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--serif);
  font-size: 1.05rem;
  font-weight: 500;
  line-height: 1;
}
.pourquoi-card-wrap .pourquoi-card h4 {
  margin: 4px 0 6px;
  font-family: var(--serif);
  font-size: 1.08rem;
  font-weight: 500;
  color: var(--ink-900);
  line-height: 1.25;
}
.pourquoi-card-wrap .pourquoi-card p {
  margin: 0;
  font-size: 0.92rem;
  color: var(--ink-700);
  line-height: 1.55;
}
.pourquoi-footnote-wrap .pourquoi-footnote,
.elementor-element .pourquoi-footnote {
  text-align: center;
  margin: 36px auto 0;
  max-width: 70ch;
  font-family: var(--serif);
  font-style: italic;
  font-size: 1.08rem;
  color: var(--ink-700);
}

/* ---------- Common: dividers, eyebrows visible in all sections ---------- */
.elementor-element .eyebrow {
  font-family: var(--sans);
  text-transform: uppercase;
  letter-spacing: 0.22em;
  font-size: 0.72rem;
  font-weight: 600;
  color: var(--gold-600);
  margin: 0 0 1.25rem;
  display: inline-flex;
  align-items: center;
  gap: 12px;
}
.elementor-element .eyebrow::before {
  content: "";
  width: 28px; height: 1px;
  background: var(--gold-500);
}
.elementor-element .divider {
  width: 56px; height: 1px;
  background: var(--gold-500);
  margin: 1rem auto;
}
.elementor-element .script {
  font-family: var(--serif);
  font-style: italic;
  font-weight: 400;
  color: var(--rose-500);
}

/* ===== ACU-BLOCK:ACCUEIL END ===== */


/* ===== ACU-BLOCK:CENTRE-SUWEN START ===== */
/* =====================================================================
   PAGE — LE CENTRE SUWEN
   ===================================================================== */

/* Strip the doubled e-con-inner padding on all sections of this page */
.elementor-element.page-hero > .e-con-inner,
.elementor-element.approach-section > .e-con-inner,
.elementor-element.pillars-section > .e-con-inner,
.elementor-element.features-section > .e-con-inner,
.elementor-element.agrement-section > .e-con-inner,
.elementor-element.visit-section > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* ---------- Page hero (interior) ---------- */
.elementor-element.page-hero {
  background:
    radial-gradient(ellipse 700px 400px at 80% 0%, var(--rose-100) 0%, transparent 60%),
    var(--sand-50);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.elementor-element.page-hero .breadcrumb {
  font-size: 0.82rem;
  color: var(--ink-500);
  letter-spacing: 0.08em;
  margin-bottom: 18px;
  text-align: center;
}
.elementor-element.page-hero .breadcrumb a { color: var(--ink-500); }
.elementor-element.page-hero .breadcrumb a:hover { color: var(--rose-500); }
.elementor-widget-heading.page-hero-title .elementor-heading-title {
  font-family: var(--serif) !important;
  font-size: clamp(2.6rem, 5.2vw, 4.4rem) !important;
  font-weight: 400 !important;
  letter-spacing: -0.01em;
  line-height: 1.12;
  margin: 8px auto 22px !important;
  max-width: 18ch;
}
.elementor-element.page-hero-lead .elementor-text-editor p {
  font-size: clamp(1.05rem, 1.3vw, 1.18rem);
  color: var(--ink-700);
  line-height: 1.65;
  max-width: 62ch;
  margin: 0 auto;
}
.elementor-element .page-hero-stack {
  width: 100%;
  align-items: center;
}

/* ---------- APPROACH ---------- */
.elementor-element.approach-grid {
  display: grid !important;
  grid-template-columns: 1.05fr 0.95fr;
  gap: 60px !important;
  align-items: center !important;
}
@media (max-width: 900px) {
  .elementor-element.approach-grid { grid-template-columns: 1fr !important; }
}
.approach-photo-wrap .approach-photo,
.elementor-element .approach-photo {
  aspect-ratio: 4/5;
  border-radius: 220px 220px 24px 24px;
  max-width: 460px;
  background: linear-gradient(135deg, var(--rose-100), var(--sand-200));
  position: relative;
  display: flex; align-items: center; justify-content: center;
  color: var(--rose-500); font-family: var(--serif); font-style: italic;
  padding: 20px;
  overflow: hidden;
}
.approach-photo-wrap .approach-photo::before,
.elementor-element .approach-photo::before {
  content: "";
  position: absolute;
  inset: 12px;
  border: 1px dashed var(--rose-300);
  border-radius: inherit;
  pointer-events: none;
}

/* ---------- PILLARS (4 numbered columns) ---------- */
.elementor-element.pillars-section {
  background: var(--rose-50);
}
.elementor-element.pillars-grid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
@media (max-width: 900px) {
  .elementor-element.pillars-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 540px) {
  .elementor-element.pillars-grid { grid-template-columns: 1fr; }
}
.pillar-wrap .pillar {
  padding: 36px 28px;
  border-right: 1px solid var(--line);
  height: 100%;
}
.pillar-wrap:last-child .pillar { border-right: 0; }
@media (max-width: 900px) {
  .pillar-wrap .pillar { border-right: 0; border-bottom: 1px solid var(--line); }
  .pillar-wrap:nth-last-child(-n+2) .pillar { border-bottom: 0; }
}
.pillar-wrap .pillar .n {
  font-family: var(--serif);
  color: var(--rose-300);
  font-size: 2.4rem;
  font-style: italic;
  line-height: 1;
}
.pillar-wrap .pillar h4 {
  margin-top: 10px;
  font-size: 1.15rem;
  font-family: var(--serif);
  font-weight: 500;
  color: var(--ink-900);
}
.pillar-wrap .pillar p {
  font-size: 0.9rem;
  color: var(--ink-500);
  margin: 0;
}

/* ---------- FEATURES (3 cards with icon + h3 + p + link) ---------- */
.elementor-element.feature-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px !important;
}
@media (max-width: 900px) {
  .elementor-element.feature-grid { grid-template-columns: 1fr; }
}
.feature-wrap .feature {
  background: var(--white);
  border: 1px solid var(--line-2);
  padding: 32px 28px;
  border-radius: var(--r-md);
  transition: transform .3s, box-shadow .3s;
  height: 100%;
}
.feature-wrap .feature:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}
.feature-wrap .ico {
  width: 56px; height: 56px;
  border-radius: 50%;
  background: var(--rose-100);
  color: var(--rose-500);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--serif);
  font-size: 1.6rem;
  margin-bottom: 18px;
}
.feature-wrap .feature h3 {
  font-size: 1.3rem;
  font-family: var(--serif);
  font-weight: 500;
  margin: 0 0 12px;
  color: var(--ink-900);
}
.feature-wrap .feature p {
  font-size: 0.94rem;
  margin: 0;
  color: var(--ink-700);
}
.feature-wrap .feature-link {
  display: inline-block;
  margin-top: 18px;
  background: none;
  padding: 4px 0;
  color: var(--rose-500) !important;
  border-bottom: 1px solid var(--rose-300);
  font-family: var(--sans);
  font-weight: 600;
  font-size: 0.92rem;
  text-decoration: none;
}
.feature-wrap .feature-link:hover {
  color: var(--rose-600) !important;
  border-bottom-color: var(--rose-500);
}

/* ---------- AGRÉMENT ---------- */
.elementor-element.agrement-section { background: var(--sand-100); }
.elementor-element.agrement-grid {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 60px !important;
  align-items: center !important;
}
@media (max-width: 900px) {
  .elementor-element.agrement-grid { grid-template-columns: 1fr !important; }
}
.agrement-badges-wrap .agrement-badges {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.agrement-badges-wrap .agrement-card {
  background: white;
  padding: 28px;
  border-radius: var(--r-md);
  border: 1px solid var(--line-2);
}
.agrement-badges-wrap .agrement-card.wide { grid-column: 1 / -1; }
.agrement-badges-wrap .agrement-title {
  font-family: var(--serif);
  color: var(--rose-500);
  font-size: 1.6rem;
  font-weight: 500;
}
.agrement-badges-wrap .agrement-sub {
  font-size: 0.84rem;
  color: var(--ink-500);
  margin-top: 4px;
}
.agrement-badges-wrap .agrement-meta {
  font-size: 0.78rem;
  color: var(--ink-400);
  margin-top: 12px;
}

/* ---------- VISIT / MAP ---------- */
.elementor-element.map-grid {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 40px !important;
  align-items: stretch !important;
}
@media (max-width: 900px) {
  .elementor-element.map-grid { grid-template-columns: 1fr !important; }
}
.map-block-wrap .map-placeholder,
.elementor-element .map-placeholder {
  aspect-ratio: 4/3;
  border-radius: var(--r-md);
  overflow: hidden;
  position: relative;
  background: var(--sand-100);
}
.map-block-wrap .map-placeholder iframe,
.elementor-element .map-placeholder iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
.map-block-wrap .map-link,
.elementor-element .map-placeholder .map-link {
  position: absolute;
  bottom: 12px;
  right: 12px;
  background: rgba(253, 250, 246, 0.94);
  color: var(--rose-600);
  padding: 6px 14px;
  border-radius: var(--r-pill);
  font-family: var(--sans);
  font-weight: 600;
  font-size: 0.82rem;
  text-decoration: none;
  box-shadow: 0 2px 8px rgba(0,0,0,.08);
  transition: background 0.2s, color 0.2s;
}
.map-block-wrap .map-link:hover,
.elementor-element .map-placeholder .map-link:hover {
  background: var(--rose-500);
  color: white;
}
.map-text .map-info-list,
.elementor-element .map-info-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 10px;
}
.elementor-element .map-info-list li {
  font-size: 0.94rem;
  color: var(--ink-700);
}
.elementor-element .map-info-list a {
  color: var(--rose-500);
  text-decoration: none;
}
.elementor-element .map-info-list a:hover { color: var(--rose-600); }

/* ---------- Mobile: ensure left/right margins on this page (same standard as accueil) ---------- */
@media (max-width: 767px) {
  .elementor-element.page-hero,
  .elementor-element.approach-section,
  .elementor-element.pillars-section,
  .elementor-element.features-section,
  .elementor-element.agrement-section,
  .elementor-element.visit-section {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
  .elementor-element.page-hero > .e-con-inner,
  .elementor-element.approach-section > .e-con-inner,
  .elementor-element.pillars-section > .e-con-inner,
  .elementor-element.features-section > .e-con-inner,
  .elementor-element.agrement-section > .e-con-inner,
  .elementor-element.visit-section > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* ===== ACU-BLOCK:CENTRE-SUWEN END ===== */


/* ===== ACU-BLOCK:FORMATRICE-KIM START ===== */
/* =====================================================================
   PAGE — FORMATRICE KIM
   ===================================================================== */

/* Strip doubled e-con-inner padding on all sections of this page */
.elementor-element.kim-intro-section > .e-con-inner,
.elementor-element.esprit-section > .e-con-inner,
.elementor-element.timeline-section > .e-con-inner,
.elementor-element.creds-section > .e-con-inner,
.elementor-element.kim-quote-section > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* ---------- INTRO (photo + bio) ---------- */
.elementor-element.kim-intro-grid {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 60px !important;
  align-items: center !important;
}
@media (max-width: 900px) {
  .elementor-element.kim-intro-grid { grid-template-columns: 1fr !important; }
}
.kim-intro-photo-wrap .kim-intro-photo,
.elementor-element .kim-intro-photo {
  aspect-ratio: 4/5;
  border-radius: 260px 260px 24px 24px;
  max-width: 500px;
  background: linear-gradient(135deg, var(--rose-100), var(--sand-200));
  position: relative;
  display: flex; align-items: center; justify-content: center;
  color: var(--rose-500); font-family: var(--serif); font-style: italic;
  padding: 20px;
  overflow: hidden;
}
.kim-intro-photo-wrap .kim-intro-photo::before,
.elementor-element .kim-intro-photo::before {
  content: "";
  position: absolute; inset: 12px;
  border: 1px dashed var(--rose-300);
  border-radius: inherit;
  pointer-events: none;
}

/* ---------- ESPRIT DE L'ENSEIGNEMENT (4-col numbered cards) ---------- */
.elementor-element.esprit-section { background: var(--white); }
.elementor-element.esprit-grid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr);
  gap: 22px !important;
}
@media (max-width: 980px) {
  .elementor-element.esprit-grid { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 540px) {
  .elementor-element.esprit-grid { grid-template-columns: 1fr !important; }
}
.esprit-card-wrap .esprit-card {
  background: var(--rose-50);
  padding: 30px 22px;
  border-radius: var(--r-md);
  border: 1px solid var(--line-2);
  text-align: center;
  height: 100%;
  transition: transform 0.25s, box-shadow 0.25s, border-color 0.25s;
}
.esprit-card-wrap .esprit-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow-sm);
  border-color: var(--rose-300);
}
.esprit-card-wrap .esprit-card .num {
  font-family: var(--serif);
  font-style: italic;
  font-size: 1.35rem;
  color: var(--rose-500);
  line-height: 1;
  margin-bottom: 14px;
}
.esprit-card-wrap .esprit-card h4 {
  margin: 0 0 10px;
  font-family: var(--serif);
  font-size: 1.18rem;
  font-weight: 500;
  color: var(--ink-900);
}
.esprit-card-wrap .esprit-card p {
  margin: 0;
  font-size: 0.92rem;
  color: var(--ink-700);
  line-height: 1.55;
}

/* ---------- TIMELINE ---------- */
.elementor-element.timeline-section { background: var(--sand-100); }
.elementor-element.timeline-grid {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 80px !important;
  align-items: start !important;
}
@media (max-width: 900px) {
  .elementor-element.timeline-grid {
    grid-template-columns: 1fr !important;
    gap: 40px !important;
  }
}
.elementor-element .timeline {
  position: relative;
  padding-left: 32px;
  border-left: 1px solid var(--line);
}
.elementor-element .tl-item {
  padding: 0 0 36px 28px;
  position: relative;
}
.elementor-element .tl-item:last-child { padding-bottom: 0; }
.elementor-element .tl-item::before {
  content: "";
  position: absolute;
  left: -38px;
  top: 6px;
  width: 12px; height: 12px;
  border-radius: 50%;
  background: var(--white);
  border: 2px solid var(--rose-400);
}
.elementor-element .tl-item .yr {
  font-family: var(--serif);
  font-size: 1.3rem;
  color: var(--rose-500);
  font-style: italic;
}
.elementor-element .tl-item h4 {
  margin: 6px 0 8px;
  font-size: 1.15rem;
  font-family: var(--serif);
  font-weight: 500;
  color: var(--ink-900);
}
.elementor-element .tl-item p {
  font-size: 0.94rem;
  margin: 0;
  color: var(--ink-500);
}

/* ---------- CREDENTIALS ---------- */
.elementor-element.creds-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px !important;
}
@media (max-width: 900px) { .elementor-element.creds-grid { grid-template-columns: 1fr 1fr !important; } }
@media (max-width: 540px) { .elementor-element.creds-grid { grid-template-columns: 1fr !important; } }
.cred-wrap .cred {
  background: var(--white);
  padding: 24px;
  border-radius: var(--r-md);
  border: 1px solid var(--line-2);
  height: 100%;
}
.cred-wrap .cred .badge {
  display: inline-block;
  padding: 4px 10px;
  border-radius: var(--r-pill);
  background: var(--rose-50);
  color: var(--rose-500);
  font-size: 0.74rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-family: var(--sans);
}
.cred-wrap .cred h4 {
  margin: 14px 0 6px;
  font-size: 1.1rem;
  font-family: var(--serif);
  font-weight: 500;
  color: var(--ink-900);
}
.cred-wrap .cred p {
  font-size: 0.9rem;
  color: var(--ink-500);
  margin: 0;
}

/* ---------- QUOTE (rose-50 full bg) ---------- */
.elementor-element.kim-quote-section { background: var(--rose-50); }
.elementor-element.kim-quote-section .kim-quote {
  max-width: 800px;
  margin: 0 auto;
  text-align: center;
}
.elementor-element.kim-quote-section .kim-quote p {
  font-family: var(--serif);
  font-style: italic;
  font-size: clamp(1.4rem, 2.4vw, 2rem);
  color: var(--ink-900);
  line-height: 1.45;
  margin: 0;
}
.elementor-element.kim-quote-section .kim-quote .divider {
  width: 56px;
  height: 1px;
  background: var(--gold-500);
  margin: 1.4rem auto;
}
.elementor-element.kim-quote-section .kim-quote-name {
  font-family: var(--sans) !important;
  font-weight: 600 !important;
  font-style: normal !important;
  font-size: 1rem !important;
  color: var(--ink-900) !important;
}
.elementor-element.kim-quote-section .kim-quote-role {
  font-family: var(--sans) !important;
  font-style: normal !important;
  font-size: 0.84rem !important;
  color: var(--ink-500) !important;
}

/* ---------- Mobile: left/right padding for ALL sections (same standard) ---------- */
@media (max-width: 767px) {
  .elementor-element.kim-intro-section,
  .elementor-element.esprit-section,
  .elementor-element.timeline-section,
  .elementor-element.creds-section,
  .elementor-element.kim-quote-section {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
  .elementor-element.kim-intro-section > .e-con-inner,
  .elementor-element.esprit-section > .e-con-inner,
  .elementor-element.timeline-section > .e-con-inner,
  .elementor-element.creds-section > .e-con-inner,
  .elementor-element.kim-quote-section > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* ===== ACU-BLOCK:FORMATRICE-KIM END ===== */


/* ===== ACU-BLOCK:GALERIE START ===== */
/* =====================================================================
   PAGE — GALERIE
   ===================================================================== */

/* Strip doubled e-con-inner padding on this page sections */
.elementor-element.gallery-section > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* ---------- FILTER BAR ---------- */
.gallery-filter-wrap .gallery-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  margin-bottom: 40px;
}
.gallery-filter-wrap .filter-btn {
  padding: 10px 20px;
  border-radius: var(--r-pill);
  border: 1px solid var(--line);
  background: var(--white);
  font-family: var(--sans);
  font-size: 0.88rem;
  font-weight: 500;
  color: var(--ink-700);
  cursor: pointer;
  transition: all 0.2s;
}
.gallery-filter-wrap .filter-btn:hover,
.gallery-filter-wrap .filter-btn.active {
  background: var(--rose-500);
  color: var(--white);
  border-color: var(--rose-500);
}

/* ---------- MASONRY ----------
   Elementor renders the container with display:flex which kills CSS columns.
   Force display:block + columns + inline-block children for the masonry flow. */
.elementor-element.gallery-masonry {
  display: block !important;
  columns: 3 !important;
  column-gap: 16px !important;
}
@media (max-width: 900px) {
  .elementor-element.gallery-masonry { columns: 2 !important; }
}
@media (max-width: 540px) {
  .elementor-element.gallery-masonry { columns: 1 !important; }
}
.elementor-element.gallery-masonry > .gallery-tile-wrap {
  display: inline-block !important;
  width: 100% !important;
  break-inside: avoid;
  margin-bottom: 16px;
  border-radius: var(--r-md);
  overflow: hidden;
  vertical-align: top;
}
/* Toggled by the filter JS — beats the inline-block !important above */
.elementor-element.gallery-masonry > .gallery-tile-wrap.is-filtered-out {
  display: none !important;
}
.gallery-tile-wrap .gallery-tile {
  position: relative;
  break-inside: avoid;
  border-radius: var(--r-md);
  overflow: hidden;
}
.gallery-tile-wrap .gallery-tile .ph {
  background: linear-gradient(135deg, var(--rose-100), var(--sand-200));
  position: relative;
  color: var(--rose-500);
  font-family: var(--serif);
  font-style: italic;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  padding: 30px 20px;
}
.gallery-tile-wrap .gallery-tile .ph::before {
  content: "";
  position: absolute;
  inset: 12px;
  border: 1px dashed var(--rose-300);
  border-radius: var(--r-md);
  pointer-events: none;
}
.gallery-tile-wrap .gallery-tile.h-sm .ph { aspect-ratio: 4/3; }
.gallery-tile-wrap .gallery-tile.h-md .ph { aspect-ratio: 1; }
.gallery-tile-wrap .gallery-tile.h-lg .ph { aspect-ratio: 3/4; }
.gallery-tile-wrap .gallery-tile .cap {
  position: absolute;
  bottom: 14px;
  left: 14px;
  right: 14px;
  background: rgba(43, 33, 28, 0.78);
  color: white;
  padding: 8px 12px;
  border-radius: 8px;
  font-size: 0.82rem;
  font-family: var(--sans);
  backdrop-filter: blur(6px);
  opacity: 0;
  transition: opacity 0.25s;
}
.gallery-tile-wrap .gallery-tile:hover .cap { opacity: 1; }

/* ---------- Mobile: left/right page padding ---------- */
@media (max-width: 767px) {
  .elementor-element.gallery-section {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
  .elementor-element.gallery-section > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* ===== ACU-BLOCK:GALERIE END ===== */


/* ===== ACU-BLOCK:CONTACT START ===== */
/* =====================================================================
   PAGE — CONTACT
   ===================================================================== */

.elementor-element.contact-section > .e-con-inner,
.elementor-element.faq-section > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* ---------- 2-col grid ---------- */
.elementor-element.contact-grid {
  display: grid !important;
  grid-template-columns: 1fr 1.2fr;
  gap: 60px !important;
  align-items: start !important;
}
@media (max-width: 900px) {
  .elementor-element.contact-grid { grid-template-columns: 1fr !important; }
}

/* ---------- LEFT: contact card + map ---------- */
.contact-left-col .contact-card,
.elementor-element .contact-card {
  background: var(--white);
  border: 1px solid var(--line-2);
  border-radius: var(--r-md);
  padding: 32px;
}
.contact-left-col .contact-card h3 {
  margin: 0 0 8px;
  font-family: var(--serif);
  font-weight: 500;
  color: var(--ink-900);
}
.contact-left-col .contact-card-sub {
  font-size: 0.94rem;
  color: var(--ink-500);
  margin: 0 0 18px !important;
}
.elementor-element .info-row {
  display: flex;
  gap: 16px;
  padding: 18px 0;
  border-bottom: 1px solid var(--line-2);
  align-items: center;
}
.elementor-element .info-row:last-child { border-bottom: 0; }
.elementor-element .info-row .ico {
  width: 42px; height: 42px;
  border-radius: 50%;
  background: var(--rose-100);
  color: var(--rose-500);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--serif);
  flex-shrink: 0;
  font-size: 1.1rem;
}
.elementor-element .info-row strong {
  display: block;
  font-family: var(--sans);
  font-size: 0.94rem;
  color: var(--ink-900);
}
.elementor-element .info-row span,
.elementor-element .info-row a {
  font-size: 0.92rem;
  color: var(--ink-500);
  text-decoration: none;
}
.elementor-element .info-row a:hover { color: var(--rose-500); }

.contact-left-col .contact-socials-row {
  margin-top: 24px;
  display: flex;
  gap: 10px;
}
.contact-left-col .contact-socials-row .btn {
  flex: 1;
  padding: 12px !important;
  text-align: center;
  background: transparent;
  border: 1.5px solid var(--rose-500);
  color: var(--rose-600);
  border-radius: var(--r-pill);
  font-family: var(--sans);
  font-weight: 600;
  font-size: 0.92rem;
  transition: all 0.2s;
  text-decoration: none;
}
.contact-left-col .contact-socials-row .btn:hover {
  background: var(--rose-500);
  color: white;
}

.contact-left-col .contact-map {
  margin-top: 18px;
  aspect-ratio: 21 / 9;
  border-radius: var(--r-md);
  overflow: hidden;
  position: relative;
  background: var(--sand-100);
}
.contact-left-col .contact-map iframe {
  width: 100%;
  height: 100%;
  border: 0;
  display: block;
}
.contact-left-col .contact-map-link {
  position: absolute;
  bottom: 12px;
  right: 12px;
  background: rgba(253, 250, 246, 0.94);
  color: var(--rose-600);
  padding: 6px 14px;
  border-radius: var(--r-pill);
  font-family: var(--sans);
  font-weight: 600;
  font-size: 0.82rem;
  text-decoration: none;
  box-shadow: 0 2px 8px rgba(0,0,0,.08);
  transition: background 0.2s, color 0.2s;
}
.contact-left-col .contact-map-link:hover {
  background: var(--rose-500);
  color: white;
}

/* ---------- RIGHT: tabs + forms ---------- */
.contact-tabs-wrap .contact-tabs {
  display: flex;
  gap: 8px;
  border-bottom: 1px solid var(--line);
  margin-bottom: 28px;
}
.contact-tabs-wrap .contact-tab {
  padding: 12px 18px;
  font-family: var(--sans);
  font-size: 0.95rem;
  font-weight: 600;
  background: none;
  border: 0;
  cursor: pointer;
  color: var(--ink-500);
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color 0.2s, border-color 0.2s;
}
.contact-tabs-wrap .contact-tab:hover { color: var(--rose-500); }
.contact-tabs-wrap .contact-tab.active {
  color: var(--rose-500);
  border-bottom-color: var(--rose-500);
}

/* Panels — only the .is-active one is visible */
.elementor-element.contact-panel {
  display: none !important;
}
.elementor-element.contact-panel.is-active {
  display: flex !important;
  flex-direction: column !important;
}

/* Form fields style (inherits from base .form / .field but re-apply to be safe) */
.contact-form-inscription .form,
.contact-form-message .form {
  display: grid;
  gap: 18px;
}
.contact-form-inscription .form-row,
.contact-form-message .form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
@media (max-width: 620px) {
  .contact-form-inscription .form-row,
  .contact-form-message .form-row { grid-template-columns: 1fr; }
}
.contact-form-inscription .field label,
.contact-form-message .field label {
  display: block;
  font-size: 0.82rem;
  font-weight: 600;
  color: var(--ink-700);
  margin-bottom: 7px;
  letter-spacing: 0.02em;
}
.contact-form-inscription .field input,
.contact-form-inscription .field select,
.contact-form-inscription .field textarea,
.contact-form-message .field input,
.contact-form-message .field select,
.contact-form-message .field textarea {
  width: 100%;
  padding: 14px 16px;
  font-family: var(--sans);
  font-size: 0.94rem;
  color: var(--ink-900);
  background: var(--white);
  border: 1px solid var(--line);
  border-radius: 10px;
  transition: border-color 0.2s, box-shadow 0.2s;
}
.contact-form-inscription .field input:focus,
.contact-form-inscription .field select:focus,
.contact-form-inscription .field textarea:focus,
.contact-form-message .field input:focus,
.contact-form-message .field select:focus,
.contact-form-message .field textarea:focus {
  outline: none;
  border-color: var(--rose-400);
  box-shadow: 0 0 0 4px var(--rose-100);
}
.contact-form-inscription .field textarea,
.contact-form-message .field textarea {
  min-height: 140px;
  resize: vertical;
}
.contact-form-inscription .checkbox,
.contact-form-message .checkbox {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-size: 0.88rem;
  color: var(--ink-700);
}
.contact-form-inscription .checkbox input,
.contact-form-message .checkbox input {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--rose-500);
}
.contact-form-inscription .btn--primary,
.contact-form-message .btn--primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 14px 26px;
  background: var(--rose-500);
  color: white;
  font-family: var(--sans);
  font-size: 0.92rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  border-radius: var(--r-pill);
  border: 0;
  cursor: pointer;
  transition: all 0.25s;
}
.contact-form-inscription .btn--primary:hover,
.contact-form-message .btn--primary:hover {
  background: var(--rose-600);
  transform: translateY(-1px);
}
.contact-form-inscription .btn--ghost,
.contact-form-message .btn--ghost {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 14px 26px;
  background: transparent;
  border: 1.5px solid var(--rose-500);
  color: var(--rose-600);
  font-family: var(--sans);
  font-weight: 600;
  border-radius: var(--r-pill);
  text-decoration: none;
}

.contact-panel-heading .contact-card {
  padding: 0 !important;
  background: transparent !important;
  border: 0 !important;
  margin-bottom: 24px;
}
.contact-panel-heading .contact-card h3 {
  margin: 0 0 8px !important;
  font-family: var(--serif);
  font-weight: 500;
  color: var(--ink-900);
}
.contact-panel-heading .contact-card-sub {
  font-size: 0.94rem;
  color: var(--ink-500);
  margin: 0 !important;
}

/* ---------- FAQ ---------- */
.elementor-element.faq-section { background: var(--sand-100); }
.elementor-element.faq-grid {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 24px !important;
  max-width: 980px;
  margin: 0 auto;
}
@media (max-width: 720px) {
  .elementor-element.faq-grid { grid-template-columns: 1fr !important; }
}
.faq-card-wrap .faq-card {
  background: white;
  padding: 28px;
  border-radius: var(--r-md);
  border: 1px solid var(--line-2);
  height: 100%;
}
.faq-card-wrap .faq-card h4 {
  font-family: var(--serif);
  font-size: 1.2rem;
  font-weight: 500;
  margin: 0 0 8px;
  color: var(--ink-900);
}
.faq-card-wrap .faq-card p {
  font-size: 0.94rem;
  margin: 0;
  color: var(--ink-700);
}

/* ---------- Mobile padding ---------- */
@media (max-width: 767px) {
  .elementor-element.contact-section,
  .elementor-element.faq-section {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
  .elementor-element.contact-section > .e-con-inner,
  .elementor-element.faq-section > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* ===== ACU-BLOCK:CONTACT END ===== */


/* ===== ACU-BLOCK:FORMATIONS-LIST START ===== */
/* =====================================================================
   PAGE — FORMATIONS (list)
   ===================================================================== */

.elementor-element.formations-section > .e-con-inner,
.elementor-element.pourquoi-section > .e-con-inner,
.elementor-element.steps-section > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* ---------- FILTER BAR ---------- */
.formations-filter-wrap .formations-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
  margin-bottom: 40px;
}
.formations-filter-wrap .filter-btn {
  padding: 10px 20px;
  border-radius: var(--r-pill);
  border: 1px solid var(--line);
  background: var(--white);
  font-family: var(--sans);
  font-size: 0.88rem;
  font-weight: 500;
  color: var(--ink-700);
  cursor: pointer;
  transition: all 0.2s;
}
.formations-filter-wrap .filter-btn:hover {
  border-color: var(--rose-400);
  color: var(--rose-500);
}
.formations-filter-wrap .filter-btn.active {
  background: var(--rose-500);
  color: white;
  border-color: var(--rose-500);
}

/* Cards toggled by the filter JS */
.acu-formations-grid .card-formation.is-filtered-out {
  display: none !important;
}

/* ---------- STEPS (cream bg, 2-col) ---------- */
.elementor-element.steps-section { background: var(--sand-100); }
.elementor-element.steps-grid {
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 60px !important;
  align-items: center !important;
}
@media (max-width: 900px) {
  .elementor-element.steps-grid { grid-template-columns: 1fr !important; }
}
.steps-text .steps-list,
.elementor-element .steps-list {
  list-style: none;
  padding: 0;
  margin: 0 0 8px;
}
.elementor-element .steps-list li {
  padding: 18px 0;
  border-bottom: 1px solid var(--line);
  display: flex;
  gap: 18px;
  align-items: flex-start;
}
.elementor-element .steps-list li:last-child { border-bottom: 0; }
.elementor-element .step-num {
  font-family: var(--serif);
  color: var(--rose-500);
  font-size: 1.8rem;
  line-height: 1;
  font-weight: 400;
  flex-shrink: 0;
}
.elementor-element .steps-list strong {
  font-family: var(--sans);
  font-weight: 600;
  color: var(--ink-900);
  font-size: 1rem;
}
.elementor-element .step-sub {
  color: var(--ink-500);
  font-size: 0.92rem;
}

.steps-photo-wrap .steps-photo,
.elementor-element .steps-photo {
  aspect-ratio: 1;
  border-radius: var(--r-lg);
  max-width: 460px;
  margin-left: auto;
  background: linear-gradient(135deg, var(--rose-100), var(--sand-200));
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--rose-500);
  font-family: var(--serif);
  font-style: italic;
  padding: 20px;
  text-align: center;
}
.steps-photo-wrap .steps-photo::before,
.elementor-element .steps-photo::before {
  content: "";
  position: absolute;
  inset: 12px;
  border: 1px dashed var(--rose-300);
  border-radius: inherit;
}

/* ---------- POURQUOI sur la page Formations (reuse .pourquoi-* from accueil) ---------- */
.elementor-element.pourquoi-section { background: var(--rose-50); }

/* ---------- Mobile padding ---------- */
@media (max-width: 767px) {
  .elementor-element.formations-section,
  .elementor-element.pourquoi-section,
  .elementor-element.steps-section {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
  .elementor-element.formations-section > .e-con-inner,
  .elementor-element.pourquoi-section > .e-con-inner,
  .elementor-element.steps-section > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* ===== ACU-BLOCK:FORMATIONS-LIST END ===== */


/* ===== ACU-BLOCK:CALENDRIER START ===== */
/* =====================================================================
   PAGE â€” CALENDRIER
   ===================================================================== */

/* Strip double e-con-inner padding sur la section months */
.elementor-element.calendrier-section > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* Stack vertical des month-blocks */
.elementor-element.calendrier-stack {
  display: flex !important;
  flex-direction: column !important;
  gap: 56px !important;
}

/* ---------- MONTH BLOCK ---------- */
.elementor-element.month-block {
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
}

.month-block-head-wrap .month-block-head { margin: 0 0 12px; }
.month-block-head-wrap h2.month-h, .month-block-head-wrap h3 {
  font-family: var(--serif);
  font-size: 2rem;
  font-weight: 500;
  color: var(--ink-900);
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
  margin: 0;
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 16px;
}
.month-block-head-wrap h2.month-h, .month-block-head-wrap h3 small {
  font-family: var(--sans);
  font-size: 0.8rem;
  color: var(--ink-500);
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

/* ---------- EVENT ROW ---------- */
.event-row-wrap .event-row {
  display: grid;
  grid-template-columns: 110px 1fr auto auto;
  gap: 28px;
  align-items: center;
  background: var(--white);
  border: 1px solid var(--line-2);
  border-radius: var(--r-md);
  padding: 22px 28px;
  transition: all .25s ease;
}
.event-row-wrap .event-row:hover {
  border-color: var(--rose-400);
  transform: translateX(6px);
}
.event-row-wrap .date-blk { font-family: var(--serif); }
.event-row-wrap .date-blk .d {
  font-size: 1.8rem;
  color: var(--rose-500);
  line-height: 1;
  font-style: italic;
}
.event-row-wrap .date-blk .extra {
  font-family: var(--sans);
  font-size: 0.84rem;
  color: var(--ink-500);
  margin-top: 4px;
  font-style: normal;
}
.event-row-wrap .event-body h4 {
  margin: 0 0 6px;
  font-family: var(--serif);
  font-weight: 500;
  font-size: 1.15rem;
  color: var(--ink-900);
}
.event-row-wrap .event-body .tags {
  display: flex;
  gap: 8px;
  font-size: 0.78rem;
  color: var(--ink-500);
  flex-wrap: wrap;
}
.event-row-wrap .event-body .pill {
  background: var(--sand-100);
  padding: 3px 10px;
  border-radius: var(--r-pill);
  white-space: nowrap;
}
.event-row-wrap .event-row .pr {
  font-family: var(--serif);
  color: var(--rose-500);
  font-size: 1.3rem;
  white-space: nowrap;
}
.event-row-wrap .event-row .event-cta {
  padding: 10px 18px;
  white-space: nowrap;
}

/* Mobile : stack en colonne */
@media (max-width: 800px) {
  .event-row-wrap .event-row {
    grid-template-columns: 1fr;
    gap: 12px;
    padding: 20px;
  }
  .event-row-wrap .event-row .pr,
  .event-row-wrap .event-row .event-cta { justify-self: start; }
}

/* ---------- PDF CALLOUT ---------- */
.pdf-callout-wrap .pdf-callout {
  margin-top: 0;
  padding: 32px;
  background: var(--rose-50);
  border-radius: var(--r-md);
  text-align: center;
}
.pdf-callout-wrap .pdf-callout p {
  margin: 0 0 18px;
  color: var(--ink-700);
  font-size: 0.96rem;
}
.pdf-callout-wrap .pdf-callout .btn--primary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 14px 26px;
  background: var(--rose-500);
  color: white;
  font-family: var(--sans);
  font-size: 0.92rem;
  font-weight: 600;
  letter-spacing: 0.02em;
  border-radius: var(--r-pill);
  border: 0;
  cursor: pointer;
  text-decoration: none;
  transition: all 0.25s;
}
.pdf-callout-wrap .pdf-callout .btn--primary:hover {
  background: var(--rose-600);
  transform: translateY(-1px);
}

/* ---------- Mobile padding latÃ©ral ---------- */
@media (max-width: 767px) {
  .elementor-element.calendrier-section {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
  .elementor-element.calendrier-section > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  .month-block-head-wrap h2.month-h, .month-block-head-wrap h3 {
    font-size: 1.6rem;
    flex-wrap: wrap;
  }
}

/* ===== ACU-BLOCK:CALENDRIER END ===== */


/* ===== ACU-BLOCK:SEANCE-INDIVIDUELLE START ===== */
/* =====================================================================
   PAGE — SEANCES INDIVIDUELLES
   ===================================================================== */

/* Strip double e-con-inner padding on this page's sections */
.elementor-element.approche-section > .e-con-inner,
.elementor-element.tarifs-section > .e-con-inner,
.elementor-element.pour-qui-section > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* ---------- PRICE TABLE ---------- */
.elementor-element.price-table {
  display: flex !important;
  flex-direction: column !important;
  gap: 14px !important;
  max-width: 920px;
  margin: 0 auto !important;
  width: 100%;
}

.price-row-wrap .price-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 24px;
  align-items: center;
  background: var(--white);
  border: 1px solid var(--line-2);
  border-radius: var(--r-md);
  padding: 20px 26px;
  transition: all .25s ease;
}
.price-row-wrap .price-row:hover {
  border-color: var(--rose-400);
  transform: translateX(4px);
}
.price-row-wrap .price-row h4 {
  margin: 0;
  font-family: var(--serif);
  font-weight: 500;
  font-size: 1.15rem;
  color: var(--ink-900);
}
.price-row-wrap .price-row .desc {
  color: var(--ink-500);
  font-size: 0.9rem;
  margin-top: 4px;
  font-family: var(--sans);
}
.price-row-wrap .price-row .dur {
  font-size: 0.84rem;
  color: var(--ink-500);
  white-space: nowrap;
  font-family: var(--sans);
}
.price-row-wrap .price-row .pr {
  font-family: var(--serif);
  color: var(--rose-500);
  font-size: 1.6rem;
  white-space: nowrap;
  font-style: italic;
}

/* Mobile : stack en colonne, dur et prix sous le titre */
@media (max-width: 720px) {
  .price-row-wrap .price-row {
    grid-template-columns: 1fr;
    gap: 8px;
    padding: 20px;
  }
  .price-row-wrap .price-row .dur { order: 2; }
  .price-row-wrap .price-row .pr { order: 3; font-size: 1.4rem; }
}

/* Note forfaits sous la table */
.price-note-wrap .price-note {
  text-align: center;
  color: var(--ink-500);
  font-size: 0.88rem;
  margin: 0;
}

/* ---------- Mobile padding latéral ---------- */
@media (max-width: 767px) {
  .elementor-element.approche-section,
  .elementor-element.tarifs-section,
  .elementor-element.pour-qui-section {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
  .elementor-element.approche-section > .e-con-inner,
  .elementor-element.tarifs-section > .e-con-inner,
  .elementor-element.pour-qui-section > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* ===== ACU-BLOCK:SEANCE-INDIVIDUELLE END ===== */


/* ===== ACU-BLOCK:VOYAGE-SONORE START ===== */
/* =====================================================================
   PAGE — VOYAGE SONORE
   ===================================================================== */

/* Strip double e-con-inner padding sur les sections de la page */
.elementor-element.vs-hero-section > .e-con-inner,
.elementor-element.benefits-section > .e-con-inner,
.elementor-element.duo-section > .e-con-inner,
.elementor-element.dates-section > .e-con-inner,
.elementor-element.vs-testi-section > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* ---------- VS HERO (2-col text + photo cercle) ---------- */
.elementor-element.vs-hero {
  display: grid !important;
  grid-template-columns: 1.05fr 0.95fr !important;
  gap: 60px !important;
  align-items: center !important;
}
@media (max-width: 900px) {
  .elementor-element.vs-hero { grid-template-columns: 1fr !important; }
}

.vs-photo-wrap .vs-photo,
.elementor-element .vs-photo {
  aspect-ratio: 1 / 1;
  border-radius: 50%;
  max-width: 520px;
  margin-left: auto;
  background: linear-gradient(135deg, var(--rose-100), var(--sand-200));
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--rose-500);
  font-family: var(--serif);
  font-style: italic;
  padding: 20px;
  text-align: center;
  overflow: hidden;
}
.vs-photo-wrap .vs-photo::before,
.elementor-element .vs-photo::before {
  content: "";
  position: absolute;
  inset: 14px;
  border: 1px dashed var(--rose-300);
  border-radius: inherit;
  pointer-events: none;
}
@media (max-width: 900px) {
  .vs-photo-wrap .vs-photo,
  .elementor-element .vs-photo { margin-left: 0; margin-right: auto; }
}

.vs-cta-row-wrap .vs-cta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 18px;
  align-items: center;
  margin-top: 8px;
}
.vs-cta-row-wrap .vs-tarif {
  color: var(--ink-500);
  font-size: 0.92rem;
  font-family: var(--sans);
}

/* ---------- BENEFITS (4-col cards) ---------- */
.elementor-element.benefits-grid {
  display: grid !important;
  grid-template-columns: repeat(4, 1fr) !important;
  gap: 20px !important;
}
@media (max-width: 900px) {
  .elementor-element.benefits-grid { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 540px) {
  .elementor-element.benefits-grid { grid-template-columns: 1fr !important; }
}

.benefit-wrap .benefit {
  background: var(--white);
  border: 1px solid var(--line-2);
  padding: 28px;
  border-radius: var(--r-md);
  text-align: center;
  height: 100%;
}
.benefit-wrap .benefit .ico {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: var(--rose-100);
  color: var(--rose-500);
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto 14px;
  font-family: var(--serif);
  font-size: 1.4rem;
}
.benefit-wrap .benefit h4 {
  font-family: var(--serif);
  font-weight: 500;
  font-size: 1.05rem;
  color: var(--ink-900);
  margin: 0 0 6px;
}
.benefit-wrap .benefit p {
  font-size: 0.88rem;
  color: var(--ink-500);
  margin: 0;
}

/* ---------- DATES (grid 3x3) ---------- */
.elementor-element.dates-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 14px !important;
}
@media (max-width: 900px) {
  .elementor-element.dates-grid { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 540px) {
  .elementor-element.dates-grid { grid-template-columns: 1fr !important; }
}

.date-card-wrap .date-card {
  background: var(--white);
  border: 1px solid var(--line-2);
  border-radius: var(--r-md);
  padding: 22px;
  text-align: center;
  transition: all .25s ease;
  height: 100%;
}
.date-card-wrap .date-card:hover {
  border-color: var(--rose-400);
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}
.date-card-wrap .date-card .day {
  font-family: var(--serif);
  font-size: 2.4rem;
  color: var(--rose-500);
  line-height: 1;
  font-style: italic;
}
.date-card-wrap .date-card .mo {
  font-family: var(--sans);
  font-size: 0.84rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--ink-500);
  margin-top: 4px;
}
.date-card-wrap .date-card .time {
  font-family: var(--sans);
  font-size: 0.88rem;
  color: var(--ink-700);
  margin-top: 14px;
  padding-top: 14px;
  border-top: 1px solid var(--line-2);
}

.dates-info-wrap .dates-info {
  color: var(--ink-500);
  font-size: 0.94rem;
  margin: 0;
  text-align: center;
}

/* ---------- Mobile padding latéral ---------- */
@media (max-width: 767px) {
  .elementor-element.vs-hero-section,
  .elementor-element.benefits-section,
  .elementor-element.duo-section,
  .elementor-element.dates-section,
  .elementor-element.vs-testi-section {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
  .elementor-element.vs-hero-section > .e-con-inner,
  .elementor-element.benefits-section > .e-con-inner,
  .elementor-element.duo-section > .e-con-inner,
  .elementor-element.dates-section > .e-con-inner,
  .elementor-element.vs-testi-section > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* ===== ACU-BLOCK:VOYAGE-SONORE END ===== */


/* ===== ACU-BLOCK:FORMATION-DETAIL START ===== */
/* =====================================================================
   SINGLE — FORMATION DETAIL
   Applied to all CPT formation via single-formation.php
   ===================================================================== */

/* ---------- TOP BREADCRUMB STRIP ---------- */
.acupoint-theme .formation-breadcrumb {
  background: var(--sand-50);
  padding: 24px 0 0;
}
.acupoint-theme .formation-breadcrumb .container {
  max-width: 1240px;
  padding: 0 24px;
  margin: 0 auto;
}
.acupoint-theme .formation-breadcrumb .breadcrumb {
  font-size: 0.82rem;
  color: var(--ink-500);
  letter-spacing: 0.06em;
}
.acupoint-theme .formation-breadcrumb .breadcrumb a {
  color: var(--ink-500);
  text-decoration: none;
}
.acupoint-theme .formation-breadcrumb .breadcrumb a:hover { color: var(--rose-500); }

/* ---------- HERO (2-col text + photo) ---------- */
.acupoint-theme .formation-hero {
  background: var(--sand-50);
  padding: 0 0 clamp(60px, 8vw, 100px);
}
.acupoint-theme .formation-hero .container {
  max-width: 1240px;
  padding: 0 24px;
  margin: 0 auto;
}
.acupoint-theme .detail-hero {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 60px;
  align-items: center;
  padding-block: clamp(60px, 8vw, 100px) 0;
}
@media (max-width: 980px) {
  .acupoint-theme .detail-hero { grid-template-columns: 1fr; }
}

.acupoint-theme .formation-tags {
  display: flex;
  gap: 8px;
  margin-bottom: 18px;
  flex-wrap: wrap;
}
.acupoint-theme .formation-tags .tag {
  padding: 6px 12px;
  border-radius: var(--r-pill);
  font-size: 0.74rem;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-family: var(--sans);
}
.acupoint-theme .formation-tags .tag-rose {
  background: var(--rose-100);
  color: var(--rose-500);
}
.acupoint-theme .formation-tags .tag-sand {
  background: var(--sand-200);
  color: var(--ink-700);
}

.acupoint-theme .detail-hero-title {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(2.2rem, 4.4vw, 3.6rem);
  color: var(--ink-900);
  margin: 0 0 16px;
  line-height: 1.1;
}
.acupoint-theme .detail-hero-text .lead {
  color: var(--ink-700);
  margin: 0 0 8px;
}

/* Key-facts grid 2x2 */
.acupoint-theme .key-facts {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
  margin: 28px 0;
}
.acupoint-theme .key-facts .kf {
  background: var(--white);
  border: 1px solid var(--line-2);
  padding: 16px 18px;
  border-radius: var(--r-md);
}
.acupoint-theme .key-facts .kf .lbl {
  font-size: 0.74rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--ink-500);
  font-family: var(--sans);
  font-weight: 500;
}
.acupoint-theme .key-facts .kf .val {
  font-family: var(--serif);
  font-size: 1.4rem;
  color: var(--ink-900);
  margin-top: 4px;
}

.acupoint-theme .detail-hero-ctas {
  display: flex;
  flex-wrap: wrap;
  gap: 14px;
  margin-top: 8px;
}

.acupoint-theme .detail-hero-media { width: 100%; }
.acupoint-theme .detail-hero-photo {
  aspect-ratio: 4 / 5;
  border-radius: var(--r-lg);
  max-width: 520px;
  width: 100%;
  object-fit: cover;
  background: linear-gradient(135deg, var(--rose-100), var(--sand-200));
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--rose-500);
  font-family: var(--serif);
  font-style: italic;
  margin-left: auto;
}
img.detail-hero-photo { padding: 0; }

/* ---------- BODY GRID (main + sticky sidebar) ---------- */
.acupoint-theme .formation-body { padding: clamp(60px, 8vw, 100px) 0; }
.acupoint-theme .formation-body .container {
  max-width: 1240px;
  padding: 0 24px;
  margin: 0 auto;
}
.acupoint-theme .detail-grid {
  display: grid;
  grid-template-columns: 1.4fr 0.9fr;
  gap: 60px;
  align-items: start;
}
@media (max-width: 980px) {
  .acupoint-theme .detail-grid { grid-template-columns: 1fr; }
}
.acupoint-theme .detail-main h2 {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(1.8rem, 3vw, 2.4rem);
  color: var(--ink-900);
  margin: 8px 0 16px;
}
.acupoint-theme .detail-main .detail-main-lead {
  color: var(--ink-700);
  margin: 0 0 36px;
}

/* Program 6-items */
.acupoint-theme .program {
  display: grid;
  gap: 12px;
  margin-top: 24px;
}
.acupoint-theme .program-item {
  background: var(--white);
  border: 1px solid var(--line-2);
  padding: 22px 24px;
  border-radius: var(--r-md);
  display: grid;
  grid-template-columns: 60px 1fr;
  gap: 18px;
  align-items: baseline;
}
.acupoint-theme .program-item .num {
  font-family: var(--serif);
  color: var(--rose-500);
  font-size: 1.8rem;
  font-style: italic;
  line-height: 1;
}
.acupoint-theme .program-item h4 {
  margin: 0 0 6px;
  font-family: var(--serif);
  font-weight: 500;
  font-size: 1.15rem;
  color: var(--ink-900);
}
.acupoint-theme .program-item p {
  margin: 0;
  font-size: 0.94rem;
  color: var(--ink-700);
  line-height: 1.55;
}

/* Public / Prérequis / Méthode pédagogique */
.acupoint-theme .formation-h3 {
  font-family: var(--serif);
  font-weight: 500;
  font-size: 1.4rem;
  color: var(--ink-900);
  margin-top: 56px;
  margin-bottom: 12px;
}
.acupoint-theme .formation-h3 + p {
  margin: 0;
  color: var(--ink-700);
  font-size: 0.98rem;
  line-height: 1.65;
}
.acupoint-theme .detail-main .formation-h3:nth-of-type(n+2) { margin-top: 32px; }

/* Videos section */
.acupoint-theme .formation-videos {
  display: grid;
  grid-template-columns: 1fr;
  gap: 18px;
  margin-top: 18px;
}
.acupoint-theme .formation-video {
  position: relative;
  aspect-ratio: 16 / 9;
  background: #000;
  border-radius: var(--r-md);
  overflow: hidden;
}
.acupoint-theme .formation-video iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* Fallback content if no programme set */
.acupoint-theme .formation-content {
  margin-top: 24px;
  color: var(--ink-700);
}
.acupoint-theme .formation-content p { margin: 0 0 14px; }

/* ---------- STICKY SIDEBAR ---------- */
.acupoint-theme .detail-aside .sidebar {
  background: var(--white);
  border: 1px solid var(--line-2);
  border-radius: var(--r-md);
  padding: 32px;
  position: sticky;
  top: 100px;
}
.acupoint-theme .sidebar .price-big {
  font-family: var(--serif);
  color: var(--rose-500);
  font-size: 2.6rem;
  line-height: 1;
  font-style: italic;
}
.acupoint-theme .sidebar .price-sub {
  font-size: 0.84rem;
  color: var(--ink-500);
  font-family: var(--sans);
  margin-top: 6px;
}
.acupoint-theme .sidebar .alt-price {
  margin-top: 14px;
  font-size: 0.92rem;
  color: var(--ink-500);
}
.acupoint-theme .sidebar .alt-price strong {
  color: var(--rose-500);
  font-weight: 600;
}
.acupoint-theme .sidebar-list {
  list-style: none;
  padding: 0;
  margin: 24px 0;
  display: grid;
  gap: 10px;
  font-size: 0.92rem;
}
.acupoint-theme .sidebar-list li {
  display: flex;
  gap: 10px;
  align-items: baseline;
  color: var(--ink-700);
}
.acupoint-theme .sidebar-list li::before {
  content: "✓";
  color: var(--rose-500);
  font-weight: 600;
  flex-shrink: 0;
}
.acupoint-theme .sidebar-dates {
  margin-top: 8px;
  padding: 16px;
  background: var(--rose-50);
  border-radius: 12px;
}
.acupoint-theme .sidebar-dates h5 {
  font-family: var(--sans);
  font-size: 0.74rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--rose-500);
  margin: 0 0 10px;
  font-weight: 600;
}
.acupoint-theme .sidebar-dates .date-pill {
  display: inline-block;
  background: white;
  padding: 6px 12px;
  border-radius: var(--r-pill);
  font-size: 0.84rem;
  margin: 4px 4px 0 0;
  color: var(--ink-700);
  font-family: var(--sans);
}
.acupoint-theme .sidebar-cta {
  width: 100%;
  margin-top: 22px;
  text-align: center;
}
.acupoint-theme .sidebar-link {
  display: block;
  text-align: center;
  margin-top: 14px;
  color: var(--rose-500) !important;
  font-size: 0.92rem;
}

/* ---------- TESTIMONIALS ---------- */
.acupoint-theme .formation-testi {
  padding: clamp(60px, 8vw, 100px) 0;
  background: var(--rose-50);
}
.acupoint-theme .formation-testi .container {
  max-width: 1240px;
  padding: 0 24px;
  margin: 0 auto;
}
.acupoint-theme .formation-testi-header {
  text-align: center;
  margin-bottom: 48px;
}
.acupoint-theme .formation-testi-header h2 {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(1.8rem, 3vw, 2.4rem);
  color: var(--ink-900);
  margin: 8px 0 0;
}
.acupoint-theme .formation-testi .testimonials-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 28px;
}
@media (max-width: 980px) {
  .acupoint-theme .formation-testi .testimonials-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 620px) {
  .acupoint-theme .formation-testi .testimonials-grid { grid-template-columns: 1fr; }
}

/* ---------- AUTRES FORMATIONS ---------- */
.acupoint-theme .formation-related {
  padding: clamp(60px, 8vw, 100px) 0;
}
.acupoint-theme .formation-related .container {
  max-width: 1240px;
  padding: 0 24px;
  margin: 0 auto;
}
.acupoint-theme .formation-related-header {
  text-align: center;
  margin-bottom: 40px;
}
.acupoint-theme .formation-related-header h2 {
  font-family: var(--serif);
  font-weight: 400;
  font-size: clamp(1.8rem, 3vw, 2.4rem);
  color: var(--ink-900);
  margin: 8px 0 0;
}
.acupoint-theme .related-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 28px !important;
}
@media (max-width: 980px) {
  .acupoint-theme .related-grid { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 620px) {
  .acupoint-theme .related-grid { grid-template-columns: 1fr !important; }
}

/* ---------- Mobile safety ---------- */
@media (max-width: 767px) {
  .acupoint-theme .detail-aside .sidebar { position: static; }
}

/* ===== ACU-BLOCK:FORMATION-DETAIL END ===== */


/* ===== ACU-BLOCK:MEDITATIONS-AUDIO START ===== */
/* =====================================================================
   PAGE — MÉDITATIONS AUDIO
   ===================================================================== */

/* Strip double e-con-inner padding sur les sections de la page */
.elementor-element.pose-section > .e-con-inner,
.elementor-element.audios-section > .e-con-inner,
.elementor-element.rituel-section > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

/* ---------- AUDIO GRID (3-col cards) ---------- */
.elementor-element.audio-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 24px !important;
}
@media (max-width: 900px) {
  .elementor-element.audio-grid { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 600px) {
  .elementor-element.audio-grid { grid-template-columns: 1fr !important; }
}

.audio-card-wrap .audio-card {
  background: var(--white);
  border: 1px solid var(--line-2);
  border-radius: var(--r-md);
  padding: 28px 26px 24px;
  position: relative;
  transition: all 0.25s ease;
  height: 100%;
  display: flex;
  flex-direction: column;
}
.audio-card-wrap .audio-card:hover {
  border-color: var(--rose-400);
  transform: translateY(-3px);
  box-shadow: var(--shadow-md);
}

.audio-card-wrap .audio-num {
  font-family: var(--serif);
  font-style: italic;
  color: var(--rose-300);
  font-size: 1.6rem;
  line-height: 1;
  margin-bottom: 16px;
}

.audio-card-wrap .audio-meta {
  display: flex;
  gap: 10px;
  font-size: 0.74rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-500);
  font-family: var(--sans);
  font-weight: 600;
  margin-bottom: 10px;
  align-items: center;
}
.audio-card-wrap .audio-meta .audio-theme {
  background: var(--sand-100);
  padding: 3px 10px;
  border-radius: var(--r-pill);
  color: var(--ink-700);
}
.audio-card-wrap .audio-meta .audio-duree {
  color: var(--rose-500);
}

.audio-card-wrap .audio-card h3 {
  margin: 0 0 8px;
  font-family: var(--serif);
  font-weight: 500;
  font-size: 1.25rem;
  color: var(--ink-900);
  line-height: 1.25;
}
.audio-card-wrap .audio-card p {
  margin: 0 0 22px;
  font-size: 0.92rem;
  color: var(--ink-700);
  line-height: 1.55;
  flex: 1;
}

.audio-card-wrap .audio-play {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  align-self: flex-start;
  background: var(--rose-50);
  color: var(--rose-500);
  padding: 10px 18px;
  border-radius: var(--r-pill);
  text-decoration: none;
  font-family: var(--sans);
  font-weight: 600;
  font-size: 0.88rem;
  transition: all 0.2s;
  border: 1px solid transparent;
}
.audio-card-wrap .audio-play:hover {
  background: var(--rose-500);
  color: white;
}
.audio-card-wrap .audio-play-ico {
  font-size: 0.9rem;
  display: inline-block;
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--rose-500);
  color: white;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.65rem;
  padding-left: 2px;
}
.audio-card-wrap .audio-play:hover .audio-play-ico {
  background: white;
  color: var(--rose-500);
}

/* ---------- Mobile padding latéral ---------- */
@media (max-width: 767px) {
  .elementor-element.pose-section,
  .elementor-element.audios-section,
  .elementor-element.rituel-section {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
  .elementor-element.pose-section > .e-con-inner,
  .elementor-element.audios-section > .e-con-inner,
  .elementor-element.rituel-section > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
}

/* ===== ACU-BLOCK:MEDITATIONS-AUDIO END ===== */


/* ===== ACU-BLOCK:ACTUALITES START ===== */
/* =====================================================================
   PAGE — ACTUALITES (home.php — blog page) + SINGLE POST (index.php fallback)
   ===================================================================== */

/* ---- Single post: article container + figures inline ---- */
.acupoint-theme.single article {
  max-width: 760px;
  margin: 0 auto;
  padding: 32px 24px;
  font-family: var(--sans);
  font-size: 1.04rem;
  line-height: 1.7;
  color: var(--ink-700);
}
.acupoint-theme.single article h1 {
  font-family: var(--serif);
  font-size: clamp(2rem, 4vw, 3.2rem);
  font-weight: 400;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--ink-900);
  margin: 0 0 28px;
}
.acupoint-theme.single article h2 {
  font-family: var(--serif);
  font-size: clamp(1.5rem, 2.6vw, 2rem);
  font-weight: 500;
  margin: 48px 0 16px;
  color: var(--ink-900);
}
.acupoint-theme.single article h3 {
  font-family: var(--serif);
  font-size: 1.3rem;
  font-weight: 500;
  margin: 28px 0 12px;
  color: var(--ink-900);
}
.acupoint-theme.single article p {
  margin: 0 0 16px;
}
.acupoint-theme.single article ul {
  padding-left: 1.5em;
  margin: 0 0 18px;
}
.acupoint-theme.single article a {
  color: var(--rose-500);
  text-decoration: underline;
  text-decoration-color: var(--rose-300);
  text-underline-offset: 3px;
}
.acupoint-theme.single article a:hover {
  color: var(--rose-700);
  text-decoration-color: var(--rose-500);
}
.acupoint-theme.single article strong { color: var(--ink-900); }
.acupoint-theme.single article em { font-style: italic; }
.acupoint-theme.single article blockquote {
  border-left: 3px solid var(--rose-300);
  padding-left: 1.2em;
  margin: 24px 0;
  font-family: var(--serif);
  font-style: italic;
  color: var(--ink-500);
}

/* Inline article figures (with images + caption) — constrain to natural size */
.acupoint-theme.single .article-figure {
  margin: 32px auto !important;
  max-width: 600px;
  text-align: center;
}
.acupoint-theme.single .article-figure img {
  width: 100%;
  height: auto;
  border-radius: 8px;
  box-shadow: var(--shadow-sm);
  /* Don't upscale below natural size */
  max-width: 100%;
}
.acupoint-theme.single .article-figure figcaption {
  font-family: var(--serif);
  font-style: italic;
  font-size: 0.9rem;
  color: var(--ink-500);
  margin-top: 10px;
  line-height: 1.45;
}

/* CTA buttons inside article body */
.acupoint-theme.single article .acu-btn {
  display: inline-flex;
  align-items: center;
  padding: 12px 24px;
  border-radius: var(--r-pill);
  font-family: var(--sans);
  font-weight: 600;
  font-size: 0.95rem;
  text-decoration: none !important;
  margin: 24px 0;
}
.acupoint-theme.single article .acu-btn-primary {
  background: var(--rose-500);
  color: var(--white) !important;
}
.acupoint-theme.single article .acu-btn-primary:hover {
  background: var(--rose-600);
  color: var(--white) !important;
}

/* Tables in articles */
.acupoint-theme.single article table {
  width: 100%;
  margin: 24px 0;
  border-collapse: collapse;
}
.acupoint-theme.single article table th {
  background: var(--rose-50);
  text-align: left;
  padding: 12px;
  border-bottom: 1px solid var(--rose-300);
  font-weight: 600;
}
.acupoint-theme.single article table td {
  padding: 10px 12px;
  border-bottom: 1px solid var(--line-2);
}



.acupoint-theme.actualites-archive .page-hero {
  padding: 80px 24px 60px;
}
.acupoint-theme.actualites-archive .page-hero .container {
  max-width: 1240px;
  margin: 0 auto;
}
.acupoint-theme.actualites-archive .actualites-list-section {
  padding: 0 24px 80px;
}
.acupoint-theme.actualites-archive .actualites-list-section .container {
  max-width: 1240px;
  margin: 0 auto;
}

/* Grid layout */
.acupoint-theme .actualites-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
}
@media (max-width: 980px) {
  .acupoint-theme .actualites-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 620px) {
  .acupoint-theme .actualites-grid { grid-template-columns: 1fr; }
}

/* Card */
.acupoint-theme .actualite-card {
  background: var(--white);
  border: 1px solid var(--line-2);
  border-radius: var(--r-md);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform 0.3s, box-shadow 0.3s;
}
.acupoint-theme .actualite-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}

.acupoint-theme .actualite-img {
  display: block;
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
  background: var(--sand-200);
}
.acupoint-theme .actualite-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.6s;
  display: block;
}
.acupoint-theme .actualite-card:hover .actualite-img img {
  transform: scale(1.05);
}
.acupoint-theme .actualite-img .ph {
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, var(--rose-100), var(--sand-200));
  color: var(--rose-500);
  font-family: var(--serif);
  font-style: italic;
  text-align: center;
  padding: 20px;
}

.acupoint-theme .actualite-body {
  padding: 24px 26px 28px;
  display: flex;
  flex-direction: column;
  gap: 10px;
  flex: 1;
}
.acupoint-theme .actualite-date {
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--rose-500);
  font-family: var(--sans);
  font-weight: 600;
}
.acupoint-theme .actualite-title {
  margin: 0;
  font-family: var(--serif);
  font-weight: 500;
  font-size: 1.25rem;
  line-height: 1.3;
  color: var(--ink-900);
}
.acupoint-theme .actualite-title a {
  color: inherit;
  text-decoration: none;
  transition: color 0.2s;
}
.acupoint-theme .actualite-title a:hover {
  color: var(--rose-500);
}
.acupoint-theme .actualite-excerpt {
  margin: 0;
  color: var(--ink-700);
  font-size: 0.94rem;
  line-height: 1.55;
  flex: 1;
}
.acupoint-theme .actualite-link {
  display: inline-block;
  margin-top: 6px;
  color: var(--rose-500);
  font-family: var(--sans);
  font-weight: 600;
  font-size: 0.9rem;
  text-decoration: none;
  border-bottom: 1px solid var(--rose-300);
  align-self: flex-start;
}
.acupoint-theme .actualite-link:hover {
  color: var(--rose-600);
  border-bottom-color: var(--rose-500);
}

/* Pagination */
.acupoint-theme .actualites-pagination {
  margin-top: 48px;
  display: flex;
  justify-content: center;
}
.acupoint-theme .actualites-pagination .nav-links {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}
.acupoint-theme .actualites-pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 12px;
  border-radius: var(--r-pill);
  background: var(--white);
  border: 1px solid var(--line-2);
  color: var(--ink-700);
  font-family: var(--sans);
  font-weight: 500;
  font-size: 0.9rem;
  text-decoration: none;
  transition: all 0.2s;
}
.acupoint-theme .actualites-pagination .page-numbers:hover,
.acupoint-theme .actualites-pagination .page-numbers.current {
  background: var(--rose-500);
  color: white;
  border-color: var(--rose-500);
}

/* ===== ACU-BLOCK:ACTUALITES END ===== */


/* ===== ACU-BLOCK:FAQ-PAGE START ===== */
/* =====================================================================
   PAGE — FAQ
   ===================================================================== */

.elementor-element.faq-section > .e-con-inner,
.elementor-element.cta-band-wrap > .e-con-inner {
  padding-top: 0 !important;
  padding-bottom: 0 !important;
}

.elementor-element.faq-section { background: var(--sand-50); }

/* Hide the JSON-LD schema container completely */
.elementor-element.faq-schema,
.elementor-element.faq-schema .elementor-widget-container {
  display: none !important;
}

/* ---------- FAQ content ---------- */
.faq-content .faq-wrap {
  display: flex;
  flex-direction: column;
  gap: 48px;
}
.faq-content .faq-cat-title {
  font-family: var(--serif);
  font-size: clamp(1.4rem, 2.4vw, 1.8rem);
  font-weight: 500;
  color: var(--ink-900);
  margin: 0 0 18px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
  letter-spacing: -0.01em;
}

/* Accordion item via native <details>/<summary> */
.faq-content .faq-item {
  background: var(--white);
  border: 1px solid var(--line-2);
  border-radius: var(--r-md);
  margin-bottom: 12px;
  overflow: hidden;
  transition: border-color 0.25s, box-shadow 0.25s;
}
.faq-content .faq-item:hover {
  border-color: var(--rose-300);
}
.faq-content .faq-item[open] {
  border-color: var(--rose-400);
  box-shadow: var(--shadow-sm);
}

.faq-content .faq-q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 20px 24px;
  cursor: pointer;
  list-style: none;
  font-family: var(--serif);
  font-size: 1.08rem;
  font-weight: 500;
  color: var(--ink-900);
  line-height: 1.4;
  user-select: none;
  transition: color 0.2s;
}
.faq-content .faq-q::-webkit-details-marker { display: none; }
.faq-content .faq-q::marker { content: ""; }
.faq-content .faq-q:hover { color: var(--rose-600); }

.faq-content .faq-q-text { flex: 1; }
.faq-content .faq-q-icon {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--rose-50);
  color: var(--rose-500);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--sans);
  font-size: 1.15rem;
  font-weight: 400;
  line-height: 1;
  transition: transform 0.3s ease, background 0.2s, color 0.2s;
}
.faq-content .faq-item[open] .faq-q-icon {
  transform: rotate(45deg);
  background: var(--rose-500);
  color: var(--white);
}

.faq-content .faq-a {
  padding: 0 24px 22px;
  color: var(--ink-700);
  font-size: 0.96rem;
  line-height: 1.65;
  border-top: 1px solid var(--line-2);
  padding-top: 18px;
  margin-top: 0;
}
.faq-content .faq-a a {
  color: var(--rose-600);
  text-decoration: underline;
  text-decoration-color: var(--rose-300);
  text-underline-offset: 3px;
}
.faq-content .faq-a a:hover {
  color: var(--rose-700);
  text-decoration-color: var(--rose-500);
}
.faq-content .faq-a strong {
  color: var(--ink-900);
  font-weight: 600;
}

/* Smooth open animation (limited support — degrades gracefully) */
@supports (interpolate-size: allow-keywords) {
  .faq-content .faq-item::details-content {
    block-size: 0;
    overflow: hidden;
    transition: block-size 0.35s ease, content-visibility 0.35s allow-discrete;
  }
  .faq-content .faq-item[open]::details-content {
    block-size: auto;
  }
}

/* ---------- Mobile padding ---------- */
@media (max-width: 767px) {
  .elementor-element.faq-section,
  .elementor-element.cta-band-wrap {
    padding-left: 24px !important;
    padding-right: 24px !important;
  }
  .elementor-element.faq-section > .e-con-inner,
  .elementor-element.cta-band-wrap > .e-con-inner {
    padding-left: 0 !important;
    padding-right: 0 !important;
  }
  .faq-content .faq-q { padding: 18px 18px; font-size: 1rem; }
  .faq-content .faq-a { padding: 16px 18px 20px; font-size: 0.94rem; }
}

/* ===== ACU-BLOCK:FAQ-PAGE END ===== */
