/* ========================================================================== 
   PAGES PUBLIQUES INTÉRIEURES — Boost Academy GN
   Étape 2 : À propos, Services, Profils, Témoignages, Partenaires, Contact, FAQ.
   Toutes les règles sont mobiles-first et isolées sous .public-inner-page.
   ========================================================================== */

.public-inner-page {
  --inner-panel: rgba(255, 255, 255, 0.92);
  --inner-border: rgba(6, 40, 95, 0.1);
  --inner-copy-width: 680px;
}

.public-page-shell {
  min-width: 0;
  overflow: clip;
}

.js .public-page-shell [data-hero-sequence] .hero-sequence-item,
.js .public-page-shell .inner-hero-visual {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity 0.68s ease, transform 0.68s cubic-bezier(.2, .75, .25, 1);
}

.js .public-page-shell [data-hero-sequence] .hero-sequence-item:nth-child(2) { transition-delay: 90ms; }
.js .public-page-shell [data-hero-sequence] .hero-sequence-item:nth-child(3) { transition-delay: 160ms; }
.js .public-page-shell [data-hero-sequence] .hero-sequence-item:nth-child(4) { transition-delay: 230ms; }
.js .public-page-shell.is-ready [data-hero-sequence] .hero-sequence-item,
.js .public-page-shell.is-ready .inner-hero-visual {
  opacity: 1;
  transform: none;
}

/* -------------------- Hero commun -------------------- */
.inner-hero {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  background:
    linear-gradient(118deg, rgba(3, 26, 64, .995) 0%, rgba(6, 40, 95, .985) 57%, rgba(10, 62, 137, .96) 100%);
  color: #fff;
}

.inner-hero::before {
  position: absolute;
  inset: 0;
  z-index: -2;
  background-image:
    linear-gradient(rgba(255,255,255,.026) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255,255,255,.026) 1px, transparent 1px);
  background-size: 56px 56px;
  content: "";
  mask-image: linear-gradient(90deg, rgba(0,0,0,.68), transparent 88%);
}

.inner-hero::after {
  position: absolute;
  right: -9%;
  bottom: -40%;
  z-index: -1;
  width: min(62vw, 820px);
  aspect-ratio: 1;
  border: 1px solid rgba(255, 188, 50, .18);
  border-radius: 50%;
  box-shadow: 0 0 0 60px rgba(255, 188, 50, .025), 0 0 0 140px rgba(255, 255, 255, .018);
  content: "";
}

.inner-hero-grid {
  display: grid;
  min-height: clamp(520px, 72vh, 740px);
  align-items: center;
  gap: clamp(36px, 6vw, 88px);
  padding-block: clamp(76px, 9vw, 132px);
}

.inner-hero-copy,
.inner-hero-visual {
  min-width: 0;
}

.inner-hero-copy {
  max-width: var(--inner-copy-width);
}

.inner-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 22px;
  padding: 7px 12px;
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: 999px;
  background: rgba(255, 255, 255, .08);
  color: rgba(255,255,255,.88);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.inner-eyebrow i { color: var(--ba-gold-300); font-size: .98rem; }

.inner-hero h1 {
  max-width: 100%;
  margin: 0;
  color: #fff;
  font-family: "DM Serif Display", Georgia, serif;
  font-size: clamp(2.35rem, 6.8vw, 5.15rem);
  font-weight: 400;
  line-height: .99;
  letter-spacing: -.035em;
  text-wrap: balance;
  overflow-wrap: break-word;
}

.inner-hero-lead {
  max-width: 650px;
  margin: 26px 0 0;
  color: rgba(255,255,255,.76);
  font-size: clamp(1rem, 2.4vw, 1.18rem);
  line-height: 1.72;
}

.inner-hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 32px;
}

.premium-button-light,
.premium-button-ghost {
  border: 1px solid rgba(255,255,255,.2);
  color: #fff;
}

.premium-button-light { background: rgba(255,255,255,.09); }
.premium-button-light:hover,
.premium-button-light:focus { background: #fff; color: var(--ba-navy-900); }
.premium-button-ghost { background: transparent; }
.premium-button-ghost:hover,
.premium-button-ghost:focus { background: rgba(255,255,255,.1); color: #fff; }
.premium-button-compact { min-height: 46px; padding: 11px 17px; }

.inner-hero-visual {
  display: grid;
  min-height: 360px;
  place-items: center;
}

.inner-hero-orb {
  position: absolute;
  z-index: -1;
  border-radius: 50%;
  filter: blur(1px);
  pointer-events: none;
}
.inner-hero-orb-one { top: 13%; left: -7%; width: 240px; height: 240px; background: rgba(246,168,0,.08); }
.inner-hero-orb-two { right: 17%; bottom: 5%; width: 180px; height: 180px; background: rgba(255,255,255,.035); }

/* -------------------- Sections et titres communs -------------------- */
.public-section { position: relative; padding-block: clamp(72px, 9vw, 128px); }
.public-section-light { background: rgba(250, 251, 254, .88); }
.public-section-warm { background: linear-gradient(180deg, #fffaf0, #fffdf8); }
.public-section-values { background: linear-gradient(180deg, #f4f7fc, #fbfcfe); }
.public-section-dark {
  overflow: hidden;
  background:
    radial-gradient(circle at 10% 20%, rgba(246,168,0,.12), transparent 28rem),
    linear-gradient(128deg, #031a40, #06285f 62%, #0b397d);
  color: rgba(255,255,255,.76);
}
.public-section-dark h2,
.public-section-dark h3 { color: #fff; }
.section-heading-light h2 { color: #fff; }
.section-heading-light p { color: rgba(255,255,255,.7); }

.public-final-banner {
  padding-block: clamp(64px, 8vw, 104px);
  background: #041d47;
  color: #fff;
}
.public-final-banner-inner {
  display: grid;
  align-items: center;
  gap: 30px;
}
.public-final-banner h2 {
  max-width: 850px;
  margin: 8px 0 0;
  color: #fff;
  font-family: "DM Serif Display", Georgia, serif;
  font-size: clamp(2rem, 4vw, 3.65rem);
  font-weight: 400;
  line-height: 1.06;
  letter-spacing: -.025em;
}
.public-final-banner-actions { display: flex; flex-wrap: wrap; gap: 12px; }

.public-proof-strip {
  position: relative;
  z-index: 2;
  border-bottom: 1px solid var(--inner-border);
  background: #fff;
}
.public-proof-grid { display: grid; }
.public-proof-item {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
  min-width: 0;
  padding-block: 22px;
}
.public-proof-icon {
  display: grid;
  width: 46px;
  height: 46px;
  place-items: center;
  border-radius: 15px;
  background: var(--ba-blue-100);
  color: var(--ba-navy-900);
  font-size: 1.25rem;
}
.public-proof-item strong { display: block; color: var(--ba-ink); font-size: .95rem; }
.public-proof-item p { margin: 3px 0 0; color: var(--ba-muted); font-size: .82rem; line-height: 1.45; }

.public-empty-state {
  display: grid;
  max-width: 760px;
  justify-items: center;
  margin-inline: auto;
  padding: clamp(42px, 7vw, 76px) clamp(22px, 5vw, 58px);
  border: 1px solid var(--inner-border);
  border-radius: var(--ba-radius-lg);
  background: #fff;
  box-shadow: var(--ba-shadow-sm);
  text-align: center;
}
.public-empty-icon { display: grid; width: 76px; height: 76px; place-items: center; margin-bottom: 20px; border-radius: 24px; background: var(--ba-blue-100); color: var(--ba-navy-900); font-size: 2rem; }
.public-empty-state h2 { margin: 0; color: var(--ba-ink); font-size: clamp(1.5rem, 3vw, 2.15rem); }
.public-empty-state p { max-width: 600px; margin: 12px 0 24px; color: var(--ba-muted); line-height: 1.7; }

.public-back-link,
.text-action-link {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  color: var(--ba-navy-800);
  font-weight: 800;
  text-decoration: none;
}
.public-back-link { margin-bottom: 28px; }
.public-back-link:hover,
.text-action-link:hover { color: var(--ba-gold-600); text-decoration: none; }

/* -------------------- À propos -------------------- */
.about-vision-stage {
  position: relative;
  width: min(90vw, 520px);
  aspect-ratio: 1;
}
.about-vision-map {
  position: absolute;
  inset: 7%;
  opacity: .17;
  background: var(--ba-map-watermark) center / contain no-repeat;
  filter: brightness(0) invert(1);
}
.about-vision-core,
.about-vision-node {
  position: absolute;
  display: grid;
  place-items: center;
  border: 1px solid rgba(255,255,255,.2);
  background: rgba(255,255,255,.11);
  box-shadow: 0 20px 54px rgba(0,0,0,.2);
  backdrop-filter: blur(12px);
}
.about-vision-core {
  top: 50%; left: 50%;
  width: 170px; height: 170px;
  border-radius: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
}
.about-vision-core-icon { display: grid; width: 58px; height: 58px; place-items: center; border-radius: 20px; background: var(--ba-gold-400); color: var(--ba-navy-950); font-size: 1.65rem; }
.about-vision-core strong { align-self: end; color: #fff; font-size: 1.12rem; }
.about-vision-core small { align-self: start; color: rgba(255,255,255,.65); }
.about-vision-node { grid-template-columns: 38px auto; gap: 9px; padding: 11px 15px; border-radius: 16px; color: #fff; font-size: .82rem; font-weight: 700; }
.about-vision-node i { color: var(--ba-gold-300); font-size: 1.15rem; }
.about-vision-node-family { top: 4%; left: 8%; }
.about-vision-node-teacher { top: 18%; right: 0; }
.about-vision-node-learning { right: 10%; bottom: 4%; }
.about-vision-line { position: absolute; width: 1px; height: 110px; background: linear-gradient(transparent, rgba(255,188,50,.55), transparent); transform-origin: bottom; }
.about-vision-line-one { top: 23%; left: 37%; transform: rotate(-35deg); }
.about-vision-line-two { top: 26%; right: 31%; transform: rotate(38deg); }
.about-vision-line-three { right: 32%; bottom: 23%; transform: rotate(-26deg); }

.mission-layout { display: grid; gap: clamp(44px, 7vw, 96px); align-items: start; }
.mission-copy h2,
.commitments-intro h2,
.contact-panel-heading h2 {
  margin: 10px 0 22px;
  color: var(--ba-ink);
  font-family: "DM Serif Display", Georgia, serif;
  font-size: clamp(2.1rem, 4.3vw, 3.8rem);
  font-weight: 400;
  line-height: 1.08;
  letter-spacing: -.028em;
}
.mission-copy p { color: var(--ba-copy); font-size: 1rem; line-height: 1.85; }
.mission-principles { display: grid; gap: 14px; }
.mission-principle {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr);
  gap: 18px;
  padding: 22px;
  border: 1px solid var(--inner-border);
  border-radius: 20px;
  background: #fff;
  box-shadow: 0 10px 28px rgba(6,40,95,.045);
}
.mission-principle > span { color: var(--ba-gold-600); font-family: "DM Serif Display", Georgia, serif; font-size: 1.7rem; }
.mission-principle h3 { margin: 0; color: var(--ba-ink); font-size: 1.02rem; }
.mission-principle p { margin: 7px 0 0; color: var(--ba-muted); font-size: .88rem; line-height: 1.6; }

.values-grid { display: grid; gap: 18px; margin-top: 44px; }
.value-card { position: relative; min-width: 0; overflow: hidden; padding: clamp(26px, 4vw, 38px); border: 1px solid var(--inner-border); border-radius: 26px; background: #fff; box-shadow: var(--ba-shadow-sm); transition: transform .25s ease, box-shadow .25s ease; }
.value-card:hover { transform: translateY(-5px); box-shadow: var(--ba-shadow-md); }
.value-card-index { position: absolute; top: 20px; right: 22px; color: rgba(6,40,95,.15); font-family: "DM Serif Display", Georgia, serif; font-size: 2.4rem; }
.value-card-icon { display: grid; width: 58px; height: 58px; place-items: center; margin-bottom: 30px; border-radius: 18px; font-size: 1.55rem; }
.value-card h3 { margin: 0 0 10px; color: var(--ba-ink); font-size: 1.35rem; }
.value-card p { margin: 0; color: var(--ba-muted); line-height: 1.7; }
.value-card-navy .value-card-icon { background: var(--ba-blue-100); color: var(--ba-navy-900); }
.value-card-gold .value-card-icon { background: var(--ba-gold-100); color: #a96300; }
.value-card-green .value-card-icon { background: var(--ba-green-100); color: var(--ba-green-700); }

.commitments-layout { display: grid; gap: 46px; }
.commitments-intro h2 { color: #fff; }
.commitments-intro p { max-width: 650px; color: rgba(255,255,255,.7); line-height: 1.75; }
.commitments-grid { display: grid; gap: 1px; overflow: hidden; border: 1px solid rgba(255,255,255,.12); border-radius: 24px; background: rgba(255,255,255,.12); }
.commitment-item { padding: 26px; background: rgba(3,26,64,.72); }
.commitment-item i { color: var(--ba-gold-300); font-size: 1.65rem; }
.commitment-item h3 { margin: 20px 0 8px; font-size: 1.05rem; }
.commitment-item p { margin: 0; color: rgba(255,255,255,.65); font-size: .88rem; line-height: 1.62; }

.public-section-founder { background: #fff; }
.founder-card { display: grid; gap: 30px; align-items: center; padding: clamp(28px, 6vw, 68px); border: 1px solid var(--inner-border); border-radius: 30px; background: linear-gradient(135deg, #fff, #f7f9fd); box-shadow: var(--ba-shadow-md); }
.founder-monogram { display: grid; width: min(62vw, 220px); aspect-ratio: 1; place-items: center; justify-self: center; border-radius: 50%; background: linear-gradient(145deg, var(--ba-navy-900), var(--ba-blue-700)); box-shadow: inset 0 0 0 10px rgba(255,255,255,.08), var(--ba-shadow-lg); color: #fff; }
.founder-monogram span { align-self: end; font-family: "DM Serif Display", Georgia, serif; font-size: 3.25rem; }
.founder-monogram small { align-self: start; color: var(--ba-gold-300); font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.founder-copy h2 { margin: 9px 0 18px; color: var(--ba-ink); font-family: "DM Serif Display", Georgia, serif; font-size: clamp(2rem, 4vw, 3.4rem); font-weight: 400; line-height: 1.08; }
.founder-copy p { color: var(--ba-copy); line-height: 1.8; }
.founder-copy blockquote { margin: 24px 0 0; padding-left: 20px; border-left: 3px solid var(--ba-gold-500); color: var(--ba-navy-800); font-weight: 650; line-height: 1.7; }

/* -------------------- Services -------------------- */
.services-hero-stack { position: relative; width: min(92vw, 540px); aspect-ratio: 1.05; }
.services-hero-card { position: absolute; display: grid; grid-template-columns: 54px minmax(0, 1fr); align-items: center; gap: 14px; width: min(78%, 350px); padding: 16px; border: 1px solid rgba(255,255,255,.16); border-radius: 20px; background: rgba(255,255,255,.1); box-shadow: 0 24px 50px rgba(0,0,0,.2); backdrop-filter: blur(12px); }
.services-hero-card > span { display: grid; width: 54px; height: 54px; place-items: center; border-radius: 17px; background: rgba(255,188,50,.16); color: var(--ba-gold-300); font-size: 1.4rem; }
.services-hero-card strong { display: block; color: #fff; }
.services-hero-card small { color: rgba(255,255,255,.65); }
.services-hero-card-one { top: 3%; left: 2%; }
.services-hero-card-two { top: 35%; right: 0; }
.services-hero-card-three { bottom: 3%; left: 6%; }
.services-hero-center { position: absolute; top: 50%; left: 45%; display: grid; width: 140px; height: 140px; place-items: center; border-radius: 50%; background: var(--ba-gold-400); color: var(--ba-navy-950); transform: translate(-50%, -50%); text-align: center; box-shadow: 0 20px 45px rgba(246,168,0,.25); }
.services-hero-center i { align-self: end; font-size: 1.65rem; }
.services-hero-center strong { font-size: .92rem; }
.services-hero-center small { align-self: start; font-size: .7rem; }

.service-index-section { position: relative; z-index: 2; margin-top: -28px; }
.service-index-grid { display: grid; gap: 12px; }
.service-index-card { display: grid; grid-template-columns: 42px minmax(0, 1fr) 26px; align-items: center; gap: 14px; min-width: 0; padding: 20px; border: 1px solid var(--inner-border); border-radius: 19px; background: #fff; box-shadow: var(--ba-shadow-md); color: var(--ba-ink); text-decoration: none; transition: transform .22s ease, border-color .22s ease; }
.service-index-card:hover { color: var(--ba-ink); text-decoration: none; transform: translateY(-4px); border-color: rgba(246,168,0,.48); }
.service-index-card > span { color: var(--ba-gold-600); font-family: "DM Serif Display", Georgia, serif; font-size: 1.5rem; }
.service-index-card strong { display: block; font-size: .95rem; }
.service-index-card small { display: block; margin-top: 3px; color: var(--ba-muted); font-size: .76rem; }
.service-index-card > i { color: var(--ba-navy-800); }

.service-feature-grid { display: grid; gap: clamp(44px, 7vw, 96px); align-items: center; }
.service-feature-copy { min-width: 0; }
.service-feature-number { display: block; margin-bottom: 9px; color: rgba(6,40,95,.12); font-family: "DM Serif Display", Georgia, serif; font-size: 4.4rem; line-height: .8; }
.service-feature-copy h2 { margin: 10px 0 20px; color: var(--ba-ink); font-family: "DM Serif Display", Georgia, serif; font-size: clamp(2.15rem, 4.2vw, 3.75rem); font-weight: 400; line-height: 1.05; letter-spacing: -.028em; }
.service-feature-copy > p { color: var(--ba-copy); line-height: 1.8; }
.feature-check-list { display: grid; gap: 13px; margin: 24px 0 30px; padding: 0; list-style: none; }
.feature-check-list li { display: grid; grid-template-columns: 28px minmax(0, 1fr); align-items: start; gap: 11px; color: var(--ba-copy); line-height: 1.6; }
.feature-check-list i { display: grid; width: 26px; height: 26px; place-items: center; border-radius: 50%; background: var(--ba-green-100); color: var(--ba-green-700); font-size: .9rem; }

.service-feature-visual { min-width: 0; }
.service-visual-board { position: relative; width: min(100%, 560px); aspect-ratio: 1.08; margin-inline: auto; overflow: hidden; border-radius: 30px; box-shadow: var(--ba-shadow-lg); }
.service-visual-blue { background: linear-gradient(145deg, #e9f2ff, #f9fbff); }
.service-visual-gold { background: linear-gradient(145deg, #fff1cc, #fffaf0); }
.service-visual-purple { background: linear-gradient(145deg, #eee8ff, #fbf9ff); }
.service-visual-main { position: absolute; top: 18%; left: 50%; display: grid; width: 48%; aspect-ratio: 1; place-items: center; border-radius: 50%; background: var(--ba-navy-900); color: #fff; transform: translateX(-50%); text-align: center; box-shadow: 0 25px 55px rgba(6,40,95,.22); }
.service-visual-main i { align-self: end; color: var(--ba-gold-300); font-size: 2.5rem; }
.service-visual-main strong { font-size: 1rem; }
.service-visual-main small { align-self: start; color: rgba(255,255,255,.65); }
.service-visual-chip { position: absolute; display: flex; align-items: center; gap: 8px; padding: 11px 14px; border: 1px solid rgba(6,40,95,.1); border-radius: 999px; background: #fff; box-shadow: var(--ba-shadow-sm); color: var(--ba-navy-800); font-size: .77rem; font-weight: 750; }
.service-chip-one { top: 11%; left: 5%; }
.service-chip-two { top: 30%; right: 3%; }
.service-chip-three { bottom: 22%; left: 7%; }
.service-visual-progress { position: absolute; right: 10%; bottom: 12%; left: 10%; display: grid; grid-template-columns: repeat(4, 1fr); gap: 7px; }
.service-visual-progress span { height: 8px; border-radius: 999px; background: rgba(6,40,95,.12); }
.service-visual-progress span:nth-child(-n+3) { background: var(--ba-blue-700); }

.exam-calendar { position: absolute; top: 12%; left: 10%; display: grid; width: 52%; aspect-ratio: 1.3; place-items: center; border-radius: 26px; background: #fff; box-shadow: var(--ba-shadow-md); color: var(--ba-ink); }
.exam-calendar span { align-self: end; color: var(--ba-muted); font-size: .72rem; text-transform: uppercase; letter-spacing: .12em; }
.exam-calendar strong { font-family: "DM Serif Display", Georgia, serif; font-size: 1.75rem; }
.exam-calendar i { align-self: start; color: var(--ba-green-700); font-size: 1.6rem; }
.exam-track { position: absolute; right: 7%; bottom: 10%; left: 7%; display: grid; grid-template-columns: repeat(4, 1fr); gap: 5px; }
.exam-track span { position: relative; padding-top: 20px; color: var(--ba-muted); font-size: .65rem; text-align: center; }
.exam-track span::before { position: absolute; top: 0; left: 50%; width: 12px; height: 12px; border: 3px solid #fff; border-radius: 50%; background: #cdd4df; box-shadow: 0 0 0 1px #cdd4df; content: ""; transform: translateX(-50%); }
.exam-track::before { position: absolute; top: 6px; right: 12%; left: 12%; height: 2px; background: #d7dce5; content: ""; }
.exam-track .is-done::before { background: var(--ba-gold-500); box-shadow: 0 0 0 1px var(--ba-gold-500); }
.exam-note { position: absolute; top: 24%; right: 6%; display: grid; grid-template-columns: 38px 1fr; align-items: center; gap: 10px; width: 43%; padding: 14px; border-radius: 18px; background: var(--ba-navy-900); color: #fff; box-shadow: var(--ba-shadow-md); }
.exam-note i { color: var(--ba-gold-300); font-size: 1.35rem; }
.exam-note strong { display: block; font-size: .75rem; }
.exam-note small { color: rgba(255,255,255,.65); font-size: .62rem; }

.training-screen { position: absolute; top: 15%; right: 11%; left: 11%; display: grid; min-height: 48%; place-items: center; padding: 30px; border-radius: 24px; background: var(--ba-navy-900); box-shadow: var(--ba-shadow-lg); color: #fff; text-align: center; }
.training-screen-bar { position: absolute; top: 14px; left: 16px; display: flex; gap: 5px; }
.training-screen-bar span { width: 7px; height: 7px; border-radius: 50%; background: rgba(255,255,255,.3); }
.training-screen i { align-self: end; color: var(--ba-gold-300); font-size: 2.4rem; }
.training-screen strong { align-self: start; }
.training-skill { position: absolute; display: grid; grid-template-columns: 36px auto; align-items: center; gap: 9px; padding: 10px 13px; border-radius: 14px; background: #fff; box-shadow: var(--ba-shadow-sm); color: var(--ba-purple-700); font-size: .75rem; font-weight: 800; }
.training-skill i { font-size: 1rem; }
.training-skill-one { bottom: 11%; left: 6%; }
.training-skill-two { right: 8%; bottom: 20%; }
.training-skill-three { top: 8%; left: 2%; }

.service-method-grid { display: grid; gap: 14px; margin: 46px 0 0; padding: 0; list-style: none; counter-reset: service-method; }
.service-method-step { position: relative; min-width: 0; padding: 28px; border: 1px solid rgba(255,255,255,.12); border-radius: 22px; background: rgba(255,255,255,.06); }
.service-method-step > span { position: absolute; top: 18px; right: 20px; color: rgba(255,255,255,.14); font-family: "DM Serif Display", Georgia, serif; font-size: 2.8rem; }
.service-method-step > i { color: var(--ba-gold-300); font-size: 1.55rem; }
.service-method-step h3 { margin: 22px 0 9px; font-size: 1rem; }
.service-method-step p { margin: 0; color: rgba(255,255,255,.64); font-size: .84rem; line-height: 1.65; }

/* -------------------- Annuaire et profil -------------------- */
.directory-hero-visual { position: relative; width: min(92vw, 520px); aspect-ratio: 1.05; }
.directory-profile { position: absolute; display: grid; grid-template-columns: 50px minmax(0, 1fr); align-items: center; gap: 12px; width: min(72%, 310px); padding: 13px; border: 1px solid rgba(255,255,255,.16); border-radius: 18px; background: rgba(255,255,255,.1); box-shadow: 0 18px 42px rgba(0,0,0,.18); }
.directory-profile > span { display: grid; width: 50px; height: 50px; place-items: center; border-radius: 16px; background: rgba(255,188,50,.18); color: var(--ba-gold-300); font-size: 1.3rem; }
.directory-profile strong { display: block; color: #fff; font-size: .88rem; }
.directory-profile small { color: rgba(255,255,255,.64); font-size: .7rem; }
.directory-profile-one { top: 5%; left: 2%; }
.directory-profile-two { top: 38%; right: 0; }
.directory-profile-three { bottom: 2%; left: 7%; }
.directory-verified { position: absolute; top: 50%; left: 47%; display: grid; width: 128px; height: 128px; place-items: center; border-radius: 50%; background: var(--ba-gold-400); color: var(--ba-navy-950); transform: translate(-50%, -50%); box-shadow: 0 20px 45px rgba(246,168,0,.25); font-size: .76rem; font-weight: 850; text-align: center; }
.directory-verified i { align-self: end; font-size: 1.8rem; }
.directory-verified span { align-self: start; }

.directory-toolbar { display: grid; gap: 24px; align-items: end; margin-bottom: 38px; }
.directory-toolbar h2 { margin: 8px 0 0; color: var(--ba-ink); font-family: "DM Serif Display", Georgia, serif; font-size: clamp(2rem, 4vw, 3.25rem); font-weight: 400; }
.directory-filter { min-width: 0; }
.directory-filter label { display: block; margin-bottom: 7px; color: var(--ba-ink); font-size: .8rem; font-weight: 800; }
.directory-filter-controls { display: grid; gap: 9px; }
.directory-filter .form-select { min-height: 46px; border-color: rgba(6,40,95,.14); border-radius: 13px; background-color: #fff; }

.teacher-directory-grid { display: grid; gap: 18px; }
.teacher-profile-card { display: flex; min-width: 0; flex-direction: column; padding: clamp(21px, 3vw, 28px); border: 1px solid var(--inner-border); border-radius: 24px; background: #fff; box-shadow: 0 12px 34px rgba(6,40,95,.06); transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
.teacher-profile-card:hover { transform: translateY(-5px); border-color: rgba(20,86,200,.25); box-shadow: var(--ba-shadow-md); }
.teacher-card-header { display: grid; grid-template-columns: 76px minmax(0, 1fr); align-items: center; gap: 15px; }
.teacher-card-photo { display: grid; width: 76px; height: 76px; place-items: center; overflow: hidden; padding: 0; border: 0; border-radius: 22px; background: var(--ba-blue-100); }
.teacher-card-photo img { width: 100%; height: 100%; object-fit: cover; }
.teacher-card-photo-placeholder { color: var(--ba-navy-800); font-size: 2rem; }
.teacher-card-identity { min-width: 0; }
.teacher-card-identity h3 { margin: 8px 0 4px; overflow-wrap: anywhere; color: var(--ba-ink); font-size: 1.12rem; }
.teacher-card-identity p { display: flex; align-items: center; gap: 5px; margin: 0; color: var(--ba-muted); font-size: .76rem; }
.teacher-type-pill { display: inline-flex; max-width: 100%; align-items: center; gap: 6px; padding: 5px 9px; border-radius: 999px; font-size: .64rem; font-weight: 850; line-height: 1.2; }
.teacher-type-pill-school { background: var(--ba-blue-100); color: var(--ba-navy-800); }
.teacher-type-pill-training { background: var(--ba-purple-100); color: var(--ba-purple-700); }
.teacher-card-bio { flex: 1; margin: 20px 0; color: var(--ba-copy); font-size: .86rem; line-height: 1.7; }
.teacher-card-facts { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }
.teacher-card-facts span { display: inline-flex; align-items: center; gap: 6px; padding: 7px 9px; border-radius: 10px; background: #f5f7fb; color: var(--ba-copy); font-size: .71rem; }
.teacher-card-facts i { color: var(--ba-gold-600); }
.teacher-card-specialties { padding-top: 18px; border-top: 1px solid var(--ba-line); }
.teacher-card-specialties h4 { margin: 0 0 10px; color: var(--ba-ink); font-size: .76rem; text-transform: uppercase; letter-spacing: .06em; }
.teacher-specialty-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.teacher-specialty-tags span { max-width: 100%; padding: 6px 8px; border-radius: 8px; background: var(--ba-page); color: var(--ba-copy); font-size: .67rem; overflow-wrap: anywhere; }
.teacher-card-modes { display: flex; flex-wrap: wrap; gap: 7px; min-height: 31px; margin: 18px 0; }
.teacher-card-modes span { display: inline-flex; align-items: center; gap: 5px; color: var(--ba-muted); font-size: .7rem; }
.teacher-card-modes i { color: var(--ba-navy-800); }
.teacher-card-link { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: auto; padding-top: 16px; border-top: 1px solid var(--ba-line); color: var(--ba-navy-800); font-size: .82rem; font-weight: 850; text-decoration: none; }
.teacher-card-link:hover { color: var(--ba-gold-600); text-decoration: none; }

.public-pagination { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 10px; margin-top: 42px; }
.public-page-button { display: inline-flex; width: fit-content; align-items: center; gap: 8px; padding: 10px 13px; border: 1px solid var(--inner-border); border-radius: 12px; background: #fff; color: var(--ba-navy-800); font-weight: 800; text-decoration: none; }
.public-page-button:last-child { justify-self: end; }
.public-page-position { color: var(--ba-muted); font-size: .77rem; text-align: center; }

.teacher-detail-section { padding-top: clamp(40px, 6vw, 78px); }
.teacher-detail-layout { display: grid; gap: 24px; align-items: start; }
.teacher-detail-sidebar { min-width: 0; }
.teacher-detail-profile-card { padding: clamp(24px, 4vw, 34px); border: 1px solid var(--inner-border); border-radius: 28px; background: #fff; box-shadow: var(--ba-shadow-md); text-align: center; }
.teacher-detail-photo-wrap { position: relative; width: 164px; margin: 0 auto 21px; }
.teacher-detail-photo { display: grid; width: 164px; height: 164px; place-items: center; overflow: hidden; padding: 0; border: 8px solid #f2f5fa; border-radius: 50%; background: var(--ba-blue-100); }
.teacher-detail-photo img { width: 100%; height: 100%; object-fit: cover; }
.teacher-detail-photo-placeholder { color: var(--ba-navy-800); font-size: 4rem; }
.teacher-verified-mark { position: absolute; right: 5px; bottom: 8px; display: grid; width: 40px; height: 40px; place-items: center; border: 4px solid #fff; border-radius: 50%; background: var(--ba-green-100); color: var(--ba-green-700); font-size: 1.2rem; }
.teacher-detail-profile-card h1 { margin: 12px 0 7px; color: var(--ba-ink); font-family: "DM Serif Display", Georgia, serif; font-size: 2.05rem; font-weight: 400; line-height: 1.08; overflow-wrap: anywhere; }
.teacher-detail-location { display: flex; align-items: flex-start; justify-content: center; gap: 6px; color: var(--ba-muted); font-size: .82rem; }
.teacher-detail-keyfacts { display: grid; gap: 8px; margin: 25px 0; text-align: left; }
.teacher-detail-keyfacts > div { display: grid; grid-template-columns: 35px minmax(0, 1fr); align-items: center; column-gap: 10px; padding: 12px; border-radius: 14px; background: #f6f8fc; }
.teacher-detail-keyfacts i { grid-row: 1 / span 2; color: var(--ba-gold-600); font-size: 1.15rem; }
.teacher-detail-keyfacts span { color: var(--ba-muted); font-size: .68rem; }
.teacher-detail-keyfacts strong { min-width: 0; overflow-wrap: anywhere; color: var(--ba-ink); font-size: .79rem; }
.teacher-detail-modes { margin-bottom: 22px; text-align: left; }
.teacher-detail-modes h2 { margin: 0 0 10px; color: var(--ba-ink); font-size: .78rem; text-transform: uppercase; letter-spacing: .06em; }
.teacher-detail-modes > div { display: flex; flex-wrap: wrap; gap: 6px; }
.teacher-detail-modes span { display: inline-flex; align-items: center; gap: 5px; padding: 7px 9px; border-radius: 9px; background: var(--ba-blue-100); color: var(--ba-navy-800); font-size: .68rem; font-weight: 750; }
.teacher-detail-notice { display: flex; align-items: flex-start; gap: 7px; margin: 14px 0 0; color: var(--ba-muted); font-size: .69rem; line-height: 1.5; text-align: left; }
.teacher-detail-content { display: grid; gap: 18px; min-width: 0; }
.teacher-content-panel { min-width: 0; padding: clamp(22px, 4vw, 34px); border: 1px solid var(--inner-border); border-radius: 24px; background: #fff; box-shadow: 0 10px 30px rgba(6,40,95,.045); }
.teacher-panel-heading { display: grid; grid-template-columns: 48px minmax(0, 1fr); align-items: center; gap: 13px; margin-bottom: 22px; }
.teacher-panel-heading > span { display: grid; width: 48px; height: 48px; place-items: center; border-radius: 15px; background: var(--ba-blue-100); color: var(--ba-navy-800); font-size: 1.2rem; }
.teacher-panel-heading small { color: var(--ba-gold-600); font-size: .67rem; font-weight: 850; letter-spacing: .09em; text-transform: uppercase; }
.teacher-panel-heading h2 { margin: 2px 0 0; color: var(--ba-ink); font-size: 1.32rem; }
.teacher-public-bio { color: var(--ba-copy); line-height: 1.8; }
.teacher-path-grid,
.teacher-competency-grid { display: grid; gap: 10px; }
.teacher-path-grid article,
.teacher-competency-card { min-width: 0; padding: 16px; border: 1px solid var(--ba-line); border-radius: 16px; background: #fafbfd; }
.teacher-path-grid span { display: block; margin-bottom: 5px; color: var(--ba-muted); font-size: .7rem; }
.teacher-path-grid strong { display: block; overflow-wrap: anywhere; color: var(--ba-ink); font-size: .88rem; }
.teacher-competency-card > div { display: flex; flex-wrap: wrap; align-items: center; gap: 7px; }
.teacher-competency-card strong { overflow-wrap: anywhere; color: var(--ba-ink); font-size: .9rem; }
.teacher-competency-card p { margin: 7px 0 0; color: var(--ba-muted); font-size: .75rem; line-height: 1.5; }
.primary-skill-badge { padding: 4px 7px; border-radius: 999px; background: var(--ba-green-100); color: var(--ba-green-700); font-size: .59rem; font-weight: 850; text-transform: uppercase; }
.teacher-empty-copy { margin: 0; color: var(--ba-muted); }
.teacher-privacy-note { display: grid; grid-template-columns: 50px minmax(0, 1fr); gap: 14px; padding: 22px; border-radius: 20px; background: var(--ba-navy-900); color: rgba(255,255,255,.7); }
.teacher-privacy-note > span { display: grid; width: 50px; height: 50px; place-items: center; border-radius: 16px; background: rgba(255,188,50,.13); color: var(--ba-gold-300); font-size: 1.3rem; }
.teacher-privacy-note h2 { margin: 2px 0 6px; color: #fff; font-size: 1rem; }
.teacher-privacy-note p { margin: 0; font-size: .8rem; line-height: 1.6; }

/* -------------------- Témoignages -------------------- */
.testimonial-hero-visual {
  position: relative;
  display: grid;
  width: min(100%, 470px);
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  align-items: stretch;
}
.testimonial-hero-heart {
  position: relative;
  grid-column: 1 / -1;
  display: grid;
  width: clamp(150px, 44vw, 184px);
  aspect-ratio: 1;
  place-items: center;
  justify-self: center;
  border-radius: 50%;
  background: var(--ba-gold-400);
  color: var(--ba-navy-950);
  box-shadow: 0 22px 50px rgba(246,168,0,.25);
  font-size: 2.8rem;
}
.testimonial-hero-visual .testimonial-quote {
  position: relative;
  display: grid;
  width: 100%;
  min-width: 0;
  grid-template-columns: 30px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  padding: 14px 15px;
  border: 1px solid rgba(255,255,255,.16);
  border-radius: 17px;
  background: rgba(255,255,255,.1);
  color: #fff;
  font-size: .78rem;
  font-weight: 800;
  box-shadow: 0 18px 40px rgba(0,0,0,.18);
}
.testimonial-hero-visual .testimonial-quote i { color: var(--ba-gold-300); font-size: 1.25rem; }
.testimonial-hero-visual .testimonial-quote span { min-width: 0; overflow-wrap: anywhere; }
.testimonial-hero-visual .testimonial-quote-one,
.testimonial-hero-visual .testimonial-quote-two,
.testimonial-hero-visual .testimonial-quote-three {
  grid-column: 1;
  width: 100%;
  justify-self: stretch;
}
.testimonial-summary { display: grid; align-items: center; gap: 20px; margin-bottom: 34px; padding: 22px; border: 1px solid var(--inner-border); border-radius: 22px; background: #fff; box-shadow: var(--ba-shadow-sm); }
.testimonial-summary-value { color: var(--ba-navy-900); font-family: "DM Serif Display", Georgia, serif; font-size: 3.2rem; line-height: .9; }
.testimonial-summary-stars { color: var(--ba-gold-500); font-size: .74rem; }
.testimonial-summary p { margin: 0; color: var(--ba-copy); }
.testimonial-summary-shield { display: inline-flex; width: fit-content; align-items: center; gap: 7px; padding: 8px 10px; border-radius: 10px; background: var(--ba-green-100); color: var(--ba-green-700); font-size: .72rem; font-weight: 800; }
.public-testimonial-grid { display: grid; gap: 18px; }
.public-testimonial-card { display: flex; min-width: 0; flex-direction: column; padding: clamp(22px, 3vw, 30px); border: 1px solid var(--inner-border); border-radius: 24px; background: #fff; box-shadow: 0 12px 32px rgba(6,40,95,.055); }
.public-testimonial-top { display: grid; grid-template-columns: 48px minmax(0, 1fr) 28px; align-items: center; gap: 12px; }
.public-testimonial-avatar { display: grid; width: 48px; height: 48px; place-items: center; border-radius: 50%; background: var(--ba-blue-100); color: var(--ba-navy-800); }
.public-testimonial-top h2 { margin: 0; color: var(--ba-ink); font-size: .98rem; }
.public-testimonial-top p { margin: 3px 0 0; color: var(--ba-muted); font-size: .7rem; }
.public-testimonial-quote { color: rgba(6,40,95,.12); font-size: 1.7rem; }
.public-testimonial-stars { margin: 22px 0 14px; color: var(--ba-gold-500); }
.public-testimonial-card blockquote { flex: 1; margin: 0; color: var(--ba-copy); font-size: .9rem; line-height: 1.75; }
.public-testimonial-teacher { display: flex; align-items: center; gap: 7px; margin: 20px 0 0; padding-top: 15px; border-top: 1px solid var(--ba-line); color: var(--ba-muted); font-size: .72rem; }

/* -------------------- Contact -------------------- */
.contact-hero-visual { position: relative; width: min(88vw, 460px); aspect-ratio: 1; }
.contact-hero-center { position: absolute; top: 50%; left: 50%; display: grid; width: 170px; height: 170px; place-items: center; border-radius: 50%; background: var(--ba-gold-400); color: var(--ba-navy-950); transform: translate(-50%, -50%); box-shadow: 0 22px 50px rgba(246,168,0,.25); text-align: center; }
.contact-hero-center i { align-self: end; font-size: 2rem; }
.contact-hero-center strong { font-size: .9rem; }
.contact-hero-center small { align-self: start; }
.contact-hero-bubble { position: absolute; display: grid; width: 72px; height: 72px; place-items: center; border: 1px solid rgba(255,255,255,.18); border-radius: 22px; background: rgba(255,255,255,.1); box-shadow: 0 18px 40px rgba(0,0,0,.18); color: #fff; font-size: 1.5rem; }
.contact-bubble-one { top: 5%; left: 9%; }
.contact-bubble-two { top: 32%; right: 2%; }
.contact-bubble-three { bottom: 5%; left: 18%; }
.contact-method-grid { display: grid; gap: 12px; margin-bottom: 28px; }
.contact-method-card { display: grid; grid-template-columns: 48px minmax(0, 1fr) 24px; align-items: center; gap: 13px; min-width: 0; padding: 18px; border: 1px solid var(--inner-border); border-radius: 18px; background: #fff; box-shadow: var(--ba-shadow-sm); color: var(--ba-ink); text-decoration: none; transition: transform .22s ease, border-color .22s ease; }
.contact-method-card:hover { color: var(--ba-ink); text-decoration: none; transform: translateY(-3px); border-color: rgba(246,168,0,.45); }
.contact-method-card > span { display: grid; width: 48px; height: 48px; place-items: center; border-radius: 15px; background: var(--ba-blue-100); color: var(--ba-navy-800); font-size: 1.2rem; }
.contact-method-card small { display: block; color: var(--ba-muted); font-size: .66rem; font-weight: 800; text-transform: uppercase; letter-spacing: .08em; }
.contact-method-card strong { display: block; margin-top: 2px; overflow-wrap: anywhere; font-size: .82rem; }
.contact-method-card p { margin: 4px 0 0; color: var(--ba-muted); font-size: .7rem; }
.contact-method-card > i { color: var(--ba-gold-600); }
.contact-location-card { grid-template-columns: 48px minmax(0, 1fr); }
.contact-layout { display: grid; gap: 22px; align-items: stretch; }
.contact-form-panel { padding: clamp(24px, 5vw, 48px); border: 1px solid var(--inner-border); border-radius: 28px; background: #fff; box-shadow: var(--ba-shadow-md); }
.contact-panel-heading h2 { font-size: clamp(1.9rem, 3.6vw, 3rem); }
.contact-panel-heading > p { color: var(--ba-muted); }
.contact-form-grid { display: grid; gap: 17px; }
.public-form-field { min-width: 0; }
.public-form-field label { display: block; margin-bottom: 7px; color: var(--ba-ink); font-size: .8rem; font-weight: 800; }
.public-form-field label span { color: #b54848; }
.public-contact-form .form-control { width: 100%; min-height: 50px; border: 1px solid rgba(6,40,95,.16); border-radius: 13px; background: #fbfcfe; color: var(--ba-ink); font-size: .92rem; }
.public-contact-form textarea.form-control { min-height: 150px; resize: vertical; }
.public-contact-form .form-control:focus { border-color: var(--ba-blue-700); background: #fff; box-shadow: 0 0 0 4px rgba(20,86,200,.1); }
.public-field-error { display: flex; align-items: flex-start; gap: 6px; margin: 6px 0 0; color: #ad3434; font-size: .72rem; }
.public-form-alert { margin-bottom: 18px; padding: 13px; border: 1px solid #efb5b5; border-radius: 12px; background: #fff1f1; color: #8e2525; }
.contact-form-privacy { display: flex; align-items: flex-start; justify-content: center; gap: 7px; margin: 13px 0 0; color: var(--ba-muted); font-size: .7rem; text-align: left; }
.contact-info-panel { display: flex; flex-direction: column; padding: clamp(25px, 5vw, 44px); border-radius: 28px; background: linear-gradient(145deg, #031a40, #0a3678); box-shadow: var(--ba-shadow-lg); color: rgba(255,255,255,.72); }
.contact-info-top h2 { margin: 9px 0 13px; color: #fff; font-family: "DM Serif Display", Georgia, serif; font-size: clamp(1.9rem, 3.5vw, 2.8rem); font-weight: 400; }
.contact-info-top p { line-height: 1.7; }
.opening-hours { display: grid; gap: 1px; overflow: hidden; margin-top: 24px; border: 1px solid rgba(255,255,255,.12); border-radius: 16px; background: rgba(255,255,255,.12); }
.opening-hours div { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; padding: 13px; background: rgba(3,26,64,.72); }
.opening-hours span { color: rgba(255,255,255,.65); font-size: .77rem; }
.opening-hours strong { color: #fff; font-size: .8rem; }
.contact-info-divider { height: 1px; margin: 28px 0; background: rgba(255,255,255,.12); }
.contact-topic-list { display: grid; gap: 7px; }
.contact-topic-list h3 { margin: 0 0 8px; color: #fff; font-size: .9rem; }
.contact-topic-list a { display: grid; grid-template-columns: 32px minmax(0, 1fr) 20px; align-items: center; gap: 9px; padding: 10px; border-radius: 12px; color: rgba(255,255,255,.78); text-decoration: none; }
.contact-topic-list a:hover { background: rgba(255,255,255,.08); color: #fff; }
.contact-topic-list a > i:first-child { color: var(--ba-gold-300); }
.contact-topic-list span { min-width: 0; font-size: .75rem; }

/* -------------------- Partenaires -------------------- */
.partners-hero-network { position: relative; width: min(88vw, 490px); aspect-ratio: 1; }
.partner-network-core { position: absolute; top: 50%; left: 50%; display: grid; width: 150px; height: 150px; place-items: center; border-radius: 50%; background: var(--ba-gold-400); color: var(--ba-navy-950); transform: translate(-50%, -50%); box-shadow: 0 22px 50px rgba(246,168,0,.25); text-align: center; }
.partner-network-core i { align-self: end; font-size: 2.2rem; }
.partner-network-core strong { align-self: start; font-size: .8rem; }
.partner-network-node { position: absolute; z-index: 2; display: grid; width: 68px; height: 68px; place-items: center; border: 1px solid rgba(255,255,255,.18); border-radius: 21px; background: rgba(255,255,255,.1); color: #fff; font-size: 1.4rem; box-shadow: 0 18px 40px rgba(0,0,0,.18); }
.partner-node-one { top: 4%; left: 14%; }
.partner-node-two { top: 19%; right: 3%; }
.partner-node-three { bottom: 4%; left: 15%; }
.partner-node-four { right: 9%; bottom: 13%; }
.partner-network-line { position: absolute; top: 50%; left: 50%; z-index: 1; width: 1px; height: 145px; background: linear-gradient(transparent, rgba(255,188,50,.55)); transform-origin: bottom; }
.line-one { transform: translate(-50%,-100%) rotate(-44deg); }
.line-two { transform: translate(-50%,-100%) rotate(44deg); }
.line-three { transform: translate(-50%,0) rotate(42deg); transform-origin: top; }
.line-four { transform: translate(-50%,0) rotate(-45deg); transform-origin: top; }
.partner-public-grid { display: grid; gap: 18px; margin-top: 42px; }
.partner-public-card { display: flex; min-width: 0; flex-direction: column; padding: clamp(22px, 3vw, 30px); border: 1px solid var(--inner-border); border-radius: 24px; background: #fff; box-shadow: 0 12px 32px rgba(6,40,95,.055); transition: transform .24s ease, box-shadow .24s ease; }
.partner-public-card:hover { transform: translateY(-5px); box-shadow: var(--ba-shadow-md); }
.partner-logo-frame { display: grid; width: 100%; height: 94px; place-items: center; margin-bottom: 20px; padding: 12px; border-radius: 17px; background: #f7f9fc; }
.partner-logo-frame img { width: auto; max-width: 100%; height: auto; max-height: 70px; object-fit: contain; }
.partner-logo-placeholder { display: grid; width: 60px; height: 60px; place-items: center; border-radius: 18px; background: var(--ba-blue-100); color: var(--ba-navy-800); font-size: 1.65rem; }
.partner-type-label { align-self: flex-start; padding: 5px 8px; border-radius: 999px; background: var(--ba-gold-100); color: #9c6100; font-size: .61rem; font-weight: 850; text-transform: uppercase; letter-spacing: .05em; }
.partner-public-card h3 { margin: 13px 0 9px; overflow-wrap: anywhere; color: var(--ba-ink); font-size: 1.15rem; }
.partner-public-card > p { flex: 1; color: var(--ba-muted); font-size: .83rem; line-height: 1.7; }
.partner-website-link,
.partner-collaboration-status { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 20px; padding-top: 15px; border-top: 1px solid var(--ba-line); font-size: .76rem; font-weight: 800; }
.partner-website-link { color: var(--ba-navy-800); text-decoration: none; }
.partner-website-link:hover { color: var(--ba-gold-600); }
.partner-collaboration-status { justify-content: flex-start; color: var(--ba-green-700); }
.partner-opportunity-grid { display: grid; gap: 14px; margin-top: 40px; }
.partner-opportunity { padding: 24px; border: 1px solid rgba(6,40,95,.08); border-radius: 21px; background: rgba(255,255,255,.74); }
.partner-opportunity i { color: var(--ba-gold-600); font-size: 1.45rem; }
.partner-opportunity h3 { margin: 18px 0 8px; color: var(--ba-ink); font-size: 1rem; }
.partner-opportunity p { margin: 0; color: var(--ba-muted); font-size: .82rem; line-height: 1.6; }

/* -------------------- FAQ -------------------- */
.faq-hero-visual { position: relative; width: min(86vw, 440px); aspect-ratio: 1; }
.faq-hero-center { position: absolute; top: 50%; left: 50%; display: grid; width: 170px; height: 170px; place-items: center; border-radius: 50%; background: var(--ba-gold-400); color: var(--ba-navy-950); transform: translate(-50%, -50%); box-shadow: 0 22px 50px rgba(246,168,0,.25); text-align: center; }
.faq-hero-center i { align-self: end; font-size: 2.2rem; }
.faq-hero-center strong { font-size: .84rem; }
.faq-hero-center small { align-self: start; }
.faq-symbol { position: absolute; display: grid; width: 72px; height: 72px; place-items: center; border: 1px solid rgba(255,255,255,.18); border-radius: 22px; background: rgba(255,255,255,.1); color: #fff; font-family: "DM Serif Display", Georgia, serif; font-size: 2.4rem; box-shadow: 0 18px 40px rgba(0,0,0,.18); }
.faq-symbol-one { top: 5%; left: 8%; transform: rotate(-8deg); }
.faq-symbol-two { top: 29%; right: 2%; transform: rotate(9deg); }
.faq-symbol-three { bottom: 4%; left: 18%; transform: rotate(5deg); }
.faq-layout { display: grid; gap: 30px; align-items: start; }
.faq-navigation { display: grid; gap: 6px; padding: 18px; border: 1px solid var(--inner-border); border-radius: 20px; background: #fff; box-shadow: var(--ba-shadow-sm); }
.faq-navigation > span { margin: 2px 8px 8px; color: var(--ba-muted); font-size: .68rem; font-weight: 850; text-transform: uppercase; letter-spacing: .08em; }
.faq-navigation a { display: flex; align-items: center; gap: 9px; padding: 11px; border-radius: 11px; color: var(--ba-copy); font-size: .8rem; font-weight: 750; text-decoration: none; }
.faq-navigation a:hover { background: var(--ba-blue-100); color: var(--ba-navy-800); }
.faq-navigation i { color: var(--ba-gold-600); }
.faq-content { display: grid; gap: 56px; min-width: 0; }
.faq-category { min-width: 0; scroll-margin-top: 110px; }
.faq-category-heading { display: grid; grid-template-columns: 50px minmax(0, 1fr); align-items: center; gap: 14px; margin-bottom: 20px; }
.faq-category-heading > span { display: grid; width: 50px; height: 50px; place-items: center; border-radius: 16px; background: var(--ba-blue-100); color: var(--ba-navy-800); font-size: 1.25rem; }
.faq-category-heading small { color: var(--ba-gold-600); font-size: .66rem; font-weight: 850; text-transform: uppercase; letter-spacing: .08em; }
.faq-category-heading h2 { margin: 2px 0 0; color: var(--ba-ink); font-size: clamp(1.35rem, 3vw, 2rem); }
.faq-accordion { display: grid; gap: 9px; }
.faq-accordion details { overflow: hidden; border: 1px solid var(--inner-border); border-radius: 16px; background: #fff; }
.faq-accordion summary { display: grid; grid-template-columns: minmax(0, 1fr) 28px; align-items: center; gap: 12px; padding: 17px 18px; color: var(--ba-ink); font-size: .88rem; font-weight: 800; cursor: pointer; list-style: none; }
.faq-accordion summary::-webkit-details-marker { display: none; }
.faq-accordion summary i { display: grid; width: 28px; height: 28px; place-items: center; border-radius: 9px; background: var(--ba-page); color: var(--ba-navy-800); transition: transform .2s ease; }
.faq-accordion details[open] summary { background: #fbfcff; }
.faq-accordion details[open] summary i { transform: rotate(45deg); }
.faq-accordion details > div { padding: 0 18px 19px; color: var(--ba-copy); font-size: .84rem; line-height: 1.72; }
.faq-accordion details p { margin: 0; }
.faq-accordion details a { display: inline-flex; margin-top: 11px; color: var(--ba-navy-800); font-weight: 800; }

/* -------------------- Responsive -------------------- */
@media (min-width: 600px) {
  .public-proof-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .public-proof-item { padding-inline: 18px; }
  .public-proof-item + .public-proof-item { border-left: 1px solid var(--ba-line); }
  .values-grid,
  .service-index-grid,
  .contact-method-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .commitments-grid,
  .service-method-grid,
  .partner-opportunity-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .teacher-directory-grid,
  .public-testimonial-grid,
  .partner-public-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .teacher-path-grid,
  .teacher-competency-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .teacher-path-wide { grid-column: 1 / -1; }
  .contact-form-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .public-form-field-wide { grid-column: 1 / -1; }
  .testimonial-summary { grid-template-columns: auto 1fr auto; }
}

@media (min-width: 768px) {
  .public-final-banner-inner { grid-template-columns: minmax(0, 1.5fr) auto; }
  .founder-card { grid-template-columns: minmax(210px, .6fr) minmax(0, 1.6fr); }
  .public-testimonial-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 992px) {
  .inner-hero-grid { grid-template-columns: minmax(0, 1.08fr) minmax(380px, .92fr); }
  .mission-layout { grid-template-columns: minmax(0, 1.08fr) minmax(390px, .92fr); }
  .commitments-layout { grid-template-columns: minmax(0, .78fr) minmax(0, 1.22fr); align-items: center; }
  .service-feature-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .service-feature-grid-reverse .service-feature-copy { grid-column: 2; }
  .service-feature-grid-reverse .service-feature-visual { grid-column: 1; grid-row: 1; }
  .directory-toolbar { grid-template-columns: minmax(0, 1fr) minmax(360px, .55fr); }
  .directory-filter-controls { grid-template-columns: minmax(0, 1fr) auto; }
  .teacher-directory-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .teacher-detail-layout { grid-template-columns: minmax(300px, 360px) minmax(0, 1fr); gap: 30px; }
  .teacher-detail-sidebar { position: sticky; top: 102px; }
  .contact-layout { grid-template-columns: minmax(0, 1.2fr) minmax(330px, .8fr); }
  .partner-public-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .faq-layout { grid-template-columns: 260px minmax(0, 1fr); }
  .faq-navigation { position: sticky; top: 102px; }
  .public-final-banner-actions { justify-content: flex-end; }
}

@media (min-width: 1200px) {
  .inner-hero h1 { font-size: clamp(4.35rem, 5.4vw, 5.25rem); }
  .commitments-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .service-method-grid,
  .partner-opportunity-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 991.98px) {
  .inner-hero-grid { min-height: 0; }
  .inner-hero-copy { max-width: 760px; }
  .inner-hero-visual { min-height: 330px; }
  .teacher-detail-sidebar { max-width: 560px; margin-inline: auto; }
}

@media (max-width: 599.98px) {
  .inner-hero-grid { gap: 20px; padding-block: 62px 54px; }
  .inner-hero h1 { font-size: clamp(2.15rem, 11vw, 3.2rem); line-height: 1.01; }
  .inner-hero-lead { margin-top: 20px; font-size: .94rem; }
  .inner-hero-actions { display: grid; }
  .inner-hero-actions .premium-button { width: 100%; }
  .inner-hero-visual { min-height: 290px; }
  .public-proof-item + .public-proof-item { border-top: 1px solid var(--ba-line); }
  .service-index-section { margin-top: 0; padding-block: 16px; background: #fff; }
  .service-index-card { box-shadow: none; }
  .service-visual-board { border-radius: 22px; }
  .service-visual-main { width: 52%; }
  .exam-note { width: 50%; }
  .public-page-button span { display: none; }
  .public-pagination { grid-template-columns: 44px 1fr 44px; }
  .public-page-button { width: 44px; height: 44px; justify-content: center; padding: 0; }
  .teacher-detail-photo-wrap,
  .teacher-detail-photo { width: 140px; }
  .teacher-detail-photo { height: 140px; }
  .contact-method-card { grid-template-columns: 44px minmax(0,1fr) 20px; }
  .contact-method-card > span { width: 44px; height: 44px; }
  .partner-logo-frame { height: 82px; }
}

@media (max-width: 359.98px) {
  .inner-hero h1 { font-size: clamp(1.95rem, 10.4vw, 2.45rem); }
  .inner-eyebrow { font-size: .61rem; }
  .about-vision-node,
  .services-hero-card { transform: scale(.88); transform-origin: center; }
  .teacher-card-header { grid-template-columns: 64px minmax(0, 1fr); }
  .teacher-card-photo { width: 64px; height: 64px; border-radius: 18px; }
}

@media (max-width: 767.98px) {
  /* Annuaire public : sur mobile, la composition décorative devient une liste
     structurée afin qu'aucune carte ne masque une autre. */
  .inner-hero-directory .inner-hero-visual { min-height: 0; }

  .directory-hero-visual {
    display: grid;
    width: 100%;
    max-width: 520px;
    aspect-ratio: auto;
    gap: 12px;
    margin-inline: auto;
    padding: 16px;
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 24px;
    background: rgba(255,255,255,.045);
  }

  .directory-profile,
  .directory-profile-one,
  .directory-profile-two,
  .directory-profile-three {
    position: static;
    inset: auto;
    width: 100%;
    transform: none;
  }

  .directory-profile {
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 12px;
    padding: 13px;
    border-radius: 17px;
    box-shadow: none;
  }

  .directory-profile > span { width: 48px; height: 48px; border-radius: 14px; }
  .directory-profile strong { font-size: .92rem; }
  .directory-profile small { display: block; margin-top: 2px; font-size: .72rem; }

  .directory-verified {
    position: static;
    order: -1;
    display: flex;
    width: 100%;
    height: auto;
    min-height: 66px;
    align-items: center;
    justify-content: flex-start;
    gap: 12px;
    padding: 14px 16px;
    border-radius: 17px;
    transform: none;
    text-align: left;
    box-shadow: 0 14px 30px rgba(246,168,0,.16);
  }

  .directory-verified i,
  .directory-verified span { align-self: auto; }
  .directory-verified i { font-size: 1.45rem; }
  .directory-verified span { font-size: .82rem; }

  .about-vision-core,
  .about-vision-node,
  .services-hero-card,
  .directory-profile,
  .testimonial-hero-visual .testimonial-quote,
  .contact-hero-bubble,
  .partner-network-node,
  .faq-symbol {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  .js .public-page-shell [data-hero-sequence] .hero-sequence-item,
  .js .public-page-shell .inner-hero-visual,
  .value-card,
  .service-index-card,
  .teacher-profile-card,
  .partner-public-card,
  .contact-method-card {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* Navigation interne des services : le bandeau fixe ne masque jamais le titre
   et les trois cibles restent matérialisées avant tout saut d'ancre. */
.services-public-page .service-feature-section {
  scroll-margin-top: 96px;
  content-visibility: visible !important;
  contain-intrinsic-size: none !important;
}

@supports (content-visibility: auto) {
  .public-inner-page .public-section,
  .public-inner-page .public-final-banner {
    content-visibility: auto;
    contain-intrinsic-size: auto 720px;
  }
}

/* --------------------------------------------------------------------------
   Mobile composition hardening
   Decorative illustrations keep their layered desktop treatment, but become
   structured content cards on small screens so no text is hidden or overlapped.
   -------------------------------------------------------------------------- */
@media (max-width: 599.98px) {
  .services-hero-stack {
    display: grid;
    width: 100%;
    max-width: 100%;
    aspect-ratio: auto;
    gap: 12px;
  }

  .services-hero-card,
  .services-hero-center {
    position: relative;
    inset: auto;
    width: 100%;
    max-width: none;
    transform: none;
  }

  .services-hero-center {
    order: -1;
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    grid-template-rows: auto auto;
    min-height: 0;
    height: auto;
    place-items: initial;
    align-items: center;
    gap: 2px 13px;
    padding: 18px;
    border-radius: 20px;
    text-align: left;
  }

  .services-hero-center i {
    grid-row: 1 / 3;
    align-self: center;
    font-size: 1.7rem;
    text-align: center;
  }

  .services-hero-center strong,
  .services-hero-center small {
    align-self: auto;
    min-width: 0;
  }

  .services-hero-center strong { font-size: 1rem; }
  .services-hero-center small { font-size: .76rem; }

  .services-hero-card {
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 13px;
    padding: 14px 16px;
    border-radius: 18px;
  }

  .services-hero-card > span {
    width: 48px;
    height: 48px;
    border-radius: 15px;
  }

  .services-hero-card strong,
  .services-hero-card small {
    overflow-wrap: anywhere;
  }

  .inner-hero-services .inner-hero-visual {
    min-height: 0;
    padding-top: 14px;
  }

  .service-visual-board {
    display: grid;
    width: 100%;
    max-width: 100%;
    min-height: 0;
    aspect-ratio: auto;
    gap: 12px;
    overflow: hidden;
    padding: 20px;
  }

  .service-visual-main,
  .service-visual-chip,
  .service-visual-progress,
  .exam-calendar,
  .exam-note,
  .exam-track,
  .training-screen,
  .training-skill {
    position: relative;
    inset: auto;
    width: 100%;
    max-width: none;
    transform: none;
  }

  .service-visual-main {
    display: grid;
    min-height: 150px;
    aspect-ratio: auto;
    place-items: center;
    padding: 24px;
    border-radius: 24px;
  }

  .service-visual-main i,
  .service-visual-main strong,
  .service-visual-main small {
    align-self: auto;
  }

  .service-visual-main strong { font-size: 1.05rem; }

  .service-visual-chip {
    justify-content: flex-start;
    padding: 12px 15px;
    border-radius: 14px;
    font-size: .8rem;
  }

  .service-visual-progress {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    margin-top: 2px;
  }

  .exam-calendar {
    min-height: 150px;
    aspect-ratio: auto;
    padding: 22px;
    border-radius: 22px;
  }

  .exam-calendar strong {
    max-width: 100%;
    font-size: clamp(1.55rem, 9vw, 2.1rem);
    overflow-wrap: anywhere;
  }

  .exam-note {
    grid-template-columns: 42px minmax(0, 1fr);
    gap: 12px;
    padding: 17px;
    border-radius: 18px;
  }

  .exam-note strong { font-size: .88rem; }
  .exam-note small { display: block; margin-top: 4px; font-size: .72rem; line-height: 1.5; }

  .exam-track {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 3px;
    padding-top: 8px;
  }

  .exam-track span {
    min-width: 0;
    padding-top: 22px;
    font-size: clamp(.55rem, 2.55vw, .67rem);
    overflow-wrap: anywhere;
  }

  .training-screen {
    min-height: 190px;
    place-items: center;
    padding: 40px 22px 26px;
    border-radius: 22px;
  }

  .training-screen i,
  .training-screen strong {
    align-self: auto;
  }

  .training-screen strong {
    max-width: 16ch;
    font-size: 1.08rem;
    line-height: 1.35;
  }

  .training-skill {
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 9px;
    padding: 11px 14px;
    border-radius: 14px;
    font-size: .8rem;
  }

  .training-skill span { overflow-wrap: anywhere; }
}

@media (min-width: 600px) {
  .inner-hero-testimonials .inner-hero-visual { min-height: 0; }

  .testimonial-hero-visual {
    grid-template-columns: minmax(150px, .78fr) minmax(0, 1.22fr);
    grid-template-rows: repeat(3, minmax(76px, auto));
    gap: 14px;
    align-items: stretch;
  }

  .testimonial-hero-heart {
    grid-column: 1;
    grid-row: 1 / 4;
    width: min(100%, 190px);
    align-self: center;
  }

  .testimonial-hero-visual .testimonial-quote,
  .testimonial-hero-visual .testimonial-quote-one,
  .testimonial-hero-visual .testimonial-quote-two,
  .testimonial-hero-visual .testimonial-quote-three {
    grid-column: 2;
    width: 100%;
    max-width: none;
    justify-self: stretch;
  }

  .testimonial-hero-visual .testimonial-quote-one { grid-row: 1; }
  .testimonial-hero-visual .testimonial-quote-two { grid-row: 2; }
  .testimonial-hero-visual .testimonial-quote-three { grid-row: 3; }
}

/* --------------------------------------------------------------------------
   Tablet and desktop composition hardening
   The decorative service and directory illustrations use explicit grids from
   600/768px upward. This keeps their visual hierarchy while removing fragile
   absolute positioning, oversized empty zones and accidental overlaps.
   -------------------------------------------------------------------------- */
@media (min-width: 600px) {
  .inner-hero-services .inner-hero-visual {
    min-height: 0;
  }

  .services-hero-stack {
    display: grid;
    width: min(100%, 540px);
    aspect-ratio: auto;
    grid-template-columns: minmax(140px, .72fr) minmax(0, 1.28fr);
    grid-template-rows: repeat(3, minmax(86px, auto));
    gap: 14px;
    align-items: stretch;
  }

  .services-hero-card,
  .services-hero-card-one,
  .services-hero-card-two,
  .services-hero-card-three,
  .services-hero-center {
    position: relative;
    inset: auto;
    width: 100%;
    max-width: none;
    transform: none;
  }

  .services-hero-card {
    grid-column: 2;
    min-height: 86px;
    padding: 14px 16px;
    box-shadow: 0 16px 34px rgba(0,0,0,.15);
  }

  .services-hero-card-one { grid-row: 1; }
  .services-hero-card-two { grid-row: 2; }
  .services-hero-card-three { grid-row: 3; }

  .services-hero-center {
    grid-column: 1;
    grid-row: 1 / 4;
    display: flex;
    min-height: 286px;
    height: 100%;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 24px 18px;
    border-radius: 28px;
  }

  .services-hero-center i,
  .services-hero-center strong,
  .services-hero-center small {
    align-self: auto;
  }

  .services-hero-center strong {
    font-size: 1rem;
  }

  .services-hero-center small {
    max-width: 12ch;
    font-size: .76rem;
    line-height: 1.45;
  }

  .service-visual-board {
    display: grid;
    width: min(100%, 560px);
    min-height: clamp(410px, 34vw, 31rem);
    aspect-ratio: auto;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    grid-template-rows: repeat(8, minmax(0, 1fr));
    gap: 10px;
    padding: clamp(24px, 3vw, 36px);
  }

  .service-visual-main,
  .service-visual-chip,
  .service-visual-progress,
  .exam-calendar,
  .exam-note,
  .exam-track,
  .training-screen,
  .training-skill {
    position: relative;
    inset: auto;
    transform: none;
  }

  .service-visual-main {
    grid-column: 4 / 10;
    grid-row: 2 / 7;
    display: flex;
    width: min(100%, 238px);
    aspect-ratio: 1;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    align-self: center;
    justify-self: center;
    padding: 24px;
  }

  .service-visual-main i,
  .service-visual-main strong,
  .service-visual-main small {
    align-self: auto;
  }

  .service-visual-chip {
    width: fit-content;
    max-width: 100%;
    align-self: center;
  }

  .service-chip-one {
    grid-column: 1 / 5;
    grid-row: 1 / 2;
    justify-self: start;
  }

  .service-chip-two {
    grid-column: 9 / 13;
    grid-row: 3 / 4;
    justify-self: end;
  }

  .service-chip-three {
    grid-column: 1 / 6;
    grid-row: 7 / 8;
    justify-self: start;
  }

  .service-visual-progress {
    grid-column: 3 / 11;
    grid-row: 8 / 9;
    width: 100%;
    align-self: end;
  }

  .exam-calendar {
    grid-column: 1 / 7;
    grid-row: 1 / 6;
    display: flex;
    width: 100%;
    min-height: 0;
    aspect-ratio: auto;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    padding: 24px;
  }

  .exam-calendar span,
  .exam-calendar strong,
  .exam-calendar i {
    align-self: auto;
  }

  .exam-note {
    grid-column: 7 / 13;
    grid-row: 2 / 5;
    width: 100%;
    align-self: center;
  }

  .exam-track {
    grid-column: 2 / 12;
    grid-row: 7 / 9;
    width: 100%;
    align-self: center;
  }

  .training-screen {
    grid-column: 2 / 12;
    grid-row: 2 / 7;
    min-height: 0;
  }

  .training-skill-one {
    grid-column: 1 / 5;
    grid-row: 7 / 8;
    justify-self: start;
  }

  .training-skill-two {
    grid-column: 8 / 13;
    grid-row: 7 / 8;
    justify-self: end;
  }

  .training-skill-three {
    grid-column: 1 / 5;
    grid-row: 1 / 2;
    justify-self: start;
  }
}

@media (min-width: 768px) {
  .inner-hero-directory .inner-hero-visual {
    min-height: 0;
  }

  .directory-hero-visual {
    display: grid;
    width: min(100%, 520px);
    aspect-ratio: auto;
    grid-template-columns: minmax(138px, .72fr) minmax(0, 1.28fr);
    grid-template-rows: repeat(3, minmax(82px, auto));
    gap: 14px;
    align-items: stretch;
  }

  .directory-profile,
  .directory-profile-one,
  .directory-profile-two,
  .directory-profile-three,
  .directory-verified {
    position: relative;
    inset: auto;
    width: 100%;
    max-width: none;
    transform: none;
  }

  .directory-profile {
    grid-column: 2;
    min-height: 82px;
    padding: 14px 16px;
    box-shadow: 0 16px 34px rgba(0,0,0,.14);
  }

  .directory-profile-one { grid-row: 1; }
  .directory-profile-two { grid-row: 2; }
  .directory-profile-three { grid-row: 3; }

  .directory-verified {
    grid-column: 1;
    grid-row: 1 / 4;
    display: flex;
    min-height: 274px;
    height: 100%;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 22px 16px;
    border-radius: 28px;
    font-size: .82rem;
  }

  .directory-verified i,
  .directory-verified span {
    align-self: auto;
  }

  .directory-verified span {
    max-width: 12ch;
    line-height: 1.4;
  }
}

@media (min-width: 1600px) {
  .services-hero-stack,
  .directory-hero-visual {
    width: min(100%, 560px);
  }

  .service-visual-board {
    min-height: 31rem;
  }
}

/* --------------------------------------------------------------------------
   About page — balanced vision diagram and replaceable founder portrait
   -------------------------------------------------------------------------- */
.about-vision-stage {
  position: relative;
  display: grid;
  width: min(100%, 540px);
  aspect-ratio: 1;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-rows: repeat(3, minmax(0, 1fr));
  gap: clamp(10px, 2.2vw, 18px);
  align-items: center;
  justify-items: center;
  padding: clamp(12px, 3vw, 24px);
  isolation: isolate;
}

.about-vision-map {
  position: absolute;
  z-index: -1;
  inset: 8%;
  opacity: .17;
  background: var(--ba-map-watermark) center / contain no-repeat;
  filter: brightness(0) invert(1);
}

.about-vision-core,
.about-vision-node {
  position: relative;
  inset: auto;
  transform: none;
}

.about-vision-core {
  z-index: 2;
  grid-column: 2;
  grid-row: 2;
  display: grid;
  width: clamp(136px, 30vw, 176px);
  aspect-ratio: 1;
  place-items: center;
  border: 1px solid rgba(255,255,255,.24);
  border-radius: 50%;
  background: rgba(3,34,80,.84);
  box-shadow: 0 24px 60px rgba(0,0,0,.23);
  text-align: center;
  backdrop-filter: blur(12px);
}

.about-vision-node {
  z-index: 3;
  display: grid;
  width: min(100%, 180px);
  min-height: 72px;
  grid-template-columns: 38px minmax(0, 1fr);
  align-items: center;
  gap: 10px;
  padding: 12px 15px;
  border: 1px solid rgba(255,255,255,.22);
  border-radius: 18px;
  background: rgba(255,255,255,.11);
  box-shadow: 0 18px 42px rgba(0,0,0,.18);
  color: #fff;
  font-size: .82rem;
  font-weight: 750;
  backdrop-filter: blur(12px);
}

.about-vision-node-family {
  grid-column: 1 / 3;
  grid-row: 1;
  justify-self: start;
}

.about-vision-node-teacher {
  grid-column: 2 / 4;
  grid-row: 1;
  justify-self: end;
  align-self: end;
}

.about-vision-node-learning {
  grid-column: 2 / 4;
  grid-row: 3;
  justify-self: end;
}

.about-vision-line {
  z-index: 1;
  width: 1px;
  height: 96px;
  background: linear-gradient(transparent, rgba(255,188,50,.58), transparent);
  transform-origin: center;
  pointer-events: none;
}

.about-vision-line-one {
  position: absolute;
  top: 24%;
  left: 38%;
  transform: rotate(-42deg);
}

.about-vision-line-two {
  position: absolute;
  top: 24%;
  right: 36%;
  transform: rotate(42deg);
}

.about-vision-line-three {
  position: absolute;
  right: 36%;
  bottom: 20%;
  transform: rotate(-28deg);
}

.founder-portrait-wrap {
  position: relative;
  width: min(70vw, 270px);
  aspect-ratio: 4 / 5;
  justify-self: center;
  overflow: hidden;
  border: 1px solid rgba(6,40,95,.12);
  border-radius: clamp(24px, 5vw, 38px);
  background: linear-gradient(145deg, var(--ba-navy-900), var(--ba-blue-700));
  box-shadow: var(--ba-shadow-lg);
}

.founder-portrait {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 24%;
}

.founder-role {
  position: absolute;
  right: 16px;
  bottom: 16px;
  display: inline-flex;
  min-height: 34px;
  align-items: center;
  padding: 7px 12px;
  border: 1px solid rgba(255,255,255,.28);
  border-radius: 999px;
  background: rgba(3,26,64,.82);
  color: #fff;
  font-size: .72rem;
  font-weight: 850;
  letter-spacing: .06em;
  text-transform: uppercase;
  backdrop-filter: blur(8px);
}

.founder-copy .founder-intro {
  margin-bottom: 10px;
  color: var(--ba-navy-900);
  font-size: 1.02rem;
}

.founder-copy blockquote {
  position: relative;
  margin-top: 28px;
  padding: 22px 24px 22px 28px;
  border: 0;
  border-radius: 18px;
  background: var(--ba-gold-100);
  color: var(--ba-navy-900);
}

.founder-copy blockquote::before {
  position: absolute;
  top: 12px;
  left: 12px;
  color: rgba(169,99,0,.26);
  content: "“";
  font-family: "DM Serif Display", Georgia, serif;
  font-size: 3.4rem;
  line-height: 1;
}

@media (max-width: 599.98px) {
  .about-vision-stage {
    aspect-ratio: auto;
    grid-template-columns: 1fr;
    grid-template-rows: auto;
    gap: 12px;
    padding: 18px;
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 26px;
    background: rgba(255,255,255,.045);
  }

  .about-vision-map {
    inset: 7%;
    opacity: .1;
  }

  .about-vision-core,
  .about-vision-node-family,
  .about-vision-node-teacher,
  .about-vision-node-learning {
    grid-column: 1;
    grid-row: auto;
    justify-self: stretch;
  }

  .about-vision-core {
    order: -1;
    width: 100%;
    aspect-ratio: auto;
    grid-template-columns: 52px minmax(0, 1fr);
    grid-template-rows: auto auto;
    min-height: 82px;
    gap: 2px 14px;
    padding: 15px 18px;
    border-radius: 20px;
    text-align: left;
  }

  .about-vision-core-icon {
    grid-row: 1 / 3;
    width: 52px;
    height: 52px;
    align-self: center;
  }

  .about-vision-core strong,
  .about-vision-core small {
    align-self: auto;
  }

  .about-vision-node {
    width: 100%;
    min-height: 66px;
    box-shadow: none;
  }

  .about-vision-line { display: none; }
  .founder-card { padding: 24px; }
  .founder-portrait-wrap { width: min(100%, 260px); }
}

@media (min-width: 768px) {
  .founder-card {
    grid-template-columns: minmax(230px, .7fr) minmax(0, 1.5fr);
  }
}

/* Feedback visuel discret après un accès rapide aux services. */
.services-public-page .service-feature-section.is-anchor-target .service-feature-copy {
  animation: service-anchor-arrival .56s cubic-bezier(.2,.75,.28,1) both;
}

@keyframes service-anchor-arrival {
  from { opacity: .72; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  .services-public-page .service-feature-section.is-anchor-target .service-feature-copy {
    animation: none;
  }
}

/* Actualités publiques */
.news-hero{
  position:relative;
  overflow:hidden;
  padding:clamp(4rem,8vw,7rem) 0;
  background:linear-gradient(135deg,#f4f8ff 0%,#ffffff 55%,#fff7e8 100%);
  border-bottom:1px solid rgba(6,40,95,.08);
}
.news-hero::after{
  content:"";
  position:absolute;
  width:420px;
  height:420px;
  right:-180px;
  top:-190px;
  border-radius:50%;
  background:rgba(11,94,215,.07);
}
.news-hero-inner{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:2rem}
.news-hero h1,.news-detail-header h1{max-width:850px;margin:.7rem 0 1rem;color:#06285f;font-family:"DM Serif Display",serif;font-size:clamp(2.45rem,6vw,5rem);line-height:1.02}
.news-hero p,.news-detail-header>div>p{max-width:720px;margin:0;color:#52647b;font-size:clamp(1rem,2vw,1.18rem);line-height:1.75}
.news-hero-mark{display:grid;place-items:center;width:118px;height:118px;border-radius:32px;background:#06285f;color:#f4b41a;font-size:3.25rem;box-shadow:0 24px 55px rgba(6,40,95,.2);transform:rotate(4deg)}
.news-list-section,.home-news,.news-related{padding:clamp(4rem,7vw,6.5rem) 0;background:#fff}
.home-news{background:#f7f9fc}
.news-card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1.25rem}
.news-card{position:relative;display:flex;min-height:280px;flex-direction:column;padding:1.65rem;border:1px solid #dfe6ef;border-radius:22px;background:#fff;box-shadow:0 12px 35px rgba(6,40,95,.06);transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease}
.news-card:hover{transform:translateY(-5px);border-color:rgba(11,94,215,.28);box-shadow:0 20px 45px rgba(6,40,95,.12)}
.news-card.is-featured{border-top:4px solid #f4b41a;background:linear-gradient(180deg,#fffaf0,#fff 38%)}
.news-card-meta{display:flex;align-items:center;justify-content:space-between;gap:.75rem;margin-bottom:1.2rem;color:#718096;font-size:.78rem;font-weight:700;letter-spacing:.035em;text-transform:uppercase}
.news-card-meta span{display:inline-flex;align-items:center;gap:.35rem;color:#8a6200}
.news-card h2,.news-card h3{margin:0 0 .8rem;color:#06285f;font-size:clamp(1.25rem,2vw,1.55rem);line-height:1.3}
.news-card h2 a,.news-card h3 a{color:inherit;text-decoration:none}
.news-card p{margin:0 0 1.35rem;color:#586a80;line-height:1.72}
.news-card-link{display:inline-flex;align-items:center;gap:.45rem;margin-top:auto;color:#0b5ed7;font-weight:800;text-decoration:none}
.news-card-link i{transition:transform .2s ease}.news-card-link:hover i{transform:translateX(4px)}
.news-pagination{display:flex;align-items:center;justify-content:center;gap:1.2rem;margin-top:2.2rem;color:#53647a}
.news-pagination a{display:inline-flex;align-items:center;gap:.45rem;padding:.75rem 1rem;border:1px solid #dce4ee;border-radius:12px;color:#06285f;font-weight:700;text-decoration:none;background:#fff}
.news-empty{max-width:620px;margin:0 auto;padding:4rem 2rem;text-align:center;border:1px dashed #cbd6e4;border-radius:24px;background:#f8fafc}
.news-empty>span{display:grid;place-items:center;width:72px;height:72px;margin:0 auto 1.25rem;border-radius:22px;background:#e9f1ff;color:#0b5ed7;font-size:2rem}
.news-empty h2{color:#06285f}
.news-detail-header{padding:clamp(3.5rem,8vw,6.8rem) 0;background:linear-gradient(135deg,#06285f,#0c468b);color:#fff}
.news-detail-header h1{color:#fff}
.news-detail-header>div>p{color:#dbe8ff}
.news-detail-header-inner{display:flex;flex-direction:column;align-items:flex-start}
.news-back-link{display:inline-flex;align-items:center;gap:.45rem;margin-bottom:2rem;color:#fff;font-weight:700;text-decoration:none;opacity:.9}
.news-detail-meta{display:flex;flex-wrap:wrap;gap:.8rem;margin-bottom:.8rem;color:#dbe8ff;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em}
.news-detail-meta span{color:#ffd977}
.news-detail-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:3.5rem;padding-top:clamp(3rem,6vw,5rem);padding-bottom:clamp(4rem,7vw,6rem)}
.news-detail-content{color:#263850;font-size:1.08rem;line-height:1.9}
.news-detail-content p{margin:0 0 1.35rem}
.news-detail-aside>div{position:sticky;top:110px;padding:1.6rem;border:1px solid #dfe6ef;border-radius:22px;background:#f8fafc}
.news-detail-aside h2{margin:.55rem 0 .75rem;color:#06285f;font-size:1.45rem}
.news-detail-aside p{color:#5d6e83;line-height:1.7}
.news-related{background:#f7f9fc}

@media(max-width:1000px){.news-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.news-detail-layout{grid-template-columns:1fr}.news-detail-aside>div{position:static}}
@media(max-width:680px){.news-hero-inner{grid-template-columns:1fr}.news-hero-mark{display:none}.news-card-grid{grid-template-columns:1fr}.news-card{min-height:auto}.news-pagination{flex-wrap:wrap}.news-detail-layout{gap:2rem}.news-list-section,.home-news,.news-related{padding:3.5rem 0}}

/* Navigation FAQ par sommaire, utilisable au toucher et au clavier. */
.faq-navigation a.is-active,
.faq-navigation a[aria-current="location"] {
  background: var(--ba-blue-100);
  color: var(--ba-navy-900);
  box-shadow: inset 3px 0 0 var(--ba-gold-500);
}
@media (max-width: 991.98px) {
  .faq-navigation {
    position: sticky;
    top: 72px;
    z-index: 20;
    display: flex;
    overflow-x: auto;
    align-items: center;
    gap: 6px;
    padding: 12px;
    scrollbar-width: thin;
  }
  .faq-navigation > span { flex: none; margin: 0 6px 0 0; }
  .faq-navigation a { flex: none; white-space: nowrap; }
  .faq-navigation a.is-active,
  .faq-navigation a[aria-current="location"] { box-shadow: inset 0 -3px 0 var(--ba-gold-500); }
}


/* -------------------- Visuels illustrés des services -------------------- */
.service-feature-section {
  overflow: clip;
}
.service-feature-section.public-section-light {
  background: linear-gradient(180deg, #ffffff 0%, #f7faff 100%);
}
.service-feature-section.public-section-warm {
  background: linear-gradient(180deg, #fffaf0 0%, #fff4da 100%);
}
.service-visual-board {
  isolation: isolate;
  border: 1px solid rgba(6,40,95,.08);
}
.service-visual-board::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(255,255,255,.08), rgba(255,255,255,.82));
  z-index: 0;
}
.service-visual-figure {
  position: absolute;
  inset: 0;
  margin: 0;
  z-index: -1;
}
.service-visual-figure img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.service-visual-main,
.service-visual-chip,
.service-visual-progress,
.exam-calendar,
.exam-track,
.exam-note,
.training-screen,
.training-skill {
  z-index: 1;
}
.service-visual-main {
  top: 16%;
  width: 50%;
  backdrop-filter: blur(4px);
}
.service-visual-chip,
.exam-note,
.training-skill {
  backdrop-filter: blur(6px);
}
.service-chip-one { top: 10%; left: 4%; }
.service-chip-two { top: 29%; right: 4%; }
.service-chip-three { bottom: 18%; left: 6%; }
.service-visual-progress { right: 8%; bottom: 10%; left: 8%; }
.exam-calendar { background: rgba(255,255,255,.94); }
.exam-note { background: rgba(6,40,95,.94); }
.training-screen { background: rgba(6,40,95,.92); }
.training-skill { background: rgba(255,255,255,.95); }

@media (max-width: 767.98px) {
  .service-visual-main {
    width: 58%;
    top: 14%;
  }
  .service-visual-chip {
    font-size: .72rem;
  }
  .exam-note {
    width: 48%;
  }
}

/* Profil enseignant enrichi */
.teacher-detail-professional-title { margin: 8px 0 12px; color: var(--ba-navy-800); font-weight: 800; line-height: 1.4; }
.teacher-public-method-grid { display: grid; gap: 14px; grid-template-columns: repeat(2,minmax(0,1fr)); }
.teacher-public-method-grid article { padding: 18px; border: 1px solid rgba(6,40,95,.1); border-radius: 17px; background: #f9fbff; }
.teacher-public-method-grid h3 { margin: 0 0 12px; color: var(--ba-ink); font-size: .85rem; font-weight: 850; }
.teacher-public-chip-list { display: flex; flex-wrap: wrap; gap: 7px; }
.teacher-public-chip-list span { padding: 6px 9px; border-radius: 999px; background: var(--ba-blue-100); color: var(--ba-navy-800); font-size: .68rem; font-weight: 800; }
.teacher-competency-card--detailed { grid-column: span 2; }
.teacher-skill-description { margin-top: 12px !important; color: var(--ba-copy) !important; line-height: 1.65; }
.teacher-skill-facts { display: grid; gap: 8px; margin: 16px 0 0; }
.teacher-skill-facts div { display: grid; grid-template-columns: 90px minmax(0,1fr); gap: 10px; }
.teacher-skill-facts dt { color: var(--ba-muted); font-size: .7rem; }
.teacher-skill-facts dd { margin: 0; color: var(--ba-ink); font-size: .76rem; font-weight: 650; }
@media (max-width: 767.98px) { .teacher-public-method-grid { grid-template-columns: minmax(0,1fr); } .teacher-competency-card--detailed { grid-column: auto; } .teacher-skill-facts div { grid-template-columns: minmax(0,1fr); gap: 2px; } }

/* ========================================================================== 
   Cartes Services V2 — composition stable sans superpositions absolues
   ========================================================================== */
.service-showcase {
  container-type: inline-size;
  width: min(100%, 590px);
  margin-inline: auto;
  overflow: hidden;
  border: 1px solid rgba(6,40,95,.1);
  border-radius: 30px;
  background: #fff;
  box-shadow: 0 24px 62px rgba(6,40,95,.15);
}
.service-showcase--support { background: linear-gradient(180deg,#eef5ff,#fff); }
.service-showcase--exam { background: linear-gradient(180deg,#fff6df,#fffdf8); }
.service-showcase--training { background: linear-gradient(180deg,#f4efff,#fff); }
.service-showcase__media {
  height: clamp(230px, 54cqw, 320px);
  margin: 0;
  overflow: hidden;
  background: rgba(255,255,255,.65);
}
.service-showcase__media img { display:block; width:100%; height:100%; object-fit:cover; object-position:center; }
.service-showcase__body { display:grid; gap:16px; padding:20px; }
.service-showcase__message {
  display:grid;
  grid-template-columns: 54px minmax(0,1fr);
  align-items:center;
  gap:14px;
  min-width:0;
  padding:16px 18px;
  border-radius:20px;
  background:var(--ba-navy-900);
  color:#fff;
  box-shadow:0 14px 30px rgba(6,40,95,.18);
}
.service-showcase__message > span { display:grid; width:54px; height:54px; place-items:center; border-radius:17px; background:rgba(246,168,0,.14); color:var(--ba-gold-300); font-size:1.45rem; }
.service-showcase__message strong,.service-showcase__message small { display:block; overflow-wrap:anywhere; }
.service-showcase__message strong { font-size:1rem; line-height:1.3; }
.service-showcase__message small { margin-top:4px; color:rgba(255,255,255,.72); font-size:.76rem; line-height:1.45; }
.service-showcase__message--compact { padding:15px; }
.service-showcase__tags { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.service-showcase__tags span {
  display:flex; min-width:0; align-items:center; justify-content:center; gap:8px;
  padding:12px 13px; border:1px solid rgba(6,40,95,.1); border-radius:15px;
  background:#fff; color:var(--ba-navy-800); font-size:.76rem; font-weight:800;
  text-align:center; overflow-wrap:anywhere; box-shadow:0 8px 20px rgba(6,40,95,.06);
}
.service-showcase__tags span:last-child:nth-child(odd) { grid-column:1/-1; }
.service-showcase__tags--three { grid-template-columns:repeat(3,minmax(0,1fr)); }
.service-showcase__tags--three span:last-child:nth-child(odd) { grid-column:auto; }
.service-showcase__progress { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; padding:3px; }
.service-showcase__progress span { height:8px; border-radius:999px; background:#dbe4f2; }
.service-showcase__progress span:nth-child(-n+3) { background:linear-gradient(90deg,var(--ba-blue-700),#2681ed); }
.service-showcase__body--exam { grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:stretch; }
.service-exam-goal {
  display:grid; min-height:156px; place-items:center; padding:20px; border:1px solid rgba(178,103,0,.13);
  border-radius:22px; background:#fff; text-align:center; box-shadow:0 12px 28px rgba(139,95,0,.08);
}
.service-exam-goal span { color:var(--ba-muted); font-size:.7rem; font-weight:800; letter-spacing:.16em; text-transform:uppercase; }
.service-exam-goal strong { color:var(--ba-navy-950); font-family:"DM Serif Display",Georgia,serif; font-size:clamp(1.65rem,6cqw,2.4rem); font-weight:400; }
.service-exam-goal i { color:var(--ba-green-700); font-size:1.8rem; }
.service-exam-track { grid-column:1/-1; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:0; margin:2px 0 0; padding:0; list-style:none; }
.service-exam-track li { position:relative; min-width:0; padding-top:24px; color:var(--ba-muted); font-size:.66rem; text-align:center; overflow-wrap:anywhere; }
.service-exam-track li::before { content:""; position:absolute; top:2px; left:50%; width:14px; height:14px; border:3px solid #fff; border-radius:50%; background:#cbd5e3; box-shadow:0 0 0 1px #b9c6d8; transform:translateX(-50%); z-index:1; }
.service-exam-track li::after { content:""; position:absolute; top:8px; left:50%; width:100%; height:2px; background:#d8e0eb; }
.service-exam-track li:last-child::after { display:none; }
.service-exam-track li.is-done::before { background:var(--ba-gold-500); box-shadow:0 0 0 1px var(--ba-gold-500); }
.service-exam-track li.is-done::after { background:var(--ba-gold-400); }
.service-training-screen { position:relative; display:grid; min-height:132px; place-items:center; gap:8px; padding:28px 20px 20px; border-radius:22px; background:var(--ba-navy-900); color:#fff; text-align:center; }
.service-training-screen > i { color:var(--ba-gold-300); font-size:2rem; }
.service-training-screen strong { font-size:1rem; }
.service-training-screen__dots { position:absolute; top:14px; left:16px; display:flex; gap:5px; }
.service-training-screen__dots i { width:7px; height:7px; border-radius:50%; background:rgba(255,255,255,.32); }

@container (max-width: 440px) {
  .service-showcase__body { padding:16px; gap:12px; }
  .service-showcase__message { grid-template-columns:46px minmax(0,1fr); padding:14px; }
  .service-showcase__message > span { width:46px; height:46px; border-radius:14px; }
  .service-showcase__body--exam { grid-template-columns:minmax(0,1fr); }
  .service-exam-track { grid-column:1; }
  .service-showcase__tags--three { grid-template-columns:minmax(0,1fr); }
  .service-showcase__tags--three span:last-child:nth-child(odd) { grid-column:auto; }
}
@media (max-width: 767.98px) {
  .service-showcase { border-radius:24px; }
  .service-showcase__media { height:clamp(210px,70vw,300px); }
  .service-showcase__message strong { font-size:.94rem; }
  .service-showcase__tags span { font-size:.72rem; padding:11px 9px; }
}
