/*
 * Composants réutilisables : header, footer, menu burger, boutons.
 * Breakpoint de bascule nav desktop <-> burger : 1100px (voir docs/decisions.md — la nav
 * complète à 6 liens + CTA ne tient pas avant, pas de valeur maquettée en tablette).
 */

/* ---------- Bouton ---------- */
.button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-8);
	padding: var(--space-14) var(--space-28);
	border-radius: var(--radius-full);
	font-family: var(--font-body);
	font-weight: 600;
	font-size: var(--text-button-size);
	line-height: var(--text-button-line);
	white-space: nowrap;
	border: none;
	cursor: pointer;
	transition: background-color 0.15s ease, opacity 0.15s ease;
}

.button--primary {
	background-color: var(--color-navy-900);
	color: var(--color-white);
}

.button--primary:hover {
	background-color: #221c56;
}

.button--primary:active {
	opacity: 0.9;
}

.button--secondary {
	background-color: var(--color-white);
	color: var(--color-navy-900);
	border: 1px solid var(--color-gray-200);
}

.button--secondary:hover {
	background-color: var(--color-bg-light);
}

.button--outline {
	/* Button / Secondary du composant maître (4:6) : bordure 1.5px navy. Le .button--secondary
	   historique (bordure 1px gray-200) est conservé pour Home/Catalogue — voir decisions.md. */
	background-color: var(--color-white);
	color: var(--color-navy-900);
	border: 1.5px solid var(--color-navy-900);
	padding: calc(var(--space-14) - 1.5px) calc(var(--space-28) - 1.5px);
}

.button--outline:hover {
	background-color: var(--color-bg-light);
}

.button--block {
	display: flex;
	width: 100%;
}

/* ---------- Site header ---------- */
.site-header {
	background-color: var(--color-white);
	border-bottom: 1px solid var(--color-gray-200);
	box-shadow: var(--shadow-header);
	position: relative;
	z-index: 100;
}

.site-header__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-16);
	min-height: var(--header-height-mobile);
	padding-block: var(--space-10);
}

.site-header__logo-img {
	height: 22px;
	width: auto;
}

.site-header__nav,
.site-header__cta {
	display: none;
}

.site-header__burger {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 44px;
	height: 44px;
	background: none;
	border: none;
	color: var(--color-navy-900);
	cursor: pointer;
	margin-right: -10px;
}

@media (min-width: 1100px) {
	.site-header__bar {
		min-height: var(--header-height-desktop);
		padding-block: var(--space-20);
	}

	.site-header__logo-img {
		height: 29px;
	}

	.site-header__nav {
		display: block;
		margin-inline-start: auto;
	}

	.site-header__nav-list {
		display: flex;
		align-items: center;
		gap: var(--space-36);
		font-family: var(--font-body);
		font-weight: 500;
		font-size: var(--text-nav-link-size);
		line-height: var(--text-nav-link-line);
	}

	.site-header__nav-list a[aria-current="page"] {
		font-weight: 600;
	}

	.site-header__cta {
		display: inline-flex;
		margin-inline-start: var(--space-32);
	}

	.site-header__burger {
		display: none;
	}
}

/* ---------- Panneau du menu mobile (burger) ---------- */
.nav-panel {
	position: fixed;
	inset: 0;
	z-index: 200;
	background-color: var(--color-white);
	overflow-y: auto;
}

.nav-panel[hidden] {
	display: none;
}

.nav-panel__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-16);
	min-height: var(--header-height-mobile);
	padding-inline: var(--space-16);
	padding-block: var(--space-10);
}

.nav-panel__list {
	padding-inline: var(--space-16);
	padding-block: var(--space-8);
}

.nav-panel__list li {
	border-bottom: 1px solid var(--color-gray-200);
}

.nav-panel__list a {
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: 60px;
	font-family: var(--font-body);
	font-weight: 500;
	font-size: var(--text-mobile-menu-link-size);
	line-height: var(--text-mobile-menu-link-line);
	color: var(--color-navy-900);
}

.nav-panel__cta {
	padding: var(--space-16) var(--space-16) var(--space-24);
}

@media (min-width: 1100px) {
	.nav-panel {
		display: none !important;
	}
}

/* ---------- Site footer ---------- */
.site-footer {
	background-color: var(--color-navy-900);
	color: var(--color-white);
	padding-block: var(--space-48) var(--space-32);
}

.site-footer__top {
	display: flex;
	flex-direction: column;
	gap: var(--space-32);
}

.site-footer__brand {
	display: flex;
	flex-direction: column;
	gap: var(--space-12);
}

.site-footer__logo {
	align-self: flex-start;
	height: 26px;
	width: auto;
}

.site-footer__tagline {
	max-width: 340px;
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
}

.site-footer__col-title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 15px;
	color: var(--color-mint-200);
	margin-bottom: var(--space-16);
}

.site-footer__links li + li {
	margin-top: var(--space-16);
}

.site-footer__links a {
	font-size: var(--text-body-sm-size);
}

.site-footer__divider {
	height: 1px;
	background-color: var(--color-white);
	margin-block: var(--space-32);
}

.site-footer__legal {
	display: flex;
	flex-direction: column;
	gap: var(--space-8);
	font-size: 13px;
}

.site-footer__cols-row {
	display: flex;
	gap: var(--space-24);
}

.site-footer__cols-row .site-footer__col {
	flex: 1 0 0;
	min-width: 0;
}

@media (min-width: 1100px) {
	.site-footer {
		padding-block: var(--space-64) var(--space-32);
	}

	.site-footer__top {
		flex-direction: row;
		align-items: flex-start;
		gap: 80px;
	}

	/* Sur desktop, Figma montre 4 blocs alignés en une seule rangée (marque, Navigation,
	   Domaines populaires, Nous soutenir) : le wrapper mobile s'efface sans changer le DOM. */
	.site-footer__cols-row {
		display: contents;
	}

	.site-footer__legal {
		flex-direction: row;
		align-items: center;
		justify-content: space-between;
	}
}

/* ---------- Tag domaine ---------- */
.tag-domaine {
	display: inline-flex;
	padding: var(--space-4) var(--space-16);
	border-radius: var(--radius-full);
	background-color: var(--domain-color, var(--color-gray-200));
	color: var(--color-navy-900);
	font-family: var(--font-body);
	font-weight: 600;
	font-size: 11px;
	white-space: nowrap;
}

/* ---------- Badge FIF PL ---------- */
.badge-fifpl {
	display: inline-flex;
	padding: var(--space-6) var(--space-12);
	border-radius: var(--radius-full);
	background-color: var(--color-navy-900);
	color: var(--color-white);
	font-family: var(--font-body);
	font-weight: 600;
	font-size: var(--text-badge-size);
	line-height: var(--text-badge-line);
	letter-spacing: var(--text-badge-tracking);
	text-transform: uppercase;
	white-space: nowrap;
}

/* ---------- Section heading ---------- */
.section-heading {
	display: flex;
	flex-direction: column;
	gap: var(--space-16);
	margin-bottom: var(--space-32);
}

.section-heading__title {
	font-size: var(--text-mobile-h2-size);
	line-height: var(--text-mobile-h2-line);
}

.section-heading__subtitle {
	color: var(--color-gray-700);
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
}

.section-heading__link {
	display: none;
	font-weight: 600;
	color: var(--color-navy-900);
	white-space: nowrap;
}

@media (min-width: 1100px) {
	.section-heading {
		flex-direction: row;
		align-items: flex-end;
		justify-content: space-between;
	}

	.section-heading__title {
		font-size: var(--text-h2-size);
		line-height: var(--text-h2-line);
	}

	.section-heading__subtitle {
		font-size: var(--text-body-base-size);
		line-height: var(--text-body-base-line);
	}

	.section-heading__link {
		display: inline-block;
	}
}

/* ---------- Formation card ---------- */
.formation-card {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	background-color: var(--color-white);
	border: 1px solid transparent;
	border-radius: var(--radius-lg);
	box-shadow: var(--shadow-card);
	overflow: hidden;
	transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

.formation-card:hover,
.formation-card:focus-within {
	border-color: var(--color-gray-400);
	box-shadow: var(--shadow-panel);
}

/* Vignette — variantes Figma « Default » (visuel formateur) et « Placeholder image » */
.formation-card__thumb {
	flex-shrink: 0;
	height: 160px;
	overflow: hidden;
}

.formation-card__thumb--image {
	background-color: var(--color-bg-light);
}

.formation-card__image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Illustration du domaine à taille native (203 px), centrée et rognée par la vignette */
.formation-card__thumb--placeholder {
	display: flex;
	align-items: center;
	justify-content: center;
	background-color: var(--domain-color, var(--domain-autres-domaines));
}

.formation-card__thumb--placeholder svg {
	flex-shrink: 0;
	max-width: none;
}

.formation-card__body {
	display: flex;
	flex-direction: column;
	flex: 1;
	gap: var(--space-16);
	padding: var(--space-24);
}

.formation-card__header {
	display: flex;
	flex-direction: column;
	gap: var(--space-12);
	padding-bottom: var(--space-16);
	flex: 1;
}

.formation-card__tags {
	display: flex;
	align-items: center;
	gap: var(--space-8);
	flex-wrap: wrap;
}

.formation-card__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: var(--text-card-title-size);
	line-height: 1.3;
}

.formation-card__link::after {
	content: "";
	position: absolute;
	inset: 0;
}

.formation-card__organisme {
	color: var(--color-gray-700);
	font-size: var(--text-body-sm-size);
}

.formation-card__footer {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--space-16);
	padding-top: var(--space-16);
	border-top: 1px solid var(--color-gray-200);
}

.formation-card__meta {
	color: var(--color-gray-700);
	font-size: 13px;
	font-weight: 500;
}

.formation-card__price {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: var(--text-card-price-size);
}

/* ---------- Domain card ---------- */
.domain-card {
	position: relative;
	display: flex;
	align-items: center;
	gap: var(--space-16);
	padding: var(--space-20);
	background-color: var(--color-white);
	border: 1px solid var(--color-gray-200);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-card);
	transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

.domain-card:hover,
.domain-card:focus-visible {
	border-color: var(--color-gray-400);
	box-shadow: var(--shadow-panel);
}

.domain-card__icon {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	width: 52px;
	height: 52px;
	border-radius: var(--radius-full);
	background-color: var(--domain-color, var(--color-gray-200));
	box-shadow: var(--shadow-badge);
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: 20px;
	color: var(--color-navy-900);
}

.domain-card__text {
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
	min-width: 0;
}

.domain-card__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 17px;
}

.domain-card__count {
	color: var(--color-gray-700);
	font-size: 13px;
}

/* ---------- Carte organisme ---------- */
.carte-organisme {
	display: flex;
	flex-direction: column;
	gap: var(--space-14);
	padding: var(--space-24);
	background-color: var(--color-white);
	border: 1px solid var(--color-gray-200);
	border-radius: var(--radius-md);
	box-shadow: var(--shadow-panel);
}

.carte-organisme__header {
	display: flex;
	align-items: center;
	gap: var(--space-12);
}

.carte-organisme__avatar,
.carte-organisme__logo {
	flex-shrink: 0;
	width: 48px;
	height: 48px;
	border-radius: var(--radius-full);
}

.carte-organisme__avatar {
	display: flex;
	align-items: center;
	justify-content: center;
	background-color: var(--color-mint-100);
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 18px;
	color: var(--color-navy-900);
}

.carte-organisme__logo {
	object-fit: cover;
}

.carte-organisme__name-col {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.carte-organisme__name {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 16px;
	color: var(--color-navy-900);
}

.carte-organisme__type {
	color: var(--color-gray-700);
	font-size: 13px;
}

.carte-organisme__description {
	color: var(--color-gray-700);
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
}

.carte-organisme__divider {
	height: 1px;
	background-color: var(--color-gray-200);
}

.carte-organisme__intervenant {
	display: flex;
	flex-direction: column;
	gap: 2px;
}

.carte-organisme__intervenant-label {
	font-weight: 600;
	font-size: 12px;
	letter-spacing: 0.48px;
	text-transform: uppercase;
	color: var(--color-navy-900);
}

.carte-organisme__intervenant-nom {
	font-weight: 600;
	font-size: var(--text-body-sm-size);
	color: var(--color-navy-900);
}

.carte-organisme__intervenant-role {
	color: var(--color-gray-700);
	font-size: 13px;
}

/* ---------- Card Organisme Liste (annuaire) ---------- */
.organisme-card {
	display: flex;
	flex-direction: column;
	gap: var(--space-16);
	padding: var(--space-24);
	background-color: var(--color-white);
	border: 1px solid var(--color-gray-200);
	border-radius: var(--radius-lg);
	text-decoration: none;
	transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

.organisme-card:hover,
.organisme-card:focus-visible {
	border-color: var(--color-gray-400);
	box-shadow: var(--shadow-card);
}

.organisme-card__header {
	display: flex;
	align-items: center;
	gap: var(--space-14);
}

.organisme-card__avatar,
.organisme-card__logo {
	flex-shrink: 0;
	width: 56px;
	height: 56px;
	border-radius: var(--radius-full);
}

.organisme-card__avatar {
	display: flex;
	align-items: center;
	justify-content: center;
	background-color: var(--color-mint-100);
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 20px;
	color: var(--color-navy-900);
}

.organisme-card__logo {
	object-fit: cover;
}

.organisme-card__name {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: 18px;
	line-height: var(--text-body-base-line);
	color: var(--color-navy-900);
}

.organisme-card__description {
	color: var(--color-gray-700);
	font-size: var(--text-body-sm-size);
	line-height: 21px;
}

.organisme-card__divider {
	height: 1px;
	background-color: var(--color-gray-200);
}

.organisme-card__badge {
	display: inline-flex;
	align-self: flex-start;
	padding: var(--space-6) var(--space-12);
	border-radius: var(--radius-full);
	background-color: var(--color-mint-100);
	color: var(--color-navy-900);
	font-family: var(--font-body);
	font-weight: 600;
	font-size: var(--text-badge-size);
	line-height: var(--text-badge-line);
	letter-spacing: var(--text-badge-tracking);
	white-space: nowrap;
}

/* ---------- Breadcrumb ---------- */
/* Composant maître Breadcrumbs (156:6358) : gap 4px, liens Medium soulignés, séparateur
   « > », niveau courant en Inter Bold navy. */
.breadcrumb__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-4);
	font-size: var(--text-body-sm-size);
}

.breadcrumb__item {
	display: flex;
	align-items: center;
	gap: var(--space-4);
}

.breadcrumb__link {
	color: var(--color-gray-700);
	font-weight: 500;
	text-decoration: underline;
	text-decoration-thickness: 14%;
}

.breadcrumb__current {
	color: var(--color-navy-900);
	font-weight: 700;
}

.breadcrumb__sep {
	color: var(--color-gray-700);
}

@media (max-width: 1099.98px) {
	.breadcrumb__item--collapse,
	.breadcrumb__sep--collapse {
		display: none;
	}
}

/* ---------- Pagination ---------- */
.pagination__list {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--space-8);
}

.pagination__list a,
.pagination__list span {
	display: flex;
	align-items: center;
	justify-content: center;
	min-width: 40px;
	min-height: 40px;
	padding-inline: var(--space-8);
	border-radius: var(--radius-full);
	font-weight: 600;
	color: var(--color-navy-900);
}

.pagination__list a:hover {
	background-color: var(--color-bg-light);
}

.pagination__list .current {
	background-color: var(--color-navy-900);
	color: var(--color-white);
}

@media (max-width: 767px) {
	.pagination__list a,
	.pagination__list span {
		min-width: 44px;
		min-height: 44px;
	}
}

/* ---------- Carousel (mobile / tablette) ---------- */
.carousel__track {
	display: flex;
	gap: var(--space-16);
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: var(--space-16);
	-webkit-overflow-scrolling: touch;
}

.carousel__item {
	flex: 0 0 316px;
	scroll-snap-align: start;
}

.carousel__item:first-child {
	margin-inline-start: var(--space-16);
}

.carousel__item:last-child {
	margin-inline-end: var(--space-16);
}

.carousel__dots {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: var(--space-8);
	margin-top: var(--space-16);
}

.carousel__dot {
	width: 8px;
	height: 8px;
	padding: 0;
	border: none;
	border-radius: var(--radius-full);
	background-color: var(--color-gray-200);
	cursor: pointer;
}

.carousel__dot.is-active {
	width: 24px;
	background-color: var(--color-navy-900);
}

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

@media (min-width: 1100px) {
	.carousel__track {
		gap: var(--space-24);
	}

	.carousel__item {
		flex: 1 1 0;
		scroll-snap-align: none;
	}

	.carousel__item:first-child,
	.carousel__item:last-child {
		margin-inline: 0;
	}

	.carousel__dots {
		display: none;
	}
}

/* ==================== FORMULAIRES (itération « Demandes organismes ») ==================== */
/* Relevés Figma : voir docs/figma-map.md § Itération « Demandes organismes ». */

/* ---------- Form Field (141:4417) ---------- */
.form-field {
	display: flex;
	flex-direction: column;
	gap: var(--space-8);
	min-width: 0;
}

.form-field__label {
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
	font-weight: 500;
	color: var(--color-navy-900);
}

.form-field__required {
	margin-left: var(--space-2);
	color: var(--color-mint-800); /* texte vert sur fond clair = mint-800 (decisions.md) */
}

.form-field__control {
	display: flex;
	align-items: center;
	gap: var(--space-8);
	min-height: 48px;
	padding-inline: var(--space-16);
	background-color: var(--color-white);
	border: 1px solid var(--color-gray-400);
	border-radius: var(--radius-field);
	color: var(--color-navy-900);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

/* Focus (variante Form Field / Focus) : bordure 2px mint-500 + halo 4px. Le padding est réduit
   d'1px pour éviter tout décalage de mise en page. */
.form-field__control:focus-within {
	border: 2px solid var(--color-mint-500);
	padding-inline: calc(var(--space-16) - 1px);
	box-shadow: var(--shadow-focus-field);
}

.form-field__control .icon {
	flex-shrink: 0;
}

.form-field__input {
	flex: 1;
	min-width: 0;
	width: 100%;
	min-height: 46px;
	padding: 0;
	border: 0;
	background: transparent;
	font-family: var(--font-body);
	font-size: var(--text-body-base-size);
	line-height: var(--text-body-base-line);
	color: var(--color-navy-900);
}

.form-field__input:focus,
.form-field__input:focus-visible {
	outline: none; /* l'état de focus est porté par .form-field__control */
}

select.form-field__input,
select.champ-modifie__input {
	appearance: none;
	padding-right: var(--space-28);
	background-image: linear-gradient(45deg, transparent 50%, var(--color-navy-900) 50%), linear-gradient(135deg, var(--color-navy-900) 50%, transparent 50%);
	background-position: right var(--space-12) center, right var(--space-6) center;
	background-size: 6px 6px, 6px 6px;
	background-repeat: no-repeat;
	cursor: pointer;
}

.form-field--textarea .form-field__control {
	align-items: flex-start;
	min-height: 120px;
	padding-block: var(--space-14);
}

.form-field--textarea .form-field__control:focus-within {
	padding-block: calc(var(--space-14) - 1px);
}

.form-field--textarea .form-field__input {
	min-height: 90px;
	resize: vertical;
}

.form-field__help,
.form-field__counter {
	font-size: var(--text-caption-size);
	line-height: var(--text-caption-line);
	color: var(--color-gray-700);
}

.form-field__error {
	display: flex;
	gap: var(--space-4);
	font-size: var(--text-caption-size);
	line-height: var(--text-caption-line);
	font-weight: 600;
	color: var(--color-error);
}

.form-field__error::before {
	content: "!";
	display: inline-grid;
	place-items: center;
	flex-shrink: 0;
	width: 16px;
	height: 16px;
	border-radius: var(--radius-full);
	background-color: var(--color-error);
	color: var(--color-white);
	font-size: var(--text-micro-size);
}

.form-field--error .form-field__control,
.form-field--error .form-field__control:focus-within {
	border: 2px solid var(--color-error);
	padding-inline: calc(var(--space-16) - 1px);
}

/* ---------- Checkbox Option (141:4446) ---------- */
.checkbox-option {
	position: relative;
	display: flex;
	align-items: flex-start;
	gap: var(--space-14);
	padding: var(--space-18) var(--space-20);
	background-color: var(--color-white);
	border: 1px solid var(--color-gray-200);
	border-radius: var(--radius-option);
	cursor: pointer;
	transition: background-color 0.15s ease, border-color 0.15s ease;
}

.checkbox-option__input {
	position: absolute;
	opacity: 0;
	width: 22px;
	height: 22px;
	margin: 0;
	pointer-events: none;
}

.checkbox-option__box {
	display: grid;
	place-items: center;
	flex-shrink: 0;
	width: 22px;
	height: 22px;
	background-color: var(--color-white);
	border: 1.5px solid var(--color-gray-400);
	border-radius: var(--radius-checkbox);
	color: var(--color-white);
}

.checkbox-option__box .icon {
	visibility: hidden;
}

.checkbox-option__text {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: var(--space-4);
	min-width: 0;
}

.checkbox-option__title-row {
	display: flex;
	flex-direction: column-reverse; /* mobile : badge au-dessus du titre (Required compact) */
	align-items: flex-start;
	gap: var(--space-4);
}

.checkbox-option__title {
	font-size: var(--text-body-md-size);
	line-height: var(--text-body-md-line);
	font-weight: 600;
	color: var(--color-navy-900);
}

.checkbox-option__description {
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
	color: var(--color-gray-700);
}

.checkbox-option__badge {
	display: inline-flex;
	padding: var(--space-3) var(--space-8);
	border-radius: var(--radius-full);
	background-color: var(--color-navy-900);
	color: var(--color-white);
	font-size: var(--text-badge-size);
	line-height: var(--text-badge-line);
	letter-spacing: var(--text-badge-tracking);
	font-weight: 600;
	text-transform: uppercase;
	white-space: nowrap;
}

.checkbox-option:has(.checkbox-option__input:checked) {
	background-color: var(--color-mint-100);
	border: 1.5px solid var(--color-mint-500);
	padding: calc(var(--space-18) - 0.5px) calc(var(--space-20) - 0.5px);
}

.checkbox-option:has(.checkbox-option__input:checked) .checkbox-option__box {
	background-color: var(--color-navy-900);
	border-color: var(--color-navy-900);
}

.checkbox-option:has(.checkbox-option__input:checked) .checkbox-option__box .icon {
	visibility: visible;
}

.checkbox-option:has(.checkbox-option__input:focus-visible) {
	outline: 3px solid var(--color-navy-900);
	outline-offset: 2px;
}

.checkbox-option--required {
	cursor: default;
}

@media (min-width: 768px) {
	.checkbox-option__title-row {
		flex-direction: row;
		flex-wrap: wrap;
		align-items: center;
		gap: var(--space-4) var(--space-10);
	}
}

/* ---------- Step Header (141:4447) ---------- */
.step-header {
	display: flex;
	align-items: center;
	gap: var(--space-14);
}

.step-header__numero {
	display: grid;
	place-items: center;
	flex-shrink: 0;
	width: 36px;
	height: 36px;
	border-radius: var(--radius-full);
	background-color: var(--color-mint-100);
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: var(--text-h4-size);
	line-height: var(--text-h4-line);
	color: var(--color-navy-900);
}

.step-header__text {
	display: flex;
	flex-direction: column;
	color: var(--color-navy-900);
}

.step-header__eyebrow {
	font-family: var(--font-body);
	font-size: var(--text-badge-size);
	line-height: var(--text-badge-line);
	letter-spacing: var(--text-badge-tracking);
	font-weight: 600;
	text-transform: uppercase;
	opacity: 0.6;
}

.step-header__title {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: var(--text-h4-size);
	line-height: var(--text-h4-line);
}

/* ---------- Progress Step (161:6421) ---------- */
.progress-step {
	display: flex;
	gap: var(--space-14);
}

.progress-step__indicator {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--space-4);
	flex-shrink: 0;
}

.progress-step__dot {
	display: grid;
	place-items: center;
	width: 28px;
	height: 28px;
	border-radius: var(--radius-full);
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: var(--text-body-md-size);
	line-height: var(--text-body-md-line);
}

.progress-step__line {
	flex: 1;
	width: 2px;
	min-height: 1px;
	border-radius: 1px;
	background-color: var(--color-gray-200);
}

.progress-step:last-child .progress-step__line {
	visibility: hidden;
}

.progress-step__check {
	display: none;
	color: var(--color-white);
}

.progress-step__text {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: var(--space-2);
	min-width: 0;
	padding-block: var(--space-4) var(--space-20);
}

.progress-step__title-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--space-8);
}

.progress-step__title {
	font-size: var(--text-body-md-size);
	line-height: var(--text-body-md-line);
	font-weight: 600;
	color: var(--color-navy-900);
	text-decoration: none;
}

a.progress-step__title:hover {
	text-decoration: underline;
}

.progress-step__badge {
	display: none;
	padding: var(--space-2) var(--space-8);
	border-radius: var(--radius-full);
	background-color: var(--color-mint-100);
	font-size: var(--text-micro-size);
	line-height: var(--text-micro-line);
	font-weight: 600;
	color: var(--color-navy-900);
	text-transform: uppercase;
}

.progress-step__description {
	font-size: var(--text-meta-size);
	line-height: var(--text-meta-line);
	color: var(--color-gray-700);
}

/* Done : pastille mint-500 + coche blanche (contraste 2,1:1 signalé dans decisions.md). */
.progress-step--done .progress-step__dot {
	background-color: var(--color-mint-500);
}

.progress-step--done .progress-step__check {
	display: block;
}

.progress-step--done .progress-step__numero {
	display: none;
}

.progress-step--done .progress-step__line {
	background-color: var(--color-mint-500);
}

.progress-step--current .progress-step__dot {
	background-color: var(--color-navy-900);
	color: var(--color-white);
}

.progress-step--current .progress-step__badge {
	display: inline-flex;
}

.progress-step--upcoming .progress-step__dot {
	background-color: var(--color-white);
	border: 1.5px solid var(--color-gray-400);
	color: var(--color-gray-600);
}

.progress-step--upcoming .progress-step__title {
	color: var(--color-gray-600);
}

/* ---------- Lien « Changer » (Organisme / Formation Sélectionné·e) ---------- */
.link-changer {
	position: relative;
	flex-shrink: 0;
	padding: 0;
	border: 0;
	background: none;
	font-family: var(--font-body);
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
	font-weight: 600;
	color: var(--color-navy-900);
	text-decoration: underline;
	cursor: pointer;
}

/* Cible tactile ≥ 44 px sans changer le rendu. */
.link-changer::after,
.chip::after {
	content: "";
	position: absolute;
	inset: -12px -8px;
}

/* ---------- Organisme Sélectionné (161:6492) ---------- */
.organisme-selectionne {
	display: flex;
	align-items: center;
	gap: var(--space-14);
	padding: var(--space-14);
	background-color: var(--color-mint-100);
	border: 1.5px solid var(--color-mint-500);
	border-radius: var(--radius-field);
}

.organisme-selectionne__avatar {
	position: relative;
	display: grid;
	place-items: center;
	flex-shrink: 0;
	width: 44px;
	height: 44px;
	border-radius: var(--radius-full);
	background-color: var(--color-white);
}

.organisme-selectionne__initiale {
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: var(--text-mobile-h3-size);
	line-height: var(--text-h4-line);
	color: var(--color-navy-900);
}

.organisme-selectionne__badge {
	position: absolute;
	top: 28px;
	left: 28px;
	display: flex;
	color: var(--color-mint-500);
}

.organisme-selectionne__text,
.formation-selectionnee__text {
	display: flex;
	flex: 1;
	flex-direction: column;
	min-width: 0;
}

.organisme-selectionne__text {
	gap: var(--space-2);
}

.organisme-selectionne__nom,
.formation-selectionnee__titre {
	font-size: var(--text-body-base-size);
	line-height: var(--text-body-md-relaxed-line);
	font-weight: 600;
	color: var(--color-navy-900);
}

.organisme-selectionne__meta,
.formation-selectionnee__meta {
	font-size: var(--text-meta-size);
	line-height: var(--text-meta-line);
	color: var(--color-gray-700);
}

/* ---------- Formation Sélectionnée (164:7086) ---------- */
.formation-selectionnee {
	display: flex;
	align-items: flex-start;
	gap: var(--space-14);
	padding: var(--space-14);
	background-color: var(--color-white);
	border: 1.5px solid var(--color-mint-500);
	border-radius: var(--radius-field);
}

.formation-selectionnee__text {
	gap: var(--space-6);
	align-items: flex-start;
}

@media (min-width: 768px) {
	.organisme-selectionne,
	.formation-selectionnee {
		align-items: center;
		padding: var(--space-14) var(--space-16);
	}
}

/* ---------- Chip (164:7099) ---------- */
.chip {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: var(--space-6);
	padding: var(--space-8) var(--space-14);
	background-color: var(--color-white);
	border: 1px solid var(--color-gray-400);
	border-radius: var(--radius-full);
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
	font-weight: 500;
	color: var(--color-navy-900);
	cursor: pointer;
	white-space: nowrap;
}

.chip::after {
	inset: -4px 0;
}

.chip__input {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	margin: 0;
}

.chip__check {
	display: none;
	color: var(--color-white);
}

.chip:has(.chip__input:checked) {
	background-color: var(--color-navy-900);
	border-color: var(--color-navy-900);
	color: var(--color-white);
}

.chip:has(.chip__input:checked) .chip__check {
	display: flex;
}

.chip:has(.chip__input:focus-visible) {
	outline: 3px solid var(--color-navy-900);
	outline-offset: 2px;
}

/* ---------- Choice Chip (143:4718) : radio stylé ---------- */
/* Hauteur 44 px : 13 px de marge interne verticale dans Figma, bordure (intérieure) comprise. */
.choice-chip {
	position: relative;
	display: inline-flex;
	align-items: center;
	gap: var(--space-6);
	padding: var(--space-12) calc(var(--space-14) - 1px);
	background-color: var(--color-white);
	border: 1px solid var(--color-gray-200);
	border-radius: var(--radius-full);
	font-size: var(--text-body-sm-size);
	line-height: var(--text-meta-line);
	font-weight: 600;
	color: var(--color-navy-900);
	cursor: pointer;
	white-space: nowrap;
}

.choice-chip:hover {
	border-color: var(--color-gray-400);
}

.choice-chip__input {
	position: absolute;
	opacity: 0;
	width: 1px;
	height: 1px;
	margin: 0;
	pointer-events: none;
}

.choice-chip__check {
	display: none;
}

.choice-chip:has(.choice-chip__input:checked) {
	background-color: var(--color-navy-900);
	border-color: var(--color-navy-900);
	color: var(--color-white);
}

.choice-chip:has(.choice-chip__input:checked) .choice-chip__check {
	display: flex;
}

.choice-chip:has(.choice-chip__input:focus-visible) {
	outline: 2px solid var(--color-navy-900);
	outline-offset: 2px;
}

@media (prefers-reduced-motion: no-preference) {
	.choice-chip {
		transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
	}
}

@media (min-width: 768px) {
	.choice-chip {
		padding-inline: calc(var(--space-18) - 1px);
	}
}

/* ---------- Légende « * Champs obligatoires » (181:10337) ---------- */
.form-legend {
	font-size: var(--text-meta-size);
	line-height: var(--text-meta-line);
	color: var(--color-gray-700);
}

.form-legend__mark {
	font-weight: 600;
	color: var(--color-mint-800);
}

/* Champ piège (honeypot) des formulaires publics : hors écran, hors arbre d'accessibilité. */
.form-trap {
	position: absolute;
	left: -9999px;
	width: 1px;
	height: 1px;
	overflow: hidden;
}

/* ---------- Champ Modifié (169:8069) ---------- */
.champ-modifie {
	display: flex;
	flex-direction: column;
	gap: var(--space-8);
}

.champ-modifie__label {
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
	font-weight: 500;
	color: var(--color-navy-900);
}

.champ-modifie__values {
	display: flex;
	flex-direction: column;
	gap: var(--space-8);
}

.champ-modifie__box {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: var(--space-2);
	min-width: 0;
	padding: var(--space-8) var(--space-16);
	border-radius: var(--radius-field);
}

.champ-modifie__box--actuel {
	background-color: var(--color-bg-light);
	border: 1px solid var(--color-gray-200);
	color: var(--color-gray-600);
}

.champ-modifie__box--nouveau {
	background-color: var(--color-white);
	border: 1px solid var(--color-gray-400);
	color: var(--color-navy-900);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.champ-modifie__box--nouveau:focus-within {
	border: 2px solid var(--color-mint-500);
	padding: calc(var(--space-8) - 1px) calc(var(--space-16) - 1px);
	box-shadow: var(--shadow-focus-field);
}

.champ-modifie--error .champ-modifie__box--nouveau,
.champ-modifie--error .champ-modifie__box--nouveau:focus-within {
	border: 2px solid var(--color-error);
	padding: calc(var(--space-8) - 1px) calc(var(--space-16) - 1px);
}

.champ-modifie__eyebrow {
	font-size: var(--text-micro-size);
	line-height: var(--text-micro-line);
	font-weight: 600;
	text-transform: uppercase;
}

.champ-modifie__actuel {
	font-size: var(--text-body-md-size);
	line-height: var(--text-body-md-relaxed-line);
	text-decoration: line-through;
	overflow-wrap: anywhere;
}

.champ-modifie__input {
	width: 100%;
	padding: 0;
	border: 0;
	background: transparent;
	font-family: var(--font-body);
	font-size: var(--text-body-md-size);
	line-height: var(--text-body-md-relaxed-line);
	font-weight: 500;
	color: var(--color-navy-900);
}

.champ-modifie__input:focus,
.champ-modifie__input:focus-visible {
	outline: none;
}

textarea.champ-modifie__input {
	resize: vertical;
}

select.champ-modifie__input {
	margin: 0;
	background-position: right var(--space-6) center, right 0 center;
}

.champ-modifie__arrow {
	display: none;
	flex-shrink: 0;
	color: var(--color-gray-600);
}

.champ-modifie__note {
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
	color: var(--color-gray-700);
}

@media (min-width: 768px) {
	.champ-modifie__values {
		flex-direction: row;
		align-items: center;
		gap: var(--space-12);
	}

	.champ-modifie__arrow {
		display: flex;
	}
}

/* ---------- Combobox de recherche d'organisme (178:9572, ajoutée par revendiquer.js) ---------- */
.combobox__popup {
	margin-top: var(--space-4);
	padding: var(--space-8);
	background-color: var(--color-white);
	border: 1px solid var(--color-gray-200);
	border-radius: var(--radius-option);
	box-shadow: var(--shadow-dropdown);
}

.combobox__list {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	max-height: 320px;
	overflow-y: auto;
}

.combobox__option {
	display: flex;
	align-items: center;
	gap: var(--space-12);
	min-height: 44px;
	padding: var(--space-10) var(--space-12);
	border-radius: var(--radius-suggestion);
	cursor: pointer;
}

.combobox__option:hover,
.combobox__option.is-active {
	background-color: var(--color-mint-100);
}

.combobox__option.is-active {
	outline: 2px solid var(--color-navy-900);
	outline-offset: -2px;
}

.combobox__avatar {
	display: grid;
	place-items: center;
	flex-shrink: 0;
	width: 36px;
	height: 36px;
	border-radius: var(--radius-full);
	background-color: var(--color-mint-100);
	font-family: var(--font-heading);
	font-weight: 600;
	font-size: var(--text-body-base-size);
	line-height: var(--text-body-sm-line);
	color: var(--color-navy-900);
}

.combobox__option:hover .combobox__avatar,
.combobox__option.is-active .combobox__avatar {
	background-color: var(--color-white);
}

.combobox__text {
	display: flex;
	flex-direction: column;
	gap: var(--space-2);
	min-width: 0;
}

.combobox__nom {
	font-size: var(--text-body-md-size);
	line-height: var(--text-body-md-line);
	font-weight: 600;
	color: var(--color-navy-900);
}

.combobox__meta {
	font-size: var(--text-meta-size);
	line-height: var(--text-meta-line);
	color: var(--color-gray-700);
}

.combobox__empty {
	padding: var(--space-10) var(--space-12);
	font-size: var(--text-body-sm-size);
	color: var(--color-gray-700);
}

.combobox__option--autre {
	display: block;
	margin-top: var(--space-2);
	padding: var(--space-12);
	border-top: 1px solid var(--color-gray-200);
	border-radius: 0 0 var(--radius-suggestion) var(--radius-suggestion);
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
	color: var(--color-gray-700);
}

.combobox__link {
	font-weight: 600;
	color: var(--color-navy-900);
	text-decoration: underline;
}

@media (prefers-reduced-motion: reduce) {
	.form-field__control,
	.checkbox-option,
	.champ-modifie__box--nouveau {
		transition: none;
	}
}

/* ==========================================================================
   Itération À propos — Figma « Ready to dev » (voir docs/figma-map.md)
   ========================================================================== */

/* ---------- Bouton mint (Carte don 191:10768) : fond mint-200, texte navy, sur fond navy
   uniquement (8,00:1 ; survol mint-300, 6,46:1) ---------- */
.button--mint {
	background-color: var(--color-mint-200);
	color: var(--color-navy-900);
}

.button--mint:hover {
	background-color: var(--color-mint-300);
}

/* ---------- Hero de page (fil d'Ariane, H1, intro) : style « H1 de page » commun aux pages
   éditoriales (193:10792 / 193:11069) ---------- */
.page-hero {
	display: flex;
	flex-direction: column;
	gap: var(--space-12);
	padding-block: var(--space-32) var(--space-8);
}

.page-hero .breadcrumb__list {
	line-height: normal; /* Breadcrumbs 156:6358 : interligne automatique (17 px) */
}

.page-hero__title {
	font-size: var(--text-mobile-h1-size);
	line-height: var(--text-mobile-h1-line);
}

.page-hero__intro {
	font-size: var(--text-body-base-size);
	line-height: var(--text-body-base-line);
	color: var(--color-gray-700);
}

@media (min-width: 1100px) {
	.page-hero {
		gap: var(--space-16);
		padding-block: var(--space-56) var(--space-16);
	}

	.page-hero__title {
		font-size: var(--text-page-title-size);
		line-height: var(--text-page-title-line);
	}

	.page-hero__intro {
		max-width: var(--width-intro);
		font-size: var(--text-body-lg-size);
		line-height: var(--text-body-lg-line);
	}
}

/* ---------- Fact List — « En bref » (193:10802 / 193:11079) ---------- */
.fact-list {
	display: flex;
	flex-direction: column;
	gap: var(--space-20);
	padding: var(--space-24);
	border-radius: var(--radius-lg);
	background-color: var(--color-bg-light);
}

.fact-list__title {
	font-weight: 600;
	font-size: var(--text-mobile-fact-size);
	line-height: var(--text-mobile-fact-line);
}

.fact-list__list {
	display: flex;
	flex-direction: column;
	gap: var(--space-20);
}

.fact-list__item {
	display: flex;
	flex-direction: column;
	gap: var(--space-4);
}

.fact-list__item + .fact-list__item {
	padding-top: var(--space-20);
	border-top: 1px solid var(--color-gray-200);
}

.fact-list__value {
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: var(--text-mobile-stat-size);
	line-height: var(--text-mobile-stat-line);
}

.fact-list__label {
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
	color: var(--color-gray-700);
}

@media (min-width: 1100px) {
	.fact-list,
	.fact-list__list {
		gap: var(--space-24);
	}

	.fact-list {
		padding: var(--space-32);
	}

	.fact-list__item + .fact-list__item {
		padding-top: var(--space-24);
	}

	.fact-list__title {
		font-size: var(--text-h4-size);
		line-height: var(--text-h4-line);
	}
}

/* ---------- Carte membre (193:11032) : Vertical par défaut, Horizontal en modificateur ---------- */
.member-card {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: var(--space-24);
	padding: var(--space-24);
	border: 1px solid var(--color-gray-200);
	border-radius: var(--radius-lg);
	background-color: var(--color-white);
}

.member-card__photo {
	flex: none;
	width: var(--size-member-photo-mobile);
	height: var(--size-member-photo-mobile);
	border-radius: var(--radius-full);
	overflow: hidden;
}

.member-card__photo img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

/* Repli sans photo : initiales navy sur disque mint-100 (12,08:1) */
.member-card__initials {
	display: flex;
	align-items: center;
	justify-content: center;
	background-color: var(--color-mint-100);
	font-family: var(--font-heading);
	font-weight: 700;
	font-size: var(--text-page-title-size);
	line-height: 1;
	color: var(--color-navy-900);
}

.member-card__infos {
	display: flex;
	flex-direction: column;
	gap: var(--space-6);
	width: 100%;
	min-width: 0;
}

.member-card__name {
	font-weight: 600;
	font-size: var(--text-heading-h3-size);
	line-height: var(--text-heading-h3-line);
}

.member-card__role {
	font-weight: 500;
	font-size: var(--text-body-sm-size);
	line-height: var(--text-body-sm-line);
	color: var(--color-gray-700);
}

.member-card__bio {
	color: var(--color-gray-700);
}

.member-card--horizontal {
	flex-direction: row;
	align-items: flex-start;
	padding: var(--space-32);
}

.member-card--horizontal .member-card__photo {
	width: var(--size-member-photo);
	height: var(--size-member-photo);
}

.member-card--horizontal .member-card__infos {
	flex: 1;
	width: auto;
}

@media (min-width: 768px) {
	.member-card--auto {
		flex-direction: row;
		align-items: flex-start;
		padding: var(--space-32);
	}

	.member-card--auto .member-card__photo {
		width: var(--size-member-photo);
		height: var(--size-member-photo);
	}

	.member-card--auto .member-card__infos {
		flex: 1;
		width: auto;
	}
}

/* ---------- Cartes CTA — Carte don (191:10768) / Carte contribuer (191:10770) ---------- */
.cta-card {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	gap: var(--space-12);
	padding: var(--space-40);
	border-radius: var(--radius-lg);
}

.cta-card--don {
	background-color: var(--color-navy-900);
	color: var(--color-white);
}

.cta-card--contribuer {
	background-color: var(--color-mint-100);
	color: var(--color-gray-700);
}

.cta-card__eyebrow {
	font-weight: 600;
	font-size: var(--text-badge-size);
	line-height: var(--text-badge-line);
	letter-spacing: var(--text-card-eyebrow-tracking);
	text-transform: uppercase;
}

.cta-card--don .cta-card__eyebrow {
	color: var(--color-mint-200); /* texte vert sur navy : mint-200 (8,00:1) */
}

.cta-card__title {
	font-weight: 600;
	font-size: var(--text-heading-h3-size);
	line-height: var(--text-heading-h3-line);
	color: var(--color-navy-900);
}

.cta-card--don .cta-card__title {
	color: var(--color-white);
}

.cta-card__button {
	/* calque « Espace » de 12 px + un gap de 12 px : 36 px au total sous le texte */
	margin-top: var(--space-24);
	white-space: normal;
	text-align: center;
}

/* Anneau de focus clair sur fond navy (blanc, 13,57:1) */
.cta-card--don :focus-visible {
	outline-color: var(--color-white);
}
