/*
 * Styles principaux du thème HPM.
 * Dépend de tokens.css (variables CSS). Pas de framework CSS lourd (§8.1).
 */

/* --- Reset léger --- */
*, *::before, *::after { box-sizing: border-box; }
html {
	-webkit-text-size-adjust: 100%;
	overflow-x: clip;
	scroll-padding-top: var(--header-sticky-offset, 5rem);
}
body {
	margin: 0;
	font: 400 1rem / var(--lh-base) var(--font-body);
	color: var(--c-ink);
	background: var(--c-surface);
	overflow-x: clip;
}
img, svg { max-width: 100%; height: auto; }

/* --- Base (§3) --- */
a {
	color: var(--c-primary);
	text-underline-offset: 2px;
}
a:hover { color: var(--c-primary-600); }

:focus-visible {
	outline: 2px solid var(--c-primary);
	outline-offset: 2px;
	border-radius: 3px;
}

::selection { background: var(--c-primary-050); }

hr {
	border: 0;
	border-top: 1px solid var(--c-border);
}

/* --- Typographie (§2) --- */
h1 {
	font: 700 clamp(1.9rem, 5vw, 2.6rem) / 1.12 var(--font-display);
	letter-spacing: -0.01em;
	margin: 0 0 var(--sp-3);
	color: var(--c-primary);
}
h2 {
	font: 600 1.5rem / 1.2 var(--font-display);
	margin: 0 0 var(--sp-3);
}
h3 {
	font: 600 1.12rem / 1.3 var(--font-body);
	margin: 0 0 var(--sp-3);
}

.lede { font-size: 1.1rem; margin-block: 0 var(--block-gap); }

small,
.small {
	font-size: 0.85rem;
	color: var(--c-muted);
}

/* --- Accessibilité : lien d'évitement --- */
.skip-link {
	position: absolute;
	left: -9999px;
	top: 0;
	z-index: 1000;
	padding: var(--sp-2) var(--sp-3);
	background: var(--c-ink);
	color: var(--c-on-primary);
	border-radius: 0 0 var(--radius) 0;
}
.skip-link:focus { left: 0; }

/* --- Mise en page --- */
.container {
	width: 100%;
	max-width: var(--w-container);
	margin-inline: auto;
	padding-inline: var(--sp-3);
}
.section { padding-block: var(--section-py); }
.section + .section { padding-block-start: 0; }
.bg-soft { background: var(--c-surface-alt); }

/* --- Prose : aligné à gauche, mesure confortable --- */
:is(
	.entry-content,
	.service-content,
	.recherche-intro,
	.recherche-teaser__chapo,
	.page-recherche .lede,
	.page-recherche .recherche-block > p,
	.page-recherche .recherche-intro-note,
	.mot-texte,
	main#content .page-intro,
	main#content .page-header + .entry-content,
	main#content article > .entry-content,
	.reperes-confiance__intro,
	.hero__subtitle,
	.lede
) {
	text-align: left;
	hyphens: none;
	max-width: var(--measure);
	line-height: var(--lh-base);
}

/* --- Patterns partagés (§2) --- */
.table-soft {
	width: 100%;
	border-collapse: separate;
	border-spacing: 0;
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	overflow: hidden;
}
.table-soft th {
	background: var(--c-primary-050);
	color: var(--c-ink);
	text-align: left;
	font-weight: 600;
	padding: 11px 14px;
}
.table-soft td {
	padding: 11px 14px;
	border-top: 1px solid var(--c-border);
}
.table-soft tr:nth-child(even) td { background: var(--c-surface-subtle); }

.callout {
	background: var(--c-primary-050);
	border-left: 4px solid var(--c-primary);
	border-radius: 0 var(--radius) var(--radius) 0;
	padding: 16px 18px;
}
.callout--accent {
	background: var(--c-accent-tint);
	border-left-color: var(--c-accent);
}
.callout h3 { margin: 0 0 6px; }

.publication {
	border-left: 3px solid var(--c-primary);
	background: var(--c-surface);
	border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
	padding: 14px 16px;
	box-shadow: var(--shadow-soft);
	margin-bottom: 12px;
}
.publication .doi {
	display: inline-block;
	font-size: 0.8rem;
	color: var(--c-primary);
	text-decoration: none;
	margin-top: 6px;
}
.publication .doi:hover { text-decoration: underline; }

.card-elevated {
	background: var(--c-surface);
	border-radius: var(--radius);
	box-shadow: var(--shadow-soft);
	padding: var(--sp-4);
}

:is(
	.section .container > :is(h2:not(.screen-reader-text), .partner-strip__title),
	main#content h2:not(.screen-reader-text)
) {
	font-size: clamp(1.3rem, 2.4vw, 1.55rem);
	margin-bottom: 0.35rem;
}
:is(
	.section .container > :is(h2:not(.screen-reader-text), .partner-strip__title),
	main#content h2:not(.screen-reader-text)
)::after {
	content: "";
	display: block;
	width: 46px;
	height: 3px;
	border-radius: 2px;
	background: var(--c-primary);
	margin-top: 10px;
}

.reperes-confiance,
.accueil-contact {
	background: linear-gradient(180deg, var(--c-primary-050), var(--c-surface));
}

.section :is(.service-card__media img, .hero-bento__cell img, .home-directeur__img, .recherche-teaser__img),
main#content :is(.entry-content img, .service-cover img, .campagne-cover img, .direction-portrait__img) {
	border-radius: var(--radius);
}

/* --- Boutons (§4) --- */
.btn {
	display: inline-block;
	font: 600 1rem / 1 var(--font-body);
	cursor: pointer;
	border: 0;
	border-radius: var(--radius-sm);
	padding: 11px 18px;
	text-decoration: none;
}
.btn--primary {
	background: var(--c-primary);
	color: var(--c-on-primary);
}
.btn--primary:hover { background: var(--c-primary-600); }

.btn--secondary {
	background: transparent;
	color: var(--c-secondary);
	box-shadow: inset 0 0 0 1.5px var(--c-secondary);
}
.btn--secondary:hover {
	background: var(--c-secondary-tint);
	color: var(--c-secondary-dark);
}
.btn--ghost {
	background: transparent;
	color: var(--c-primary);
	box-shadow: inset 0 0 0 1.5px var(--c-primary);
}
.btn--ghost:hover {
	background: var(--c-primary-tint);
	color: var(--c-primary-dark);
}

.btn--emergency,
.btn--urgence {
	background: var(--c-emergency);
	color: var(--c-on-emergency);
}
.btn--emergency:hover,
.btn--urgence:hover {
	filter: brightness(0.92);
}

/* --- Grilles utilitaires --- */
.grid { display: grid; gap: var(--sp-4); }
@media (min-width: 640px) { .grid--3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 640px) { .grid--2 { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 900px) { .grid--4 { grid-template-columns: repeat(4, 1fr); } }
@media (min-width: 480px) and (max-width: 899px) { .grid--4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 479px) { .grid--4 { grid-template-columns: 1fr; } }

/* --- Accueil : bandeau header masqué (§B après hero) --- */
.home .emergency-bar { display: none; }
.urgences-home { padding-block: var(--sp-3); }
.urgences-home .service-urgences { margin: 0; }

/* --- Cartes (sans ombre décorative) --- */
.card {
	background: var(--c-surface);
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	padding: var(--sp-4);
}

/* --- Mode construction : placeholders --- */
.hpm-placeholder {
	background: var(--c-placeholder-bg);
	color: var(--c-placeholder-ink);
	padding: 0 0.25em;
	border-bottom: 1px dashed var(--c-placeholder-border);
}
.hpm-devbar {
	position: sticky;
	top: 0;
	z-index: 9999;
	background: var(--c-emergency);
	color: var(--c-on-emergency);
	text-align: center;
	font-weight: 600;
	padding: 0.5rem;
}

/* --- Texte lecteur d'écran --- */
.screen-reader-text {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	border: 0;
	word-wrap: normal !important;
}
.screen-reader-text:focus {
	position: fixed;
	top: var(--sp-2);
	left: var(--sp-2);
	width: auto;
	height: auto;
	clip: auto;
	clip-path: none;
	padding: var(--sp-2) var(--sp-3);
	background: var(--c-ink);
	color: var(--c-on-primary);
	z-index: 1000;
}

/* --- En-tête (filet patrimonial EEC) — sticky au scroll --- */
.site-header {
	position: sticky;
	top: 0;
	z-index: 200;
	border-top: 3px solid var(--c-eec);
	border-bottom: 1px solid var(--c-border);
	background: var(--c-surface);
	transition: box-shadow 0.2s ease;
}
.site-header.is-scrolled {
	box-shadow: var(--shadow-soft);
}
@media (prefers-reduced-motion: reduce) {
	.site-header { transition: none; }
}
.site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--sp-3);
	padding-block: var(--sp-3);
	min-width: 0;
}
.site-header__brand {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	text-decoration: none;
	padding: 0.25rem 0;
}
.site-header__logo {
	height: 48px;
	width: auto;
	display: block;
	flex: 0 0 auto;
}
.site-header__name {
	display: flex;
	flex-direction: column;
	line-height: 1.12;
}
.site-header__name .t1 {
	font: 700 clamp(1rem, 2.4vw, 1.2rem) / 1.1 var(--font-display);
	color: var(--c-secondary-dark);
	letter-spacing: -0.01em;
}
.site-header__name .t2 {
	font: 500 clamp(0.92rem, 2.1vw, 1.05rem) / 1.15 var(--font-display);
	color: var(--c-primary);
	margin-top: 1px;
}
.site-header__name .t3 {
	font-size: 0.72rem;
	line-height: 1.25;
	color: var(--c-muted);
	margin-top: 3px;
	max-width: 22ch;
}
.site-header__brand:focus-visible {
	outline: 2px solid var(--c-primary);
	outline-offset: 3px;
	border-radius: var(--radius-sm);
}

@media (max-width: 520px) {
	.site-header__logo { height: 40px; }
	.site-header__name .t3 { display: none; }
}
@media (max-width: 1024px) {
	.site-header.is-scrolled .site-header__name .t3 { display: none; }
}

/* --- Navigation principale --- */
.primary-nav {
	flex: 1 1 auto;
	display: flex;
	justify-content: flex-end;
	min-width: 0;
}
.primary-nav ul,
.primary-nav__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: flex-end;
	gap: 1.15rem;
}
.primary-nav__link {
	display: inline-flex;
	flex-direction: column;
	text-decoration: none;
	color: var(--c-ink);
	font-weight: 500;
	font-size: 0.9375rem;
	line-height: 1.25;
	white-space: nowrap;
}
@media (min-width: 1025px) {
	.primary-nav__link { flex-direction: row; }
}
.primary-nav__desc {
	display: none;
}
.primary-nav__link:hover { color: var(--c-primary); }
.primary-nav .current-menu-item > .primary-nav__link,
.primary-nav .current_page_item > .primary-nav__link {
	color: var(--c-primary);
	font-weight: 600;
}

.nav-toggle {
	display: none;
	flex-shrink: 0;
	position: relative;
	width: 44px;
	height: 44px;
	background: transparent;
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	cursor: pointer;
}
.nav-toggle__bar,
.nav-toggle__bar::before,
.nav-toggle__bar::after {
	content: "";
	position: absolute;
	left: 50%;
	width: 22px;
	height: 2px;
	background: var(--c-ink);
	transform: translateX(-50%);
}
.nav-toggle__bar { top: 50%; }
.nav-toggle__bar::before { top: -7px; }
.nav-toggle__bar::after { top: 7px; }

@media (max-width: 1024px) {
	.nav-toggle { display: inline-block; }
	.primary-nav {
		flex: 1 1 100%;
		order: 3;
		width: 100%;
	}
	.primary-nav ul,
	.primary-nav__list {
		display: none;
		flex-direction: column;
		align-items: stretch;
		gap: var(--sp-2);
		width: 100%;
		padding-block: var(--sp-2);
	}
	.primary-nav__list.is-open { display: flex; }
	.site-header__inner { flex-wrap: wrap; }
	.primary-nav__link {
		display: flex;
		flex-direction: column;
		align-items: flex-start;
		padding: 0.35rem 0;
		white-space: normal;
	}
	.primary-nav__desc {
		display: block;
		margin-top: 0.15rem;
		font-size: 0.78rem;
		font-weight: 400;
		color: var(--c-muted);
		line-height: 1.35;
	}
	.primary-nav .current-menu-item > .primary-nav__link .primary-nav__desc,
	.primary-nav .current_page_item > .primary-nav__link .primary-nav__desc {
		color: var(--c-primary-dark);
		opacity: 0.85;
	}
}

/* --- Bandeau urgences --- */
.emergency-bar {
	background: var(--c-emergency);
	color: var(--c-on-emergency);
}
.emergency-bar--todo { background: var(--c-muted); }
.emergency-bar__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: var(--sp-3);
	padding-block: var(--sp-2);
	font-weight: 600;
}
.emergency-bar__phone {
	color: var(--c-on-emergency);
	text-decoration: none;
}
.emergency-bar__phone:hover { text-decoration: underline; }

/* --- Bouton WhatsApp flottant (marque tierce) --- */
.whatsapp-float {
	position: fixed;
	right: var(--sp-3);
	bottom: var(--sp-3);
	z-index: 900;
	display: inline-flex;
	align-items: center;
	gap: var(--sp-2);
	padding: var(--sp-2) var(--sp-3);
	background: var(--c-whatsapp);
	color: var(--c-on-primary);
	border-radius: 999px;
	text-decoration: none;
	font-weight: 600;
	border: 1px solid var(--c-border);
}
.whatsapp-float:hover { filter: brightness(0.95); }
@media (max-width: 480px) {
	.whatsapp-float__label { display: none; }
	.whatsapp-float { padding: var(--sp-3); }
}

/* --- Pied de page bleu institutionnel (secondaire) --- */
.site-footer {
	background: var(--c-secondary-dark);
	color: var(--c-secondary-text);
	border-top: 4px solid var(--c-accent);
	margin-top: 0;
}
.site-footer__main {
	position: relative;
	background-color: var(--c-secondary-dark);
	background-image:
		linear-gradient(
			105deg,
			var(--c-overlay-secondary-95) 0%,
			var(--c-overlay-secondary-88) 42%,
			var(--c-overlay-secondary-78) 68%,
			var(--c-overlay-secondary-62) 100%
		),
		url('../img/accueil/footer-facade.jpg');
	background-size: cover;
	background-position: 72% center;
	background-repeat: no-repeat;
}
.site-footer__grid {
	position: relative;
	z-index: 1;
	display: grid;
	gap: 30px;
	padding: 44px 0 28px;
	grid-template-columns: 1.4fr 1fr 1.1fr 1.3fr;
}
.site-footer h3 {
	font-size: 0.82rem;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--c-secondary-heading);
	margin: 0 0 14px;
	font-weight: 700;
}
.site-footer a {
	color: var(--c-secondary-text);
	text-decoration: none;
}
.site-footer a:hover { text-decoration: underline; }
.site-footer ul {
	list-style: none;
	margin: 0;
	padding: 0;
}
.site-footer li { margin: 9px 0; font-size: 0.9rem; }

.site-footer__logo {
	width: 56px;
	height: auto;
	display: block;
	margin-bottom: 12px;
	filter: drop-shadow(0 1px 3px rgba(0, 0, 0, 0.35));
}
.site-footer__name {
	font-weight: 700;
	font-size: 1.05rem;
	color: var(--c-on-secondary);
	margin: 0 0 4px;
}
.site-footer__sub {
	font-size: 0.82rem;
	color: var(--c-secondary-text-soft);
	margin: 0 0 14px;
	max-width: 32ch;
	line-height: 1.5;
}
.site-footer__chip {
	display: inline-block;
	background: var(--c-overlay-white-12);
	border: 1px solid var(--c-overlay-white-22);
	border-radius: 999px;
	padding: 4px 11px;
	font-size: 0.72rem;
	font-weight: 600;
}

.site-footer__contact li {
	display: flex;
	gap: 9px;
	align-items: flex-start;
	color: var(--c-secondary-text-soft);
	line-height: 1.45;
}
.site-footer__contact a { color: var(--c-on-secondary); }
.site-footer__contact .ico--urg { color: var(--c-emergency-on-secondary); }
.site-footer__contact .ico--urg a { color: var(--c-emergency-on-secondary); }
.site-footer__ico-svg {
	flex: 0 0 auto;
	width: 18px;
	height: 18px;
	margin-top: 2px;
	color: var(--c-secondary-heading);
}
.site-footer__contact .ico--urg .site-footer__ico-svg { color: var(--c-emergency-on-secondary); }

.site-footer__social {
	display: flex;
	gap: 10px;
	margin-top: 14px;
}
.site-footer__social a {
	display: grid;
	place-items: center;
	width: 38px;
	height: 38px;
	border-radius: 10px;
	background: var(--c-overlay-white-10);
}
.site-footer__social a:hover {
	background: var(--c-overlay-white-20);
	text-decoration: none;
}
.site-footer__social a:focus-visible {
	outline: 2px solid var(--c-on-secondary);
	outline-offset: 2px;
}
.site-footer__social svg {
	width: 18px;
	height: 18px;
	fill: var(--c-on-secondary);
}

.site-footer__bar {
	border-top: 1px solid var(--c-overlay-white-14);
	background: var(--c-secondary-dark);
}
.site-footer__bar-in {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 10px;
	padding: 15px 0;
	font-size: 0.8rem;
	color: var(--c-secondary-text-muted);
}
.site-footer__bar a { color: var(--c-secondary-text-muted); }
.site-footer__legal { display: flex; gap: 18px; flex-wrap: wrap; }

@media (max-width: 820px) {
	.site-footer__grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 520px) {
	.site-footer__grid { grid-template-columns: 1fr; }
	.site-footer__main {
		background-position: center 35%;
		background-image:
			linear-gradient(
				180deg,
				var(--c-overlay-secondary-94) 0%,
				var(--c-overlay-secondary-90) 100%
			),
			url('../img/accueil/footer-facade.jpg');
	}
}

/* =========================================================================
 * Composants (template-parts)
 * ====================================================================== */

/* --- Hero bento (Accueil) --- */
.hero { padding: clamp(16px, 3vw, 28px) 0 0; }

.hero-bento {
	display: grid;
	gap: 10px;
	grid-template-columns: 1fr 1fr;
	width: 100%;
	min-width: 0;
}

.hero-bento__cell { position: relative; margin: 0; border-radius: var(--radius); overflow: hidden; }
.hero-bento__cell img { width: 100%; height: 100%; object-fit: cover; display: block; }
.hero-bento__cell figcaption {
	position: absolute;
	inset: auto 0 0 0;
	padding: 14px 12px 8px;
	background: linear-gradient(transparent, var(--c-overlay-ink-72));
	color: var(--c-on-primary);
	font-size: 0.78rem;
	font-weight: 600;
}

.hero-bento__msg {
	grid-column: 1 / 3;
	border-radius: var(--radius);
	color: var(--c-on-primary);
	background-color: var(--c-secondary-dark);
	background-image:
		linear-gradient(135deg, var(--c-overlay-secondary-86) 0%, var(--c-overlay-warm-74) 100%),
		url('../img/accueil/facade.jpg');
	background-size: cover;
	background-position: center;
	padding: clamp(20px, 3vw, 28px);
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.hero-bento__msg h1 {
	margin: 0.1rem 0 0.5rem;
	color: var(--c-on-primary);
	font-size: clamp(1.5rem, 3.4vw, 2.15rem);
	line-height: 1.12;
	letter-spacing: -0.01em;
}
.hero-bento__msg p { margin: 0 0 1.1rem; opacity: 0.94; max-width: 42ch; }
.hero-chip {
	align-self: flex-start;
	margin-bottom: 12px;
	background: var(--c-overlay-white-16);
	border: 1px solid var(--c-overlay-white-28);
	color: var(--c-on-primary);
	font-size: 0.72rem;
	font-weight: 600;
	padding: 0.25rem 0.6rem;
	border-radius: 999px;
}
.hero-cta { display: flex; gap: 0.6rem; flex-wrap: wrap; }

.hero-bento__msg .btn--primary { background: var(--c-surface); color: var(--c-primary-dark); }
.hero-bento__msg .btn--primary:hover { background: var(--c-primary-tint); }

.hero-bento__team {
	grid-column: 1 / 3;
	height: clamp(200px, 38vw, 240px);
}
.hero-bento__team img {
	object-position: center top;
}
.hero-bento__port { grid-column: 1; height: 322px; }
.hero-bento__cons { grid-column: 2; height: 156px; }
.hero-bento__camp { grid-column: 2; height: 156px; }

@media (max-width: 819px) {
	.hero-bento {
		grid-template-columns: 1fr;
		grid-template-areas:
			"msg"
			"team"
			"port"
			"cons"
			"camp";
		grid-template-rows: none;
	}
	.hero-bento__msg {
		grid-area: msg;
		grid-column: 1 / -1;
		width: 100%;
		min-width: 0;
	}
	.hero-bento__msg p {
		max-width: none;
	}
	.hero-bento__team {
		grid-area: team;
		grid-column: 1 / -1;
		height: auto;
		min-height: clamp(200px, 52vw, 260px);
	}
	.hero-bento__port {
		grid-area: port;
		grid-column: 1 / -1;
		height: clamp(220px, 58vw, 320px);
		min-height: 0;
	}
	.hero-bento__cons {
		grid-area: cons;
		grid-column: 1 / -1;
		height: clamp(160px, 42vw, 220px);
		min-height: 0;
	}
	.hero-bento__camp {
		grid-area: camp;
		grid-column: 1 / -1;
		height: clamp(160px, 42vw, 220px);
		min-height: 0;
	}
}

@media (min-width: 820px) {
	.hero-bento {
		grid-template-columns: 1.15fr 1.15fr 0.9fr;
		grid-template-rows: auto minmax(210px, 24vh) 150px;
		grid-template-areas:
			"msg  msg  port"
			"team team port"
			"cons camp port";
	}
	.hero-bento__msg { grid-area: msg; }
	.hero-bento__team {
		grid-area: team;
		height: auto;
		min-height: 210px;
	}
	.hero-bento__team img { object-position: center top; }
	.hero-bento__port { grid-area: port; height: auto; }
	.hero-bento__cons { grid-area: cons; height: auto; }
	.hero-bento__camp { grid-area: camp; height: auto; }
}

/* --- Hero legacy (autres gabarits) --- */
.hero__media { position: relative; }
.hero__img { width: 100%; height: auto; object-fit: cover; max-height: 60vh; }
.hero__content { padding-block: var(--sp-6); }
.hero__subtitle {
	color: var(--c-muted);
	font-size: 1.1rem;
}
.hero__actions { display: flex; flex-wrap: wrap; gap: var(--sp-3); margin-top: var(--sp-4); }

/* --- Accès rapide --- */
.quick-access .container.grid--4 {
	gap: var(--sp-3);
}
.quick-access__tile {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: var(--sp-2);
	min-height: 7.5rem;
	text-decoration: none;
	color: var(--c-ink);
	text-align: center;
	background: var(--c-surface);
	border: 0;
	border-radius: var(--radius);
	box-shadow: var(--shadow-soft);
	padding: 18px 16px;
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.quick-access__tile:hover,
.quick-access__tile:focus-visible {
	transform: translateY(-3px);
	box-shadow: var(--shadow-hover);
}
.quick-access__tile:focus-visible {
	outline: 2px solid var(--c-primary);
	outline-offset: 2px;
}
.quick-access__icon {
	display: grid;
	place-items: center;
	flex-shrink: 0;
	width: 44px;
	height: 44px;
	border-radius: 12px;
	background: var(--c-primary-050);
	color: var(--c-primary);
	margin-bottom: 10px;
}
.quick-access__tile--whatsapp .quick-access__icon {
	background: color-mix(in srgb, var(--c-whatsapp) 14%, var(--c-surface));
	color: var(--c-whatsapp);
}
.quick-access__svg { display: block; width: 22px; height: 22px; }
.quick-access__label {
	font-weight: 600;
	font-size: 0.9375rem;
	line-height: 1.35;
	max-width: 14ch;
	hyphens: none;
}
@media (min-width: 480px) {
	.quick-access__tile { min-height: 8.5rem; }
	.quick-access__label { font-size: 1rem; max-width: none; }
}
@media (min-width: 900px) {
	.quick-access .container.grid--4 { gap: var(--sp-4); }
	.quick-access__tile { min-height: 9rem; }
}
@media (max-width: 479px) {
	.quick-access__tile {
		flex-direction: row;
		justify-content: flex-start;
		text-align: left;
		min-height: auto;
		padding: var(--sp-3);
		gap: var(--sp-3);
	}
	.quick-access__icon { margin-bottom: 0; }
	.quick-access__label { max-width: none; flex: 1; }
}
@media (prefers-reduced-motion: reduce) {
	.quick-access__tile { transition: none; }
	.quick-access__tile:hover,
	.quick-access__tile:focus-visible { transform: none; }
}

/* --- Accueil : repères de confiance --- */
.reperes-confiance__intro { margin: 0 0 var(--block-gap); }
.reperes-confiance__grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--sp-4);
	grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}
.reperes-confiance .repere {
	display: flex;
	gap: 11px;
	align-items: center;
}
.repere__chip {
	flex: 0 0 auto;
	width: 42px;
	height: 42px;
	border-radius: 12px;
	display: grid;
	place-items: center;
	background: var(--c-primary-050);
	color: var(--c-primary);
}
.repere__chip svg {
	width: 22px;
	height: 22px;
	stroke: currentColor;
	fill: none;
	stroke-width: 1.7;
}
.repere__txt b {
	display: block;
	font-size: 1.15rem;
	line-height: 1.1;
	color: var(--c-primary-600);
}
.repere__txt span {
	font-size: 0.8rem;
	color: var(--c-muted);
}

/* --- Accueil : teaser Mot du Directeur --- */
.home-directeur__inner {
	display: grid;
	gap: var(--sp-5);
	align-items: start;
}
@media (min-width: 768px) {
	.home-directeur__inner { grid-template-columns: minmax(160px, 220px) 1fr; }
}
.home-directeur__portrait { margin: 0; }
.home-directeur__img {
	width: 100%;
	height: auto;
	border-radius: var(--radius);
}
.home-directeur__texte h2 { margin-top: 0; }
.home-directeur__nom {
	font-weight: 600;
	color: var(--c-primary-600);
	margin: 0 0 var(--sp-1);
}
.home-directeur__role {
	margin: 0 0 var(--sp-3);
	color: var(--c-muted);
	font-size: 0.95rem;
}
.home-directeur__extrait {
	margin: 0 0 var(--sp-4);
	padding: 0;
	border: 0;
	font-style: italic;
	color: var(--c-ink);
}
.home-directeur__extrait p { margin: 0; }

/* --- Carte service --- */
.service-card {
	display: flex;
	flex-direction: column;
	color: var(--c-ink);
	border: 0;
	border-radius: var(--radius);
	overflow: hidden;
	background: var(--c-surface);
	box-shadow: var(--shadow-soft);
	padding: 0;
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.service-card:hover {
	transform: translateY(-3px);
	box-shadow: var(--shadow-hover);
}
.service-card__link {
	display: block;
	text-decoration: none;
	color: inherit;
	flex: 1;
}
.service-card__body { padding: var(--sp-3); }
.service-card__media {
	display: block;
	margin: 0;
	border-radius: 0;
	overflow: hidden;
	aspect-ratio: 4 / 3;
}
.service-card__media img,
.service-card__media svg {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.service-card__title { font-size: 1.125rem; margin: var(--sp-2) 0; color: var(--c-primary-600); }
.service-card__resume { color: var(--c-muted); margin: 0; }
.service-card__more {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 0 var(--sp-3) var(--sp-3);
	font-size: 0.88rem;
	font-weight: 600;
	color: var(--c-primary);
	text-decoration: none;
}
.service-card__more svg {
	width: 15px;
	height: 15px;
	stroke: currentColor;
	fill: none;
	stroke-width: 2;
}
.service-card:hover .service-card__more { text-decoration: underline; }
.service-card__more:focus-visible {
	outline: 2px solid var(--c-primary);
	outline-offset: 2px;
	border-radius: var(--radius-sm);
}
@media (prefers-reduced-motion: reduce) {
	.service-card { transition: none; }
	.service-card:hover { transform: none; }
}

/* --- Accueil : services phares (4 cartes sur une ligne) --- */
.services-phares__grid {
	gap: var(--sp-3);
}
.services-phares .service-card__body { padding: var(--sp-3); }
.services-phares .service-card__title {
	font-size: 0.9375rem;
	margin: var(--sp-1) 0;
	line-height: 1.25;
}
.services-phares .service-card__resume {
	font-size: 0.8125rem;
	line-height: 1.4;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 3;
	overflow: hidden;
}
.services-phares .service-card__more {
	font-size: 0.8125rem;
	padding-bottom: var(--sp-2);
}
@media (min-width: 900px) {
	.services-phares__grid { gap: var(--sp-3); }
}
@media (max-width: 899px) {
	.services-phares .service-card__title { font-size: 1rem; }
	.services-phares .service-card__resume { font-size: 0.875rem; }
}

/* --- Fiche service (single-service) --- */
.single-service .service-cover { margin: 1rem 0; border-radius: var(--radius); overflow: hidden; }
.single-service .service-cover :is(img, svg) { width: 100%; height: auto; display: block; }
.service-type {
	display: inline-block;
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--c-primary);
}
.service-content { line-height: var(--lh-base); }
.service-content h2 { margin-top: 1.75rem; }
.service-urgences {
	margin: 1.5rem 0;
	padding: 1rem 1.25rem;
	border-left: 4px solid var(--c-emergency);
	background: var(--c-emergency-050);
	border-radius: 0 var(--radius) var(--radius) 0;
}
.service-urgences a { font-weight: 700; white-space: nowrap; }
.service-cta { margin-top: 1.5rem; }

/* --- Page Nos soins --- */
.page-services .services-phares__grid {
	gap: var(--sp-2);
	margin-top: var(--sp-3);
}
.page-services .service-card__media { aspect-ratio: 16 / 10; }
.page-services .service-card__body { padding: var(--sp-2) var(--sp-2) var(--sp-1); }
.page-services .service-card__title {
	font-size: 0.8125rem;
	margin: var(--sp-1) 0;
	line-height: 1.25;
}
.page-services .service-card__resume {
	font-size: 0.75rem;
	line-height: 1.35;
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
	overflow: hidden;
	margin: 0;
}
.page-services .service-card__more {
	font-size: 0.75rem;
	padding: 0 var(--sp-2) var(--sp-2);
}
.page-services .service-card__more svg { width: 13px; height: 13px; }
@media (min-width: 900px) {
	.page-services .services-phares__grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}
@media (max-width: 899px) and (min-width: 600px) {
	.page-services .services-phares__grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}
@media (max-width: 599px) {
	.page-services .services-phares__grid { grid-template-columns: 1fr; }
}
.services-grid { margin-top: 1rem; }
.page-services .prestations {
	padding: clamp(28px, 4vw, 44px);
	border-radius: var(--radius);
}
.prestations-grid {
	display: grid;
	gap: var(--sp-4);
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	margin-top: var(--sp-4);
}
@media (min-width: 960px) {
	.prestations-grid { grid-template-columns: repeat(2, 1fr); }
}
.prestations-pole {
	background: var(--c-surface);
	border: 1px solid var(--c-border);
	border-left: 4px solid var(--c-primary);
	border-radius: var(--radius);
	box-shadow: var(--shadow-soft);
	overflow: hidden;
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.prestations-pole:hover {
	transform: translateY(-2px);
	box-shadow: var(--shadow-hover);
}
.prestations-pole__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: var(--sp-2);
	padding: 14px 18px;
	background: linear-gradient(180deg, var(--c-primary-tint) 0%, var(--c-secondary-tint) 100%);
	border-bottom: 1px solid var(--c-border);
}
.prestations-pole h3 {
	margin: 0;
	font-size: 0.82rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--c-primary-600);
	line-height: 1.3;
	flex: 1;
	min-width: 0;
}
.prestations-pole__count {
	flex-shrink: 0;
	font-size: 0.68rem;
	font-weight: 700;
	color: var(--c-secondary-dark);
	background: var(--c-secondary-tint);
	padding: 3px 9px;
	border-radius: 999px;
	white-space: nowrap;
}
.prestations-list {
	list-style: none;
	margin: 0;
	padding: 6px 0;
}
.prestations-pole li {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding: 10px 18px;
	border-bottom: 1px solid var(--c-border);
	font-size: 0.9rem;
	line-height: 1.45;
	transition: background 0.15s ease;
}
.prestations-pole li::before {
	content: "";
	flex-shrink: 0;
	width: 7px;
	height: 7px;
	margin-top: 0.42em;
	border-radius: 50%;
	background: var(--c-primary);
	box-shadow: 0 0 0 2px var(--c-primary-tint);
}
.prestations-pole li:hover { background: var(--c-primary-tint); }
.prestations-pole li:last-child { border-bottom: 0; }
.prestations-note {
	margin-top: var(--sp-4);
	padding: var(--sp-3) var(--sp-4);
	color: var(--c-muted);
	font-size: 0.9rem;
	line-height: 1.55;
	background: var(--c-surface);
	border-radius: var(--radius-sm);
	border-left: 3px solid var(--c-primary);
	box-shadow: var(--shadow-soft);
}
.page-intro { margin-top: 0.75rem; }
@media (prefers-reduced-motion: reduce) {
	.prestations-pole { transition: none; }
	.prestations-pole:hover { transform: none; }
}

/* --- Campagnes (statut calculé) --- */
.campagne-badge,
[class^="badge-"] {
	display: inline-block;
	font-size: 0.85rem;
	font-weight: 600;
	padding: 0.2rem 0.6rem;
	border-radius: 999px;
}
.badge-en_cours { background: var(--c-primary-tint); color: var(--c-primary-dark); }
.badge-a_venir { background: var(--c-secondary-tint); color: var(--c-secondary); }
.badge-terminee { background: var(--c-surface-alt); color: var(--c-muted); }
.campagne-cover :is(img, svg) { width: 100%; height: auto; border-radius: var(--radius); display: block; }
.campagne-meta p { margin: 0.35rem 0; }
.campagne-dates { color: var(--c-muted); margin: 0.5rem 0 0; }
.bilan-grid {
	list-style: none;
	padding: 0;
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
	text-align: center;
}
.bilan-valeur { display: block; font-size: 1.8rem; font-weight: 700; color: var(--c-primary); }
.bilan-libelle { color: var(--c-muted); font-size: 0.9rem; }
.campagne-list {
	list-style: none;
	padding: 0;
	display: grid;
	gap: 1rem;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
}
.campagne-item a {
	display: block;
	text-decoration: none;
	color: var(--c-ink);
	border: 0;
	border-radius: var(--radius);
	background: var(--c-surface);
	box-shadow: var(--shadow-soft);
	overflow: hidden;
	padding: 0 0 var(--sp-2);
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.campagne-item a:hover,
.campagne-item a:focus-visible {
	transform: translateY(-3px);
	box-shadow: var(--shadow-hover);
}
.campagne-item figure { margin: 0 0 0.5rem; border-radius: var(--radius) var(--radius) 0 0; overflow: hidden; }
.campagne-item h3 { margin: 0.35rem var(--sp-2) 0; font-size: 1.05rem; }
.campagne-item [class^="badge-"] { margin-inline: var(--sp-2); }
@media (prefers-reduced-motion: reduce) {
	.campagne-item a { transition: none; }
	.campagne-item a:hover,
	.campagne-item a:focus-visible { transform: none; }
}
.section-terminee { opacity: 0.85; }
.home-campagne__grid {
	list-style: none;
	margin: var(--sp-3) 0 0;
	padding: 0;
	display: grid;
	gap: var(--sp-3);
	grid-template-columns: repeat(3, 1fr);
}
.home-campagne__link {
	display: block;
	text-decoration: none;
	color: var(--c-ink);
	background: var(--c-surface);
	border-radius: var(--radius);
	box-shadow: var(--shadow-soft);
	overflow: hidden;
	transition: transform 0.18s ease, box-shadow 0.18s ease;
}
.home-campagne__link:hover,
.home-campagne__link:focus-visible {
	transform: translateY(-3px);
	box-shadow: var(--shadow-hover);
}
.home-campagne__media {
	margin: 0;
	aspect-ratio: 16 / 10;
	overflow: hidden;
	background: var(--c-primary-050);
}
.home-campagne__media img,
.home-campagne__media svg {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
	display: block;
}
.home-campagne__body {
	padding: var(--sp-3);
}
.home-campagne__title {
	margin: 0.5rem 0 0;
	font-size: 1rem;
	line-height: 1.3;
	color: var(--c-primary-600);
}
.home-campagne__dates {
	margin: 0.35rem 0 0;
	font-size: 0.85rem;
	color: var(--c-muted);
}
.home-campagne__more { margin: var(--sp-4) 0 0; }
@media (max-width: 820px) {
	.home-campagne__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 520px) {
	.home-campagne__grid { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
	.home-campagne__link { transition: none; }
	.home-campagne__link:hover,
	.home-campagne__link:focus-visible { transform: none; }
}
.campagne-cta { margin-top: 1.5rem; }

/* --- Bandeau partenaires (logos unifiés) --- */
.partner-strip {
	background: var(--c-surface);
	border-top: 1px solid var(--c-border);
}
.partner-strip__title {
	text-align: start;
	margin: 0 0 var(--sp-4);
}
.partner-strip__list,
.partenaires-grid {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: clamp(1.5rem, 4vw, 3rem);
}
.partner-strip__item {
	display: flex;
	align-items: center;
	justify-content: center;
	flex: 0 1 auto;
	min-width: 0;
}
.partner-strip__item a {
	display: flex;
	align-items: center;
	justify-content: center;
	text-decoration: none;
}
.partner-strip__item a:focus-visible {
	outline: 2px solid var(--c-primary);
	outline-offset: 4px;
	border-radius: var(--radius-sm);
}
.partner-strip__logo-wrap {
	display: flex;
	align-items: center;
	justify-content: center;
	padding-inline: var(--sp-1);
	filter: grayscale(1);
	opacity: 0.7;
	transition: filter 0.2s ease, opacity 0.2s ease;
}
.partner-strip__item:has(a) .partner-strip__logo-wrap {
	cursor: pointer;
}
.partner-strip__logo,
.partenaire-logo :is(img, svg) {
	display: block;
	height: 48px;
	width: auto;
	max-width: 160px;
	object-fit: contain;
}
.partenaire-logo {
	filter: grayscale(1);
	opacity: 0.7;
	transition: filter 0.2s ease, opacity 0.2s ease;
}
.partner-strip__item:hover .partner-strip__logo-wrap,
.partner-strip__item:focus-within .partner-strip__logo-wrap,
.partner-strip__item a:hover .partner-strip__logo-wrap,
.partner-strip__item a:focus-visible .partner-strip__logo-wrap,
.partenaire-card:hover .partenaire-logo,
.partenaire-card:focus-within .partenaire-logo {
	filter: grayscale(0);
	opacity: 1;
}
.partner-strip__fallback {
	font-size: 0.75rem;
	font-weight: 600;
	color: var(--c-muted);
	text-align: center;
	line-height: 1.2;
	max-width: 160px;
}
@media (max-width: 560px) {
	.partner-strip__logo,
	.partenaire-logo :is(img, svg) {
		height: 40px;
	}
}
@media (min-width: 900px) {
	.partner-strip__list {
		justify-content: space-between;
	}
	.partner-strip__item {
		flex: 1 1 0;
		max-width: 180px;
	}
}
@media (prefers-reduced-motion: reduce) {
	.partner-strip__logo-wrap,
	.partenaire-logo {
		transition: none;
	}
}

/* --- Chiffres d'impact --- */
.stats__grid { display: grid; gap: var(--sp-4); text-align: center; }
@media (min-width: 640px) { .stats__grid { grid-template-columns: repeat(4, 1fr); } }
.stats__item { display: flex; flex-direction: column; }
.stats__value { font-size: 2rem; font-weight: 800; color: var(--c-primary-600); line-height: 1.1; }
.stats__label { color: var(--c-muted); }

/* --- CTA partenaire --- */
.cta-partenaire__inner { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--sp-4); }

/* --- Page Recherche & Coopération --- */
.partenaires-grid {
	margin: 1rem 0 0;
}
.partenaire-card {
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	padding: 1rem;
	background: var(--c-surface);
	display: flex;
	flex-direction: column;
	gap: 0.5rem;
}
.partenaire-logo {
	background: var(--c-surface-alt);
	border-radius: var(--radius);
	padding: 0.75rem;
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 72px;
}
.partenaire-type {
	display: inline-block;
	font-size: 0.85rem;
	font-weight: 600;
	color: var(--c-primary);
	background: var(--c-accent-050);
	padding: 0.15rem 0.5rem;
	border-radius: 999px;
}
.partenaire-nom { margin: 0.15rem 0; font-size: 1.05rem; }
.partenaire-desc { color: var(--c-muted); font-size: 0.92rem; margin: 0; }
/* --- Teaser recherche (Accueil) --- */
.recherche-teaser__inner {
	display: grid;
	gap: clamp(var(--sp-4), 4vw, var(--sp-6));
	align-items: center;
}
@media (min-width: 768px) {
	.recherche-teaser__inner {
		grid-template-columns: 1fr minmax(280px, 44%);
		gap: var(--sp-6);
	}
}
.recherche-teaser__media {
	position: relative;
	margin: 0;
	padding: var(--sp-2);
	border-radius: calc(var(--radius) + 6px);
	background:
		linear-gradient(145deg, var(--c-primary-tint) 0%, var(--c-surface) 52%, var(--c-accent-tint) 100%);
	box-shadow: var(--shadow-soft);
	overflow: hidden;
	isolation: isolate;
}
.recherche-teaser__media::before {
	content: "";
	position: absolute;
	inset: var(--sp-2);
	border-radius: var(--radius-sm);
	box-shadow: var(--shadow-inset-primary);
	pointer-events: none;
	z-index: 2;
}
.recherche-teaser__media::after {
	content: "";
	position: absolute;
	top: var(--sp-2);
	bottom: var(--sp-2);
	left: var(--sp-2);
	width: 4px;
	border-radius: 4px 0 0 4px;
	background: linear-gradient(180deg, var(--c-primary) 0%, var(--c-primary-dark) 100%);
	z-index: 2;
	pointer-events: none;
}
.recherche-teaser__img {
	width: 100%;
	height: auto;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	object-position: center 28%;
	display: block;
	border-radius: var(--radius-sm);
	box-shadow: var(--shadow-primary);
	transition: transform 0.35s ease, box-shadow 0.35s ease;
}
@media (min-width: 768px) {
	.recherche-teaser__media:hover .recherche-teaser__img {
		transform: scale(1.012);
		box-shadow: var(--shadow-hover);
	}
}
.recherche-teaser__media figcaption {
	position: absolute;
	inset: auto var(--sp-2) var(--sp-2) var(--sp-2);
	padding: 12px 14px 10px;
	border-radius: 0 0 var(--radius-sm) var(--radius-sm);
	background: linear-gradient(transparent, var(--c-overlay-ink-78));
	backdrop-filter: blur(4px);
	color: var(--c-on-primary);
	font-size: 0.72rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	z-index: 3;
}
.recherche-teaser__content h2 { margin-top: 0; }
@media (prefers-reduced-motion: reduce) {
	.recherche-teaser__img { transition: none; }
	.recherche-teaser__media:hover .recherche-teaser__img { transform: none; }
}
.recherche-teaser__chapo {
	margin-bottom: var(--block-gap);
}
.recherche-teaser__grid {
	list-style: none;
	margin: 0 0 var(--sp-4);
	padding: 0;
	display: grid;
	gap: var(--sp-3);
	grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
}
.recherche-teaser__cta { margin: 0; }

/* --- Page Recherche & Coopération --- */
.page-recherche .page-head { max-width: var(--measure); margin-bottom: var(--block-gap); }
.page-recherche .lede {
	color: var(--c-ink);
}
.page-recherche .recherche-block > p,
.page-recherche .recherche-intro-note {
	max-width: var(--measure);
}
.recherche-block { margin-bottom: var(--block-gap); }
.recherche-block > h2 { margin-top: 0; }
.recherche-list {
	margin: 0;
	padding-left: 1.1rem;
	display: grid;
	gap: var(--sp-3);
	max-width: var(--measure);
}
.recherche-list li { line-height: 1.5; }
.recherche-table-wrap { overflow-x: auto; margin-top: var(--sp-3); }
.page-recherche .table-soft { font-size: 0.9375rem; }
.page-recherche .table-soft th { color: var(--c-primary-600); }
.page-recherche .table-soft td { vertical-align: top; }
.recherche-intro-note { color: var(--c-muted); }
.page-recherche .publication { max-width: var(--measure); }
.publication h3 {
	margin: 0 0 var(--sp-2);
	font-size: 1.05rem;
	color: var(--c-primary-600);
}
.recherche-publication__cite {
	font-size: 0.9rem;
	line-height: 1.55;
	color: var(--c-ink);
}
.recherche-publication__cite a:not(.doi) { word-break: break-word; }
.page-recherche .callout { max-width: var(--measure); margin: var(--block-gap) 0; }
.page-recherche .callout h2 {
	margin-top: 0;
	font-size: 1.15rem;
	color: var(--c-primary-600);
}
.page-recherche .recherche-block.bg-soft {
	padding: var(--sp-4);
	border-radius: var(--radius);
	margin-bottom: var(--block-gap);
}
.recherche-cta {
	margin-top: var(--block-gap);
	background: var(--c-surface-alt);
	border-radius: var(--radius);
	padding: var(--sp-4);
	max-width: var(--measure);
}
.recherche-cta h2 { margin-top: 0; font-size: 1.15rem; }

/* --- Fil d'Ariane --- */
.breadcrumbs { border-bottom: 1px solid var(--c-border); }
.breadcrumbs__list { list-style: none; display: flex; flex-wrap: wrap; gap: var(--sp-2); margin: 0; padding: var(--sp-2) 0; font-size: 0.9rem; }
.breadcrumbs__item + .breadcrumbs__item::before { content: "/"; color: var(--c-muted); margin-right: var(--sp-2); }

/* --- Formulaire RDV --- */
.hpm-hp {
	position: absolute !important;
	left: -9999px !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
}
/* --- Page Contact : grille coordonnées + formulaire --- */
.page-contact__grid {
	display: grid;
	gap: var(--sp-5);
	grid-template-columns: minmax(260px, 1fr) minmax(300px, 1.15fr);
	align-items: start;
	margin-top: var(--sp-4);
}
.page-contact__intro { margin-bottom: var(--sp-3); }
#localisation { scroll-margin-top: 5rem; }
.contact-coords__card { margin-top: var(--sp-3); }
.contact-coords__list {
	list-style: none;
	margin: 0;
	padding: 0;
	display: grid;
	gap: var(--sp-3);
}
.contact-coords__item {
	display: flex;
	gap: 12px;
	align-items: flex-start;
	line-height: 1.45;
}
.contact-coords__item strong {
	display: block;
	color: var(--c-primary-600);
	font-size: 0.82rem;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	margin-bottom: 2px;
}
.contact-ico-svg {
	flex: 0 0 auto;
	width: 20px;
	height: 20px;
	margin-top: 2px;
	color: var(--c-primary);
}
.contact-coords__item--urg .contact-ico-svg,
.contact-coords__item--urg a { color: var(--c-emergency); }
@media (max-width: 820px) {
	.page-contact__grid { grid-template-columns: 1fr; }
}

/* --- Formulaire RDV (finition soignée) --- */
.rdv-form { max-width: none; }
.rdv-form__card {
	background: var(--c-surface);
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	box-shadow: var(--shadow-soft);
	padding: clamp(18px, 3vw, 28px);
}
.rdv-form__lead {
	margin: 0 0 var(--sp-4);
	color: var(--c-muted);
	font-size: 0.92rem;
	line-height: 1.5;
}
.rdv-form__grid {
	display: grid;
	gap: var(--sp-3);
	grid-template-columns: 1fr 1fr;
}
.rdv-form__grid .field--full { grid-column: 1 / -1; }
@media (max-width: 560px) {
	.rdv-form__grid { grid-template-columns: 1fr; }
}
.rdv-form .field { margin: 0; }
.rdv-form label {
	display: block;
	font-weight: 600;
	font-size: 0.88rem;
	color: var(--c-primary-600);
	margin-bottom: 0.35rem;
}
.rdv-form input,
.rdv-form select,
.rdv-form textarea {
	width: 100%;
	padding: 11px 14px;
	border: 1px solid var(--c-border);
	border-radius: var(--radius-sm);
	font: inherit;
	background: var(--c-surface);
	transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.rdv-form input:hover,
.rdv-form select:hover,
.rdv-form textarea:hover { border-color: var(--c-primary-050); }
.rdv-form :is(input, select, textarea):focus-visible {
	outline: none;
	border-color: var(--c-primary);
	box-shadow: 0 0 0 3px var(--c-primary-050);
}
.rdv-form .has-err input,
.rdv-form .has-err select,
.rdv-form .has-err textarea {
	border-color: var(--c-emergency);
	box-shadow: 0 0 0 3px var(--c-emergency-050);
}
.rdv-form .field-consent {
	margin-top: var(--sp-3);
	padding: var(--sp-3);
	background: var(--c-primary-050);
	border-radius: var(--radius-sm);
	border-left: 3px solid var(--c-primary);
}
.field-consent label {
	font-weight: 400;
	display: flex;
	gap: 0.65rem;
	align-items: flex-start;
	font-size: 0.88rem;
	color: var(--c-ink);
}
.field-consent input { width: auto; margin-top: 0.2rem; flex-shrink: 0; }
.rdv-form__actions { margin: var(--sp-4) 0 0; }
.rdv-form__submit {
	min-width: 220px;
	padding: 12px 22px;
}
.rdv-legal {
	margin: var(--sp-3) 0 0;
	color: var(--c-muted);
	font-size: 0.82rem;
}
.rdv-msg {
	padding: var(--sp-3);
	border-radius: var(--radius-sm);
	margin-bottom: var(--sp-3);
}
.rdv-ok {
	background: var(--c-primary-tint);
	border-left: 3px solid var(--c-primary);
}
.rdv-err {
	background: var(--c-emergency-050);
	border-left: 3px solid var(--c-emergency);
}
.rdv-msg,
.rdv-message--ok,
.rdv-message--error {
	padding: 12px 14px;
	border-radius: var(--radius);
}
.rdv-ok,
.rdv-message--ok {
	background: var(--c-primary-tint);
	color: var(--c-primary-dark);
}
.rdv-err,
.rdv-message--error {
	background: var(--c-emergency-050);
	color: var(--c-emergency);
}
.rdv-legal { color: var(--c-muted); }
.coords { list-style: none; padding: 0; margin: 0; }
.coords li { margin-bottom: var(--sp-2); }

/* --- Éléments de page --- */
.page-header { margin-bottom: var(--sp-4); }
.entry-content > * + * { margin-top: var(--sp-3); }

/* --- Pages internes : titres verts --- */
main#content .page-header h1,
main#content .page-head h1 {
	color: var(--c-primary);
}
main#content .entry-content :is(ul, ol, table, figure, blockquote) {
	text-align: start;
	max-width: none;
}
.note { color: var(--c-muted); font-style: italic; }
.h3 { font-size: 1.125rem; }

/* --- Tableaux (créneaux, spécialistes) --- */
.table { width: 100%; border-collapse: collapse; margin-block: var(--sp-3); }
.table th,
.table td {
	padding: var(--sp-2) var(--sp-3);
	border-bottom: 1px solid var(--c-border);
	text-align: left;
}
.table thead th { background: var(--c-primary-050); color: var(--c-ink); }

/* --- Consultations spécialisées (tableaux responsives) --- */
.table-scroll { overflow-x: auto; }
.tbl { margin: 1rem 0; }
.tbl.table-soft { border-collapse: separate; }
.page-consultations .table-soft th,
.page-consultations .table-soft td { text-align: left; }

/* --- Consultations : tableaux raffinés --- */
.table-refined-wrap {
	margin-top: var(--sp-3);
	border-radius: var(--radius);
	box-shadow: var(--shadow-soft);
	overflow: hidden;
}
.page-consultations .table-refined {
	border: 0;
	font-size: 0.9375rem;
}
.page-consultations .table-refined thead th {
	background: linear-gradient(180deg, var(--c-primary-tint), var(--c-secondary-tint));
	color: var(--c-primary-600);
	font-size: 0.78rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	border-bottom: 2px solid var(--c-primary);
	padding: 13px 16px;
}
.page-consultations .table-refined tbody td {
	padding: 12px 16px;
	vertical-align: middle;
}
.page-consultations .table-refined tbody tr {
	transition: background 0.15s ease;
}
.page-consultations .table-refined tbody tr:hover td {
	background: var(--c-accent-050);
}
.page-consultations .table-refined td:first-child {
	font-weight: 600;
	color: var(--c-primary-600);
}
.page-consultations .table-refined tr:nth-child(even) td {
	background: var(--c-surface-subtle);
}
.page-consultations .table-refined tr:nth-child(even):hover td {
	background: var(--c-accent-050);
}
@media (max-width: 560px) {
	.page-consultations .table-refined tbody tr {
		border-left: 3px solid var(--c-primary);
		box-shadow: var(--shadow-soft);
		margin-bottom: 0.85rem;
		background: var(--c-surface);
	}
	.page-consultations .table-refined tbody tr:hover td {
		background: var(--c-surface);
	}
	.page-consultations .table-refined td:first-child {
		color: var(--c-primary-dark);
	}
}
.hpm-note-confirm {
	background: var(--c-placeholder-bg);
	color: var(--c-placeholder-ink);
	padding: 0.5rem 0.75rem;
	border-radius: var(--radius);
	margin-bottom: var(--sp-3);
}
@media (max-width: 560px) {
	.tbl thead { display: none; }
	.tbl tr {
		display: block;
		border: 1px solid var(--c-border);
		border-radius: var(--radius);
		margin-bottom: 0.75rem;
	}
	.tbl td {
		display: flex;
		justify-content: space-between;
		gap: 1rem;
		border: none;
		border-bottom: 1px solid var(--c-border);
	}
	.tbl td:last-child { border-bottom: none; }
	.tbl td::before { content: attr(data-label); font-weight: 600; color: var(--c-muted); }
}

/* --- Callout urgence (fiche service) --- */
.urgence-callout {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: var(--sp-3);
	padding: var(--sp-3);
	border-left: 4px solid var(--c-emergency);
	background: var(--c-emergency-050);
	border-radius: var(--radius);
	margin-top: var(--sp-4);
}

/* --- Mot du Directeur (page L'Hôpital) --- */
.hopital-direction {
	margin-top: var(--sp-5);
	padding: var(--sp-4);
	border-radius: var(--radius);
}
.hopital-direction__inner {
	display: grid;
	gap: var(--sp-5);
	align-items: start;
}
@media (min-width: 768px) {
	.hopital-direction__inner { grid-template-columns: minmax(200px, 320px) 1fr; }
}
.direction-nom { margin: 0 0 var(--sp-1); color: var(--c-primary-600); }
.direction-role { margin: 0 0 var(--sp-3); color: var(--c-muted); font-size: 0.95rem; }
.direction-portrait { margin: 0; }
.direction-portrait__img { width: 100%; height: auto; border-radius: var(--radius); }
.direction-mot h2 { margin-top: 0; }
.mot-texte {
	margin-bottom: var(--block-gap);
}
.mot-texte .mot-signature { text-align: start; }
.mot-texte > p:first-of-type {
	font-size: 1.1rem;
	font-weight: 500;
	color: var(--c-ink);
}
.mot-texte h3 {
	margin-top: 1.75rem;
	margin-bottom: 0.5rem;
	font-size: 1.15rem;
	color: var(--c-primary-600);
}
.mot-texte .mot-signature {
	margin-top: 1.5rem;
	padding-top: 1rem;
	border-top: 1px solid var(--c-border);
}
.direction-signature { color: var(--c-muted); margin: 0; font-style: italic; }

/* --- Coordonnées de contact --- */
.contact-coordonnees__list { list-style: none; padding: 0; margin: 0; }
.contact-coordonnees__list li { margin-bottom: var(--sp-2); }
.consultations-note.callout { margin-top: var(--sp-4); }
.consultations-note.callout p:first-child { margin-top: 0; }
.campagne-bilan.callout { margin-top: var(--sp-4); }
.campagne-bilan.callout h2 { margin-top: 0; }
.rdv-cta { display: flex; flex-wrap: wrap; gap: var(--sp-3); margin-top: var(--sp-4); }
.error-404__links { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: var(--sp-3); }
.search-form { display: flex; gap: var(--sp-2); }
.search-form__field {
	flex: 1;
	padding: var(--sp-2);
	border: 1px solid var(--c-border);
	border-radius: var(--radius);
	font: inherit;
}

/* --- Accessibilité & mouvement (§6) --- */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.001ms !important;
		transition-duration: 0.001ms !important;
	}
}
