/*!
 * École du Soin — styles du thème (refonte 2026).
 * Fidèle aux maquettes du handoff : angles droits partout (sauf avatars),
 * pas de dégradés, pas d'ombres (sauf barre mobile), mobile-first 3 paliers.
 */

/* ------------------------------------------------------------------ */
/* Polices — Libre Franklin auto-hébergée (latin)                      */
/* ------------------------------------------------------------------ */
@font-face { font-family: 'Libre Franklin'; font-style: normal; font-weight: 400; font-display: swap; src: url('../fonts/libre-franklin/libre-franklin-400.woff2') format('woff2'); }
@font-face { font-family: 'Libre Franklin'; font-style: normal; font-weight: 500; font-display: swap; src: url('../fonts/libre-franklin/libre-franklin-500.woff2') format('woff2'); }
@font-face { font-family: 'Libre Franklin'; font-style: normal; font-weight: 600; font-display: swap; src: url('../fonts/libre-franklin/libre-franklin-600.woff2') format('woff2'); }
@font-face { font-family: 'Libre Franklin'; font-style: normal; font-weight: 700; font-display: swap; src: url('../fonts/libre-franklin/libre-franklin-700.woff2') format('woff2'); }
@font-face { font-family: 'Libre Franklin'; font-style: normal; font-weight: 800; font-display: swap; src: url('../fonts/libre-franklin/libre-franklin-800.woff2') format('woff2'); }

/* ------------------------------------------------------------------ */
/* Design tokens                                                       */
/* ------------------------------------------------------------------ */
:root {
	--c-primary: #11B7EC;
	--c-primary-hover: #0a9fce;
	/* #302B27 : second ton officiel du guide de marque (pas de bleu marine
	   dans la palette). Remplace l'ancien navy #0C4A63 partout où cette
	   variable est utilisée (titres, boutons outline, badges...). */
	--c-navy: #302B27;
	--c-footer: #08394c;
	--c-footer-text: #c9dde6;
	--c-footer-text-2: #e6f2f7;
	--c-sky-soft: #eaf7fc;
	--c-sky-cell: #f4fbfe;
	--c-grey-bg: #f4f4f7;
	--c-border: #e2e2e6;
	--c-border-light: #cfd9de;
	--c-text-strong: #1f1f27;
	--c-text-body: #33333b;
	--c-text-body-2: #41414a;
	--c-text-muted: #5a5a62;
	--c-text-muted-2: #6b6b72;
	--font-sans: 'Libre Franklin', system-ui, sans-serif;
}

/* ------------------------------------------------------------------ */
/* Base                                                                */
/* ------------------------------------------------------------------ */
*, *::before, *::after { box-sizing: border-box; }
body {
	margin: 0;
	background: #fff;
	color: var(--c-text-strong);
	font-family: var(--font-sans);
	font-size: 16px;
	line-height: 1.6;
	-webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; }
a { color: var(--c-navy); text-decoration: none; }
h1, h2, h3, h4 { color: var(--c-navy); font-weight: 800; letter-spacing: -0.01em; }
button { font-family: inherit; }

.screen-reader-text {
	clip: rect(1px, 1px, 1px, 1px);
	clip-path: inset(50%);
	height: 1px; width: 1px;
	overflow: hidden;
	position: absolute !important;
	word-wrap: normal !important;
}
.skip-link {
	left: -9999px;
	position: absolute;
	top: 0;
	background: var(--c-navy);
	color: #fff;
	padding: 10px 16px;
	z-index: 100;
}
.skip-link:focus { left: 0; }

/* ------------------------------------------------------------------ */
/* Layout                                                              */
/* ------------------------------------------------------------------ */
.pagewrap { max-width: 1000px; margin: 0 auto; padding-left: 32px; padding-right: 32px; }
.pagewrap--flush { padding-left: 0; padding-right: 0; }
.prose { max-width: 720px; margin: 0 auto; }
/* Colonne de texte déjà placée dans un pagewrap : pas de retrait supplémentaire. */
.prose--flush { padding-left: 0; padding-right: 0; }

.grid-2 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
/* Variante centrée, colonnes qui s'adaptent au nombre réel de cartes : évite
   une case vide quand un contenu n'a que 2 entrées sur les 3 prévues. */
.grid-3--adaptive { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); max-width: 900px; margin: 0 auto; justify-content: center; }
.grid-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }
.grid-5 { display: grid; grid-template-columns: repeat(5, 1fr); gap: 14px; }
.grid--gap-sm { gap: 9px; }
.grid--gap-md { gap: 16px; }
.grid--gap-lg { gap: 22px; }
.grid--gap-xl { gap: 24px; }

/* ------------------------------------------------------------------ */
/* Boutons — angles droits partout                                     */
/* ------------------------------------------------------------------ */
.btn {
	display: inline-block;
	font-weight: 700;
	font-size: 14.5px;
	padding: 14px 26px;
	border: 0;
	border-radius: 0;
	cursor: pointer;
	text-align: center;
	letter-spacing: .02em;
	transition: background .15s, color .15s, border-color .15s;
}
.btn--primary { background: var(--c-primary); color: #fff; }
.btn--primary:hover { background: var(--c-primary-hover); color: #fff; }
.btn--outline { background: #fff; color: var(--c-navy); border: 1.5px solid var(--c-navy); padding: calc(14px - 1.5px) calc(26px - 1.5px); }
.btn--outline:hover { background: var(--c-grey-bg); color: var(--c-navy); }
.btn--white { background: #fff; color: var(--c-navy); }
.btn--white:hover { background: var(--c-grey-bg); }
.btn--lg { padding: 15px 28px; font-size: 15px; }
.btn--xl { padding: 15px 26px; font-size: 15.5px; }
.btn--block { display: block; width: 100%; }
.cta-p { background: var(--c-primary); color: #fff; }
.cta-p:hover { background: var(--c-primary-hover); color: #fff; }

/* ------------------------------------------------------------------ */
/* Kickers, badges, chips                                              */
/* ------------------------------------------------------------------ */
.kicker {
	font-size: 12px;
	font-weight: 700;
	color: var(--c-navy);
	text-transform: uppercase;
	letter-spacing: .09em;
	border-left: 3px solid var(--c-primary);
	padding-left: 10px;
	margin-bottom: 16px;
}
.kicker--plain { border-left: 0; padding-left: 0; font-size: 13px; letter-spacing: .1em; margin: 0 0 6px; }
.kicker--sm { font-size: 11px; margin-bottom: 12px; }
.section-lead {
	margin: 0 0 30px;
	font-size: 23px;
	line-height: 1.45;
	font-weight: 600;
	color: var(--c-text-strong);
	max-width: 640px;
}
.badge {
	display: inline-block;
	font-size: 11px;
	font-weight: 700;
	color: #fff;
	background: var(--c-primary);
	padding: 4px 9px;
	letter-spacing: .04em;
	text-transform: uppercase;
}
.badge--outline { color: var(--c-navy); background: transparent; border: 1px solid var(--c-border-light); }
/* Session pas encore ouverte : même badge, teinte sobre (DEAES, IEPE). */
.badge--soon { background: var(--c-text-muted-2); }
.badge--cat { padding: 4px 10px; }
.chip-list { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 36px; }
.chip-list--tight { gap: 7px; margin-bottom: 14px; }
.chip-list--tight .chip { font-size: 12px; padding: 6px 11px; }
.chip {
	display: inline-block;
	font-size: 13px;
	font-weight: 600;
	color: var(--c-navy);
	background: var(--c-grey-bg);
	border: 1px solid var(--c-border);
	padding: 9px 15px;
}
.check-pill {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	font-size: 13.5px;
	font-weight: 700;
	color: var(--c-navy);
	background: var(--c-sky-soft);
	padding: 9px 14px;
}
.check-pill .tick { color: var(--c-primary); }
.arrow-link { font-size: 13.5px; font-weight: 700; color: var(--c-navy); }
.arrow-link:hover { color: var(--c-primary-hover); }
.arrow-link--sm { font-size: 14px; }

/* ------------------------------------------------------------------ */
/* Topbar                                                              */
/* ------------------------------------------------------------------ */
/* Fond cyan de la marque, texte blanc (demande explicite malgré le contraste
   RGAA/WCAG insuffisant à ≈2,3:1, en dessous du minimum 4,5:1). */
.topbar { background: var(--c-primary); color: #fff; font-size: 12.5px; font-weight: 500; }
.topbar .pagewrap {
	padding-top: 8px;
	padding-bottom: 8px;
	display: flex;
	justify-content: space-between;
	align-items: center;
}
.topbar__baseline { letter-spacing: .02em; }
/* Campus cliquables dans la topbar : soulignés au survol. */
.tb-cities a { color: #fff; text-decoration: none; }
.tb-cities a:hover { color: #fff; text-decoration: underline; text-underline-offset: 2px; }
.topbar__right { display: flex; gap: 20px; }

/* ------------------------------------------------------------------ */
/* Header + navigation                                                 */
/* ------------------------------------------------------------------ */
.site-header {
	background: #fff;
	border-bottom: 1px solid var(--c-border);
	position: sticky;
	top: 0;
	z-index: 20;
}
.site-header .pagewrap {
	padding-top: 16px;
	padding-bottom: 16px;
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	min-height: 43px;
}
.site-header__brand { display: flex; align-items: center; gap: 15px; }
.site-header__brand img { height: 60px; width: auto; display: block; }
/* Landing pages de campagne : header réduit au logo, centré faute de nav. */
.site-header--landing .pagewrap { justify-content: center; }
.site-nav {
	display: flex;
	align-items: center;
	gap: 26px;
	font-size: 14px;
	font-weight: 600;
	color: #2a2a30;
}
.site-nav .nav-link { color: #2a2a30; }
.site-nav .nav-link:hover { color: var(--c-navy); }
.site-nav .nav-link.is-active {
	color: var(--c-navy);
	border-bottom: 2px solid var(--c-primary);
	padding-bottom: 3px;
}
.site-nav .nav-btn-outline {
	border: 1.5px solid var(--c-navy);
	color: var(--c-navy);
	padding: 9px 16px;
	font-weight: 700;
	font-size: 13px;
	letter-spacing: .02em;
}
.site-nav .nav-btn-outline:hover { background: var(--c-grey-bg); }
.site-nav .nav-btn-outline.is-active { background: var(--c-navy); color: #fff; }
.site-nav .nav-cta {
	background: var(--c-primary);
	color: #fff;
	padding: 11px 20px;
	font-weight: 700;
	font-size: 13.5px;
	letter-spacing: .02em;
}
.site-nav .nav-cta:hover { background: var(--c-primary-hover); }
.burger { display: none; }
#mnav { display: none; }
/* Campus : visibles uniquement dans le panneau mobile (la topbar les porte en desktop). */
.site-nav__campus { display: none; }

/* ------------------------------------------------------------------ */
/* Barre mobile fixe (≤900px)                                          */
/* ------------------------------------------------------------------ */
.mobilebar { display: none; }

/* ------------------------------------------------------------------ */
/* Fil d'ariane                                                        */
/* ------------------------------------------------------------------ */
.breadcrumb { background: var(--c-grey-bg); border-bottom: 1px solid var(--c-border); }
.breadcrumb nav { padding-top: 11px; padding-bottom: 11px; font-size: 12.5px; color: var(--c-text-muted-2); }
.breadcrumb a { color: var(--c-text-muted-2); }
.breadcrumb a:hover { color: var(--c-navy); }
.breadcrumb__sep { opacity: .5; }
.breadcrumb__current { color: var(--c-navy); font-weight: 600; }

/* ------------------------------------------------------------------ */
/* Héros                                                               */
/* ------------------------------------------------------------------ */
.hero { background: var(--c-grey-bg); border-bottom: 1px solid var(--c-border); }
.hero__grid {
	display: grid;
	grid-template-columns: 1fr .82fr;
	gap: 44px;
	padding-top: 48px;
	padding-bottom: 48px;
	align-items: center;
}
/* Quand ce hero suit un fil d'ariane (fiches formation, campus, offre...),
   48px de top en plus des 11px du fil d'ariane faisait un écart trop large
   avant les badges. 24px retrouve le rythme interne du hero (24px entre le
   texte et le CTA un peu plus bas). Ne touche pas les pages sans fil
   d'ariane (les landing pages de campagne, par exemple).
   Sélecteur « ~ » et non « + » : ecole_breadcrumb() insère toujours son
   script JSON-LD (schema BreadcrumbList) juste après la div .breadcrumb,
   donc main n'est jamais son frère immédiat — un « + » ne matchait donc
   jamais nulle part sur le site. */
.breadcrumb ~ main .hero__grid { padding-top: 24px; }
.hero__grid--home { grid-template-columns: 1.05fr .95fr; gap: 0; padding: 0; align-items: stretch; }
.hero__content--home { padding: 60px 40px 60px 32px; display: flex; flex-direction: column; justify-content: center; }
.hero__content--home .kicker { align-self: flex-start; margin-bottom: 20px; }
.hero h1 { margin: 0 0 16px; font-size: 38px; line-height: 1.1; font-weight: 800; color: var(--c-navy); letter-spacing: -.02em; }
.hero--home h1 { margin: 0 0 18px; font-size: 46px; line-height: 1.07; }
.hero__lead { margin: 0 0 24px; font-size: 16.5px; line-height: 1.6; color: var(--c-text-body-2); }
.hero--home .hero__lead { margin: 0 0 30px; font-size: 18px; max-width: 460px; }
.hero__ctas { display: flex; gap: 14px; flex-wrap: wrap; }
.hero__badges { display: flex; gap: 8px; margin-bottom: 16px; }
.hero__partner { display: flex; align-items: center; gap: 10px; margin: 14px 0; }
.hero__partner span { font-size: 12px; font-weight: 600; color: var(--c-text-muted-2); text-transform: uppercase; letter-spacing: .04em; }
.hero__partner img { height: 34px; width: auto; display: block; }
.hero__pills { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
.hero__note { margin: 14px 0 0; font-size: 13px; color: var(--c-text-muted-2); }
.hero__image { min-height: 300px; background-position: center; background-size: cover; }
.hero__image--tall { min-height: 440px; }
.hero__image--bordered { border: 1px solid var(--c-border); }

/* Image de couverture : balise img réelle, en remplissage de son conteneur. */
.hero__image, .artimg, .card__img--cover, .jcard__img, .frow__img, .campus-card__img, .media-cover {
	position: relative;
	overflow: hidden;
	background-color: var(--c-grey-bg);
}
.cover-img {
	position: absolute;
	inset: 0;
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.hero--simple .pagewrap { padding-top: 48px; padding-bottom: 40px; }
.hero--simple h1 { margin: 0 0 12px; font-size: 40px; line-height: 1.08; max-width: 700px; }
.hero--simple .hero__lead { margin: 0; font-size: 17px; line-height: 1.55; max-width: 640px; }

/* ------------------------------------------------------------------ */
/* Bandeau stats 4 colonnes séparées par bordures                      */
/* ------------------------------------------------------------------ */
.statsband { background: #fff; border-bottom: 1px solid var(--c-border); }
.statsband__grid { display: grid; grid-template-columns: repeat(4, 1fr); padding-left: 0; padding-right: 0; }
.statsband__grid--3 { grid-template-columns: repeat(3, 1fr); }
.statsband--accent .statsband__cell { padding-top: 28px; padding-bottom: 28px; }
.statsband--accent .statsband__value { font-size: 34px; color: var(--c-primary); line-height: 1; }
.statsband--accent .statsband__label { font-size: 13.5px; margin-top: 6px; line-height: 1.5; }
.statsband__cell { padding: 26px 20px; border-right: 1px solid var(--c-border); }
.statsband__cell:first-child { padding-left: 32px; }
.statsband__cell:last-child { border-right: 0; }
/*
 * La taille suit la largeur disponible : « Diplôme reconnu » tient sur une
 * ligne jusqu'au palier tablette, sans laisser le chiffre écrasé sur grand écran.
 */
.statsband__value {
	/*
	 * 24 px : la plus grande taille où « Diplôme reconnu » tient sur une ligne
	 * dans une cellule de 209 px (mesuré). La largeur de cellule ne dépendant
	 * pas de la fenêtre au-delà de 1000 px, une taille en vw ne servirait à rien.
	 */
	font-size: 24px;
	font-weight: 800;
	color: var(--c-navy);
	line-height: 1.15;
	letter-spacing: -.01em;
}
.statsband__label { font-size: 13px; line-height: 1.35; color: var(--c-text-muted-2); font-weight: 500; margin-top: 2px; }
.statsband--info .statsband__cell { padding-top: 24px; padding-bottom: 24px; }
.statsband--info .statsband__key {
	font-size: 11px;
	color: var(--c-text-muted-2);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: .06em;
	margin-bottom: 4px;
}
.statsband--info .statsband__value { font-size: 19px; }

/* ------------------------------------------------------------------ */
/* Cartes & blocs                                                      */
/* ------------------------------------------------------------------ */
.card { display: flex; flex-direction: column; border: 1px solid var(--c-border); background: #fff; transition: border-color .15s; color: inherit; }
.card:hover { border-color: var(--c-primary); }
.card__img { width: 100%; height: 170px; object-fit: cover; display: block; }
.card__img--cover { height: 150px; background-position: center; background-size: cover; position: relative; }
/* Tag d'ouverture centré sur l'image (sessions à venir). */
.card__soon {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
	background: var(--c-navy);
	color: #fff;
	font-size: 12.5px;
	font-weight: 800;
	letter-spacing: .08em;
	text-transform: uppercase;
	padding: 9px 16px;
	white-space: nowrap;
	max-width: calc(100% - 24px);
	overflow: hidden;
	text-overflow: ellipsis;
}
.card__body { padding: 20px 20px 22px; }
.card__meta { font-size: 11px; font-weight: 700; color: var(--c-text-muted-2); margin-bottom: 8px; }
.card__kicker { font-size: 11px; font-weight: 700; color: var(--c-navy); text-transform: uppercase; letter-spacing: .07em; }
.card__title { margin: 8px 0; font-size: 17px; font-weight: 700; color: var(--c-navy); line-height: 1.25; }
.card__excerpt { margin: 0 0 14px; font-size: 13.5px; line-height: 1.55; color: var(--c-text-muted); }
.card__link { font-size: 13.5px; font-weight: 700; color: var(--c-navy); }

.bloc {
	border: 1px solid var(--c-border);
	border-left: 3px solid var(--c-primary);
	padding: 20px 22px;
}
.bloc--soft { background: #f9fafb; padding: 18px 22px; }
.bloc__kicker {
	font-size: 11px;
	font-weight: 700;
	color: var(--c-navy);
	text-transform: uppercase;
	letter-spacing: .06em;
	margin-bottom: 6px;
}
.bloc__title { margin: 0 0 8px; font-size: 17px; font-weight: 700; color: var(--c-text-strong); }
.bloc__text { margin: 0; font-size: 14px; line-height: 1.6; color: var(--c-text-muted); }
.bloc__strong { font-size: 15px; font-weight: 600; color: var(--c-text-strong); line-height: 1.55; }
.bloc__note { margin-top: 8px; font-size: 13.5px; color: var(--c-text-muted); }
.bloc-list { display: flex; flex-direction: column; gap: 14px; }

.step-card {
	display: block;
	border: 1px solid var(--c-border);
	border-top: 3px solid var(--c-primary);
	padding: 26px 24px;
	color: inherit;
	transition: border-color .15s, background .15s;
}
/* Les étapes de l'accueil mènent à la page Postuler : même retour visuel que les cartes. */
a.step-card:hover { border-color: var(--c-primary); background: var(--c-grey-bg); }
/* Le numéro et le titre sont sur la même ligne, calés sur leur base commune. */
.step-card__head { display: flex; align-items: baseline; gap: 12px; margin-bottom: 8px; }
.step-card__num { font-size: 26px; font-weight: 800; color: var(--c-primary); flex: none; line-height: 1.1; }
.step-card__head .step-card__title { margin-bottom: 0; }
.step-card__num--sm { font-size: 13px; margin-bottom: 4px; }
.step-card__title { font-size: 18px; font-weight: 800; color: var(--c-navy); margin-bottom: 6px; }
.step-card__text { margin: 0; font-size: 15px; line-height: 1.55; color: var(--c-text-muted); }
.step-card--sm { padding: 18px 20px; }
.step-card--sm .step-card__title { font-size: 14.5px; font-weight: 700; margin-bottom: 4px; }
.step-card--sm .step-card__text { font-size: 13px; line-height: 1.5; }

.value-grid { display: grid; grid-template-columns: repeat(4, 1fr); border-top: 2px solid var(--c-primary); }
.value-grid__cell { padding: 24px 22px 26px; border-right: 1px solid var(--c-border); }
.value-grid__cell:last-child { border-right: 0; }
/* Nombre de cartes variable (contenu saisi page par page) : la grille garde
   toujours des colonnes pleines plutôt que de laisser un vide à droite. */
.value-grid--adaptive { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); max-width: 800px; margin: 0 auto; }
.value-grid__title { font-weight: 700; font-size: 16px; color: var(--c-navy); margin-bottom: 8px; }
.value-grid__text { font-size: 13.5px; line-height: 1.55; color: var(--c-text-muted); }

.citylink {
	display: block;
	padding: 11px 15px;
	border: 1px solid var(--c-border);
	font-size: 13.5px;
	font-weight: 600;
	color: var(--c-navy);
	background: #fff;
	transition: border-color .15s, color .15s;
}
.citylink:hover { border-color: var(--c-primary); color: var(--c-primary-hover); }

.statgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; margin: 0 0 36px; }
.statgrid__cell { border: 1px solid var(--c-border); padding: 18px 20px; }
.statgrid__value { font-size: 28px; font-weight: 800; color: var(--c-navy); line-height: 1; }
.statgrid__label { font-size: 13px; color: var(--c-text-muted); margin-top: 4px; line-height: 1.4; }

.testimonial { display: grid; grid-template-columns: 120px 1fr; gap: 28px; align-items: center; }
.testimonial__avatar {
	width: 120px; height: 120px;
	border-radius: 50%;
	background-position: center;
	background-size: cover;
	background-color: var(--c-border);
	border: 3px solid var(--c-grey-bg);
}
.testimonial__quote { margin: 0 0 14px; font-size: 22px; line-height: 1.45; font-weight: 500; color: var(--c-text-strong); }
.testimonial__who { font-size: 13.5px; font-weight: 700; color: var(--c-navy); }
.testimonial__who span { font-weight: 500; color: var(--c-text-muted-2); }

.pressband__title {
	text-align: center;
	font-size: 11.5px;
	font-weight: 700;
	color: var(--c-text-muted-2);
	text-transform: uppercase;
	letter-spacing: .11em;
	margin-bottom: 22px;
}
.pressband__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; max-width: 820px; margin: 0 auto; }
.pressband__logo {
	background: #fff;
	border: 1px solid var(--c-border);
	min-height: 96px;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 16px 14px;
	color: inherit;
	transition: border-color .15s;
}
/*
 * Les logos fournis ont des proportions très différentes : caler la hauteur
 * laisserait les logos larges déborder, caler la largeur les rend tous
 * présents de la même façon dans leur cadre. La hauteur reste plafonnée pour
 * les logos presque carrés, et object-fit préserve les proportions.
 */
.pressband__logo img {
	display: block;
	width: 100%;
	height: 80px;
	/*
	 * Les logos fournis sont exportés dans un cadre 3:2 à fond blanc, le dessin
	 * occupant environ deux tiers de la largeur et un quart de la hauteur.
	 * « cover » rogne ces bandes blanches, invisibles sur une carte blanche mais
	 * qui écrasaient le logo. Le dessin étant centré dans son cadre, le rognage
	 * est symétrique et ne coupe rien.
	 */
	object-fit: cover;
	object-position: center;
}
a.pressband__logo:hover { border-color: var(--c-primary); }
/* Média dont le logo n'a pas encore été fourni : son nom tient la place. */
.pressband__name { font-size: 30px; font-weight: 800; letter-spacing: .08em; color: var(--c-navy); text-transform: uppercase; }
/* Quatre retombées : la grille s'élargit plutôt que d'étirer chaque carte. */
/* Quatre retombées : la grille occupe toute la largeur utile. */
.pressband__grid--4 { grid-template-columns: repeat(4, 1fr); max-width: none; gap: 16px; }

/* ------------------------------------------------------------------ */
/* Sidebar formation sticky                                            */
/* ------------------------------------------------------------------ */
.layout-sidebar {
	display: grid;
	grid-template-columns: 1fr 300px;
	gap: 48px;
	align-items: start;
	padding-top: 52px;
	padding-bottom: 60px;
}
.layout-sidebar--wide { grid-template-columns: 1fr 340px; }
.sidebar-card { position: sticky; top: 96px; border: 1px solid var(--c-border); background: #fff; }
.sidebar-card__head { background: var(--c-primary); color: #fff; padding: 18px 22px; }
.sidebar-card__head-kicker { font-size: 12px; font-weight: 600; opacity: .85; text-transform: uppercase; letter-spacing: .06em; }
.sidebar-card__head-title { font-size: 22px; font-weight: 800; margin-top: 2px; }
.sidebar-card__body { padding: 22px; }
.sidebar-card__row {
	display: flex;
	justify-content: space-between;
	padding: 9px 0;
	border-bottom: 1px solid #eee;
	font-size: 13.5px;
}
.sidebar-card__row:last-of-type { border-bottom: 0; }
.sidebar-card__row dt { color: var(--c-text-muted-2); }
.sidebar-card__row dd { margin: 0; font-weight: 700; color: var(--c-text-strong); text-align: right; }
.sidebar-card .btn { margin-top: 18px; width: 100%; }
.sidebar-card__note { text-align: center; font-size: 12px; color: var(--c-text-muted-2); margin-top: 10px; }

.side-box { border: 1px solid var(--c-border); padding: 22px; }
.side-box--grey { background: var(--c-grey-bg); }
.side-box__title { font-size: 14px; font-weight: 800; color: var(--c-navy); margin-bottom: 8px; }
.side-box__list { display: flex; flex-direction: column; gap: 9px; font-size: 13.5px; color: var(--c-text-body); line-height: 1.5; }
.side-box__link { display: block; font-size: 13.5px; font-weight: 700; color: var(--c-primary-hover); padding: 6px 0; }
.side-box__text { margin: 0 0 12px; font-size: 13.5px; color: var(--c-text-muted); line-height: 1.5; }

/* ------------------------------------------------------------------ */
/* Article (.prose)                                                    */
/* ------------------------------------------------------------------ */
.article-page { padding-top: 44px; }
.prose h1 { margin: 0 0 18px; font-size: 38px; line-height: 1.12; letter-spacing: -.02em; text-wrap: pretty; }
.prose h2 { margin: 44px 0 16px; font-size: 26px; letter-spacing: -.01em; line-height: 1.2; }
.prose h3 { margin: 32px 0 12px; font-size: 20px; color: var(--c-text-strong); }
.prose p { margin: 0 0 20px; font-size: 16.5px; line-height: 1.75; color: var(--c-text-body); }
.prose > p:first-of-type { font-size: 18px; line-height: 1.7; color: var(--c-text-strong); font-weight: 500; }
.prose ul, .prose ol { margin: 0 0 28px; padding-left: 22px; font-size: 16px; line-height: 1.75; color: var(--c-text-body); }
.prose a { color: var(--c-primary-hover); font-weight: 600; text-decoration: underline; text-underline-offset: 2px; }
.prose img { border: 1px solid var(--c-border); }
.prose blockquote { margin: 0 0 28px; padding: 18px 22px; border-left: 3px solid var(--c-primary); background: var(--c-grey-bg); font-style: normal; }

.article-meta { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; font-size: 12px; font-weight: 700; letter-spacing: .04em; }
.article-meta__date { color: var(--c-text-muted-2); }
.article-meta__dot { color: var(--c-border-light); }

.byline {
	display: flex;
	align-items: center;
	gap: 12px;
	margin-bottom: 26px;
	padding-bottom: 26px;
	border-bottom: 1px solid var(--c-border);
}
.byline__avatar { width: 40px; height: 40px; border-radius: 50%; background-position: center; background-size: cover; background-color: var(--c-border); flex: none; }
.byline__info { font-size: 13.5px; line-height: 1.4; }
.byline__name { font-weight: 700; color: var(--c-text-strong); }
.byline__role { color: var(--c-text-muted-2); }
.byline__back { margin-left: auto; font-size: 13px; font-weight: 700; color: var(--c-primary-hover); }

.artimg { height: 400px; background-position: center; background-size: cover; border: 1px solid var(--c-border); margin-bottom: 32px; }
.prose .wp-post-image, .prose figure img { width: 100%; object-fit: cover; }

.enbref { background: var(--c-sky-soft); border-left: 3px solid var(--c-primary); padding: 22px 26px; margin: 0 0 36px; }
.enbref__title { font-size: 12px; font-weight: 800; color: var(--c-navy); text-transform: uppercase; letter-spacing: .06em; margin-bottom: 12px; }
.enbref ul { margin: 0; padding-left: 20px; font-size: 14.5px; line-height: 1.7; color: var(--c-text-body); }

.tablewrap { overflow-x: auto; margin: 0 0 28px; }
.tablewrap table, .prose table { width: 100%; border-collapse: collapse; font-size: 14px; }
.tablewrap th, .prose th { text-align: left; background: var(--c-navy); color: #fff; padding: 12px 14px; font-weight: 700; }
.tablewrap th:last-child, .prose th:last-child { background: var(--c-primary); }
.tablewrap td, .prose td { padding: 12px 14px; border-bottom: 1px solid var(--c-border); color: var(--c-text-muted); }
.tablewrap td:first-child, .prose td:first-child { font-weight: 600; color: var(--c-text-strong); }
.tablewrap td:last-child, .prose td:last-child { background: var(--c-sky-cell); font-weight: 600; color: var(--c-text-body); }

.faq-list { display: flex; flex-direction: column; gap: 12px; }
.faq-item { border: 1px solid var(--c-border); border-left: 3px solid var(--c-primary); padding: 18px 22px; }
.faq-item h3 { margin: 0 0 6px; font-size: 16px; font-weight: 700; color: var(--c-text-strong); }
.faq-item p { margin: 0; font-size: 14.5px; line-height: 1.6; color: var(--c-text-muted); }

.authorbox {
	display: flex;
	gap: 16px;
	align-items: flex-start;
	background: var(--c-grey-bg);
	border: 1px solid var(--c-border);
	padding: 24px;
	margin-top: 36px;
}
.authorbox__avatar { width: 64px; height: 64px; flex: none; border-radius: 50%; background-position: center; background-size: cover; background-color: var(--c-border); }
.authorbox__kicker { font-size: 11px; font-weight: 700; color: var(--c-text-muted-2); text-transform: uppercase; letter-spacing: .06em; margin-bottom: 4px; }
.authorbox__name { font-size: 16px; font-weight: 800; color: var(--c-navy); margin-bottom: 4px; }
.authorbox__bio { margin: 0; font-size: 14px; line-height: 1.6; color: var(--c-text-muted); }

.inline-card { display: flex; gap: 0; border: 1px solid var(--c-border); background: #fff; margin: 0 0 36px; color: inherit; transition: border-color .15s; }
.inline-card:hover { border-color: var(--c-primary); }
.inline-card .thumb { width: 220px; flex: none; background-position: center; background-size: cover; background-color: var(--c-border); }
.inline-card__body { padding: 18px 20px; }
.inline-card__kicker { font-size: 11px; font-weight: 700; color: var(--c-text-muted-2); text-transform: uppercase; letter-spacing: .06em; margin-bottom: 6px; }
.inline-card__title { font-size: 16.5px; font-weight: 800; color: var(--c-navy); line-height: 1.3; margin-bottom: 8px; }
.inline-card__excerpt { margin: 0; font-size: 13.5px; line-height: 1.6; color: var(--c-text-muted); }

/* ------------------------------------------------------------------ */
/* Bandeaux CTA                                                        */
/* ------------------------------------------------------------------ */
.cta-band { background: var(--c-primary); color: #fff; }
.cta-band .pagewrap {
	padding-top: 44px;
	padding-bottom: 44px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	gap: 30px;
	flex-wrap: wrap;
}
.cta-band h2 { margin: 0 0 6px; font-size: 24px; font-weight: 800; color: #fff; }
.cta-band p { margin: 0; font-size: 15px; opacity: .85; }
.cta-band .btn { white-space: nowrap; }

.cta-duo { background: var(--c-footer); color: var(--c-footer-text-2); }
.cta-duo .pagewrap { padding-top: 44px; padding-bottom: 44px; display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.cta-duo__card {
	background: rgba(255, 255, 255, .06);
	border: 1px solid rgba(255, 255, 255, .15);
	padding: 24px;
	color: inherit;
	display: block;
}
.cta-duo__card:hover { border-color: rgba(255, 255, 255, .4); color: inherit; }
.cta-duo__title { font-size: 18px; font-weight: 800; color: #fff; margin-bottom: 6px; }
.cta-duo__text { margin: 0 0 12px; font-size: 14px; color: var(--c-footer-text); line-height: 1.5; }
.cta-duo__link { font-size: 13px; font-weight: 700; color: var(--c-primary); }

/* ------------------------------------------------------------------ */
/* Formulaires (page Postuler + restylage CF7)                         */
/* ------------------------------------------------------------------ */
.form-card { border: 1px solid var(--c-border); padding: 28px; }
.form-card__title { font-size: 18px; font-weight: 800; color: var(--c-navy); margin-bottom: 18px; }
.form-card__note { margin: 0; font-size: 14.5px; line-height: 1.6; color: var(--c-text-muted); }

/* Colonne de droite de la page Contact : coordonnées et raccourcis. */
.contact-card { border: 1px solid var(--c-border); padding: 20px 22px; margin-bottom: 16px; }
.contact-card--alt { background: var(--c-grey-bg); }
.contact-card__name { font-size: 16px; font-weight: 800; color: var(--c-navy); margin-bottom: 8px; line-height: 1.3; }
.contact-card__line { font-size: 14px; line-height: 1.6; color: var(--c-text-body-2); }
.contact-card__note { margin: 0 0 14px; font-size: 13.5px; line-height: 1.55; color: var(--c-text-muted); }
.contact-card .arrow-link { display: inline-block; margin-top: 12px; }
.form-note { font-size: 12px; color: var(--c-text-muted-2); text-align: center; margin-top: 14px; }
.postuler-layout { display: grid; grid-template-columns: 1.5fr 1fr; gap: 28px; align-items: start; padding-top: 36px; padding-bottom: 56px; }
.postuler-aside { display: flex; flex-direction: column; gap: 16px; }

/* CF7 : le formulaire existant hérite du design (angles droits, tokens). */
.wpcf7 form { display: flex; flex-direction: column; gap: 18px; }
.wpcf7 form > p { margin: 0; }
.wpcf7 form p br { display: none; }
.wpcf7 label, .wpcf7 form span.w-full { display: block; font-size: 13px; font-weight: 700; color: var(--c-navy); margin-bottom: 6px; }
.wpcf7 input[type="text"], .wpcf7 input[type="email"], .wpcf7 input[type="tel"], .wpcf7 select, .wpcf7 textarea {
	font-family: inherit;
	font-size: 15px;
	padding: 12px 14px;
	border: 1px solid var(--c-border-light);
	border-radius: 0;
	background: #fff;
	color: var(--c-text-strong);
	min-height: 44px;
	width: 100%;
	box-sizing: border-box;
}
.wpcf7 textarea { min-height: 110px; resize: vertical; }
.wpcf7 input:focus, .wpcf7 select:focus, .wpcf7 textarea:focus { outline: 2px solid var(--c-primary); outline-offset: -1px; }
.wpcf7-submit {
	background: var(--c-primary);
	color: #fff;
	border: 0;
	border-radius: 0;
	padding: 15px 26px;
	font-weight: 700;
	font-size: 15px;
	cursor: pointer;
	min-height: 48px;
	width: 100%;
}
.wpcf7-submit:hover { background: var(--c-primary-hover); }
.formsubmit { position: relative; }
.formsubmit .wpcf7-spinner { position: absolute; top: 22px; right: 0; }
.wpcf7-checkbox, .wpcf7-radio { display: flex; flex-wrap: wrap; gap: 8px; }
.wpcf7-list-item { margin: 0; }
.wpcf7-list-item label { cursor: pointer; margin-bottom: 0; }
.wpcf7-list-item input { position: absolute; opacity: 0; }
.wpcf7-list-item-label {
	display: inline-block;
	padding: 9px 15px;
	background: var(--c-grey-bg);
	border: 1px solid var(--c-border);
	color: var(--c-text-muted);
	font-size: 13.5px;
	font-weight: 600;
	transition: all .15s;
}
.wpcf7-list-item input:checked + .wpcf7-list-item-label,
.wpcf7-list-item input:focus-visible + .wpcf7-list-item-label { background: var(--c-sky-soft); border-color: var(--c-primary); color: var(--c-navy); }
.wpcf7-response-output { padding: 14px 18px; text-align: center; border: 1px solid var(--c-border) !important; margin: 0 !important; font-size: 14.5px; }
.wpcf7 form.sent .wpcf7-response-output { background: var(--c-sky-soft); border-left: 3px solid var(--c-primary) !important; color: var(--c-navy); font-weight: 600; }
.wpcf7-not-valid-tip { font-size: 12.5px; color: #b42318; margin-top: 4px; }

/* ------------------------------------------------------------------ */
/* Sections utilitaires                                                */
/* ------------------------------------------------------------------ */
.section { padding-top: 52px; padding-bottom: 52px; }
.section--tight { padding-top: 36px; padding-bottom: 8px; }
.section--grey { background: var(--c-grey-bg); border-top: 1px solid var(--c-border); border-bottom: 1px solid var(--c-border); }
.section--bordered { border-bottom: 1px solid var(--c-border); }
.section__head { display: flex; align-items: flex-end; justify-content: space-between; margin-bottom: 28px; gap: 16px; flex-wrap: wrap; }
.section__head h2 { margin: 0; font-size: 28px; font-weight: 800; letter-spacing: -.01em; }
.section-title { margin: 0 0 18px; font-size: 24px; font-weight: 800; color: var(--c-navy); letter-spacing: -.01em; }
.section-title--lg { font-size: 26px; }
.section-title--xl { font-size: 28px; }
.section-title--tight { margin-bottom: 12px; }
.section-title--center { text-align: center; }
.statsband__value--sm { font-size: 16px; line-height: 1.3; }

/*
 * Espacements de section : ces valeurs étaient recopiées en style en ligne dans
 * une trentaine de gabarits, donc impossibles à adapter par palier.
 */
.section--intro { padding-top: 52px; padding-bottom: 12px; }
.section--head { padding-top: 56px; padding-bottom: 8px; }
.section--body { padding-top: 56px; padding-bottom: 56px; }
.section--band { padding-top: 40px; padding-bottom: 40px; }
.section--last { padding-top: 52px; padding-bottom: 56px; }

/* Titre et chapô d'introduction de page. */
.page-title { margin: 0 0 18px; font-size: 40px; line-height: 1.12; letter-spacing: -.02em; max-width: 640px; }
.page-lead { margin: 0 0 6px; font-size: 17px; line-height: 1.65; color: var(--c-text-body-2); max-width: 640px; }
.section-desc { margin: 0 0 30px; font-size: 15px; line-height: 1.65; color: var(--c-text-body-2); max-width: 640px; }
.field-text { margin: 0 0 32px; font-size: 15px; line-height: 1.65; color: var(--c-text-body-2); }

/* Blocs photo autonomes (hors bandeau). */
.media-cover--wide { height: 320px; }
.media-cover--aside { height: 200px; border-bottom: 1px solid var(--c-border); }

/* ------------------------------------------------------------------ */
/* Footer                                                              */
/* ------------------------------------------------------------------ */
.site-footer { background: var(--c-footer); color: var(--c-footer-text); padding: 44px 0 36px; }
.site-footer__grid { display: grid; grid-template-columns: 1.4fr 1fr 1fr 1fr; gap: 30px; font-size: 13px; line-height: 1.7; }
.site-footer__brand { font-weight: 800; color: #fff; font-size: 16px; margin-bottom: 10px; }
.site-footer__baseline { margin: 0; opacity: .75; }
.site-footer__social { display: flex; gap: 10px; margin-top: 16px; }
.site-footer__social a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 34px;
	height: 34px;
	border-radius: 50%;
	background: rgba(255, 255, 255, .08);
	color: #fff;
	opacity: .85;
	transition: background .15s, opacity .15s;
}
.site-footer__social a:hover { background: rgba(255, 255, 255, .18); opacity: 1; }
.site-footer__social svg { width: 16px; height: 16px; display: block; }
.site-footer__coltitle { font-weight: 700; color: #fff; margin-bottom: 8px; }
.site-footer__links { opacity: .8; }
.site-footer__links a, .site-footer__links span { color: inherit; display: block; }
.site-footer__links a:hover { color: #fff; }
.site-footer__legal {
	margin-top: 30px;
	padding-top: 18px;
	border-top: 1px solid rgba(255, 255, 255, .12);
	display: flex;
	justify-content: space-between;
	font-size: 12px;
	opacity: .7;
}
.site-footer__legal a { color: inherit; }
.site-footer__legal a:hover { color: #fff; }

/* ------------------------------------------------------------------ */
/* Pagination / divers                                                 */
/* ------------------------------------------------------------------ */
.filter-btn {
	font-family: inherit;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .02em;
	color: var(--c-navy);
	background: #fff;
	border: 1px solid var(--c-border-light);
	padding: 12px 18px;
	cursor: pointer;
	transition: all .15s;
}
.filter-btn:hover { border-color: var(--c-primary); }
.filter-btn.is-active { background: var(--c-navy); border-color: var(--c-navy); color: #fff; }
.loadmore-wrap { text-align: center; margin-top: 34px; }

.error-404 .pagewrap { padding-top: 70px; padding-bottom: 80px; text-align: center; }
.error-404 h1 { font-size: 42px; }

/* ------------------------------------------------------------------ */
/* Page Formations : rangée formation (image / texte / flèche)         */
/* ------------------------------------------------------------------ */
.frow {
	display: grid;
	grid-template-columns: 280px 1fr auto;
	gap: 0;
	border: 1px solid var(--c-border);
	align-items: stretch;
	color: inherit;
	transition: border-color .15s;
}
.frow:hover { border-color: var(--c-primary); }
.frow__img { background-position: center; background-size: cover; min-height: 180px; position: relative; }
.frow__body { padding: 26px 30px; }
.frow__kicker { margin-bottom: 8px; }
.frow__badges { display: flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.frow__title { margin: 0 0 8px; font-size: 21px; font-weight: 800; color: var(--c-navy); letter-spacing: -.01em; }
.frow__text { margin: 0 0 14px; font-size: 14px; line-height: 1.55; color: var(--c-text-muted); max-width: 480px; }
.frow__meta { display: flex; gap: 24px; font-size: 12.5px; color: var(--c-text-muted-2); font-weight: 600; flex-wrap: wrap; }
.frow__cta {
	display: flex;
	align-items: center;
	padding: 0 26px;
	background: var(--c-grey-bg);
	font-weight: 700;
	color: var(--c-navy);
	font-size: 14px;
	white-space: nowrap;
}
.frow-list { display: flex; flex-direction: column; gap: 20px; }

/* Mini-cartes blanches (pédagogie, spécialisations)                   */
.mini-card { background: #fff; border: 1px solid var(--c-border); padding: 18px 20px; }
.mini-card__title { font-weight: 700; font-size: 15px; color: var(--c-navy); margin-bottom: 5px; }
.mini-card__text { font-size: 13px; line-height: 1.5; color: var(--c-text-muted); }
.mini-card--top { border-top: 3px solid var(--c-primary); }
.mini-card--top .mini-card__title { font-weight: 800; font-size: 16px; margin-bottom: 6px; }
.mini-card--top .mini-card__text { font-size: 12.5px; }

/* Transport (campus)                                                  */
.transport-row {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	border: 1px solid var(--c-border);
	border-left: 3px solid var(--c-primary);
	padding: 14px 18px;
}
.transport-row__mode { font-size: 12px; font-weight: 800; color: var(--c-navy); background: var(--c-sky-soft); padding: 3px 8px; white-space: nowrap; }
.transport-row__text { font-size: 14px; line-height: 1.55; color: var(--c-text-body-2); }

/* Cartes profil (Recruter)                                            */
.profile-card { border: 1px solid var(--c-border); background: #fff; }
.profile-card__head { background: var(--c-grey-bg); padding: 16px 20px; border-bottom: 1px solid var(--c-border); }
.profile-card__title { margin: 4px 0 0; font-size: 16.5px; font-weight: 800; color: var(--c-navy); }
.profile-card ul { margin: 0; padding: 18px 20px 22px 36px; font-size: 14px; line-height: 1.7; color: var(--c-text-body-2); }

/* Process sombre (Recruter)                                           */
.dark-process { background: var(--c-footer); color: var(--c-footer-text-2); }
.dark-process h2 { color: #fff; }
.dark-process__num { font-size: 44px; font-weight: 800; color: var(--c-primary); line-height: 1; margin-bottom: 12px; }
.dark-process h3 { margin: 0 0 8px; font-size: 18px; font-weight: 700; color: #fff; }
.dark-process p { margin: 0; font-size: 14px; line-height: 1.6; color: var(--c-footer-text); }

/* Cartes campus (À propos)                                            */
.campus-card { display: block; border: 1px solid var(--c-border); color: inherit; transition: border-color .15s; }
.campus-card:hover { border-color: var(--c-primary); }
.campus-card__img { height: 170px; background-position: center; background-size: cover; }
.campus-card__body { padding: 22px 24px; }
.campus-card__title { margin: 0 0 8px; font-size: 20px; font-weight: 800; color: var(--c-navy); letter-spacing: -.01em; }
.campus-card__addr { font-size: 14px; line-height: 1.6; color: var(--c-text-body-2); margin-bottom: 14px; }

/* Avis courts (À propos)                                              */
.review-card { border: 1px solid var(--c-border); padding: 24px; }
.review-card__quote { margin: 0 0 18px; font-size: 14.5px; line-height: 1.6; color: var(--c-text-strong); }
.review-card__who { display: flex; align-items: center; gap: 12px; }
.review-card__avatar { width: 44px; height: 44px; border-radius: 50%; background-position: center; background-size: cover; background-color: var(--c-border); flex: none; }
.review-card__name { font-weight: 700; color: var(--c-navy); font-size: 13px; }
.review-card__role { color: var(--c-text-muted-2); font-size: 13px; }

/* Partenaires (Actualités)                                            */
.partners { display: flex; flex-wrap: wrap; gap: 36px; align-items: center; justify-content: center; opacity: .85; }
.partners img { height: 48px; width: auto; filter: grayscale(1); }

/* Grand bandeau stats texte (À propos)                                */
.bigstats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 36px; }
.bigstats__value { font-size: 38px; font-weight: 800; color: var(--c-navy); line-height: 1; }
.bigstats p { margin: 10px 0 0; font-size: 14.5px; line-height: 1.6; color: var(--c-text-muted); }

/* Barre de filtres sticky (Actualités)                                */
.filterbar { background: #fff; border-bottom: 1px solid var(--c-border); position: sticky; top: 92px; z-index: 15; }
.filterbar .pagewrap { padding-top: 14px; padding-bottom: 14px; display: flex; gap: 10px; flex-wrap: wrap; }

/* Carte compacte (.crow) : villes d'un campus, débouchés, formations   */
.crow {
	display: block;
	border: 1px solid var(--c-border);
	background: #fff;
	padding: 20px;
	color: inherit;
	transition: border-color .15s;
}
.crow:hover { border-color: var(--c-primary); }
.crow__kicker {
	font-size: 11px;
	font-weight: 700;
	color: var(--c-text-muted-2);
	text-transform: uppercase;
	letter-spacing: .06em;
	margin-bottom: 8px;
}
.crow__title { font-weight: 800; font-size: 16px; color: var(--c-navy); margin-bottom: 12px; line-height: 1.3; }
.crow__link { font-size: 13px; font-weight: 700; color: var(--c-navy); }

/* Liste de formations (.flist) : lignes de largeur et hauteur égales   */
.flist { display: flex; flex-direction: column; gap: 8px; }
.flist__item {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
	min-height: 56px;
	padding: 12px 16px;
	background: var(--c-grey-bg);
	border: 1px solid var(--c-border);
	color: var(--c-navy);
	font-size: 15px;
	font-weight: 700;
	line-height: 1.35;
	transition: border-color .15s;
}
a.flist__item:hover { border-color: var(--c-primary); }
.flist__item--soon { color: var(--c-text-muted-2); }
.flist__title { min-width: 0; }
.flist__status, .flist__arrow { flex-shrink: 0; }
.flist__arrow { color: var(--c-primary); }

/* Carte métier (.jcard) : image, tags outline, titre, description      */
.jcard { display: flex; flex-direction: column; border: 1px solid var(--c-border); background: #fff; color: inherit; transition: border-color .15s; }
.jcard:hover { border-color: var(--c-primary); }
.jcard__img { height: 150px; background-position: center; background-size: cover; background-color: var(--c-grey-bg); }
.jcard__body { padding: 20px 20px 22px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.jcard__tags { display: flex; gap: 8px; flex-wrap: wrap; }
.jcard__tag {
	font-size: 10.5px;
	font-weight: 700;
	color: var(--c-navy);
	border: 1px solid var(--c-border-light);
	padding: 3px 8px;
	letter-spacing: .05em;
	text-transform: uppercase;
}
.jcard__title { margin: 0; font-size: 17px; font-weight: 800; color: var(--c-navy); line-height: 1.3; }
.jcard__text { margin: 0; font-size: 13.5px; line-height: 1.55; color: var(--c-text-muted); flex: 1; }
.jcard__link { font-size: 13px; font-weight: 700; color: var(--c-navy); }
.jcard--row { flex-direction: row; }
.jcard--row .jcard__img { width: 180px; flex: none; height: auto; min-height: 170px; }
.jcard--row .jcard__body { padding: 22px 24px; }

/* Intro deux colonnes (Métiers : « À l'horizon 2030 »)                 */
.intro-split { display: grid; grid-template-columns: 1fr 1.4fr; gap: 48px; align-items: start; }
.intro-split h2 { margin: 0; font-size: 26px; letter-spacing: -.01em; }
.intro-split p { margin: 0 0 12px; font-size: 15px; line-height: 1.65; color: var(--c-text-body-2); }
.intro-split p:last-child { margin-bottom: 0; }

/* Région (formation mère : blocs IDF / PACA)                          */
.region-head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.region-head .badge { background: var(--c-navy); }
.region-head a, .region-head__name { font-size: 17px; font-weight: 800; color: var(--c-navy); }
.region-link { display: inline-block; margin-top: 14px; font-size: 13px; font-weight: 700; color: var(--c-primary-hover); }

/* ------------------------------------------------------------------ */
/* Responsive — palier tablette large (≤1120px)                        */
/* ------------------------------------------------------------------ */
@media (max-width: 1120px) and (min-width: 901px) {
	.pagewrap { padding-left: 24px; padding-right: 24px; }
	.site-nav { gap: 16px; font-size: 13px; }
	.site-nav .nav-cta { padding: 10px 14px; font-size: 12.5px; }
	.site-header__brand img { height: 48px; }
}

/* ------------------------------------------------------------------ */
/* Responsive — palier mobile/tablette (≤900px)                        */
/* ------------------------------------------------------------------ */
@media (max-width: 900px) {
	.pagewrap { padding-left: 18px; padding-right: 18px; }
	body { padding-bottom: 88px; }

	.tb-cities { display: none; }
	/* Barre du haut sur une seule ligne en mobile, comme en desktop : accroche
	   à gauche, mention financement à droite. Texte à 12px, pas 11 : en
	   dessous de 12px la lisibilité devient limite pour du texte à lire. */
	.topbar .pagewrap { font-size: 12px; }
	/* Gardée partout en desktop (seul accès direct aux pages de campus hors
	   footer), mais masquée sur les pages internes en mobile où elle n'a que
	   ce rôle secondaire et alourdit le haut d'écran pour rien. */
	.topbar--inner { display: none; }

	.site-header .pagewrap { flex-wrap: wrap; }
	/* Le logo doit rester au moins aussi petit qu'au palier tablette (48px) :
	   sinon l'écran le plus étroit porte le header le plus haut, l'inverse de
	   ce qu'on veut. */
	.site-header__brand img { height: 44px; }
	.site-nav { display: none; }
	#mnav:checked ~ .site-nav {
		display: flex;
		flex-direction: column;
		position: fixed;
		left: 0; right: 0; bottom: 80px;
		z-index: 59;
		background: #fff;
		border-top: 1px solid var(--c-border);
		align-items: flex-start;
		gap: 20px;
		padding: 22px 20px;
		max-height: 68vh;
		overflow: auto;
		box-shadow: 0 -8px 24px rgba(0, 0, 0, .14);
	}
	#mnav:checked ~ .site-nav .nav-cta { display: none; }
	/* Cible tactile : le texte seul ne faisait que 22 px de haut. */
	#mnav:checked ~ .site-nav { gap: 4px; }
	#mnav:checked ~ .site-nav .nav-link,
	#mnav:checked ~ .site-nav .site-nav__campus a,
	#mnav:checked ~ .site-nav .site-nav__campus span:not(.site-nav__campus-title) {
		display: block;
		width: 100%;
		padding: 12px 0;
		font-size: 15px;
	}
	#mnav:checked ~ .site-nav .site-nav__campus {
		display: flex;
		flex-direction: column;
		gap: 0;
		width: 100%;
		margin-top: 10px;
		padding-top: 12px;
		border-top: 1px solid var(--c-border);
	}
	.site-nav__campus-title {
		font-size: 11px;
		font-weight: 700;
		color: var(--c-text-muted-2);
		text-transform: uppercase;
		letter-spacing: .08em;
	}
	.site-nav__campus a { color: var(--c-navy); }
	.site-nav .nav-cta { width: 100%; text-align: center; padding-top: 13px; padding-bottom: 13px; }

	.mobilebar {
		display: flex;
		position: fixed;
		left: 0; right: 0; bottom: 0;
		z-index: 60;
		background: #fff;
		border-top: 1px solid var(--c-border);
		padding: 10px 14px;
		gap: 12px;
		align-items: center;
		box-shadow: 0 -4px 18px rgba(0, 0, 0, .1);
	}
	.mobilebar .cta-p {
		flex: 1;
		text-align: center;
		background: var(--c-primary);
		color: #fff;
		padding: 14px;
		font-weight: 700;
		font-size: 14.5px;
	}
	.mobact {
		display: flex;
		flex-direction: column;
		align-items: center;
		justify-content: center;
		gap: 2px;
		min-width: 60px;
		padding: 6px 10px;
		border: 1.5px solid var(--c-navy);
		color: var(--c-navy);
		font-weight: 700;
		font-size: 11px;
		cursor: pointer;
		text-decoration: none;
	}
	.mobact svg { width: 22px; height: 22px; display: block; }
	.mobact .lines {
		display: block;
		width: 22px; height: 2px;
		background: var(--c-navy);
		box-shadow: 0 -6px 0 var(--c-navy), 0 6px 0 var(--c-navy);
		margin: 6px 0;
	}
	h1 { font-size: 30px; line-height: 1.15; }
	.hero--home h1, .hero--simple h1, .page-title { font-size: 30px; line-height: 1.15; }
	/* Un sélecteur de classe l'emporte sur « h2 » : sans ces deux lignes, les
	   titres de section gardaient leur taille de bureau sur téléphone. */
	.section__head h2 { font-size: 24px; }
	.section-title, .section-title--lg, .section-title--xl { font-size: 22px; }
	.page-title { max-width: none; }

	.grid-3, .grid-4, .grid-5, .statsband__grid, .value-grid, .pressband__grid, .statgrid, .site-footer__grid { grid-template-columns: repeat(2, 1fr); }
	.statsband__cell:nth-child(2n), .value-grid__cell:nth-child(2n) { border-right: 0; }
	.statsband__cell, .value-grid__cell { border-bottom: 1px solid var(--c-border); }
	.statsband__cell:first-child { padding-left: 20px; }
	/* Nombre impair de cellules : la dernière, seule sur sa ligne, garderait un filet. */
	.statsband__cell:last-child, .value-grid__cell:last-child { border-right: 0; }

	.grid-2, .hero__grid, .hero__grid--home, .layout-sidebar, .layout-sidebar--wide, .postuler-layout, .cta-duo .pagewrap, .frow, .bigstats, .intro-split { grid-template-columns: 1fr; }
	.frow__cta { padding: 16px 26px; }
	/* L'en-tête reste fixé en haut à tous les paliers : la barre de filtres se
	   cale dessous, sinon elle passait dessous et devenait incliquable. */
	.filterbar { top: 92px; }
	.hero__grid { gap: 24px; }
	/* Accueil, mobile : la photo passe juste après le titre, avant le texte
	   d'accroche, le CTA et les puces. .hero__content--home passe en
	   display:contents pour que ses enfants deviennent des items de la grille
	   au même niveau que la photo (sa sœur dans le HTML) : seul moyen de
	   glisser un élément voisin au milieu d'un bloc sans toucher au HTML.
	   Son padding horizontal (40px 18px en desktop réduit) est donc reporté
	   sur chaque enfant, sinon il disparaît avec sa boîte. Le gap de 24px de
	   la grille s'appliquerait sinon entre chacun de ces 6 items désormais
	   au même niveau, pas seulement entre le bloc de texte et la photo. */
	.hero__grid--home { gap: 0; }
	.hero__grid--home .hero__content--home { display: contents; }
	.hero__grid--home .kicker,
	.hero__grid--home h1,
	.hero__grid--home .hero__lead,
	.hero__grid--home .hero__ctas,
	.hero__grid--home .hero__pills {
		padding-left: 18px;
		padding-right: 18px;
	}
	.hero__grid--home .kicker { order: 1; margin-top: 40px; }
	.hero__grid--home h1 { order: 2; }
	.hero__grid--home .hero__image { order: 3; margin: 0 0 20px; }
	/* Écarts égaux (20px) texte→puces et puces→bouton : le texte perd son
	   margin-bottom de 30px (base desktop) au profit de ce 20px uniforme. */
	.hero__grid--home .hero__lead { order: 4; margin-bottom: 20px; }
	.hero__grid--home .hero__pills { order: 5; margin-top: 0; }
	.hero__grid--home .hero__ctas { order: 6; margin-top: 20px; margin-bottom: 40px; }
	/* Le seul bouton du hero d'accueil prend toute la largeur sur téléphone. */
	.hero--home .hero__ctas .btn { width: 100%; }
	.hero__image--tall { min-height: 230px; }
	.hero__image { min-height: 210px; }
	/* En une ou deux colonnes, la carte s'élargit : le logo doit rester mesuré. */
	.pressband__logo img { max-width: 240px; }
	.testimonial { grid-template-columns: 96px 1fr; }
	.testimonial__avatar { width: 96px; height: 96px; }
	.media-cover--wide { height: 260px; }

	.sidebar-card { position: static; }

	.article-page { padding-top: 26px; }
	.prose { padding-left: 18px; padding-right: 18px; }
	.prose h1 { font-size: clamp(25px, 6.4vw, 36px); line-height: 1.16; }
	.prose h2 { font-size: clamp(20px, 4.6vw, 26px); }
	.prose h3 { font-size: clamp(17px, 3.8vw, 20px); }
	.prose p { font-size: 16px; line-height: 1.7; }
	.prose > p:first-of-type { font-size: 17px; }
	.artimg { height: auto; aspect-ratio: 3 / 2; }
	.tablewrap { -webkit-overflow-scrolling: touch; border: 1px solid var(--c-border); }
	.tablewrap table { min-width: 520px; }
	.enbref { padding: 18px 20px; }
	.byline { flex-wrap: wrap; gap: 10px; }
	.byline__back { margin-left: 0; flex-basis: 100%; }
	.authorbox { flex-direction: column; gap: 12px; }
	.faq-item { padding: 15px 18px; }
	.inline-card { flex-direction: column; }
	.inline-card .thumb { width: 100%; height: 190px; }
}

/* ------------------------------------------------------------------ */
/* Responsive — palier mobile (≤620px)                                 */
/* ------------------------------------------------------------------ */
@media (max-width: 620px) {
	h1, .hero--home h1, .hero--simple h1, .page-title { font-size: 26px; }
	h2 { font-size: 21px; }
	h3 { font-size: 18px; }
	.section__head h2 { font-size: 22px; }
	.section-title, .section-title--lg, .section-title--xl { font-size: 20px; }

	.grid-2, .grid-3, .grid-4, .grid-5, .statsband__grid, .statsband__grid--3, .value-grid, .pressband__grid, .statgrid, .site-footer__grid { grid-template-columns: 1fr; }
	.statsband__cell, .value-grid__cell { border-right: 0; }
	.testimonial { grid-template-columns: 1fr; gap: 16px; }
	.media-cover--wide { height: 200px; }
	.media-cover--aside { height: 170px; }

	.prose { padding-left: 16px; padding-right: 16px; }
	.prose ul, .prose ol { padding-left: 18px; }
	.faq-item { padding: 14px 15px; }
	.faq-item h3 { font-size: 15.5px; }
	.artimg { height: 190px; aspect-ratio: auto; }
	.tablewrap table, .prose table { font-size: 12.5px; }
	.tablewrap th, .tablewrap td, .prose th, .prose td { padding: 9px 10px; }
	.inline-card { flex-direction: column; }
	.inline-card .thumb { width: 100%; height: 180px; }
	.card__img { height: 190px; }
	.jcard--row { flex-direction: column; }
	.jcard--row .jcard__img { width: 100%; min-height: 180px; }

	.site-footer__legal { flex-direction: column; gap: 6px; text-align: left; }
	.cta-band .pagewrap { flex-direction: column; align-items: flex-start; }
}
