/* Major Master v2 — charte Encre / Vert / Or / Crème (masters-tokens.css) */

/* ---- Logotype (Acetone), cf. mmv2_logo_long()/mmv2_logo_short() dans helpers.php ---- */
.mmv2-logo {
	font-family: var(--font-logo);
	font-weight: 400;
	letter-spacing: 0;
	line-height: 1;
	display: inline-flex;
	align-items: center;
}

.mmv2-logo--long {
	font-size: 26px;
	color: var(--creme) !important;
}

@media (max-width: 1200px) {
	.mmv2-logo--long {
		font-size: 24px;
	}
}

@media (max-width: 900px) {
	.mmv2-logo--long {
		font-size: 22px;
	}
}

.mmv2-logo__o-wrap {
	position: relative;
	display: inline-block;
}

.mmv2-logo__hat {
	position: absolute;
	left: 50%;
	top: 0.10em;
	width: 0.49em;
	height: 0.31em;
	transform: translateX(-50%);
	clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
	display: flex;
	align-items: center;
	justify-content: center;
}

.mmv2-logo__hat-fill {
	width: 0.42em;
	height: 0.24em;
	background: var(--or);
	clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%);
}

.mmv2-logo--short {
	width: 54px;
	height: 54px;
	border-radius: 13px;
	position: relative;
	justify-content: center;
}

.mmv2-logo__hat--short {
	top: 0;
	left: 50%;
	width: 31%;
	height: 15%;
	transform: translate(-50%, -50%);
}

.mmv2-logo__hat--short .mmv2-logo__hat-fill {
	width: 83%;
	height: 79%;
}

.mmv2-logo__m {
	font-size: 54px;
	color: var(--vert) !important;
}

/* ---- Hub MS & MSc ---- */
.mmv2-hub__title {
	padding: var(--space-6) var(--space-3) var(--space-2);
	max-width: var(--maxw);
	margin: 0 auto;
}

.mmv2-hub__intro {
	max-width: var(--maxw);
	margin: 0 auto;
	padding: 0 var(--space-3) var(--space-4);
}

.mmv2-hub__domaines {
	max-width: var(--maxw);
	margin: 0 auto;
	padding: 0 var(--space-3) var(--space-6);
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
	gap: var(--space-2);
}

.mmv2-hub__tile {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 76px;
	background: var(--pale);
	color: var(--primary-dark) !important;
	font-family: var(--font-ui);
	font-weight: 700;
	padding: var(--space-3);
	border-radius: var(--radius-sharp);
	text-decoration: none;
	text-align: center;
	transition: background 0.15s ease;
}

.mmv2-hub__tile:hover {
	background: var(--primary, #0F7A5F);
	color: #fff !important;
}

/* ---- Sommaires domaines/écoles (page-hub-domaines.php / page-hub-ecoles.php) : réutilise
   les cards du carrousel de l'accueil (.mmv2-carousel__card*), dans une grille qui s'enroule
   plutôt qu'un défilement horizontal. ---- */
.mmv2-hub-intro {
	max-width: 640px;
	margin-top: var(--space-1);
}

/* Le contenu existant de ces pages (rédigé en amont) inclut une FAQ en <details>/<summary>
   HTML natifs — sans CSS ils gardent le rendu par défaut du navigateur (bordure carrée,
   triangle natif), visuellement cassé dans la charte (retour utilisateur du 2026-08-04). */
.mmv2-hub-faq {
	max-width: var(--maxw);
	margin: 0 auto;
	padding: var(--space-3) var(--space-3) var(--space-6);
}

.mmv2-hub-faq__list {
	max-width: 760px;
}

.mmv2-hub-faq details {
	border: 1px solid var(--filet);
	border-radius: var(--radius-md);
	padding: var(--space-2) var(--space-3);
	margin-top: var(--space-2);
}

.mmv2-hub-faq details:first-child {
	margin-top: 0;
}

.mmv2-hub-faq summary {
	cursor: pointer;
	font-weight: 600;
	color: var(--encre);
	list-style: none;
}

.mmv2-hub-faq summary::-webkit-details-marker {
	display: none;
}

.mmv2-hub-faq summary::after {
	content: '+';
	float: right;
	color: var(--vert);
	font-weight: 400;
}

.mmv2-hub-faq details[open] summary::after {
	content: '−';
}

.mmv2-hub-faq details[open] summary {
	margin-bottom: var(--space-1);
}

.mmv2-hub-faq details p {
	color: var(--texte-corps-2) !important;
}

.mmv2-hub-terms-grid {
	max-width: var(--maxw);
	margin: var(--space-5) auto 0;
	padding: 0 var(--space-3) var(--space-6);
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
	gap: var(--space-2);
}

/* ---- Pages piliers (école / thématique) : réutilisent le hero + les blocs de la fiche master ---- */
.mmv2-badge-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-1);
	margin-top: var(--space-2);
}

/* Même comportement que les cards domaines/écoles (.mmv2-hub__tile) au survol. */
.mmv2-badge-list .mp-tag {
	transition: background 0.15s ease, color 0.15s ease;
}

.mmv2-badge-list .mp-tag:hover {
	background: #0F7A5F !important;
	color: #FFFFFF !important;
}

/* ---- Fiche master (single) ---- */
.mmv2-single-master__hero {
	background: var(--ink);
}

.mmv2-single-master__hero-inner {
	max-width: var(--maxw);
	margin: 0 auto;
	padding: var(--space-6) var(--space-3) var(--space-5);
}

/* Bandeau titre plus compact sur les articles (pas de badges/KPI comme la fiche master) —
   moins d'espace consommé avant de voir le sommaire/le contenu (retour du 2026-08-02). */
.mmv2-article__hero .mmv2-single-master__hero-inner {
	padding: var(--space-3) var(--space-3) var(--space-1);
}

.mmv2-single-master__eyebrow {
	color: rgba(255, 255, 255, 0.5) !important;
	margin: 0 0 var(--space-1);
}

/* Fil d'Ariane : placé en tête des heros sombres (fiche + article), texte discret. */
.mmv2-breadcrumb {
	margin: 0 0 var(--space-2);
}

.mmv2-breadcrumb__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-1);
	margin: 0;
	padding: 0;
	list-style: none;
	font-family: var(--font-ui);
	font-size: 0.8125rem;
}

.mmv2-breadcrumb__item a {
	color: rgba(255, 255, 255, 0.6) !important;
	text-decoration: none;
}

.mmv2-breadcrumb__item a:hover,
.mmv2-breadcrumb__item a:focus {
	color: var(--creme) !important;
	text-decoration: underline;
}

.mmv2-breadcrumb__item span[aria-current="page"] {
	color: rgba(255, 255, 255, 0.85) !important;
}

.mmv2-breadcrumb__sep {
	color: rgba(255, 255, 255, 0.35) !important;
}

/* Fil d'Ariane sur bandeau clair (fiche master : hero--creme) — les couleurs ci-dessus sont
   pensées pour un hero sombre (encre) et deviennent illisibles sur fond crème. */
.mmv2-single-master__hero--creme .mmv2-breadcrumb__item a {
	color: var(--gris-texte) !important;
}

.mmv2-single-master__hero--creme .mmv2-breadcrumb__item a:hover,
.mmv2-single-master__hero--creme .mmv2-breadcrumb__item a:focus {
	color: var(--vert) !important;
}

.mmv2-single-master__hero--creme .mmv2-breadcrumb__item span[aria-current="page"] {
	color: var(--encre) !important;
}

.mmv2-single-master__hero--creme .mmv2-breadcrumb__sep {
	color: var(--gris-libelle) !important;
}

.mmv2-single-master__title {
	color: #fff !important;
	margin: 0;
}

.mmv2-search-banner {
	max-width: var(--maxw);
	margin: 0 auto var(--space-5);
	padding: var(--space-3);
	position: relative;
	background: #fff;
	box-shadow: var(--shadow-lg, 0 20px 60px rgba(13, 21, 18, 0.12));
}

/* À utiliser juste après un bandeau sombre (.mmv2-single-master__hero) pour un effet de
   carte flottante — cf. .mmv2-single-master__meta qui fait déjà ce chevauchement. */
.mmv2-search-banner--overlap {
	margin-top: calc(var(--space-4) * -1);
}

.mmv2-search-banner__label {
	margin: 0 0 var(--space-2);
	color: var(--primary-dark, #0A4A38) !important;
	font-size: 26px;
}

.mmv2-search-banner__row {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-1);
}

.mmv2-search-banner__select {
	flex: 1 1 200px;
	border: 1px solid var(--border, #E3E0D8) !important;
	border-radius: 10px !important;
	background: var(--paper, #F7F6F2);
	padding: 12px 14px;
	font-family: var(--font-ui);
	font-size: 14px;
	color: var(--text, #0D1512) !important;
}

.mmv2-search-banner__submit {
	flex: 0 0 auto;
	white-space: nowrap;
}

.mmv2-archive-intro,
.mmv2-archive-intro p {
	color: rgba(255, 255, 255, 0.85) !important;
	max-width: 640px;
	margin-top: var(--space-2);
}

.mmv2-faq {
	display: grid;
	gap: 1px;
	background: var(--border, #E3E0D8);
	border: 1px solid var(--border, #E3E0D8);
}

.mmv2-faq__item {
	background: #fff;
	padding: var(--space-2) var(--space-3);
}

.mmv2-faq__question {
	font-family: var(--font-ui);
	font-weight: 700;
	font-size: 16px;
	color: var(--text, #0D1512) !important;
	cursor: pointer;
	list-style: none;
}

.mmv2-faq__question::-webkit-details-marker {
	display: none;
}

.mmv2-faq__question::before {
	content: "+";
	display: inline-block;
	width: 1.2em;
	color: var(--primary, #0F7A5F) !important;
	font-weight: 800;
}

.mmv2-faq__item[open] .mmv2-faq__question::before {
	content: "–";
}

.mmv2-faq__answer {
	margin-top: var(--space-2);
	padding-left: 1.2em;
	color: var(--text-body) !important;
}

.mmv2-single-master__eyebrow a {
	color: var(--texte-encre-nav) !important;
	text-decoration: underline;
	text-decoration-thickness: 2px;
	text-underline-offset: 3px;
}

.mmv2-single-master__eyebrow a:hover {
	color: var(--creme) !important;
}

.mmv2-eyebrow-sep {
	color: var(--creme) !important;
}

.mmv2-eyebrow-sep--dot {
	display: inline-block;
	font-size: 1.6em;
	line-height: 0;
	vertical-align: middle;
	margin: 0 2px;
}

.mmv2-single-master__meta {
	max-width: var(--maxw);
	margin: calc(var(--space-4) * -1) auto 0;
	padding: 0 var(--space-3);
	position: relative;
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
	gap: var(--space-2);
}

.mmv2-kpi {
	background: #fff;
	padding: var(--space-3);
	box-shadow: var(--shadow-sm);
}

.mmv2-icon {
	color: var(--primary, #0F7A5F) !important;
	margin-bottom: var(--space-1);
}

.mmv2-kpi .mp-caption {
	margin: 0 0 4px;
}

.mmv2-kpi .mp-h2 {
	margin: 0;
	color: var(--primary-dark) !important;
	font-size: 22px;
}

.mmv2-kpi__more {
	display: inline-block;
	margin-top: 6px;
	font-size: 12px;
	font-weight: 700;
	color: var(--primary, #0F7A5F) !important;
	text-decoration: none;
}

.mmv2-kpi__more:hover {
	text-decoration: underline;
}

.mmv2-tag__more {
	margin-left: 4px;
	font-size: 11px;
	font-weight: 700;
	text-decoration: underline;
	color: inherit !important;
	opacity: 0.75;
}

/* Correctif défensif : garantir la lisibilité du tag "type de master" (ms_label_cge, ex.
   "Master of Science (MSc)") quel que soit le contexte CSS environnant — cf. session du
   2026-07-04. L'or (--accent) est réservé au logo : ce badge utilise la puce neutre. */
.mp-tag-accent {
	background: var(--puce-neutre-bg, #EDEAE2) !important;
	color: var(--puce-neutre-text, #0D1512) !important;
}

.mmv2-single-master__tags {
	max-width: var(--maxw);
	margin: var(--space-3) auto 0;
	padding: 0 var(--space-3);
	display: flex;
	gap: var(--space-1);
	flex-wrap: wrap;
	align-items: center;
}

.mmv2-single-master__tags .mp-tag {
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

.mmv2-single-master__tags .mmv2-icon {
	width: 14px;
	height: 14px;
	margin-bottom: 0;
}

.mmv2-single-master__body {
	max-width: var(--maxw);
	margin: var(--space-5) auto 0;
	padding: 0 var(--space-3) var(--space-6);
}

.mmv2-block {
	padding: var(--space-3) 0;
	border-top: 1px solid var(--border);
}

.mmv2-block:first-child {
	border-top: none;
	padding-top: 0;
}

.mmv2-block__title {
	display: flex;
	align-items: center;
	gap: var(--space-1);
	color: var(--text, #0D1512) !important;
	margin: 0 0 var(--space-2);
}

.mmv2-block__title .mmv2-icon {
	color: var(--primary, #0F7A5F) !important;
	margin-bottom: 0;
}

.mmv2-block__content {
	color: var(--text-body) !important;
}

.mmv2-admission-list {
	list-style: none;
	margin: var(--space-2) 0 0;
	padding: 0;
	display: grid;
	gap: 8px;
}

.mmv2-admission-list li {
	background: var(--pale);
	padding: 10px 14px;
}

.mmv2-admission-list__label {
	display: block;
	font-size: 14px;
	font-weight: 600;
	color: var(--primary-dark) !important;
}

.mmv2-admission-list__note {
	display: block;
	margin-top: 4px;
	font-size: 13px;
	font-weight: 400;
	color: var(--text-body) !important;
}

.mmv2-subsection + .mmv2-subsection {
	margin-top: var(--space-3);
}

.mmv2-subsection__title {
	color: var(--primary-dark) !important;
	margin: 0 0 6px;
}

/* Titre de sous-thématique dans "Contenu pédagogique" (ex. Luxe / International Business
   pour un master multi-domaines) — doit se voir nettement, pas juste une petite légende. */
.mmv2-domaine-heading {
	font-family: var(--font-display, 'Instrument Sans', sans-serif);
	font-size: 22px;
	font-weight: 600;
	color: var(--primary-dark, #0A4A38) !important;
	margin: var(--space-4) 0 var(--space-2);
	padding-top: var(--space-3);
	border-top: 2px solid var(--pale, #E4F3EC);
}

.mmv2-domaine-heading:first-child {
	margin-top: 0;
	padding-top: 0;
	border-top: none;
}

/* ---- Articles liés ---- */
.mmv2-related-articles__header {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--space-2);
	flex-wrap: wrap;
}

.mmv2-related-articles__all-link {
	font-family: var(--font-ui);
	font-size: 14px;
	font-weight: 600;
	color: var(--primary-dark, #0A4A38) !important;
	text-decoration: none;
	white-space: nowrap;
}

.mmv2-related-articles__all-link:hover {
	text-decoration: underline;
}

.mmv2-related-articles__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--space-2);
	margin-top: var(--space-2);
}

@media (max-width: 900px) {
	.mmv2-related-articles__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

@media (max-width: 560px) {
	.mmv2-related-articles__grid {
		grid-template-columns: 1fr;
	}
}

/* Archives de catégorie : 10 articles = 2 lignes de 5, avec repli responsive. */
.mmv2-archive-grid {
	grid-template-columns: repeat(5, 1fr);
}

@media (max-width: 900px) {
	.mmv2-archive-grid {
		grid-template-columns: repeat(3, 1fr);
	}
}

@media (max-width: 600px) {
	.mmv2-archive-grid {
		grid-template-columns: repeat(2, 1fr);
	}
}

.mmv2-related-article {
	display: block;
	text-decoration: none;
	color: var(--text, #0D1512) !important;
	overflow: hidden;
	transition: box-shadow 0.2s ease, border-color 0.2s ease;
}

.mmv2-related-article:hover {
	border-color: #0F7A5F !important;
	box-shadow: var(--shadow-lg, 0 20px 60px rgba(13, 21, 18, 0.12));
}

.mmv2-related-article__thumb {
	overflow: hidden;
}

.mmv2-related-article__thumb img {
	display: block;
	width: 100%;
	height: 130px;
	object-fit: cover;
	transition: transform 0.25s ease;
}

.mmv2-related-article:hover .mmv2-related-article__thumb img {
	transform: scale(1.06);
}

.mmv2-related-article__body {
	padding: var(--space-2);
}

.mmv2-related-article__title {
	color: var(--primary-dark, #0A4A38) !important;
	margin: 0;
	transition: color 0.15s ease;
}

.mmv2-related-article:hover .mmv2-related-article__title {
	color: #0F7A5F !important;
	text-decoration: underline;
}

.mmv2-locations {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
	gap: var(--space-2);
	margin-top: var(--space-2);
}

.mmv2-location-card {
	padding: var(--space-3);
}

.mmv2-map {
	margin-top: var(--space-2);
	height: 220px;
	background: var(--pale);
}

.mmv2-map iframe {
	width: 100%;
	height: 100%;
	border: 0;
	display: block;
}

/* Campus d'une école (page ms_ecole), tout master confondu — liste de villes + une carte
   qui se recentre au clic (retour utilisateur du 2026-08-06, référence etudestech.com : un
   bouton par ville, la carte affiche celle sélectionnée plutôt que N cartes empilées). */
.mmv2-ecole-campus__layout {
	display: grid;
	grid-template-columns: 280px 1fr;
	gap: var(--space-3);
	margin-top: var(--space-2);
}

.mmv2-ecole-campus__cities {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

/* !important sur les couleurs : ces boutons ont type="button", le reset du thème matche donc
   aussi via [type="button"] (même poids qu'une classe) et gagnait à égalité de spécificité
   (chargé après nous) — bordure/fond rose de l'ancienne charte au lieu du gris/vert attendus
   (retour utilisateur du 2026-08-06, même cause que .mmv2-ct-icon-btn ci-dessus). */
.mmv2-ecole-campus__city-btn {
	text-align: left;
	padding: 12px 16px;
	border: 1px solid var(--border, #E3E0D8) !important;
	border-radius: var(--radius-sm);
	background: var(--white, #fff) !important;
	font-family: var(--font-ui);
	font-size: 14.5px;
	font-weight: 600;
	color: var(--text-body) !important;
	cursor: pointer;
}

.mmv2-ecole-campus__city-btn.is-active {
	background: var(--primary, #0F7A5F) !important;
	border-color: var(--primary, #0F7A5F) !important;
	color: #fff !important;
}

.mmv2-ecole-campus__map {
	height: 360px;
	border-radius: var(--radius-card);
	overflow: hidden;
	background: var(--pale);
}

.mmv2-ecole-campus__map iframe {
	width: 100%;
	height: 100%;
	border: 0;
	display: block;
}

@media (max-width: 700px) {
	.mmv2-ecole-campus__layout {
		grid-template-columns: 1fr;
	}

	.mmv2-ecole-campus__cities {
		flex-direction: row;
		flex-wrap: wrap;
	}

	.mmv2-ecole-campus__map {
		height: 280px;
	}
}

.mmv2-block--lead {
	background: var(--pale);
	padding: var(--space-4);
	border-top: none;
	margin-top: var(--space-3);
}

/* ---- Fiche master v2 (bandeau crème, KPI 6 colonnes, sommaire, accordéon) ---- */
.mmv2-single-master__hero--creme {
	background: var(--creme);
}

/* Hero harmonisé sur le même schéma que les pages école/domaine (identité à gauche, carte de
   chiffres clés à droite) plutôt qu'une bande KPI séparée sous le bandeau. Le fil d'Ariane
   passe en pleine largeur au-dessus des deux colonnes, pas dans la colonne de gauche (retour
   utilisateur du 2026-08-03). */
.mmv2-master-hero__row {
	display: flex;
	align-items: flex-start;
	justify-content: space-between;
	gap: var(--space-4);
	flex-wrap: wrap;
	margin-top: var(--space-2);
}

.mmv2-master-hero__main {
	flex: 1 1 380px;
	min-width: 280px;
}

/* .mmv2-single-master__tags porte par défaut un max-width/padding pensés pour un usage pleine
   largeur (fiche master v1) — ici, dans la colonne de gauche du hero, ça décalait les tags par
   rapport au H1 juste en dessous (retour utilisateur du 2026-08-03). */
.mmv2-master-hero__main .mmv2-single-master__tags {
	max-width: none;
	padding: 0;
	margin: 0 0 var(--space-1);
}

.mmv2-master-hero__kpis {
	flex: 0 0 auto;
	display: grid;
	grid-template-columns: repeat(3, auto);
	gap: var(--space-3) var(--space-4);
	padding: var(--space-3);
	/* Aligne le haut de la carte avec le haut du H1, pas avec les tags qui le précèdent (même
	   principe que sur les pages école/domaine) — décalage mesuré empiriquement. */
	margin-top: 34px;
}

@media (max-width: 900px) {
	.mmv2-master-hero__kpis {
		/* flex:0 0 auto + colonnes "auto" se dimensionnaient sur le contenu (ex. libellé
		   "ACCESSIBLE VIA PGE") sans jamais rétrécir sous la largeur d'écran, provoquant un
		   défilement horizontal de toute la page (retour utilisateur du 2026-08-03, audit
		   mobile) — même défaut que le hero école, même correctif : pleine largeur, colonnes
		   fractionnelles plutôt que calées sur le contenu. */
		flex: 1 1 100%;
		grid-template-columns: repeat(2, 1fr);
		margin-top: var(--space-2);
	}
}

.mmv2-single-master__title--dark {
	color: var(--encre) !important;
	margin: var(--space-2) 0 0;
}

.mmv2-single-master__eyebrow-line {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: var(--space-1) 0 0;
	color: var(--gris-texte-2) !important;
}

.mmv2-single-master__ecole-logo {
	width: 32px;
	height: 32px;
	object-fit: contain;
	border-radius: 4px;
}

.mmv2-single-master__actions {
	display: flex;
	align-items: center;
	gap: var(--space-sm);
	margin-top: var(--space-3);
}

/* border en !important : le reset.css du thème (hello-elementor) impose sinon sa propre
   bordure rose sur button/[type=button], à spécificité égale à nos classes. */
.mmv2-single-master__fav,
.mmv2-single-master__compare {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	height: 38px;
	padding: 0 16px !important;
	border-radius: var(--radius-pill) !important;
	border: 1px solid var(--filet) !important;
	background: #fff !important;
	color: var(--encre) !important;
	font-family: var(--font-ui) !important;
	font-size: 14.5px !important;
	font-weight: 500 !important;
	cursor: pointer;
}

.mmv2-single-master__fav:hover,
.mmv2-single-master__compare:hover {
	border-color: var(--vert) !important;
}

.mmv2-single-master__fav[aria-pressed="true"] {
	background: var(--puce-vert-bg) !important;
	border-color: var(--puce-vert-bg) !important;
	color: var(--puce-vert-text) !important;
}

.mmv2-single-master__fav-diamond {
	width: 11px;
	height: 11px;
	border: 1.5px solid var(--gris-texte);
	transform: rotate(45deg);
	display: inline-block;
}

.mmv2-single-master__fav[aria-pressed="true"] .mmv2-single-master__fav-diamond {
	background: var(--vert);
	border-color: var(--vert);
}

.mmv2-single-master__compare[aria-pressed="true"] {
	background: var(--encre) !important;
	border-color: var(--encre) !important;
	color: #fff !important;
}

.mmv2-kpi-band__value {
	font-family: var(--font-display);
	font-weight: 600;
	font-size: 24px;
	color: var(--encre) !important;
	margin: 2px 0 0;
}

.mmv2-single-master__layout {
	/* Pas de rail droit sur cette page (retiré le 2026-08-02) : plus de largeur pour le
	   tableau "Masters comparables" qu'avec le --maxw partagé (1120px) des autres pages. */
	max-width: 1320px;
	margin: var(--space-5) auto 0;
	padding: 0 var(--space-3) var(--space-6);
}

/* Grille sommaire/contenu isolée dans son propre conteneur de bloc (hauteur réelle, bornée) —
   pas une rangée de .mmv2-single-master__layout : Safari ne confine pas fiablement un
   position:sticky à sa grid-row quand le comparateur pleine largeur est une AUTRE rangée de
   la MÊME grille (le sommaire "fuit" dessus au scroll, retour du 2026-08-02). Un vrai bloc
   parent (hauteur = max(sommaire, corps)) fonctionne de façon fiable sur tous les navigateurs. */
.mmv2-single-master__row1 {
	display: grid;
	grid-template-columns: 200px minmax(0, 1fr);
	gap: var(--space-4);
	align-items: start;
}

/* Aucun repli mobile ici (contrairement à .mmv2-article__layout, qui masque déjà son
   sommaire à cette même largeur) : la colonne sommaire de 200px restait fixe et poussait le
   contenu, provoquant un défilement horizontal de toute la page (retour utilisateur du
   2026-08-03, audit mobile). */
@media (max-width: 1200px) {
	.mmv2-single-master__row1 {
		grid-template-columns: minmax(0, 1fr);
	}

	.mmv2-single-master__row1 > .mmv2-toc {
		display: none;
	}

	/* margin:auto (pensé pour centrer sous --maxw quand il y a de la place, cf. règle de
	   base) fait que ce module de grille (grid-template-columns défini plus haut) se
	   dimensionne en "fit-content" au lieu de remplir sa piste une fois celle-ci plus étroite
	   que --maxw — le contenu ne rétrécissait plus sous la largeur d'écran (retour
	   utilisateur du 2026-08-03, audit mobile). */
	.mmv2-single-master__body {
		margin-left: 0;
		margin-right: 0;
	}
}

/* Le comparateur ("Masters comparables") a son propre filtre École (264px) + tableau à
   colonnes nombreuses — la colonne de contenu (~660px) ne lui suffit pas. Il est un simple
   bloc frère de .mmv2-single-master__row1 (pas dans sa grille), donc naturellement pleine
   largeur de .mmv2-single-master__layout. */
.mmv2-single-master__full-width {
	margin-top: var(--space-4);
}

.mmv2-toc {
	position: sticky;
	/* 20px seul plaçait le sommaire sous notre bandeau fixe (68/60/56px) : le haut du sommaire
	   se faisait couper (retour du 2026-08-02 : "se fixe trop haut, sous le header"). */
	top: calc(var(--header-h-desktop) + 20px);
}

.mmv2-toc__list {
	display: flex;
	flex-direction: column;
	gap: 9px;
	margin-top: var(--space-1);
	padding-left: var(--space-md);
	border-left: 2px solid var(--filet-clair);
	font-size: 14.5px;
}

.mmv2-toc__item {
	color: var(--gris-texte) !important;
	text-decoration: none;
}

.mmv2-toc__item.is-active {
	color: var(--encre) !important;
	font-weight: 600;
}

.mmv2-admission-band {
	margin-top: var(--space-2);
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	border: 1px solid var(--filet);
	border-radius: var(--radius-card);
	overflow: hidden;
}

.mmv2-admission-band__cell {
	padding: var(--space-2) var(--space-3);
	border-left: 1px solid var(--filet);
}

.mmv2-admission-band__cell:first-child {
	border-left: none;
}

/* 3 colonnes serrées de valeurs (souvent des montants/durées) ne tenaient pas sur mobile —
   aucun repli n'existait (retour utilisateur du 2026-08-04). Passage à 1 colonne, filets
   horizontaux plutôt que verticaux. */
@media (max-width: 600px) {
	.mmv2-admission-band {
		grid-template-columns: 1fr;
	}

	.mmv2-admission-band__cell {
		border-left: none;
		border-top: 1px solid var(--filet);
	}

	.mmv2-admission-band__cell:first-child {
		border-top: none;
	}
}

.mmv2-admission-band__value {
	font-weight: 600;
	color: var(--encre) !important;
	margin: 2px 0 0;
}

.mmv2-admission-band__note {
	margin-top: 6px;
	font-size: 13px;
	color: var(--text-body) !important;
}

.mmv2-accordion {
	display: flex;
	flex-direction: column;
	gap: var(--space-sm);
	margin-top: var(--space-2);
}

.mmv2-accordion__panel {
	border-bottom: 1px solid var(--filet-clair);
}

.mmv2-accordion__panel:last-child {
	border-bottom: 0;
}

.mmv2-accordion__header {
	width: 100%;
	display: flex !important;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-lg);
	padding: var(--space-2) var(--space-lg) !important;
	background: none !important;
	border: 0 !important;
	color: var(--encre) !important;
	cursor: pointer;
	text-align: left;
}

.mmv2-accordion__panel.is-open .mmv2-accordion__header {
	background: none !important;
	border-bottom: 0 !important;
}

.mmv2-accordion__bullet {
	width: 9px;
	height: 9px;
	border: 1.5px solid var(--gris-libelle);
	transform: rotate(45deg);
	flex-shrink: 0;
}

.mmv2-accordion__panel.is-open .mmv2-accordion__bullet {
	background: var(--vert);
	border-color: var(--vert);
}

.mmv2-accordion__title {
	flex: 1;
	font-family: var(--font-display);
	font-weight: 600;
	font-size: 18px;
	color: var(--encre) !important;
	letter-spacing: -0.015em;
}

.mmv2-accordion__indicator {
	color: var(--gris-texte) !important;
	font-size: 13px;
}

.mmv2-accordion__content {
	padding: var(--space-lg) var(--space-lg) var(--space-2xl);
}

.mmv2-rail {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	position: sticky;
	top: calc(var(--header-h-desktop) + 20px);
}

.mmv2-rail__lead {
	background: var(--encre);
	border-color: var(--filet-encre);
	padding: var(--space-lg);
	color: #fff !important;
}

.mmv2-rail__lead .mp-h3 {
	color: #fff !important;
}

.mmv2-rail__lead .mp-body {
	color: var(--texte-encre-secondaire) !important;
}

.mmv2-rail__card {
	padding: var(--space-lg);
}

/* ---- Carrousels domaines/écoles (accueil) ---- */
.mmv2-carousel-head {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: var(--space-2);
}

.mmv2-carousel-head .mmv2-block__title {
	margin: 0;
}

.mmv2-carousel-head__link {
	color: var(--vert) !important;
	font-size: 14px;
	font-weight: 500;
	text-decoration: none;
	white-space: nowrap;
}

.mmv2-carousel-head__link:hover {
	color: var(--vert-profond) !important;
	text-decoration: underline;
}

.mmv2-carousel {
	display: flex;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	gap: 12px;
	margin-top: var(--space-2);
	padding-bottom: 6px;
}

.mmv2-carousel__card {
	scroll-snap-align: start;
	display: flex;
	flex-direction: column;
	gap: 8px;
	border: 1px solid var(--filet);
	border-radius: var(--radius-card);
	padding: var(--space-2);
	text-decoration: none;
	color: var(--encre) !important;
}

.mmv2-carousel__card:hover {
	border-color: var(--vert);
}

.mmv2-carousel__card--domaine {
	flex: 0 0 216px;
}

.mmv2-carousel__card--ecole {
	flex: 0 0 200px;
	align-items: center;
	text-align: center;
}

.mmv2-carousel__icon {
	width: 52px;
	height: 52px;
	border-radius: var(--radius-md);
	object-fit: contain;
	/* Ces SVG de domaine sont en blanc plein (fill:#fff dans le fichier lui-même) : sans
	   fond de couleur derrière, ils sont invisibles sur la carte crème/blanche (retour
	   du 2026-08-02 : "les picto ne sont pas visibles", même bug que dans le méga-menu). */
	background: var(--encre);
	padding: 10px;
	box-sizing: border-box;
}

.mmv2-carousel__icon--placeholder,
.mmv2-carousel__logo--placeholder {
	background: var(--puce-neutre-bg);
}

.mmv2-carousel__logo {
	width: 56px;
	height: 56px;
	border-radius: var(--radius-md);
	object-fit: contain;
}

.mmv2-carousel__label {
	font-weight: 600;
	font-size: 16px;
}

.mmv2-carousel__count {
	color: var(--gris-libelle) !important;
}

/* ---- Page école (bandeau campus, tuile logo, onglets) ---- */
.mmv2-ecole-banner {
	position: relative;
	height: 220px;
	overflow: hidden;
}

.mmv2-ecole-banner img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

/* Fil d'Ariane superposé à la photo de campus (retour du 2026-08-02, cf. maquette), en haut
   plutôt qu'en bas pour ne jamais être chevauché par la tuile logo (retour du 2026-08-03) —
   un dégradé sombre au-dessus garantit sa lisibilité quelle que soit la photo. */
.mmv2-ecole-banner::after {
	content: "";
	position: absolute;
	inset: 0 0 auto 0;
	height: 70px;
	background: linear-gradient(to bottom, rgba(13, 21, 18, 0.55), transparent);
	pointer-events: none;
}

/* En haut de la photo (pas en bas) : la tuile logo, à cheval sur la limite basse de la photo,
   peut chevaucher/masquer un fil d'Ariane positionné en bas selon la largeur du logo/de
   l'écran (retour utilisateur du 2026-08-03). */
.mmv2-ecole-banner__breadcrumb {
	position: absolute;
	left: var(--gutter-desktop);
	top: var(--space-2);
	z-index: 1;
}

.mmv2-ecole-banner__breadcrumb .mmv2-breadcrumb {
	margin: 0;
}

.mmv2-ecole-hero__inner {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: var(--space-3);
}

.mmv2-ecole-hero--overlap {
	padding-top: 0 !important;
}

/* La tuile logo (112px) doit être coupée en son milieu par la limite photo/section, et le H1
   doit avoir son bas aligné avec le bas de la tuile (retour utilisateur du 2026-08-03) — le
   padding-top hérité de .mmv2-single-master__hero-inner (80px) empêchait toute remontée
   utile de la tuile. 10px ici + le -66px de la tuile positionnent son centre exactement sur
   la limite ; voir .mmv2-ecole-hero__logo et .mmv2-ecole-hero__main h1 pour le calcul. */
.mmv2-ecole-hero--overlap .mmv2-ecole-hero__inner {
	padding-top: 22px;
}

/* Fond blanc (pas crème) sous la photo de campus, conforme à la maquette (retour du
   2026-08-02) — --creme reste la bonne valeur pour la fiche master et la page domaine. */
.mmv2-ecole-hero {
	background: #fff !important;
}

.mmv2-ecole-hero__logo {
	width: 112px;
	height: 112px;
	object-fit: contain;
	background: #fff;
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-lg);
	margin-top: -78px;
	flex-shrink: 0;
}

.mmv2-ecole-hero__main {
	flex: 1 1 auto;
	min-width: 240px;
}

/* "Membre CGE" à droite du nom de l'école plutôt qu'en dessous (retour utilisateur
   du 2026-08-03). */
.mmv2-ecole-hero__title-row {
	display: flex;
	align-items: center;
	gap: var(--space-2);
	flex-wrap: wrap;
}

.mmv2-ecole-hero__title-row .mmv2-single-master__tags {
	margin: 0;
	padding: 0;
	max-width: none;
}

.mmv2-ecole-temoignages__title-row {
	display: flex;
	align-items: center;
	gap: var(--space-2);
}

.mmv2-ecole-temoignages__logo {
	width: 48px;
	height: 48px;
	object-fit: contain;
	flex-shrink: 0;
}

.mmv2-ecole-temoignages__back-link {
	display: inline-block;
	margin-top: var(--space-2);
	font-family: var(--font-ui);
	font-size: 14px;
	font-weight: 600;
	color: var(--vert-profond, #0A4A38) !important;
	text-decoration: none;
}

.mmv2-ecole-temoignages__back-link:hover {
	text-decoration: underline;
}

/* Bas du H1 aligné avec le bas de la tuile logo : on retire la marge haute par défaut du
   <h1> (valeur navigateur variable selon la taille de police) pour que le calcul du
   padding-top ci-dessus (.mmv2-ecole-hero--overlap .mmv2-ecole-hero__inner) reste exact. */
.mmv2-ecole-hero__main h1 {
	margin-top: 0;
}

.mmv2-ecole-hero__kpis {
	display: flex;
	gap: var(--space-3);
	margin-left: auto;
}

/* Contrairement à .mmv2-domaine-hero__inner (déjà en grille avec repli mobile), le hero école
   n'avait aucun repli : logo (112px) + main (min-width 240px) + kpis (largeur de contenu)
   dépassaient largement un écran de 390px, provoquant un défilement horizontal de toute la
   page (retour utilisateur du 2026-08-03, audit mobile). Les KPI passent en pleine largeur,
   sous le logo/titre, en grille 2×2 comme sur la page domaine. */
@media (max-width: 900px) {
	.mmv2-ecole-hero__inner {
		flex-wrap: wrap;
	}

	.mmv2-ecole-hero__kpis {
		flex: 1 1 100%;
		margin-left: 0;
		margin-top: var(--space-2);
		display: grid;
		grid-template-columns: repeat(2, 1fr);
	}
}

.mmv2-pillar-tabs {
	max-width: var(--maxw);
	margin: 0 auto;
	padding: 0 var(--space-3);
	display: flex;
	gap: var(--space-2xl);
	border-bottom: 1px solid var(--filet);
}

.mmv2-pillar-tabs__tab {
	background: none !important;
	border: 0 !important;
	border-bottom: 2px solid transparent !important;
	padding: var(--space-2) 0 !important;
	font-family: var(--font-ui);
	font-size: 14.5px;
	font-weight: 500;
	color: var(--gris-texte) !important;
	text-decoration: none !important;
	cursor: pointer;
}

/* Ancres vers les sections de la page (pas des onglets qui masquent/affichent — retour du
   2026-08-02 : tout le contenu doit rester visible sans avoir à cliquer). */
.mmv2-pillar-tabs__tab:hover {
	color: var(--encre) !important;
	border-bottom-color: var(--encre) !important;
}

.mmv2-pillar-layout {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 320px;
	gap: var(--space-4);
	align-items: start;
}

/* Page domaine : pas de rail droit (retiré le 2026-08-02, "les écoles du domaine" déplacées
   au-dessus du tableau) — le comparateur profite de toute la largeur disponible. */
.mmv2-pillar-layout--full {
	grid-template-columns: minmax(0, 1fr);
}

.mmv2-domaine-ecoles-list {
	margin-bottom: var(--space-2);
}

.mmv2-pillar-master-grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--space-2);
}

.mmv2-pillar-master-card {
	display: flex;
	flex-direction: column;
	gap: 6px;
	padding: var(--space-2);
	text-decoration: none;
}

.mmv2-pillar-master-card__badges {
	display: flex;
	gap: 6px;
}

.mmv2-pillar-master-card__title {
	font-weight: 600;
	font-size: 16.5px;
	color: var(--encre) !important;
}

.mmv2-rail__list {
	list-style: none;
	margin: var(--space-1) 0 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 8px;
	font-size: 14px;
	color: var(--text-body) !important;
}

@media (max-width: 900px) {
	.mmv2-pillar-layout {
		grid-template-columns: 1fr;
	}

	.mmv2-pillar-master-grid {
		grid-template-columns: 1fr;
	}
}

/* ---- Page domaine ---- */
.mmv2-domaine-hero__inner {
	display: grid;
	grid-template-columns: 1fr 420px;
	gap: var(--space-4);
	align-items: start;
}

.mmv2-domaine-hero__icon {
	width: 52px;
	height: 52px;
	border-radius: var(--radius-md);
	object-fit: contain;
	margin-bottom: var(--space-1);
	/* SVG en blanc plein (fill:#fff) sur le bandeau crème du domaine : même bug que le
	   carrousel/méga-menu, même correctif (retour du 2026-08-02). */
	background: var(--encre);
	padding: 10px;
	box-sizing: border-box;
}

.mmv2-domaine-hero__accent {
	color: var(--vert) !important;
}

.mmv2-domaine-hero__intro {
	max-width: 640px;
	margin-top: var(--space-1);
}

.mmv2-domaine-hero__kpis {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: var(--space-2);
	padding: var(--space-3);
	/* Aligne le haut de la carte avec le H1, pas avec l'icône qui le précède
	   (retour utilisateur du 2026-08-02) : décalage = hauteur icône + sa marge basse. */
	margin-top: calc(52px + var(--space-1));
}

@media (max-width: 900px) {
	.mmv2-domaine-hero__kpis {
		margin-top: 0;
	}
}

@media (max-width: 900px) {
	.mmv2-domaine-hero__inner {
		grid-template-columns: 1fr;
	}
}

/* ---- Comparateur ---- */
.mmv2-comparison-table {
	background: var(--white, #fff);
	border: 1px solid var(--border, #E3E0D8);
	border-radius: var(--radius-lg);
	/* Pas d'overflow:hidden : ça masquait le popup de comparaison (.mmv2-ct-compare-bar,
	   position:sticky) — cassé pour rien puisque le padding de .mmv2-ct-layout (16px) tient
	   déjà tout le contenu à distance des coins (retour utilisateur du 2026-08-03). */
}

.mmv2-ct-layout {
	position: relative;
	display: grid;
	grid-template-columns: 264px 1fr;
	gap: var(--space-4);
	padding: var(--space-2);
}

/* Filtres masqués : le tableau/les cartes prennent toute la largeur (retour du 2026-08-02). */
.mmv2-ct-layout.is-sidebar-hidden {
	grid-template-columns: 1fr;
}

.mmv2-ct-layout.is-sidebar-hidden .mmv2-ct-sidebar {
	display: none;
}

/* Filtres masqués : .mmv2-ct-main prend alors toute la largeur et démarre pile où était la
   sidebar — sans cette marge, le bouton »/« (absolu) chevauche le coin arrondi de la carte
   .mmv2-ct-toolbar juste en dessous (retour utilisateur du 2026-08-03). */
.mmv2-ct-layout.is-sidebar-hidden .mmv2-ct-main {
	margin-top: 36px;
}

.mmv2-ct-sidebar {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	/* Laisse la place au bouton masquer/afficher, positionné en absolu par-dessus (cf. plus
	   bas) pour rester visible même filtres masqués. */
	margin-top: 36px;
}

/* Bouton masquer/afficher les filtres : chevrons, au-dessus de la colonne de filtres plutôt
   que dans la barre d'outils (retour du 2026-08-02). Positionné en absolu (pas comme enfant
   de .mmv2-ct-sidebar) pour rester visible même quand les filtres sont masqués — sinon plus
   aucun moyen de les réafficher (retour du 2026-08-02, régression corrigée). Aligné sur le
   bord gauche du padding de .mmv2-ct-layout dans les deux états — filtres affichés : pleine
   largeur de la colonne de filtres (264px), libellé "Masquer «" ; filtres masqués : petit
   bouton rond "»", aligné avec le bord gauche de la carte verte .mmv2-ct-toolbar juste en
   dessous (retour utilisateur du 2026-08-03). */
.mmv2-ct-sidebar-collapse {
	position: absolute;
	top: var(--space-2);
	left: var(--space-2);
	z-index: 2;
	width: 264px;
	height: 28px !important;
	padding: 0 12px !important;
	display: flex;
	align-items: center;
	justify-content: flex-start;
	gap: 6px;
	border: 1px solid var(--filet) !important;
	background: #fff !important;
	border-radius: var(--radius-pill) !important;
	color: var(--gris-texte) !important;
	font-family: var(--font-ui) !important;
	font-size: 13px !important;
	font-weight: 500 !important;
	line-height: 1;
	white-space: nowrap;
	cursor: pointer;
}

.mmv2-ct-sidebar-collapse:hover {
	border-color: var(--vert) !important;
	color: var(--vert) !important;
}

.mmv2-ct-sidebar__group {
	padding: var(--space-2);
}

.mmv2-ct-sidebar__group .mp-eyebrow {
	margin: 0 0 var(--space-1);
}

.mmv2-ct-checklist {
	display: flex;
	flex-direction: column;
	gap: 8px;
}

.mmv2-ct-checkbox {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 14px;
	color: var(--text-body) !important;
}

.mmv2-ct-checkbox input {
	/* .mmv2-ct-filter (règle partagée avec les select de la barre d'outils) pose un
	   flex-basis de 180px sur tout élément portant sa classe, dont ces checkbox — sur l'axe
	   flex, flex-basis prime sur width, donc width seul ne suffisait pas à contenir la case
	   (bug visible identiquement sur École et Domaine, retour du 2026-08-02). */
	flex: 0 0 auto !important;
	width: 15px !important;
	height: 15px !important;
	accent-color: var(--vert);
}

.mmv2-ct-more-toggle {
	margin-top: 8px;
	background: none !important;
	border: 0 !important;
	padding: 0 !important;
	color: var(--vert) !important;
	font-size: 13px;
	font-weight: 500;
	cursor: pointer;
}

/* Slider double poignée (Frais de scolarité / Durée) : deux <input type="range"> superposés
   sur la même piste — technique standard, chaque poignée (::-webkit-slider-thumb /
   ::-moz-range-thumb) reste cliquable indépendamment grâce à pointer-events (retour du
   2026-08-02 : remplace les anciens champs Min/Max en <input type="number">). */
.mmv2-ct-dualrange__values {
	display: flex;
	justify-content: space-between;
	font-family: var(--font-mono);
	font-size: 12px;
	color: var(--gris-texte) !important;
	margin-bottom: var(--space-1);
}

.mmv2-ct-dualrange__track {
	position: relative;
	height: 4px;
	margin: 14px 8px 6px;
	background: var(--filet-clair);
	border-radius: 2px;
}

.mmv2-ct-dualrange__fill {
	position: absolute;
	top: 0;
	height: 4px;
	background: var(--vert);
	border-radius: 2px;
}

.mmv2-ct-dualrange__input {
	position: absolute;
	top: 50%;
	left: -8px;
	width: calc(100% + 16px) !important;
	margin: 0 !important;
	padding: 0 !important;
	transform: translateY(-50%);
	background: none !important;
	border: 0 !important;
	pointer-events: none;
}

.mmv2-ct-dualrange__input::-webkit-slider-runnable-track {
	background: none;
	height: 4px;
}

.mmv2-ct-dualrange__input::-moz-range-track {
	background: none;
	height: 4px;
	border: 0;
}

.mmv2-ct-dualrange__input::-webkit-slider-thumb {
	-webkit-appearance: none;
	appearance: none;
	pointer-events: auto;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #fff;
	border: 2px solid var(--vert);
	box-shadow: 0 1px 2px rgba(13, 21, 18, 0.2);
	cursor: pointer;
	margin-top: -6px;
}

.mmv2-ct-dualrange__input::-moz-range-thumb {
	pointer-events: auto;
	width: 16px;
	height: 16px;
	border-radius: 50%;
	background: #fff;
	border: 2px solid var(--vert);
	box-shadow: 0 1px 2px rgba(13, 21, 18, 0.2);
	cursor: pointer;
}

.mmv2-ct-dualrange__input:focus-visible::-webkit-slider-thumb {
	outline: 2px solid var(--vert);
	outline-offset: 2px;
}

.mmv2-ct-dualrange__input:focus-visible::-moz-range-thumb {
	outline: 2px solid var(--vert);
	outline-offset: 2px;
}

.mmv2-ct-segmented {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	background: var(--puce-neutre-bg);
	border-radius: var(--radius-sm);
	padding: 3px;
	gap: 2px;
}

.mmv2-ct-segmented__btn {
	border: 0 !important;
	background: none !important;
	/* Le reset.css du thème impose 0.5rem 1rem sur tout <button> (même conflit de spécificité
	   que border/color) : sans !important ici, le texte déborde de la colonne 1fr et se fait
	   clipper par le conteneur (retour du 2026-08-02). */
	padding: 7px 4px !important;
	width: 100%;
	white-space: nowrap;
	border-radius: 7px;
	font-family: var(--font-ui) !important;
	/* body.is-master-context button { font: inherit } (masters-tokens.css) a une spécificité
	   supérieure à .mmv2-ct-segmented__btn seul et écrasait la taille (héritée : 16px en
	   desktop, tombant à 14px seulement sous certains breakpoints par coïncidence) — mis en
	   !important pour aligner sur les 14px des autres filtres (.mmv2-ct-checkbox), retour
	   utilisateur du 2026-08-03. */
	font-size: 14px !important;
	font-weight: 500 !important;
	color: var(--gris-texte) !important;
	cursor: pointer;
}

.mmv2-ct-segmented__btn.is-active {
	background: #fff !important;
	color: var(--encre) !important;
	box-shadow: var(--shadow-sm);
}

.mmv2-ct-select {
	width: 100%;
	border: 1px solid var(--filet) !important;
	border-radius: var(--radius-sm) !important;
	padding: 8px 10px;
	font-family: var(--font-ui);
	font-size: 13.5px;
	background: #fff;
}

.mmv2-ct-main {
	min-width: 0;
}

.mmv2-ct-view-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-1);
	margin-top: var(--space-1);
	flex-wrap: wrap;
}

.mmv2-ct-result-count {
	font-family: var(--font-display);
	font-weight: 600;
	font-size: 17px;
	color: var(--encre) !important;
}

/* Sur mobile, même mis en pleine largeur sur sa propre ligne, "Cartes/Tableau" +
   "Informations affichées" ensemble sont encore trop larges pour tenir côte à côte (leur
   texte ne peut pas rétrécir) — ils débordaient du cadre. Autorisé à passer sur 2 lignes
   plutôt que de déborder (retour utilisateur du 2026-08-04). */
@media (max-width: 480px) {
	.mmv2-ct-view-controls {
		width: 100%;
		flex-wrap: wrap;
	}
}

.mmv2-ct-view-controls {
	display: flex;
	align-items: center;
	gap: 10px;
}

.mmv2-ct-toggle {
	display: flex;
	background: var(--puce-neutre-bg);
	border-radius: var(--radius-sm);
	padding: 3px;
}

.mmv2-ct-toggle__btn {
	border: 0 !important;
	background: none !important;
	font-size: 13px !important;
	font-weight: 500;
	padding: 6px 13px !important;
	border-radius: 7px !important;
	color: var(--gris-texte) !important;
	cursor: pointer;
}

.mmv2-ct-toggle__btn.is-active {
	background: #fff !important;
	color: var(--encre) !important;
	box-shadow: var(--shadow-sm);
}

.mmv2-ct-cols-toggle {
	border: 1px solid var(--filet) !important;
	background: #fff !important;
	border-radius: var(--radius-sm) !important;
	padding: 7px 13px !important;
	font-size: 13.5px !important;
	color: var(--texte-corps) !important;
	cursor: pointer;
}

.mmv2-ct-cols-panel {
	margin-top: var(--space-1);
	padding: var(--space-2);
}

.mmv2-ct-cols-panel .mp-eyebrow {
	margin: 0 0 var(--space-1);
}

.mmv2-ct-cols-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
	gap: 10px 20px;
}

.mmv2-ct-col-check {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13.5px;
	color: var(--text-body) !important;
}

.mmv2-ct-col-check input {
	width: 15px;
	height: 15px;
	accent-color: var(--vert);
}

.mmv2-ct-row-actions {
	white-space: nowrap;
}

.mmv2-ct-icon-btn {
	width: 44px;
	height: 44px;
	flex: none;
	border-radius: var(--radius-sm) !important;
	border: 1px solid var(--filet) !important;
	background: #fff !important;
	cursor: pointer;
	/* !important : ces boutons ont type="button", donc le reset du thème matche aussi via
	   [type="button"] (même poids qu'une classe) — à spécificité égale et chargé après nous,
	   il gagnait sur `display` (inline-block au lieu de inline-flex), ce qui cassait le gap
	   icône/libellé de .mmv2-ct-icon-btn--labeled (retour utilisateur du 2026-08-06). */
	display: inline-flex !important;
	align-items: center;
	justify-content: center;
	color: var(--gris-texte) !important;
}

.mmv2-ct-icon-btn + .mmv2-ct-icon-btn {
	margin-left: 6px;
}

/* Vue Cartes : plus de place qu'en tableau, donc icône + libellé plutôt qu'icône seule —
   les pictos (losange, flèches) n'étaient pas assez explicites seuls (retour utilisateur du
   2026-08-06). Le tableau, lui, reste icône seule (place limitée) mais avec un `title` natif. */
.mmv2-ct-icon-btn--labeled {
	width: auto;
	padding: 0 14px;
	gap: 7px;
	font-family: var(--font-ui);
	font-size: 13px;
	font-weight: 600;
}

.mmv2-ct-icon-btn__label {
	white-space: nowrap;
}

/* Sélectionné ou survolé : fond plein (doré pour "favori", vert pour "comparer") plutôt
   qu'un simple liseré coloré — pas assez visible selon retour utilisateur du 2026-08-03. */
.mmv2-ct-icon-btn[data-mmv2-favorite][aria-pressed="true"],
.mmv2-ct-icon-btn[data-mmv2-favorite]:hover {
	background: var(--or) !important;
	border-color: var(--or) !important;
	color: #fff !important;
}

.mmv2-ct-icon-btn[data-mmv2-favorite][aria-pressed="true"] .mmv2-single-master__fav-diamond,
.mmv2-ct-icon-btn[data-mmv2-favorite]:hover .mmv2-single-master__fav-diamond {
	background: #fff;
	border-color: #fff;
}

.mmv2-ct-icon-btn[data-mmv2-compare][aria-pressed="true"],
.mmv2-ct-icon-btn[data-mmv2-compare]:hover {
	background: var(--vert) !important;
	border-color: var(--vert) !important;
	color: #fff !important;
}

/* ---- Cartes (vue "Cartes" du comparateur) ---- */
.mmv2-ct-cards {
	display: none;
	grid-template-columns: 1fr;
	gap: var(--space-2);
}

.mmv2-comparison-table.is-cards-view .mmv2-ct-scroll {
	display: none;
}

.mmv2-comparison-table.is-cards-view .mmv2-ct-cards {
	display: grid;
}

/* "Informations affichées" ne pilote que les colonnes du tableau — sans effet en vue Cartes,
   donc masqué dans ce mode (retour utilisateur du 2026-08-03). */
.mmv2-comparison-table.is-cards-view .mmv2-ct-cols-toggle,
.mmv2-comparison-table.is-cards-view .mmv2-ct-cols-panel {
	display: none !important;
}

.mmv2-ct-card {
	border: 1px solid var(--filet);
	border-radius: var(--radius-card);
	padding: var(--space-lg);
	display: grid;
	grid-template-columns: 1fr 300px;
	gap: var(--space-3);
}

.mmv2-ct-card__main {
	display: flex;
	flex-direction: column;
	gap: 11px;
	min-width: 0;
}

.mmv2-ct-card__badges {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--gris-texte) !important;
}

.mmv2-ct-card__ecole-logo {
	width: 20px;
	height: 20px;
	object-fit: contain;
	flex-shrink: 0;
}

.mmv2-ct-card__title {
	margin: 0;
}

.mmv2-ct-card__title a {
	color: var(--encre) !important;
	text-decoration: none;
}

.mmv2-ct-card__pills {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.mmv2-ct-card__figures {
	border-left: 1px solid var(--filet-clair);
	padding-left: var(--space-xl);
	display: flex;
	flex-direction: column;
	gap: var(--space-md);
}

.mmv2-ct-card__kpis {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 12px;
}

.mmv2-ct-card__kpi-value {
	font-weight: 600;
	color: var(--encre) !important;
	margin: 2px 0 0;
}

/* "Favoris"/"Comparer" en icône + libellé (retour du 2026-08-06) prennent plus de place que
   les anciennes icônes seules — "Voir la fiche" se retrouvait écrasé sur 3 lignes dans la
   largeur d'une carte. Passage en 2 lignes : le CTA occupe toute la largeur, les 2 actions se
   partagent la ligne du dessous, plutôt que de les faire cohabiter sur une seule ligne. */
.mmv2-ct-card__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 8px;
}

.mmv2-ct-card__cta {
	flex: 1 1 100%;
	text-align: center;
	text-decoration: none;
}

.mmv2-ct-card__actions .mmv2-ct-icon-btn--labeled {
	flex: 1;
}

/* ---- Barre de comparaison sticky ---- */
/* position:fixed (pas sticky) : sticky ne reste visible que tant que .mmv2-ct-layout est
   dans le flux de défilement — dès qu'on scrolle plus bas (articles liés, footer...), le
   popup disparaissait au lieu de rester affiché en permanence (retour utilisateur du
   2026-08-04). Fixé par rapport à la fenêtre, plus de marge/largeur calées sur le viewport. */
.mmv2-ct-compare-bar {
	position: fixed;
	left: var(--space-2);
	right: var(--space-2);
	bottom: var(--space-2);
	z-index: 500;
	background: var(--encre);
	border-radius: var(--radius-lg);
	padding: var(--space-md) var(--space-xl);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-2);
	box-shadow: var(--shadow-lg);
}

/* Le popup n'est plus dans le flux de .mmv2-ct-layout (position:fixed) : sans cette réserve
   d'espace, il pouvait recouvrir la dernière ligne du tableau/les dernières cartes. */
.mmv2-comparison-table:has(.mmv2-ct-compare-bar:not([hidden])) {
	padding-bottom: 80px;
}

.mmv2-ct-compare-bar__info {
	display: flex;
	align-items: center;
	gap: var(--space-md);
}

.mmv2-ct-compare-bar__count {
	font-weight: 600;
	color: var(--creme) !important;
	/* Sans ça, le texte ("N sélectionné(s)") pouvait se couper sur 2 lignes sur des écrans
	   étroits, cassant le centrage vertical avec les boutons Vider/Comparer à côté (retour
	   utilisateur du 2026-08-04). */
	white-space: nowrap;
}

.mmv2-ct-compare-bar__hint {
	font-size: 14px;
	color: var(--texte-encre-tertiaire) !important;
}

.mmv2-ct-compare-bar__actions {
	display: flex;
	gap: 8px;
	flex-shrink: 0;
}

/* Aucun repli mobile ici : le texte d'aide (__hint), non compressible, poussait les boutons
   Vider/Comparer hors écran (retour utilisateur du 2026-08-03, audit mobile) — masqué en
   dessous de 480px, le compteur suffit. */
@media (max-width: 480px) {
	.mmv2-ct-compare-bar {
		padding: var(--space-sm) var(--space-md);
	}

	.mmv2-ct-compare-bar__hint {
		display: none;
	}
}

.mmv2-ct-compare-bar__clear {
	background: none !important;
	border: 1px solid var(--filet-encre) !important;
	color: var(--texte-encre-nav) !important;
	border-radius: var(--radius-pill) !important;
	padding: 8px 16px !important;
	font-size: 13.5px;
	cursor: pointer;
}

.mmv2-ct-compare-bar__cta {
	background: var(--creme);
	color: var(--encre) !important;
	font-weight: 600;
	border-radius: var(--radius-pill);
	padding: 8px 18px;
	font-size: 13.5px;
	text-decoration: none;
}

@media (max-width: 900px) {
	.mmv2-ct-layout {
		grid-template-columns: 1fr;
	}

	.mmv2-ct-card {
		grid-template-columns: 1fr;
	}

	.mmv2-ct-card__figures {
		border-left: none;
		padding-left: 0;
		border-top: 1px solid var(--filet-clair);
		padding-top: var(--space-2);
	}
}

.mmv2-ct-toolbar {
	padding: var(--space-2);
	background: var(--pale, #E4F3EC);
	border: 1px solid var(--border, #E3E0D8);
	border-radius: var(--radius-card);
	margin-bottom: var(--space-2);
}

.mmv2-ct-search-row {
	width: 100%;
	margin-bottom: var(--space-1);
}

.mmv2-ct-filters-row {
	display: flex;
	flex-wrap: wrap;
	gap: var(--space-1);
}

.mmv2-ct-search-wrap {
	width: 100%;
	display: flex;
	align-items: center;
	gap: 8px;
	background: #fff;
	border: 1px solid var(--border, #E3E0D8);
	padding: 0 12px;
}

.mmv2-ct-search-wrap .mmv2-icon {
	color: var(--muted, #66716B) !important;
	flex-shrink: 0;
}

.mmv2-ct-search {
	flex: 1;
	border: 0 !important;
	border-radius: 0 !important;
	padding: 10px 0 !important;
	font-family: var(--font-ui);
	font-size: 14px;
	background: transparent !important;
	width: auto;
}

.mmv2-ct-search:focus {
	outline: none;
}

.mmv2-ct-filter {
	flex: 1 1 180px;
	border: 1px solid var(--border, #E3E0D8);
	background: #fff;
	padding: 10px 12px;
	font-family: var(--font-ui);
	font-size: 14px;
	color: var(--text, #0D1512) !important;
}

.mmv2-ct-reset {
	flex: 0 0 auto;
	border: 1px solid var(--filet) !important;
	border-radius: var(--radius-pill) !important;
	background: #fff !important;
	color: var(--text) !important;
	font-family: var(--font-ui);
	font-size: 13px;
	font-weight: 500;
	padding: 0 16px !important;
	cursor: pointer;
	white-space: nowrap;
}

.mmv2-ct-reset:hover {
	background: var(--primary, #0F7A5F);
	color: #fff !important;
}

.mmv2-ct-scroll {
	overflow-x: auto;
}

.mmv2-ct-table {
	width: 100%;
	/* `width: 100%` seul ne suffit pas toujours à étirer un tableau table-layout:auto jusqu'au
	   bord de son conteneur quand peu de colonnes sont visibles (peu de contenu à répartir) :
	   la colonne d'actions se retrouve alignée sur la largeur du contenu, pas sur celle du
	   cadre — `min-width: 100%` force l'étirement de façon fiable (retour utilisateur du
	   2026-08-04, vérifié en isolant la propriété responsable). */
	min-width: 100%;
	border-collapse: collapse;
	font-family: var(--font-ui);
	font-size: 14px;
	white-space: nowrap;
}

.mmv2-ct-table th,
.mmv2-ct-table td {
	padding: 12px 16px;
	text-align: left;
	border-bottom: 1px solid var(--border, #E3E0D8);
}

/* Nom du master : autorisé sur deux lignes plutôt que nowrap comme le reste du tableau
   (sinon la colonne s'élargit pour tenir les intitulés les plus longs sur une seule ligne),
   mais plafonné à un tiers du tableau et tronqué en "…" au-delà de deux lignes
   (retour utilisateur du 2026-08-02). */
.mmv2-ct-table th:first-child,
.mmv2-ct-table td:first-child {
	white-space: normal;
	min-width: 320px;
}

.mmv2-ct-table td:first-child a {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	overflow: hidden;
	text-overflow: ellipsis;
}

/* Logo de l'école dans la colonne École du tableau — mêmes proportions que la vue Cartes
   (.mmv2-ct-card__ecole-logo), pour identifier l'école sans lire le nom (retour utilisateur
   du 2026-08-06). En flex plutôt qu'en flux inline normal : un simple white-space:normal
   (2026-08-09, 1re itération) réglait le débordement ("EM Strasbourg") mais le repli pouvait
   séparer le logo du nom — logo seul sur une ligne, nom seul sur la suivante, pire que le
   problème d'origine (retour utilisateur du 2026-08-09, 2e itération). Le flex garde le logo
   et le début du nom toujours sur la même ligne ; seul le TEXTE (.mmv2-ct-ecole-cell__name,
   min-width:0 pour pouvoir rétrécir sous sa largeur intrinsèque) repasse à la ligne si le nom
   est vraiment trop long pour la largeur restante. */
.mmv2-ct-ecole-cell {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	white-space: normal;
}

.mmv2-ct-ecole-cell__logo {
	width: 20px;
	height: 20px;
	object-fit: contain;
	flex: none;
	margin-top: 2px;
}

.mmv2-ct-ecole-cell__name {
	min-width: 0;
	overflow-wrap: break-word;
}

.mmv2-ct-table thead th {
	font-size: 12px;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--primary-dark, #0A4A38) !important;
	background: var(--pale, #E4F3EC);
	cursor: pointer;
	user-select: none;
}

.mmv2-ct-table thead th[data-sort]::after {
	content: "↕";
	margin-left: 6px;
	opacity: 0.4;
	font-size: 11px;
}

.mmv2-ct-table thead th[data-dir="asc"]::after {
	content: "↑";
	opacity: 1;
}

.mmv2-ct-table thead th[data-dir="desc"]::after {
	content: "↓";
	opacity: 1;
}

.mmv2-ct-table tbody tr:hover {
	background: var(--paper, #F7F6F2);
}

.mmv2-ct-table tbody td a {
	color: var(--primary-dark, #0A4A38) !important;
	font-weight: 700;
	text-decoration: none;
}

.mmv2-ct-table tbody td a:hover {
	text-decoration: underline;
}

.mmv2-ct-num {
	text-align: right;
}

.mmv2-ct-empty,
.mmv2-ct-empty-state {
	padding: var(--space-3);
	text-align: center;
	color: var(--muted, #66716B) !important;
}

.mmv2-ct-more-wrap {
	display: flex;
	justify-content: center;
	padding: var(--space-3);
	border-top: 1px solid var(--border, #E3E0D8);
}

/* Même traitement que les cards domaines/écoles (.mmv2-hub__tile) : vert pâle + texte vert
   foncé, hover en vert plein + texte blanc — surcharge explicite (cf. bouton précédemment
   hérité des couleurs Major Prépa). */
.mmv2-ct-more {
	background: #E4F3EC !important;
	color: #0A4A38 !important;
	border: none !important;
	border-radius: var(--radius-pill) !important;
	font-family: var(--font-ui) !important;
	font-weight: 600 !important;
	padding: 12px 24px !important;
	transition: background 0.15s ease, color 0.15s ease;
}

.mmv2-ct-more:hover {
	background: #0F7A5F !important;
	color: #FFFFFF !important;
}

/* ---- Écran comparateur (côte à côte, jusqu'à 3 masters) ---- */
.mmv2-compare-screen__toolbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-2);
	margin-bottom: var(--space-3);
	flex-wrap: wrap;
}

/* .mmv2-compare-grid a une colonne fixe de 220px + 1 à 3 colonnes de contenu : aucun repli
   n'existait, l'écran comparateur ne s'affichait pas correctement en mobile (retour
   utilisateur du 2026-08-04). Le tableau garde sa mise en page réelle mais défile
   horizontalement plutôt que de déborder de la page. */
@media (max-width: 900px) {
	.mmv2-compare-screen__scroll {
		overflow-x: auto;
	}

	.mmv2-compare-grid {
		grid-template-columns: 140px repeat(1, minmax(200px, 1fr));
		min-width: max-content;
	}

	.mmv2-compare-grid--2 {
		grid-template-columns: 140px repeat(2, minmax(200px, 1fr));
	}

	.mmv2-compare-grid--3 {
		grid-template-columns: 140px repeat(3, minmax(200px, 1fr));
	}
}

.mmv2-compare-screen__toolbar-actions {
	display: flex;
	align-items: center;
	gap: var(--space-2);
}

.mmv2-compare-screen__switch {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-size: 13.5px;
	color: var(--text-body) !important;
	cursor: pointer;
}

.mmv2-compare-screen__switch input {
	accent-color: var(--vert);
}

.mmv2-compare-grid {
	display: grid;
	grid-template-columns: 220px repeat(1, minmax(0, 1fr));
	gap: var(--space-2);
	align-items: center;
	padding: var(--space-2) var(--space-2);
	border-radius: var(--radius-md);
}

.mmv2-compare-grid--2 {
	grid-template-columns: 220px repeat(2, minmax(0, 1fr));
}

.mmv2-compare-grid--3 {
	grid-template-columns: 220px repeat(3, minmax(0, 1fr));
}

.mmv2-compare-row--alt {
	background: var(--creme);
}

.mmv2-compare-row[data-same="1"].is-hidden-diff {
	display: none;
}

.mmv2-compare-grid__label {
	color: var(--gris-libelle) !important;
}

.mmv2-compare-grid__nd {
	color: var(--gris-libelle) !important;
}

.mmv2-compare-grid__best {
	display: inline-block;
	font-weight: 600;
	color: var(--vert-profond) !important;
	background: var(--puce-vert-bg);
	border-radius: var(--radius-sm);
	padding: 4px 10px;
}

.mmv2-compare-grid__best-label {
	display: block;
	margin-top: 4px;
	color: var(--vert) !important;
}

.mmv2-compare-grid__pills {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
}

.mmv2-compare-card {
	position: relative;
	padding: var(--space-2);
	display: flex;
	flex-direction: column;
	gap: 11px;
}

.mmv2-compare-card__remove {
	position: absolute;
	top: 12px;
	right: 12px;
	width: 24px;
	height: 24px;
	border-radius: var(--radius-sm);
	border: 1px solid var(--filet);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 12px;
	color: var(--gris-texte) !important;
	text-decoration: none;
}

.mmv2-compare-card__head {
	display: flex;
	align-items: center;
	gap: 9px;
}

.mmv2-compare-card__logo {
	width: 30px;
	height: 30px;
	border-radius: var(--radius-sm);
	object-fit: contain;
}

.mmv2-compare-card__ecole {
	font-weight: 600;
	color: var(--encre) !important;
}

.mmv2-compare-card__title {
	font-size: 17px;
	font-weight: 600;
	color: var(--encre) !important;
}

.mmv2-compare-card__cta {
	width: 100%;
	text-align: center;
	text-decoration: none;
}

.mmv2-compare-add {
	margin-top: var(--space-2);
	border: 1px dashed var(--gris-libelle);
	border-radius: var(--radius-md);
	padding: var(--space-2) var(--space-3);
	display: flex;
	align-items: center;
	gap: 11px;
	text-decoration: none;
	color: var(--encre) !important;
	width: fit-content;
}

.mmv2-compare-add__plus {
	width: 26px;
	height: 26px;
	border-radius: var(--radius-pill);
	border: 1px solid var(--gris-libelle);
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 15px;
	color: var(--gris-texte) !important;
}

/* ---- Article evergreen / témoignage ---- */
.mmv2-article__title {
	color: #fff !important;
	margin: 0;
}

.mmv2-article__byline {
	color: rgba(255, 255, 255, 0.7) !important;
	margin: var(--space-2) 0 0;
}

/* Bloc "Dans cet article" (école/domaines/master) — cf. mmv2_temoignage_context_banner()
   dans helpers.php, rendu à l'intérieur de .mmv2-article__toc (position:sticky) pour rester
   visible au scroll juste au-dessus du sommaire, comme demandé (retour utilisateur du
   2026-08-03, 2e itération — remplace l'ancien bandeau en tête d'article). */
.mmv2-toc__context {
	display: flex;
	flex-direction: column;
	gap: var(--space-1);
	padding-bottom: var(--space-2);
	margin-bottom: var(--space-2);
	border-bottom: 1px solid var(--filet-clair);
}

/* .mmv2-article__toc (donc la 1re instance de ce bloc) est masqué sous 1200px — cette 2e
   instance, hors du sommaire, prend le relais uniquement en mobile pour ne pas perdre
   l'info École/Domaine/Master (retour utilisateur du 2026-08-03, audit mobile). */
.mmv2-toc__context.mmv2-toc__context--mobile-only {
	display: none;
}

@media (max-width: 1200px) {
	.mmv2-toc__context.mmv2-toc__context--mobile-only {
		display: flex;
		max-width: var(--maxw);
		margin: var(--space-3) auto 0;
		padding: var(--space-2) var(--space-3) var(--space-3);
		border-bottom: none;
	}
}

.mmv2-toc__ecole {
	display: flex;
	align-items: center;
	gap: 8px;
	text-decoration: none !important;
	color: var(--encre) !important;
	font-weight: 600;
	font-size: 14.5px;
}

.mmv2-toc__ecole-logo {
	width: 32px;
	height: 32px;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #fff;
	border: 1px solid var(--filet);
	border-radius: var(--radius-sm);
}

.mmv2-toc__ecole-logo img {
	width: 100%;
	height: 100%;
	object-fit: contain;
	padding: 4px;
	box-sizing: border-box;
}

/* Domaine(s) et master : même schéma que .mmv2-toc__ecole (icône carrée + libellé) plutôt
   que des tags en pilule — un intitulé de master est souvent long et rendait mal étiré sur
   plusieurs lignes dans une forme de pilule (retour utilisateur du 2026-08-03, 3e itération). */
.mmv2-toc__row {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	text-decoration: none !important;
	color: var(--encre) !important;
	font-size: 13.5px;
	line-height: 1.35;
}

.mmv2-toc__row-icon {
	width: 26px;
	height: 26px;
	flex-shrink: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background: var(--encre);
	border-radius: var(--radius-sm);
	color: #fff;
	margin-top: 1px;
}

/* SVG de domaine en blanc plein (get_field('icon', $terme)) — même repère de couleur que le
   méga-menu (.mmv2-megamenu__item-media--icon), sinon invisible sur le fond clair. L'icône
   mmv2_icon('diploma') du master est déjà en `currentColor` (blanc via .mmv2-toc__row-icon). */
.mmv2-toc__row-icon img {
	width: 14px;
	height: 14px;
	object-fit: contain;
}

/* .mmv2-icon impose color:vert !important et margin-bottom (pensé pour un usage au-dessus
   d'un texte, cf. .mmv2-kpi) — le margin-bottom décalait le picto vers le haut dans son
   carré malgré le flex centré du parent, et le vert cassait le blanc voulu ici (retour
   utilisateur du 2026-08-03). */
.mmv2-toc__row-icon .mmv2-icon {
	width: 15px;
	height: 15px;
	margin-bottom: 0 !important;
	color: #fff !important;
}

.mmv2-toc__row:hover {
	color: var(--vert) !important;
}

/* .mmv2-article__lead/__thumb vivent maintenant DANS .mmv2-article__main (à côté du sommaire
   dès le haut de page, retour du 2026-08-02 : "voir plus d'éléments avant de scrolle") — plus
   besoin de centrer/contraindre leur largeur, la colonne (var(--measure-article)) s'en charge
   déjà. */
.mmv2-article__lead {
	margin: 0 0 var(--space-2);
}

.mmv2-article__thumb {
	margin: 0 0 var(--space-3);
}

.mmv2-article__thumb img {
	display: block;
	width: 100%;
	max-height: 420px !important;
	object-fit: cover;
	border: 1px solid var(--border, #E3E0D8);
	box-shadow: var(--shadow-lg, 0 20px 60px rgba(13, 21, 18, 0.12));
}

/* Le titre/chapô de l'article restent visibles avant l'image (déjà le cas dans le markup :
   header puis .mmv2-article__thumb) — seule la hauteur de l'illustration change ici.
   !important nécessaire : le thème (hello-elementor/theme.css) impose .post .wp-post-image
   {max-height:500px} à une spécificité (0,2,0) supérieure à la nôtre (0,1,1). Encore réduite
   (280 → 220px) pour voir plus de contenu sans scroller (retour du 2026-08-02). */
.mmv2-article__thumb--capped img {
	max-height: 220px !important;
	border-radius: var(--radius-lg);
	border: none;
	box-shadow: none;
}

.mmv2-article__layout {
	display: grid;
	grid-template-columns: 220px minmax(0, var(--measure-article)) 300px;
	justify-content: center;
	align-items: start;
	gap: var(--space-4);
	max-width: none;
	/* Moins de marge qu'une fiche master (héritée de .mmv2-single-master__body, 48px) : le
	   sommaire/chapô/image sont maintenant dans cette rangée dès le haut de page. Encore
	   réduite (retour du 2026-08-02 : "on peut supprimer/réduire le margin et padding"). */
	margin-top: var(--space-1) !important;
}

.mmv2-article__toc {
	position: sticky;
	/* Idem .mmv2-toc : cette règle, plus tardive dans la feuille, gagnait sur la première
	   correction et laissait le haut du sommaire caché sous le bandeau fixe au scroll
	   (retour du 2026-08-02). */
	top: calc(var(--header-h-desktop) + 20px);
}

.mmv2-article__share {
	margin-top: var(--space-2);
	background: none !important;
	border: 1px solid var(--filet) !important;
	border-radius: var(--radius-pill) !important;
	padding: 8px 14px !important;
	/* body.is-master-context button { font: inherit } (masters-tokens.css) bat ce composant
	   sans !important — même bug que .mmv2-ct-segmented__btn (retour utilisateur du
	   2026-08-03). */
	font-size: 13px !important;
	color: var(--text-body) !important;
	cursor: pointer;
}

.mmv2-article__main {
	min-width: 0;
}

.mmv2-article__content {
	max-width: none;
	margin: 0;
}

@media (max-width: 1200px) {
	.mmv2-article__layout {
		grid-template-columns: minmax(0, var(--measure-article));
	}

	.mmv2-article__toc {
		display: none;
	}
}

.mmv2-article__content h2 {
	font-family: var(--font-display);
	font-weight: 600;
	font-size: 28px;
	color: var(--primary-dark, #0A4A38) !important;
	margin: var(--space-5) 0 var(--space-2);
}

.mmv2-article__content h3 {
	font-family: var(--font-display);
	font-weight: 500;
	font-size: 22px;
	color: var(--text, #0D1512) !important;
	margin: var(--space-4) 0 var(--space-1);
}

.mmv2-article__content p {
	margin: 0 0 var(--space-2);
}

.mmv2-article__content ul,
.mmv2-article__content ol {
	margin: 0 0 var(--space-2);
	padding-left: 1.4em;
}

.mmv2-article__content blockquote {
	margin: var(--space-3) 0;
	padding: var(--space-2) var(--space-3);
	border-left: 3px solid var(--vert);
	background: var(--pale, #E4F3EC);
	font-style: italic;
	color: var(--primary-dark, #0A4A38) !important;
}

.mmv2-article__content img {
	max-width: 100%;
	height: auto;
}

/* CTA de l'ancienne charte, encore présents en HTML brut dans certains post_content
   (.btn-row > a.btn-link.btn-primary.btn-white — pas systématiquement retirés par
   mmv2_article_content(), qui ne cible que le doublon vers "tous les masters", cf.
   helpers.php) : recolorés ici pour rester cohérents avec la nouvelle charte plutôt que
   dans l'ancien style encre à liseré or et ombre dure (retour utilisateur du 2026-08-03). */
.mmv2-article__content .btn-row {
	text-align: center;
	margin: var(--space-3) 0;
}

.mmv2-article__content .btn-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	background: var(--vert) !important;
	border: 0 !important;
	border-radius: var(--radius-pill) !important;
	box-shadow: none !important;
	padding: 14px 28px !important;
	font-family: var(--font-ui);
	font-size: 15px;
	font-weight: 600;
	text-decoration: none !important;
	color: #fff !important;
}

.mmv2-article__content .btn-link .btn-text {
	color: #fff !important;
}

.mmv2-article__content .btn-link:hover {
	background: var(--vert-profond) !important;
}

.mmv2-article__cta {
	background: var(--pale, #E4F3EC);
	max-width: 760px;
	margin: var(--space-5) auto;
	padding: var(--space-3);
	border-top: none;
}

/* ---- Pagination (archives de catégorie) ---- */
.mmv2-ct-more-wrap .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	height: 40px;
	padding: 0 12px;
	margin: 0 4px;
	border-radius: var(--radius-pill);
	background: var(--pale, #E4F3EC);
	color: var(--primary-dark, #0A4A38) !important;
	font-family: var(--font-ui);
	font-weight: 600;
	text-decoration: none;
}

.mmv2-ct-more-wrap .page-numbers.current {
	background: #0F7A5F;
	color: #FFFFFF !important;
}

.mmv2-ct-more-wrap .page-numbers:hover:not(.current) {
	background: #0F7A5F;
	color: #FFFFFF !important;
}
