.elementor-kit-6{--e-global-color-primary:#21409A;--e-global-color-secondary:#E2322B;--e-global-color-text:#45506B;--e-global-color-accent:#F4C430;--e-global-color-abcink:#18213B;--e-global-color-abcbluelt:#2E5BD0;--e-global-color-abcbluesoft:#EAF0FB;--e-global-color-abcreddk:#C0231D;--e-global-color-abcgoldsoft:#FDF3D2;--e-global-color-abccream:#FBF9F4;--e-global-color-abcmuted:#7A839B;--e-global-color-abcline:#E9EAF0;--e-global-color-abcwhite:#FFFFFF;--e-global-typography-primary-font-family:"Poppins";--e-global-typography-primary-font-weight:800;--e-global-typography-primary-letter-spacing:-0.02em;--e-global-typography-secondary-font-family:"Poppins";--e-global-typography-secondary-font-weight:700;--e-global-typography-text-font-family:"Inter";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Poppins";--e-global-typography-accent-font-weight:600;--e-global-typography-abckicker-font-family:"Poppins";--e-global-typography-abckicker-font-size:13px;--e-global-typography-abckicker-font-weight:700;--e-global-typography-abckicker-text-transform:uppercase;--e-global-typography-abckicker-letter-spacing:1.2px;}.elementor-kit-6 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1140px;}.e-con{--container-max-width:1140px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* =========================================================================
   ABC – Academic Bilingual Center — Feuille de style du site
   Reprise INTÉGRALE de la maquette validée. Modifiable ici :
   Elementor > Réglages du site > CSS personnalisé.
   ------------------------------------------------------------------------
   Bloc « intégration Elementor » ci-dessous : neutralise les conteneurs
   d'Elementor pour que la maquette pilote seule la mise en page.
   ========================================================================= */

/* ---- Intégration Elementor : conteneurs transparents ---- */
.elementor-location-header,
.elementor-location-footer { overflow: visible; }
body .e-con.abc-passthrough,
body .e-con.abc-passthrough > .e-con-inner { padding: 0; margin: 0; max-width: none; width: 100%; }
body .e-con.abc-passthrough > .elementor-widget-html,
body .e-con.abc-passthrough > .elementor-widget-shortcode { width: 100%; max-width: none; margin: 0; }
.elementor-widget-html > .elementor-widget-container,
.elementor-widget-shortcode > .elementor-widget-container { margin: 0; }
/* Elementor ajoute un conteneur pour les modèles d'en-tête/pied de page */
.elementor-location-header .e-con,
.elementor-location-header .e-con-inner,
.elementor-location-footer .e-con,
.elementor-location-footer .e-con-inner { padding: 0; max-width: none; width: 100%; }

/* =========================================================================
   ABC – Academic Bilingual Center
   Feuille de style globale (charte + composants + sections)
   ------------------------------------------------------------------------
   ORGANISATION (pour extraction Elementor) :
   Chaque section du site a un préfixe de classe unique (ex: .abc-hero,
   .abc-why, .abc-programs...). Pour intégrer une section dans Elementor :
   1. Copier le bloc HTML de la section (entre les commentaires <!-- SECTION -->)
   2. Copier le bloc CSS correspondant ci-dessous (même titre de section)
   3. Coller dans un widget "HTML" Elementor.
   Les TOKENS, BASE, UI, HEADER et FOOTER sont communs à tout le site.
   ========================================================================= */

/* ============================= TOKENS ================================== */
:root{
  /* Couleurs charte (logo ABC) */
  --abc-red:        #E2322B;
  --abc-red-dark:   #C0231D;
  --abc-blue:       #21409A;
  --abc-blue-light: #2E5BD0;
  --abc-blue-soft:  #EAF0FB;
  --abc-gold:       #F4C430;
  --abc-gold-soft:  #FDF3D2;

  /* Neutres */
  --abc-ink:    #18213B;   /* texte titres */
  --abc-body:   #45506B;   /* texte courant */
  --abc-muted:  #7A839B;   /* texte secondaire */
  --abc-cream:  #FBF9F4;   /* fond chaud */
  --abc-white:  #FFFFFF;
  --abc-line:   #E9EAF0;   /* bordures */

  /* Rayons & ombres */
  --r-sm: 10px;
  --r-md: 18px;
  --r-lg: 28px;
  --r-pill: 999px;
  --sh-sm: 0 4px 14px rgba(24,33,59,.06);
  --sh-md: 0 14px 40px rgba(24,33,59,.10);
  --sh-lg: 0 30px 70px rgba(24,33,59,.14);

  /* Mise en page */
  --container: 1200px;
  --gutter: clamp(20px, 5vw, 40px);

  /* Typo */
  --font-head: "Poppins", system-ui, sans-serif;
  --font-body: "Inter", system-ui, sans-serif;
}

/* ============================= BASE / RESET ============================ */
*,*::before,*::after{ box-sizing:border-box; }
html{ scroll-behavior:smooth; -webkit-text-size-adjust:100%; }
body{
  margin:0;
  font-family:var(--font-body);
  color:var(--abc-body);
  background:var(--abc-white);
  line-height:1.65;
  font-size:17px;
  -webkit-font-smoothing:antialiased;
}
img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
h1,h2,h3,h4{ font-family:var(--font-head); color:var(--abc-ink); line-height:1.12; margin:0 0 .5em; font-weight:700; }
h1{ font-size:clamp(2.1rem, 5vw, 3.5rem); font-weight:800; letter-spacing:-.02em; line-height:1.12; }
h2{ font-size:clamp(1.7rem, 3.6vw, 2.6rem); font-weight:800; letter-spacing:-.01em; line-height:1.12; }
h3{ font-size:clamp(1.2rem, 2vw, 1.45rem); }
p{ margin:0 0 1rem; }
strong{ color:var(--abc-ink); font-weight:600; }
ul{ margin:0; padding:0; list-style:none; }

/* Conteneur & section */
.abc-container{ width:100%; max-width:var(--container); margin-inline:auto; padding-inline:var(--gutter); }
.abc-section{ padding:clamp(56px, 8vw, 110px) 0; }
.abc-section--cream{ background:var(--abc-cream); }
.abc-section--blue{ background:var(--abc-blue); color:#D9E2F7; }
.abc-section--blue h2,.abc-section--blue h3{ color:#fff; }

/* En-tête de section (kicker + titre + intro) */
.abc-head{ max-width:720px; margin:0 auto clamp(36px,5vw,60px); text-align:center; }
.abc-head--left{ margin-inline:0; text-align:left; }
.abc-kicker{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--font-head); font-weight:600; font-size:.82rem;
  text-transform:uppercase; letter-spacing:.14em; color:var(--abc-red);
  background:#FCEDEC; padding:7px 14px; border-radius:var(--r-pill); margin-bottom:18px;
}
.abc-kicker--blue{ color:var(--abc-blue); background:var(--abc-blue-soft); }
.abc-head p{ color:var(--abc-muted); font-size:1.08rem; margin:0; }

/* ============================= UI / BOUTONS =========================== */
.abc-btn{
  display:inline-flex; align-items:center; justify-content:center; gap:10px;
  font-family:var(--font-head); font-weight:600; font-size:1rem;
  padding:15px 28px; border-radius:var(--r-pill); cursor:pointer;
  border:2px solid transparent; transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
  white-space:nowrap;
}
.abc-btn:hover{ transform:translateY(-2px); }
.abc-btn--primary{ background:var(--abc-red); color:#fff; box-shadow:0 10px 24px rgba(226,50,43,.30); }
.abc-btn--primary:hover{ background:var(--abc-red-dark); box-shadow:0 14px 30px rgba(226,50,43,.38); }
.abc-btn--blue{ background:var(--abc-blue); color:#fff; box-shadow:0 10px 24px rgba(33,64,154,.28); }
.abc-btn--blue:hover{ background:var(--abc-blue-light); box-shadow:0 14px 30px rgba(33,64,154,.36); }
.abc-btn--ghost{ background:#fff; color:var(--abc-ink); border-color:var(--abc-line); box-shadow:var(--sh-sm); }
.abc-btn--ghost:hover{ border-color:var(--abc-blue); color:var(--abc-blue); }
.abc-btn--outline-white{ background:transparent; color:#fff; border-color:rgba(255,255,255,.55); }
.abc-btn--outline-white:hover{ background:#fff; color:var(--abc-blue); }

/* Badges / pills */
.abc-pill{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--font-head); font-weight:600; font-size:.9rem;
  padding:9px 16px; border-radius:var(--r-pill);
  background:#fff; border:1px solid var(--abc-line); color:var(--abc-ink); box-shadow:var(--sh-sm);
}
.abc-age{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-head); font-weight:700; font-size:.78rem; letter-spacing:.03em;
  color:var(--abc-blue); background:var(--abc-blue-soft);
  padding:6px 12px; border-radius:var(--r-pill);
}

/* ============================= HEADER ================================= */
.abc-header{
  position:sticky; top:0; z-index:50;
  background:rgba(255,255,255,.88); backdrop-filter:blur(12px);
  border-bottom:1px solid var(--abc-line);
}
.abc-header__inner{ display:flex; align-items:center; justify-content:space-between; gap:24px; height:78px; }
.abc-logo{ display:flex; align-items:center; gap:12px; font-family:var(--font-head); font-weight:800; color:var(--abc-ink); }
.abc-logo img{ height:52px; width:auto; }
.abc-logo span{ font-size:1.02rem; line-height:1.05; }
.abc-logo span small{ display:block; font-size:.66rem; font-weight:500; letter-spacing:.12em; text-transform:uppercase; color:var(--abc-muted); }
.abc-nav{ display:flex; align-items:center; gap:2px; }
.abc-nav a{
  font-family:var(--font-head); font-weight:500; font-size:.93rem; color:var(--abc-body);
  padding:9px 12px; border-radius:var(--r-pill); transition:color .15s, background .15s;
  white-space:nowrap; line-height:1; display:inline-flex; align-items:center;
}
.abc-nav a:hover,.abc-nav a.is-active{ color:var(--abc-blue); background:var(--abc-blue-soft); }
.abc-nav a.abc-nav__cta{ display:none; } /* CTA réservé au menu mobile (caché sur desktop) */
.abc-header__cta{ display:flex; align-items:center; gap:12px; }
.abc-burger{ display:none; width:46px; height:46px; border:1px solid var(--abc-line); background:#fff; border-radius:12px; cursor:pointer; align-items:center; justify-content:center; }
.abc-burger span{ position:relative; width:20px; height:2px; background:var(--abc-ink); display:block; }
.abc-burger span::before,.abc-burger span::after{ content:""; position:absolute; left:0; width:20px; height:2px; background:var(--abc-ink); }
.abc-burger span::before{ top:-6px; } .abc-burger span::after{ top:6px; }

@media (max-width:1140px){
  .abc-nav,.abc-header__cta .abc-btn{ display:none; }
  .abc-burger{ display:inline-flex; }
  .abc-nav.is-open{
    display:flex; flex-direction:column; align-items:stretch; gap:4px;
    position:absolute; left:0; right:0; top:78px; background:#fff;
    padding:16px var(--gutter) 24px; border-bottom:1px solid var(--abc-line); box-shadow:var(--sh-md);
  }
  .abc-nav.is-open a{ padding:14px 16px; font-size:1.05rem; }
  .abc-nav.is-open a.abc-nav__cta{ display:inline-flex; justify-content:center; margin-top:10px; color:#fff; }
  .abc-nav.is-open a.abc-nav__cta:hover{ background:var(--abc-red-dark); color:#fff; }
}

/* Très petits écrans : actions principales en pleine largeur (meilleur tap) */
@media (max-width:430px){
  .abc-hero__cta .abc-btn,
  .abc-cta__btns .abc-btn{ flex:1 1 100%; }
}

/* ============================= FOOTER ================================= */
.abc-footer{ background:var(--abc-ink); color:#AEB6CC; padding:64px 0 28px; font-size:.95rem; }
.abc-footer a:hover{ color:#fff; }
.abc-footer__grid{ display:grid; grid-template-columns:1.4fr 1fr 1fr 1.2fr; gap:40px; }
.abc-footer h4{ color:#fff; font-size:1.05rem; margin-bottom:18px; }
.abc-footer__logo{ display:flex; align-items:center; gap:12px; margin-bottom:16px; }
.abc-footer__logo img{ height:54px; background:#fff; border-radius:12px; padding:6px; }
.abc-footer__logo b{ color:#fff; font-family:var(--font-head); font-size:1.1rem; }
.abc-footer li{ margin-bottom:10px; display:flex; gap:10px; }
.abc-footer__social{ display:flex; gap:12px; margin-top:6px; }
.abc-footer__social a{ width:42px; height:42px; border-radius:50%; background:rgba(255,255,255,.08); display:flex; align-items:center; justify-content:center; transition:background .15s; }
.abc-footer__social a:hover{ background:var(--abc-red); }
.abc-footer__legal{ margin-top:40px; padding-top:22px; border-top:1px solid rgba(255,255,255,.1); display:flex; flex-wrap:wrap; gap:8px 22px; }
.abc-footer__legal a{ font-size:.86rem; color:#AEB6CC; }
.abc-footer__legal a:hover{ color:#fff; }
.abc-footer__bottom{ margin-top:18px; padding-top:22px; border-top:1px solid rgba(255,255,255,.1); display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; font-size:.86rem; color:#7E879F; }

/* Sélecteur de langue FR | EN (header) */
.abc-lang{ display:inline-flex; align-items:center; gap:6px; font-family:var(--font-head); font-weight:600; font-size:.9rem; }
.abc-lang .cur{ color:var(--abc-blue); }
.abc-lang .sep{ color:var(--abc-line); }
.abc-lang .alt{ color:var(--abc-muted); }
.abc-lang .alt:hover{ color:var(--abc-blue); }
@media (max-width:1140px){ .abc-header__cta .abc-lang{ display:none; } .abc-nav.is-open .abc-lang{ display:inline-flex; padding:8px 16px; } }

/* Note avis (4,9/5) */
.abc-reviews__score b{ font-family:var(--font-head); font-size:1.35rem; color:var(--abc-ink); }
@media (max-width:860px){ .abc-footer__grid{ grid-template-columns:1fr 1fr; gap:30px; } }
@media (max-width:520px){ .abc-footer__grid{ grid-template-columns:1fr; } }

/* Icône SVG inline (taille standard) */
.abc-ic{ width:20px; height:20px; flex:none; stroke:currentColor; fill:none; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.abc-ic--sm{ width:16px; height:16px; }

/* Util */
.abc-center{ text-align:center; }
.abc-mt{ margin-top:28px; }
.abc-grid{ display:grid; gap:24px; }

/* =========================================================================
   [ACCUEIL] — HERO
   ========================================================================= */
.abc-hero{ position:relative; overflow:hidden; background:
   radial-gradient(120% 90% at 85% -10%, var(--abc-blue-soft) 0%, transparent 55%),
   radial-gradient(90% 70% at -10% 110%, #FCEDEC 0%, transparent 50%), #fff; }
.abc-hero__inner{ display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(30px,5vw,64px); align-items:center; padding:clamp(48px,7vw,92px) 0; }
.abc-hero__flag{ display:inline-flex; gap:6px; font-size:1.1rem; margin-bottom:18px; }
.abc-hero h1{ margin-bottom:20px; }
.abc-hero h1 em{ font-style:normal; color:var(--abc-red); position:relative; }
.abc-hero__lead{ font-size:1.18rem; color:var(--abc-body); max-width:540px; margin-bottom:30px; }
.abc-hero__cta{ display:flex; flex-wrap:wrap; gap:14px; margin-bottom:30px; }
.abc-hero__trust{ display:flex; flex-wrap:wrap; gap:10px; }
.abc-hero__rating-pill{ display:none; align-items:center; gap:8px; } /* visible uniquement sur mobile */
.abc-hero__rating-pill .stars{ color:var(--abc-gold); letter-spacing:1px; }
.abc-hero__media{ position:relative; }
.abc-hero__media img{ width:100%; border-radius:var(--r-lg); box-shadow:var(--sh-lg); object-fit:cover; aspect-ratio:4/2.9; object-position:center; }
.abc-hero__card{
  position:absolute; left:-22px; bottom:26px; background:#fff; border-radius:var(--r-md);
  box-shadow:var(--sh-md); padding:16px 20px; display:flex; align-items:center; gap:14px; max-width:255px;
}
.abc-hero__card > div{ display:flex; flex-direction:column; gap:2px; }
.abc-hero__card .star{ display:block; color:var(--abc-gold); font-size:1rem; letter-spacing:2px; }
.abc-hero__card b{ display:block; font-family:var(--font-head); color:var(--abc-ink); font-size:1.02rem; line-height:1.2; white-space:nowrap; }
.abc-hero__card small{ display:block; color:var(--abc-muted); font-size:.82rem; }
.abc-hero__blob{ position:absolute; top:-30px; right:-30px; width:120px; height:120px; background:var(--abc-gold); border-radius:42% 58% 60% 40%; opacity:.18; z-index:0; }
@media (max-width:900px){
  .abc-hero__inner{ grid-template-columns:1fr; }
  .abc-hero__media{ order:-1; }
  .abc-hero__media img{ aspect-ratio:16/11; }
  /* La carte flottante ne doit pas déborder hors du cadre sur mobile */
  .abc-hero__card{ left:14px; bottom:14px; max-width:calc(100% - 28px); }
}

/* Petit mobile : hero épuré. On masque la carte flottante (qui recouvrait /
   coupait la photo) et on remonte la note 5★ dans la rangée de badges.
   Flux : photo nette → drapeaux → titre → texte → boutons → badges. */
@media (max-width:600px){
  .abc-hero__inner{ padding:30px 0 42px; gap:20px; }
  .abc-hero__media img{ aspect-ratio:4/3.2; object-position:center 20%; }
  .abc-hero__card{ display:none; }
  .abc-hero__rating-pill{ display:inline-flex; }
  .abc-hero__blob{ display:none; }
  .abc-hero__lead{ font-size:1.06rem; }
}

/* =========================================================================
   [ACCUEIL] — MISSION / INTRO
   ========================================================================= */
.abc-mission__inner{ display:grid; grid-template-columns:.95fr 1.05fr; gap:clamp(30px,5vw,64px); align-items:center; }
.abc-mission__media{ position:relative; }
.abc-mission__media img{ border-radius:var(--r-lg); box-shadow:var(--sh-md); width:100%; object-fit:cover; aspect-ratio:4/4.4; }
.abc-mission__badge{
  position:absolute; right:-18px; top:30px; background:var(--abc-blue); color:#fff;
  border-radius:var(--r-md); padding:16px 18px; box-shadow:var(--sh-md); text-align:center; max-width:150px;
}
.abc-mission__badge b{ display:block; font-family:var(--font-head); font-size:1.7rem; }
.abc-mission__badge small{ font-size:.78rem; opacity:.85; }
.abc-mission__list{ display:grid; gap:14px; margin-top:24px; }
.abc-mission__list li{ display:flex; gap:12px; align-items:flex-start; }
.abc-mission__list .ck{ flex:none; width:26px; height:26px; border-radius:50%; background:#EAF7EE; color:#1E9E54; display:flex; align-items:center; justify-content:center; }
@media (max-width:860px){ .abc-mission__inner{ grid-template-columns:1fr; } .abc-mission__media{ max-width:420px; } .abc-mission__badge{ right:10px; } }

/* =========================================================================
   [ACCUEIL/COMMUN] — POURQUOI ABC (avantages)
   ========================================================================= */
.abc-why__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.abc-card{
  background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md);
  padding:30px 26px; box-shadow:var(--sh-sm); transition:transform .2s, box-shadow .2s;
}
.abc-card:hover{ transform:translateY(-4px); box-shadow:var(--sh-md); }
.abc-card__ic{ width:54px; height:54px; border-radius:16px; display:flex; align-items:center; justify-content:center; margin-bottom:18px; color:#fff; }
.abc-card__ic--red{ background:linear-gradient(135deg,#F2655F,var(--abc-red)); }
.abc-card__ic--blue{ background:linear-gradient(135deg,#4E76DE,var(--abc-blue)); }
.abc-card__ic--gold{ background:linear-gradient(135deg,#F8D667,#EBA60E); }
.abc-card h3{ margin-bottom:8px; }
.abc-card p{ margin:0; color:var(--abc-muted); font-size:.97rem; }
@media (max-width:860px){ .abc-why__grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:540px){ .abc-why__grid{ grid-template-columns:1fr; } }

/* =========================================================================
   [ACCUEIL] — APERÇU PROGRAMMES
   ========================================================================= */
.abc-programs__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.abc-prog{
  position:relative; background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md);
  padding:28px 26px; box-shadow:var(--sh-sm); transition:transform .2s, box-shadow .2s, border-color .2s;
  display:flex; flex-direction:column;
}
.abc-prog:hover{ transform:translateY(-4px); box-shadow:var(--sh-md); border-color:#D7DEEF; }
.abc-prog__top{ display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; }
.abc-prog__emoji{ font-size:1.9rem; }
.abc-prog h3{ margin-bottom:8px; }
.abc-prog p{ color:var(--abc-muted); font-size:.96rem; margin-bottom:18px; }
.abc-prog__link{ margin-top:auto; font-family:var(--font-head); font-weight:600; color:var(--abc-blue); display:inline-flex; align-items:center; gap:7px; }
.abc-prog__link:hover{ gap:11px; }
@media (max-width:860px){ .abc-programs__grid{ grid-template-columns:1fr 1fr; } }
@media (max-width:540px){ .abc-programs__grid{ grid-template-columns:1fr; } }

/* =========================================================================
   [ACCUEIL/STAGES] — ADVENTURES (sorties)
   ========================================================================= */
.abc-adv__grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.abc-adv__item{ background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md); padding:24px 20px; text-align:center; box-shadow:var(--sh-sm); transition:transform .2s; }
.abc-adv__item:hover{ transform:translateY(-4px); }
.abc-adv__item .e{ font-size:2rem; display:block; margin-bottom:12px; }
.abc-adv__item b{ display:block; font-family:var(--font-head); color:var(--abc-ink); margin-bottom:5px; }
.abc-adv__item small{ color:var(--abc-muted); font-size:.86rem; line-height:1.45; display:block; }
@media (max-width:860px){ .abc-adv__grid{ grid-template-columns:1fr 1fr; } }

/* =========================================================================
   [ACCUEIL/CONTACT] — AVIS GOOGLE
   ========================================================================= */
.abc-reviews__head{ display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:14px; margin-bottom:38px; }
.abc-reviews__score{ display:flex; align-items:center; gap:12px; background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-pill); padding:12px 22px; box-shadow:var(--sh-sm); }
.abc-reviews__score b{ font-family:var(--font-head); font-size:1.6rem; color:var(--abc-ink); }
.abc-reviews__stars{ color:var(--abc-gold); letter-spacing:2px; }
.abc-reviews__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.abc-review{ background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md); padding:26px; box-shadow:var(--sh-sm); }
.abc-review .abc-reviews__stars{ font-size:.95rem; margin-bottom:12px; display:block; }
.abc-review p{ color:var(--abc-body); font-size:.98rem; }
.abc-review__who{ display:flex; align-items:center; gap:12px; margin-top:18px; }
.abc-review__who .av{ width:42px; height:42px; border-radius:50%; background:var(--abc-blue-soft); color:var(--abc-blue); display:flex; align-items:center; justify-content:center; font-family:var(--font-head); font-weight:700; }
.abc-review__who b{ display:block; color:var(--abc-ink); font-size:.95rem; }
.abc-review__who small{ color:var(--abc-muted); }
.abc-note{ font-size:.85rem; color:var(--abc-muted); text-align:center; margin-top:24px; }
@media (max-width:860px){ .abc-reviews__grid{ grid-template-columns:1fr; } }

/* =========================================================================
   [ACCUEIL] — PRESSE (Nice-Matin)
   ========================================================================= */
.abc-press__inner{ display:grid; grid-template-columns:1.12fr .88fr; gap:clamp(28px,5vw,56px); align-items:center; }
.abc-press__media{ margin:0; }
.abc-press__media img{ width:100%; border-radius:var(--r-md); box-shadow:var(--sh-md); border:1px solid var(--abc-line); background:#fff; }
.abc-press__media figcaption{ margin-top:10px; font-size:.85rem; color:var(--abc-muted); text-align:center; }
.abc-press__quote{ font-family:var(--font-head); font-weight:600; font-size:clamp(1.15rem,2vw,1.35rem); color:var(--abc-ink); border-left:4px solid var(--abc-red); padding-left:18px; margin:20px 0 14px; line-height:1.45; }
.abc-press__cite{ color:var(--abc-muted); font-size:.95rem; margin:0; }
.abc-press__cite cite{ font-style:normal; font-weight:600; color:var(--abc-blue); }
@media (max-width:860px){ .abc-press__inner{ grid-template-columns:1fr; } }

/* =========================================================================
   [ACCUEIL] — ZONE / LOCALISATION
   ========================================================================= */
.abc-zone__inner{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,5vw,60px); align-items:center; }
.abc-zone__towns{ display:flex; flex-wrap:wrap; gap:12px; margin-top:8px; }
.abc-zone__towns .abc-pill{ background:var(--abc-blue-soft); border-color:transparent; }
.abc-zone__map{ border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-md); min-height:320px; border:1px solid var(--abc-line); }
.abc-zone__map iframe{ width:100%; height:100%; min-height:320px; border:0; display:block; }
@media (max-width:860px){ .abc-zone__inner{ grid-template-columns:1fr; } }

/* =========================================================================
   [COMMUN] — CTA FINAL
   ========================================================================= */
.abc-cta{ background:linear-gradient(135deg,var(--abc-blue) 0%, #16306F 100%); color:#fff; border-radius:var(--r-lg); padding:clamp(40px,6vw,72px); text-align:center; position:relative; overflow:hidden; }
.abc-cta::before{ content:""; position:absolute; width:240px; height:240px; background:var(--abc-red); opacity:.18; border-radius:50%; top:-80px; left:-60px; }
.abc-cta::after{ content:""; position:absolute; width:200px; height:200px; background:var(--abc-gold); opacity:.16; border-radius:50%; bottom:-70px; right:-50px; }
.abc-cta__in{ position:relative; z-index:1; max-width:680px; margin:0 auto; }
.abc-cta h2{ color:#fff; }
.abc-cta p{ color:#D9E2F7; font-size:1.12rem; margin-bottom:28px; }
.abc-cta__btns{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; }

/* =========================================================================
   [COMMUN] — BANNIÈRE DE PAGE (hero interne)
   ========================================================================= */
.abc-pagehero{ background:
   radial-gradient(110% 120% at 90% -20%, var(--abc-blue-soft) 0%, transparent 55%),
   var(--abc-cream); padding:clamp(48px,6vw,84px) 0 clamp(40px,5vw,64px); }
.abc-pagehero__inner{ max-width:760px; }
.abc-breadcrumb{ font-size:.88rem; color:var(--abc-muted); margin-bottom:16px; font-family:var(--font-head); }
.abc-breadcrumb a:hover{ color:var(--abc-blue); }
.abc-pagehero h1{ margin-bottom:16px; }
.abc-pagehero p{ font-size:1.15rem; color:var(--abc-body); margin:0; max-width:620px; }

/* =========================================================================
   [WORKSHOPS] — BLOC PROGRAMME DÉTAILLÉ (alterné)
   ========================================================================= */
.abc-detail{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,5vw,60px); align-items:center; }
.abc-detail + .abc-detail{ margin-top:clamp(48px,7vw,90px); }
.abc-detail--rev .abc-detail__media{ order:2; }
.abc-detail__media{ position:relative; }
.abc-detail__media img{ border-radius:var(--r-lg); box-shadow:var(--sh-md); width:100%; object-fit:cover; aspect-ratio:4/3.4; }
.abc-detail__tag{ position:absolute; top:18px; left:18px; background:#fff; color:var(--abc-red); font-family:var(--font-head); font-weight:700; font-size:.8rem; padding:8px 14px; border-radius:var(--r-pill); box-shadow:var(--sh-sm); }
.abc-detail h2{ margin-bottom:6px; }
.abc-detail__meta{ display:flex; flex-wrap:wrap; gap:10px; margin:14px 0 18px; }
.abc-detail__meta .chip{ display:inline-flex; align-items:center; gap:7px; font-family:var(--font-head); font-weight:600; font-size:.85rem; color:var(--abc-blue); background:var(--abc-blue-soft); padding:8px 14px; border-radius:var(--r-pill); }
.abc-detail__feats{ display:grid; grid-template-columns:1fr 1fr; gap:10px 18px; margin:18px 0; }
.abc-detail__feats li{ display:flex; gap:10px; align-items:flex-start; font-size:.97rem; }
.abc-detail__feats .ck{ flex:none; width:22px; height:22px; border-radius:50%; background:#FCEDEC; color:var(--abc-red); display:flex; align-items:center; justify-content:center; }
@media (max-width:860px){
  .abc-detail{ grid-template-columns:1fr; }
  .abc-detail--rev .abc-detail__media{ order:0; }
  .abc-detail__feats{ grid-template-columns:1fr; }
}

/* Horaires (mini-tableau) */
.abc-hours{ background:var(--abc-cream); border:1px solid var(--abc-line); border-radius:var(--r-md); padding:18px 22px; margin:18px 0; }
.abc-hours li{ display:flex; justify-content:space-between; gap:16px; padding:8px 0; border-bottom:1px dashed var(--abc-line); }
.abc-hours li:last-child{ border-bottom:0; }
.abc-hours b{ font-family:var(--font-head); color:var(--abc-ink); }
.abc-hours span{ color:var(--abc-blue); font-family:var(--font-head); font-weight:600; }

/* =========================================================================
   [WORKSHOPS/STAGES] — CALENDRIER (tableau)
   ========================================================================= */
.abc-cal{ overflow:hidden; border:1px solid var(--abc-line); border-radius:var(--r-md); box-shadow:var(--sh-sm); background:#fff; }
.abc-cal table{ width:100%; border-collapse:collapse; }
.abc-cal th{ background:var(--abc-blue); color:#fff; font-family:var(--font-head); text-align:left; padding:14px 20px; font-size:.95rem; }
.abc-cal td{ padding:13px 20px; border-top:1px solid var(--abc-line); font-size:.95rem; }
.abc-cal td:first-child{ font-family:var(--font-head); font-weight:600; color:var(--abc-ink); width:40%; }
.abc-cal tr:nth-child(even) td{ background:#FAFBFD; }
.abc-cal .vac td{ background:var(--abc-gold-soft) !important; color:#9A6B00; font-style:italic; }
.abc-cal .vac td:first-child{ color:#9A6B00; }

/* =========================================================================
   [STAGES] — ACTIVITÉS INCLUSES (chips illustrées)
   ========================================================================= */
.abc-acts{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.abc-acts__item{ background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md); padding:22px 18px; text-align:center; box-shadow:var(--sh-sm); }
.abc-acts__item .e{ font-size:1.8rem; display:block; margin-bottom:8px; }
.abc-acts__item b{ font-family:var(--font-head); color:var(--abc-ink); font-size:.95rem; }
@media (max-width:860px){ .abc-acts{ grid-template-columns:1fr 1fr; } }

/* =========================================================================
   [ANNIVERSAIRES] — FORMULES + TIMELINE
   ========================================================================= */
.abc-draft{ background:var(--abc-gold-soft); border:1px solid #F0D89A; border-radius:var(--r-md); padding:16px 22px; display:flex; gap:12px; align-items:flex-start; margin-bottom:40px; color:#8A6400; font-size:.95rem; }
.abc-draft b{ color:#7A5600; }
.abc-formulas{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; align-items:stretch; }
.abc-formula{ background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-lg); padding:32px 28px; box-shadow:var(--sh-sm); display:flex; flex-direction:column; position:relative; }
.abc-formula--featured{ border:2px solid var(--abc-red); box-shadow:var(--sh-md); }
.abc-formula__flag{ position:absolute; top:-14px; left:50%; transform:translateX(-50%); background:var(--abc-red); color:#fff; font-family:var(--font-head); font-weight:600; font-size:.78rem; padding:6px 16px; border-radius:var(--r-pill); }
.abc-formula h3{ font-size:1.35rem; }
.abc-formula__price{ font-family:var(--font-head); font-weight:800; font-size:2.4rem; color:var(--abc-ink); margin:6px 0; }
.abc-formula__price small{ font-size:.95rem; font-weight:500; color:var(--abc-muted); }
.abc-formula__list{ display:grid; gap:12px; margin:18px 0 26px; }
.abc-formula__list li{ display:flex; gap:10px; align-items:flex-start; font-size:.96rem; }
.abc-formula__list .ck{ flex:none; width:22px; height:22px; border-radius:50%; background:#EAF7EE; color:#1E9E54; display:flex; align-items:center; justify-content:center; }
.abc-formula .abc-btn{ margin-top:auto; }
@media (max-width:860px){ .abc-formulas{ grid-template-columns:1fr; max-width:440px; margin-inline:auto; } }

.abc-timeline{ display:grid; gap:0; max-width:760px; margin:0 auto; }
.abc-timeline__step{ display:grid; grid-template-columns:auto 1fr; gap:22px; }
.abc-timeline__num{ position:relative; }
.abc-timeline__num b{ width:48px; height:48px; border-radius:50%; background:var(--abc-blue); color:#fff; font-family:var(--font-head); font-weight:700; display:flex; align-items:center; justify-content:center; box-shadow:var(--sh-sm); }
.abc-timeline__num::after{ content:""; position:absolute; left:50%; top:48px; bottom:-6px; width:2px; background:var(--abc-line); transform:translateX(-50%); }
.abc-timeline__step:last-child .abc-timeline__num::after{ display:none; }
.abc-timeline__body{ padding-bottom:30px; }
.abc-timeline__body h3{ font-size:1.15rem; margin-bottom:4px; }
.abc-timeline__body p{ color:var(--abc-muted); margin:0; }

/* =========================================================================
   [ACTUALITÉS] — LISTE DES ARTICLES
   ========================================================================= */
.abc-cat{ display:inline-flex; font-family:var(--font-head); font-weight:600; font-size:.73rem; letter-spacing:.04em; text-transform:uppercase; color:var(--abc-red); background:#FCEDEC; padding:5px 11px; border-radius:var(--r-pill); }
.abc-cat--blue{ color:var(--abc-blue); background:var(--abc-blue-soft); }
.abc-cat--gold{ color:#9A6B00; background:var(--abc-gold-soft); }
.abc-cat--green{ color:#1E7B43; background:#E8F6EE; }

.abc-blog__featured{ display:grid; grid-template-columns:1.05fr .95fr; gap:0; align-items:stretch; margin-bottom:clamp(34px,5vw,54px); background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-sm); }
.abc-blog__featured .img{ overflow:hidden; }
.abc-blog__featured .img img{ width:100%; height:100%; object-fit:cover; min-height:300px; }
.abc-blog__featured .body{ padding:clamp(26px,3.5vw,46px); display:flex; flex-direction:column; justify-content:center; }
.abc-blog__featured .body .abc-post__meta{ margin-bottom:14px; }
.abc-blog__featured .body h2{ font-size:clamp(1.5rem,2.6vw,2rem); margin-bottom:12px; }
.abc-blog__featured .body p{ color:var(--abc-muted); margin-bottom:22px; }

.abc-blog__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:26px; }
.abc-post{ display:flex; flex-direction:column; background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md); overflow:hidden; box-shadow:var(--sh-sm); transition:transform .2s, box-shadow .2s; }
.abc-post:hover{ transform:translateY(-4px); box-shadow:var(--sh-md); }
.abc-post__img{ aspect-ratio:16/10; overflow:hidden; }
.abc-post__img img{ width:100%; height:100%; object-fit:cover; transition:transform .35s ease; }
.abc-post:hover .abc-post__img img{ transform:scale(1.05); }
.abc-post__body{ padding:22px 22px 24px; display:flex; flex-direction:column; flex:1; }
.abc-post__meta{ display:flex; align-items:center; gap:10px; margin-bottom:12px; font-size:.82rem; color:var(--abc-muted); }
.abc-post h3{ font-size:1.16rem; margin-bottom:8px; line-height:1.25; }
.abc-post h3 a:hover{ color:var(--abc-blue); }
.abc-post p{ color:var(--abc-muted); font-size:.95rem; margin-bottom:16px; }
.abc-post__link{ margin-top:auto; font-family:var(--font-head); font-weight:600; color:var(--abc-blue); display:inline-flex; align-items:center; gap:7px; }
.abc-post__link:hover{ gap:11px; }
@media (max-width:860px){
  .abc-blog__grid{ grid-template-columns:1fr 1fr; }
  .abc-blog__featured{ grid-template-columns:1fr; }
  .abc-blog__featured .img img{ min-height:220px; }
}
@media (max-width:540px){ .abc-blog__grid{ grid-template-columns:1fr; } }

/* =========================================================================
   [ARTICLE] — GABARIT D'UN ARTICLE
   ========================================================================= */
.abc-article{ max-width:760px; margin:0 auto; }
.abc-article__meta{ display:flex; flex-wrap:wrap; align-items:center; gap:12px; color:var(--abc-muted); font-size:.9rem; margin-bottom:6px; }
.abc-article__cover{ border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-md); margin:clamp(22px,3vw,34px) 0; }
.abc-article__cover img{ width:100%; object-fit:cover; max-height:440px; }
.abc-article__body{ font-size:1.06rem; color:var(--abc-body); }
.abc-article__body h2{ font-size:clamp(1.35rem,2.4vw,1.6rem); margin:1.7em 0 .5em; }
.abc-article__body h3{ font-size:1.2rem; margin:1.4em 0 .4em; }
.abc-article__body p{ margin:0 0 1.1em; }
.abc-article__body ul{ list-style:disc; padding-left:1.3em; margin:0 0 1.2em; display:grid; gap:.45em; }
.abc-article__body blockquote{ border-left:4px solid var(--abc-red); padding:8px 0 8px 22px; margin:1.5em 0; font-family:var(--font-head); font-weight:600; font-size:clamp(1.15rem,2vw,1.3rem); color:var(--abc-ink); line-height:1.45; }
.abc-article__share{ display:flex; align-items:center; flex-wrap:wrap; gap:14px; margin-top:38px; padding-top:26px; border-top:1px solid var(--abc-line); }
.abc-article__share span{ font-family:var(--font-head); font-weight:600; color:var(--abc-ink); }
.abc-article__share a{ width:42px; height:42px; border-radius:50%; background:var(--abc-blue-soft); color:var(--abc-blue); display:flex; align-items:center; justify-content:center; transition:background .15s,color .15s; }
.abc-article__share a:hover{ background:var(--abc-blue); color:#fff; }

/* =========================================================================
   [CONTACT] — COORDONNÉES + FORMULAIRE
   ========================================================================= */
.abc-contact__grid{ display:grid; grid-template-columns:1fr 1.1fr; gap:clamp(28px,5vw,56px); align-items:start; }
.abc-info{ display:grid; gap:16px; }
.abc-info__item{ display:flex; gap:16px; align-items:flex-start; background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md); padding:20px 22px; box-shadow:var(--sh-sm); }
.abc-info__item .ic{ flex:none; width:46px; height:46px; border-radius:13px; background:var(--abc-blue-soft); color:var(--abc-blue); display:flex; align-items:center; justify-content:center; }
.abc-info__item b{ display:block; font-family:var(--font-head); color:var(--abc-ink); margin-bottom:2px; }
.abc-info__item a,.abc-info__item span{ color:var(--abc-body); }
.abc-info__item a:hover{ color:var(--abc-blue); }

.abc-form{ background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-lg); padding:clamp(24px,4vw,38px); box-shadow:var(--sh-md); }
.abc-form__row{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.abc-field{ margin-bottom:16px; }
.abc-field label{ display:block; font-family:var(--font-head); font-weight:600; font-size:.88rem; color:var(--abc-ink); margin-bottom:7px; }
.abc-field input,.abc-field select,.abc-field textarea{
  width:100%; padding:13px 15px; border:1px solid var(--abc-line); border-radius:12px;
  font-family:var(--font-body); font-size:1rem; color:var(--abc-ink); background:var(--abc-cream); transition:border .15s, box-shadow .15s;
}
.abc-field input:focus,.abc-field select:focus,.abc-field textarea:focus{ outline:none; border-color:var(--abc-blue); box-shadow:0 0 0 3px var(--abc-blue-soft); background:#fff; }
.abc-field textarea{ min-height:120px; resize:vertical; }
.abc-form small{ color:var(--abc-muted); font-size:.84rem; }
@media (max-width:860px){ .abc-contact__grid{ grid-template-columns:1fr; } }
@media (max-width:520px){ .abc-form__row{ grid-template-columns:1fr; } }

/* =========================================================================
   [ACCUEIL] — NOTRE CAMPUS (galerie photos réelles)
   ========================================================================= */
.abc-campus__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.abc-campus__item{ position:relative; border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-md); border:1px solid var(--abc-line); }
.abc-campus__item img{ width:100%; height:100%; object-fit:cover; aspect-ratio:3/3.4; transition:transform .4s ease; }
.abc-campus__item:hover img{ transform:scale(1.05); }
.abc-campus__item figcaption{
  position:absolute; left:0; right:0; bottom:0; padding:34px 20px 18px;
  color:#fff; font-family:var(--font-head); font-weight:600; font-size:1.02rem;
  background:linear-gradient(to top, rgba(24,33,59,.82), rgba(24,33,59,0));
}
.abc-campus__item figcaption small{ display:block; font-weight:500; font-size:.85rem; opacity:.9; margin-top:2px; }
.abc-campus__feats{ display:flex; flex-wrap:wrap; justify-content:center; gap:12px; margin-top:clamp(30px,4vw,44px); }
.abc-campus__feats .abc-pill{ background:var(--abc-blue-soft); border-color:transparent; }
@media (max-width:860px){ .abc-campus__grid{ grid-template-columns:1fr; max-width:440px; margin-inline:auto; } }

/* =========================================================================
   [WORKSHOPS] — GROUPES PAR ÂGE (Wednesday Kids Club)
   ========================================================================= */
.abc-groups{ display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin:18px 0; }
.abc-group{ background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md); padding:22px 20px; box-shadow:var(--sh-sm); text-align:center; }
.abc-group .e{ font-size:1.9rem; display:block; margin-bottom:8px; }
.abc-group b{ display:block; font-family:var(--font-head); color:var(--abc-ink); font-size:1.05rem; }
.abc-group .age{ display:inline-block; font-family:var(--font-head); font-weight:700; font-size:.78rem; color:var(--abc-blue); background:var(--abc-blue-soft); padding:4px 11px; border-radius:var(--r-pill); margin:6px 0 8px; }
.abc-group small{ display:block; color:var(--abc-muted); font-size:.9rem; }
@media (max-width:640px){ .abc-groups{ grid-template-columns:1fr; max-width:360px; margin-inline:auto; } }

/* Bandeau avantage (crédit d'impôt, info clé) */
.abc-perk{ display:flex; gap:14px; align-items:flex-start; background:#EAF7EE; border:1px solid #BFE6CC; border-radius:var(--r-md); padding:18px 22px; margin:20px 0; color:#1E6B3C; }
.abc-perk .ic{ flex:none; width:40px; height:40px; border-radius:12px; background:#1E9E54; color:#fff; display:flex; align-items:center; justify-content:center; font-size:1.2rem; font-weight:700; }
.abc-perk b{ color:#155A31; }
.abc-perk p{ margin:2px 0 0; font-size:.94rem; }

/* QR / réseaux contact */
.abc-social-card{ display:flex; gap:18px; align-items:center; background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md); padding:18px; box-shadow:var(--sh-sm); }
.abc-social-card img{ width:96px; height:96px; border-radius:12px; }
.abc-social-card b{ font-family:var(--font-head); color:var(--abc-ink); display:block; margin-bottom:6px; }
.abc-social-links{ display:flex; gap:10px; }
.abc-social-links a{ width:40px; height:40px; border-radius:50%; background:var(--abc-blue-soft); color:var(--abc-blue); display:flex; align-items:center; justify-content:center; transition:background .15s,color .15s; }
.abc-social-links a:hover{ background:var(--abc-blue); color:#fff; }

/* =========================================================================
   [COMMUN] — MENU DÉROULANT "NOS PROGRAMMES"
   ========================================================================= */
.abc-nav__drop{ position:relative; display:flex; align-items:center; }
.abc-nav__droptoggle{ display:inline-flex; align-items:center; gap:6px; cursor:pointer; }
.abc-nav__droptoggle .chev{ width:13px; height:13px; transition:transform .2s ease; }
.abc-nav__menu{
  position:absolute; top:100%; left:50%; transform:translateX(-50%) translateY(-6px);
  background:#fff; border:1px solid var(--abc-line); border-radius:16px; box-shadow:var(--sh-md);
  padding:10px; min-width:250px; display:grid; gap:1px; z-index:60;
  opacity:0; visibility:hidden; transition:opacity .18s ease, transform .18s ease;
}
/* Pont invisible : élargit la zone de survol pour couvrir l'espace onglet↔menu (desktop only) */
@media (min-width:1141px){
  .abc-nav__drop::after{ content:""; position:absolute; top:100%; left:-10px; right:-10px; height:14px; }
}
.abc-nav__drop:hover .abc-nav__menu, .abc-nav__drop:focus-within .abc-nav__menu{ opacity:1; visibility:visible; transform:translateX(-50%) translateY(0); }
.abc-nav__drop:hover .abc-nav__droptoggle .chev,.abc-nav__drop:focus-within .abc-nav__droptoggle .chev{ transform:rotate(180deg); }
.abc-nav__menu a{ padding:11px 14px; border-radius:10px; white-space:nowrap; font-size:.9rem; color:var(--abc-body); }
.abc-nav__menu a:hover{ background:var(--abc-blue-soft); color:var(--abc-blue); }

/* =========================================================================
   [PROGRAMMES] — LANDING (grille de programmes) + FLYER
   ========================================================================= */
.abc-flyer{ background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-lg); box-shadow:var(--sh-md); padding:10px; }
.abc-flyer img{ width:100%; height:auto; border-radius:14px; display:block; }
.abc-detail--flyer .abc-detail__media img{ aspect-ratio:auto; object-fit:contain; box-shadow:none; border-radius:14px; }

/* Programme : bandeau de faits clés */
.abc-facts{ display:flex; flex-wrap:wrap; gap:10px; margin:14px 0 20px; }
.abc-facts .chip{ display:inline-flex; align-items:center; gap:7px; font-family:var(--font-head); font-weight:600; font-size:.85rem; color:var(--abc-blue); background:var(--abc-blue-soft); padding:8px 14px; border-radius:var(--r-pill); }
.abc-cta-row{ display:flex; flex-wrap:wrap; gap:12px; margin-top:8px; }

/* =========================================================================
   [PROGRAMMES] — BLOCS DÉROULANTS (accordéon natif)
   ========================================================================= */
.abc-acc{ display:grid; gap:12px; max-width:860px; }
.abc-acc details{ background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md); box-shadow:var(--sh-sm); overflow:hidden; }
.abc-acc summary{ cursor:pointer; padding:18px 22px; font-family:var(--font-head); font-weight:600; font-size:1.02rem; color:var(--abc-ink); list-style:none; display:flex; justify-content:space-between; align-items:center; gap:14px; }
.abc-acc summary::-webkit-details-marker{ display:none; }
.abc-acc summary::after{ content:"+"; font-size:1.5rem; line-height:1; color:var(--abc-blue); font-family:var(--font-head); }
.abc-acc details[open] summary{ border-bottom:1px solid var(--abc-line); }
.abc-acc details[open] summary::after{ content:"–"; }
.abc-acc__body{ padding:18px 22px 22px; }
.abc-acc__body > *:first-child{ margin-top:0; }
.abc-acc__body .abc-hours,.abc-acc__body .abc-groups,.abc-acc__body .abc-acts{ margin-top:0; }

/* =========================================================================
   [PROGRAMMES/ACCUEIL] — GALERIE ATELIERS CULTURELS (flyers)
   ========================================================================= */
.abc-gallery{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.abc-gallery__item{ display:block; background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md); overflow:hidden; box-shadow:var(--sh-sm); transition:transform .2s, box-shadow .2s; }
.abc-gallery__item:hover{ transform:translateY(-4px); box-shadow:var(--sh-md); }
.abc-gallery__thumb{ aspect-ratio:1/1; overflow:hidden; background:var(--abc-cream); }
.abc-gallery__thumb img{ width:100%; height:100%; object-fit:cover; object-position:top center; transition:transform .35s ease; }
.abc-gallery__item:hover .abc-gallery__thumb img{ transform:scale(1.05); }
.abc-gallery__item b{ display:block; padding:12px 14px; font-family:var(--font-head); font-weight:600; font-size:.9rem; color:var(--abc-ink); text-align:center; }
@media (max-width:900px){ .abc-gallery{ grid-template-columns:repeat(3,1fr); } }
@media (max-width:640px){ .abc-gallery{ grid-template-columns:1fr 1fr; gap:14px; } }

/* =========================================================================
   [LE CAMPUS] — page dédiée (grande galerie)
   ========================================================================= */
.abc-campusbig{ display:grid; grid-template-columns:repeat(2,1fr); gap:22px; }
.abc-campusbig figure{ position:relative; border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-md); border:1px solid var(--abc-line); margin:0; }
.abc-campusbig img{ width:100%; height:100%; object-fit:cover; aspect-ratio:4/3; transition:transform .4s ease; }
.abc-campusbig figure:hover img{ transform:scale(1.04); }
.abc-campusbig figcaption{ position:absolute; left:0; right:0; bottom:0; padding:40px 22px 18px; color:#fff; font-family:var(--font-head); font-weight:600; font-size:1.08rem; background:linear-gradient(to top, rgba(24,33,59,.85), rgba(24,33,59,0)); }
.abc-campusbig figcaption small{ display:block; font-weight:500; font-size:.86rem; opacity:.9; margin-top:2px; }
@media (max-width:760px){ .abc-campusbig{ grid-template-columns:1fr; } }

/* Bandeau "features" campus */
.abc-featlist{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.abc-featlist__item{ background:#fff; border:1px solid var(--abc-line); border-radius:var(--r-md); padding:24px 20px; text-align:center; box-shadow:var(--sh-sm); }
.abc-featlist__item .e{ font-size:2rem; display:block; margin-bottom:10px; }
.abc-featlist__item b{ display:block; font-family:var(--font-head); color:var(--abc-ink); margin-bottom:4px; }
.abc-featlist__item small{ color:var(--abc-muted); font-size:.88rem; }
@media (max-width:860px){ .abc-featlist{ grid-template-columns:1fr 1fr; } }
@media (max-width:460px){ .abc-featlist{ grid-template-columns:1fr; } }

/* Menu déroulant — comportement mobile (dans le menu burger) */
@media (max-width:1140px){
  .abc-nav.is-open .abc-nav__drop{ flex-direction:column; align-items:stretch; }
  .abc-nav.is-open .abc-nav__droptoggle{ justify-content:space-between; padding:14px 16px; font-size:1.05rem; }
  .abc-nav.is-open .abc-nav__menu{ position:static; transform:none; opacity:1; visibility:visible; box-shadow:none; border:0; border-radius:0; padding:0; min-width:0; background:transparent; display:none; }
  .abc-nav.is-open .abc-nav__drop.is-open .abc-nav__menu{ display:grid; }
  .abc-nav.is-open .abc-nav__menu a{ padding:12px 16px 12px 30px !important; font-size:1rem; }
  .abc-nav.is-open .abc-nav__drop.is-open .abc-nav__droptoggle .chev{ transform:rotate(180deg); }
}


/* ==== Priorite sur les remises a zero d'Elementor ==== */
/* .elementor a{box-shadow:none} annule les ombres de la maquette : on repasse devant. */
.elementor .abc-btn--primary{ box-shadow:0 10px 24px rgba(226,50,43,.30); }
.elementor .abc-btn--primary:hover{ box-shadow:0 14px 30px rgba(226,50,43,.38); }
.elementor .abc-btn--blue{ box-shadow:0 10px 24px rgba(33,64,154,.28); }
.elementor .abc-btn--blue:hover{ box-shadow:0 14px 30px rgba(33,64,154,.36); }
.elementor .abc-btn--ghost{ box-shadow:var(--sh-sm); }
.elementor .abc-gallery__item{ box-shadow:var(--sh-sm); }
.elementor .abc-gallery__item:hover{ box-shadow:var(--sh-md); }

/* Marge par defaut des <figure> : la maquette s'appuie dessus (galerie campus). */
.elementor .abc-passthrough .elementor-widget figure.abc-campus__item{ margin-block:1em; margin-inline:40px; }

/* -- bouton natif du formulaire : hauteur identique a la maquette -- */
.elementor .abc-passthrough button.abc-btn{ line-height:normal; }

/* -- logo du pied de page : WordPress ajoute width/height, la maquette non -- */
.elementor .abc-footer__logo img{ width:auto; }

/* -- en-tete : rendre les conteneurs Elementor transparents pour que position:sticky fonctionne -- */
/* Sans cela, .abc-header colle a l'interieur d'un parent de 79px : il ne se fixe pas. */
.elementor-location-header,
.elementor-location-header > .e-con,
.elementor-location-header > .e-con > .e-con-inner,
.elementor-location-header .elementor-widget-shortcode,
.elementor-location-header .elementor-widget-shortcode > .elementor-widget-container,
.elementor-location-header .elementor-shortcode{ display:contents; }


/* ==== PASSERELLE : widgets Elementor natifs <-> composants de la maquette ==== */
/* Ces regles permettent de construire les sections avec de VRAIS widgets Elementor
   tout en gardant le rendu exact de la maquette. Une seule fois pour tout le site. */
/* 1. Elementor ajoute 10px de marge interne et 20px d'espacement : la maquette gere tout. */
.elementor .e-con[class*="abc-"]{ --gap:0px; --row-gap:0px; --column-gap:0px; }
.elementor .e-con.abc-head,
.elementor .e-con[class*="__grid"],
.elementor .e-con[class*="__inner"]{ padding:0; }
.elementor .e-con.abc-container{ padding-block:0; }
/* 2. Le sur-titre est une pastille : il ne doit pas s'etirer sur toute la largeur. */
.abc-head > .elementor-widget.abc-kicker{ align-self:center; }
.abc-head--left > .elementor-widget.abc-kicker{ align-self:flex-start; }
/* 3. Couleur des titres : Elementor applique sa couleur globale, la maquette veut l'encre. */
/* Elementor impose sa couleur et sa typo globales aux titres : on cible par balise
   pour reproduire exactement les regles h1..h4 de la maquette. */
.elementor .elementor-widget-heading h1.elementor-heading-title{ color:var(--abc-ink); font-family:var(--font-head); font-weight:800; letter-spacing:-.02em; line-height:1.12; }
.elementor .elementor-widget-heading h2.elementor-heading-title{ color:var(--abc-ink); font-family:var(--font-head); font-weight:800; letter-spacing:-.01em; line-height:1.12; }
.elementor .elementor-widget-heading h3.elementor-heading-title,
.elementor .elementor-widget-heading h4.elementor-heading-title{ color:var(--abc-ink); font-family:var(--font-head); font-weight:700; letter-spacing:normal; line-height:1.12; }
.elementor .abc-section--blue .elementor-widget-heading h2.elementor-heading-title,
.elementor .abc-section--blue .elementor-widget-heading h3.elementor-heading-title{ color:#fff; }
/* Le sur-titre est rendu dans un <span> interne : on lui redonne le style pastille. */
.elementor .abc-kicker .elementor-heading-title{ line-height:1.65; color:inherit; font-family:var(--font-head); font-weight:600; font-size:inherit; letter-spacing:inherit; text-transform:inherit; }


/* 4. Icones SVG : Elementor force un remplissage, la maquette veut un trace. */
.elementor .abc-card__ic .elementor-widget-container,
.elementor .abc-card__ic .elementor-icon-wrapper,
.elementor .abc-card__ic .elementor-icon{ display:contents; }
.elementor .abc-card__ic.elementor-widget .elementor-icon{ color:inherit; font-size:inherit; }
.elementor .abc-card__ic.elementor-widget .elementor-icon-wrapper svg,
.elementor .abc-card__ic.elementor-widget .elementor-icon svg,
.elementor .abc-card__ic svg{ width:20px; height:20px; flex:none; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }

/* -- marges : Elementor remet les titres a zero, la maquette s'en sert -- */
.elementor .elementor-widget-heading h1.elementor-heading-title,
.elementor .elementor-widget-heading h2.elementor-heading-title,
.elementor .elementor-widget-heading h3.elementor-heading-title,
.elementor .elementor-widget-heading h4.elementor-heading-title{ margin:0 0 .5em; }
.elementor .abc-card .elementor-widget-heading h3.elementor-heading-title{ margin-bottom:8px; }
.elementor .abc-head > .elementor-widget.abc-kicker{ margin-bottom:18px; }
.elementor .abc-card .elementor-widget-text-editor p{ margin:0; }

/* -- marge du widget icone -- */
.elementor .abc-card > .elementor-widget.abc-card__ic{ margin-bottom:18px; }


/* ==== PASSERELLE 2 : composants de l'accueil ==== */
/* A. Elementor ajoute 10px de marge interne a tout container : la maquette gere. */
.elementor .e-con[class*="abc-"]{ --padding-block-start:0px; --padding-block-end:0px; --padding-inline-start:0px; --padding-inline-end:0px; --padding-top:0px; --padding-right:0px; --padding-bottom:0px; --padding-left:0px; }

/* B. Elementor force la direction colonne : ces blocs sont des rangees. */
.elementor .abc-hero__cta, .elementor .abc-hero__trust, .elementor .abc-prog__top,
.elementor .abc-cta__btns, .elementor .abc-zone__towns, .elementor .abc-campus__feats,
.elementor .abc-reviews__head, .elementor .abc-review__who, .elementor .abc-cta-row{ --flex-direction:row; }

/* C. Pastilles et sur-titres : le style est sur l'enveloppe, le texte interne doit etre neutre. */
.elementor .elementor-widget-heading.abc-pill .elementor-heading-title,
.elementor .elementor-widget-heading.abc-age .elementor-heading-title,
.elementor .elementor-widget-heading.abc-kicker .elementor-heading-title,
.elementor .elementor-widget-heading.abc-prog__emoji .elementor-heading-title,
.elementor .elementor-widget-heading.abc-reviews__stars .elementor-heading-title,
.elementor .elementor-widget-heading.abc-gallery__label .elementor-heading-title{ font:inherit; color:inherit; letter-spacing:inherit; text-transform:inherit; line-height:inherit; margin:0; }

/* D. Galerie campus : la maquette s'appuie sur la marge par defaut des <figure>. */
.elementor .e-con.abc-campus__item{ margin-block:1em; margin-inline:40px; }

/* E. Liens-boutons (En savoir plus) : pas de fond ni de marge interne. */
.elementor .abc-l .elementor-button{ background:none; border:0; padding:0; box-shadow:none; font-family:var(--font-head); font-weight:600; font-size:inherit; color:var(--abc-blue); display:inline-flex; align-items:center; gap:7px; line-height:inherit; }
.elementor .abc-l .elementor-button:hover{ gap:11px; background:none; color:var(--abc-blue); }

/* F. Liste a coches de la section methode. */
.elementor .abc-mission__list .elementor-icon-list-items{ display:grid; gap:14px; }
.elementor .abc-mission__list .elementor-icon-list-item{ display:flex; gap:12px; align-items:flex-start; margin:0; }
.elementor .abc-mission__list .elementor-icon-list-icon{ flex:none; width:26px; height:26px; border-radius:50%; background:#EAF7EE; color:#1E9E54; display:flex; align-items:center; justify-content:center; }
.elementor .abc-mission__list .elementor-icon-list-icon svg{ width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.elementor .abc-mission__list .elementor-icon-list-text{ color:var(--abc-body); font-size:inherit; }


/* ==== PASSERELLE 3 : boutons et corrections ==== */
/* La gouttiere du conteneur ne doit PAS etre annulee. */
.elementor .e-con.abc-container{ --padding-inline-start:var(--gutter); --padding-inline-end:var(--gutter); }

/* Boutons : le style de la maquette porte sur le <a> genere par Elementor. */
.elementor .abc-b .elementor-button{ display:inline-flex; align-items:center; justify-content:center; gap:10px; font-family:var(--font-head); font-weight:600; font-size:1rem; line-height:1.65; padding:15px 28px; border-radius:var(--r-pill); cursor:pointer; border:2px solid transparent; transition:transform .18s ease, box-shadow .18s ease, background .18s ease; white-space:nowrap; text-decoration:none; }
.elementor .abc-b .elementor-button:hover{ transform:translateY(-2px); }
.elementor .abc-b--primary .elementor-button{ background:var(--abc-red); color:#fff; box-shadow:0 10px 24px rgba(226,50,43,.30); }
.elementor .abc-b--primary .elementor-button:hover{ background:var(--abc-red-dark); box-shadow:0 14px 30px rgba(226,50,43,.38); }
.elementor .abc-b--blue .elementor-button{ background:var(--abc-blue); color:#fff; box-shadow:0 10px 24px rgba(33,64,154,.28); }
.elementor .abc-b--blue .elementor-button:hover{ background:var(--abc-blue-light); box-shadow:0 14px 30px rgba(33,64,154,.36); }
.elementor .abc-b--ghost .elementor-button{ background:#fff; color:var(--abc-ink); border-color:var(--abc-line); box-shadow:var(--sh-sm); }
.elementor .abc-b--ghost .elementor-button:hover{ border-color:var(--abc-blue); color:var(--abc-blue); background:#fff; }
.elementor .abc-b--outline-white .elementor-button{ background:transparent; color:#fff; border-color:rgba(255,255,255,.55); }
.elementor .abc-b--outline-white .elementor-button:hover{ background:#fff; color:var(--abc-blue); }
.elementor .abc-b{ width:auto; }

/* Galerie campus : marge par defaut des <figure>. */
.elementor .e-con.abc-campus__item{ --margin-block-start:1em; --margin-block-end:1em; --margin-inline-start:40px; --margin-inline-end:40px; margin-block:1em; margin-inline:40px; }

/* Etiquette de la galerie d'ateliers. */
.elementor .abc-gallery__label{ display:block; }
.elementor .abc-gallery__label .elementor-heading-title{ display:block; padding:12px 14px; font-family:var(--font-head); font-weight:600; font-size:.9rem; color:var(--abc-ink); text-align:center; line-height:1.65; margin:0; }

/* Interlignes des listes et des liens-boutons. */
.elementor .abc-mission__list .elementor-icon-list-text{ line-height:1.65; }
.elementor .abc-l .elementor-button{ line-height:1.65; }

/* Chapeau du hero : largeur maximale de la maquette. */
.elementor .elementor-widget.abc-hero__lead{ max-width:540px; }


/* ==== PASSERELLE 4 ==== */
/* Elementor met width:100% : la marge de la galerie campus debordait au lieu de retrecir. */
.elementor .e-con.abc-campus__item{ width:auto; }

/* Elementor met max-width:100% sur les widgets : on retablit la largeur de la maquette. */
.elementor .elementor-element.elementor-widget.abc-hero__lead{ max-width:540px; }

/* Liste a coches : Elementor ajoute son propre espacement en plus de la grille. */
.elementor .abc-mission__list .elementor-icon-list-item{ padding:0; }

/* Etiquette de galerie : taille et interligne de la maquette. */
.elementor .elementor-element.abc-gallery__label{ line-height:1.65; }
.elementor .abc-gallery__label .elementor-heading-title{ font-size:.9rem; line-height:1.65; }


/* ==== PASSERELLE 5 ==== */
/* Gouttiere du conteneur, explicite. Le hero est le seul a l'annuler (comme la maquette). */
.elementor .e-con.abc-container{ padding-inline:var(--gutter); }
.elementor .e-con.abc-hero__inner{ padding-inline:0; padding-block:clamp(48px,7vw,92px); }

/* Legendes en surimpression (galerie campus et presse). */
.elementor .abc-campus__item .abc-cap{ position:absolute; left:0; right:0; bottom:0; padding:34px 20px 18px; color:#fff; font-family:var(--font-head); font-weight:600; font-size:1.02rem; line-height:1.65; background:linear-gradient(to top, rgba(24,33,59,.82), rgba(24,33,59,0)); z-index:2; }
.elementor .abc-campus__item .abc-cap small{ display:block; font-weight:500; font-size:.85rem; opacity:.9; margin-top:2px; }
.elementor .abc-campus__item .abc-cap p{ margin:0; }
.elementor .abc-press__media .abc-cap{ margin-top:10px; font-size:.85rem; color:var(--abc-muted); text-align:center; line-height:1.65; }
.elementor .abc-press__media .abc-cap p{ margin:0; }

/* Liste a coches : interligne de l'element. */
.elementor .abc-mission__list .elementor-icon-list-item{ line-height:1.65; }


/* ==== PASSERELLE 6 ==== */
/* Liste a coches : neutraliser l'espacement propre d'Elementor et son decalage de texte. */
.elementor .abc-mission__list .elementor-icon-list-items .elementor-icon-list-item:not(:last-child){ padding-bottom:0; }
.elementor .abc-mission__list .elementor-icon-list-item .elementor-icon-list-text{ padding-left:0; font-size:inherit; line-height:1.65; }

/* Etiquette de galerie : la taille doit etre sur l'enveloppe ET le texte. */
.elementor .elementor-element.abc-gallery__label{ font-family:var(--font-head); font-weight:600; font-size:.9rem; line-height:1.65; color:var(--abc-ink); text-align:center; }

/* Paragraphes dont la classe maquette est portee par l'enveloppe du widget. */
.elementor .elementor-element.abc-hero__lead{ margin-bottom:30px; }
.elementor .abc-hero__lead p, .elementor .abc-note p, .elementor .abc-press__cite p, .elementor .abc-cap p{ margin:0; }


/* ==== PASSERELLE 7 : regles specifiques de la maquette a repliquer ==== */
/* La passerelle generique sur les titres ecrase ces regles ciblees de la maquette :
   on les replique a la meme specificite. */
.elementor .abc-hero .elementor-widget-heading h1.elementor-heading-title{ margin-bottom:20px; }
.elementor .abc-prog .elementor-widget-heading h3.elementor-heading-title{ margin-bottom:8px; }
.elementor .abc-cta .elementor-widget-heading h2.elementor-heading-title{ color:#fff; }


/* ==== PASSERELLE 8b : contexte bloc ==== */
/* Ces blocs sont de simples <div> dans la maquette. Elementor en fait des conteneurs flex,
   ce qui change le calcul des marges et des lignes. On retablit l'affichage bloc. */
.elementor .e-con.abc-head,
.elementor .e-con.abc-hero__text,
.elementor .e-con.abc-mission__text,
.elementor .e-con.abc-zone__text,
.elementor .e-con.abc-press__text,
.elementor .e-con.abc-card,
.elementor .e-con.abc-review,
.elementor .e-con.abc-gallery__item,
.elementor .e-con.abc-cta__in,
.elementor .e-con.abc-mission__media,
.elementor .e-con.abc-hero__media,
.elementor .e-con.abc-press__media,
.elementor .e-con.abc-campus__item,
.elementor .e-con.abc-gallery__thumb{ display:block; }


/* ==== PASSERELLE 9 ==== */
/* Elementor annule la marge basse des enveloppes de widget ; la maquette s'en sert. */
.elementor .elementor-element.abc-kicker{ margin-bottom:18px; }
.elementor .abc-review .elementor-element.abc-reviews__stars{ margin-bottom:12px; font-size:.95rem; }


/* ==== PASSERELLE 10 ==== */
/* Les enveloppes Elementor empechent le repliement de la marge basse du dernier titre. */
.elementor .abc-head > .elementor-widget:last-child .elementor-heading-title{ margin-bottom:0; }


/* ==== PASSERELLE 11 ==== */
/* .abc-center centre par text-align : il faut un contexte bloc et un widget en ligne. */
.elementor .e-con.abc-center{ display:block; text-align:center; }
.elementor .abc-center > .elementor-widget{ display:inline-block; }


/* ==== PASSERELLE 12 ==== */
/* Dans la maquette, li{display:flex} fait de chaque <strong> un element flex distinct
   (d'ou l'espacement de 12px autour des mots en gras). Elementor enveloppe le texte
   dans un <span> : on efface cette enveloppe pour retrouver la meme structure. */
.elementor .abc-mission__list .elementor-icon-list-text{ display:contents; }


/* ==== PASSERELLE 13 ==== */
/* Elementor rend ses enveloppes de widget position:relative, ce qui capture les elements
   en position absolue (badge 4C, carte flottante du hero, legendes). On les rend statiques
   pour que l'ancrage se fasse sur le bloc de la maquette. */
.elementor .abc-hero__media > .elementor-widget,
.elementor .abc-mission__media > .elementor-widget,
.elementor .abc-campus__item > .elementor-widget:not(.abc-cap),
.elementor .abc-press__media > .elementor-widget{ position:static; }


/* ==== PASSERELLE 14 ==== */
/* .abc-gallery__thumb img{height:100%} : l'enveloppe du widget Image casse la reference
   de hauteur, les affiches non carrees debordaient leur cadre. */
.elementor .abc-gallery__thumb > .elementor-widget,
.elementor .abc-gallery__thumb .elementor-widget-container,
.elementor .abc-campus__item > .elementor-widget-image,
.elementor .abc-campus__item .elementor-widget-image .elementor-widget-container{ display:contents; }


/* ==== PASSERELLE 15 ==== */
/* Elementor laisse une marge sur l'icone de liste : elle n'etait pas centree dans sa pastille. */
.elementor .abc-mission__list.elementor-widget .elementor-icon-list-items .elementor-icon-list-item .elementor-icon-list-icon svg{ margin:0; }


/* ==== PASSERELLE 16 : variantes responsives ==== */
/* Mes regles de passerelle sont inconditionnelles : il faut repliquer les points de
   rupture de la maquette la ou elle change ces memes proprietes. */
@media (max-width:600px){
  .elementor .e-con.abc-hero__inner{ padding-block:30px 42px; }
}

/* -- min-width:auto (comportement d'origine des <div>) -- */
/* Elementor met min-width:0 sur ses conteneurs ; la maquette laisse le bloc image
   deborder legerement en mobile (comportement par defaut d'un <div>). */
/* Colonnes de grille : la maquette utilise des <div> (min-width:auto), Elementor met 0,
   ce qui empeche la colonne de grandir jusqu'a la largeur minimale de son contenu. */
.elementor .e-con.abc-mission__media,
.elementor .e-con.abc-mission__text,
.elementor .e-con.abc-hero__media,
.elementor .e-con.abc-hero__text,
.elementor .e-con.abc-press__media,
.elementor .e-con.abc-press__text,
.elementor .e-con.abc-zone__text,
.elementor .e-con.abc-zone__map{ min-width:auto; }


/* ==== PASSERELLE 17 : propagation de la largeur minimale ==== */
/* Elementor met max-width:100% sur ses enveloppes de widget, ce qui empeche la largeur
   minimale du contenu de remonter jusqu'a la colonne de grille. Dans la maquette, la liste
   des 4C impose 374,6px en mobile (et fait legerement deborder la section, comme la maquette). */
.elementor.elementor .e-con > .elementor-widget.abc-mission__list,
.elementor.elementor .e-con > .e-con-inner > .elementor-widget.abc-mission__list,
.elementor .elementor-element.abc-mission__list > .elementor-widget-container{ max-width:none; min-width:auto; }

/* -- boutons pleine largeur sous 430px (comme la maquette) -- */
@media (max-width:430px){
  .elementor .abc-hero__cta > .elementor-widget.abc-b,
  .elementor .abc-cta__btns > .elementor-widget.abc-b{ flex:1 1 100%; width:100%; }
  .elementor .abc-hero__cta .abc-b .elementor-button,
  .elementor .abc-cta__btns .abc-b .elementor-button{ width:100%; }
}

/* -- pastilles : le contenu doit etre des elements flex directs (gap:8px) -- */
.elementor .elementor-widget-heading.abc-pill .elementor-heading-title{ display:contents; }


/* ==== PASSERELLE 18 : couleurs d'icones inscrites dans les widgets ==== */
/* Quand on inscrit une couleur d'icone dans le widget (pour que l'editeur l'affiche),
   Elementor l'applique en REMPLISSAGE. Les SVG de la maquette sont des traces : on force
   fill:none et on reporte la couleur sur le trace, avec une specificite suffisante. */
.elementor .elementor-widget.abc-card__ic .elementor-icon svg,
.elementor .elementor-widget.abc-card__ic .elementor-icon-wrapper svg{ fill:none !important; stroke:currentColor; }
.elementor .elementor-widget.abc-mission__list .elementor-icon-list-icon svg{ fill:none !important; stroke:currentColor; }


/* ==== PASSERELLE 19 : bannieres de page ==== */
.elementor .elementor-element.abc-breadcrumb{ margin-bottom:16px; }
.elementor .abc-pagehero .elementor-widget-heading h1.elementor-heading-title{ margin-bottom:16px; }


/* ==== PASSERELLE 20 : largeurs des widgets portant une classe maquette ==== */
/* Elementor plafonne ses widgets a max-width:100% via un selecteur a 4 classes,
   ce qui annule les largeurs de la maquette (.abc-article 760px, .abc-hero__lead 540px...).
   On rend la main a la maquette pour tout widget portant une classe abc-. */
/* Cas general : on libere le plafond d'Elementor... */
.elementor.elementor .e-con > .elementor-widget[class*="abc-"]:not(.abc-article):not(.abc-hero__lead),
.elementor.elementor .e-con > .e-con-inner > .elementor-widget[class*="abc-"]:not(.abc-article):not(.abc-hero__lead){ max-width:none; }
/* ...sauf pour les blocs qui ont leur propre largeur dans la maquette. */
.elementor.elementor .e-con > .elementor-widget.abc-article,
.elementor.elementor .e-con > .e-con-inner > .elementor-widget.abc-article{ max-width:760px; margin-inline:auto; }
.elementor.elementor .e-con > .elementor-widget.abc-hero__lead,
.elementor.elementor .e-con > .e-con-inner > .elementor-widget.abc-hero__lead{ max-width:540px; }

/* ==== PASSERELLE 21 : styles inline de la maquette ==== */
/* Un style="" inline bat toute feuille : on le rejoue en !important. */
.elementor .abc-s1{ max-width:900px !important; margin:0 auto !important; width:100% !important; }
.elementor .abc-s2{ margin-top:6px !important; }
.elementor .abc-s3{ max-width:none !important; margin-bottom:24px !important; }
.elementor .abc-s4{ max-width:760px !important; margin:0 auto !important; width:100% !important; }
.elementor .abc-s5{ min-height:420px !important; }
.elementor .abc-s6{ padding-top:clamp(30px,4vw,50px) !important; }

/* ==== PASSERELLE 25 : declarations de la maquette rejouees ==== */
/* Genere : voir passerelle_auto_css() dans build_pages_natif.py. */
.elementor.elementor .e-con.e-con.e-con.e-con.abc-adv{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-blog{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-campus{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-card{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-center{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-contact{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-container{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-cta{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-cta__in{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-detail--flyer{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-detail--rev{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-detail__media{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-detail__text{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-fig{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-formula--featured{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-gallery__thumb{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-head{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-head--left{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-hero{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-hero__media{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-hero__text{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-mission{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-mission__media{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-mission__text{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-mt{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-pagehero{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-pagehero__inner{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-press{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-press__media{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-press__text{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-programs{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-reviews{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-s1{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-s3{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-s4{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-s5{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-s6{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-section{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-section--cream{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-why{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-zone{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-zone__text{ display:block; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-acc{ max-width:860px; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-acts__item{ text-align:center; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-adv__item{ text-align:center; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-age{ font-family:var(--font-head); font-weight:700; font-size:.78rem; letter-spacing:.03em; color:var(--abc-blue); }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-article{ max-width:760px; margin:0 auto; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-blog__featured{ margin-bottom:clamp(34px,5vw,54px); }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-breadcrumb{ font-size:.88rem; color:var(--abc-muted); margin-bottom:16px; font-family:var(--font-head); }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-card__ic{ margin-bottom:18px; color:#fff; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-detail__feats{ margin:18px 0; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-detail__tag{ position:absolute; top:18px; left:18px; color:var(--abc-red); font-family:var(--font-head); font-weight:700; font-size:.8rem; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-featlist__item{ text-align:center; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-formula__flag{ position:absolute; top:-14px; left:50%; transform:translateX(-50%); color:#fff; font-family:var(--font-head); font-weight:600; font-size:.78rem; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-formula__list{ margin:18px 0 26px; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-formula__price{ font-family:var(--font-head); font-weight:800; font-size:2.4rem; color:var(--abc-ink); margin:6px 0; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-hero__lead{ font-size:1.18rem; color:var(--abc-body); max-width:540px; margin-bottom:30px; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-kicker{ font-family:var(--font-head); font-weight:600; font-size:.82rem; text-transform:uppercase; letter-spacing:.14em; color:var(--abc-red); margin-bottom:18px; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-kicker--blue{ color:var(--abc-blue); }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-mission__badge{ position:absolute; right:-18px; top:30px; color:#fff; text-align:center; max-width:150px; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-mission__list{ margin-top:24px; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-mt{ margin-top:28px; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-note{ font-size:.85rem; color:var(--abc-muted); text-align:center; margin-top:24px; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-perk{ margin:20px 0; color:#1E6B3C; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-pill{ font-family:var(--font-head); font-weight:600; font-size:.9rem; color:var(--abc-ink); }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-press__cite{ color:var(--abc-muted); font-size:.95rem; margin:0; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-prog__emoji{ font-size:1.9rem; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-prog__link{ margin-top:auto; font-family:var(--font-head); font-weight:600; color:var(--abc-blue); }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-review__who{ margin-top:18px; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-reviews__head{ margin-bottom:38px; }
.elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-reviews__stars{ color:var(--abc-gold); letter-spacing:2px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-acts{ display:grid; grid-template-columns:repeat(4,1fr); gap:16px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-adv__grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-campus__feats{ display:flex; flex-wrap:wrap; justify-content:center; gap:12px; margin-top:clamp(30px,4vw,44px); flex-direction:row; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-campus__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:22px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-campus__item{ position:relative; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-campusbig{ display:grid; grid-template-columns:repeat(2,1fr); gap:22px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-center{ text-align:center; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-container{ max-width:var(--container); margin-inline:auto; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-cta{ color:#fff; text-align:center; position:relative; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-cta-row{ display:flex; flex-wrap:wrap; gap:12px; margin-top:8px; flex-direction:row; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-cta__btns{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; flex-direction:row; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-cta__in{ position:relative; z-index:1; max-width:680px; margin:0 auto; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-detail{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(28px,5vw,60px); align-items:center; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-detail__media{ position:relative; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-detail__meta{ display:flex; flex-wrap:wrap; gap:10px; margin:14px 0 18px; flex-direction:row; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-facts{ display:flex; flex-wrap:wrap; gap:10px; margin:14px 0 20px; flex-direction:row; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-featlist{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-formula{ display:flex; flex-direction:column; position:relative; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-formulas{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; align-items:stretch; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-gallery{ display:grid; grid-template-columns:repeat(4,1fr); gap:18px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-gallery__item{ display:block; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-head{ max-width:720px; margin:0 auto clamp(36px,5vw,60px); text-align:center; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-head--left{ margin-inline:0; text-align:left; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-hero{ position:relative; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-hero__cta{ display:flex; flex-wrap:wrap; gap:14px; margin-bottom:30px; flex-direction:row; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-hero__inner{ display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(30px,5vw,64px); align-items:center; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-hero__media{ position:relative; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-hero__trust{ display:flex; flex-wrap:wrap; gap:10px; flex-direction:row; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-mission__inner{ display:grid; grid-template-columns:.95fr 1.05fr; gap:clamp(30px,5vw,64px); align-items:center; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-mission__media{ position:relative; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-mt{ margin-top:28px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-pagehero__inner{ max-width:760px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-press__inner{ display:grid; grid-template-columns:1.12fr .88fr; gap:clamp(28px,5vw,56px); align-items:center; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-press__media{ margin:0; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-prog{ position:relative; display:flex; flex-direction:column; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-prog__top{ display:flex; align-items:center; justify-content:space-between; margin-bottom:14px; flex-direction:row; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-programs__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-reviews__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-why__grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:24px; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-zone__inner{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,5vw,60px); align-items:center; }
.elementor.elementor .e-con.e-con.e-con.e-con.abc-zone__towns{ display:flex; flex-wrap:wrap; gap:12px; margin-top:8px; flex-direction:row; }
@media (max-width:900px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-hero__inner{ grid-template-columns:1fr; }
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-hero__media{ order:-1; }
}
@media (max-width:600px){
  .elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-hero__lead{ font-size:1.06rem; }
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-hero__inner{ gap:20px; }
}
@media (max-width:860px){
  .elementor.elementor .e-con .elementor-widget.elementor-widget.elementor-widget.elementor-widget.abc-mission__badge{ right:10px; }
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-mission__inner{ grid-template-columns:1fr; }
}
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-why__grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width:540px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-why__grid{ grid-template-columns:1fr; }
}
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-programs__grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width:540px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-programs__grid{ grid-template-columns:1fr; }
}
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-adv__grid{ grid-template-columns:1fr 1fr; }
}
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-reviews__grid{ grid-template-columns:1fr; }
}
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-press__inner{ grid-template-columns:1fr; }
}
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-zone__inner{ grid-template-columns:1fr; }
}
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-detail{ grid-template-columns:1fr; }
}
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-acts{ grid-template-columns:1fr 1fr; }
}
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-formulas{ grid-template-columns:1fr; max-width:440px; margin-inline:auto; }
}
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-campus__grid{ grid-template-columns:1fr; max-width:440px; margin-inline:auto; }
}
@media (max-width:900px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-gallery{ grid-template-columns:repeat(3,1fr); }
}
@media (max-width:640px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-gallery{ grid-template-columns:1fr 1fr; gap:14px; }
}
@media (max-width:760px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-campusbig{ grid-template-columns:1fr; }
}
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-featlist{ grid-template-columns:1fr 1fr; }
}
@media (max-width:460px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-featlist{ grid-template-columns:1fr; }
}

/* ==== PASSERELLE 22 : typo des widgets texte ==== */
/* .elementor-widget-text-editor (1 classe) bat .abc-breadcrumb (1 classe) car la
   feuille du widget est chargee apres celle du kit. On repasse devant a 2 classes. */
.elementor .abc-breadcrumb{ font-family:var(--font-head); }

/* ==== PASSERELLE 23 : blocs programme (.abc-detail) ==== */
/* Faits cles : rangee de pastilles (Elementor empile en colonne par defaut). */
.elementor .abc-facts{ --flex-direction:row; }
.elementor .elementor-widget-heading.chip .elementor-heading-title{ font:inherit; color:inherit; letter-spacing:inherit; text-transform:inherit; line-height:inherit; margin:0; }
/* Listes a coches (points forts, formules) : la coche est un decor CSS,
   le client ne saisit que le texte dans la liste Elementor. */
.elementor .abc-detail__feats .elementor-icon-list-items{ display:grid; grid-template-columns:1fr 1fr; gap:10px 18px; }
.elementor .abc-detail__feats .elementor-icon-list-item,
.elementor .abc-formula__list .elementor-icon-list-item{ display:flex; gap:10px; align-items:flex-start; font-size:.97rem; margin:0; padding:0; color:var(--abc-body); }
.elementor .abc-detail__feats .elementor-icon-list-item::before,
.elementor .abc-formula__list .elementor-icon-list-item::before{ content:"✓"; flex:none; width:22px; height:22px; border-radius:50%; background:#FCEDEC; color:var(--abc-red); display:flex; align-items:center; justify-content:center; }
.elementor .abc-detail__feats .elementor-icon-list-text,
.elementor .abc-formula__list .elementor-icon-list-text{ padding:0; color:inherit; }
@media (max-width:860px){
  .elementor .abc-detail__feats .elementor-icon-list-items{ grid-template-columns:1fr; }
}

/* Colonnes du bloc : la maquette empile en flux bloc (les marges doivent fusionner,
   ce que la disposition flex d'Elementor empeche). */
.elementor .e-con.abc-detail__media,
.elementor .e-con.abc-detail__text{ display:block; }
/* L'enveloppe du widget liste est une grille chez Elementor : la liste s'y retrouve
   dimensionnee sur son contenu au lieu de la largeur de la colonne. */
.elementor .elementor-widget.abc-detail__feats{ display:block; }
/* Les espacements viennent de la maquette : ses marges portent sur les enveloppes
   de widget, il suffit de ne pas y ajouter celles d'Elementor. */
.elementor .abc-detail__text .elementor-widget-heading h2.elementor-heading-title{ margin:0 0 6px; }
.elementor .abc-detail__text .elementor-widget-text-editor p{ margin:0 0 1rem; }

/* ==== PASSERELLE 24 : composants convertis en second passage ==== */
/* La coche verte des formules (la rouge reste celle des points forts). */
.elementor .abc-formula__list .elementor-icon-list-item::before{ background:#EAF7EE; color:#1E9E54; }
.elementor .elementor-widget.abc-formula__list{ display:block; }
.elementor .abc-formula__list .elementor-icon-list-items{ display:grid; gap:12px; }
/* Le bouton d'une carte tarif se colle en bas : la maquette vise .abc-btn, qui est
   ici l'element interne du widget, pas son enveloppe. */
.elementor .e-con.abc-formula > .elementor-widget-button{ margin-top:auto; }
/* wpautop enveloppe le contenu des widgets Texte dans un <p> : la maquette n'en a pas. */
.elementor .abc-formula__price p,
.elementor .abc-acts__item p,
.elementor .abc-featlist__item p,
.elementor .abc-perk p:first-child{ margin:0; }
/* Vignettes emoji : la maquette les empile en flux bloc. */
.elementor .elementor-widget.abc-acts__item,
.elementor .elementor-widget.abc-featlist__item{ display:block; }

/* ==== PASSERELLE 26 : visuel encadre isole ==== */
.elementor .e-con.abc-flyer{ display:block; }

/* ==== PASSERELLE 27 : mention discrete ==== */
/* .abc-note est un <p> dans la maquette : il cumule sa marge haute (24px) et la
   marge basse des paragraphes (1rem). L'enveloppe du widget est un <div>, qui
   n'herite pas de la seconde : on rejoue le total. */
.elementor .e-con .elementor-widget.elementor-widget.abc-note{ margin:24px 0 1rem; }

/* ==== PASSERELLE 28 : bouton d'une carte tarif ==== */
/* Dans la maquette le lien est un enfant direct de la colonne flex : il est etire
   sur toute la largeur. Ici c'est l'enveloppe du widget qui s'etire, pas le bouton. */
.elementor .e-con.abc-formula > .elementor-widget-button .elementor-button{ width:100%; }
/* La maquette n'utilise pas la meme taille pour les deux listes a coches. */
.elementor .abc-formula__list .elementor-icon-list-item{ font-size:.96rem; }

/* ==== PASSERELLE 29 : grande galerie du campus ==== */
/* La maquette style les balises <figure> et <figcaption>, qui deviennent ici un
   container et un widget Texte : on rejoue leurs regles sur les classes portees. */
.elementor .abc-campusbig .abc-fig{ position:relative; border-radius:var(--r-lg); overflow:hidden; box-shadow:var(--sh-md); border:1px solid var(--abc-line); margin:0; }
.elementor .abc-campusbig .abc-cap{ position:absolute; left:0; right:0; bottom:0; padding:40px 22px 18px; color:#fff; font-family:var(--font-head); font-weight:600; font-size:1.08rem; background:linear-gradient(to top, rgba(24,33,59,.85), rgba(24,33,59,0)); z-index:2; }
.elementor .abc-campusbig .abc-cap small{ display:block; font-weight:500; font-size:.86rem; opacity:.9; margin-top:2px; }
.elementor .abc-campusbig .abc-cap p{ margin:0; }
.elementor .abc-campusbig .abc-fig > .elementor-widget-image{ position:static; }

/* ==== PASSERELLE 30 : enveloppe des boutons ==== */
/* Dans la maquette le bouton est un <a> inline-flex : ses marges ne fusionnent donc
   pas avec celles du bloc precedent. L'enveloppe du widget doit se comporter pareil.
   Sans effet dans un parent flex ou grid, ou les enfants sont de toute facon blocs. */
.elementor .e-con .elementor-widget.abc-b{ display:inline-flex; }

/* ==== PASSERELLE 31 : corrections responsive (au-dela de la maquette) ==== */

/* 1. Debordement horizontal en mobile.
   Une colonne de grille en `1fr` vaut minmax(auto,1fr) : son minimum est le
   min-content du contenu, qui peut depasser la largeur de l'ecran. En dessous
   de 860px la maquette passe ces blocs sur une colonne, il faut donc autoriser
   la colonne a retrecir. Sans ca : 35px de scroll lateral sur l'accueil a 360px. */
@media (max-width:860px){
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-mission__inner,
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-press__inner,
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-hero__inner,
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-zone__inner,
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-detail,
  .elementor.elementor .e-con.e-con.e-con.e-con.abc-blog__featured{
    grid-template-columns:minmax(0,1fr);
  }
  /* la liste a coches est une grille dont la colonne implicite se dimensionne
     sur le contenu : elle imposait 375px de large dans un ecran de 360px */
  .elementor .abc-mission__list .elementor-icon-list-items{
    grid-template-columns:minmax(0,1fr); min-width:0;
  }
  .elementor .abc-mission__list .elementor-icon-list-item{ min-width:0; }
  /* le texte de chaque ligne est decoupe en plusieurs elements flex (a cause des
     <strong>), ce qui empeche tout retour a la ligne. En mobile on le rend a un
     seul bloc : il redevient secable. */
  .elementor .abc-mission__list .elementor-icon-list-text{ display:block; min-width:0; }
  .elementor .elementor-widget.abc-mission__list{ min-width:0; max-width:100%; }
  .elementor .abc-mission__media,
  .elementor .abc-mission__media img,
  .elementor .abc-detail__media,
  .elementor .abc-detail__media img{ max-width:100%; }
}

/* 2. Cibles tactiles du pied de page.
   Les liens font 25px de haut pour 10px d'ecart : trop petit et trop serre pour
   le doigt. On porte la zone cliquable a 44px sans deplacer le texte. */
@media (max-width:860px){
  .elementor .abc-footer li{ margin-bottom:0; }
  .elementor .abc-footer__grid a,
  .elementor .abc-footer__legal a,
  .elementor .abc-footer__bottom a{
    display:inline-flex; align-items:center; min-height:44px;
  }
  .elementor .abc-footer__legal{ gap:0 22px; }
  /* le lien « En savoir plus » des cartes programme */
  .elementor .abc-l .elementor-button,
  .elementor .abc-prog__link{ min-height:44px; }
}

/* 3. Meta de l'article (date, categorie).
   Le widget Elementor « Informations sur l'article » applique une marge negative
   de -8px a sa liste en ligne : elle depasse de l'ecran en mobile. */
.elementor .elementor-widget-post-info .elementor-inline-items{ margin-inline:0; }
.elementor .elementor-widget-post-info .elementor-inline-items > .elementor-icon-list-item:first-child{ margin-inline-start:0; }

/* 4. Appeler ou ecrire depuis un telephone.
   Les liens tel: et mailto: du bloc contact et le lien des cartes du blog font
   moins de 40px de haut : trop justes pour le doigt. */
@media (max-width:860px){
  .elementor .abc-info__item a[href^="tel"],
  .elementor .abc-info__item a[href^="mailto"],
  .elementor .abc-post__link{
    display:inline-flex; align-items:center; min-height:44px;
  }
}/* End custom CSS */