/* ============================================
   ESDP – CHARTE GRAPHIQUE
   Modifiez uniquement ce fichier pour changer
   les couleurs sur tout le site.
   ============================================ */

:root {
  --color-header:        #1c4f57;
  --color-footer:        #143a40;
  --color-primary:       #143a40;
  --color-primary-hover: #1c4f57;
  --color-dark:          #282828;
  --color-dark-hover:    #3a3a3a;
  --color-white:         #FFFFFF;
  --color-off-white:     #F5F6F4;
  --color-border:        #DCDDD9;
  --color-text-dark:     #282828;
  --color-text-mid:      #555555;
  --color-text-light:    #888888;
}

*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

html { scroll-behavior: smooth; }

body {
  font-family: 'DM Sans', sans-serif;
  color: var(--color-text-dark);
  background: var(--color-white);
  font-size: 16px;
  line-height: 1.7;
}



/* PAGE WRAPPER */
.page-content { padding-top: 72px; }

/* HERO */
.hero {
  height: 100vh;
  position: relative;
  overflow: hidden;
  display: flex; align-items: flex-end;
  padding: 0 4rem 6rem;
}

.hero-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}

.hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(20,58,64,0.93) 0%, rgba(20,58,64,0.55) 55%, rgba(20,58,64,0.25) 100%);
}

.hero-line {
  display: none;
}

.hero-content { position: relative; z-index: 2; max-width: 780px; }

.hero-eyebrow {
  font-size: 0.75rem; font-weight: 500;
  letter-spacing: 0.2em; text-transform: uppercase;
  color: rgba(255,255,255,0.6); margin-bottom: 1.5rem;
}

.hero h1 {
  font-family: 'Playfair Display', serif;
  font-size: clamp(2.5rem, 5vw, 4.5rem);
  font-weight: 500; color: var(--color-white);
  line-height: 1.15; margin-bottom: 1.5rem;
}

.hero h1 em { font-style: italic; color: rgba(255,255,255,0.7); }

.hero-desc {
  font-size: 1.05rem; color: rgba(255,255,255,0.65);
  max-width: 560px; margin-bottom: 2.5rem; font-weight: 300;
}

.hero-actions { display: flex; gap: 1rem; align-items: center; }

/* BOUTONS */
.btn-primary {
  background: var(--color-white); color: var(--color-primary);
  padding: 0.875rem 2rem; font-size: 0.875rem;
  font-weight: 500; letter-spacing: 0.05em;
  text-decoration: none; text-transform: uppercase;
  transition: background 0.2s; display: inline-block;
}

.btn-primary:hover { background: var(--color-off-white); }

.btn-secondary {
  color: rgba(255,255,255,0.75); font-size: 0.875rem;
  text-decoration: none; letter-spacing: 0.03em;
  border-bottom: 1px solid rgba(255,255,255,0.3);
  padding-bottom: 2px; transition: color 0.2s, border-color 0.2s;
}

.btn-secondary:hover { color: var(--color-white); border-color: var(--color-white); }

.btn-white {
  background: var(--color-white); color: var(--color-primary);
  padding: 0.875rem 2rem; font-size: 0.875rem;
  font-weight: 500; letter-spacing: 0.05em;
  text-decoration: none; text-transform: uppercase;
  white-space: nowrap; flex-shrink: 0; transition: background 0.2s;
  display: inline-block;
}

.btn-white:hover { background: var(--color-off-white); }

.btn-dark {
  background: var(--color-dark); color: var(--color-white);
  padding: 0.875rem 2.5rem; font-size: 0.875rem;
  font-weight: 500; letter-spacing: 0.05em;
  text-decoration: none; text-transform: uppercase;
  transition: background 0.2s; display: inline-block;
}

.btn-dark:hover { background: var(--color-dark-hover); }

.link-nav {
  font-size: 0.8rem; color: var(--color-dark);
  text-decoration: none;
  border-bottom: 1px solid var(--color-dark);
  padding-bottom: 2px; letter-spacing: 0.05em;
}

/* STATS BAR */
.stats-bar {
  background: var(--color-dark);
  padding: 2.5rem 4rem;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}

.stat {
  text-align: center; padding: 0 1rem;
  border-right: 1px solid rgba(255,255,255,0.1);
}

.stat:last-child { border-right: none; }

.stat-number {
  font-family: 'Playfair Display', serif;
  font-size: 2.25rem; font-weight: 500;
  color: var(--color-white); display: block;
}

.stat-label {
  font-size: 0.75rem; color: rgba(255,255,255,0.45);
  text-transform: uppercase; letter-spacing: 0.12em; margin-top: 0.25rem;
}

/* SECTIONS COMMUNES */
section { padding: 6rem 4rem; }

.section-eyebrow {
  font-size: 0.7rem; font-weight: 500;
  letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--color-primary); margin-bottom: 1rem;
}

.section-title {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.8rem, 3vw, 2.8rem);
  font-weight: 500; color: var(--color-dark);
  line-height: 1.25; max-width: 640px; margin-bottom: 1.5rem;
}

.section-lead {
  font-size: 1rem; color: var(--color-text-mid);
  max-width: 600px; font-weight: 300; line-height: 1.8;
}

/* PAGE INTÉRIEURE */
.page-hero {
  background: var(--color-primary);
  padding: 5rem 4rem 4rem;
  margin-top: 0;
}

.page-hero .section-eyebrow { color: rgba(255,255,255,0.5); }
.page-hero .section-title { color: var(--color-white); max-width: 800px; }
.page-hero .section-lead { color: rgba(255,255,255,0.65); }

/* POSITIONNEMENT */
.positioning {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 0; padding: 0;
}

.pos-content { padding: 6rem 4rem; background: var(--color-white); }

.positioning-visual { position: relative; overflow: hidden; min-height: 520px; }

.positioning-visual img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center; display: block;
}

.positioning-visual::after {
  content: ''; position: absolute; bottom: 0; left: 0;
  width: 100%; height: 4px; background: var(--color-primary);
}

/* FORMATIONS */
.formations { background: var(--color-off-white); }

.formations-header {
  display: flex; justify-content: space-between;
  align-items: flex-end; margin-bottom: 3rem;
}

.formations-grid {
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: 1.5px; background: var(--color-border);
  border: 1.5px solid var(--color-border);
}

.formation-card {
  background: var(--color-white); padding: 2.5rem;
  transition: background 0.25s;
}

.formation-card:hover { background: var(--color-primary); }
.formation-card:hover .formation-level { color: rgba(255,255,255,0.5); }
.formation-card:hover .formation-title,
.formation-card:hover .formation-desc { color: var(--color-white); }
.formation-card:hover .formation-link { color: var(--color-white); border-color: rgba(255,255,255,0.4); }
.formation-card:hover .formation-tag { background: rgba(255,255,255,0.1); color: rgba(255,255,255,0.7); }
.formation-card:hover .formation-spec-title { color: var(--color-white); }
.formation-card:hover .formation-spec-desc { color: rgba(255,255,255,0.65); }
.formation-card:hover .formation-spec-tag { color: rgba(255,255,255,0.45); }
.formation-card:hover .formation-spec-link { color: rgba(255,255,255,0.85); }
.formation-card:hover .formation-specs { border-color: rgba(255,255,255,0.15); }
.formation-card:hover .formation-spec { border-color: rgba(255,255,255,0.15); }
.formation-card:hover .formation-spec-code { color: rgba(255,255,255,0.9); }

.formation-level {
  font-size: 0.7rem; font-weight: 500;
  letter-spacing: 0.2em; text-transform: uppercase;
  color: var(--color-primary); margin-bottom: 1rem; transition: color 0.25s;
}

.formation-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.3rem; font-weight: 500;
  color: var(--color-dark); line-height: 1.3;
  margin-bottom: 1rem; transition: color 0.25s;
}

.formation-desc {
  font-size: 0.875rem; color: var(--color-text-mid);
  line-height: 1.7; margin-bottom: 1.5rem; transition: color 0.25s;
}

.formation-tag {
  display: inline-block; background: var(--color-off-white);
  padding: 0.3rem 0.75rem; font-size: 0.7rem;
  letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--color-text-mid); margin-bottom: 1.5rem; transition: all 0.25s;
}

.formation-link {
  font-size: 0.8rem; color: var(--color-primary);
  text-decoration: none; border-bottom: 1px solid var(--color-primary);
  padding-bottom: 2px; letter-spacing: 0.05em;
  transition: color 0.25s, border-color 0.25s;
}

/* PEDAGOGIE */
.pedagogie { background: var(--color-dark); color: var(--color-white); }
.pedagogie .section-title { color: var(--color-white); }
.pedagogie .section-lead { color: rgba(255,255,255,0.55); }
.pedagogie .section-eyebrow { color: rgba(255,255,255,0.4); }

.pilliers {
  display: grid; grid-template-columns: repeat(2, 1fr);
  margin-top: 4rem;
  border: 1px solid rgba(255,255,255,0.08);
}

.pillier {
  padding: 2.5rem;
  border-right: 1px solid rgba(255,255,255,0.08);
  border-bottom: 1px solid rgba(255,255,255,0.08);
}

.pillier:nth-child(2n) { border-right: none; }
.pillier:nth-last-child(-n+2) { border-bottom: none; }

.pillier-num {
  font-family: 'Playfair Display', serif;
  font-size: 3rem; color: rgba(255,255,255,0.08);
  line-height: 1; margin-bottom: 1rem;
}

.pillier-title { font-size: 0.95rem; font-weight: 500; color: var(--color-white); margin-bottom: 0.75rem; }

.pillier-text { font-size: 0.875rem; color: rgba(255,255,255,0.45); line-height: 1.7; font-weight: 300; }

/* LOCALISATION */
.localisation { display: grid; grid-template-columns: 1fr 1fr; padding: 0; }

.loc-content { padding: 6rem 4rem; background: var(--color-white); }

.loc-map {
  background: var(--color-off-white);
  min-height: 500px; display: flex;
  align-items: center; justify-content: center;
  border-left: 1px solid var(--color-border);
}

.loc-map-inner { text-align: center; padding: 2rem; }

.loc-map-city {
  font-family: 'Playfair Display', serif;
  font-size: 1.5rem; color: var(--color-dark); margin-bottom: 0.5rem;
}

.loc-map-sub {
  font-size: 0.8rem; color: var(--color-text-light);
  letter-spacing: 0.1em; text-transform: uppercase;
}

.loc-infos { margin-top: 2.5rem; display: flex; flex-direction: column; gap: 1rem; }

.loc-info { display: flex; gap: 1rem; font-size: 0.875rem; color: var(--color-text-mid); }

.loc-info-label { font-weight: 500; color: var(--color-dark); min-width: 80px; }

/* PLAQUETTE */
.plaquette {
  background: var(--color-primary); padding: 5rem 4rem;
  display: flex; align-items: center;
  justify-content: space-between; gap: 3rem;
}

.plaquette-title {
  font-family: 'Playfair Display', serif;
  font-size: 2rem; color: var(--color-white);
  font-weight: 500; max-width: 500px; line-height: 1.3;
}

/* CTA FINAL */
.cta-final {
  background: var(--color-off-white); text-align: center;
  padding: 7rem 4rem; border-top: 1px solid var(--color-border);
}

.cta-final .section-title { margin: 0 auto 1.5rem; }
.cta-final .section-lead { margin: 0 auto 2.5rem; text-align: center; }

/* FOOTER */
footer {
  background: var(--color-footer); padding: 3rem 4rem;
  display: flex; justify-content: space-between; align-items: center;
  border-top: 1px solid rgba(255,255,255,0.05);
}

.footer-logo img { height: 36px; width: auto; }
.footer-copy { font-size: 0.8rem; color: rgba(255,255,255,0.3); }
.footer-links { display: flex; gap: 2rem; list-style: none; }
.footer-links a { font-size: 0.8rem; color: rgba(255,255,255,0.4); text-decoration: none; transition: color 0.2s; }
.footer-links a:hover { color: var(--color-white); }

/* ============================================
   FOOTER
   ============================================ */

.footer-main {
  background: #143a40;
  padding: 4rem 4rem 0;
}

.footer-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr;
  gap: 4rem;
  padding-bottom: 3rem;
  border-bottom: 1px solid rgba(255,255,255,0.08);
}

.footer-logo-img {
  height: 60px;
  width: auto;
  margin-bottom: 1.5rem;
  display: block;
  filter: brightness(0) invert(1);
}

.footer-adresse {
  font-size: 0.875rem;
  color: rgba(255,255,255,0.5);
  line-height: 1.7;
  margin-bottom: 1rem;
}

.footer-contact-infos {
  display: flex;
  flex-direction: column;
  gap: 0.3rem;
  margin-bottom: 1rem;
}

.footer-contact-infos a {
  font-size: 0.875rem;
  color: rgba(255,255,255,0.6);
  text-decoration: none;
  transition: color 0.2s;
}

.footer-contact-infos a:hover { color: var(--color-white); }

.footer-siret {
  font-size: 0.75rem;
  color: rgba(255,255,255,0.25);
  margin-top: 0.5rem;
}

.footer-col-title {
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.4);
  margin-bottom: 1.25rem;
}

.footer-links-list {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
}

.footer-links-list a {
  font-size: 0.875rem;
  color: rgba(255,255,255,0.55);
  text-decoration: none;
  transition: color 0.2s;
  line-height: 1.4;
}

.footer-links-list a:hover { color: var(--color-white); }

.footer-legal {
  padding: 1.5rem 0 2rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}

.footer-legal-copy {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.3);
}

.footer-legal-links {
  display: flex;
  gap: 1.5rem;
  list-style: none;
}

.footer-legal-links a {
  font-size: 0.75rem;
  color: rgba(255,255,255,0.35);
  text-decoration: none;
  transition: color 0.2s;
}

.footer-legal-links a:hover { color: rgba(255,255,255,0.7); }

.footer-legal-mention {
  font-size: 0.72rem;
  color: rgba(255,255,255,0.2);
  line-height: 1.6;
  max-width: 800px;
  font-style: italic;
}

/* ============================================
   CONTACT
   ============================================ */

.contact-section { padding: 5rem 4rem; background: var(--color-white); }

.contact-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 5rem;
  align-items: start;
}

.contact-subtitle {
  font-family: 'Playfair Display', serif;
  font-size: 1.4rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 2rem;
}

.contact-form { display: flex; flex-direction: column; gap: 1.25rem; }

.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }

.form-group { display: flex; flex-direction: column; gap: 0.4rem; }

.form-group label {
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--color-dark);
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.form-group input,
.form-group select,
.form-group textarea {
  border: 1px solid var(--color-border);
  padding: 0.75rem 1rem;
  font-family: 'DM Sans', sans-serif;
  font-size: 0.9rem;
  color: var(--color-text-dark);
  background: var(--color-white);
  outline: none;
  transition: border-color 0.2s;
  border-radius: 0;
  width: 100%;
}

.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus { border-color: var(--color-primary); }

.form-group textarea { resize: vertical; }

.contact-info-block {
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--color-border);
}

.contact-info-block:first-of-type { border-top: 1px solid var(--color-border); }

.contact-info-label {
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-primary);
  margin-bottom: 0.4rem;
}

.contact-info-value {
  font-size: 0.9rem;
  color: var(--color-text-mid);
  line-height: 1.6;
}

.contact-info-value a {
  color: var(--color-primary);
  text-decoration: none;
  border-bottom: 1px solid var(--color-primary);
  padding-bottom: 1px;
}

.contact-map {
  margin-top: 2rem;
  border: 1px solid var(--color-border);
  overflow: hidden;
}

/* ============================================
   NAVIGATION
   ============================================ */

nav {
  transition: height 0.3s ease, background 0.3s ease, box-shadow 0.3s ease;
  background: rgba(255,255,255,0.97);
  padding: 0.5rem 4rem;
  height: auto;
  box-shadow: none;
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

nav.scrolled {
  height: 60px;
  padding: 0 4rem;
  background: #282828;
  box-shadow: 0 2px 20px rgba(0,0,0,0.15);
}

.nav-logo {
  display: flex;
  align-items: center;
  gap: 1rem;
  text-decoration: none;
  flex-shrink: 0;
}

.logo-petit { display: none !important; }
.logo-grand { display: block; height: 91px; transition: height 0.3s ease; }
nav.scrolled .logo-grand { display: none !important; }
nav.scrolled .logo-petit { display: block !important; height: 44px; }

.nav-logo-text { display: none; flex-direction: column; }
nav.scrolled .nav-logo-text { display: flex; }

.nav-logo-title {
  font-size: 0.8rem;
  font-weight: 500;
  color: rgba(255,255,255,0.9);
  line-height: 1.2;
  letter-spacing: 0.03em;
}

.nav-logo-sub {
  font-size: 0.7rem;
  color: rgba(255,255,255,0.5);
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.nav-links { display: flex; gap: 0; list-style: none; align-items: center; }

.nav-links > li { position: relative; }

.nav-links > li > a {
  color: rgba(0,0,0,0.7);
  text-decoration: none;
  font-size: 0.875rem;
  font-weight: 400;
  letter-spacing: 0.03em;
  transition: color 0.2s;
  padding: 0.5rem 1rem;
  display: block;
  white-space: nowrap;
}

.nav-links > li > a:hover { color: var(--color-primary); }
nav.scrolled .nav-links > li > a { color: rgba(255,255,255,0.75); }
nav.scrolled .nav-links > li > a:hover { color: var(--color-white); }
.nav-links > li > a.active { color: var(--color-primary); font-weight: 500; }
nav.scrolled .nav-links > li > a.active { color: var(--color-white); }

.has-submenu > a::after {
  content: '';
  display: inline-block;
  width: 6px; height: 6px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg);
  margin-left: 6px;
  vertical-align: middle;
  margin-top: -3px;
  transition: transform 0.2s;
}

.has-submenu:hover > a::after { transform: rotate(-135deg); margin-top: 2px; }

.submenu {
  display: none;
  position: absolute;
  top: 100%;
  left: 0;
  background: var(--color-white);
  min-width: 260px;
  border-top: 2px solid var(--color-primary);
  box-shadow: 0 8px 30px rgba(0,0,0,0.12);
  z-index: 200;
  padding: 0.5rem 0;
}

.has-submenu:hover .submenu { display: block; }

.submenu li { list-style: none; }

.submenu a {
  display: block;
  padding: 0.65rem 1.5rem;
  font-size: 0.85rem;
  color: var(--color-dark);
  text-decoration: none;
  transition: background 0.15s, color 0.15s;
  border-left: 2px solid transparent;
}

.submenu a:hover {
  background: var(--color-off-white);
  color: var(--color-primary);
  border-left-color: var(--color-primary);
}

.nav-ctas { display: flex; gap: 0.75rem; align-items: center; margin-left: 1.5rem; }

.btn-ghost-nav {
  border: 1.5px solid var(--color-primary);
  color: var(--color-primary);
  padding: 0.45rem 1.1rem;
  font-size: 0.8rem;
  font-weight: 500;
  text-decoration: none;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  transition: all 0.2s;
  white-space: nowrap;
}

.btn-ghost-nav:hover { background: var(--color-primary); color: var(--color-white); }

nav.scrolled .btn-ghost-nav {
  border-color: rgba(255,255,255,0.5);
  color: rgba(255,255,255,0.8);
}

nav.scrolled .btn-ghost-nav:hover { background: rgba(255,255,255,0.15); color: var(--color-white); }

.btn-full-nav {
  background: var(--color-primary);
  color: var(--color-white);
  padding: 0.45rem 1.1rem;
  font-size: 0.8rem;
  font-weight: 500;
  text-decoration: none;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  transition: background 0.2s;
  white-space: nowrap;
}

.btn-full-nav:hover { background: var(--color-primary-hover); }
nav.scrolled .btn-full-nav { background: var(--color-white); color: var(--color-primary); }
nav.scrolled .btn-full-nav:hover { background: var(--color-off-white); }

/* ============================================
   PAGE HERO (pages intérieures)
   ============================================ */

.page-hero {
  background: var(--color-primary);
  padding: 8rem 4rem 5rem;
}

.page-hero .section-eyebrow { color: rgba(255,255,255,0.5); }
.page-hero .section-title { color: var(--color-white); max-width: 800px; }
.page-hero .section-lead { color: rgba(255,255,255,0.65); }

/* ============================================
   A PROPOS
   ============================================ */

/* EDITO */
.apropos-edito { padding: 6rem 4rem; background: var(--color-white); }

.apropos-edito-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
}

.apropos-edito-visual {
  position: relative;
  overflow: hidden;
  height: 480px;
}

.apropos-edito-visual img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center;
}

.apropos-edito-visual::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0;
  width: 100%; height: 4px;
  background: var(--color-primary);
}

/* CHIFFRES */
.apropos-chiffres {
  background: var(--color-off-white);
  padding: 4rem;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.apropos-chiffres-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2rem;
  margin-bottom: 2rem;
}

.apropos-chiffre {
  text-align: center;
  padding: 0 1rem;
  border-right: 1px solid var(--color-border);
}

.apropos-chiffre:last-child { border-right: none; }

.apropos-chiffre-num {
  font-family: 'Playfair Display', serif;
  font-size: 2.75rem;
  font-weight: 500;
  color: var(--color-primary);
  display: block;
  margin-bottom: 0.5rem;
}

.apropos-chiffre-label {
  font-size: 0.8rem;
  color: var(--color-text-mid);
  line-height: 1.4;
  text-align: center;
  display: block;
}

.apropos-chiffres-mention {
  font-size: 0.72rem;
  color: var(--color-text-light);
  font-style: italic;
  text-align: center;
  max-width: 800px;
  margin: 0 auto;
  line-height: 1.6;
}

/* MISSION */
.apropos-mission { padding: 6rem 4rem; background: var(--color-white); }

.apropos-mission-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
}

.apropos-mission-visual {
  position: relative;
  overflow: hidden;
  height: 480px;
}

.apropos-mission-visual img {
  width: 100%; height: 100%;
  object-fit: cover;
}

/* VALEURS */
.apropos-valeurs {
  background: var(--color-dark);
  padding: 6rem 4rem;
}

.apropos-valeurs .section-eyebrow { color: rgba(255,255,255,0.4); }

.valeurs-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0;
  border: 1px solid rgba(255,255,255,0.08);
}

.valeur-card {
  padding: 2.5rem;
  border-right: 1px solid rgba(255,255,255,0.08);
  border-bottom: 1px solid rgba(255,255,255,0.08);
}

.valeur-card:nth-child(2n) { border-right: none; }
.valeur-card:nth-last-child(-n+2) { border-bottom: none; }

.valeur-num {
  font-family: 'Playfair Display', serif;
  font-size: 2.5rem;
  color: rgba(255,255,255,0.07);
  display: block;
  margin-bottom: 1rem;
  line-height: 1;
}

.valeur-title {
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-white);
  margin-bottom: 0.75rem;
}

.valeur-text {
  font-size: 0.875rem;
  color: rgba(255,255,255,0.45);
  line-height: 1.7;
  font-weight: 300;
}

/* EQUIPE */
.apropos-equipe { padding: 6rem 4rem; background: var(--color-white); }

.equipe-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 2rem;
  margin-bottom: 2.5rem;
}

.equipe-card {
  border: 1px solid var(--color-border);
  padding: 2rem;
}

.equipe-card-header {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  margin-bottom: 1.5rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--color-border);
}

.equipe-initiales {
  width: 52px; height: 52px;
  border-radius: 50%;
  background: var(--color-primary);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-white);
  flex-shrink: 0;
}

.equipe-nom {
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 0.25rem;
}

.equipe-titre {
  font-size: 0.8rem;
  color: var(--color-text-mid);
  line-height: 1.4;
}

.equipe-formation {
  font-size: 0.75rem;
  font-weight: 500;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-primary);
  margin-bottom: 0.75rem;
}

.equipe-desc {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.7;
  font-weight: 300;
}

.equipe-conclusion {
  font-size: 0.95rem;
  color: var(--color-text-mid);
  line-height: 1.8;
  font-style: italic;
  max-width: 800px;
  padding-top: 2rem;
  border-top: 1px solid var(--color-border);
}

/* TEMOIGNAGE */
.apropos-temoignage {
  background: var(--color-primary);
  padding: 5rem 4rem;
}

.temoignage-inner { max-width: 800px; margin: 0 auto; text-align: center; }

.temoignage-quote {
  font-family: 'Playfair Display', serif;
  font-size: 1.6rem;
  font-weight: 400;
  color: var(--color-white);
  line-height: 1.5;
  font-style: italic;
  margin-bottom: 1.5rem;
}

.temoignage-auteur {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.55);
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

/* IMPACT */
.apropos-impact { padding: 6rem 4rem; background: var(--color-off-white); }

.apropos-impact-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
}

.impact-liste {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.impact-item {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  font-size: 0.9rem;
  color: var(--color-text-mid);
  line-height: 1.6;
}

.impact-bullet {
  width: 8px; height: 8px;
  background: var(--color-primary);
  border-radius: 50%;
  flex-shrink: 0;
  margin-top: 0.4rem;
}

/* ============================================
   MISSION ET VALEURS
   ============================================ */

.mv-mission { padding: 6rem 4rem; background: var(--color-white); }

.mv-mission-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
}

.mv-mission-visual {
  position: relative;
  overflow: hidden;
  height: 480px;
}

.mv-mission-visual img {
  width: 100%; height: 100%;
  object-fit: cover;
}

.mv-mission-visual::after {
  content: '';
  position: absolute;
  bottom: 0; left: 0;
  width: 100%; height: 4px;
  background: var(--color-primary);
}

/* AXES */
.mv-axes {
  background: var(--color-off-white);
  padding: 4rem;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.mv-axe {
  padding: 2rem 2.5rem;
  border-right: 1px solid var(--color-border);
}

.mv-axe:last-child { border-right: none; }

.mv-axe-num {
  font-family: 'Playfair Display', serif;
  font-size: 2.5rem;
  color: var(--color-primary);
  opacity: 0.2;
  display: block;
  margin-bottom: 1rem;
  line-height: 1;
}

.mv-axe-title {
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 0.75rem;
}

.mv-axe-text {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.7;
  font-weight: 300;
}

/* VALEURS */
.mv-valeurs { padding: 6rem 4rem; background: var(--color-white); }

.mv-valeurs-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5px;
  background: var(--color-border);
  border: 1.5px solid var(--color-border);
}

.mv-valeur {
  background: var(--color-white);
  padding: 2.5rem;
  transition: background 0.25s;
}

.mv-valeur:hover { background: var(--color-off-white); }

.mv-valeur-header {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  margin-bottom: 1.25rem;
}

.mv-valeur-icon {
  font-family: 'Playfair Display', serif;
  font-size: 1.5rem;
  font-weight: 500;
  color: var(--color-primary);
  opacity: 0.4;
  flex-shrink: 0;
  min-width: 2rem;
}

.mv-valeur-title {
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-dark);
}

.mv-valeur-text {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.8;
  font-weight: 300;
}

/* RSE */
.mv-rse { padding: 6rem 4rem; background: var(--color-off-white); }

.mv-rse-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
}

.mv-rse-visual {
  overflow: hidden;
  height: 440px;
}

.mv-rse-visual img {
  width: 100%; height: 100%;
  object-fit: cover;
}

.mv-rse-liste {
  margin-top: 2rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

/* CITATION */
.mv-citation {
  background: var(--color-dark);
  padding: 5rem 4rem;
}

.mv-citation-inner {
  max-width: 800px;
  margin: 0 auto;
  text-align: center;
}

.mv-citation-text {
  font-family: 'Playfair Display', serif;
  font-size: 1.5rem;
  font-weight: 400;
  color: var(--color-white);
  line-height: 1.6;
  font-style: italic;
  margin-bottom: 1.5rem;
}

.mv-citation-source {
  font-size: 0.75rem;
  color: rgba(255,255,255,0.35);
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

/* ============================================
   EQUIPE ET PROJET PEDAGOGIQUE
   ============================================ */

.epp-section { padding: 6rem 4rem; background: var(--color-off-white); }

.epp-separateur {
  background: var(--color-primary);
  padding: 4rem;
  text-align: center;
}

.epp-objectifs-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
}

.epp-objectifs-visual {
  overflow: hidden;
  height: 440px;
}

.epp-objectifs-visual img {
  width: 100%; height: 100%;
  object-fit: cover;
}

.epp-competences {
  margin-top: 2rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.epp-competence {
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  font-size: 0.9rem;
  color: var(--color-text-mid);
  line-height: 1.6;
}

/* PILIERS */
.epp-piliers { padding: 6rem 4rem; background: var(--color-white); }

.piliers-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5px;
  background: var(--color-border);
  border: 1.5px solid var(--color-border);
}

.pilier-item {
  background: var(--color-white);
  padding: 2.5rem;
  transition: background 0.25s;
}

.pilier-item:hover { background: var(--color-primary); }
.pilier-item:hover .pilier-num { color: rgba(255,255,255,0.15); }
.pilier-item:hover .pilier-title,
.pilier-item:hover .pilier-text { color: var(--color-white); }

.pilier-num {
  font-family: 'Playfair Display', serif;
  font-size: 2.5rem;
  color: rgba(20,58,64,0.15);
  display: block;
  margin-bottom: 1rem;
  line-height: 1;
  transition: color 0.25s;
}

.pilier-title {
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 0.75rem;
  transition: color 0.25s;
}

.pilier-text {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.7;
  font-weight: 300;
  transition: color 0.25s;
}

.pilier-photo {
  padding: 0 !important;
  overflow: hidden;
}

.pilier-photo:hover {
  background: none !important;
}

.pilier-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* ORGANISATION */
.epp-organisation { padding: 6rem 4rem; background: var(--color-off-white); }

.epp-orga-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin-top: 3rem;
}

.epp-orga-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  padding: 2rem;
}

.epp-orga-niveau {
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-primary);
  margin-bottom: 0.75rem;
}

.epp-orga-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 1rem;
  line-height: 1.3;
}

.epp-orga-text {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.7;
  margin-bottom: 1.5rem;
  font-weight: 300;
}

.epp-orga-rythme {
  border-top: 1px solid var(--color-border);
  padding-top: 1rem;
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.epp-orga-rythme span {
  font-size: 0.7rem;
  color: var(--color-text-light);
  text-transform: uppercase;
  letter-spacing: 0.1em;
}

.epp-orga-rythme strong {
  font-size: 0.85rem;
  color: var(--color-dark);
  font-weight: 500;
}

/* METHODES */
.epp-methodes { background: var(--color-dark); padding: 5rem 4rem; }

.epp-methodes-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.08);
}

.epp-methode {
  padding: 1.5rem;
  font-size: 0.875rem;
  color: rgba(255,255,255,0.6);
  font-weight: 300;
  line-height: 1.5;
  background: var(--color-dark);
  transition: background 0.2s, color 0.2s;
}

.epp-methode:hover {
  background: var(--color-primary);
  color: var(--color-white);
}

/* ============================================
   PAGES LEGALES
   ============================================ */

.legal-section {
  padding: 5rem 4rem;
  background: var(--color-white);
  max-width: 900px;
  margin: 0 auto;
}

.legal-block {
  padding: 2.5rem 0;
  border-bottom: 1px solid var(--color-border);
}

.legal-block:last-child { border-bottom: none; }

.legal-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.3rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 1.25rem;
}

.legal-content p {
  font-size: 0.9rem;
  color: var(--color-text-mid);
  line-height: 1.8;
  margin-bottom: 0.75rem;
}

.legal-content p:last-child { margin-bottom: 0; }

.legal-content a {
  color: var(--color-primary);
  text-decoration: none;
  border-bottom: 1px solid var(--color-primary);
  padding-bottom: 1px;
}

.legal-content strong { color: var(--color-dark); font-weight: 500; }

.legal-liste {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  margin-top: 0.75rem;
}

.legal-liste li {
  font-size: 0.9rem;
  color: var(--color-text-mid);
  line-height: 1.6;
  padding-left: 1.25rem;
  position: relative;
}

.legal-liste li::before {
  content: '';
  position: absolute;
  left: 0; top: 0.6rem;
  width: 6px; height: 6px;
  background: var(--color-primary);
  border-radius: 50%;
}

/* COOKIES */
.cookies-type {
  margin-bottom: 2rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid var(--color-border);
}

.cookies-type:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }

.cookies-type-title {
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 0.5rem;
}

.cookies-type-badge {
  display: inline-block;
  background: var(--color-primary);
  color: var(--color-white);
  font-size: 0.7rem;
  padding: 0.2rem 0.75rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-bottom: 0.75rem;
  font-weight: 500;
}

.cookies-type-badge--opt {
  background: var(--color-dark);
}

/* ============================================
   ANIMATIONS ET EFFETS
   ============================================ */

/* FADE UP AU CHARGEMENT (hero) */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0); }
}

.animate-fade-up {
  opacity: 0;
  animation: fadeUp 0.8s ease forwards;
}

/* REVEAL AU SCROLL */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}

.reveal.revealed {
  opacity: 1;
  transform: translateY(0);
}

.reveal-right {
  transform: translateX(40px);
}

.reveal-right.revealed {
  transform: translateX(0);
}

/* PARALLAXE HERO */
.hero-parallax {
  will-change: transform;
  transform-origin: center center;
}

/* HOVER AMELIORE SUR LES CARTES FORMATION */
.formation-card {
  transform: translateY(0);
  box-shadow: none;
  transition: background 0.25s, transform 0.25s, box-shadow 0.25s;
}

.formation-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 12px 40px rgba(0,0,0,0.1);
}

/* HOVER SUR LES PILLIERS */
.pillier {
  transition: background 0.25s, padding-left 0.25s;
}

.pillier:hover {
  background: rgba(255,255,255,0.04);
  padding-left: 3rem;
}

/* HOVER SUR LES BOUTONS */
.btn-primary, .btn-white, .btn-dark, .btn-full-nav, .btn-ghost-nav {
  position: relative;
  overflow: hidden;
}

.btn-primary::after,
.btn-white::after,
.btn-dark::after {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255,255,255,0.08);
  transform: translateX(-100%);
  transition: transform 0.3s ease;
}

.btn-primary:hover::after,
.btn-white:hover::after,
.btn-dark:hover::after {
  transform: translateX(0);
}

/* HOVER IMAGE POSITIONING */
.positioning-visual img,
.apropos-edito-visual img,
.mv-mission-visual img,
.mv-rse-visual img {
  transition: transform 0.6s ease;
}

.positioning-visual:hover img,
.apropos-edito-visual:hover img,
.mv-mission-visual:hover img,
.mv-rse-visual:hover img {
  transform: scale(1.03);
}

/* ============================================
   COMMENT CANDIDATER
   ============================================ */

/* TIMELINE */
.cand-timeline {
  padding: 6rem 4rem;
  background: var(--color-white);
}

.timeline {
  max-width: 800px;
  margin: 0 auto;
  position: relative;
}

.timeline-item {
  display: grid;
  grid-template-columns: 60px 2px 1fr;
  gap: 0 2rem;
  margin-bottom: 3rem;
}

.timeline-item:last-child { margin-bottom: 0; }

.timeline-num {
  font-family: 'Playfair Display', serif;
  font-size: 1.5rem;
  font-weight: 500;
  color: var(--color-primary);
  text-align: right;
  padding-top: 0.25rem;
}

.timeline-bar {
  background: var(--color-primary);
  width: 2px;
  position: relative;
}

.timeline-bar::before {
  content: '';
  position: absolute;
  top: 8px; left: 50%;
  transform: translateX(-50%);
  width: 12px; height: 12px;
  background: var(--color-primary);
  border-radius: 50%;
}

.timeline-bar.last {
  background: linear-gradient(to bottom, var(--color-primary), transparent);
}

.timeline-content {
  padding: 0 0 3rem 0;
}

.timeline-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.3rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 0.75rem;
}

.timeline-text {
  font-size: 0.9rem;
  color: var(--color-text-mid);
  line-height: 1.8;
  margin-bottom: 1rem;
  font-weight: 300;
}

.timeline-tag {
  display: inline-block;
  background: var(--color-off-white);
  border: 1px solid var(--color-border);
  padding: 0.3rem 0.75rem;
  font-size: 0.7rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-primary);
  font-weight: 500;
}

/* DOCUMENTS */
.cand-docs {
  padding: 6rem 4rem;
  background: var(--color-off-white);
}

.cand-docs-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
}

.docs-liste {
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}

.doc-item {
  display: flex;
  align-items: flex-start;
  gap: 1.25rem;
  padding: 1.25rem;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  transition: border-color 0.2s, transform 0.2s;
}

.doc-item:hover {
  border-color: var(--color-primary);
  transform: translateX(4px);
}

.doc-item--opt { background: var(--color-white); }

.doc-icon {
  width: 44px; height: 44px;
  background: var(--color-primary);
  color: var(--color-white);
  display: flex; align-items: center; justify-content: center;
  font-size: 0.65rem;
  font-weight: 500;
  letter-spacing: 0.05em;
  flex-shrink: 0;
}

.doc-icon--opt { background: var(--color-dark); }

.doc-title {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 0.25rem;
}

.doc-desc {
  font-size: 0.8rem;
  color: var(--color-text-light);
  line-height: 1.5;
}

/* PREREQUIS */
.cand-prerequis {
  padding: 6rem 4rem;
  background: var(--color-white);
}

.prerequis-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5px;
  background: var(--color-border);
  border: 1.5px solid var(--color-border);
}

.prerequis-card {
  background: var(--color-white);
  padding: 2.5rem;
  transition: background 0.25s;
}

.prerequis-card:hover { background: var(--color-off-white); }

.prerequis-niveau {
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-primary);
  margin-bottom: 0.75rem;
}

.prerequis-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 1rem;
  line-height: 1.3;
}

.prerequis-desc {
  font-size: 0.85rem;
  color: var(--color-text-mid);
  margin-bottom: 1rem;
  font-weight: 300;
}

.prerequis-liste {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.prerequis-liste li {
  font-size: 0.85rem;
  color: var(--color-text-mid);
  padding-left: 1rem;
  position: relative;
}

.prerequis-liste li::before {
  content: '';
  position: absolute;
  left: 0; top: 0.55rem;
  width: 5px; height: 5px;
  background: var(--color-primary);
  border-radius: 50%;
}

/* ACCOMPAGNEMENT */
.cand-accompagnement {
  background: var(--color-dark);
  padding: 6rem 4rem;
}

.cand-accompagnement-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
}

.accomp-items {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}

.accomp-item {
  display: flex;
  align-items: flex-start;
  gap: 1.25rem;
  font-size: 0.9rem;
  color: rgba(255,255,255,0.65);
  line-height: 1.6;
  font-weight: 300;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid rgba(255,255,255,0.07);
}

.accomp-item:last-child { border-bottom: none; padding-bottom: 0; }

.accomp-num {
  font-family: 'Playfair Display', serif;
  font-size: 1.2rem;
  color: var(--color-primary);
  opacity: 0.6;
  flex-shrink: 0;
  min-width: 2rem;
}
/* ============================================
   BANNIERE COOKIES
   ============================================ */

#cookie-banner {
  position: fixed;
  bottom: 2rem;
  left: 50%;
  transform: translateX(-50%) translateY(150px);
  z-index: 9999;
  background: #fff;
  border: 1px solid #dcddd9;
  border-bottom: 3px solid var(--color-primary);
  padding: 2rem 2.5rem;
  width: 560px;
  max-width: calc(100vw - 2rem);
  box-shadow: 0 20px 60px rgba(0,0,0,0.15);
  transition: transform 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

#cookie-banner.visible {
  transform: translateX(-50%) translateY(0);
}

.cookie-icon {
  font-size: 1.5rem;
  margin-bottom: 0.75rem;
  display: block;
}

.cookie-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 0.5rem;
}

.cookie-header {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  margin-bottom: 0.75rem;
}

.cookie-logo {
  height: 36px;
  width: auto;
}

.cookie-text {
  font-size: 0.825rem;
  color: var(--color-text-mid);
  line-height: 1.7;
  margin-bottom: 1.5rem;
}

.cookie-text a {
  color: var(--color-primary);
  text-decoration: none;
  border-bottom: 1px solid var(--color-primary);
}

.cookie-actions {
  display: flex;
  gap: 0.75rem;
}

.cookie-btn {
  padding: 0.7rem 1.5rem;
  font-size: 0.8rem;
  font-weight: 500;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  border: none;
  cursor: pointer;
  font-family: 'DM Sans', sans-serif;
  transition: all 0.2s;
  flex: 1;
}

.cookie-btn--accept {
  background: var(--color-primary);
  color: var(--color-white);
}

.cookie-btn--accept:hover { background: var(--color-primary-hover); }

.cookie-btn--refuse {
  background: transparent;
  color: var(--color-text-mid);
  border: 1px solid var(--color-border);
}

.cookie-btn--refuse:hover {
  background: var(--color-off-white);
  color: var(--color-dark);
}

.epp-piliers-header {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
  margin-bottom: 3.5rem;
}

.epp-piliers-visual {
  overflow: hidden;
  height: 360px;
}

.epp-piliers-visual img {
  width: 100%; height: 100%;
  object-fit: cover;
}

.recruter-hero {
  height: 40vh;
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  padding: 0 4rem 4rem;
}

.recruter-hero-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center top;
}

.recruter-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(20,58,64,0.92) 0%, rgba(20,58,64,0.5) 55%, rgba(20,58,64,0.2) 100%);
}

.recruter-hero-content { position: relative; z-index: 2; }

.recruter-intro-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: start;
}

.recruter-avantages {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}

.recruter-avantage {
  display: flex;
  gap: 1.25rem;
  align-items: flex-start;
  padding-bottom: 2rem;
  border-bottom: 1px solid var(--color-border);
}

.recruter-avantage:last-child { border-bottom: none; padding-bottom: 0; }

.recruter-avantage-num {
  font-family: 'Playfair Display', serif;
  font-size: 1.5rem;
  color: var(--color-primary);
  opacity: 0.4;
  flex-shrink: 0;
  min-width: 2rem;
  line-height: 1;
  padding-top: 0.1rem;
}

.recruter-avantage-title {
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 0.4rem;
}

.recruter-avantage-text {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.7;
  font-weight: 300;
}

.recruter-formats {
  display: flex;
  flex-direction: column;
  gap: 3rem;
}

.recruter-format {
  display: grid;
  grid-template-columns: 1fr 1.5fr;
  gap: 3rem;
  align-items: center;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  overflow: hidden;
}

.recruter-format--reverse {
  grid-template-columns: 1.5fr 1fr;
}

.recruter-format--reverse .recruter-format-visual {
  order: 2;
}

.recruter-format--reverse .recruter-format-content {
  order: 1;
  padding-left: 3rem;
  padding-right: 0;
}

.recruter-format-visual {
  overflow: hidden;
  height: 280px;
}

.recruter-format-visual img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 0.6s ease;
}

.recruter-format:hover .recruter-format-visual img {
  transform: scale(1.04);
}

.recruter-format-content {
  padding: 2.5rem 3rem 2.5rem 0;
}

.recruter-format--reverse .recruter-format-content {
  padding: 2.5rem 0 2.5rem 3rem;
}

.recruter-format-tag {
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-primary);
  margin-bottom: 0.75rem;
}

.recruter-format-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.4rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 1rem;
}

.recruter-format-desc {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.8;
  margin-bottom: 1.25rem;
  font-weight: 300;
}

.recruter-format-liste {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}

.recruter-format-liste li {
  font-size: 0.8rem;
  color: var(--color-text-mid);
  padding-left: 1rem;
  position: relative;
}

.recruter-format-liste li::before {
  content: '';
  position: absolute;
  left: 0; top: 0.5rem;
  width: 5px; height: 5px;
  background: var(--color-primary);
  border-radius: 50%;
}

.recruter-profils {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5px;
  background: var(--color-border);
  border: 1.5px solid var(--color-border);
}

.recruter-profil {
  background: var(--color-white);
  padding: 2rem;
  transition: background 0.25s;
}

.recruter-profil:hover { background: var(--color-primary); }
.recruter-profil:hover .recruter-profil-niveau { color: rgba(255,255,255,0.5); }
.recruter-profil:hover .recruter-profil-title,
.recruter-profil:hover .recruter-profil-metiers { color: var(--color-white); }

.recruter-profil-niveau {
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: var(--color-primary);
  margin-bottom: 0.75rem;
  transition: color 0.25s;
}

.recruter-profil-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 0.75rem;
  line-height: 1.3;
  transition: color 0.25s;
}

.recruter-profil-metiers {
  font-size: 0.8rem;
  color: var(--color-text-light);
  line-height: 1.6;
  font-weight: 300;
  transition: color 0.25s;
}

.recruter-processus {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr;
  gap: 0;
  align-items: start;
}

.recruter-etape { text-align: center; padding: 0 1rem; }

.recruter-etape-num {
  width: 52px; height: 52px;
  background: var(--color-primary);
  color: var(--color-white);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 500;
  margin: 0 auto 1.25rem;
}

.recruter-etape-title {
  font-size: 0.95rem;
  font-weight: 500;
  color: var(--color-white);
  margin-bottom: 0.75rem;
}

.recruter-etape-text {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.45);
  line-height: 1.7;
  font-weight: 300;
}

.recruter-etape-sep {
  width: 1px;
  height: 52px;
  background: rgba(255,255,255,0.15);
  align-self: start;
  margin-top: 0;
}

/* ============================================
   FORMATION CONTINUE – fc-*
   ============================================ */

/* HERO */
.fc-hero {
  position: relative;
  height: 100vh;
  min-height: 600px;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  padding: 0 4rem 6rem;
}
.fc-hero-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}
.fc-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(20,58,64,0.95) 0%, rgba(20,58,64,0.6) 55%, rgba(20,58,64,0.2) 100%);
}
.fc-hero-content {
  position: relative;
  z-index: 2;
  max-width: 800px;
}

/* APPROCHE */
.fc-approche {
  padding: 6rem 4rem;
  background: var(--color-white);
}
.fc-approche-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
  margin-bottom: 4rem;
}
.fc-approche-photo {
  border-radius: 2px;
  overflow: hidden;
  aspect-ratio: 4/3;
}
.fc-approche-photo img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.fc-publics {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  padding-top: 3rem;
  border-top: 1px solid var(--color-border);
  align-items: start;
}
.fc-publics-label {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-text-light);
  margin-bottom: 1rem;
}
.fc-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
}
.fc-tag {
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--color-primary);
  background: rgba(20,58,64,0.07);
  border: 1px solid rgba(20,58,64,0.15);
  padding: 0.35rem 0.85rem;
  border-radius: 2px;
  letter-spacing: 0.02em;
}

/* MODALITÉS */
.fc-modalites {
  padding: 6rem 4rem;
  background: var(--color-off-white);
}
.fc-modalites-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
}
.fc-modalite {
  background: var(--color-white);
  padding: 2rem 1.75rem;
  border: 1px solid var(--color-border);
}
.fc-modalite-icon {
  font-size: 1.75rem;
  margin-bottom: 1.25rem;
}
.fc-modalite-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--color-text-dark);
  margin-bottom: 0.75rem;
  line-height: 1.3;
}
.fc-modalite-desc {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.75;
  margin-bottom: 1.25rem;
}
.fc-modalite-infos {
  list-style: none;
  border-top: 1px solid var(--color-border);
  padding-top: 1rem;
}
.fc-modalite-infos li {
  font-size: 0.775rem;
  color: var(--color-primary);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0.2rem 0;
}

/* PHOTO BREAK */
.fc-photo-break {
  position: relative;
  height: 420px;
  overflow: hidden;
}
.fc-photo-break img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}
.fc-photo-break-overlay {
  position: absolute; inset: 0;
  background: rgba(20,58,64,0.25);
}

/* CATALOGUE */
.fc-catalogue {
  padding: 6rem 4rem;
  background: var(--color-white);
}
.fc-domaine {
  margin-bottom: 5rem;
}
.fc-domaine--alt {
  padding-top: 4rem;
  border-top: 1px solid var(--color-border);
}
.fc-domaine-header {
  margin-bottom: 2.5rem;
}
.fc-sous-titre {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--color-primary);
  font-weight: 600;
  margin-bottom: 1.5rem;
  padding-bottom: 0.75rem;
  border-bottom: 2px solid var(--color-primary);
  display: inline-block;
}
.fc-modules {
  display: flex;
  flex-direction: column;
  gap: 1px;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}
.fc-module {
  background: var(--color-white);
  padding: 1.75rem 2rem;
  transition: background 0.2s;
}
.fc-module:hover {
  background: var(--color-off-white);
}
.fc-module-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 2rem;
  margin-bottom: 1rem;
}
.fc-module-title {
  font-family: 'Playfair Display', serif;
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-text-dark);
  line-height: 1.4;
  margin-bottom: 0.5rem;
}
.fc-module-desc {
  font-size: 0.85rem;
  color: var(--color-text-mid);
  line-height: 1.75;
}
.fc-module-niveau {
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  padding: 0.3rem 0.75rem;
  border-radius: 2px;
  white-space: nowrap;
  flex-shrink: 0;
}
.fc-module-niveau.fondamental {
  background: rgba(20,58,64,0.08);
  color: var(--color-primary);
}
.fc-module-niveau.avance {
  background: rgba(28,79,87,0.12);
  color: #1c4f57;
}
.fc-module-niveau.expert {
  background: rgba(40,40,40,0.08);
  color: var(--color-dark);
}
.fc-module-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  align-items: center;
}
.fc-meta-item {
  font-size: 0.775rem;
  color: var(--color-text-light);
  font-weight: 400;
  margin-right: 0.5rem;
}
.fc-badge {
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-text-mid);
  border: 1px solid var(--color-border);
  padding: 0.2rem 0.6rem;
  border-radius: 2px;
}

/* PACKS */
.fc-packs {
  padding: 6rem 4rem;
  background: var(--color-off-white);
}
.fc-packs-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin-bottom: 2.5rem;
}
.fc-pack {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  padding: 2.5rem 2rem;
  display: flex;
  flex-direction: column;
}
.fc-pack-label {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-text-light);
  margin-bottom: 0.75rem;
}
.fc-pack-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.6rem;
  font-weight: 500;
  color: var(--color-primary);
  margin-bottom: 1rem;
  line-height: 1.2;
}
.fc-pack-desc {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.8;
  margin-bottom: 1.5rem;
  flex: 1;
}
.fc-pack-meta {
  font-size: 0.775rem;
  font-weight: 600;
  color: var(--color-primary);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 0.75rem 0;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
  margin-bottom: 1.5rem;
}
.fc-pack-cta {
  font-size: 0.8rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-primary);
  text-decoration: none;
  border-bottom: 1.5px solid var(--color-primary);
  padding-bottom: 2px;
  align-self: flex-start;
  transition: opacity 0.2s;
}
.fc-pack-cta:hover { opacity: 0.65; }
.fc-packs-note {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--color-primary);
  padding: 1.25rem 1.75rem;
}
.fc-packs-note p {
  font-size: 0.85rem;
  color: var(--color-text-mid);
  line-height: 1.8;
}

/* INGÉNIERIE */
.fc-ingenierie {
  padding: 6rem 4rem;
  background: var(--color-dark);
}
.fc-ingenierie-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6rem;
  align-items: start;
}
.fc-solutions {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
}
.fc-solution {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
}
.fc-solution-icon {
  font-size: 1.25rem;
  flex-shrink: 0;
  margin-top: 0.1rem;
}
.fc-solution-title {
  font-size: 0.875rem;
  font-weight: 500;
  color: rgba(255,255,255,0.85);
  margin-bottom: 0.25rem;
}
.fc-solution-desc {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.45);
  line-height: 1.7;
  font-weight: 300;
}
.fc-etapes {
  display: flex;
  flex-direction: column;
  gap: 2rem;
}
.fc-etape {
  display: flex;
  gap: 1.5rem;
  align-items: flex-start;
}
.fc-etape-num {
  font-size: 0.65rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.3);
  border: 1px solid rgba(255,255,255,0.15);
  width: 36px; height: 36px;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.fc-etape-title {
  font-size: 0.925rem;
  font-weight: 500;
  color: rgba(255,255,255,0.85);
  margin-bottom: 0.4rem;
}
.fc-etape-text {
  font-size: 0.825rem;
  color: rgba(255,255,255,0.45);
  line-height: 1.75;
  font-weight: 300;
}

/* IA */
.fc-ia {
  padding: 6rem 4rem;
  background: var(--color-off-white);
}
.fc-ia-header {
  margin-bottom: 3rem;
}
.fc-ia-badge {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-text-mid);
  background: var(--color-white);
  border: 1px solid var(--color-border);
  padding: 0.35rem 0.9rem;
  margin-bottom: 1.25rem;
}
.fc-ia-tags {
  margin-bottom: 3rem;
}
.fc-ia-modules {
  display: flex;
  flex-direction: column;
  gap: 1.5rem;
  margin-bottom: 2.5rem;
}
.fc-ia-module {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  padding: 2rem 2.5rem;
  display: flex;
  gap: 2rem;
  align-items: flex-start;
}
.fc-ia-module-letter {
  font-family: 'Playfair Display', serif;
  font-size: 2rem;
  font-weight: 500;
  color: var(--color-primary);
  opacity: 0.3;
  flex-shrink: 0;
  line-height: 1;
  margin-top: 0.25rem;
}
.fc-ia-module-category {
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-text-light);
  margin-bottom: 0.6rem;
}
.fc-ia-module-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.05rem;
  font-weight: 500;
  color: var(--color-text-dark);
  margin-bottom: 0.75rem;
  line-height: 1.4;
}
.fc-ia-module-desc {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.8;
}
.fc-ia-note {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--color-primary);
  padding: 1.5rem 2rem;
}
.fc-ia-note p {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.8;
}

/* PHOTO WIDE */
.fc-photo-wide {
  height: 340px;
  overflow: hidden;
}
.fc-photo-wide img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

/* CTA FINAL */
.fc-cta-final {
  display: grid;
  grid-template-columns: 1fr 400px;
  min-height: 360px;
}
.fc-cta-final-inner {
  background: var(--color-primary);
  padding: 5rem 4rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2.5rem;
}
.fc-cta-photo {
  overflow: hidden;
}
.fc-cta-photo img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center;
  display: block;
}

/* ============================================
   E-LEARNING – el-*
   ============================================ */

/* HERO */
.el-hero {
  position: relative;
  height: 100vh;
  min-height: 620px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 0 4rem 3.5rem;
}
.el-hero-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}
.el-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(20,58,64,0.97) 0%, rgba(20,58,64,0.65) 50%, rgba(20,58,64,0.2) 100%);
}
.el-hero-content {
  position: relative;
  z-index: 2;
  max-width: 800px;
  margin-bottom: 3rem;
}
.el-hero-indicators {
  position: relative;
  z-index: 2;
  display: flex;
  gap: 3rem;
  border-top: 1px solid rgba(255,255,255,0.12);
  padding-top: 2rem;
}
.el-hero-indicator-num {
  display: block;
  font-family: 'Playfair Display', serif;
  font-size: 1.8rem;
  font-weight: 500;
  color: #fff;
  line-height: 1;
  margin-bottom: 0.35rem;
}
.el-hero-indicator-label {
  display: block;
  font-size: 0.75rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.4);
}

/* APPROCHE */
.el-approche {
  padding: 6rem 4rem;
  background: var(--color-white);
}
.el-approche-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: start;
}
.el-approche-items {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.75rem;
  margin-top: 2.5rem;
}
.el-approche-item {
  display: flex;
  gap: 0.875rem;
  align-items: flex-start;
}
.el-approche-icon {
  font-size: 1.25rem;
  flex-shrink: 0;
  margin-top: 0.1rem;
}
.el-approche-item-title {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-text-dark);
  margin-bottom: 0.3rem;
}
.el-approche-item-desc {
  font-size: 0.8rem;
  color: var(--color-text-mid);
  line-height: 1.7;
}
.el-approche-visual {
  border-radius: 2px;
  overflow: hidden;
  aspect-ratio: 3/4;
  position: sticky;
  top: 100px;
}
.el-approche-visual img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}

/* CATALOGUE */
.el-catalogue {
  padding: 5rem 4rem;
  background: var(--color-white);
}
.el-catalogue--light {
  background: var(--color-off-white);
}
.el-secteur {
  margin-bottom: 4rem;
}
.el-secteur:last-child { margin-bottom: 0; }
.el-secteur--alt {
  padding-top: 3.5rem;
  border-top: 1px solid var(--color-border);
}
.el-secteur-header {
  display: flex;
  gap: 2rem;
  align-items: flex-start;
  margin-bottom: 2rem;
  padding-bottom: 2rem;
  border-bottom: 1px solid var(--color-border);
}
.el-secteur-icon {
  font-size: 2rem;
  flex-shrink: 0;
  margin-top: 0.25rem;
}
.el-secteur-surtitle {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--color-text-light);
  margin-bottom: 0.4rem;
}
.el-secteur-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.4rem;
  font-weight: 500;
  color: var(--color-text-dark);
  margin-bottom: 0.75rem;
  line-height: 1.3;
}
.el-secteur-desc {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.75;
  margin-bottom: 0.5rem;
}
.el-secteur-recommande {
  font-size: 0.8rem;
  color: var(--color-primary);
  font-style: italic;
  line-height: 1.6;
}

/* MODULES */
.el-modules {
  display: flex;
  flex-direction: column;
  gap: 1px;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}
.el-module {
  background: var(--color-white);
  display: grid;
  grid-template-columns: 80px 1fr auto;
  gap: 0;
  transition: background 0.2s;
}
.el-catalogue--light .el-module { background: var(--color-off-white); }
.el-module:hover { background: #eef2f1; }
.el-module--bientot { opacity: 0.72; }
.el-module-left {
  padding: 1.75rem 1.25rem;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  gap: 0.75rem;
  border-right: 1px solid var(--color-border);
}
.el-module-tag {
  font-size: 0.6rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-primary);
  font-weight: 600;
  text-align: center;
  line-height: 1.4;
}
.el-module-icon {
  font-size: 1.3rem;
}
.el-module-body {
  padding: 1.75rem 2rem;
}
.el-module-titre {
  font-family: 'Playfair Display', serif;
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-text-dark);
  line-height: 1.4;
  margin-bottom: 0.25rem;
}
.el-module-sous {
  font-size: 0.775rem;
  color: var(--color-text-light);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-bottom: 0.75rem;
}
.el-module-desc {
  font-size: 0.85rem;
  color: var(--color-text-mid);
  line-height: 1.75;
  margin-bottom: 1rem;
}
.el-module-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.el-meta-pill {
  font-size: 0.7rem;
  color: var(--color-text-mid);
  background: rgba(0,0,0,0.04);
  border: 1px solid var(--color-border);
  padding: 0.2rem 0.65rem;
  border-radius: 2px;
  font-weight: 400;
}
.el-meta-pill--dark {
  background: rgba(255,255,255,0.08);
  border-color: rgba(255,255,255,0.15);
  color: rgba(255,255,255,0.6);
}
.el-meta-niveau {
  background: rgba(20,58,64,0.07);
  border-color: rgba(20,58,64,0.15);
  color: var(--color-primary);
  font-weight: 600;
}
.el-meta-avenir {
  background: rgba(200,150,50,0.08);
  border-color: rgba(200,150,50,0.2);
  color: #8a6a20;
  font-weight: 600;
}
.el-meta-dda {
  background: rgba(20,58,64,0.06);
  border-color: rgba(20,58,64,0.12);
  color: var(--color-primary);
  font-weight: 600;
}
.el-module-right {
  padding: 1.75rem 1.75rem;
  display: flex;
  align-items: center;
  border-left: 1px solid var(--color-border);
}
.el-module-cta {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-white);
  background: var(--color-primary);
  padding: 0.6rem 1.25rem;
  text-decoration: none;
  white-space: nowrap;
  transition: background 0.2s;
}
.el-module-cta:hover { background: var(--color-primary-hover); }
.el-module-cta--ghost {
  background: transparent;
  color: var(--color-primary);
  border: 1.5px solid var(--color-primary);
}
.el-module-cta--ghost:hover { background: rgba(20,58,64,0.06); }

/* PACK DDA */
.el-pack-dda {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  background: rgba(20,58,64,0.04);
  border: 1px solid rgba(20,58,64,0.15);
  border-left: 3px solid var(--color-primary);
  padding: 1.5rem 2rem;
  margin-top: 1px;
}
.el-pack-dda-icon { font-size: 1.5rem; flex-shrink: 0; }
.el-pack-dda-title {
  font-size: 0.875rem;
  font-weight: 600;
  color: var(--color-primary);
  margin-bottom: 0.35rem;
}
.el-pack-dda-desc {
  font-size: 0.8rem;
  color: var(--color-text-mid);
  line-height: 1.7;
}
.el-pack-dda-cta {
  font-size: 0.75rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-primary);
  text-decoration: none;
  border-bottom: 1.5px solid var(--color-primary);
  padding-bottom: 2px;
  white-space: nowrap;
  flex-shrink: 0;
  margin-left: auto;
  transition: opacity 0.2s;
}
.el-pack-dda-cta:hover { opacity: 0.65; }

/* PHOTO BREAK */
.el-photo-break {
  position: relative;
  height: 380px;
  overflow: hidden;
}
.el-photo-break img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
}
.el-photo-break-overlay {
  position: absolute; inset: 0;
  background: rgba(20,58,64,0.55);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem 4rem;
}
.el-photo-break-quote {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.2rem, 2.5vw, 1.8rem);
  font-weight: 400;
  font-style: italic;
  color: rgba(255,255,255,0.88);
  text-align: center;
  max-width: 700px;
  line-height: 1.5;
}

/* IA */
.el-ia {
  background: var(--color-dark);
  padding: 6rem 4rem;
}
.el-ia-inner { max-width: 1100px; }
.el-ia-header { margin-bottom: 3rem; }
.el-ia-badge {
  display: inline-block;
  font-size: 0.7rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.5);
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.12);
  padding: 0.35rem 0.9rem;
  margin-bottom: 1.25rem;
}
.el-ia-modules {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5px;
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.08);
  margin-bottom: 2.5rem;
}
.el-ia-module {
  background: var(--color-dark);
  padding: 2rem 1.75rem;
  display: flex;
  gap: 1.25rem;
  align-items: flex-start;
}
.el-ia-module-letter {
  font-family: 'Playfair Display', serif;
  font-size: 2rem;
  font-weight: 500;
  color: rgba(255,255,255,0.15);
  flex-shrink: 0;
  line-height: 1;
}
.el-ia-module-cat {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: rgba(255,255,255,0.35);
  margin-bottom: 0.6rem;
}
.el-ia-module-titre {
  font-family: 'Playfair Display', serif;
  font-size: 1rem;
  font-weight: 500;
  color: rgba(255,255,255,0.85);
  margin-bottom: 0.75rem;
  line-height: 1.4;
}
.el-ia-module-desc {
  font-size: 0.825rem;
  color: rgba(255,255,255,0.45);
  line-height: 1.75;
  font-weight: 300;
}
.el-ia-footer { padding-top: 0.5rem; }

/* PHOTO WIDE */
.el-photo-wide {
  height: 300px;
  overflow: hidden;
}
.el-photo-wide img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
}

/* ACCÈS */
.el-acces {
  padding: 6rem 4rem;
  background: var(--color-off-white);
}
.el-acces-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
  margin-bottom: 2.5rem;
}
.el-acces-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  padding: 2.5rem 2rem;
  display: flex;
  flex-direction: column;
}
.el-acces-card--primary {
  background: var(--color-primary);
  border-color: var(--color-primary);
}
.el-acces-icon { font-size: 1.75rem; margin-bottom: 1.25rem; }
.el-acces-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.2rem;
  font-weight: 500;
  color: var(--color-text-dark);
  margin-bottom: 0.875rem;
  line-height: 1.3;
}
.el-acces-card--primary .el-acces-title { color: #fff; }
.el-acces-desc {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.8;
  margin-bottom: 1.5rem;
  flex: 1;
}
.el-acces-card--primary .el-acces-desc { color: rgba(255,255,255,0.65); }
.el-acces-liste {
  list-style: none;
  margin-bottom: 1.75rem;
  border-top: 1px solid var(--color-border);
  padding-top: 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}
.el-acces-card--primary .el-acces-liste { border-color: rgba(255,255,255,0.15); }
.el-acces-liste li {
  font-size: 0.8rem;
  color: var(--color-text-mid);
  padding-left: 1rem;
  position: relative;
}
.el-acces-liste li::before {
  content: '·';
  position: absolute; left: 0;
  color: var(--color-primary);
}
.el-acces-card--primary .el-acces-liste li { color: rgba(255,255,255,0.6); }
.el-acces-card--primary .el-acces-liste li::before { color: rgba(255,255,255,0.4); }
.el-acces-cta {
  font-size: 0.775rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-primary);
  text-decoration: none;
  border-bottom: 1.5px solid var(--color-primary);
  padding-bottom: 2px;
  align-self: flex-start;
  transition: opacity 0.2s;
}
.el-acces-card--primary .el-acces-cta {
  color: #fff;
  border-color: rgba(255,255,255,0.5);
}
.el-acces-cta:hover { opacity: 0.65; }
.el-acces-qualiopi {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-left: 3px solid var(--color-primary);
  padding: 1.25rem 1.75rem;
  display: flex;
  align-items: center;
  gap: 1.5rem;
}
.el-qualiopi-badge {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-primary);
  border: 2px solid var(--color-primary);
  padding: 0.4rem 0.75rem;
  white-space: nowrap;
  flex-shrink: 0;
}
.el-acces-qualiopi p {
  font-size: 0.825rem;
  color: var(--color-text-mid);
  line-height: 1.75;
}

/* PIPELINE */
.el-pipeline {
  padding: 6rem 4rem;
  background: var(--color-dark);
}
.el-pipeline-grid {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 6rem;
  align-items: start;
}
.el-pipeline-items {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.el-pipeline-item {
  display: flex;
  gap: 2rem;
  align-items: flex-start;
  padding: 1.75rem 0;
  border-bottom: 1px solid rgba(255,255,255,0.07);
}
.el-pipeline-item:first-child { border-top: 1px solid rgba(255,255,255,0.07); }
.el-pipeline-date {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: #fff;
  background: rgba(255,255,255,0.1);
  border: 1px solid rgba(255,255,255,0.25);
  padding: 0.3rem 0.7rem;
  white-space: nowrap;
  flex-shrink: 0;
  margin-top: 0.15rem;
}
.el-pipeline-titre {
  font-size: 0.9rem;
  font-weight: 500;
  color: rgba(255,255,255,0.8);
  margin-bottom: 0.35rem;
  line-height: 1.4;
}
.el-pipeline-desc {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.4);
  line-height: 1.7;
  font-weight: 300;
}

/* CTA FINAL */
.el-cta-final {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 400px;
}
.el-cta-photo {
  position: relative;
  overflow: hidden;
}
.el-cta-photo img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
}
.el-cta-photo-overlay {
  position: absolute; inset: 0;
  background: rgba(20,58,64,0.3);
}
.el-cta-content {
  background: var(--color-primary);
  padding: 5rem 4rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}


/* ============================================
   MASTÈRES – ms-*
   ============================================ */

/* HERO INDEX */
.ms-hero {
  position: relative;
  height: 100vh;
  min-height: 640px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 0 4rem 4rem;
}
.ms-hero-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}
.ms-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(20,58,64,0.97) 0%, rgba(20,58,64,0.65) 55%, rgba(20,58,64,0.15) 100%);
}
.ms-hero-content {
  position: relative; z-index: 2;
  max-width: 800px;
  margin-bottom: 2.5rem;
}
.ms-hero-specs {
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  border-top: 1px solid rgba(255,255,255,0.1);
  padding-top: 2rem;
}
.ms-hero-spec {
  display: flex;
  align-items: center;
  gap: 1.25rem;
}
.ms-hero-spec-code {
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  color: #fff;
  background: rgba(255,255,255,0.15);
  border: 1px solid rgba(255,255,255,0.35);
  padding: 0.3rem 0.7rem;
  min-width: 52px;
  text-align: center;
}
.ms-hero-spec-label {
  font-size: 0.875rem;
  color: rgba(255,255,255,0.65);
  font-weight: 300;
}
.ms-hero-acces {
  position: relative; z-index: 2;
  font-size: 0.75rem;
  color: rgba(255,255,255,0.35);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(255,255,255,0.08);
}

/* INTRO */
.ms-intro {
  padding: 6rem 4rem;
  background: var(--color-white);
}
.ms-intro-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: start;
}
.ms-distinctions {
  display: flex;
  flex-direction: column;
  gap: 1.75rem;
}
.ms-distinction {
  display: flex;
  gap: 1.25rem;
  align-items: flex-start;
  padding-bottom: 1.75rem;
  border-bottom: 1px solid var(--color-border);
}
.ms-distinction:last-child { border-bottom: none; padding-bottom: 0; }
.ms-distinction-icon { font-size: 1.5rem; flex-shrink: 0; margin-top: 0.1rem; }
.ms-distinction-title {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--color-text-dark);
  margin-bottom: 0.35rem;
}
.ms-distinction-desc {
  font-size: 0.825rem;
  color: var(--color-text-mid);
  line-height: 1.75;
}

/* SPÉCIALISATIONS GRID */
.ms-specs {
  padding: 6rem 4rem;
  background: var(--color-off-white);
}
.ms-specs-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
.ms-spec-card {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  text-decoration: none;
  display: block;
  overflow: hidden;
  transition: transform 0.25s, box-shadow 0.25s;
}
.ms-spec-card:hover { transform: translateY(-4px); box-shadow: 0 12px 40px rgba(0,0,0,0.1); }
.ms-spec-card-img {
  height: 240px;
  overflow: hidden;
  position: relative;
}
.ms-spec-card-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 0.6s ease;
}
.ms-spec-card:hover .ms-spec-card-img img { transform: scale(1.04); }
.ms-spec-card-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(20,58,64,0.7) 0%, transparent 60%);
}
.ms-spec-card-code {
  position: absolute;
  bottom: 1rem; left: 1.25rem;
  font-size: 0.65rem;
  font-weight: 700;
  letter-spacing: 0.15em;
  color: rgba(255,255,255,0.9);
  background: var(--color-primary);
  padding: 0.3rem 0.7rem;
}
.ms-spec-card-body { padding: 1.75rem; }
.ms-spec-card-num {
  font-family: 'Playfair Display', serif;
  font-size: 2rem;
  color: rgba(20,58,64,0.1);
  line-height: 1;
  margin-bottom: 0.75rem;
}
.ms-spec-card-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.15rem;
  font-weight: 500;
  color: var(--color-dark);
  margin-bottom: 0.75rem;
  line-height: 1.3;
}
.ms-spec-card-desc {
  font-size: 0.825rem;
  color: var(--color-text-mid);
  line-height: 1.7;
  font-weight: 300;
  margin-bottom: 1.25rem;
}
.ms-spec-card-metiers {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-bottom: 1.25rem;
}
.ms-spec-card-metiers span {
  font-size: 0.7rem;
  color: var(--color-primary);
  background: rgba(20,58,64,0.06);
  border: 1px solid rgba(20,58,64,0.12);
  padding: 0.2rem 0.6rem;
}
.ms-spec-card-lien {
  font-size: 0.78rem;
  font-weight: 500;
  color: var(--color-primary);
  letter-spacing: 0.03em;
}

/* PARCOURS */
.ms-parcours {
  padding: 6rem 4rem;
  background: var(--color-dark);
}
.ms-parcours-grid {
  display: grid;
  grid-template-columns: 1fr 1.4fr;
  gap: 6rem;
  align-items: start;
}
.ms-parcours-steps {
  display: flex;
  flex-direction: column;
  gap: 0;
}
.ms-parcours-step {
  display: flex;
  gap: 1.5rem;
  align-items: flex-start;
  padding: 1.5rem 0;
  position: relative;
}
.ms-parcours-step--line::after {
  content: '';
  position: absolute;
  left: 1.1rem;
  top: 3.5rem;
  bottom: -1rem;
  width: 1px;
  background: rgba(255,255,255,0.1);
}
.ms-parcours-step-icon {
  font-size: 1.25rem;
  width: 2.25rem;
  height: 2.25rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(20,58,64,0.5);
  border: 1px solid rgba(20,58,64,0.8);
  flex-shrink: 0;
  position: relative;
  z-index: 1;
}
.ms-parcours-step-title {
  font-size: 0.9rem;
  font-weight: 500;
  color: rgba(255,255,255,0.85);
  margin-bottom: 0.2rem;
}
.ms-parcours-step-sub {
  font-size: 0.75rem;
  color: var(--color-primary);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  margin-bottom: 0.2rem;
}
.ms-parcours-step-desc {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.4);
  line-height: 1.6;
  font-weight: 300;
}

/* ACCÈS */
.ms-acces {
  padding: 6rem 4rem;
  background: var(--color-white);
}
.ms-acces-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
.ms-acces-card {
  background: var(--color-off-white);
  border: 1px solid var(--color-border);
  padding: 2.5rem 2rem;
}
.ms-acces-card--primary {
  background: var(--color-primary);
  border-color: var(--color-primary);
}
.ms-acces-card-icon { font-size: 1.75rem; margin-bottom: 1.25rem; display: block; }
.ms-acces-card-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--color-text-dark);
  margin-bottom: 0.75rem;
  line-height: 1.3;
}
.ms-acces-card--primary .ms-acces-card-title { color: #fff; }
.ms-acces-card-desc {
  font-size: 0.85rem;
  color: var(--color-text-mid);
  line-height: 1.8;
}
.ms-acces-card--primary .ms-acces-card-desc { color: rgba(255,255,255,0.65); }

/* CANDIDATURE */
.ms-candidature {
  padding: 6rem 4rem;
  background: var(--color-off-white);
}
.ms-candidature-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: start;
}
.ms-candidature-etape {
  display: flex;
  gap: 1.25rem;
  align-items: flex-start;
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--color-border);
}
.ms-candidature-etape--dark {
  border-color: rgba(255,255,255,0.07);
}
.ms-candidature-num {
  width: 32px; height: 32px;
  background: var(--color-primary);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 700;
  display: flex; align-items: center; justify-content: center;
  flex-shrink: 0;
}
.ms-candidature-num--dark {
  background: rgba(20,58,64,0.5);
  border: 1px solid rgba(20,58,64,0.8);
}
.ms-candidature-title {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--color-text-dark);
  margin-bottom: 0.25rem;
}
.ms-candidature-desc {
  font-size: 0.825rem;
  color: var(--color-text-mid);
  line-height: 1.7;
  font-weight: 300;
}
.ms-candidature-info { display: flex; flex-direction: column; gap: 0; }
.ms-candidature-photo {
  height: 280px;
  overflow: hidden;
  margin-bottom: 2rem;
}
.ms-candidature-photo img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.ms-candidature-pratique {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  padding: 1.75rem;
}
.ms-info-item {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  padding: 0.875rem 0;
  border-bottom: 1px solid var(--color-border);
}
.ms-info-item:last-child { border-bottom: none; }
.ms-info-arrow {
  color: var(--color-primary);
  font-size: 0.9rem;
  flex-shrink: 0;
  margin-top: 0.15rem;
}
.ms-info-title {
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--color-text-dark);
  margin-bottom: 0.2rem;
}
.ms-info-desc {
  font-size: 0.8rem;
  color: var(--color-text-mid);
  line-height: 1.65;
  font-weight: 300;
}

/* FINANCEMENT */
.ms-financements {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
.ms-financement {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-top: 3px solid var(--color-primary);
  padding: 2rem 1.75rem;
}
.ms-financement-type {
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--color-text-light);
  margin-bottom: 0.5rem;
}
.ms-financement-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--color-primary);
  margin-bottom: 0.75rem;
}
.ms-financement-desc {
  font-size: 0.825rem;
  color: var(--color-text-mid);
  line-height: 1.75;
}

/* CTA FINAL INDEX */
.ms-cta-final {
  display: grid;
  grid-template-columns: 1fr 400px;
  min-height: 380px;
}
.ms-cta-photo {
  position: relative;
  overflow: hidden;
}
.ms-cta-photo img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.ms-cta-photo-overlay {
  position: absolute; inset: 0;
  background: rgba(20,58,64,0.3);
}
.ms-cta-content {
  background: var(--color-primary);
  padding: 5rem 4rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 2rem;
}

/* PROGRAMME (spécialisations) */
.ms-programme-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
}
.ms-programme-annee {
  border: 1px solid var(--color-border);
}
.ms-programme-annee-header {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  padding: 1.5rem;
  background: var(--color-primary);
}
.ms-programme-code {
  font-family: 'Playfair Display', serif;
  font-size: 1.75rem;
  font-weight: 500;
  color: rgba(255,255,255,0.9);
  line-height: 1;
}
.ms-programme-annee-title {
  font-size: 0.9rem;
  font-weight: 500;
  color: rgba(255,255,255,0.9);
  margin-bottom: 0.2rem;
}
.ms-programme-annee-sub {
  font-size: 0.75rem;
  color: rgba(255,255,255,0.55);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.ms-programme-semestre { padding: 1.25rem 1.5rem; border-bottom: 1px solid var(--color-border); }
.ms-programme-sem-title {
  font-size: 0.7rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-primary);
  margin-bottom: 0.75rem;
  padding-bottom: 0.5rem;
  border-bottom: 1px solid var(--color-border);
}
.ms-programme-module {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  padding: 0.35rem 0;
  border-bottom: 1px solid rgba(0,0,0,0.04);
  font-size: 0.8rem;
  color: var(--color-text-mid);
}
.ms-programme-module:last-child { border-bottom: none; }
.ms-programme-ects {
  font-size: 0.7rem;
  color: var(--color-text-light);
  white-space: nowrap;
  flex-shrink: 0;
}
.ms-programme-options {
  padding: 1.25rem 1.5rem;
  border-bottom: 1px solid var(--color-border);
}
.ms-programme-options-title {
  font-size: 0.75rem;
  font-weight: 600;
  color: var(--color-primary);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.ms-programme-objectif {
  padding: 1.25rem 1.5rem;
  font-size: 0.8rem;
  color: var(--color-text-mid);
  line-height: 1.75;
  font-style: italic;
  background: rgba(20,58,64,0.03);
}

/* VOIES D'ACCÈS (spécialisations) */
.ms-voies {
  display: flex;
  flex-direction: column;
  gap: 1px;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}
.ms-voie {
  background: var(--color-white);
  padding: 2rem 2.5rem;
  display: flex;
  gap: 1.5rem;
  align-items: flex-start;
}
.ms-voie-icon { font-size: 1.5rem; flex-shrink: 0; margin-top: 0.15rem; }
.ms-voie-title {
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--color-text-dark);
}
.ms-voie-badge {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-primary);
  background: rgba(20,58,64,0.07);
  border: 1px solid rgba(20,58,64,0.15);
  padding: 0.2rem 0.6rem;
  white-space: nowrap;
}
.ms-voie-desc {
  font-size: 0.84rem;
  color: var(--color-text-mid);
  line-height: 1.75;
  margin-top: 0.5rem;
}

/* CTA SPÉCIALISATIONS */
.ms-spec-cta {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 360px;
}
.ms-spec-cta-photo {
  position: relative;
  overflow: hidden;
}
.ms-spec-cta-photo img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.ms-spec-cta-overlay {
  position: absolute; inset: 0;
  background: rgba(20,58,64,0.35);
}
.ms-spec-cta-content {
  background: var(--color-primary);
  padding: 5rem 4rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1.5rem;
}

/* ============================================
   SPEC – classes partagées spécialisations
   ============================================ */

.spec-hero {
  height: 80vh;
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  padding: 0 4rem 5rem;
}
.spec-hero-img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.spec-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(20,58,64,0.92) 0%, rgba(20,58,64,0.5) 55%, rgba(20,58,64,0.2) 100%);
}
.spec-hero-content { position: relative; z-index: 2; }
.spec-back {
  display: inline-block; margin-bottom: 1.5rem;
  font-size: 0.75rem; color: rgba(255,255,255,0.5);
  text-decoration: none; text-transform: uppercase; letter-spacing: 0.1em;
  transition: color 0.2s;
}
.spec-back:hover { color: rgba(255,255,255,0.9); }
.spec-section { padding: 6rem 4rem; background: var(--color-white); }
.spec-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
}
.spec-photo-block { overflow: hidden; height: 420px; }
.spec-photo-block img { width: 100%; height: 100%; object-fit: cover; display: block; }
.spec-metier-card {
  background: var(--color-white);
  padding: 2rem;
  transition: background 0.25s;
}
.spec-metier-card:hover { background: var(--color-primary); }
.spec-metier-card:hover .spec-metier-title,
.spec-metier-card:hover .spec-metier-desc { color: var(--color-white); }
.spec-metier-title {
  font-size: 0.95rem; font-weight: 500;
  color: var(--color-dark); margin-bottom: 0.5rem;
  transition: color 0.25s;
}
.spec-metier-desc {
  font-size: 0.82rem; color: var(--color-text-mid);
  line-height: 1.6; font-weight: 300;
  transition: color 0.25s;
}
.spec-competence-item {
  display: flex; align-items: center; gap: 0.75rem;
  padding: 0.75rem 1rem;
  background: rgba(255,255,255,0.06);
  border-left: 2px solid var(--color-primary);
  font-size: 0.85rem; color: rgba(255,255,255,0.75);
}

/* ============================================
   FINANCEMENT – fn-*
   ============================================ */

/* HERO */
.fn-hero {
  position: relative;
  height: 75vh;
  min-height: 560px;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  padding: 0 4rem 5rem;
}
.fn-hero-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}
.fn-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(20,58,64,0.96) 0%, rgba(20,58,64,0.65) 55%, rgba(20,58,64,0.2) 100%);
}
.fn-hero-content {
  position: relative; z-index: 2;
  max-width: 900px;
  width: 100%;
}

/* SÉLECTEUR PROFILS */
.fn-profil-selector {
  display: flex;
  gap: 0.75rem;
  flex-wrap: wrap;
}
.fn-profil-btn {
  font-size: 0.8rem;
  font-weight: 500;
  color: rgba(255,255,255,0.7);
  background: rgba(255,255,255,0.08);
  border: 1px solid rgba(255,255,255,0.2);
  padding: 0.6rem 1.25rem;
  text-decoration: none;
  transition: all 0.2s;
  letter-spacing: 0.02em;
}
.fn-profil-btn:hover,
.fn-profil-btn--active {
  background: rgba(255,255,255,0.18);
  border-color: rgba(255,255,255,0.5);
  color: #fff;
}

/* SECTIONS */
.fn-section {
  padding: 6rem 4rem;
  background: var(--color-white);
}
.fn-section--alt {
  background: var(--color-off-white);
}
.fn-section--dark {
  background: var(--color-dark);
}
.fn-section-header {
  display: flex;
  gap: 2rem;
  align-items: flex-start;
  margin-bottom: 3rem;
  padding-bottom: 2.5rem;
  border-bottom: 1px solid var(--color-border);
}
.fn-section--dark .fn-section-header {
  border-color: rgba(255,255,255,0.08);
}
.fn-section-picto {
  font-size: 2.5rem;
  flex-shrink: 0;
  margin-top: 0.25rem;
}
.fn-section-surtitle {
  font-size: 0.7rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--color-text-light);
  margin-bottom: 0.4rem;
}
.fn-section-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.75rem;
  font-weight: 500;
  color: var(--color-text-dark);
  margin-bottom: 0.75rem;
  line-height: 1.2;
}
.fn-section-desc {
  font-size: 0.925rem;
  color: var(--color-text-mid);
  line-height: 1.8;
  max-width: 680px;
}

/* DISPOSITIFS */
.fn-dispositifs {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5px;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}
.fn-dispositifs--2col {
  grid-template-columns: repeat(2, 1fr);
}
.fn-dispositif {
  background: var(--color-white);
  padding: 2rem 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  transition: background 0.2s;
}
.fn-section--alt .fn-dispositif { background: var(--color-off-white); }
.fn-dispositif:hover { background: #eef2f1; }
.fn-dispositif--star {
  border-left: 3px solid var(--color-primary);
}
.fn-dispositif--soon { opacity: 0.7; }
.fn-dispositif-top {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
}
.fn-dispositif-icon {
  font-size: 1.5rem;
  flex-shrink: 0;
  margin-top: 0.1rem;
}
.fn-dispositif-titre {
  font-family: 'Playfair Display', serif;
  font-size: 1rem;
  font-weight: 500;
  color: var(--color-text-dark);
  line-height: 1.35;
  margin-top: 0.4rem;
}
.fn-dispositif-desc {
  font-size: 0.865rem;
  color: var(--color-text-mid);
  line-height: 1.8;
}
.fn-dispositif-detail {
  font-size: 0.82rem;
  color: var(--color-text-light);
  line-height: 1.75;
  font-style: italic;
}
.fn-dispositif-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-top: auto;
  padding-top: 0.75rem;
  border-top: 1px solid var(--color-border);
}

/* BADGES */
.fn-badge {
  display: inline-block;
  font-size: 0.65rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--color-text-light);
  background: rgba(0,0,0,0.04);
  border: 1px solid var(--color-border);
  padding: 0.2rem 0.65rem;
}
.fn-badge--recommande {
  color: var(--color-primary);
  background: rgba(20,58,64,0.07);
  border-color: rgba(20,58,64,0.2);
}
.fn-badge--soon {
  color: #8a6a20;
  background: rgba(200,150,50,0.08);
  border-color: rgba(200,150,50,0.2);
}

/* TAGS */
.fn-tag {
  font-size: 0.72rem;
  color: var(--color-text-mid);
  background: rgba(0,0,0,0.04);
  border: 1px solid var(--color-border);
  padding: 0.2rem 0.65rem;
}
.fn-tag--green {
  color: var(--color-primary);
  background: rgba(20,58,64,0.06);
  border-color: rgba(20,58,64,0.15);
  font-weight: 500;
}
.fn-tag--link {
  color: var(--color-primary);
  text-decoration: none;
  border-color: rgba(20,58,64,0.2);
  transition: background 0.2s;
}
.fn-tag--link:hover { background: rgba(20,58,64,0.1); }

/* PHOTO STRIP */
.fn-photo-strip {
  display: grid;
  grid-template-columns: 1fr 1fr 200px 200px;
  height: 280px;
}
.fn-photo-strip-img {
  overflow: hidden;
}
.fn-photo-strip-img img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform 0.6s ease;
}
.fn-photo-strip-img:hover img { transform: scale(1.04); }
.fn-photo-strip-stat {
  background: var(--color-primary);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 2rem 1.5rem;
  text-align: center;
}
.fn-photo-strip-stat--alt { background: var(--color-dark); }
.fn-strip-num {
  font-family: 'Playfair Display', serif;
  font-size: 2.5rem;
  font-weight: 500;
  color: #fff;
  line-height: 1;
  margin-bottom: 0.75rem;
}
.fn-strip-label {
  font-size: 0.75rem;
  color: rgba(255,255,255,0.6);
  line-height: 1.6;
  text-align: center;
}

/* ENCART CONSEIL */
.fn-encart-conseil {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 3rem;
  background: rgba(20,58,64,0.05);
  border: 1px solid rgba(20,58,64,0.15);
  border-left: 3px solid var(--color-primary);
  padding: 1.5rem 2rem;
  margin-top: 1.5rem;
}
.fn-encart-conseil p {
  font-size: 0.9rem;
  color: var(--color-text-mid);
  line-height: 1.7;
}

/* TABLEAU ENTREPRISES */
.fn-tableau {
  border: 1px solid rgba(255,255,255,0.1);
  margin-bottom: 2rem;
}
.fn-tableau-header {
  display: grid;
  grid-template-columns: 1.2fr 1.2fr 1.5fr 1.5fr;
  gap: 0;
  background: rgba(20,58,64,0.6);
  padding: 0.875rem 1.5rem;
}
.fn-tableau-header > div {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: rgba(255,255,255,0.6);
}
.fn-tableau-row {
  display: grid;
  grid-template-columns: 1.2fr 1.2fr 1.5fr 1.5fr;
  gap: 0;
  border-bottom: 1px solid rgba(255,255,255,0.06);
  background: rgba(255,255,255,0.03);
  transition: background 0.2s;
}
.fn-tableau-row:hover { background: rgba(255,255,255,0.07); }
.fn-tableau-row:last-child { border-bottom: none; }
.fn-tableau-cell {
  padding: 1.25rem 1.5rem;
  font-size: 0.825rem;
  color: rgba(255,255,255,0.6);
  line-height: 1.7;
  border-right: 1px solid rgba(255,255,255,0.05);
}
.fn-tableau-cell:last-child { border-right: none; }
.fn-tableau-cell--titre {
  color: rgba(255,255,255,0.85);
  font-weight: 500;
}
.fn-tableau-note {
  font-size: 0.82rem;
  color: rgba(255,255,255,0.4);
  line-height: 1.8;
  font-style: italic;
}

/* PRÊTS */
.fn-prets {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem;
}
.fn-pret {
  border: 1px solid var(--color-border);
  overflow: hidden;
}
.fn-pret-photo {
  height: 180px;
  overflow: hidden;
}
.fn-pret-photo img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform 0.6s ease;
}
.fn-pret:hover .fn-pret-photo img { transform: scale(1.04); }
.fn-pret-body {
  padding: 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
}
.fn-pret-titre {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 500;
  color: var(--color-text-dark);
  line-height: 1.3;
}
.fn-pret-desc {
  font-size: 0.865rem;
  color: var(--color-text-mid);
  line-height: 1.8;
}
.fn-pret-cta {
  font-size: 0.8rem;
  font-weight: 500;
  color: var(--color-primary);
  text-decoration: none;
  border-bottom: 1.5px solid var(--color-primary);
  padding-bottom: 2px;
  align-self: flex-start;
  margin-top: 0.5rem;
  transition: opacity 0.2s;
}
.fn-pret-cta:hover { opacity: 0.65; }

/* ÉTAPES */
.fn-etapes-section {
  padding: 6rem 4rem;
  background: var(--color-off-white);
}
.fn-etapes-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 3rem;
}
.fn-etapes-col-header {
  background: var(--color-primary);
  padding: 2rem;
  margin-bottom: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.fn-etapes-col-icon { font-size: 1.5rem; }
.fn-etapes-col-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.15rem;
  font-weight: 500;
  color: #fff;
  line-height: 1.3;
}
.fn-etapes-col-sub {
  font-size: 0.75rem;
  color: rgba(255,255,255,0.55);
  text-transform: uppercase;
  letter-spacing: 0.08em;
}
.fn-etape {
  display: flex;
  gap: 0;
  align-items: stretch;
  background: var(--color-white);
  border: 1px solid var(--color-border);
  border-top: none;
}
.fn-etape-num {
  width: 52px;
  flex-shrink: 0;
  background: var(--color-primary);
  color: #fff;
  font-size: 0.8rem;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0.5;
}
.fn-etape-line {
  width: 1px;
  background: var(--color-border);
  flex-shrink: 0;
}
.fn-etape-body {
  padding: 1.25rem 1.5rem;
  flex: 1;
}
.fn-etape-titre {
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--color-text-dark);
  margin-bottom: 0.3rem;
}
.fn-etape-desc {
  font-size: 0.82rem;
  color: var(--color-text-mid);
  line-height: 1.75;
}

/* LIENS UTILES */
.fn-liens {
  padding: 6rem 4rem;
  background: var(--color-white);
}
.fn-liens-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}
.fn-lien {
  background: var(--color-white);
  padding: 1.5rem;
  text-decoration: none;
  display: flex;
  align-items: flex-start;
  gap: 1rem;
  transition: background 0.2s;
}
.fn-lien:hover { background: var(--color-off-white); }
.fn-lien-icon { font-size: 1.25rem; flex-shrink: 0; }
.fn-lien-titre {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-text-dark);
  margin-bottom: 0.25rem;
  line-height: 1.3;
}
.fn-lien-desc {
  font-size: 0.775rem;
  color: var(--color-text-light);
  line-height: 1.5;
}
.fn-lien-arrow {
  font-size: 0.85rem;
  color: var(--color-primary);
  margin-left: auto;
  flex-shrink: 0;
}

/* FAQ */
.fn-faq {
  padding: 6rem 4rem;
  background: var(--color-off-white);
}
.fn-faq-liste {
  display: flex;
  flex-direction: column;
  gap: 1px;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}
.fn-faq-item {
  background: var(--color-white);
}
.fn-faq-question {
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 2rem;
  padding: 1.25rem 1.75rem;
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  font-family: 'DM Sans', sans-serif;
  font-size: 0.925rem;
  font-weight: 500;
  color: var(--color-text-dark);
  transition: background 0.2s;
}
.fn-faq-question:hover { background: var(--color-off-white); }
.fn-faq-chevron {
  font-size: 1.25rem;
  color: var(--color-primary);
  flex-shrink: 0;
  line-height: 1;
  transition: transform 0.2s;
}
.fn-faq-reponse {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.35s ease;
}
.fn-faq-open .fn-faq-reponse {
  max-height: 300px;
}
.fn-faq-reponse p {
  padding: 0 1.75rem 1.5rem;
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.85;
  border-top: 1px solid var(--color-border);
  padding-top: 1.25rem;
}

/* CTA FINAL */
.fn-cta-final {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 400px;
}
.fn-cta-photo {
  position: relative;
  overflow: hidden;
}
.fn-cta-photo img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.fn-cta-overlay {
  position: absolute; inset: 0;
  background: rgba(20,58,64,0.3);
}
.fn-cta-content {
  background: var(--color-primary);
  padding: 5rem 4rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

/* ============================================
   VERS L'EMPLOI – ve-*
   ============================================ */

/* HERO */
.ve-hero {
  position: relative;
  height: 100vh;
  min-height: 640px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  padding: 0 4rem 4rem;
}
.ve-hero-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
}
.ve-hero-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(to top, rgba(20,58,64,0.97) 0%, rgba(20,58,64,0.6) 55%, rgba(20,58,64,0.15) 100%);
}
.ve-hero-content {
  position: relative; z-index: 2;
  max-width: 800px;
  margin-bottom: 3rem;
}
.ve-hero-stats {
  position: relative; z-index: 2;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  border-top: 1px solid rgba(255,255,255,0.1);
  padding-top: 2rem;
}
.ve-hero-stat {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding-right: 2rem;
  border-right: 1px solid rgba(255,255,255,0.1);
  padding-left: 2rem;
}
.ve-hero-stat:first-child { padding-left: 0; }
.ve-hero-stat:last-child { border-right: none; }
.ve-hero-stat-num {
  font-family: 'Playfair Display', serif;
  font-size: 2rem;
  font-weight: 500;
  color: #fff;
  line-height: 1;
}
.ve-hero-stat-label {
  font-size: 0.775rem;
  color: rgba(255,255,255,0.45);
  line-height: 1.55;
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

/* BOUCLE */
.ve-boucle {
  padding: 6rem 4rem;
  background: var(--color-white);
}
.ve-boucle-intro {
  max-width: 680px;
  margin-bottom: 4rem;
}
.ve-boucle-steps {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0;
  background: var(--color-border);
  border: 1px solid var(--color-border);
  position: relative;
}
.ve-boucle-step {
  background: var(--color-white);
  padding: 2.5rem 2rem;
  position: relative;
}
.ve-boucle-num {
  font-family: 'Playfair Display', serif;
  font-size: 3rem;
  color: rgba(20,58,64,0.08);
  line-height: 1;
  margin-bottom: 1rem;
}
.ve-boucle-titre {
  font-size: 1rem;
  font-weight: 600;
  color: var(--color-text-dark);
  margin-bottom: 0.75rem;
  line-height: 1.3;
}
.ve-boucle-desc {
  font-size: 0.845rem;
  color: var(--color-text-mid);
  line-height: 1.75;
}
.ve-boucle-arrow {
  position: absolute;
  top: 2.5rem;
  right: -0.75rem;
  font-size: 1rem;
  color: var(--color-primary);
  background: var(--color-white);
  z-index: 2;
  padding: 0.2rem 0;
}

/* SPLIT PHOTO */
.ve-split-photo {
  display: grid;
  grid-template-columns: 1fr 1fr;
  min-height: 520px;
}
.ve-split-photo-img {
  overflow: hidden;
}
.ve-split-photo-img img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
}
.ve-split-photo-content {
  background: var(--color-dark);
  padding: 5rem 4rem;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.ve-intervenant {
  display: flex;
  gap: 1rem;
  align-items: flex-start;
  padding: 1rem 0;
  border-bottom: 1px solid rgba(255,255,255,0.07);
}
.ve-intervenant:last-child { border-bottom: none; }
.ve-intervenant-icon { font-size: 1.25rem; flex-shrink: 0; margin-top: 0.1rem; }
.ve-intervenant-titre {
  font-size: 0.875rem;
  font-weight: 500;
  color: rgba(255,255,255,0.85);
  margin-bottom: 0.2rem;
}
.ve-intervenant-desc {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.45);
  line-height: 1.65;
  font-weight: 300;
}

/* ATELIERS */
.ve-ateliers {
  padding: 6rem 4rem;
  background: var(--color-off-white);
}
.ve-ateliers-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5px;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}
.ve-atelier {
  background: var(--color-off-white);
  padding: 2rem 1.75rem;
  display: flex;
  flex-direction: column;
  gap: 0.75rem;
  transition: background 0.2s;
}
.ve-atelier:hover { background: var(--color-white); }
.ve-atelier-icon { font-size: 1.75rem; }
.ve-atelier-titre {
  font-size: 0.925rem;
  font-weight: 600;
  color: var(--color-text-dark);
  line-height: 1.35;
}
.ve-atelier-desc {
  font-size: 0.82rem;
  color: var(--color-text-mid);
  line-height: 1.75;
  flex: 1;
}
.ve-atelier-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin-top: auto;
  padding-top: 0.75rem;
  border-top: 1px solid var(--color-border);
}
.ve-atelier-tag {
  font-size: 0.68rem;
  color: var(--color-primary);
  background: rgba(20,58,64,0.07);
  border: 1px solid rgba(20,58,64,0.12);
  padding: 0.2rem 0.6rem;
  font-weight: 500;
}

/* PHOTO BREAK */
.ve-photo-break {
  position: relative;
  height: 400px;
  overflow: hidden;
}
.ve-photo-break img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
}
.ve-photo-break-overlay {
  position: absolute; inset: 0;
  background: rgba(20,58,64,0.6);
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 2rem 6rem;
}
.ve-photo-break-quote {
  font-family: 'Playfair Display', serif;
  font-size: clamp(1.1rem, 2.2vw, 1.6rem);
  font-weight: 400;
  font-style: italic;
  color: rgba(255,255,255,0.88);
  text-align: center;
  max-width: 800px;
  line-height: 1.55;
}

/* DISPOSITIFS */
.ve-dispositifs {
  padding: 6rem 4rem;
  background: var(--color-white);
}
.ve-dispositifs-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.5px;
  background: var(--color-border);
  border: 1px solid var(--color-border);
}
.ve-dispositif {
  background: var(--color-white);
  padding: 2.5rem 2rem;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.ve-dispositif--primary {
  background: var(--color-primary);
}
.ve-dispositif-header {
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
}
.ve-dispositif-type {
  font-size: 0.65rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: var(--color-text-light);
}
.ve-dispositif--primary .ve-dispositif-type { color: rgba(255,255,255,0.45); }
.ve-dispositif-titre {
  font-family: 'Playfair Display', serif;
  font-size: 1.2rem;
  font-weight: 500;
  color: var(--color-text-dark);
  line-height: 1.3;
}
.ve-dispositif--primary .ve-dispositif-titre { color: #fff; }
.ve-dispositif-desc {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  line-height: 1.8;
}
.ve-dispositif--primary .ve-dispositif-desc { color: rgba(255,255,255,0.65); }
.ve-dispositif-liste {
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 0.6rem;
  padding-top: 1rem;
  border-top: 1px solid var(--color-border);
  margin-top: auto;
}
.ve-dispositif--primary .ve-dispositif-liste { border-color: rgba(255,255,255,0.15); }
.ve-dispositif-liste li {
  font-size: 0.835rem;
  color: var(--color-text-mid);
  padding-left: 1.25rem;
  position: relative;
  line-height: 1.6;
}
.ve-dispositif-liste li::before {
  content: '→';
  position: absolute; left: 0;
  color: var(--color-primary);
  font-size: 0.75rem;
}
.ve-dispositif--primary .ve-dispositif-liste li { color: rgba(255,255,255,0.65); }
.ve-dispositif--primary .ve-dispositif-liste li::before { color: rgba(255,255,255,0.4); }

/* POUR QUI */
.ve-pourqui {
  padding: 6rem 4rem;
  background: var(--color-off-white);
}
.ve-pourqui-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
}
.ve-pourqui-col {
  background: var(--color-white);
  border: 1px solid var(--color-border);
  overflow: hidden;
  display: flex;
  flex-direction: column;
}
.ve-pourqui-col-header {
  position: relative;
}
.ve-pourqui-photo {
  height: 220px;
  overflow: hidden;
}
.ve-pourqui-photo img {
  width: 100%; height: 100%;
  object-fit: cover; display: block;
  transition: transform 0.6s ease;
}
.ve-pourqui-col:hover .ve-pourqui-photo img { transform: scale(1.03); }
.ve-pourqui-col-titre-wrap {
  padding: 1.5rem 2rem;
  background: var(--color-primary);
}
.ve-pourqui-surtitle {
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.12em;
  color: rgba(255,255,255,0.5);
  margin-bottom: 0.25rem;
}
.ve-pourqui-titre {
  font-family: 'Playfair Display', serif;
  font-size: 1.5rem;
  font-weight: 500;
  color: #fff;
  line-height: 1.2;
}
.ve-pourqui-liste {
  list-style: none;
  padding: 2rem;
  display: flex;
  flex-direction: column;
  gap: 0.875rem;
  flex: 1;
}
.ve-pourqui-liste li {
  font-size: 0.875rem;
  color: var(--color-text-mid);
  padding-left: 1.5rem;
  position: relative;
  line-height: 1.7;
}
.ve-pourqui-liste li::before {
  content: '✓';
  position: absolute; left: 0;
  color: var(--color-primary);
  font-weight: 700;
  font-size: 0.8rem;
}
.ve-pourqui-col .btn-dark {
  margin: 0 2rem 2rem;
  display: inline-block;
  align-self: flex-start;
}

/* NOTE */
.ve-note {
  padding: 1.5rem 4rem;
  background: var(--color-off-white);
  border-top: 1px solid var(--color-border);
}
.ve-note p {
  font-size: 0.775rem;
  color: var(--color-text-light);
  line-height: 1.75;
  font-style: italic;
  max-width: 900px;
}

/* CTA FINAL */
.ve-cta-final {
  background: var(--color-primary);
  padding: 7rem 4rem;
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
}
.ve-cta-content {
  max-width: 680px;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.ve-cta-content .btn-white,
.ve-cta-content a {
  align-self: auto;
}

/* FOOTER NEWSLETTER */
.footer-newsletter {
  border-top: 1px solid rgba(255,255,255,0.08);
  border-bottom: 1px solid rgba(255,255,255,0.08);
  padding: 2.5rem 4rem;
}
.footer-newsletter-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 3rem;
  max-width: 900px;
  margin: 0 auto;
}
.footer-newsletter-title {
  font-family: 'Playfair Display', serif;
  font-size: 1.1rem;
  font-weight: 500;
  color: #fff;
  margin-bottom: 0.3rem;
}
.footer-newsletter-sub {
  font-size: 0.8rem;
  color: rgba(255,255,255,0.45);
}
.footer-newsletter-form { flex: 1; max-width: 480px; }
.footer-newsletter-fields {
  display: flex;
  gap: 0;
  margin-bottom: 0.75rem;
}
.footer-newsletter-input {
  flex: 1;
  background: rgba(255,255,255,0.06);
  border: 1px solid rgba(255,255,255,0.15);
  border-right: none;
  padding: 0.75rem 1rem;
  font-family: 'DM Sans', sans-serif;
  font-size: 0.875rem;
  color: #fff;
  outline: none;
  transition: border-color 0.2s;
}
.footer-newsletter-input::placeholder { color: rgba(255,255,255,0.35); }
.footer-newsletter-input:focus { border-color: rgba(255,255,255,0.4); }
.footer-newsletter-btn {
  background: #fff;
  color: #143a40;
  border: none;
  padding: 0.75rem 1.5rem;
  font-family: 'DM Sans', sans-serif;
  font-size: 0.8rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  cursor: pointer;
  transition: background 0.2s;
  white-space: nowrap;
}
.footer-newsletter-btn:hover { background: var(--color-off-white); }
.footer-newsletter-consent {
  display: flex;
  align-items: flex-start;
  gap: 0.6rem;
}
.footer-newsletter-consent input[type="checkbox"] {
  width: 14px;
  height: 14px;
  flex-shrink: 0;
  margin-top: 0.15rem;
  accent-color: #fff;
  cursor: pointer;
}
.footer-newsletter-consent label {
  font-size: 0.75rem;
  color: rgba(255,255,255,0.4);
  line-height: 1.6;
  cursor: pointer;
}
.footer-newsletter-consent label a {
  color: rgba(255,255,255,0.6);
  text-decoration: underline;
}
.footer-newsletter-consent label a:hover { color: #fff; 
}

/* FORMATIONS EXPANDED */
.formation-card--expanded { display: flex; flex-direction: column; }
.formation-specs {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin: 1.25rem 0;
  flex: 1;
  border-top: 1px solid var(--color-border);
}
.formation-spec {
  padding: 0.875rem 0;
  border-bottom: 1px solid var(--color-border);
}
.formation-spec-tag {
  font-size: 0.65rem;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--color-text-light);
  margin-bottom: 0.25rem;
}
.formation-spec-code {
  color: var(--color-primary);
  font-weight: 700;
}
.formation-spec-title {
  font-size: 0.875rem;
  font-weight: 500;
  color: var(--color-text-dark);
  margin-bottom: 0.25rem;
}
.formation-spec-desc {
  font-size: 0.8rem;
  color: var(--color-text-mid);
  line-height: 1.6;
  margin-bottom: 0.4rem;
}
.formation-spec-link {
  font-size: 0.775rem;
  color: var(--color-primary);
  text-decoration: none;
  font-weight: 500;
  transition: opacity 0.2s;
}
.formation-spec-link:hover { opacity: 0.65; }