/* alpha campus · demo statique
   Direction : bauhaus (couleurs de marque) x abecedaire. Zero build, zero framework. */

:root {
  --carmin: #8b0628;
  --carmin-d: #680420;
  --orange: #ff6b1a;
  --noir: #111111;
  --papier: #f2f2f0;
  --papier-2: #e6e6e2;
  --filet: 3px;
  --ombre: 6px 6px 0 var(--noir);
  --ombre-s: 4px 4px 0 var(--noir);
  --ff-titre: "Hanken Grotesk", "Arial Black", system-ui, sans-serif;
  --ff-corps: "Inter", Arial, system-ui, sans-serif;
  --pad: clamp(20px, 4.5vw, 56px);
  --haut: 68px;
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--haut) + 8px); -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--papier);
  color: var(--noir);
  font-family: var(--ff-corps);
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; display: block; height: auto; }
h1, h2, h3, p, ol, ul, figure { margin: 0; }
ol, ul { padding: 0; list-style: none; }
a { color: inherit; }
button, input, textarea { font: inherit; color: inherit; }
[hidden] { display: none !important; }

h1, h2, h3 {
  font-family: var(--ff-titre);
  font-weight: 900;
  letter-spacing: -0.035em;
  line-height: 0.95;
  text-transform: lowercase;
}
h2 { font-size: clamp(40px, 7vw, 96px); }

.wrap { width: 100%; max-width: 1240px; margin-inline: auto; padding-inline: var(--pad); }

.skip {
  position: absolute; left: 12px; top: -60px; z-index: 100;
  background: var(--noir); color: var(--papier); padding: 10px 16px; text-decoration: none; font-weight: 600;
}
.skip:focus { top: 12px; }

:focus-visible { outline: 3px solid var(--orange); outline-offset: 3px; }

/* ---------- formes primitives ---------- */
.sh { display: inline-block; flex: none; background: var(--carmin); }
.sh--carre { background: var(--carmin); }
.sh--triangle { background: var(--orange); clip-path: polygon(0 0, 100% 50%, 0 100%); }
.sh--cercle { background: var(--noir); border-radius: 50%; }

/* ---------- boutons ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 52px; padding: 12px 26px;
  font-family: var(--ff-titre); font-weight: 800; font-size: 17px; letter-spacing: -0.01em;
  text-decoration: none; cursor: pointer;
  border: var(--filet) solid var(--noir);
  box-shadow: var(--ombre-s);
  transition: transform .12s ease, box-shadow .12s ease;
}
.btn:hover { transform: translate(2px, 2px); box-shadow: 2px 2px 0 var(--noir); }
.btn:active { transform: translate(4px, 4px); box-shadow: 0 0 0 var(--noir); }
.btn.btn--carmin { background: var(--carmin); color: #fff; }
.btn.btn--carmin:hover { background: var(--carmin-d); }
.btn--plein { width: 100%; }
.lien {
  font-weight: 600; text-decoration: none;
  background: linear-gradient(var(--orange), var(--orange)) 0 100% / 100% 3px no-repeat;
  padding-bottom: 2px; transition: background-size .15s;
}
.lien:hover { background-size: 100% 100%; }

/* ---------- en-tete ---------- */
.top {
  position: sticky; top: 0; z-index: 50;
  background: var(--papier);
  border-bottom: var(--filet) solid var(--noir);
}
.top__in { height: var(--haut); display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.marque { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.picto { display: block; width: 62px; aspect-ratio: 450 / 258; overflow: hidden; flex: none; }
.picto img { width: 426.7%; max-width: none; height: auto; }
.picto--grand { width: clamp(150px, 22vw, 240px); }
.marque__nom { font-family: var(--ff-titre); font-weight: 900; font-size: 26px; letter-spacing: -0.04em; line-height: 1; }

.menu { display: flex; align-items: center; gap: 28px; }
.marque, .menu > a, .menu .mega__btn { white-space: nowrap; }
.menu a:not(.btn) { text-decoration: none; font-weight: 600; font-size: 15px; padding: 6px 0; background: linear-gradient(var(--orange), var(--orange)) 0 100% / 0 3px no-repeat; transition: background-size .15s; }
.menu a:not(.btn):hover { background-size: 100% 3px; }
.btn.btn--nav { min-height: 44px; padding: 8px 20px; font-size: 15px; }

.burger { display: none; width: 48px; height: 48px; padding: 0; background: var(--papier); border: var(--filet) solid var(--noir); cursor: pointer; flex-direction: column; justify-content: center; align-items: center; gap: 5px; }
.burger span { display: block; width: 22px; height: 3px; background: var(--noir); transition: transform .15s, opacity .15s; }
.burger[aria-expanded="true"] span:nth-child(1) { transform: translateY(8px) rotate(45deg); }
.burger[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.burger[aria-expanded="true"] span:nth-child(3) { transform: translateY(-8px) rotate(-45deg); }

/* ---------- 1. planche ---------- */
.hero { padding-block: clamp(36px, 7vw, 88px) clamp(48px, 8vw, 110px); overflow: hidden; }
.planche { font-size: clamp(42px, 11.2vw, 156px); line-height: 0.92; }
.ln { display: flex; align-items: center; gap: 0.14em; white-space: nowrap; }
.ln .sh { width: 0.74em; height: 0.74em; }
.ln--2 { padding-left: clamp(0px, 7vw, 110px); }
.ln--3 { padding-left: clamp(0px, 14vw, 220px); }

.hero__bas {
  margin-top: clamp(32px, 5vw, 64px);
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr);
  gap: clamp(28px, 5vw, 80px);
  align-items: end;
}
.chapo { font-size: clamp(20px, 2.4vw, 28px); line-height: 1.35; font-weight: 500; max-width: 30em; }
.chapo strong { font-weight: 600; background: linear-gradient(var(--orange), var(--orange)) 0 92% / 100% 0.28em no-repeat; }
.hero__sous { margin-top: 16px; max-width: 34em; color: #3a3a3a; }
.hero__cta { margin-top: 28px; display: flex; flex-wrap: wrap; align-items: center; gap: 18px 30px; }

.insigne {
  justify-self: end; width: min(100%, 340px);
  background: var(--papier-2);
  border: var(--filet) solid var(--noir);
  box-shadow: var(--ombre);
  padding: 22px 22px 18px;
  display: flex; flex-direction: column; gap: 14px; align-items: flex-start;
}
.insigne figcaption { font-family: var(--ff-titre); font-weight: 800; font-size: 20px; line-height: 1.15; letter-spacing: -0.02em; }

/* ---------- 2. poles ---------- */
.poles { border-top: var(--filet) solid var(--noir); }
.poles__tete {
  padding-block: clamp(40px, 6vw, 84px) clamp(24px, 3vw, 40px);
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 24em); gap: 24px 48px; align-items: end;
}
.poles__tete p { font-size: 19px; }

.lecon { border-top: var(--filet) solid var(--noir); padding-block: clamp(36px, 5vw, 72px); }
.lecon--2 { background: var(--papier-2); }
.lecon:last-child { border-bottom: var(--filet) solid var(--noir); }
.lecon__grille { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
.lecon--2 .lecon__grille { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); }
.lecon--2 .lecon__signe { order: 2; }
.lecon--3 .lecon__grille { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); }
.lecon--3 .lecon__corps { padding-top: clamp(0px, 5vw, 70px); }

.lecon__signe { display: flex; flex-direction: column; gap: 22px; }
.sh--geant { width: clamp(84px, 16vw, 210px); height: clamp(84px, 16vw, 210px); }
.lecon h3 { font-size: clamp(44px, 6.6vw, 92px); }
.pole {
  display: inline-block; margin-top: 14px;
  border: 2px solid var(--noir); padding: 4px 12px;
  font-size: 13px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase;
}
.lecon__phrase { font-family: var(--ff-titre); font-weight: 800; font-size: clamp(22px, 2.6vw, 32px); line-height: 1.12; letter-spacing: -0.02em; max-width: 20em; }
.modules { margin-top: 26px; counter-reset: mod; border-top: var(--filet) solid var(--noir); }
.modules li {
  counter-increment: mod;
  display: grid; grid-template-columns: 3.2rem minmax(0, 1fr); column-gap: 8px;
  padding: 16px 0; border-bottom: 2px solid var(--noir);
}
.modules li::before { content: counter(mod, decimal-leading-zero); grid-row: 1 / span 2; font-family: var(--ff-titre); font-weight: 900; font-size: 22px; color: var(--carmin); line-height: 1.3; }
.modules b { font-family: var(--ff-titre); font-weight: 800; font-size: 20px; letter-spacing: -0.015em; line-height: 1.25; }
.modules span { color: #333; font-size: 16px; }

/* ---------- 3. legitimite ---------- */
.legitimite { background: var(--noir); color: var(--papier); padding-block: clamp(52px, 8vw, 120px); overflow: hidden; }
.legitimite__grille { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: clamp(24px, 6vw, 96px); align-items: center; }
.chiffre { font-family: var(--ff-titre); font-weight: 900; color: var(--orange); font-size: clamp(110px, 22vw, 330px); line-height: 0.8; letter-spacing: -0.07em; display: flex; flex-direction: column; }
.chiffre small { font-size: 0.26em; letter-spacing: -0.03em; margin-top: 0.12em; padding-left: 0.06em; }
.legitimite h2 { font-size: clamp(36px, 5.2vw, 72px); }
.legitimite .legitimite__texte p { margin-top: 22px; max-width: 36em; font-size: 18px; color: #dcdcd8; }

/* ---------- 4. parcours ---------- */
.parcours { padding-block: clamp(52px, 8vw, 120px); }
.parcours__intro { margin-top: 20px; font-size: 19px; max-width: 30em; }
.regle {
  margin-top: clamp(40px, 6vw, 80px);
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
  border-top: var(--filet) solid var(--noir);
  position: relative;
  /* graduations de la regle */
  background: repeating-linear-gradient(90deg, var(--noir) 0 2px, transparent 2px 24px) 0 0 / 100% 16px no-repeat;
}
.regle li { padding: 36px clamp(14px, 2.4vw, 32px) 0 0; position: relative; }
.regle li + li { padding-left: clamp(14px, 2.4vw, 32px); }
/* alpha et omega = le picto alpha & omedia decoupe (assets/*.svg) */
.lettre, .repere { display: block; height: clamp(84px, 11vw, 150px); }
.lettre { width: auto; }
.repere { width: 1px; }
.regle h3 { margin-top: 14px; font-size: clamp(28px, 3.6vw, 48px); }
.regle p { margin-top: 12px; max-width: 18em; }

/* ---------- 5. formats ---------- */
.formats { background: var(--papier-2); border-block: var(--filet) solid var(--noir); padding-block: clamp(52px, 8vw, 120px); }
.formats__bloc { margin-top: clamp(32px, 5vw, 64px); display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(18px, 3vw, 40px); align-items: start; }
.fmt { background: var(--papier); border: var(--filet) solid var(--noir); box-shadow: var(--ombre); padding: clamp(22px, 2.6vw, 34px); }
.fmt h3 { font-size: clamp(26px, 2.8vw, 38px); }
.fmt p { margin-top: 16px; }
.fmt--1 { min-height: 15rem; }
.fmt--2 { margin-top: clamp(0px, 4vw, 56px); min-height: 13rem; }
.fmt--3 { margin-top: clamp(0px, 8vw, 112px); min-height: 17rem; background: var(--noir); color: var(--papier); box-shadow: 6px 6px 0 var(--orange); }

/* ---------- 6. formulaire ---------- */
.programme { background: var(--carmin); color: #fff; padding-block: clamp(52px, 8vw, 120px); }
.programme__grille { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.programme h2 { font-size: clamp(44px, 6.6vw, 92px); }
.programme__texte p { margin-top: 24px; font-size: 19px; max-width: 24em; }

.form {
  background: var(--papier); color: var(--noir);
  border: var(--filet) solid var(--noir); box-shadow: 8px 8px 0 var(--noir);
  padding: clamp(20px, 3vw, 40px);
  display: grid; gap: 20px;
}
.champ { display: grid; gap: 6px; }
.deux { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.form label:not(.pastille), .form legend { font-weight: 600; font-size: 15px; }
.form input[type="text"], .form input[type="email"], .form input[type="tel"], .form textarea {
  width: 100%; min-height: 50px; padding: 10px 14px;
  background: #fff; border: 2px solid var(--noir); border-radius: 0;
  font-size: 16px;
}
.form textarea { resize: vertical; min-height: 110px; }
.form input:focus-visible, .form textarea:focus-visible { outline: 3px solid var(--orange); outline-offset: 0; }
.form input.invalide, .form textarea.invalide { border-color: var(--carmin); box-shadow: 4px 4px 0 var(--carmin); }
.choix { border: 0; padding: 0; margin: 0; min-width: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.choix legend { width: 100%; padding: 0; margin-bottom: 10px; }
.pastille { position: relative; display: inline-flex; cursor: pointer; }
.pastille input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.pastille span {
  display: inline-flex; align-items: center; gap: 10px;
  min-height: 48px; padding: 8px 16px;
  border: 2px solid var(--noir); background: #fff;
  font-family: var(--ff-titre); font-weight: 800; font-size: 16px;
}
.pastille--texte span { font-family: var(--ff-corps); font-weight: 600; font-size: 15px; }
.pastille .sh { width: 18px; height: 18px; }
.pastille input:checked + span { background: var(--noir); color: var(--papier); box-shadow: 3px 3px 0 var(--carmin); }
.pastille input:focus-visible + span { outline: 3px solid var(--orange); outline-offset: 2px; }
.form__note { font-size: 14px; color: #444; }
.form__ok { padding: 14px 16px; border: 2px solid var(--noir); background: var(--papier-2); font-weight: 600; }

/* ---------- pied ---------- */
.pied { background: var(--noir); color: var(--papier); padding-top: clamp(40px, 6vw, 80px); overflow: hidden; }
.pied__haut { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px 48px; flex-wrap: wrap; padding-bottom: 36px; }
.omega { display: block; height: clamp(110px, 16vw, 220px); width: auto; }
.pied__marque { max-width: 26em; }
.pied__marque img { width: min(300px, 70vw); }
.pied__marque p { margin-top: 14px; color: #cfcfcb; font-size: 15px; }
.pied__bas { border-top: 2px solid #3a3a3a; padding-block: 22px 30px; display: flex; flex-wrap: wrap; justify-content: space-between; gap: 14px 32px; font-size: 14px; color: #cfcfcb; }
.pied__bas nav { display: flex; flex-wrap: wrap; gap: 8px 24px; }
.pied a { text-decoration: none; }
.pied a:hover { text-decoration: underline; text-decoration-color: var(--orange); text-underline-offset: 4px; }

/* ---------- mouvement ---------- */
.js .rv { opacity: 0; transform: translateY(24px); transition: opacity .6s ease, transform .6s ease; }
.js .rv.vu { opacity: 1; transform: none; }

@keyframes entree { from { opacity: 0; transform: translateX(-0.5em) scale(0.7); } to { opacity: 1; transform: none; } }
.ln .sh { animation: entree .6s cubic-bezier(.2,.8,.2,1) both; }
.ln--2 .sh { animation-delay: .12s; }
.ln--3 .sh { animation-delay: .24s; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .js .rv { opacity: 1; transform: none; transition: none; }
  .ln .sh { animation: none; }
  .btn, .btn:hover { transition: none; }
}

/* ---------- responsive ---------- */
@media (max-width: 960px) {
  .hero__bas { grid-template-columns: 1fr; }
  .insigne { justify-self: start; }
  .lecon__grille, .lecon--2 .lecon__grille, .lecon--3 .lecon__grille { grid-template-columns: 1fr; }
  .lecon--2 .lecon__signe { order: 0; }
  .lecon--3 .lecon__corps { padding-top: 0; }
  .lecon__signe { flex-direction: row; align-items: center; gap: 20px; }
  .sh--geant { width: clamp(64px, 18vw, 120px); height: clamp(64px, 18vw, 120px); }
  .poles__tete { grid-template-columns: 1fr; }
  .formats__bloc { grid-template-columns: 1fr; }
  .fmt--2, .fmt--3 { margin-top: 0; }
  .fmt--1, .fmt--2, .fmt--3 { min-height: 0; }
  .fmt--2 { margin-left: clamp(0px, 8vw, 60px); }
  .fmt--3 { margin-left: clamp(0px, 16vw, 120px); }
  .programme__grille { grid-template-columns: 1fr; }
}

@media (max-width: 1180px) {
  .burger { display: inline-flex; }
  .menu {
    position: absolute; left: 0; right: 0; top: 100%;
    flex-direction: column; align-items: stretch; gap: 0;
    background: var(--papier); border-bottom: var(--filet) solid var(--noir);
    padding: 8px var(--pad) 22px;
    display: none;
  }
  .menu.ouvert { display: flex; }
  .menu a:not(.btn) { padding: 16px 0; font-size: 18px; border-bottom: 2px solid var(--noir); background: none; }
  .btn.btn--nav { margin-top: 18px; min-height: 52px; font-size: 17px; }
}

@media (max-width: 640px) {
  body { font-size: 16px; }
  :root { --haut: 62px; --ombre: 5px 5px 0 var(--noir); }
  .picto { width: 50px; }
  .marque__nom { font-size: 22px; }
  .planche { font-size: 16.4vw; }
  .ln--2, .ln--3 { padding-left: 0; }
  .legitimite__grille { grid-template-columns: 1fr; }
  .chiffre { flex-direction: row; align-items: baseline; gap: 0.1em; font-size: clamp(96px, 34vw, 160px); }
  .chiffre small { margin-top: 0; font-size: 0.3em; }
  .regle { grid-template-columns: 1fr; background: none; border-top: 0; }
  .regle li, .regle li + li { padding: 0 0 28px 28px; border-left: var(--filet) solid var(--noir); margin-top: 0; }
  .regle li:last-child { padding-bottom: 0; }
  .lettre, .repere { height: 76px; }
  .repere { display: none; }
  .deux { grid-template-columns: 1fr; }
  .fmt--2, .fmt--3 { margin-left: 0; }
  .form { box-shadow: 5px 5px 0 var(--noir); }
  .pastille { flex: 1 1 auto; }
  .pastille span { width: 100%; justify-content: center; }
  .btn { width: 100%; }
  .hero__cta .btn { width: 100%; }
  .btn.btn--nav { width: 100%; }
  .omega { height: 110px; }
}

/* ---------- page a propos ---------- */
.menu a[aria-current="page"]:not(.btn) { background-size: 100% 3px; }
.btn.btn--clair { background: var(--papier); color: var(--noir); }
.btn.btn--clair:hover { background: #fff; }
.lien--clair { color: #fff; }
.planche--ap { font-size: clamp(40px, 9.6vw, 134px); }
.hero--ap .hero__bas { grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr); }

.constat { border-top: var(--filet) solid var(--noir); padding-block: clamp(52px, 8vw, 120px); }
.theses { margin-top: clamp(32px, 5vw, 64px); border-top: var(--filet) solid var(--noir); }
.theses li { display: grid; grid-template-columns: clamp(64px, 11vw, 150px) minmax(0, 1fr); gap: 8px clamp(16px, 3vw, 48px); padding-block: clamp(20px, 3vw, 40px); border-bottom: 2px solid var(--noir); align-items: baseline; }
.theses li:nth-child(even) { padding-left: clamp(0px, 8vw, 120px); }
.num { font-family: var(--ff-titre); font-weight: 900; font-size: clamp(36px, 6vw, 84px); line-height: 0.9; color: var(--carmin); letter-spacing: -0.04em; }
.theses p { font-family: var(--ff-titre); font-weight: 800; font-size: clamp(22px, 3.1vw, 42px); line-height: 1.12; letter-spacing: -0.025em; max-width: 24em; }
.theses em { font-style: normal; background: linear-gradient(var(--orange), var(--orange)) 0 94% / 100% 0.26em no-repeat; }

.diptyque { background: var(--papier-2); border-block: var(--filet) solid var(--noir); padding-block: clamp(52px, 8vw, 120px); }
.diptyque h2 { font-size: clamp(36px, 6vw, 84px); }
.dipt { margin-top: clamp(32px, 5vw, 64px); display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: clamp(18px, 3vw, 40px); align-items: start; }
.dipt article { border: var(--filet) solid var(--noir); padding: clamp(22px, 3vw, 44px); }
.dipt h3 { font-size: clamp(28px, 3.6vw, 52px); }
.dipt p { margin-top: 18px; font-size: 18px; max-width: 26em; }
.dipt__a { background: transparent; border-style: dashed !important; color: #333; }
.dipt__b { background: var(--noir); color: var(--papier); box-shadow: 8px 8px 0 var(--orange); margin-top: clamp(0px, 5vw, 72px); min-height: 18rem; }
.dipt__b p { color: #e6e6e2; }

.pratique { padding-block: clamp(52px, 8vw, 120px); }
.pratique__intro { margin-top: 20px; font-size: 19px; max-width: 30em; }
.cas { margin-top: clamp(32px, 5vw, 64px); border-top: var(--filet) solid var(--noir); }
.cas li { display: flex; align-items: center; gap: clamp(16px, 3vw, 40px); padding-block: clamp(16px, 2.4vw, 30px); border-bottom: 2px solid var(--noir); }
.cas .sh { width: clamp(40px, 6vw, 84px); height: clamp(40px, 6vw, 84px); }
.cas span { font-family: var(--ff-titre); font-weight: 800; font-size: clamp(22px, 3.4vw, 46px); line-height: 1.08; letter-spacing: -0.025em; }
.trait { margin-top: clamp(40px, 6vw, 80px); display: flex; align-items: center; gap: clamp(14px, 2.4vw, 32px); }
.trait__alpha { height: clamp(56px, 8vw, 110px); width: auto; flex: none; }
.trait__regle { flex: 1; min-width: 20px; height: 22px; border-top: var(--filet) solid var(--noir); background: repeating-linear-gradient(90deg, var(--noir) 0 2px, transparent 2px 24px) 0 0 / 100% 16px no-repeat; }
.trait__fin { font-family: var(--ff-titre); font-weight: 900; font-size: clamp(32px, 6vw, 84px); letter-spacing: -0.045em; line-height: 1; flex: none; }
.trait__legende { margin-top: 16px; max-width: 34em; }

.distingue { background: var(--papier-2); border-block: var(--filet) solid var(--noir); padding-block: clamp(52px, 8vw, 120px); }
.distingue__grille { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
.distingue h2 { position: sticky; top: calc(var(--haut) + 24px); }
.distingue .modules { margin-top: 0; }

.heritage .chiffre.mots { font-size: clamp(44px, 8vw, 118px); line-height: 0.92; letter-spacing: -0.05em; gap: 0.04em; }
.sceau { background: var(--papier); border: var(--filet) solid var(--papier); box-shadow: 10px 10px 0 var(--orange); padding: clamp(22px, 3.4vw, 44px); }
.sceau .picto--grand { width: clamp(180px, 26vw, 360px); }

.appel { background: var(--carmin); color: #fff; padding-block: clamp(52px, 8vw, 110px); }
.appel__grille { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 5fr); gap: clamp(28px, 5vw, 80px); align-items: end; }
.appel h2 { font-size: clamp(44px, 7vw, 100px); }
.appel__texte p { font-size: 20px; max-width: 24em; }
.appel .hero__cta { margin-top: 28px; }

@media (max-width: 960px) {
  .hero--ap .hero__bas { grid-template-columns: 1fr; }
  .dipt, .distingue__grille, .appel__grille { grid-template-columns: 1fr; }
  .dipt__b { margin-top: 0; min-height: 0; margin-left: clamp(0px, 8vw, 60px); }
  .distingue h2 { position: static; }
}
@media (max-width: 640px) {
  .planche--ap { font-size: 14.2vw; }
  .theses li, .theses li:nth-child(even) { grid-template-columns: 1fr; padding-left: 0; }
  .dipt__b { margin-left: 0; box-shadow: 5px 5px 0 var(--orange); }
  .trait__regle { height: 22px; }
  .appel .btn { width: 100%; }
}
@media (max-width: 640px) {
  .heritage .chiffre.mots { flex-direction: column; align-items: flex-start; font-size: 13vw; gap: 0; }
  .sceau { box-shadow: 6px 6px 0 var(--orange); }
}

/* ---------- catalogue et fiches formation ---------- */
.tbc { display: inline-block; font-family: var(--ff-corps); font-size: 0.78em; font-weight: 600; line-height: 1.5; letter-spacing: 0; text-transform: none; color: inherit; opacity: .72; border: 1.5px dashed currentColor; padding: 0 8px; white-space: nowrap; vertical-align: baseline; }
.menu a[aria-current="page"]:not(.btn) { background-size: 100% 3px; }
.modlien { text-decoration: none; background: linear-gradient(var(--orange), var(--orange)) 0 100% / 0 3px no-repeat; transition: background-size .15s; }
.modlien:hover, .modlien:focus-visible { background-size: 100% 3px; }
.modlien::after { content: " \2192"; color: var(--carmin); }
.poles__cat { white-space: nowrap; }

/* niveau : trois repères */
.niv { display: inline-flex; gap: 4px; vertical-align: middle; }
.niv i { width: 12px; height: 12px; border: 2px solid var(--noir); display: block; }
.niv i.on { background: var(--carmin); border-color: var(--carmin); }
.niv__txt { font-size: 0.9em; margin-left: 6px; }

/* page catalogue */
.hero--cat .planche--cat { font-size: clamp(52px, 12vw, 170px); }
.sommaire { justify-self: end; width: min(100%, 360px); border: var(--filet) solid var(--noir); box-shadow: var(--ombre); background: var(--papier-2); }
.sommaire li + li { border-top: 2px solid var(--noir); }
.sommaire a { display: flex; align-items: center; gap: 14px; padding: 14px 18px; text-decoration: none; min-height: 56px; }
.sommaire a:hover { background: var(--papier); }
.sommaire .sh { width: 24px; height: 24px; }
.sommaire span { font-family: var(--ff-titre); font-weight: 900; font-size: 24px; letter-spacing: -0.03em; }
.sommaire small { margin-left: auto; font-size: 14px; color: #444; }

.pb { border-top: var(--filet) solid var(--noir); padding-block: clamp(40px, 6vw, 88px); }
.pb--2 { background: var(--papier-2); }
.pb__tete { display: flex; align-items: center; gap: clamp(18px, 3vw, 40px); margin-bottom: clamp(24px, 4vw, 48px); }
.pb__tete h2 { font-size: clamp(44px, 7vw, 100px); }
.pb .sh--geant { width: clamp(64px, 10vw, 130px); height: clamp(64px, 10vw, 130px); }
.mods { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 290px), 1fr)); gap: clamp(16px, 2.4vw, 32px); align-items: stretch; }
.mods li { display: flex; }
.carte { display: flex; flex-direction: column; gap: 14px; width: 100%; padding: clamp(20px, 2.4vw, 30px); background: var(--papier); border: var(--filet) solid var(--noir); box-shadow: var(--ombre-s); text-decoration: none; transition: transform .12s, box-shadow .12s; }
.pb--2 .carte { background: var(--papier); }
.carte:hover { transform: translate(2px, 2px); box-shadow: 2px 2px 0 var(--noir); }
.carte__haut { display: flex; justify-content: space-between; align-items: center; gap: 12px; }
.carte__code { font-family: var(--ff-titre); font-weight: 900; font-size: 18px; letter-spacing: -0.01em; color: var(--carmin); }
.carte h3 { font-size: clamp(26px, 2.6vw, 34px); line-height: 1; }
.carte p { font-size: 16px; color: #333; flex: 1; }
.carte__bas { display: flex; justify-content: space-between; align-items: center; gap: 10px; border-top: 2px solid var(--noir); padding-top: 12px; font-weight: 600; font-size: 15px; }
.carte__go b { color: var(--carmin); }

.surmesure { background: var(--papier); border-top: var(--filet) solid var(--noir); padding-block: clamp(52px, 8vw, 120px); }
.sm__sous { margin-top: clamp(36px, 5vw, 64px); font-size: clamp(28px, 3.6vw, 48px); }
.etapes { margin-top: 24px; counter-reset: et; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(14px, 2vw, 28px); border-top: var(--filet) solid var(--noir); padding-top: 20px; }
.etapes li { counter-increment: et; display: flex; flex-direction: column; gap: 8px; }
.etapes li::before { content: counter(et, decimal-leading-zero); font-family: var(--ff-titre); font-weight: 900; font-size: 44px; line-height: 1; color: var(--carmin); letter-spacing: -0.04em; }
.etapes b { font-family: var(--ff-titre); font-weight: 900; font-size: 24px; letter-spacing: -0.02em; }
.etapes span { font-size: 16px; }
.sm__deux { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(20px, 4vw, 64px); }
.modules--nu li::before { content: none; }
.modules--nu li { grid-template-columns: minmax(0, 1fr); }
.note { margin-top: 14px; font-size: 15px; color: #333; }
.parcours-types { margin-top: 20px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(16px, 2.4vw, 32px); }
.parcours-types li { border: var(--filet) solid var(--noir); padding: clamp(20px, 2.4vw, 30px); background: var(--papier-2); box-shadow: var(--ombre-s); display: flex; flex-direction: column; gap: 10px; }
.parcours-types h3 { font-size: clamp(26px, 2.8vw, 36px); }
.par__besoin { font-weight: 600; }
.par__mods { display: flex; flex-direction: column; gap: 4px; font-size: 15px; }
.par__mods a { text-decoration: none; background: linear-gradient(var(--orange), var(--orange)) 0 100% / 0 2px no-repeat; align-self: flex-start; }
.par__mods a:hover { background-size: 100% 2px; }
.par__mods b { color: var(--carmin); font-family: var(--ff-titre); }
.par__duree { margin-top: auto; padding-top: 10px; border-top: 2px solid var(--noir); font-weight: 600; }

.infos { background: var(--papier-2); border-block: var(--filet) solid var(--noir); padding-block: clamp(52px, 8vw, 120px); }
.infos__grille { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
.infos h2 { position: sticky; top: calc(var(--haut) + 24px); font-size: clamp(40px, 6vw, 84px); }
.infos__liste { margin: 0; border-top: var(--filet) solid var(--noir); }
.info { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; padding: 14px 0; border-bottom: 2px solid var(--noir); }
.info dt { font-family: var(--ff-titre); font-weight: 800; font-size: 19px; letter-spacing: -0.015em; }
.info dd { margin: 0; color: #2b2b2b; }

/* fiche module */
.fiche-hero { padding-block: clamp(28px, 5vw, 64px) clamp(40px, 6vw, 80px); }
.fil { display: flex; flex-wrap: wrap; gap: 6px 10px; align-items: center; font-size: 14px; font-weight: 600; margin-bottom: clamp(24px, 4vw, 48px); }
.fil a { text-decoration: none; background: linear-gradient(var(--orange), var(--orange)) 0 100% / 0 2px no-repeat; transition: background-size .15s; padding-block: 8px; }
.fil a:hover { background-size: 100% 2px; }
.fil span[aria-hidden] { color: #777; }
.fil [aria-current] { color: #444; }
.fiche-hero__tete { display: flex; align-items: center; gap: clamp(18px, 3vw, 44px); }
.fiche-hero__tete .sh--geant { width: clamp(72px, 12vw, 170px); height: clamp(72px, 12vw, 170px); }
.fiche-hero h1 { font-size: clamp(40px, 8vw, 112px); line-height: 0.92; overflow-wrap: anywhere; }
.fiche-hero__code { margin-top: 14px; display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.fiche-hero .chapo { margin-top: clamp(24px, 3vw, 40px); max-width: 32em; }
.fiche__note { margin-top: 14px; max-width: 40em; font-size: 15px; color: #333; border-left: 4px solid var(--orange); padding-left: 14px; }
.meta { margin: clamp(28px, 4vw, 48px) 0 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: var(--filet) solid var(--noir); background: var(--papier-2); }
.meta > div { padding: 16px 18px; border-left: 2px solid var(--noir); }
.meta > div:first-child { border-left: 0; }
.meta dt { font-size: 13px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: #444; }
.meta dd { margin: 6px 0 0; font-weight: 600; }
.fiche-hero .hero__cta { margin-top: 28px; }

.bloc { border-top: var(--filet) solid var(--noir); padding-block: clamp(36px, 5vw, 72px); }
.bloc--2 { background: var(--papier-2); }
.bloc__grille { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(20px, 4vw, 64px); align-items: start; }
.bloc h2 { font-size: clamp(34px, 4.6vw, 64px); position: sticky; top: calc(var(--haut) + 24px); }
.bloc__corps { max-width: 44em; }
.bloc__intro { font-weight: 600; margin-bottom: 14px; }
.pour p { padding: 16px 0; border-bottom: 2px solid var(--noir); font-size: 18px; }
.pour p:first-child { border-top: var(--filet) solid var(--noir); }
.pour b { display: block; font-family: var(--ff-titre); font-weight: 900; font-size: 15px; letter-spacing: 0.04em; text-transform: uppercase; color: var(--carmin); margin-bottom: 4px; }
.objs { counter-reset: ob; border-top: var(--filet) solid var(--noir); }
.objs li { counter-increment: ob; display: grid; grid-template-columns: 3rem minmax(0, 1fr); padding: 14px 0; border-bottom: 2px solid var(--noir); font-size: 18px; }
.objs li::before { content: counter(ob, decimal-leading-zero); font-family: var(--ff-titre); font-weight: 900; color: var(--carmin); font-size: 22px; line-height: 1.3; }
.prog { border-top: var(--filet) solid var(--noir); }
.prog li { display: grid; grid-template-columns: clamp(92px, 12vw, 150px) minmax(0, 1fr); gap: clamp(14px, 3vw, 40px); padding: 22px 0; border-bottom: 2px solid var(--noir); }
.dj { font-family: var(--ff-titre); font-weight: 900; font-size: clamp(52px, 7vw, 92px); line-height: 0.85; color: var(--carmin); letter-spacing: -0.05em; }
.dj small { display: block; font-family: var(--ff-corps); font-weight: 600; font-size: 12px; letter-spacing: 0.04em; text-transform: uppercase; color: var(--noir); margin-bottom: 8px; }
.prog h3 { font-size: clamp(24px, 2.8vw, 36px); line-height: 1.02; }
.prog p { margin-top: 10px; max-width: 40em; }
.formats--fiche { border-top: var(--filet) solid var(--noir); }
.formats--fiche .formats__bloc { margin-top: 0; }
.formats--fiche .fmt p { font-size: 17px; }

.pn-bar { border-top: var(--filet) solid var(--noir); background: var(--papier); }
.pn-bar__in { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.pn { display: flex; flex-direction: column; gap: 4px; padding: 22px clamp(10px, 2vw, 28px); text-decoration: none; border-left: 2px solid var(--noir); min-height: 110px; justify-content: center; }
.pn:first-child { border-left: 0; padding-left: 0; }
.pn:last-child { padding-right: 0; }
.pn small { font-size: 13px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: #444; }
.pn b { font-family: var(--ff-titre); font-weight: 800; font-size: clamp(18px, 2vw, 24px); letter-spacing: -0.02em; line-height: 1.1; }
a.pn:hover b { text-decoration: underline; text-decoration-color: var(--orange); text-decoration-thickness: 3px; text-underline-offset: 4px; }
.pn--n { text-align: right; align-items: flex-end; }
.pn--cat { text-align: center; align-items: center; }
.pn--vide { border-left: 0; }

@media (max-width: 960px) {
  .sommaire { justify-self: start; }
  .etapes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sm__deux, .parcours-types { grid-template-columns: 1fr; }
  .infos__grille, .bloc__grille { grid-template-columns: 1fr; }
  .infos h2, .bloc h2 { position: static; }
  .meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .meta > div:nth-child(3) { border-left: 0; }
  .meta > div:nth-child(n+3) { border-top: 2px solid var(--noir); }
}
@media (max-width: 640px) {
  .etapes { grid-template-columns: 1fr; }
  .pb__tete { gap: 16px; }
  .fiche-hero__tete { align-items: flex-start; }
  .meta { grid-template-columns: 1fr; }
  .meta > div, .meta > div:nth-child(3) { border-left: 0; }
  .meta > div + div { border-top: 2px solid var(--noir); }
  .prog li { grid-template-columns: 1fr; gap: 8px; }
  .dj { display: flex; align-items: baseline; gap: 10px; font-size: 52px; }
  .dj small { margin: 0; order: 2; }
  .pn-bar__in { grid-template-columns: 1fr; }
  .pn, .pn:first-child, .pn:last-child, .pn--n, .pn--cat { border-left: 0; padding: 16px 0; min-height: 0; text-align: left; align-items: flex-start; border-top: 2px solid var(--noir); }
  .pn:first-child { border-top: 0; }
  .pn--vide { display: none; }
  .pn-bar__in .pn--cat { order: 3; }
  .pn-bar__in .pn--n { order: 2; }
  .pn-bar__in .pn--p { order: 1; }
}

.sg { text-transform: none; }
.mods--2, .mods--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.mods--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.meta dd { font-size: 16px; }
@media (max-width: 960px) { .mods--2, .mods--3, .mods--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); } }

/* ---------- tarifs ---------- */
.note--tva { font-size: 13px; color: #444; }
.sous { display: block; margin-top: 4px; font-size: 13px; font-weight: 500; color: #333; }
.carte__duree { font-size: 15px; }
.tarifs { background: var(--papier); border-top: var(--filet) solid var(--noir); padding-block: clamp(52px, 8vw, 110px); }
.tarifs__grille { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(28px, 5vw, 80px); align-items: start; }
.tarifs h2 { font-size: clamp(40px, 6vw, 84px); }
.tarifs__cle { margin-top: 22px; font-size: clamp(20px, 2.2vw, 26px); line-height: 1.2; }
.tarifs__cle b { display: block; font-family: var(--ff-titre); font-weight: 900; font-size: clamp(56px, 8vw, 112px); line-height: 0.95; letter-spacing: -0.05em; color: var(--carmin); }
.tarifs__pts { margin-top: 18px; display: grid; gap: 8px; }
.tarifs__pts li { padding-left: 22px; position: relative; }
.tarifs__pts li::before { content: ""; position: absolute; left: 0; top: 0.6em; width: 10px; height: 10px; background: var(--noir); }
.tarifs__liste { border-top: var(--filet) solid var(--noir); }
.tarifs__liste li { display: grid; grid-template-columns: 4.2rem minmax(0, 1fr) 7.5rem 6.5rem; gap: 12px; align-items: baseline; padding: 14px 0; border-bottom: 2px solid var(--noir); }
.tr__code { font-family: var(--ff-titre); font-weight: 900; color: var(--carmin); }
.tr__titre { font-family: var(--ff-titre); font-weight: 800; font-size: 20px; letter-spacing: -0.015em; text-decoration: none; }
.tr__titre:hover { text-decoration: underline; text-decoration-color: var(--orange); text-decoration-thickness: 3px; text-underline-offset: 4px; }
.tr__duree { font-size: 15px; color: #333; }
.tr__prix { font-family: var(--ff-titre); font-weight: 900; font-size: 20px; text-align: right; }
.par__prix { display: block; font-family: var(--ff-titre); font-weight: 900; font-size: 22px; color: var(--carmin); margin-top: 4px; }
.bloc--tarif { background: var(--papier-2); }
.prix { font-family: var(--ff-titre); }
.prix b { font-weight: 900; font-size: clamp(56px, 9vw, 120px); line-height: 0.95; letter-spacing: -0.05em; color: var(--carmin); }
.prix span { font-size: clamp(20px, 2.4vw, 30px); font-weight: 800; letter-spacing: -0.02em; margin-left: 8px; }
.prix__calc { margin-top: 12px; font-weight: 600; }

/* ---------- mega-menu Formations ---------- */
.mega__btn::after { content: ""; display: inline-block; width: 7px; height: 7px; margin: 0 0 3px 8px; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); transition: transform .15s; }
.mega.ouvert .mega__btn::after { transform: rotate(-135deg); margin-bottom: -2px; }
.menu a.mega__btn.is-current, .menu a.mega__btn[aria-expanded="true"] { background-size: 100% 3px; }
.mega__panel { position: absolute; left: 0; right: 0; top: 100%; background: var(--papier); border-bottom: var(--filet) solid var(--noir); box-shadow: 0 8px 0 var(--noir); }
.js .mega__panel { display: none; }
.js .mega.ouvert .mega__panel { display: block; }
.mega__in { padding-block: 26px 22px; }
.mega__cols { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 3vw, 44px); }
.mega__col h3 { display: flex; align-items: center; gap: 12px; font-size: 30px; padding-bottom: 12px; border-bottom: var(--filet) solid var(--noir); }
.mega__col h3 .sh { width: 22px; height: 22px; }
.menu .mega__panel h3 a:not(.btn) { font-size: inherit; font-weight: inherit; padding: 0; background: none; text-decoration: none; border-bottom: 0; }
.menu .mega__panel h3 a:not(.btn):hover { text-decoration: underline; text-decoration-color: var(--orange); text-decoration-thickness: 3px; text-underline-offset: 4px; }
.mega__col ul { margin: 0; }
.menu .mega__panel li a:not(.btn) { display: grid; grid-template-columns: 3.6rem minmax(0, 1fr) auto; gap: 10px; align-items: baseline; padding: 11px 6px; font-size: 15px; font-weight: 500; background: none; border-bottom: 2px solid var(--noir); }
.menu .mega__panel li a:not(.btn):hover, .menu .mega__panel li a:not(.btn):focus-visible { background: var(--papier-2); }
.mega__col li b { font-family: var(--ff-titre); font-weight: 900; color: var(--carmin); }
.mega__col li span { font-weight: 600; }
.mega__col li small { font-size: 12px; color: #444; white-space: nowrap; }
.mega__pied { margin-top: 20px; display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end; gap: 14px 28px; }
.menu .mega__pied a.lien { font-size: 15px; font-weight: 600; padding: 4px 0 2px; background: linear-gradient(var(--orange), var(--orange)) 0 100% / 100% 3px no-repeat; }
.menu .mega__pied a.lien:hover { background-size: 100% 100%; }

@media (max-width: 960px) {
  .tarifs__grille { grid-template-columns: 1fr; }
}
@media (max-width: 1180px) {
  .menu { max-height: calc(100svh - var(--haut)); overflow-y: auto; }
  .mega__btn { display: flex; align-items: center; justify-content: space-between; }
  .menu a.mega__btn { padding: 16px 0; font-size: 18px; border-bottom: 2px solid var(--noir); background: none; }
  .mega__btn::after { width: 9px; height: 9px; }
  .mega__panel { position: static; box-shadow: none; border-bottom: 0; background: transparent; }
  .mega__in { padding: 6px 0 0; }
  .mega__cols { grid-template-columns: 1fr; gap: 18px; }
  .mega__col h3 { font-size: 26px; padding-bottom: 8px; }
  .menu .mega__panel li a:not(.btn) { padding: 12px 4px; grid-template-columns: 3.4rem minmax(0, 1fr); font-size: 16px; }
  .mega__col li small { grid-column: 2; }
  .mega__pied { flex-direction: column; align-items: flex-start; margin-top: 14px; }
  .mega__pied .btn { width: 100%; margin-top: 6px; }
  .menu a.mega__btn.is-current { background: none; }
}
@media (max-width: 640px) {
  .tarifs__liste li { grid-template-columns: 3.6rem minmax(0, 1fr) auto; }
  .tr__duree { grid-column: 2; grid-row: 2; }
  .tr__prix { grid-row: 1 / span 2; grid-column: 3; align-self: center; }
}
