/* ==========================================================================
   ACACED Institut — feuille de style institutionnelle
   Registre : institution sérieuse et légitime. Marine profond, gris chauds,
   or restreint réservé aux accents. Surfaces papier, filets d'or capillaires.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Jetons de design
   -------------------------------------------------------------------------- */
:root{
  /* Marine — l'autorité */
  --marine-900:#050f1f;
  --marine-800:#071831;
  --marine-700:#0b2340;
  --marine-600:#122f52;
  --marine-500:#1b4270;
  --marine-400:#2c5b8f;

  /* Gris chauds — le papier et l'encre */
  --encre:#1c2029;
  --encre-douce:#3d4553;
  --gris:#5d6675;
  --gris-clair:#8b93a1;
  --papier:#f7f6f3;
  --papier-2:#efede8;
  --filet:#dfdcd5;
  --filet-fort:#c8c4bb;
  --blanc:#ffffff;

  /* Or — l'emphase, jamais le fond */
  --or:#9a7327;
  --or-500:#b98f3c;
  --or-400:#c9a24f;
  --or-voile:#f6efdf;

  --succes:#1c6340;
  --succes-voile:#eaf3ee;
  --erreur:#96261f;
  --erreur-voile:#fbeeed;

  --font-titre:'Spectral', 'Libre Baskerville', Georgia, 'Times New Roman', serif;
  --font-corps:'Source Sans 3', 'Inter', system-ui, -apple-system, sans-serif;

  --r-xs:2px;
  --r-sm:3px;
  --r-md:5px;

  /* Ombres multi-couches, discrètes — un document posé, pas une carte flottante */
  --ombre-1:0 1px 1px rgba(11,35,64,.04), 0 2px 6px rgba(11,35,64,.05);
  --ombre-2:0 1px 2px rgba(11,35,64,.05), 0 4px 14px rgba(11,35,64,.07), 0 12px 28px rgba(11,35,64,.05);
  --ombre-3:0 2px 4px rgba(11,35,64,.07), 0 10px 26px rgba(11,35,64,.10), 0 24px 56px rgba(11,35,64,.09);
  --ombre-focus:0 0 0 3px rgba(44,91,143,.28);

  --transition:220ms cubic-bezier(.2,.7,.3,1);
  --header-h:74px;
  --mesure:68ch;
}

/* --------------------------------------------------------------------------
   2. Base
   -------------------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;}

html{
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--header-h) + 1.5rem);
  -webkit-text-size-adjust:100%;
}

body{
  margin:0;
  font-family:var(--font-corps);
  font-size:clamp(1rem, .97rem + .14vw, 1.0625rem);
  line-height:1.68;
  color:var(--encre);
  background:var(--papier);
  font-feature-settings:"kern" 1, "liga" 1;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

img,svg{max-width:100%;}
img{display:block;height:auto;}

h1,h2,h3,h4,h5{
  font-family:var(--font-titre);
  color:var(--marine-700);
  font-weight:600;
  margin-top:0;
  text-wrap:balance;
}

h1{
  font-size:clamp(1.85rem, 1.45rem + 1.7vw, 2.8rem);
  line-height:1.12;
  letter-spacing:-.018em;
  margin:0 0 1.1rem;
  color:var(--marine-800);
}

h2{
  font-size:clamp(1.35rem, 1.2rem + .65vw, 1.72rem);
  line-height:1.22;
  letter-spacing:-.012em;
  margin:0 0 .9rem;
}

h3{
  font-size:clamp(1.08rem, 1.02rem + .3vw, 1.24rem);
  line-height:1.3;
  letter-spacing:-.006em;
  margin:0 0 .5rem;
  color:var(--marine-600);
}

h4{
  font-size:1rem;
  line-height:1.4;
  margin:0 0 .35rem;
  color:var(--marine-700);
}

p{margin:0 0 1.05rem;max-width:var(--mesure);}
ul,ol{margin:0 0 1.15rem;padding-left:1.25rem;max-width:var(--mesure);}
li{margin-bottom:.42rem;}
li::marker{color:var(--or);}
strong{font-weight:600;color:var(--marine-800);}

a{color:var(--marine-500);text-decoration-thickness:1px;text-underline-offset:.16em;}
a:hover{color:var(--marine-700);}

:focus-visible{
  outline:2px solid var(--marine-400);
  outline-offset:3px;
  border-radius:var(--r-xs);
}

::selection{background:var(--or-voile);color:var(--marine-800);}

.container{
  max-width:1240px;
  margin:0 auto;
  padding-inline:clamp(1rem, 3vw, 2rem);
}

.sr-only{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

/* --------------------------------------------------------------------------
   3. Bandeau officiel
   -------------------------------------------------------------------------- */
.bandeau-officiel{
  position:relative;
  background:
    linear-gradient(180deg, var(--marine-900) 0%, var(--marine-800) 100%);
  color:#b8c4d6;
  font-size:.755rem;
  letter-spacing:.045em;
  text-align:center;
  padding:.5rem 1rem;
  line-height:1.5;
  border-bottom:1px solid rgba(201,162,79,.28);
}
.bandeau-officiel strong{
  color:var(--or-400);
  font-weight:600;
  letter-spacing:.075em;
}

/* --------------------------------------------------------------------------
   4. En-tête
   -------------------------------------------------------------------------- */
.site-header{
  position:sticky;
  top:0;
  z-index:120;
  background:rgba(255,255,255,.94);
  backdrop-filter:saturate(180%) blur(12px);
  -webkit-backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--filet);
  box-shadow:0 1px 0 rgba(255,255,255,.7) inset, 0 2px 12px rgba(11,35,64,.05);
}
.site-header::after{
  content:"";
  display:block;
  height:2px;
  background:linear-gradient(90deg,
    transparent 0%,
    var(--or-400) 18%,
    var(--or) 50%,
    var(--or-400) 82%,
    transparent 100%);
  opacity:.55;
}
.site-header .container{
  display:flex;
  align-items:center;
  gap:1rem;
  min-height:var(--header-h);
  padding-block:.7rem;
}

.brand{
  display:flex;
  align-items:center;
  gap:.75rem;
  text-decoration:none;
  margin-right:auto;
  transition:opacity var(--transition);
}
.brand:hover{opacity:.82;}
.brand-emblem{
  width:46px;height:46px;
  flex-shrink:0;
  filter:drop-shadow(0 2px 5px rgba(11,35,64,.22));
}
.brand-text{display:flex;flex-direction:column;line-height:1.15;}
.brand-name{
  font-family:var(--font-titre);
  font-weight:600;
  color:var(--marine-800);
  font-size:1.2rem;
  letter-spacing:-.012em;
}
.brand-baseline{
  font-size:.635rem;
  color:var(--gris);
  text-transform:uppercase;
  letter-spacing:.135em;
  font-weight:600;
  margin-top:.16rem;
}

.menu-toggle{
  display:none;
  align-items:center;
  gap:.45rem;
  background:var(--blanc);
  color:var(--marine-700);
  border:1px solid var(--filet-fort);
  border-radius:var(--r-sm);
  padding:.5rem .75rem;
  font-family:var(--font-corps);
  font-size:.82rem;
  font-weight:600;
  letter-spacing:.03em;
  cursor:pointer;
  transition:background var(--transition), border-color var(--transition);
}
.menu-toggle:hover{background:var(--papier-2);border-color:var(--marine-400);}
.menu-toggle .burger{
  display:inline-flex;flex-direction:column;gap:3px;width:15px;
}
.menu-toggle .burger span{
  display:block;height:1.5px;background:currentColor;border-radius:2px;
}

.header-cta{
  display:inline-flex;
  align-items:center;
  gap:.45rem;
  background:linear-gradient(180deg, var(--marine-600) 0%, var(--marine-700) 100%);
  color:var(--blanc);
  padding:.68rem 1.25rem;
  border-radius:var(--r-sm);
  text-decoration:none;
  font-weight:600;
  font-size:.875rem;
  letter-spacing:.015em;
  white-space:nowrap;
  border:1px solid var(--marine-700);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14), var(--ombre-1);
  transition:transform var(--transition), box-shadow var(--transition), background var(--transition);
}
.header-cta:hover{
  color:var(--blanc);
  background:linear-gradient(180deg, var(--marine-500) 0%, var(--marine-600) 100%);
  transform:translateY(-1px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18), var(--ombre-2);
}
.header-cta:active{transform:translateY(0);}

/* --------------------------------------------------------------------------
   5. Mise en page — colonne latérale
   -------------------------------------------------------------------------- */
.layout{
  display:grid;
  grid-template-columns:286px minmax(0,1fr);
  max-width:1240px;
  margin:0 auto;
  align-items:start;
  background:var(--blanc);
  box-shadow:0 0 0 1px var(--filet), var(--ombre-2);
}

.sidebar{
  position:sticky;
  top:var(--header-h);
  align-self:start;
  max-height:calc(100vh - var(--header-h));
  overflow-y:auto;
  overscroll-behavior:contain;
  padding:1.9rem 1.35rem 2.2rem;
  background:
    linear-gradient(180deg, var(--papier) 0%, var(--papier-2) 100%);
  border-right:1px solid var(--filet);
  scrollbar-width:thin;
}
.sidebar::-webkit-scrollbar{width:7px;}
.sidebar::-webkit-scrollbar-thumb{background:var(--filet-fort);border-radius:4px;}

.sidebar-section{margin-bottom:1.7rem;}
.sidebar-section:last-child{margin-bottom:0;}

.sidebar-title{
  font-size:.665rem;
  text-transform:uppercase;
  letter-spacing:.16em;
  color:var(--gris);
  font-weight:700;
  margin-bottom:.85rem;
  padding-bottom:.55rem;
  border-bottom:1px solid var(--filet);
  position:relative;
}
.sidebar-title::after{
  content:"";
  position:absolute;
  left:0;bottom:-1px;
  width:32px;height:1px;
  background:var(--or);
}

.sidebar nav ul{list-style:none;padding:0;margin:0;max-width:none;}
.sidebar nav li{margin-bottom:2px;}
.sidebar nav a{
  display:block;
  position:relative;
  padding:.58rem .7rem .58rem .85rem;
  color:var(--encre-douce);
  text-decoration:none;
  font-size:.885rem;
  line-height:1.4;
  border-radius:var(--r-sm);
  border-left:2px solid transparent;
  transition:background var(--transition), color var(--transition), border-color var(--transition);
}
.sidebar nav a:hover{
  background:var(--blanc);
  color:var(--marine-700);
  border-left-color:var(--filet-fort);
}
.sidebar nav a.active{
  background:var(--blanc);
  color:var(--marine-800);
  font-weight:600;
  border-left-color:var(--or);
  box-shadow:var(--ombre-1);
}
.sidebar nav a.active::after{
  content:"";
  position:absolute;
  right:.7rem;top:50%;
  width:5px;height:5px;
  border-radius:50%;
  background:var(--or);
  transform:translateY(-50%);
}

.sidebar-note{
  font-size:.805rem;
  line-height:1.6;
  background:var(--blanc);
  border:1px solid var(--filet);
  border-top:2px solid var(--or);
  border-radius:var(--r-sm);
  padding:.95rem 1rem;
  color:var(--encre-douce);
  box-shadow:var(--ombre-1);
}
.sidebar-note strong{display:block;margin-bottom:.25rem;color:var(--marine-700);}

.sidebar-cta{
  display:block;
  text-align:center;
  margin-top:.85rem;
  padding:.7rem .9rem;
  background:linear-gradient(180deg, var(--marine-600), var(--marine-700));
  color:var(--blanc);
  text-decoration:none;
  font-size:.83rem;
  font-weight:600;
  letter-spacing:.02em;
  border-radius:var(--r-sm);
  border:1px solid var(--marine-700);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.14), var(--ombre-1);
  transition:transform var(--transition), box-shadow var(--transition);
}
.sidebar-cta:hover{
  color:var(--blanc);
  transform:translateY(-1px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18), var(--ombre-2);
}

.sidebar-meta{
  margin-top:1.1rem;
  padding-top:1rem;
  border-top:1px solid var(--filet);
  font-size:.715rem;
  line-height:1.6;
  color:var(--gris);
  letter-spacing:.01em;
}

/* --------------------------------------------------------------------------
   6. Contenu principal — un document
   -------------------------------------------------------------------------- */
.main-content{
  min-width:0;
  padding:clamp(1.6rem, 3.4vw, 3rem) clamp(1.15rem, 4vw, 3.4rem) clamp(3rem, 6vw, 4.5rem);
  background:var(--blanc);
}

.breadcrumb{
  font-size:.78rem;
  color:var(--gris);
  margin:0 0 1.4rem;
  letter-spacing:.02em;
  max-width:none;
}
.breadcrumb a{color:var(--gris);text-decoration:none;}
.breadcrumb a:hover{color:var(--marine-600);text-decoration:underline;}
.breadcrumb .sep{margin:0 .45rem;color:var(--filet-fort);}

/* En-tête de page — la « une » du document */
.page-header{
  position:relative;
  margin-bottom:2rem;
  padding-bottom:1.7rem;
}
.page-header::after{
  content:"";
  position:absolute;
  left:0;bottom:0;
  width:100%;height:1px;
  background:linear-gradient(90deg, var(--or) 0%, var(--or-400) 8%, var(--filet) 40%, transparent 100%);
}
.page-header h1{margin-bottom:0;}
.page-header .eyebrow{margin-bottom:.9rem;}
.page-lede{
  font-size:clamp(1.02rem, .98rem + .22vw, 1.12rem);
  line-height:1.62;
  color:var(--encre-douce);
  margin:.95rem 0 0;
  max-width:64ch;
}

.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  font-size:.685rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.155em;
  color:var(--or);
}
.eyebrow::before{
  content:"";
  width:22px;height:1px;
  background:var(--or);
  flex-shrink:0;
}

.badge-officiel{
  display:inline-flex;
  align-items:center;
  gap:.5rem;
  background:var(--marine-800);
  color:#e4ecf6;
  font-size:.685rem;
  font-weight:600;
  padding:.36rem .8rem .36rem .7rem;
  border-radius:var(--r-sm);
  letter-spacing:.09em;
  text-transform:uppercase;
  margin-bottom:1rem;
  border:1px solid var(--marine-600);
  box-shadow:var(--ombre-1);
}
.badge-officiel::before{
  content:"";
  width:6px;height:6px;
  border-radius:50%;
  background:var(--or-400);
  box-shadow:0 0 0 2px rgba(201,162,79,.25);
}

/* Chapeau / préambule */
.page-intro{
  position:relative;
  background:linear-gradient(180deg, var(--papier) 0%, #fbfaf8 100%);
  border:1px solid var(--filet);
  border-left:3px solid var(--marine-700);
  padding:1.25rem 1.5rem;
  border-radius:0 var(--r-sm) var(--r-sm) 0;
  margin:0 0 2.4rem;
  font-size:1rem;
  line-height:1.66;
  color:var(--encre-douce);
  max-width:none;
  box-shadow:var(--ombre-1);
}
.page-intro p{margin-bottom:.8rem;}
.page-intro p:last-child{margin-bottom:0;}
.page-intro strong{color:var(--marine-800);}

/* --------------------------------------------------------------------------
   7. Bandeau de réassurance
   -------------------------------------------------------------------------- */
.reassurance{
  display:grid;
  grid-template-columns:repeat(4, minmax(0,1fr));
  gap:1px;
  background:var(--filet);
  border:1px solid var(--filet);
  border-radius:var(--r-sm);
  margin:0 0 2.6rem;
  overflow:hidden;
  box-shadow:var(--ombre-1);
}
.reassurance-item{
  display:flex;
  align-items:flex-start;
  gap:.65rem;
  background:linear-gradient(180deg, #fbfaf8 0%, var(--papier) 100%);
  padding:.95rem 1rem;
}
.reassurance-item svg{
  width:20px;height:20px;
  flex-shrink:0;
  margin-top:.1rem;
  color:var(--or);
}
.reassurance-item .r-titre{
  display:block;
  font-size:.815rem;
  font-weight:700;
  color:var(--marine-800);
  line-height:1.32;
  letter-spacing:.005em;
}
.reassurance-item .r-detail{
  display:block;
  font-size:.735rem;
  color:var(--gris);
  line-height:1.45;
  margin-top:.15rem;
}

/* --------------------------------------------------------------------------
   8. Sections
   -------------------------------------------------------------------------- */
.section{
  margin:0 0 clamp(2.4rem, 4.5vw, 3.6rem);
  scroll-margin-top:calc(var(--header-h) + 1.5rem);
}
.section > h2{
  position:relative;
  padding-bottom:.6rem;
  margin-bottom:1.2rem;
}
.section > h2::after{
  content:"";
  position:absolute;
  left:0;bottom:0;
  width:44px;height:2px;
  background:var(--or);
}
.section-sous-titre{
  color:var(--gris);
  font-size:.94rem;
  margin:-.7rem 0 1.4rem;
  max-width:62ch;
}

/* Section numérotée (pages formation) */
.section-numerotee > h2{
  display:flex;
  align-items:baseline;
  gap:.75rem;
  padding-bottom:.65rem;
}
.section-numero{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  width:1.95rem;height:1.95rem;
  border-radius:50%;
  background:var(--blanc);
  border:1px solid var(--or-400);
  color:var(--or);
  font-family:var(--font-corps);
  font-size:.78rem;
  font-weight:700;
  line-height:1;
  align-self:center;
  box-shadow:0 0 0 3px var(--or-voile);
}

/* --------------------------------------------------------------------------
   9. Cartes de parcours / tarifs
   -------------------------------------------------------------------------- */
/* --------------------------------------------------------------------------
   Photographies — registre documentaire : cadre fin, filet d'or, légende
   -------------------------------------------------------------------------- */
.figure-doc{
  margin:0 0 1.9rem;
  border:1px solid var(--filet);
  border-top:3px solid var(--or-400);
  border-radius:var(--r-sm);
  overflow:hidden;
  background:var(--blanc);
  box-shadow:var(--ombre-1);
}
.figure-doc img{
  width:100%;
  aspect-ratio:16/7;
  object-fit:cover;
}
.figure-doc figcaption{
  font-size:.775rem;
  color:var(--gris);
  padding:.65rem .95rem;
  border-top:1px solid var(--filet);
  background:var(--papier-2);
  line-height:1.5;
}
.figure-doc figcaption strong{
  color:var(--marine-700);
  font-weight:600;
}

/* Portrait — colonne étroite à côté du texte */
.figure-portrait{
  float:right;
  width:min(300px, 38%);
  margin:.2rem 0 1.3rem 1.8rem;
  border:1px solid var(--filet);
  border-left:3px solid var(--or-400);
  border-radius:var(--r-sm);
  overflow:hidden;
  background:var(--blanc);
  box-shadow:var(--ombre-1);
}
.figure-portrait img{
  width:100%;
  aspect-ratio:3/4;
  object-fit:cover;
}
.figure-portrait figcaption{
  font-size:.75rem;
  color:var(--gris);
  padding:.55rem .8rem;
  border-top:1px solid var(--filet);
  background:var(--papier-2);
  line-height:1.45;
}
@media (max-width:640px){
  .figure-portrait{float:none;width:100%;margin:1.4rem 0;}
  .figure-portrait img{aspect-ratio:4/3;}
  .figure-doc img{aspect-ratio:3/2;}
}

.grid-formations{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(255px, 1fr));
  gap:1.35rem;
  margin:1.8rem 0 1.6rem;
  align-items:stretch;
}

.carte-formation{
  position:relative;
  display:flex;
  flex-direction:column;
  background:var(--blanc);
  border:1px solid var(--filet);
  border-radius:var(--r-md);
  padding:1.6rem 1.45rem 1.5rem;
  box-shadow:var(--ombre-1);
  transition:transform var(--transition), box-shadow var(--transition), border-color var(--transition);
}
.carte-formation::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:3px;
  border-radius:var(--r-md) var(--r-md) 0 0;
  background:linear-gradient(90deg, var(--marine-700), var(--marine-500));
}
.carte-formation:hover{
  transform:translateY(-3px);
  border-color:var(--filet-fort);
  box-shadow:var(--ombre-3);
}

.carte-formation.mise-en-avant{
  border-color:var(--or-400);
  box-shadow:0 0 0 1px rgba(154,115,39,.2), var(--ombre-2);
  background:linear-gradient(180deg, #fffdf8 0%, var(--blanc) 34%);
}
.carte-formation.mise-en-avant::before{
  background:linear-gradient(90deg, var(--or), var(--or-400), var(--or));
  height:4px;
}
.carte-formation.mise-en-avant:hover{box-shadow:0 0 0 1px rgba(154,115,39,.28), var(--ombre-3);}

.carte-badge{
  position:absolute;
  top:-.72rem;
  right:1.2rem;
  background:linear-gradient(180deg, var(--or-500), var(--or));
  color:var(--blanc);
  font-size:.635rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.11em;
  padding:.3rem .68rem;
  border-radius:var(--r-sm);
  box-shadow:var(--ombre-1);
  white-space:nowrap;
}

.carte-formation .icone{
  width:48px;height:48px;
  margin-bottom:.9rem;
}

/* Photographie en tête de carte — pleine largeur, sous le filet d'accent.
   Les marges négatives reprennent le padding de .carte-formation. */
.carte-photo{
  margin:-1.6rem -1.45rem 1.15rem;
  border-radius:var(--r-md) var(--r-md) 0 0;
  overflow:hidden;
  border-bottom:1px solid var(--filet);
  background:var(--papier-2);
}
.carte-photo img{
  width:100%;
  aspect-ratio:3/2;
  object-fit:cover;
  transition:transform 520ms var(--transition);
}
.carte-formation:hover .carte-photo img{transform:scale(1.035);}
.carte-formation .carte-photo + .icone{
  width:38px;height:38px;
  margin-bottom:.65rem;
}
.carte-formation h3{margin-bottom:.4rem;font-size:1.14rem;}
.carte-formation > p{
  font-size:.885rem;
  color:var(--encre-douce);
  line-height:1.55;
  margin-bottom:1.05rem;
  max-width:none;
}

.carte-prix-bloc{
  display:flex;
  align-items:baseline;
  gap:.5rem;
  padding-top:.9rem;
  border-top:1px solid var(--filet);
}
.carte-tarif{
  font-family:var(--font-titre);
  font-size:2.15rem;
  line-height:1;
  font-weight:600;
  color:var(--marine-800);
  letter-spacing:-.025em;
}
.carte-tarif .devise{font-size:1.15rem;margin-left:.1rem;}
.carte-prix-suffixe{
  font-size:.735rem;
  color:var(--gris);
  letter-spacing:.05em;
  text-transform:uppercase;
  font-weight:600;
}
.carte-duree{
  color:var(--gris);
  font-size:.8rem;
  margin:.35rem 0 1.05rem;
  letter-spacing:.01em;
}
.carte-duree strong{color:var(--marine-700);font-weight:600;}

.liste-benefices{
  list-style:none;
  padding:0;
  margin:0 0 1.35rem;
  font-size:.845rem;
  line-height:1.5;
  max-width:none;
}
.liste-benefices li{
  position:relative;
  padding-left:1.5rem;
  margin-bottom:.5rem;
  color:var(--encre-douce);
}
.liste-benefices li::before{
  content:"";
  position:absolute;
  left:0;top:.42em;
  width:11px;height:6px;
  border-left:1.8px solid var(--or);
  border-bottom:1.8px solid var(--or);
  transform:rotate(-45deg);
}
.liste-benefices li::marker{content:none;}

.carte-formation .btn{margin-top:auto;width:100%;}

/* --------------------------------------------------------------------------
   10. Boutons
   -------------------------------------------------------------------------- */
.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:.5rem;
  padding:.8rem 1.6rem;
  border-radius:var(--r-sm);
  text-decoration:none;
  font-family:var(--font-corps);
  font-weight:600;
  font-size:.925rem;
  letter-spacing:.015em;
  line-height:1.3;
  cursor:pointer;
  border:1px solid transparent;
  text-align:center;
  transition:transform var(--transition), box-shadow var(--transition), background var(--transition), color var(--transition), border-color var(--transition);
}
.btn:active{transform:translateY(0);}

.btn-primaire{
  background:linear-gradient(180deg, var(--marine-600) 0%, var(--marine-700) 100%);
  color:var(--blanc);
  border-color:var(--marine-800);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.15), var(--ombre-1);
}
.btn-primaire:hover{
  color:var(--blanc);
  background:linear-gradient(180deg, var(--marine-500) 0%, var(--marine-600) 100%);
  transform:translateY(-2px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.2), var(--ombre-2);
}

.btn-or{
  background:linear-gradient(180deg, var(--or-500) 0%, var(--or) 100%);
  color:#fffdf7;
  border-color:#87641f;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.24), var(--ombre-1);
}
.btn-or:hover{
  color:#fffdf7;
  background:linear-gradient(180deg, var(--or-400) 0%, var(--or-500) 100%);
  transform:translateY(-2px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3), var(--ombre-2);
}

.btn-secondaire{
  background:var(--blanc);
  border-color:var(--filet-fort);
  color:var(--marine-700);
  box-shadow:var(--ombre-1);
}
.btn-secondaire:hover{
  background:var(--papier);
  border-color:var(--marine-600);
  color:var(--marine-800);
  transform:translateY(-2px);
  box-shadow:var(--ombre-2);
}

.btn-large{padding:1rem 2.1rem;font-size:1rem;}
.btn-bloc{width:100%;}

.btn-groupe{
  display:flex;
  flex-wrap:wrap;
  gap:.85rem;
  align-items:center;
  margin:1.5rem 0 0;
}

.cta-note{
  font-size:.79rem;
  color:var(--gris);
  margin:.85rem 0 0;
  letter-spacing:.012em;
}
.cta-note strong{color:var(--marine-700);font-weight:600;}

/* --------------------------------------------------------------------------
   11. Bloc d'appel — appel à l'action institutionnel
   -------------------------------------------------------------------------- */
.bloc-appel{
  position:relative;
  overflow:hidden;
  background:
    radial-gradient(120% 140% at 100% 0%, rgba(44,91,143,.55) 0%, transparent 58%),
    linear-gradient(158deg, var(--marine-700) 0%, var(--marine-800) 52%, var(--marine-900) 100%);
  color:#dfe7f2;
  border-radius:var(--r-md);
  padding:clamp(1.8rem, 4vw, 2.9rem) clamp(1.4rem, 4vw, 3rem);
  margin:clamp(2.4rem, 5vw, 3.4rem) 0;
  box-shadow:var(--ombre-2);
  border:1px solid var(--marine-600);
}
.bloc-appel::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:2px;
  background:linear-gradient(90deg, transparent, var(--or-400) 30%, var(--or) 50%, var(--or-400) 70%, transparent);
}
.bloc-appel::after{
  content:"";
  position:absolute;
  right:-70px;bottom:-90px;
  width:290px;height:290px;
  border:1px solid rgba(201,162,79,.16);
  border-radius:50%;
  pointer-events:none;
}
.bloc-appel .eyebrow{color:var(--or-400);}
.bloc-appel .eyebrow::before{background:var(--or-400);}
.bloc-appel h2{
  color:var(--blanc);
  margin:.75rem 0 .7rem;
  max-width:24ch;
}
.bloc-appel h2::after{display:none;}
.bloc-appel p{
  color:#b9c6d9;
  max-width:56ch;
  margin-bottom:0;
  font-size:.965rem;
}
.bloc-appel .btn-groupe{position:relative;z-index:1;}
.bloc-appel .btn-secondaire{
  background:transparent;
  border-color:rgba(201,162,79,.5);
  color:var(--or-400);
  box-shadow:none;
}
.bloc-appel .btn-secondaire:hover{
  background:rgba(201,162,79,.1);
  border-color:var(--or-400);
  color:var(--or-400);
}
.bloc-appel .cta-note{color:#8fa0b8;}
.bloc-appel .cta-note strong{color:var(--or-400);}

/* --------------------------------------------------------------------------
   12. Procédure d'inscription — étapes numérotées
   -------------------------------------------------------------------------- */
.procedure{
  counter-reset:etape;
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(215px, 1fr));
  gap:1.2rem;
  margin:1.7rem 0 0;
  padding:0;
  list-style:none;
  max-width:none;
}
.procedure li{
  counter-increment:etape;
  position:relative;
  background:linear-gradient(180deg, #fbfaf8 0%, var(--papier) 100%);
  border:1px solid var(--filet);
  border-radius:var(--r-sm);
  padding:1.8rem 1.2rem 1.25rem;
  margin:0;
  box-shadow:var(--ombre-1);
}
.procedure li::before{
  content:"0" counter(etape);
  position:absolute;
  top:-.72rem;left:1.15rem;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:2.1rem;height:1.55rem;
  padding:0 .45rem;
  background:var(--marine-800);
  color:var(--or-400);
  font-family:var(--font-corps);
  font-size:.715rem;
  font-weight:700;
  letter-spacing:.1em;
  border-radius:var(--r-xs);
  box-shadow:var(--ombre-1);
}
.procedure li::marker{content:none;}
.procedure .etape-titre{
  display:block;
  font-family:var(--font-titre);
  font-size:1.02rem;
  font-weight:600;
  color:var(--marine-700);
  line-height:1.3;
  margin-bottom:.4rem;
}
.procedure .etape-texte{
  display:block;
  font-size:.85rem;
  line-height:1.55;
  color:var(--encre-douce);
}

/* --------------------------------------------------------------------------
   13. Tableau tarifaire
   -------------------------------------------------------------------------- */
.tableau-wrap{
  overflow-x:auto;
  margin:1.6rem 0 1.2rem;
  border:1px solid var(--filet);
  border-radius:var(--r-sm);
  box-shadow:var(--ombre-1);
  background:var(--blanc);
}
.tableau-cadre{
  overflow-x:auto;
  -webkit-overflow-scrolling:touch;
  margin-bottom:1.15rem;
  max-width:var(--mesure);
}
.tableau-cadre .tableau-tarifs{margin-bottom:0;}
.tableau-tarifs{
  width:100%;
  min-width:460px;
  border-collapse:collapse;
  font-size:.9rem;
}
.tableau-tarifs caption{
  caption-side:top;
  text-align:left;
  font-size:.7rem;
  text-transform:uppercase;
  letter-spacing:.14em;
  color:var(--gris);
  font-weight:700;
  padding:.85rem 1.1rem .55rem;
  border-bottom:1px solid var(--filet);
  background:var(--papier);
}
.tableau-tarifs th,
.tableau-tarifs td{
  padding:.85rem 1.1rem;
  text-align:left;
  border-bottom:1px solid var(--filet);
}
.tableau-tarifs thead th{
  background:var(--marine-800);
  color:#dae3f0;
  font-family:var(--font-corps);
  font-size:.7rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.11em;
  border-bottom:2px solid var(--or);
}
.tableau-tarifs tbody tr{transition:background var(--transition);}
.tableau-tarifs tbody tr:hover{background:var(--papier);}
.tableau-tarifs tbody tr:last-child td{border-bottom:none;}
.tableau-tarifs td.prix{
  font-family:var(--font-titre);
  font-size:1.15rem;
  font-weight:600;
  color:var(--marine-800);
  white-space:nowrap;
}
.tableau-tarifs td .badge-ligne{
  display:inline-block;
  margin-left:.5rem;
  font-family:var(--font-corps);
  font-size:.62rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.1em;
  color:var(--or);
  border:1px solid var(--or-400);
  background:var(--or-voile);
  border-radius:var(--r-xs);
  padding:.12rem .4rem;
  vertical-align:middle;
}
.tableau-note{
  font-size:.83rem;
  color:var(--gris);
  margin:0 0 0;
  max-width:70ch;
}

/* --------------------------------------------------------------------------
   14. Modules de programme
   -------------------------------------------------------------------------- */
.programme-liste{margin:1.4rem 0 0;}
.programme-module{
  position:relative;
  display:grid;
  grid-template-columns:minmax(0,1fr) auto;
  gap:.4rem 1.2rem;
  align-items:start;
  background:var(--blanc);
  border:1px solid var(--filet);
  border-left:2px solid var(--filet-fort);
  border-radius:var(--r-sm);
  padding:1.05rem 1.25rem;
  margin-bottom:.7rem;
  box-shadow:var(--ombre-1);
  transition:border-left-color var(--transition), box-shadow var(--transition), transform var(--transition);
}
.programme-module:hover{
  border-left-color:var(--or);
  box-shadow:var(--ombre-2);
  transform:translateX(2px);
}
.programme-module h4{
  grid-column:1;
  margin:0 0 .28rem;
  font-family:var(--font-titre);
  font-size:1rem;
  line-height:1.35;
  color:var(--marine-700);
}
.programme-module p{
  grid-column:1;
  margin:0;
  font-size:.865rem;
  line-height:1.55;
  color:var(--encre-douce);
  max-width:66ch;
}
.programme-module .duree-module{
  grid-column:2;
  grid-row:1 / span 2;
  align-self:start;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:3rem;
  padding:.24rem .55rem;
  background:var(--or-voile);
  border:1px solid rgba(154,115,39,.3);
  border-radius:var(--r-xs);
  color:var(--or);
  font-size:.755rem;
  font-weight:700;
  letter-spacing:.05em;
  white-space:nowrap;
}
.programme-total{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:1rem;
  flex-wrap:wrap;
  margin-top:1rem;
  padding:.85rem 1.25rem;
  background:var(--marine-800);
  border-radius:var(--r-sm);
  color:#c8d4e4;
  font-size:.83rem;
  letter-spacing:.03em;
}
.programme-total strong{color:var(--or-400);font-weight:700;letter-spacing:.05em;}

/* --------------------------------------------------------------------------
   15. Encart légal / référence
   -------------------------------------------------------------------------- */
.encart-legal{
  position:relative;
  background:linear-gradient(180deg, #fdfaf2 0%, var(--or-voile) 100%);
  border:1px solid rgba(154,115,39,.28);
  border-radius:var(--r-sm);
  padding:1.25rem 1.45rem 1.25rem 1.45rem;
  margin:1.9rem 0;
  font-size:.895rem;
  line-height:1.62;
  color:#4a4436;
  box-shadow:var(--ombre-1);
}
.encart-legal::before{
  content:"";
  position:absolute;
  left:0;top:0;bottom:0;
  width:3px;
  background:linear-gradient(180deg, var(--or), var(--or-400));
  border-radius:var(--r-sm) 0 0 var(--r-sm);
}
.encart-legal p{max-width:none;margin-bottom:.6rem;}
.encart-legal p:last-child{margin-bottom:0;}
.encart-legal strong{color:var(--marine-800);}
.encart-legal .ref-titre{
  display:block;
  font-size:.665rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.16em;
  color:var(--or);
  margin-bottom:.55rem;
}

/* Fiche récapitulative (pages formation) */
.fiche-synthese{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(150px, 1fr));
  gap:1px;
  background:var(--filet);
  border:1px solid var(--filet);
  border-radius:var(--r-sm);
  overflow:hidden;
  margin:0 0 2.3rem;
  box-shadow:var(--ombre-1);
}
.fiche-item{
  background:linear-gradient(180deg, #fbfaf8, var(--papier));
  padding:.95rem 1.1rem;
}
.fiche-item dt{
  font-size:.655rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.14em;
  color:var(--gris);
  margin-bottom:.3rem;
}
.fiche-item dd{
  margin:0;
  font-family:var(--font-titre);
  font-size:1.06rem;
  font-weight:600;
  color:var(--marine-800);
  line-height:1.25;
}
.fiche-item dd.accent{color:var(--or);}

/* --------------------------------------------------------------------------
   16. FAQ
   -------------------------------------------------------------------------- */
.faq-liste{
  border:1px solid var(--filet);
  border-radius:var(--r-sm);
  overflow:hidden;
  background:var(--blanc);
  box-shadow:var(--ombre-1);
  margin-bottom:1.6rem;
}
.faq-item{border-bottom:1px solid var(--filet);}
.faq-item:last-child{border-bottom:none;}
.faq-item:has(.faq-question[aria-expanded="true"]){background:var(--papier);}

.faq-question{
  width:100%;
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:1.2rem;
  text-align:left;
  background:none;
  border:none;
  padding:1.05rem 1.25rem;
  font-family:var(--font-titre);
  font-size:1rem;
  line-height:1.42;
  color:var(--marine-700);
  font-weight:600;
  cursor:pointer;
  transition:background var(--transition), color var(--transition);
}
.faq-question:hover{background:var(--papier);color:var(--marine-800);}
.faq-question[aria-expanded="true"]{color:var(--marine-800);}
.faq-question .icone-plus{
  position:relative;
  flex-shrink:0;
  width:22px;height:22px;
  border:1px solid var(--or-400);
  border-radius:50%;
  background:var(--blanc);
  transition:transform var(--transition), background var(--transition), border-color var(--transition);
}
.faq-question .icone-plus::before,
.faq-question .icone-plus::after{
  content:"";
  position:absolute;
  top:50%;left:50%;
  background:var(--or);
  transform:translate(-50%,-50%);
  transition:opacity var(--transition);
}
.faq-question .icone-plus::before{width:9px;height:1.5px;}
.faq-question .icone-plus::after{width:1.5px;height:9px;}
.faq-question[aria-expanded="true"] .icone-plus{
  transform:rotate(180deg);
  background:var(--or);
  border-color:var(--or);
}
.faq-question[aria-expanded="true"] .icone-plus::before{background:var(--blanc);}
.faq-question[aria-expanded="true"] .icone-plus::after{opacity:0;}

.faq-reponse{
  max-height:0;
  overflow:hidden;
  transition:max-height 280ms cubic-bezier(.3,.7,.3,1);
}
.faq-reponse-inner{
  padding:0 3.2rem 1.2rem 1.25rem;
  color:var(--encre-douce);
  font-size:.92rem;
  line-height:1.66;
  border-left:2px solid var(--or-400);
  margin-left:1.25rem;
  padding-left:1.1rem;
  max-width:72ch;
}

/* Levée d'objections */
.grid-objections{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(230px, 1fr));
  gap:1.2rem;
  margin-top:1.6rem;
}
.objection{
  background:var(--blanc);
  border:1px solid var(--filet);
  border-radius:var(--r-sm);
  padding:1.3rem 1.3rem 1.35rem;
  box-shadow:var(--ombre-1);
  transition:box-shadow var(--transition), transform var(--transition);
}
.objection:hover{box-shadow:var(--ombre-2);transform:translateY(-2px);}
.objection .obj-question{
  display:block;
  font-family:var(--font-titre);
  font-size:1rem;
  font-weight:600;
  color:var(--marine-700);
  line-height:1.35;
  margin-bottom:.6rem;
  padding-bottom:.6rem;
  border-bottom:1px solid var(--filet);
  position:relative;
}
.objection .obj-question::after{
  content:"";
  position:absolute;
  left:0;bottom:-1px;
  width:26px;height:1px;
  background:var(--or);
}
.objection p{
  font-size:.865rem;
  line-height:1.6;
  color:var(--encre-douce);
  margin:0;
  max-width:none;
}

/* --------------------------------------------------------------------------
   17. Formulaire
   -------------------------------------------------------------------------- */
.form-zone{
  display:grid;
  grid-template-columns:minmax(0, 1.35fr) minmax(0, .85fr);
  gap:1.8rem;
  align-items:start;
  margin-top:.5rem;
}

#form-cible{
  position:absolute;
  width:0;height:0;
  border:0;
  visibility:hidden;
}
.pot-de-miel{
  position:absolute !important;
  width:1px;height:1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
  clip-path:inset(50%);
  white-space:nowrap;
}
.formulaire{
  position:relative;
  background:var(--blanc);
  border:1px solid var(--filet);
  border-top:3px solid var(--marine-700);
  border-radius:var(--r-md);
  padding:clamp(1.3rem, 3vw, 2rem);
  box-shadow:var(--ombre-2);
}
.formulaire-entete{
  margin-bottom:1.5rem;
  padding-bottom:1.1rem;
  border-bottom:1px solid var(--filet);
  position:relative;
}
.formulaire-entete::after{
  content:"";
  position:absolute;
  left:0;bottom:-1px;
  width:40px;height:1px;
  background:var(--or);
}
.formulaire-entete h2{margin-bottom:.35rem;font-size:1.28rem;}
.formulaire-entete h2::after{display:none;}
.formulaire-entete p{
  margin:0;
  font-size:.855rem;
  color:var(--gris);
  max-width:none;
}

.champs-duo{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(190px, 1fr));
  gap:0 1.1rem;
}

.champ{margin-bottom:1.15rem;}
.champ label{
  display:block;
  font-size:.755rem;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.1em;
  color:var(--marine-700);
  margin-bottom:.42rem;
}
.champ label .optionnel{
  text-transform:none;
  letter-spacing:.01em;
  font-weight:400;
  color:var(--gris-clair);
  font-size:.72rem;
  margin-left:.3rem;
}
.champ input,
.champ select,
.champ textarea{
  width:100%;
  padding:.72rem .85rem;
  border:1px solid var(--filet-fort);
  border-radius:var(--r-sm);
  font-family:var(--font-corps);
  font-size:.94rem;
  line-height:1.5;
  color:var(--encre);
  background:var(--papier);
  transition:border-color var(--transition), box-shadow var(--transition), background var(--transition);
}
.champ textarea{resize:vertical;min-height:110px;}
.champ select{
  appearance:none;
  -webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1 1.5 6 6.5 11 1.5' fill='none' stroke='%235d6675' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right .85rem center;
  background-size:11px;
  padding-right:2.3rem;
  cursor:pointer;
}
.champ input::placeholder,
.champ textarea::placeholder{color:var(--gris-clair);}
.champ input:hover,
.champ select:hover,
.champ textarea:hover{border-color:var(--gris-clair);}
.champ input:focus,
.champ select:focus,
.champ textarea:focus{
  outline:none;
  background:var(--blanc);
  border-color:var(--marine-400);
  box-shadow:var(--ombre-focus);
}

.champ .erreur-msg{
  display:none;
  align-items:center;
  gap:.32rem;
  color:var(--erreur);
  font-size:.775rem;
  margin-top:.38rem;
  font-weight:500;
}
.champ.champ-invalide input,
.champ.champ-invalide select,
.champ.champ-invalide textarea{
  border-color:var(--erreur);
  background:var(--erreur-voile);
}
.champ.champ-invalide input:focus,
.champ.champ-invalide select:focus,
.champ.champ-invalide textarea:focus{
  box-shadow:0 0 0 3px rgba(150,38,31,.16);
}
.champ.champ-invalide .erreur-msg{display:flex;}
.champ.champ-valide input,
.champ.champ-valide select,
.champ.champ-valide textarea{border-color:rgba(28,99,64,.42);}

.form-message{
  display:none;
  padding:.85rem 1.05rem;
  border-radius:var(--r-sm);
  margin-bottom:1.3rem;
  font-size:.875rem;
  line-height:1.5;
}
.form-message.visible{display:block;}
.form-message.succes{background:var(--succes-voile);color:var(--succes);border:1px solid rgba(28,99,64,.32);}
.form-message.erreur{background:var(--erreur-voile);color:var(--erreur);border:1px solid rgba(150,38,31,.3);}

.form-pied{
  margin-top:1.4rem;
  padding-top:1.3rem;
  border-top:1px solid var(--filet);
}
.form-note{
  display:flex;
  align-items:flex-start;
  gap:.45rem;
  font-size:.785rem;
  color:var(--gris);
  margin:.85rem 0 0;
  line-height:1.5;
}
.form-note svg{width:14px;height:14px;flex-shrink:0;margin-top:.2rem;color:var(--or);}

/* État de succès élégant */
.form-succes{
  display:none;
  text-align:center;
  padding:clamp(2rem, 5vw, 3.2rem) clamp(1.2rem, 4vw, 2.4rem);
  background:var(--blanc);
  border:1px solid var(--filet);
  border-top:3px solid var(--succes);
  border-radius:var(--r-md);
  box-shadow:var(--ombre-2);
  animation:apparition 420ms cubic-bezier(.2,.7,.3,1) both;
}
.form-succes.visible{display:block;}
.form-succes .sceau{
  width:66px;height:66px;
  margin:0 auto 1.15rem;
  display:block;
}
.form-succes h2{
  font-size:1.42rem;
  margin-bottom:.6rem;
}
.form-succes h2::after{display:none;}
.form-succes p{
  margin:0 auto .55rem;
  max-width:46ch;
  color:var(--encre-douce);
  font-size:.94rem;
}
.form-succes .ref-envoi{
  display:inline-block;
  margin-top:1.1rem;
  padding:.5rem 1rem;
  background:var(--papier);
  border:1px dashed var(--filet-fort);
  border-radius:var(--r-sm);
  font-size:.755rem;
  letter-spacing:.09em;
  text-transform:uppercase;
  color:var(--gris);
  font-weight:600;
}

@keyframes apparition{
  from{opacity:0;transform:translateY(12px);}
  to{opacity:1;transform:none;}
}

/* Encadré latéral du formulaire */
.aside-contact{
  display:flex;
  flex-direction:column;
  gap:1.1rem;
  position:sticky;
  top:calc(var(--header-h) + 1.5rem);
}
.aside-carte{
  background:linear-gradient(180deg, #fbfaf8 0%, var(--papier) 100%);
  border:1px solid var(--filet);
  border-radius:var(--r-sm);
  padding:1.25rem 1.3rem;
  box-shadow:var(--ombre-1);
}
.aside-carte h3{
  font-size:.68rem;
  text-transform:uppercase;
  letter-spacing:.15em;
  color:var(--gris);
  font-weight:700;
  font-family:var(--font-corps);
  margin-bottom:.9rem;
  padding-bottom:.55rem;
  border-bottom:1px solid var(--filet);
}
.aside-carte ul{
  list-style:none;
  padding:0;
  margin:0;
  font-size:.855rem;
  line-height:1.55;
  max-width:none;
}
.aside-carte li{
  position:relative;
  padding-left:1.45rem;
  margin-bottom:.6rem;
  color:var(--encre-douce);
}
.aside-carte li:last-child{margin-bottom:0;}
.aside-carte li::before{
  content:"";
  position:absolute;
  left:0;top:.42em;
  width:10px;height:6px;
  border-left:1.8px solid var(--or);
  border-bottom:1.8px solid var(--or);
  transform:rotate(-45deg);
}
.aside-carte .aside-prix{
  display:flex;
  justify-content:space-between;
  align-items:baseline;
  gap:.75rem;
  padding:.5rem 0;
  border-bottom:1px dotted var(--filet-fort);
  font-size:.86rem;
  color:var(--encre-douce);
}
.aside-carte .aside-prix:last-child{border-bottom:none;}
.aside-carte .aside-prix b{
  font-family:var(--font-titre);
  font-size:1rem;
  color:var(--marine-800);
  white-space:nowrap;
}

.coordonnees-institut{
  margin-top:2rem;
  padding-top:1.3rem;
  border-top:1px solid var(--filet);
  font-size:.85rem;
  color:var(--gris);
  line-height:1.6;
}
.coordonnees-institut p{max-width:76ch;margin-bottom:0;}

/* Coordonnées directes — contact page */
.bloc-coordonnees{
  margin-top:2.2rem;
  padding:1.5rem 1.6rem;
  background:var(--papier-2);
  border:1px solid var(--filet);
  border-left:3px solid var(--or-400);
  border-radius:var(--r-sm);
}
.bloc-coordonnees h2{
  font-size:1.12rem;
  margin:0 0 .3rem;
}
.bloc-coordonnees h2::after{display:none;}
.bloc-coordonnees > p{
  font-size:.88rem;
  color:var(--gris);
  margin:0 0 1.1rem;
  max-width:70ch;
}
.coord-liste{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:1rem 1.6rem;
  list-style:none;
  padding:0;
  margin:0;
}
.coord-liste li{display:flex;gap:.7rem;align-items:flex-start;}
.coord-liste svg{
  width:19px;height:19px;flex-shrink:0;margin-top:.15rem;
  color:var(--or);
}
.coord-intitule{
  display:block;
  font-size:.7rem;
  text-transform:uppercase;
  letter-spacing:.09em;
  color:var(--gris-clair);
  margin-bottom:.1rem;
}
.coord-valeur{
  font-size:.96rem;
  font-weight:600;
  color:var(--encre);
  text-decoration:none;
  overflow-wrap:anywhere;
}
a.coord-valeur:hover{color:var(--marine-500);text-decoration:underline;}

/* --------------------------------------------------------------------------
   18. Barre d'action mobile
   -------------------------------------------------------------------------- */
.barre-mobile{
  display:none;
  position:fixed;
  left:0;right:0;bottom:0;
  z-index:130;
  padding:.6rem .8rem calc(.6rem + env(safe-area-inset-bottom, 0px));
  background:rgba(255,255,255,.96);
  backdrop-filter:saturate(180%) blur(14px);
  -webkit-backdrop-filter:saturate(180%) blur(14px);
  border-top:1px solid var(--filet);
  box-shadow:0 -4px 20px rgba(11,35,64,.11);
}
.barre-mobile::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:2px;
  background:linear-gradient(90deg, transparent, var(--or-400) 35%, var(--or) 50%, var(--or-400) 65%, transparent);
  opacity:.75;
}
.barre-mobile-inner{
  display:flex;
  align-items:center;
  gap:.7rem;
}
.barre-mobile .bm-texte{
  flex:1 1 auto;
  min-width:0;
  line-height:1.25;
}
.barre-mobile .bm-titre{
  display:block;
  font-size:.775rem;
  font-weight:700;
  color:var(--marine-800);
  letter-spacing:.01em;
}
.barre-mobile .bm-detail{
  display:block;
  font-size:.695rem;
  color:var(--gris);
  margin-top:.1rem;
}
.barre-mobile .btn{
  flex:0 0 auto;
  padding:.72rem 1.15rem;
  font-size:.86rem;
}

/* --------------------------------------------------------------------------
   19. Pied de page
   -------------------------------------------------------------------------- */
.site-footer{
  position:relative;
  background:linear-gradient(180deg, var(--marine-800) 0%, var(--marine-900) 100%);
  color:#a9b7cb;
  padding:clamp(2.4rem, 5vw, 3.6rem) 0 1.5rem;
  margin-top:0;
  font-size:.885rem;
}
.site-footer::before{
  content:"";
  position:absolute;
  inset:0 0 auto 0;
  height:2px;
  background:linear-gradient(90deg, transparent, var(--or) 25%, var(--or-400) 50%, var(--or) 75%, transparent);
  opacity:.55;
}
.footer-grid{
  display:grid;
  grid-template-columns:1.9fr 1fr 1fr 1.25fr;
  gap:2.2rem;
  padding-bottom:2rem;
  margin-bottom:1.4rem;
  border-bottom:1px solid rgba(201,162,79,.16);
}
.footer-marque{
  display:flex;
  align-items:center;
  gap:.7rem;
  margin-bottom:.9rem;
}
.footer-marque svg{width:40px;height:40px;flex-shrink:0;}
.footer-marque span{
  font-family:var(--font-titre);
  font-size:1.08rem;
  font-weight:600;
  color:var(--blanc);
  letter-spacing:-.01em;
}
.site-footer h4{
  color:var(--blanc);
  font-family:var(--font-corps);
  font-size:.685rem;
  text-transform:uppercase;
  letter-spacing:.16em;
  font-weight:700;
  margin-bottom:.95rem;
  padding-bottom:.5rem;
  border-bottom:1px solid rgba(201,162,79,.2);
}
.site-footer p{
  font-size:.84rem;
  line-height:1.65;
  color:#98a7bd;
  max-width:44ch;
}
.site-footer ul{list-style:none;padding:0;margin:0;}
.site-footer li{margin-bottom:.15rem;}
.site-footer a{
  color:#a9b7cb;
  text-decoration:none;
  font-size:.855rem;
  line-height:2;
  transition:color var(--transition);
}
.site-footer a:hover{color:var(--or-400);}
.footer-contact{list-style:none;padding:0;margin:0;font-size:.855rem;line-height:1.75;color:#a8b4c6;}
.footer-contact li{margin-bottom:.5rem;}
.footer-contact a{line-height:1.5;}
.footer-contact .fc-label{
  display:block;
  font-size:.7rem;
  text-transform:uppercase;
  letter-spacing:.09em;
  color:#65738a;
  margin-bottom:.05rem;
}
.footer-bas{
  font-size:.75rem;
  color:#7c8ba3;
  text-align:center;
  letter-spacing:.02em;
  line-height:1.6;
}
.footer-legal{
  display:block;
  margin-top:.4rem;
  font-size:.715rem;
  color:#65738a;
}

/* --------------------------------------------------------------------------
   20. Voile latéral (mobile)
   -------------------------------------------------------------------------- */
.sidebar-overlay{
  position:fixed;
  inset:0;
  z-index:150;
  background:rgba(5,15,31,.55);
  backdrop-filter:blur(2px);
  -webkit-backdrop-filter:blur(2px);
  opacity:0;
  visibility:hidden;
  transition:opacity var(--transition), visibility var(--transition);
}
.sidebar-overlay.visible{opacity:1;visibility:visible;}

/* --------------------------------------------------------------------------
   21. Responsive
   -------------------------------------------------------------------------- */
@media (max-width:1080px){
  .layout{grid-template-columns:250px minmax(0,1fr);}
  .form-zone{grid-template-columns:1fr;}
  .aside-contact{position:static;}
  .footer-grid{grid-template-columns:1fr 1fr;}
}

@media (max-width:920px){
  :root{--header-h:66px;}
  .layout{
    grid-template-columns:1fr;
    box-shadow:none;
  }
  .sidebar{
    position:fixed;
    top:0;left:0;
    height:100dvh;
    max-height:none;
    width:min(84vw, 300px);
    z-index:160;
    transform:translateX(-100%);
    transition:transform 280ms cubic-bezier(.3,.7,.3,1);
    box-shadow:6px 0 32px rgba(5,15,31,.34);
    border-right:1px solid var(--filet-fort);
    padding-top:1.4rem;
  }
  .sidebar.ouvert{transform:translateX(0);}
  .menu-toggle{display:inline-flex;}
  .main-content{padding:1.5rem 1.15rem 2.6rem;}
  .reassurance{grid-template-columns:repeat(2, minmax(0,1fr));}
  .footer-grid{grid-template-columns:1fr;gap:1.6rem;}
  .barre-mobile{display:block;}
  body{padding-bottom:74px;}
  .header-cta{display:none;}
  .brand-baseline{display:none;}
  .brand-emblem{width:40px;height:40px;}
  .brand-name{font-size:1.08rem;}
  .faq-reponse-inner{padding-right:1.25rem;}
}

@media (max-width:560px){
  .reassurance{grid-template-columns:1fr;}
  .grid-formations{grid-template-columns:1fr;}
  .procedure{grid-template-columns:1fr;}
  .btn-groupe{flex-direction:column;align-items:stretch;}
  .btn-groupe .btn{width:100%;}
  .bandeau-officiel{font-size:.685rem;letter-spacing:.02em;}
  .programme-module{grid-template-columns:1fr;}
  .programme-module .duree-module{grid-column:1;grid-row:auto;justify-self:start;order:-1;margin-bottom:.35rem;}
  .fiche-synthese{grid-template-columns:1fr;}
  .barre-mobile .bm-detail{display:none;}
  .form-succes .sceau{width:56px;height:56px;}
}

/* --------------------------------------------------------------------------
   22. Préférences utilisateur
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  .carte-formation:hover,
  .btn:hover,
  .objection:hover,
  .programme-module:hover{transform:none;}
}

@media print{
  .site-header,.sidebar,.barre-mobile,.sidebar-overlay,.bloc-appel,.btn{display:none !important;}
  .layout{display:block;box-shadow:none;}
  body{background:#fff;padding-bottom:0;}
  .faq-reponse{max-height:none !important;}
}
