/*
Theme Name: Les Cours de l'Espoir
Theme URI: https://lescoursdelespoir.sn
Author: Groupe Scolaire Les Cours de l'Espoir
Description: Thème WordPress sur mesure (block theme / FSE) pour le Groupe Scolaire Les Cours de l'Espoir, Thiès — Sénégal. Direction artistique institutionnelle : bleu roi, ivoire et or, typographie éditoriale Playfair Display + Inter. Animations élégantes en JavaScript natif (aucune librairie), polices auto-hébergées, aucun page builder.
Version: 1.0.0
Requires at least: 6.5
Tested up to: 6.7
Requires PHP: 7.4
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: lespoir
Tags: block-theme, full-site-editing, education, school, one-column, custom-colors, custom-menu, accessibility-ready, translation-ready
*/

/* =========================================================================
   1. BASE
   ========================================================================= */

*,
*::before,
*::after {
	box-sizing: border-box;
}

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
}

body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	overflow-x: hidden;
}

img,
video {
	max-width: 100%;
	height: auto;
}

/* Ligature typographique française : pas de veuve sur les petits titres */
h1, h2, h3 {
	text-wrap: balance;
}

p {
	text-wrap: pretty;
}

/* Focus visible — jamais supprimé, toujours contrasté sur clair comme sur foncé */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--wp--preset--color--gold);
	outline-offset: 3px;
	border-radius: 4px;
}

.lce-on-dark :where(a, button, input, select, textarea, summary):focus-visible {
	outline-color: var(--wp--preset--color--gold);
}

/* Lien d'évitement clavier */
.lce-skip-link {
	position: absolute;
	top: -100px;
	left: 1rem;
	z-index: 1000;
	padding: 0.875rem 1.5rem;
	background: var(--wp--preset--color--navy);
	color: var(--wp--preset--color--white);
	border-radius: var(--wp--custom--radius--pill);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	text-decoration: none;
	transition: top var(--wp--custom--transition--fast);
}

.lce-skip-link:focus {
	top: 1rem;
}

::selection {
	background: var(--wp--preset--color--navy);
	color: #fff;
}

/* =========================================================================
   2. PRIMITIVES DE MISE EN PAGE
   ========================================================================= */

/* « clip » plutôt que « hidden » : cela empêche tout défilement latéral
   accidentel sans créer de conteneur de défilement, ce qui casserait
   le comportement collant de l'en-tête. */
.lce-main {
	overflow-x: clip;
}

.lce-section {
	padding-block: var(--wp--preset--spacing--90);
	position: relative;
}

.lce-section--tight {
	padding-block: clamp(3rem, 6vw, 5.5rem);
}

.lce-shell {
	width: 100%;
	max-width: var(--wp--style--global--wide-size);
	margin-inline: auto;
	padding-inline: clamp(1.25rem, 5vw, 4rem);
}

.lce-shell--narrow {
	max-width: 58rem;
}

/* Surtitre doré + filet : signature visuelle du site */
.lce-eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--gold-ink);
}

.lce-eyebrow::before {
	content: "";
	width: 2.25rem;
	height: 1px;
	background: currentColor;
	opacity: 0.6;
	flex: none;
}

.lce-eyebrow--centered {
	justify-content: center;
}

.lce-eyebrow--centered::after {
	content: "";
	width: 2.25rem;
	height: 1px;
	background: currentColor;
	opacity: 0.6;
	flex: none;
}

.lce-on-dark .lce-eyebrow {
	color: var(--wp--preset--color--gold);
}

/* En-tête de section */
.lce-section-head {
	max-width: 46rem;
	margin-bottom: clamp(2.5rem, 5vw, 4rem);
}

.lce-section-head--centered {
	margin-inline: auto;
	text-align: center;
}

.lce-section-head h2,
.lce-section-head .lce-title {
	margin: 0;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-2);
	font-weight: 600;
	line-height: 1.12;
	letter-spacing: var(--wp--custom--tracking--tight);
	color: var(--wp--preset--color--navy);
}

.lce-section-head p {
	margin: 1.125rem 0 0;
	font-size: var(--wp--preset--font-size--large);
	line-height: 1.65;
	color: var(--wp--preset--color--muted);
}

.lce-on-dark .lce-section-head h2,
.lce-on-dark .lce-section-head .lce-title {
	color: #fff;
}

.lce-on-dark .lce-section-head p {
	color: rgba(255, 255, 255, 0.75);
}

/* Fonds de section */
.lce-bg-ivory { background: var(--wp--preset--color--ivory); }
.lce-bg-white { background: var(--wp--preset--color--white); }
.lce-bg-sand  { background: var(--wp--preset--color--sand); }

.lce-bg-navy {
	background: var(--wp--preset--color--navy);
	color: rgba(255, 255, 255, 0.82);
}

.lce-bg-navy::before {
	content: "";
	position: absolute;
	inset: 0;
	background:
		radial-gradient(60rem 30rem at 15% -10%, rgba(29, 40, 201, 0.45), transparent 60%),
		radial-gradient(40rem 24rem at 100% 110%, rgba(201, 162, 39, 0.16), transparent 65%);
	pointer-events: none;
}

.lce-bg-navy > * {
	position: relative;
	z-index: 1;
}

/* Filet doré décoratif */
.lce-rule {
	width: 3.5rem;
	height: 2px;
	background: var(--wp--preset--color--gold);
	border: 0;
	margin: 1.5rem 0;
}

.lce-rule--centered { margin-inline: auto; }

/* =========================================================================
   3. BOUTONS
   ========================================================================= */

.lce-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	min-height: 3rem;
	padding: 0.9375rem 1.75rem;
	border: 1px solid transparent;
	border-radius: var(--wp--custom--radius--pill);
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	line-height: 1.2;
	text-decoration: none;
	cursor: pointer;
	transition:
		background-color var(--wp--custom--transition--base),
		color var(--wp--custom--transition--base),
		border-color var(--wp--custom--transition--base),
		transform var(--wp--custom--transition--fast),
		box-shadow var(--wp--custom--transition--base);
}

.lce-btn:hover { text-decoration: none; }
.lce-btn:active { transform: translateY(1px); }

.lce-btn svg {
	width: 1.125rem;
	height: 1.125rem;
	flex: none;
	transition: transform var(--wp--custom--transition--base);
}

.lce-btn:hover svg { transform: translateX(3px); }

.lce-btn--primary {
	background: var(--wp--preset--color--primary);
	color: #fff;
	box-shadow: 0 10px 26px -14px rgba(29, 40, 201, 0.9);
}

.lce-btn--primary:hover {
	background: var(--wp--preset--color--navy);
	color: #fff;
	box-shadow: 0 16px 34px -14px rgba(10, 17, 64, 0.75);
}

.lce-btn--gold {
	background: var(--wp--preset--color--gold);
	color: var(--wp--preset--color--navy);
	box-shadow: 0 10px 26px -14px rgba(201, 162, 39, 0.9);
}

.lce-btn--gold:hover {
	background: #dab43c;
	color: var(--wp--preset--color--navy);
}

.lce-btn--outline {
	background: transparent;
	color: var(--wp--preset--color--navy);
	border-color: rgba(10, 17, 64, 0.22);
}

.lce-btn--outline:hover {
	background: var(--wp--preset--color--navy);
	border-color: var(--wp--preset--color--navy);
	color: #fff;
}

.lce-on-dark .lce-btn--outline,
.lce-btn--outline-light {
	color: #fff;
	border-color: rgba(255, 255, 255, 0.38);
	background: rgba(255, 255, 255, 0.04);
}

.lce-on-dark .lce-btn--outline:hover,
.lce-btn--outline-light:hover {
	background: #fff;
	border-color: #fff;
	color: var(--wp--preset--color--navy);
}

.lce-btn--whatsapp {
	background: #1faa54;
	color: #fff;
}

.lce-btn--whatsapp:hover { background: #17853f; color: #fff; }

.lce-btn--ghost {
	background: transparent;
	color: var(--wp--preset--color--primary);
	padding-inline: 0.25rem;
	min-height: 2.75rem;
}

.lce-btn--ghost:hover { color: var(--wp--preset--color--navy); }

.lce-btn-group {
	display: flex;
	flex-wrap: wrap;
	gap: 0.875rem;
	align-items: center;
}

/* =========================================================================
   4. EN-TÊTE ET NAVIGATION
   ========================================================================= */

.lce-header {
	position: sticky;
	top: 0;
	z-index: 100;
	background: rgba(255, 255, 255, 0.92);
	backdrop-filter: saturate(1.6) blur(14px);
	-webkit-backdrop-filter: saturate(1.6) blur(14px);
	border-bottom: 1px solid var(--wp--preset--color--line);
	transition: box-shadow var(--wp--custom--transition--base), background-color var(--wp--custom--transition--base);
}

.lce-header.is-scrolled {
	box-shadow: 0 10px 30px -22px rgba(10, 17, 64, 0.55);
}

/* Bandeau de contact au-dessus de la navigation */
.lce-topbar {
	background: var(--wp--preset--color--navy);
	color: rgba(255, 255, 255, 0.85);
	font-size: var(--wp--preset--font-size--x-small);
}

.lce-topbar__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem;
	min-height: 2.75rem;
	padding-block: 0.375rem;
}

.lce-topbar__list {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.375rem 1.5rem;
	margin: 0;
	padding: 0;
	list-style: none;
}

.lce-topbar a {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	color: inherit;
	text-decoration: none;
	transition: color var(--wp--custom--transition--fast);
}

.lce-topbar a:hover { color: var(--wp--preset--color--gold); text-decoration: none; }

/* Numéro d'autorisation : même gabarit que les liens du bandeau (icône + texte),
   mais non cliquable — c'est une mention légale, pas une action. Séparé du
   premier téléphone par un filet vertical discret. */
.lce-topbar__auth {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding-right: 1.5rem;
	margin-right: 0.375rem;
	border-right: 1px solid rgba(255, 255, 255, 0.18);
	color: rgba(255, 255, 255, 0.7);
	white-space: nowrap;
}

.lce-topbar__auth svg { opacity: 0.75; }

.lce-topbar svg {
	width: 0.9375rem;
	height: 0.9375rem;
	flex: none;
	opacity: 0.75;
}

.lce-topbar__right {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	flex: none;
}

/* Accès à la plateforme e-learning. Il vit dans le bandeau supérieur plutôt que
   dans la barre de navigation : celle-ci est plafonnée à la largeur de contenu
   du site et n'a pas la place d'accueillir un second bouton. */
.lce-topbar__lms {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 2rem;
	padding: 0.3125rem 0.875rem;
	border: 1px solid rgba(255, 255, 255, 0.28);
	border-radius: var(--wp--custom--radius--pill);
	font-weight: 600;
	white-space: nowrap;
	transition: background-color var(--wp--custom--transition--base), border-color var(--wp--custom--transition--base), color var(--wp--custom--transition--base);
}

a.lce-topbar__lms:hover {
	background: var(--wp--preset--color--gold);
	border-color: var(--wp--preset--color--gold);
	color: var(--wp--preset--color--navy);
}

.lce-topbar__lms svg { opacity: 1; }

.lce-topbar__socials {
	display: flex;
	align-items: center;
	gap: 0.25rem;
}

.lce-topbar__socials a {
	width: 2rem;
	height: 2rem;
	display: inline-grid;
	place-items: center;
	border-radius: 50%;
	transition: background-color var(--wp--custom--transition--fast);
}

.lce-topbar__socials a:hover { background: rgba(255, 255, 255, 0.12); }
.lce-topbar__socials svg { width: 1rem; height: 1rem; opacity: 0.9; }

@media (max-width: 900px) {
	.lce-topbar { display: none; }
}

/* Barre principale */
.lce-navbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-width: 0;
	height: var(--wp--custom--header--height);
	transition: height var(--wp--custom--transition--base);
}

.lce-navbar > * { min-width: 0; }

.lce-header.is-scrolled .lce-navbar {
	height: var(--wp--custom--header--height-compact);
}

.lce-brand {
	display: inline-flex;
	align-items: center;
	gap: 0.875rem;
	text-decoration: none;
	color: inherit;
	flex: none;
}

.lce-brand__mark {
	width: 3rem;
	height: 3rem;
	flex: none;
	object-fit: contain;
	transition: width var(--wp--custom--transition--base), height var(--wp--custom--transition--base);
}

.lce-header.is-scrolled .lce-brand__mark {
	width: 2.5rem;
	height: 2.5rem;
}

.lce-brand__text { display: grid; gap: 0.125rem; }

.lce-brand__name {
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: var(--wp--custom--tracking--tight);
	color: var(--wp--preset--color--navy);
	white-space: nowrap;
}

.lce-brand__tag {
	font-size: 0.6875rem;
	font-weight: 500;
	letter-spacing: 0.09em;
	text-transform: uppercase;
	color: var(--wp--preset--color--gold-ink);
	white-space: nowrap;
}

@media (max-width: 380px) {
	.lce-brand__text { display: none; }
}

/* Navigation bureau.
   Le seuil CSS ci-dessous est une première approximation ; la largeur réellement
   nécessaire dépend du nombre d'entrées du menu et de la longueur de leurs
   libellés, que l'école peut modifier à tout moment. Un script mesure donc la
   place occupée et bascule sur le menu mobile (classe « is-compact ») dès que
   la barre ne tient plus — quel que soit le contenu du menu. */
.lce-nav { display: none; }

@media (min-width: 1280px) {
	.lce-nav {
		display: flex;
		align-items: center;
		justify-content: center;
		gap: 0.125rem;
		flex: 1 1 auto;
		margin-inline: auto;
	}
}

.lce-header.is-compact .lce-nav { display: none; }

.lce-nav__link {
	position: relative;
	display: inline-flex;
	align-items: center;
	height: 2.75rem;
	padding-inline: 0.625rem;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 500;
	color: var(--wp--preset--color--ink);
	text-decoration: none;
	border-radius: var(--wp--custom--radius--sm);
	transition: color var(--wp--custom--transition--fast);
	white-space: nowrap;
}

/* Réglages du mode bureau.
   La barre de navigation est plafonnée à la largeur de contenu du site
   (1248 px) : au-delà, agrandir la fenêtre n'ajoute aucune place. Ces valeurs
   resserrées s'appliquent donc à toutes les largeurs de bureau, et garantissent
   un vrai espace de respiration autour du bouton d'inscription. */
@media (min-width: 1280px) {
	.lce-header .lce-shell {
		padding-inline: 2rem;
	}

	.lce-brand { gap: 0.625rem; }
	.lce-brand__mark { width: 2.5rem; height: 2.5rem; }
	.lce-header.is-scrolled .lce-brand__mark { width: 2.25rem; height: 2.25rem; }
	.lce-brand__name { font-size: 0.9375rem; }

	.lce-nav__link {
		padding-inline: 0.4375rem;
		font-size: 0.875rem;
	}

	.lce-nav__link::after { left: 0.4375rem; right: 0.4375rem; }

	.lce-nav-actions .lce-btn { padding-inline: 1.125rem; }
}

.lce-nav__link::after {
	content: "";
	position: absolute;
	left: 0.625rem;
	right: 0.625rem;
	bottom: 0.5rem;
	height: 2px;
	background: var(--wp--preset--color--gold);
	transform: scaleX(0);
	transform-origin: left;
	transition: transform var(--wp--custom--transition--base);
}

.lce-nav__link:hover,
.lce-nav__link[aria-current="page"] {
	color: var(--wp--preset--color--primary);
	text-decoration: none;
}

.lce-nav__link:hover::after,
.lce-nav__link[aria-current="page"]::after {
	transform: scaleX(1);
}

.lce-nav-actions {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	flex: none;
}

.lce-nav-actions .lce-btn {
	min-height: 2.75rem;
	padding: 0.75rem 1.25rem;
	white-space: nowrap;
}

@media (max-width: 620px) {
	.lce-nav-actions .lce-btn--cta span { display: none; }
	.lce-nav-actions .lce-btn--cta { padding-inline: 1rem; }
}

/* Bouton hamburger */
.lce-burger {
	display: inline-grid;
	place-items: center;
	width: 2.875rem;
	height: 2.875rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--sm);
	background: #fff;
	cursor: pointer;
	transition: border-color var(--wp--custom--transition--fast), background-color var(--wp--custom--transition--fast);
}

.lce-burger:hover { border-color: rgba(10, 17, 64, 0.3); }

@media (min-width: 1280px) {
	.lce-burger { display: none; }
}

/* La barre ne tient pas : on revient au menu mobile, à n'importe quelle largeur. */
.lce-header.is-compact .lce-burger { display: inline-grid; }

.lce-burger__box {
	display: grid;
	gap: 5px;
	width: 1.25rem;
}

.lce-burger__box span {
	display: block;
	height: 2px;
	background: var(--wp--preset--color--navy);
	border-radius: 2px;
	transition: transform var(--wp--custom--transition--base), opacity var(--wp--custom--transition--fast);
}

.lce-burger[aria-expanded="true"] .lce-burger__box span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.lce-burger[aria-expanded="true"] .lce-burger__box span:nth-child(2) { opacity: 0; }
.lce-burger[aria-expanded="true"] .lce-burger__box span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* Panneau mobile */
.lce-mobile-nav {
	position: fixed;
	inset: 0;
	z-index: 200;
	display: grid;
	grid-template-rows: auto 1fr;
	background: var(--wp--preset--color--navy);
	color: #fff;
	visibility: hidden;
	opacity: 0;
	/* La visibilité bascule instantanément à l'ouverture (délai 0) et seulement
	   après le fondu à la fermeture. Faire « transiter » visibility elle-même
	   donne un résultat imprévisible selon les navigateurs — et un panneau qui
	   reste inaccessible au clavier. */
	transition: opacity 260ms cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 260ms;
	overflow-y: auto;
	overscroll-behavior: contain;
}

.lce-mobile-nav.is-open {
	visibility: visible;
	opacity: 1;
	transition: opacity 260ms cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 0s;
}

.lce-mobile-nav__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1.25rem clamp(1.25rem, 5vw, 2.5rem);
	border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}

.lce-mobile-nav__close {
	width: 2.875rem;
	height: 2.875rem;
	display: inline-grid;
	place-items: center;
	border: 1px solid rgba(255, 255, 255, 0.24);
	border-radius: var(--wp--custom--radius--sm);
	background: transparent;
	color: #fff;
	cursor: pointer;
}

.lce-mobile-nav__close svg { width: 1.25rem; height: 1.25rem; }

.lce-mobile-nav__body {
	padding: clamp(1.5rem, 5vw, 2.5rem) clamp(1.25rem, 5vw, 2.5rem) 3rem;
	display: grid;
	align-content: start;
	gap: 0.25rem;
}

.lce-mobile-nav__link {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-height: 3.5rem;
	padding: 0.75rem 0;
	border-bottom: 1px solid rgba(255, 255, 255, 0.1);
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.5rem;
	font-weight: 500;
	color: #fff;
	text-decoration: none;
	opacity: 0;
	transform: translateY(12px);
}

.lce-mobile-nav.is-open .lce-mobile-nav__link {
	animation: lce-slide-in 420ms cubic-bezier(0.22, 1, 0.36, 1) forwards;
	animation-delay: calc(var(--i, 0) * 45ms + 90ms);
}

.lce-mobile-nav__link:hover,
.lce-mobile-nav__link[aria-current="page"] {
	color: var(--wp--preset--color--gold);
	text-decoration: none;
}

.lce-mobile-nav__link svg { width: 1rem; height: 1rem; opacity: 0.5; }

.lce-mobile-nav__actions {
	display: grid;
	gap: 0.75rem;
	margin-top: 2rem;
}

.lce-mobile-nav__contact {
	margin-top: 2.5rem;
	padding-top: 1.75rem;
	border-top: 1px solid rgba(255, 255, 255, 0.12);
	display: grid;
	gap: 0.875rem;
	font-size: var(--wp--preset--font-size--small);
	color: rgba(255, 255, 255, 0.7);
}

.lce-mobile-nav__contact a {
	display: flex;
	align-items: center;
	gap: 0.625rem;
	min-height: 2.75rem;
	color: inherit;
	text-decoration: none;
}

.lce-mobile-nav__contact svg { width: 1rem; height: 1rem; opacity: 0.6; flex: none; }

@keyframes lce-slide-in {
	to { opacity: 1; transform: none; }
}

body.lce-nav-open { overflow: hidden; }

/* =========================================================================
   5. HERO AVEC DIAPORAMA
   ========================================================================= */

.lce-hero {
	position: relative;
	display: grid;
	align-items: end;
	min-height: clamp(34rem, 82svh, 48rem);
	padding-block: clamp(4rem, 10vw, 7rem);
	overflow: hidden;
	background: var(--wp--preset--color--navy);
	isolation: isolate;
}

.lce-hero--compact {
	min-height: clamp(20rem, 46svh, 28rem);
	align-items: center;
}

/* Bandeau « À la une » : la dernière actualité, épinglée en haut du hero pour
   qu'un visiteur la voie sans avoir à faire défiler jusqu'à la section
   Actualités. */
.lce-hero__news {
	position: absolute;
	top: clamp(1.25rem, 3vw, 2rem);
	left: 50%;
	transform: translateX(-50%);
	z-index: 2;
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	max-width: calc(100% - 2.5rem);
	padding: 0.5rem 0.5rem 0.5rem 0.875rem;
	background: rgba(10, 17, 64, 0.55);
	border: 1px solid rgba(255, 255, 255, 0.22);
	border-radius: var(--wp--custom--radius--pill);
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	color: #fff;
	text-decoration: none;
	transition: background-color var(--wp--custom--transition--base), border-color var(--wp--custom--transition--base);
}

.lce-hero__news:hover {
	background: rgba(10, 17, 64, 0.75);
	border-color: var(--wp--preset--color--gold);
}

.lce-hero__news-tag {
	flex: none;
	padding: 0.25rem 0.625rem;
	background: var(--wp--preset--color--gold);
	color: var(--wp--preset--color--navy);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	border-radius: var(--wp--custom--radius--pill);
	white-space: nowrap;
}

.lce-hero__news-title {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
}

.lce-hero__news svg {
	flex: none;
	opacity: 0.85;
}

@media (max-width: 640px) {
	.lce-hero__news {
		top: 1rem;
		max-width: calc(100% - 2rem);
	}

	.lce-hero__news-title {
		max-width: 11rem;
	}
}

/* Couche diaporama */
.lce-slideshow {
	position: absolute;
	inset: 0;
	z-index: -2;
}

.lce-slideshow__slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 1200ms cubic-bezier(0.4, 0, 0.2, 1);
	will-change: opacity;
}

.lce-slideshow__slide.is-active {
	opacity: 1;
}

.lce-slideshow__slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 42%;
	transform: scale(1.06);
}

/* Effet Ken Burns : zoom très lent, uniquement sur la vue active */
.lce-slideshow__slide.is-active img {
	animation: lce-kenburns 9s ease-out forwards;
}

@keyframes lce-kenburns {
	from { transform: scale(1.02); }
	to   { transform: scale(1.11); }
}

/* Voile de lisibilité.
   Il doit assurer un contraste AA sous le texte sans noyer la photo. Il est
   donc concentré sur la colonne de gauche, là où le texte se trouve : à droite
   la photo reste quasiment intacte. Les deux dégradés se multiplient, il faut
   raisonner sur leur opacité combinée, pas sur chaque valeur prise isolément.

   Plutôt que d'assombrir toute la colonne de gauche, l'opacité est concentrée
   par une ellipse sur la bande où le texte se trouve réellement. Les coins
   haut et bas gauche s'éclaircissent fortement sans rien coûter en lisibilité.

   Valeurs vérifiées par la mesure : contraste du texte blanc 5,6:1 (minimum AA
   4,5:1), coin haut gauche 3,3 fois plus lumineux et colonne gauche 1,8 fois
   plus lumineuse qu'avec le voile en colonne uniforme. */
.lce-hero__veil {
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		radial-gradient(ellipse 50% 50% at 24% 58%, rgba(10, 17, 64, 0.66) 0%, rgba(10, 17, 64, 0.36) 45%, rgba(10, 17, 64, 0) 100%),
		linear-gradient(180deg, rgba(10, 17, 64, 0.20) 0%, rgba(10, 17, 64, 0.05) 28%, rgba(10, 17, 64, 0.10) 58%, rgba(10, 17, 64, 0.32) 100%),
		linear-gradient(90deg, rgba(10, 17, 64, 0.44) 0%, rgba(10, 17, 64, 0.32) 32%, rgba(10, 17, 64, 0.08) 64%, rgba(10, 17, 64, 0) 84%);
}

/* Le texte du hero repose sur une photo, dont la luminosité varie d'une image
   à l'autre. Une ombre portée courte lui donne une assise constante : elle ne
   compte pas dans la mesure de contraste (assurée par le voile ci-dessus),
   mais elle évite tout papillotement des lettres sur les zones claires. */
.lce-hero__content .lce-eyebrow,
.lce-hero__title,
.lce-hero__motto,
.lce-hero__lead {
	text-shadow: 0 1px 2px rgba(6, 10, 38, 0.45), 0 2px 22px rgba(6, 10, 38, 0.35);
}

/* Sur une photo, l'or du surtitre ne dépasse pas 2,1:1 : il passe en blanc,
   le filet doré conservant l'accent de couleur. La devise adopte un or pâle,
   qui garde la signature chaleureuse tout en restant lisible. */
.lce-hero__content .lce-eyebrow {
	color: #fff;
}

.lce-hero__content .lce-eyebrow::before,
.lce-hero__content .lce-eyebrow::after {
	background: var(--wp--preset--color--gold);
	opacity: 1;
}


/* Sur mobile, le texte occupe toute la largeur : un voile latéral n'a plus de
   sens et laisse les mots sur les zones claires de la photo. On passe donc à
   un fondu vertical franc — image dégagée dans le haut, fond soutenu dans la
   moitié basse où se trouve le contenu.
   Mesure sur les photos livrées : contraste du texte 6,2:1, contre 3,6:1 avec
   le voile de bureau appliqué tel quel, qui était sous le seuil. */
@media (max-width: 780px) {
	.lce-hero__veil {
		background: linear-gradient(
			180deg,
			rgba(10, 17, 64, 0.16) 0%,
			rgba(10, 17, 64, 0.24) 26%,
			rgba(10, 17, 64, 0.70) 46%,
			rgba(10, 17, 64, 0.86) 76%,
			rgba(10, 17, 64, 0.92) 100%
		);
	}
}

/* Sur mobile, le texte occupe toute la largeur : le voile doit couvrir
   uniformément, un dégradé latéral ne protégerait plus la lecture. */
@media (max-width: 900px) {
	.lce-hero__veil {
		background: linear-gradient(
			180deg,
			rgba(10, 17, 64, 0.50) 0%,
			rgba(10, 17, 64, 0.34) 26%,
			rgba(10, 17, 64, 0.66) 64%,
			rgba(10, 17, 64, 0.86) 100%
		);
	}
}

.lce-hero__content {
	position: relative;
	z-index: 2;
	max-width: 46rem;
	color: #fff;
}

.lce-hero__title {
	margin: 0;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-1);
	font-weight: 600;
	line-height: 1.05;
	letter-spacing: var(--wp--custom--tracking--tighter);
	color: #fff;
}

.lce-hero__title em {
	font-style: italic;
	color: var(--wp--preset--color--gold);
}

.lce-hero__lead {
	margin: 1.25rem 0 0;
	max-width: 38rem;
	font-size: var(--wp--preset--font-size--x-large);
	line-height: 1.55;
	color: rgba(255, 255, 255, 0.88);
}

.lce-hero__motto {
	margin: 0.75rem 0 0;
	font-family: var(--wp--preset--font-family--display);
	font-style: italic;
	font-size: var(--wp--preset--font-size--heading-4);
	/* Or pâle et non l'or de la charte : sur une photo, l'or profond plafonne
	   à 2,4:1. Cette teinte conserve l'accent chaleureux en restant lisible. */
	color: #f5e6b8;
}

.lce-hero .lce-btn-group { margin-top: 2.25rem; }

/* Badges de réassurance */
.lce-hero__badges {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin: 2.25rem 0 0;
	padding: 0;
	list-style: none;
}

/* Fond bleu nuit translucide, et non un blanc à 8 % : la pastille doit garantir
   elle-même la lisibilité de son texte quelle que soit la photo derrière, sans
   dépendre du voile. Cela permet en retour d'alléger le voile du bas. */
.lce-hero__badges li {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.5rem 0.9375rem;
	border: 1px solid rgba(255, 255, 255, 0.18);
	border-radius: var(--wp--custom--radius--pill);
	background: rgba(10, 17, 64, 0.72);
	backdrop-filter: blur(10px) saturate(1.2);
	-webkit-backdrop-filter: blur(10px) saturate(1.2);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 500;
	color: #fff;
}

.lce-hero__badges svg {
	width: 0.875rem;
	height: 0.875rem;
	flex: none;
	color: var(--wp--preset--color--gold);
}

/* Pastilles de progression du diaporama */
.lce-slideshow__dots {
	position: absolute;
	right: clamp(1.25rem, 5vw, 4rem);
	bottom: clamp(1.75rem, 4vw, 3rem);
	z-index: 3;
	display: flex;
	gap: 0.5rem;
}

@media (max-width: 780px) {
	.lce-slideshow__dots { left: clamp(1.25rem, 5vw, 4rem); right: auto; }
}

/* La zone tactile fait 44 px de haut (minimum recommandé), le trait visible
   reste fin : c'est le conteneur qui est cliquable, pas seulement le trait. */
.lce-slideshow__dot {
	width: 2.25rem;
	height: 2.75rem;
	display: grid;
	place-items: center;
	padding: 0;
	border: 0;
	background: none;
	cursor: pointer;
}

.lce-slideshow__dot::before {
	content: "";
	width: 100%;
	height: 3px;
	border-radius: 2px;
	background: rgba(255, 255, 255, 0.35);
	transition: background-color var(--wp--custom--transition--base);
}

.lce-slideshow__dot[aria-selected="true"]::before {
	background: var(--wp--preset--color--gold);
}

/* Bannière de page intérieure */
.lce-pagehead {
	position: relative;
	padding-block: clamp(3.5rem, 8vw, 6rem);
	background: var(--wp--preset--color--navy);
	color: #fff;
	overflow: hidden;
	isolation: isolate;
}

.lce-pagehead::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		radial-gradient(50rem 26rem at 8% 0%, rgba(29, 40, 201, 0.55), transparent 62%),
		radial-gradient(38rem 22rem at 100% 100%, rgba(201, 162, 39, 0.18), transparent 68%);
}

.lce-pagehead__title {
	margin: 0;
	max-width: 40rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-2);
	font-weight: 600;
	line-height: 1.1;
	letter-spacing: var(--wp--custom--tracking--tight);
	color: #fff;
}

.lce-pagehead__lead {
	margin: 1.125rem 0 0;
	max-width: 42rem;
	font-size: var(--wp--preset--font-size--large);
	color: rgba(255, 255, 255, 0.78);
}

/* Fil d'Ariane */
.lce-breadcrumb {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem;
	margin: 1.5rem 0 0;
	padding: 0;
	list-style: none;
	font-size: var(--wp--preset--font-size--x-small);
	color: rgba(255, 255, 255, 0.6);
}

.lce-breadcrumb a { color: inherit; text-decoration: none; }
.lce-breadcrumb a:hover { color: var(--wp--preset--color--gold); text-decoration: none; }
.lce-breadcrumb li + li::before { content: "/"; margin-right: 0.5rem; opacity: 0.5; }

/* =========================================================================
   6. GRILLES ET CARTES
   ========================================================================= */

.lce-grid {
	display: grid;
	gap: clamp(1.25rem, 2.5vw, 2rem);
}

.lce-grid--2 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 22rem), 1fr)); }
.lce-grid--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr)); }
.lce-grid--4 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); }

.lce-card {
	position: relative;
	display: flex;
	flex-direction: column;
	padding: clamp(1.5rem, 3vw, 2.25rem);
	background: #fff;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--lg);
	transition:
		transform var(--wp--custom--transition--base),
		box-shadow var(--wp--custom--transition--base),
		border-color var(--wp--custom--transition--base);
}

.lce-card:hover {
	transform: translateY(-4px);
	border-color: rgba(29, 40, 201, 0.2);
	box-shadow: var(--wp--preset--shadow--raised);
}

.lce-card__icon {
	display: grid;
	place-items: center;
	width: 3.25rem;
	height: 3.25rem;
	margin-bottom: 1.375rem;
	border-radius: var(--wp--custom--radius--md);
	background: var(--wp--preset--color--primary-soft);
	color: var(--wp--preset--color--primary);
	flex: none;
}

.lce-card__icon svg { width: 1.5rem; height: 1.5rem; }

.lce-card--gold .lce-card__icon {
	background: rgba(201, 162, 39, 0.14);
	color: var(--wp--preset--color--gold-ink);
}

.lce-card__title {
	margin: 0 0 0.625rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-4);
	font-weight: 600;
	line-height: 1.3;
	color: var(--wp--preset--color--navy);
}

.lce-card__text {
	margin: 0;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.7;
	color: var(--wp--preset--color--muted);
}

.lce-card__link {
	margin-top: auto;
	padding-top: 1.25rem;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--primary);
	text-decoration: none;
}

.lce-card__link svg { width: 1rem; height: 1rem; transition: transform var(--wp--custom--transition--base); }
.lce-card:hover .lce-card__link svg { transform: translateX(4px); }

/* Carte numérotée (étapes) */
.lce-step {
	position: relative;
	padding-left: 4.25rem;
}

.lce-step__num {
	position: absolute;
	left: 0;
	top: 0;
	width: 3rem;
	height: 3rem;
	display: grid;
	place-items: center;
	border-radius: 50%;
	border: 1px solid var(--wp--preset--color--gold);
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.125rem;
	font-weight: 600;
	color: var(--wp--preset--color--gold-ink);
	background: #fff;
}

.lce-steps {
	display: grid;
	gap: clamp(1.75rem, 3.5vw, 2.75rem);
	position: relative;
}

@media (min-width: 900px) {
	.lce-steps { grid-template-columns: repeat(2, 1fr); column-gap: 3.5rem; }
}

/* Carte cycle (programmes) */
.lce-cycle {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	background: #fff;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--lg);
	transition: transform var(--wp--custom--transition--base), box-shadow var(--wp--custom--transition--base);
}

.lce-cycle:hover {
	transform: translateY(-4px);
	box-shadow: var(--wp--preset--shadow--raised);
}

.lce-cycle__media {
	position: relative;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	background: var(--wp--preset--color--sand);
}

.lce-cycle__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.lce-cycle:hover .lce-cycle__media img { transform: scale(1.05); }

.lce-cycle__tag {
	position: absolute;
	top: 1rem;
	left: 1rem;
	padding: 0.375rem 0.875rem;
	border-radius: var(--wp--custom--radius--pill);
	background: rgba(10, 17, 64, 0.85);
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	font-size: 0.75rem;
	font-weight: 600;
	letter-spacing: 0.05em;
	text-transform: uppercase;
	color: #fff;
}

.lce-cycle__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	padding: clamp(1.375rem, 2.5vw, 1.875rem);
}

.lce-cycle__range {
	margin: 0 0 0.5rem;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--gold-ink);
}

/* =========================================================================
   7. CHIFFRES CLÉS
   ========================================================================= */

.lce-stats {
	display: grid;
	gap: clamp(1.5rem, 3vw, 2.5rem);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 12rem), 1fr));
}

.lce-stat {
	position: relative;
	padding-top: 1.5rem;
	border-top: 1px solid rgba(255, 255, 255, 0.18);
}

.lce-bg-ivory .lce-stat,
.lce-bg-white .lce-stat,
.lce-bg-sand .lce-stat {
	border-top-color: var(--wp--preset--color--line);
}

.lce-stat::before {
	content: "";
	position: absolute;
	top: -1px;
	left: 0;
	width: 2.5rem;
	height: 2px;
	background: var(--wp--preset--color--gold);
}

.lce-stat__value {
	display: block;
	font-family: var(--wp--preset--font-family--display);
	font-size: clamp(2.5rem, 1.4rem + 3.4vw, 3.75rem);
	font-weight: 600;
	line-height: 1;
	letter-spacing: var(--wp--custom--tracking--tighter);
	color: #fff;
	font-variant-numeric: tabular-nums;
}

.lce-bg-ivory .lce-stat__value,
.lce-bg-white .lce-stat__value,
.lce-bg-sand .lce-stat__value {
	color: var(--wp--preset--color--navy);
}

.lce-stat__label {
	display: block;
	margin-top: 0.625rem;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.5;
	color: rgba(255, 255, 255, 0.7);
}

.lce-bg-ivory .lce-stat__label,
.lce-bg-white .lce-stat__label,
.lce-bg-sand .lce-stat__label {
	color: var(--wp--preset--color--muted);
}

/* =========================================================================
   8. SECTION MÉDIA + TEXTE
   ========================================================================= */

.lce-split {
	display: grid;
	gap: clamp(2rem, 5vw, 4.5rem);
	align-items: center;
}

@media (min-width: 900px) {
	.lce-split { grid-template-columns: 1fr 1fr; }
	.lce-split--media-right .lce-split__media { order: 2; }
	.lce-split--wide-text { grid-template-columns: 1.15fr 1fr; }
}

.lce-split__media {
	position: relative;
	border-radius: var(--wp--custom--radius--xl);
	overflow: hidden;
	background: var(--wp--preset--color--sand);
}

.lce-split__media img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	aspect-ratio: 4 / 3;
}

/* Cadre doré décalé */
.lce-split__media--framed {
	border-radius: 0;
	overflow: visible;
	background: none;
}

.lce-split__media--framed img {
	border-radius: var(--wp--custom--radius--xl);
	position: relative;
	z-index: 1;
}

.lce-split__media--framed::after {
	content: "";
	position: absolute;
	inset: 1.5rem -1.5rem -1.5rem 1.5rem;
	border: 1px solid var(--wp--preset--color--gold);
	border-radius: var(--wp--custom--radius--xl);
	z-index: 0;
}

@media (max-width: 600px) {
	.lce-split__media--framed::after { inset: 1rem -1rem -1rem 1rem; }
}

.lce-prose > * + * { margin-top: 1.125rem; }
.lce-prose p { color: var(--wp--preset--color--muted); line-height: 1.75; }
.lce-prose h2, .lce-prose h3 { color: var(--wp--preset--color--navy); }
.lce-on-dark .lce-prose p { color: rgba(255, 255, 255, 0.78); }

/* Liste à puces dorées */
.lce-ticks {
	margin: 1.5rem 0 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 0.875rem;
}

.lce-ticks li {
	position: relative;
	padding-left: 2rem;
	font-size: var(--wp--preset--font-size--medium);
	line-height: 1.6;
	color: var(--wp--preset--color--muted);
}

.lce-on-dark .lce-ticks li { color: rgba(255, 255, 255, 0.8); }

.lce-ticks li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.4em;
	width: 1.125rem;
	height: 1.125rem;
	background: var(--wp--preset--color--gold);
	-webkit-mask: var(--lce-check) center / contain no-repeat;
	mask: var(--lce-check) center / contain no-repeat;
}

:root {
	--lce-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='currentColor'%3E%3Cpath fill-rule='evenodd' d='M16.7 5.3a1 1 0 0 1 0 1.4l-7.5 7.5a1 1 0 0 1-1.4 0L3.3 9.7a1 1 0 1 1 1.4-1.4l3.8 3.8 6.8-6.8a1 1 0 0 1 1.4 0Z' clip-rule='evenodd'/%3E%3C/svg%3E");
}

/* Citation du directeur */
.lce-quote {
	position: relative;
	padding: clamp(1.75rem, 4vw, 3rem);
	background: #fff;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--xl);
}

.lce-quote::before {
	content: "“";
	position: absolute;
	top: clamp(0.25rem, 1.5vw, 0.75rem);
	left: clamp(1.25rem, 3vw, 2.25rem);
	font-family: var(--wp--preset--font-family--display);
	font-size: 6rem;
	line-height: 1;
	color: var(--wp--preset--color--gold);
	opacity: 0.25;
	pointer-events: none;
}

.lce-quote__text {
	position: relative;
	margin: 0;
	font-family: var(--wp--preset--font-family--display);
	font-style: italic;
	font-size: var(--wp--preset--font-size--x-large);
	line-height: 1.5;
	color: var(--wp--preset--color--navy);
}

.lce-quote__author {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin-top: 1.75rem;
	padding-top: 1.5rem;
	border-top: 1px solid var(--wp--preset--color--line);
}

.lce-quote__avatar {
	width: 3.5rem;
	height: 3.5rem;
	border-radius: 50%;
	object-fit: cover;
	flex: none;
	border: 2px solid var(--wp--preset--color--gold);
}

.lce-quote__name {
	display: block;
	font-weight: 600;
	color: var(--wp--preset--color--navy);
}

.lce-quote__role {
	display: block;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
}

/* =========================================================================
   9. RÉSULTATS D'EXAMENS
   ========================================================================= */

.lce-results-group + .lce-results-group { margin-top: clamp(2.5rem, 5vw, 4rem); }

.lce-results-group__name {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin: 0 0 1.75rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-3);
	font-weight: 600;
	color: var(--wp--preset--color--navy);
}

.lce-results-group__name::after {
	content: "";
	flex: 1;
	height: 1px;
	background: var(--wp--preset--color--line);
}

.lce-result {
	display: grid;
	gap: clamp(1.25rem, 3vw, 2.5rem);
	padding: clamp(1.5rem, 3vw, 2.25rem);
	background: #fff;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--lg);
	transition: box-shadow var(--wp--custom--transition--base), border-color var(--wp--custom--transition--base);
}

.lce-result:hover {
	border-color: rgba(29, 40, 201, 0.18);
	box-shadow: var(--wp--preset--shadow--soft);
}

.lce-result + .lce-result { margin-top: 1.25rem; }

@media (min-width: 820px) {
	.lce-result { grid-template-columns: 16rem 1fr; align-items: center; }
}

/* Anneau de progression du taux de réussite */
.lce-result__gauge {
	display: grid;
	place-items: center;
	gap: 0.5rem;
	text-align: center;
}

.lce-gauge {
	position: relative;
	width: 9.5rem;
	height: 9.5rem;
}

.lce-gauge svg { width: 100%; height: 100%; transform: rotate(-90deg); }

.lce-gauge__track { fill: none; stroke: var(--wp--preset--color--line); stroke-width: 8; }

.lce-gauge__bar {
	fill: none;
	stroke: var(--wp--preset--color--primary);
	stroke-width: 8;
	stroke-linecap: round;
	stroke-dasharray: var(--lce-circ, 283);
	stroke-dashoffset: var(--lce-circ, 283);
	transition: stroke-dashoffset 1400ms cubic-bezier(0.22, 1, 0.36, 1);
}

.lce-gauge.is-revealed .lce-gauge__bar {
	stroke-dashoffset: var(--lce-offset, 0);
}

.lce-gauge__value {
	position: absolute;
	inset: 0;
	display: grid;
	place-content: center;
	text-align: center;
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.75rem;
	font-weight: 600;
	color: var(--wp--preset--color--navy);
	font-variant-numeric: tabular-nums;
}

.lce-result__gauge-label {
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--gold-ink);
}

.lce-result__exam {
	margin: 0 0 0.5rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-3);
	font-weight: 600;
	color: var(--wp--preset--color--navy);
}

.lce-result__year {
	display: inline-block;
	margin-left: 0.625rem;
	padding: 0.25rem 0.75rem;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--primary-soft);
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.8125rem;
	font-weight: 600;
	color: var(--wp--preset--color--primary);
	vertical-align: middle;
}

.lce-result__desc {
	margin: 0 0 1.5rem;
	color: var(--wp--preset--color--muted);
	line-height: 1.7;
}

.lce-result__figures {
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 9.5rem), 1fr));
	margin: 0;
	padding: 1.375rem 0 0;
	border-top: 1px solid var(--wp--preset--color--line);
}

.lce-result__figures div { display: grid; gap: 0.25rem; }

.lce-result__figures dt {
	font-size: 0.8125rem;
	line-height: 1.4;
	color: var(--wp--preset--color--muted);
}

.lce-result__figures dd {
	margin: 0;
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.75rem;
	font-weight: 600;
	line-height: 1;
	color: var(--wp--preset--color--navy);
	font-variant-numeric: tabular-nums;
}

/* Résultats des tests d'entrée : listes de candidats, classe par classe */
.lce-adm-jump {
	display: flex;
	flex-wrap: wrap;
	gap: 0.625rem;
	margin: 0 0 1.5rem;
}

.lce-adm-jump__link {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	min-height: 2.75rem;
	padding: 0.5rem 1rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--pill);
	background: #fff;
	font-weight: 600;
	color: var(--wp--preset--color--navy);
	text-decoration: none;
	transition: background-color var(--wp--custom--transition--base), border-color var(--wp--custom--transition--base);
}

.lce-adm-jump__link span,
.lce-adm-group__count,
.lce-adm-card__class span {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 1.75rem;
	padding: 0.125rem 0.5rem;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--primary-soft);
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.8125rem;
	font-weight: 700;
	color: var(--wp--preset--color--primary);
	font-variant-numeric: tabular-nums;
}

.lce-adm-jump__link:hover {
	border-color: var(--wp--preset--color--primary);
	background: var(--wp--preset--color--primary-soft);
}

.lce-adm-search {
	position: relative;
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 0.75rem;
	max-width: 30rem;
	margin: 0 0 2.5rem;
}

.lce-adm-search[hidden] { display: none; }

.lce-adm-search > svg {
	position: absolute;
	left: 1rem;
	top: 0.9375rem;
	color: var(--wp--preset--color--muted);
	pointer-events: none;
}

.lce-adm-search__input {
	flex: 1 1 100%;
	min-height: 3rem;
	padding: 0.625rem 1rem 0.625rem 2.75rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--pill);
	background: #fff;
	font: inherit;
	color: var(--wp--preset--color--ink);
}

.lce-adm-search__input:focus-visible {
	outline: 3px solid var(--wp--preset--color--primary);
	outline-offset: 2px;
}

.lce-adm-search__status {
	flex: 1 1 100%;
	margin: 0;
	padding-left: 1rem;
	font-size: 0.875rem;
	color: var(--wp--preset--color--muted);
}

.lce-adm-group { scroll-margin-top: 7rem; }

.lce-adm-group + .lce-adm-group { margin-top: clamp(2.5rem, 5vw, 4rem); }

.lce-adm-group__title {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1.25rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-3);
	font-weight: 600;
	color: var(--wp--preset--color--navy);
}

.lce-adm-group__title svg { color: var(--wp--preset--color--gold-ink); flex: none; }

.lce-adm-group__text {
	margin: -0.5rem 0 1.25rem;
	color: var(--wp--preset--color--muted);
}

.lce-adm-grid {
	display: grid;
	gap: 1.25rem;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 19rem), 1fr));
	align-items: start;
}

.lce-adm-card {
	padding: 1.5rem;
	background: #fff;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--lg);
	transition: box-shadow var(--wp--custom--transition--base), border-color var(--wp--custom--transition--base);
}

.lce-adm-card:hover {
	border-color: rgba(29, 40, 201, 0.18);
	box-shadow: var(--wp--preset--shadow--soft);
}

.lce-adm-card[hidden],
.lce-adm-group[hidden],
.lce-adm-list li[hidden] { display: none; }

.lce-adm-card__class {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	margin: 0 0 1rem;
	padding-bottom: 0.875rem;
	border-bottom: 2px solid var(--wp--preset--color--gold);
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-4);
	font-weight: 600;
	color: var(--wp--preset--color--navy);
	font-variant-numeric: lining-nums;
}

.lce-adm-card__note {
	margin: -0.25rem 0 1rem;
	font-size: 0.875rem;
	font-style: italic;
	color: var(--wp--preset--color--muted);
}

.lce-adm-list {
	margin: 0;
	padding-left: 1.75rem;
	display: grid;
	gap: 0.5rem;
}

.lce-adm-list li {
	padding-left: 0.25rem;
	line-height: 1.4;
}

.lce-adm-list li::marker {
	font-weight: 700;
	color: var(--wp--preset--color--primary);
	font-variant-numeric: tabular-nums;
}

/* =========================================================================
   10. GRILLE TARIFAIRE
   ========================================================================= */

.lce-pricing {
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--lg);
	background: #fff;
	overflow: hidden;
}

.lce-pricing__scroll {
	overflow-x: auto;
	-webkit-overflow-scrolling: touch;
	scrollbar-width: thin;
}

.lce-pricing table {
	width: 100%;
	min-width: 44rem;
	border-collapse: collapse;
	font-variant-numeric: tabular-nums;
}

.lce-pricing caption {
	padding: 1.25rem 1.5rem;
	text-align: left;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
	border-bottom: 1px solid var(--wp--preset--color--line);
	caption-side: top;
}

.lce-pricing th,
.lce-pricing td {
	padding: 0.9375rem 1.25rem;
	text-align: right;
	border-bottom: 1px solid var(--wp--preset--color--line);
}

.lce-pricing thead th {
	position: sticky;
	top: 0;
	background: var(--wp--preset--color--navy);
	color: #fff;
	font-size: 0.8125rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	white-space: nowrap;
}

.lce-pricing th:first-child,
.lce-pricing td:first-child {
	text-align: left;
	font-weight: 600;
	color: var(--wp--preset--color--navy);
	position: sticky;
	left: 0;
	background: #fff;
	z-index: 1;
}

.lce-pricing thead th:first-child { background: var(--wp--preset--color--navy); z-index: 2; }

.lce-pricing tbody tr { transition: background-color var(--wp--custom--transition--fast); }
.lce-pricing tbody tr:hover { background: var(--wp--preset--color--primary-soft); }
.lce-pricing tbody tr:hover td:first-child { background: var(--wp--preset--color--primary-soft); }
.lce-pricing tbody tr:last-child th,
.lce-pricing tbody tr:last-child td { border-bottom: 0; }

.lce-pricing td { color: var(--wp--preset--color--ink); }

.lce-pricing__highlight { color: var(--wp--preset--color--primary); font-weight: 600; }

.lce-pricing__note {
	display: flex;
	gap: 0.75rem;
	padding: 1.125rem 1.5rem;
	background: var(--wp--preset--color--sand);
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--muted);
	border-top: 1px solid var(--wp--preset--color--line);
}

.lce-pricing__note svg { width: 1.125rem; height: 1.125rem; flex: none; color: var(--wp--preset--color--gold-ink); margin-top: 0.15em; }

.lce-pricing__hint {
	display: none;
	margin: 0.875rem 0 0;
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--muted);
	text-align: center;
}

@media (max-width: 760px) {
	.lce-pricing__hint { display: block; }
}

/* =========================================================================
   11. CARROUSEL D'IMAGES
   ========================================================================= */

.lce-carousel { position: relative; }

.lce-carousel__viewport {
	display: flex;
	gap: clamp(0.875rem, 2vw, 1.5rem);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	padding-block: 0.5rem;
	-webkit-overflow-scrolling: touch;
	overscroll-behavior-x: contain;
}

.lce-carousel__viewport::-webkit-scrollbar { display: none; }

.lce-carousel__item {
	position: relative;
	flex: 0 0 auto;
	width: clamp(15rem, 34vw, 24rem);
	aspect-ratio: 4 / 3;
	scroll-snap-align: start;
	overflow: hidden;
	border-radius: var(--wp--custom--radius--lg);
	background: var(--wp--preset--color--sand);
	border: 0;
	padding: 0;
	cursor: zoom-in;
}

.lce-carousel__item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.lce-carousel__item:hover img { transform: scale(1.05); }

.lce-carousel__caption {
	position: absolute;
	inset: auto 0 0 0;
	padding: 2.5rem 1rem 1rem;
	background: linear-gradient(180deg, transparent, rgba(10, 17, 64, 0.85));
	color: #fff;
	font-size: var(--wp--preset--font-size--small);
	text-align: left;
	opacity: 0;
	transform: translateY(8px);
	transition: opacity var(--wp--custom--transition--base), transform var(--wp--custom--transition--base);
}

.lce-carousel__item:hover .lce-carousel__caption,
.lce-carousel__item:focus-visible .lce-carousel__caption {
	opacity: 1;
	transform: none;
}

.lce-carousel__nav {
	display: flex;
	gap: 0.625rem;
	margin-top: 1.5rem;
	justify-content: flex-end;
}

.lce-carousel__btn {
	width: 3rem;
	height: 3rem;
	display: grid;
	place-items: center;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: 50%;
	background: #fff;
	color: var(--wp--preset--color--navy);
	cursor: pointer;
	transition: background-color var(--wp--custom--transition--base), color var(--wp--custom--transition--base), border-color var(--wp--custom--transition--base), opacity var(--wp--custom--transition--base);
}

.lce-carousel__btn:hover:not(:disabled) {
	background: var(--wp--preset--color--navy);
	border-color: var(--wp--preset--color--navy);
	color: #fff;
}

.lce-carousel__btn:disabled { opacity: 0.35; cursor: default; }
.lce-carousel__btn svg { width: 1.125rem; height: 1.125rem; }

/* Bandeau défilant continu (logos / photos) */
.lce-marquee {
	overflow: hidden;
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
	mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent);
}

.lce-marquee__track {
	display: flex;
	gap: 1.25rem;
	width: max-content;
	animation: lce-marquee var(--lce-marquee-duration, 45s) linear infinite;
}

.lce-marquee:hover .lce-marquee__track,
.lce-marquee:focus-within .lce-marquee__track {
	animation-play-state: paused;
}

.lce-marquee__item {
	flex: none;
	width: clamp(12rem, 22vw, 17rem);
	aspect-ratio: 3 / 2;
	border-radius: var(--wp--custom--radius--md);
	overflow: hidden;
	background: var(--wp--preset--color--sand);
}

.lce-marquee__item img { width: 100%; height: 100%; object-fit: cover; }

@keyframes lce-marquee {
	from { transform: translateX(0); }
	to { transform: translateX(calc(-50% - 0.625rem)); }
}

/* =========================================================================
   12. GALERIE ET VISIONNEUSE
   ========================================================================= */

.lce-filters {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-bottom: 2rem;
}

.lce-filter {
	min-height: 2.75rem;
	padding: 0.625rem 1.25rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--pill);
	background: #fff;
	font-family: inherit;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 500;
	color: var(--wp--preset--color--muted);
	cursor: pointer;
	transition: all var(--wp--custom--transition--base);
}

.lce-filter:hover { border-color: rgba(10, 17, 64, 0.28); color: var(--wp--preset--color--navy); }

.lce-filter[aria-pressed="true"] {
	background: var(--wp--preset--color--navy);
	border-color: var(--wp--preset--color--navy);
	color: #fff;
}

.lce-gallery {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr));
	gap: clamp(0.75rem, 1.6vw, 1.25rem);
}

.lce-gallery__item {
	position: relative;
	aspect-ratio: 1 / 1;
	overflow: hidden;
	border-radius: var(--wp--custom--radius--md);
	background: var(--wp--preset--color--sand);
	border: 0;
	padding: 0;
	cursor: zoom-in;
	transition: opacity var(--wp--custom--transition--base), transform var(--wp--custom--transition--base);
}

.lce-gallery__item--tall { grid-row: span 2; aspect-ratio: 1 / 2; }

@media (max-width: 600px) {
	.lce-gallery__item--tall { grid-row: span 1; aspect-ratio: 1 / 1; }
}

.lce-gallery__item img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.lce-gallery__item:hover img { transform: scale(1.06); }

.lce-gallery__item::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, transparent 50%, rgba(10, 17, 64, 0.5));
	opacity: 0;
	transition: opacity var(--wp--custom--transition--base);
}

.lce-gallery__item:hover::after { opacity: 1; }

.lce-gallery__item[hidden] { display: none; }

/* Visionneuse plein écran */
.lce-lightbox {
	position: fixed;
	inset: 0;
	z-index: 300;
	display: grid;
	grid-template-rows: auto 1fr auto;
	background: rgba(6, 10, 38, 0.96);
	backdrop-filter: blur(6px);
	-webkit-backdrop-filter: blur(6px);
	opacity: 0;
	visibility: hidden;
	transition: opacity 260ms cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 260ms;
}

.lce-lightbox.is-open {
	opacity: 1;
	visibility: visible;
	transition: opacity 260ms cubic-bezier(0.22, 1, 0.36, 1), visibility 0s linear 0s;
}

.lce-lightbox__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding: 1rem clamp(1rem, 4vw, 2rem);
	color: rgba(255, 255, 255, 0.7);
	font-size: var(--wp--preset--font-size--small);
	font-variant-numeric: tabular-nums;
}

.lce-lightbox__stage {
	display: grid;
	place-items: center;
	padding: 0 clamp(0.5rem, 4vw, 4.5rem);
	min-height: 0;
}

.lce-lightbox__stage img {
	max-width: 100%;
	max-height: 100%;
	width: auto;
	height: auto;
	object-fit: contain;
	border-radius: var(--wp--custom--radius--sm);
	animation: lce-zoom-in 320ms cubic-bezier(0.22, 1, 0.36, 1);
}

@keyframes lce-zoom-in {
	from { opacity: 0; transform: scale(0.96); }
	to { opacity: 1; transform: none; }
}

.lce-lightbox__foot {
	padding: 1rem clamp(1rem, 4vw, 2rem) 2rem;
	text-align: center;
	color: rgba(255, 255, 255, 0.78);
	font-size: var(--wp--preset--font-size--small);
	min-height: 3.5rem;
}

.lce-lightbox__btn {
	width: 3rem;
	height: 3rem;
	display: grid;
	place-items: center;
	border: 1px solid rgba(255, 255, 255, 0.22);
	border-radius: 50%;
	background: rgba(255, 255, 255, 0.06);
	color: #fff;
	cursor: pointer;
	transition: background-color var(--wp--custom--transition--fast);
}

.lce-lightbox__btn:hover { background: rgba(255, 255, 255, 0.16); }
.lce-lightbox__btn svg { width: 1.25rem; height: 1.25rem; }

.lce-lightbox__prev,
.lce-lightbox__next {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 2;
}

.lce-lightbox__prev { left: clamp(0.5rem, 2vw, 1.5rem); }
.lce-lightbox__next { right: clamp(0.5rem, 2vw, 1.5rem); }

/* =========================================================================
   13. ACTUALITÉS
   ========================================================================= */

.lce-post-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	background: #fff;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--lg);
	transition: transform var(--wp--custom--transition--base), box-shadow var(--wp--custom--transition--base);
}

.lce-post-card:hover { transform: translateY(-4px); box-shadow: var(--wp--preset--shadow--raised); }

.lce-post-card__media {
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: var(--wp--preset--color--sand);
}

.lce-post-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.lce-post-card:hover .lce-post-card__media img { transform: scale(1.05); }

.lce-post-card__body { display: flex; flex-direction: column; flex: 1; padding: 1.5rem; }

.lce-post-card__date {
	margin: 0 0 0.625rem;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--gold-ink);
}

.lce-post-card__title {
	margin: 0 0 0.75rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-4);
	font-weight: 600;
	line-height: 1.3;
}

.lce-post-card__title a { color: var(--wp--preset--color--navy); text-decoration: none; }

.lce-post-card__title a::after {
	content: "";
	position: absolute;
	inset: 0;
}

.lce-post-card { position: relative; }

.lce-post-card__title a:hover { color: var(--wp--preset--color--primary); text-decoration: none; }

.lce-post-card__excerpt {
	margin: 0 0 1.25rem;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.7;
	color: var(--wp--preset--color--muted);
}

.lce-post-card__more {
	margin-top: auto;
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--primary);
}

.lce-post-card__more svg { width: 1rem; height: 1rem; transition: transform var(--wp--custom--transition--base); }
.lce-post-card:hover .lce-post-card__more svg { transform: translateX(4px); }

/* Article seul */
.lce-entry {
	max-width: 45rem;
	margin-inline: auto;
}

.lce-entry > * + * { margin-top: 1.375rem; }
.lce-entry p { line-height: 1.8; color: #2a3047; }
.lce-entry h2 { margin-top: 2.75rem; }
.lce-entry h3 { margin-top: 2rem; }
.lce-entry img { border-radius: var(--wp--custom--radius--md); }

.lce-entry blockquote {
	margin: 2rem 0;
	padding: 0.5rem 0 0.5rem 1.75rem;
	border-left: 3px solid var(--wp--preset--color--gold);
	font-family: var(--wp--preset--font-family--display);
	font-style: italic;
	font-size: var(--wp--preset--font-size--x-large);
	line-height: 1.5;
	color: var(--wp--preset--color--navy);
}

/* =========================================================================
   14. FORMULAIRES
   ========================================================================= */

.lce-form {
	display: grid;
	gap: 1.25rem;
}

.lce-form__grid {
	display: grid;
	gap: 1.25rem;
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
}

.lce-field { display: grid; gap: 0.5rem; }

.lce-field__label {
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	color: var(--wp--preset--color--navy);
}

.lce-field__req { color: #c0392b; margin-left: 0.15em; }

.lce-field__hint {
	font-size: var(--wp--preset--font-size--x-small);
	color: var(--wp--preset--color--muted);
	line-height: 1.5;
}

.lce-input,
.lce-select,
.lce-textarea {
	width: 100%;
	min-height: 3.25rem;
	padding: 0.875rem 1.125rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--md);
	background: #fff;
	font-family: inherit;
	font-size: 1rem;
	color: var(--wp--preset--color--ink);
	transition: border-color var(--wp--custom--transition--fast), box-shadow var(--wp--custom--transition--fast);
}

.lce-textarea { min-height: 8rem; resize: vertical; line-height: 1.6; }

.lce-select {
	appearance: none;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='%23565E75'%3E%3Cpath fill-rule='evenodd' d='M5.2 7.5a1 1 0 0 1 1.4 0L10 10.9l3.4-3.4a1 1 0 1 1 1.4 1.4l-4.1 4.1a1 1 0 0 1-1.4 0L5.2 8.9a1 1 0 0 1 0-1.4Z' clip-rule='evenodd'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 1rem center;
	background-size: 1.25rem;
	padding-right: 2.75rem;
}

.lce-input:focus,
.lce-select:focus,
.lce-textarea:focus {
	outline: none;
	border-color: var(--wp--preset--color--primary);
	box-shadow: 0 0 0 3px rgba(29, 40, 201, 0.14);
}

.lce-input[aria-invalid="true"],
.lce-select[aria-invalid="true"],
.lce-textarea[aria-invalid="true"] {
	border-color: #c0392b;
	box-shadow: 0 0 0 3px rgba(192, 57, 43, 0.12);
}

.lce-field__error {
	display: none;
	align-items: center;
	gap: 0.4rem;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 500;
	color: #b03225;
}

.lce-field__error svg { width: 0.9375rem; height: 0.9375rem; flex: none; }
.lce-field.has-error .lce-field__error { display: flex; }

/* Champ anti-spam invisible */
.lce-hp {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0 0 0 0);
	white-space: nowrap;
}

/* Formulaire multi-étapes */
.lce-steps-bar {
	display: flex;
	align-items: center;
	gap: 0.5rem;
	margin-bottom: 2rem;
	list-style: none;
	padding: 0;
}

.lce-steps-bar li {
	flex: 1;
	display: grid;
	gap: 0.5rem;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	color: var(--wp--preset--color--muted);
	text-align: center;
}

.lce-steps-bar li::before {
	content: "";
	height: 4px;
	border-radius: 2px;
	background: var(--wp--preset--color--line);
	transition: background-color var(--wp--custom--transition--base);
}

.lce-steps-bar li.is-done::before { background: var(--wp--preset--color--gold); }
.lce-steps-bar li.is-current::before { background: var(--wp--preset--color--primary); }
.lce-steps-bar li.is-current { color: var(--wp--preset--color--primary); }

.lce-fieldset { border: 0; margin: 0; padding: 0; display: grid; gap: 1.25rem; }
.lce-fieldset[hidden] { display: none; }

.lce-fieldset__legend {
	padding: 0;
	margin: 0 0 0.25rem;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-4);
	font-weight: 600;
	color: var(--wp--preset--color--navy);
}

.lce-form__actions {
	display: flex;
	flex-wrap: wrap;
	gap: 0.75rem;
	align-items: center;
	justify-content: space-between;
	margin-top: 0.5rem;
}

.lce-form__actions .lce-btn { flex: 1 1 auto; min-width: 10rem; }

/* Bouton en cours de soumission */
.lce-btn.is-loading { pointer-events: none; opacity: 0.75; }

.lce-btn.is-loading::before {
	content: "";
	width: 1rem;
	height: 1rem;
	border: 2px solid currentColor;
	border-right-color: transparent;
	border-radius: 50%;
	animation: lce-spin 700ms linear infinite;
}

@keyframes lce-spin { to { transform: rotate(360deg); } }

/* Messages de retour */
.lce-alert {
	display: flex;
	gap: 0.875rem;
	padding: 1.125rem 1.375rem;
	border-radius: var(--wp--custom--radius--md);
	border: 1px solid;
	font-size: var(--wp--preset--font-size--small);
	line-height: 1.6;
}

.lce-alert svg { width: 1.25rem; height: 1.25rem; flex: none; margin-top: 0.1em; }
.lce-alert__title { display: block; font-weight: 600; margin-bottom: 0.15rem; }

.lce-alert--success { background: #eaf7ef; border-color: #b7e1c6; color: #1c6b39; }
.lce-alert--error { background: #fdeceb; border-color: #f4c4bf; color: #a52d20; }
.lce-alert--info { background: var(--wp--preset--color--primary-soft); border-color: #ccd2f7; color: #1a2286; }

/* Panneau de contact */
.lce-contact-list { display: grid; gap: 1.5rem; margin: 0; padding: 0; list-style: none; }

.lce-contact-item {
	display: grid;
	grid-template-columns: 3rem 1fr;
	gap: 1rem;
	align-items: start;
}

.lce-contact-item__icon {
	width: 3rem;
	height: 3rem;
	display: grid;
	place-items: center;
	border-radius: var(--wp--custom--radius--md);
	background: var(--wp--preset--color--primary-soft);
	color: var(--wp--preset--color--primary);
}

.lce-contact-item__icon svg { width: 1.25rem; height: 1.25rem; }

.lce-contact-item__label {
	display: block;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--gold-ink);
	margin-bottom: 0.25rem;
}

.lce-contact-item__value { display: grid; gap: 0.15rem; }
.lce-contact-item__value a { color: var(--wp--preset--color--navy); text-decoration: none; font-weight: 500; }
.lce-contact-item__value a:hover { color: var(--wp--preset--color--primary); text-decoration: underline; }
.lce-contact-item__value span { color: var(--wp--preset--color--muted); line-height: 1.6; }

.lce-map {
	border-radius: var(--wp--custom--radius--lg);
	overflow: hidden;
	border: 1px solid var(--wp--preset--color--line);
	background: var(--wp--preset--color--sand);
	aspect-ratio: 16 / 9;
}

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

/* =========================================================================
   15. BANDEAU D'APPEL À L'ACTION
   ========================================================================= */

.lce-cta {
	position: relative;
	overflow: hidden;
	isolation: isolate;
	border-radius: var(--wp--custom--radius--xl);
	padding: clamp(2.5rem, 6vw, 4.5rem);
	background: var(--wp--preset--color--navy);
	color: #fff;
	text-align: center;
}

.lce-cta::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background:
		radial-gradient(38rem 22rem at 12% -20%, rgba(29, 40, 201, 0.75), transparent 62%),
		radial-gradient(30rem 20rem at 92% 120%, rgba(201, 162, 39, 0.28), transparent 68%);
}

.lce-cta__title {
	margin: 0 auto;
	max-width: 32ch;
	font-family: var(--wp--preset--font-family--display);
	font-size: var(--wp--preset--font-size--heading-2);
	font-weight: 600;
	line-height: 1.15;
	letter-spacing: var(--wp--custom--tracking--tight);
	color: #fff;
}

.lce-cta__text {
	margin: 1.125rem auto 0;
	max-width: 46ch;
	font-size: var(--wp--preset--font-size--large);
	color: rgba(255, 255, 255, 0.8);
}

.lce-cta .lce-btn-group { justify-content: center; margin-top: 2.25rem; }

/* Bouton WhatsApp flottant */
.lce-float-wa {
	position: fixed;
	right: clamp(1rem, 3vw, 1.75rem);
	bottom: clamp(1rem, 3vw, 1.75rem);
	z-index: 90;
	width: 3.5rem;
	height: 3.5rem;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: #1faa54;
	color: #fff;
	box-shadow: 0 12px 28px -10px rgba(31, 170, 84, 0.7);
	transition: transform var(--wp--custom--transition--base), box-shadow var(--wp--custom--transition--base);
}

.lce-float-wa:hover { transform: scale(1.06); color: #fff; }
.lce-float-wa svg { width: 1.625rem; height: 1.625rem; }

/* =========================================================================
   16. PIED DE PAGE
   ========================================================================= */

.lce-footer {
	background: var(--wp--preset--color--navy);
	color: rgba(255, 255, 255, 0.7);
	position: relative;
	overflow: hidden;
	isolation: isolate;
}

.lce-footer::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -1;
	background: radial-gradient(46rem 26rem at 10% 0%, rgba(29, 40, 201, 0.4), transparent 62%);
}

.lce-footer__main {
	display: grid;
	gap: clamp(2.25rem, 5vw, 3.5rem);
	padding-block: clamp(3rem, 7vw, 5rem);
}

@media (min-width: 800px) {
	.lce-footer__main { grid-template-columns: 1.4fr 1fr 1fr 1.2fr; }
}

.lce-footer__brand { display: grid; gap: 1.125rem; align-content: start; }

.lce-footer__logo {
	display: inline-flex;
	align-items: center;
	gap: 0.875rem;
	text-decoration: none;
}

/* Le logo est bleu roi : sur le fond bleu nuit du pied de page, il lui faut
   une pastille claire pour rester lisible (contraste AA). */
.lce-footer__logo img {
	width: 3.25rem;
	height: 3.25rem;
	object-fit: contain;
	padding: 5px;
	background: #fff;
	border-radius: 50%;
}

.lce-footer__logo-name {
	font-family: var(--wp--preset--font-family--display);
	font-size: 1.125rem;
	font-weight: 700;
	color: #fff;
	line-height: 1.15;
}

.lce-footer__desc { margin: 0; font-size: var(--wp--preset--font-size--small); line-height: 1.7; max-width: 30rem; }

.lce-footer__title {
	margin: 0 0 1.25rem;
	font-family: var(--wp--preset--font-family--body);
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--gold);
}

.lce-footer__list { margin: 0; padding: 0; list-style: none; display: grid; gap: 0.75rem; }

.lce-footer__list a {
	color: rgba(255, 255, 255, 0.72);
	text-decoration: none;
	font-size: var(--wp--preset--font-size--small);
	transition: color var(--wp--custom--transition--fast);
	display: inline-flex;
	align-items: center;
	gap: 0.625rem;
	min-height: 1.75rem;
}

.lce-footer__list a:hover { color: #fff; text-decoration: none; }
.lce-footer__list svg { width: 1rem; height: 1rem; flex: none; opacity: 0.55; }
.lce-footer__list li { font-size: var(--wp--preset--font-size--small); line-height: 1.6; }

/* Sur mobile, les liens du pied de page deviennent de vraies cibles tactiles. */
@media (max-width: 800px) {
	.lce-footer__list { gap: 0.25rem; }
	.lce-footer__list a { min-height: 2.75rem; }
}

.lce-footer__socials { display: flex; gap: 0.625rem; margin-top: 1.5rem; }

.lce-footer__socials a {
	width: 2.5rem;
	height: 2.5rem;
	display: grid;
	place-items: center;
	border: 1px solid rgba(255, 255, 255, 0.2);
	border-radius: 50%;
	color: rgba(255, 255, 255, 0.8);
	transition: all var(--wp--custom--transition--base);
}

.lce-footer__socials a:hover {
	background: var(--wp--preset--color--gold);
	border-color: var(--wp--preset--color--gold);
	color: var(--wp--preset--color--navy);
}

.lce-footer__socials svg { width: 1.125rem; height: 1.125rem; }

.lce-footer__bottom {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	padding-block: 1.75rem;
	border-top: 1px solid rgba(255, 255, 255, 0.12);
	font-size: var(--wp--preset--font-size--x-small);
	color: rgba(255, 255, 255, 0.55);
}

.lce-footer__bottom a { color: inherit; text-decoration: none; }
.lce-footer__bottom a:hover { color: #fff; }

/* =========================================================================
   16b. BLOCS NATIFS WORDPRESS UTILISÉS DANS LES GABARITS
   ========================================================================= */

/* Grille d'archives construite avec la « Boucle de requête » de WordPress.
   Chaque <li> généré par le bloc devient une carte identique à .lce-post-card. */
.lce-archive-grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 20rem), 1fr));
	gap: clamp(1.25rem, 2.5vw, 2rem);
	margin: 0;
	padding: 0;
	list-style: none;
}

.lce-archive-grid > li {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	margin: 0;
	padding: 0 0 1.5rem;
	background: #fff;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--lg);
	transition: transform var(--wp--custom--transition--base), box-shadow var(--wp--custom--transition--base);
}

.lce-archive-grid > li:hover {
	transform: translateY(-4px);
	box-shadow: var(--wp--preset--shadow--raised);
}

.lce-archive-grid > li > * {
	margin-inline: 1.5rem;
}

.lce-archive-grid__media {
	margin: 0 0 1.375rem !important;
	overflow: hidden;
	background: var(--wp--preset--color--sand);
}

.lce-archive-grid__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.lce-archive-grid > li:hover .lce-archive-grid__media img {
	transform: scale(1.05);
}

.lce-archive-grid .lce-post-card__title {
	margin-block: 0 0.75rem;
}

.lce-archive-grid .lce-post-card__excerpt {
	margin-bottom: 0;
}

.lce-archive-grid .lce-post-card__excerpt a {
	display: inline-block;
	margin-top: 0.5rem;
	font-weight: 600;
}

/* Métadonnées et navigation d'un article. */
.lce-entry__meta {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 1rem;
	margin-bottom: 1.75rem;
	font-size: var(--wp--preset--font-size--x-small);
	font-weight: 600;
	letter-spacing: var(--wp--custom--tracking--eyebrow);
	text-transform: uppercase;
	color: var(--wp--preset--color--gold-ink);
}

.lce-entry__meta a { color: inherit; }

.lce-entry__nav {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 1rem;
	margin-top: clamp(2.5rem, 5vw, 4rem);
	padding-top: 2rem;
	border-top: 1px solid var(--wp--preset--color--line);
}

.lce-entry__nav a {
	font-weight: 600;
	color: var(--wp--preset--color--primary);
	text-decoration: none;
}

.lce-entry__nav a:hover { text-decoration: underline; }

/* Champ de recherche natif. */
.wp-block-search__inside-wrapper {
	max-width: 34rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--pill);
	background: #fff;
	padding: 0.3125rem;
	overflow: hidden;
}

.lce-on-dark .wp-block-search__inside-wrapper {
	border-color: rgba(255, 255, 255, 0.24);
	background: rgba(255, 255, 255, 0.08);
}

.wp-block-search__input {
	min-height: 2.875rem;
	padding-inline: 1.125rem;
	border: 0;
	background: transparent;
	font-family: inherit;
	font-size: 1rem;
	color: inherit;
}

.lce-on-dark .wp-block-search__input { color: #fff; }
.lce-on-dark .wp-block-search__input::placeholder { color: rgba(255, 255, 255, 0.55); }
.wp-block-search__input:focus { outline: none; }

.wp-block-search__button {
	min-height: 2.875rem;
	padding-inline: 1.5rem;
	border: 0;
	border-radius: var(--wp--custom--radius--pill);
	background: var(--wp--preset--color--primary);
	color: #fff;
	font-family: inherit;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	cursor: pointer;
	transition: background-color var(--wp--custom--transition--base);
}

.wp-block-search__button:hover { background: var(--wp--preset--color--navy); }

/* Boutons natifs dans une section sombre. */
.lce-on-dark .wp-block-button.is-style-outline .wp-block-button__link {
	border: 1px solid rgba(255, 255, 255, 0.38);
	color: #fff;
	background: transparent;
}

.lce-on-dark .wp-block-button.is-style-outline .wp-block-button__link:hover {
	background: #fff;
	color: var(--wp--preset--color--navy);
	border-color: #fff;
}

.lce-on-dark .wp-block-button:not(.is-style-outline) .wp-block-button__link {
	background: var(--wp--preset--color--gold);
	color: var(--wp--preset--color--navy);
}

.lce-on-dark .wp-block-button:not(.is-style-outline) .wp-block-button__link:hover {
	background: #dab43c;
	color: var(--wp--preset--color--navy);
}

/* Image mise en avant d'un article. */
.lce-entry .wp-block-post-featured-image {
	margin-bottom: 2.25rem;
	overflow: hidden;
	border-radius: var(--wp--custom--radius--lg);
}

/* =========================================================================
   17. ANIMATIONS AU DÉFILEMENT
   ========================================================================= */

/* L'état masqué n'est appliqué QUE si le JavaScript du thème tourne
   (classe « lce-js » posée par le script d'amorçage, puis retirée
   automatiquement si le script principal ne répond pas). Sans cette
   précaution, un blocage du JavaScript afficherait un site entièrement vide. */
.lce-js [data-reveal] {
	opacity: 0;
	transform: translateY(22px);
	transition:
		opacity 700ms cubic-bezier(0.22, 1, 0.36, 1),
		transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
	transition-delay: calc(var(--i, 0) * 70ms);
	will-change: opacity, transform;
}

.lce-js [data-reveal="left"] { transform: translateX(-26px); }
.lce-js [data-reveal="right"] { transform: translateX(26px); }
.lce-js [data-reveal="scale"] { transform: scale(0.965); }
.lce-js [data-reveal="fade"] { transform: none; }

/* Sur mobile, les entrées latérales sont converties en entrée verticale :
   un décalage horizontal avant révélation élargirait la page et provoquerait
   un défilement latéral, ce qui est rédhibitoire sur téléphone. */
@media (max-width: 900px) {
	.lce-js [data-reveal="left"],
	.lce-js [data-reveal="right"] {
		transform: translateY(22px);
	}
}

.lce-js [data-reveal].is-revealed {
	opacity: 1;
	transform: none;
	will-change: auto;
}

/* Parallaxe légère (uniquement sur grands écrans, pilotée en JS) */
.lce-parallax { will-change: transform; }

/* Barre de progression de lecture */
.lce-progress {
	position: fixed;
	top: 0;
	left: 0;
	height: 3px;
	width: 100%;
	transform: scaleX(0);
	transform-origin: left;
	background: linear-gradient(90deg, var(--wp--preset--color--primary), var(--wp--preset--color--gold));
	z-index: 150;
	pointer-events: none;
}

/* =========================================================================
   18. ACCESSIBILITÉ — MOUVEMENT RÉDUIT
   ========================================================================= */

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }

	*,
	*::before,
	*::after {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}

	.lce-js [data-reveal] { opacity: 1 !important; transform: none !important; }
	.lce-slideshow__slide.is-active img { animation: none; transform: scale(1.02); }
	.lce-marquee__track { animation: none; }
	.lce-gauge__bar { transition: none; stroke-dashoffset: var(--lce-offset, 0); }
	.lce-mobile-nav.is-open .lce-mobile-nav__link { animation: none; opacity: 1; transform: none; }
}

/* =========================================================================
   19. UTILITAIRES
   ========================================================================= */

/* Sur mobile, les textes secondaires repassent à 16 px : en dessous,
   la lecture devient pénible et iOS déclenche un zoom automatique. */
@media (max-width: 780px) {
	.lce-card__text,
	.lce-post-card__excerpt,
	.lce-archive-grid .lce-post-card__excerpt,
	.lce-result__desc,
	.lce-field__hint,
	.lce-footer__desc {
		font-size: 1rem;
	}
}

.lce-sr-only {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

.lce-center { text-align: center; }
.lce-mt-0 { margin-top: 0; }
.lce-stack { display: grid; gap: 1.25rem; align-content: start; }
.lce-stack--lg { gap: 2rem; }
.lce-flow > * + * { margin-top: 1.125rem; }

.lce-pagination {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	align-items: center;
	gap: 0.5rem;
	margin-top: clamp(2.5rem, 5vw, 4rem);
}

.lce-pagination .page-numbers {
	min-width: 2.75rem;
	min-height: 2.75rem;
	display: inline-grid;
	place-items: center;
	padding-inline: 0.75rem;
	border: 1px solid var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--sm);
	background: #fff;
	color: var(--wp--preset--color--navy);
	text-decoration: none;
	font-size: var(--wp--preset--font-size--small);
	font-weight: 500;
	transition: all var(--wp--custom--transition--base);
}

.lce-pagination .page-numbers:hover { border-color: var(--wp--preset--color--primary); color: var(--wp--preset--color--primary); }

.lce-pagination .page-numbers.current {
	background: var(--wp--preset--color--navy);
	border-color: var(--wp--preset--color--navy);
	color: #fff;
}

/* État vide */
.lce-empty {
	padding: clamp(2.5rem, 6vw, 4rem);
	text-align: center;
	border: 1px dashed var(--wp--preset--color--line);
	border-radius: var(--wp--custom--radius--lg);
	background: #fff;
}

.lce-empty__icon {
	width: 3.5rem;
	height: 3.5rem;
	margin: 0 auto 1.25rem;
	display: grid;
	place-items: center;
	border-radius: 50%;
	background: var(--wp--preset--color--sand);
	color: var(--wp--preset--color--gold-ink);
}

.lce-empty__icon svg { width: 1.5rem; height: 1.5rem; }
.lce-empty h3 { margin: 0 0 0.5rem; }
.lce-empty p { margin: 0 auto; max-width: 34rem; color: var(--wp--preset--color--muted); }

/* Aperçu des blocs dans l'éditeur */
.lce-editor-placeholder {
	display: grid;
	gap: 0.625rem;
	padding: 2rem;
	border: 1px dashed #c3c8d4;
	border-radius: 12px;
	background: #f7f8fb;
	text-align: center;
	color: #3c4257;
}

.lce-editor-placeholder strong {
	font-size: 0.9375rem;
	font-weight: 600;
	letter-spacing: 0.02em;
}

.lce-editor-placeholder span { font-size: 0.8125rem; color: #6b7280; line-height: 1.55; }
