/**
 * TARMAC — Modèles génériques (design v2)
 *
 * Page simple, blog, recherche, archives, catégories, article, 404.
 * Chargée sur tout le site, après design-system.css.
 *
 * Sommaire
 *   1. En-tête commun
 *   2. Contenu éditorial
 *   3. Article
 *   4. Listes vides et 404
 *   5. Pagination
 *   6. Formulaire de recherche
 */

/* ==========================================================================
   1. En-tête commun
   ========================================================================== */

.tpage-hero {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: clamp(260px, 34vh, 400px);
	padding-block: clamp(2.5rem, 6vw, 4.5rem);
	overflow: hidden;
	background: var(--c-bleu-nuit);
	color: var(--c-blanc);
}

.tpage-hero__media {
	position: absolute;
	inset: 0;
	z-index: 0;
}

.tpage-hero__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.tpage-hero__scrim {
	position: absolute;
	inset: 0;
	z-index: 1;
	background: linear-gradient(to top, rgb(28 35 57 / 92%) 12%, rgb(28 35 57 / 62%) 60%, rgb(28 35 57 / 38%) 100%);
}

.tpage-hero .thv2-container { z-index: 2; }

/* Sélecteur en deux parties, et non `.tpage-hero__title` seul : le design
   system pose `.tarmac-v2 h1 { color: var(--c-text) }`, plus spécifique. Le
   titre ressortait en bleu nuit sur fond bleu nuit — invisible. */
.tpage-hero .tpage-hero__title {
	max-width: 22ch;
	margin: 0;
	font-size: var(--fs-h2);
	color: var(--c-blanc);
}

.tpage-hero .thv2-kicker { color: var(--c-vert); }
.tpage-hero .thv2-kicker span { background: rgb(190 208 41 / 16%); }

.tpage-hero__lead {
	max-width: 62ch;
	margin: var(--sp-4) 0 0;
	font-size: var(--fs-lead);
	color: rgb(255 255 255 / 84%);
}

.tpage-hero__lead p { margin: 0; }

.tpage-hero .tarmac-breadcrumb { margin-bottom: var(--sp-4); }

.tpage-hero .tarmac-breadcrumb,
.tpage-hero .tarmac-breadcrumb a,
.tpage-hero .tarmac-breadcrumb span { color: rgb(255 255 255 / 70%); }

.tpage-hero .tarmac-breadcrumb__sep { color: rgb(255 255 255 / 40%); }

.tpage-hero .tarmac-breadcrumb a:hover,
.tpage-hero .tarmac-breadcrumb a:focus-visible { color: var(--c-blanc); }

/* ==========================================================================
   2. Contenu éditorial
   ========================================================================== */

.tpage-content {
	max-width: 72ch;
	line-height: 1.75;
	color: var(--c-text-muted);
}

.tpage-content > :first-child { margin-top: 0; }
.tpage-content > :last-child { margin-bottom: 0; }

.tpage-content h2,
.tpage-content h3,
.tpage-content h4 {
	margin-top: var(--sp-7);
	margin-bottom: var(--sp-4);
	color: var(--c-text);
}

.tpage-content h2 { font-size: var(--fs-h3); }
.tpage-content h3 { font-size: var(--fs-h4); }

.tpage-content strong { color: var(--c-text); }

.tpage-content a {
	color: var(--c-bleu);
	text-underline-offset: 3px;
}

.tpage-content ul,
.tpage-content ol { padding-left: var(--sp-5); }

.tpage-content li { margin-bottom: var(--sp-2); }

.tpage-content img,
.tpage-content iframe {
	max-width: 100%;
	height: auto;
	border-radius: var(--radius-lg);
}

.tpage-content blockquote {
	margin: var(--sp-6) 0;
	padding: var(--sp-5);
	background: var(--c-vert-wash);
	border-left: 4px solid var(--c-vert);
	border-radius: var(--radius-md);
	font-size: var(--fs-lead);
	color: var(--c-text);
}

.tpage-content table {
	width: 100%;
	border-collapse: collapse;
}

.tpage-content th,
.tpage-content td {
	padding: var(--sp-3);
	border-bottom: 1px solid var(--c-border);
	text-align: left;
}

/* ==========================================================================
   3. Article
   ========================================================================== */

.tpage-article__meta {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sp-4);
	margin: 0 0 var(--sp-6);
	font-size: var(--fs-small);
	font-weight: 600;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	color: var(--c-text-muted);
}

.tpage-article__tags {
	margin-top: var(--sp-7);
	padding-top: var(--sp-5);
	border-top: 1px solid var(--c-border);
	font-size: var(--fs-small);
	color: var(--c-text-muted);
}

.tpage-article__tags a { color: var(--c-bleu); }

/* ==========================================================================
   4. Listes vides et 404
   ========================================================================== */

.tpage-empty {
	max-width: 60ch;
	color: var(--c-text-muted);
}

.tpage-empty p { margin-bottom: var(--sp-5); }

.tpage-404-links {
	margin: 0 0 var(--sp-6);
	padding: 0;
	list-style: none;
}

.tpage-404-links li + li { margin-top: var(--sp-3); }

/* ==========================================================================
   5. Pagination
   ========================================================================== */

.tarmac-pagination { margin-top: var(--sp-7); }

.tarmac-pagination .nav-links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sp-2);
	align-items: center;
	justify-content: center;
}

.tarmac-pagination .page-numbers {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 44px;
	min-height: 44px;
	padding-inline: var(--sp-3);
	background: var(--c-blanc);
	border: 1px solid var(--c-border);
	border-radius: var(--radius-pill);
	font-weight: 700;
	text-decoration: none;
	color: var(--c-text);
	transition:
		background var(--dur-base) var(--ease-out),
		border-color var(--dur-base) var(--ease-out),
		color var(--dur-base) var(--ease-out);
}

.tarmac-pagination .page-numbers:hover,
.tarmac-pagination .page-numbers:focus-visible {
	border-color: var(--c-vert);
	color: var(--c-bleu);
}

.tarmac-pagination .page-numbers.current {
	background: var(--c-bleu-nuit);
	border-color: var(--c-bleu-nuit);
	color: var(--c-blanc);
}

.tarmac-pagination .page-numbers.dots {
	min-width: auto;
	background: none;
	border: 0;
}

/* ==========================================================================
   6. Formulaire de recherche
   ========================================================================== */

.tarmac-v2 .search-form {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sp-3);
	margin-bottom: var(--sp-5);
}

.tarmac-v2 .search-form label {
	flex: 1;
	min-width: 220px;
}

.tarmac-v2 .search-field {
	width: 100%;
	padding: 0.8rem 1.2rem;
	background: var(--c-blanc);
	border: 1px solid var(--c-border);
	border-radius: var(--radius-pill);
	font: inherit;
	color: var(--c-text);
}

.tarmac-v2 .search-submit {
	padding: 0.8rem 1.6rem;
	background: var(--c-bleu-nuit);
	border: 0;
	border-radius: var(--radius-pill);
	font-weight: 700;
	color: var(--c-blanc);
	cursor: pointer;
}

.tarmac-v2 .search-submit:hover { background: var(--c-bleu); }

/* Offres d'emploi : filtres au-dessus de la grille. */
.tarmac-jobs-filters { margin-bottom: var(--sp-7); }

/* Fiche offre d'emploi : l'encart et les intertitres gardent une taille
   d'encart, et non celle d'un h2 de section. */
.tarmac-job-single .tarmac-job-sidebar .tarmac-job-sidebar__title {
	font-size: 1.25rem;
	margin-bottom: var(--sp-4);
}

.tarmac-job-single .tarmac-job-section .tarmac-job-section__title {
	font-size: var(--fs-h3);
	margin: var(--sp-7) 0 var(--sp-4);
}

.tarmac-job-single .tarmac-job-layout { padding-top: 0; }

.tjobs-apply { max-width: 900px; }

/* ==========================================================================
   7. En-têtes lumineux (charte 2026)
   --------------------------------------------------------------------------
   Retour de recette : « le site est trop sombre ». Les en-têtes des pages
   intérieures quittent le bleu nuit plein cadre : fond clair coloré, texte
   bleu nuit, photo détourée à droite (ou en bandeau sur mobile), bande
   quadricolore au pied. Règles communes aux modèles page, rubrique, mission,
   don et immobilier ; préfixées `.tarmac-v2` pour l'emporter sur les feuilles
   propres à chaque modèle, chargées après celle-ci.
   ========================================================================== */

.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) {
	align-items: center;
	background-color: var(--c-jaune-wash);
	background-image:
		radial-gradient(ellipse 45% 70% at 0% 0%, rgb(255 89 100 / 14%), transparent 70%),
		radial-gradient(ellipse 40% 60% at 60% 110%, rgb(22 109 169 / 12%), transparent 70%),
		radial-gradient(rgb(28 35 57 / 7%) 1.2px, transparent 1.8px);
	background-size: auto, auto, 20px 20px;
	color: var(--c-bleu-nuit);
}

.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero)::after {
	content: "";
	position: absolute;
	right: 0;
	bottom: 0;
	left: 0;
	z-index: 3;
	height: 6px;
	background: linear-gradient(90deg, var(--c-jaune) 0 25%, var(--c-rose) 25% 50%, var(--c-vert) 50% 75%, var(--c-bleu) 75%);
	transform-origin: left;
	animation: thv2-grow-x 1.2s var(--ease-expo) 0.2s both;
}

@keyframes thv2-grow-x {
	from { transform: scaleX(0); }
	to { transform: scaleX(1); }
}

.tarmac-v2 :is(.tpage-hero__scrim, .trub-hero__scrim, .tmis-hero__scrim, .tdon-hero__scrim, .timmo-hero__scrim) { display: none; }

/* Photo détourée, côté droit, grand arrondi en bas à gauche. */
.tarmac-v2 :is(.tpage-hero__media, .trub-hero__media, .tmis-hero__media, .tdon-hero__media, .timmo-hero__media) {
	right: 0;
	left: auto;
	width: 44%;
	border-bottom-left-radius: clamp(80px, 12vw, 220px);
	overflow: hidden;
	animation: thv2-hero-clip 1.4s var(--ease-expo) both;
}

@keyframes thv2-hero-clip {
	from { clip-path: inset(0 0 0 100%); }
	to { clip-path: inset(0 0 0 0); }
}

.tarmac-v2 :is(.tpage-hero__media, .trub-hero__media, .tmis-hero__media, .tdon-hero__media, .timmo-hero__media) img {
	animation: thv2-hero-settle 2.4s var(--ease-expo) both;
}

@keyframes thv2-hero-settle {
	from { scale: 1.25; }
	to { scale: 1; }
}

/* Le texte s'arrête avant la photo. */
.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero):has(> [class$="hero__media"]) .thv2-container {
	padding-right: max(var(--container-pad), calc(44vw - (100vw - min(100vw, var(--w-wide))) / 2 + 2.5rem));
}

.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) :is(h1, .tpage-hero__title) {
	color: var(--c-bleu-nuit);
	animation: thv2-hero-rise 1.1s var(--ease-expo) 0.15s both;
}

.tarmac-v2 :is(.tpage-hero__lead, .trub-hero__lead, .tmis-hero__lead, .tdon-hero__lead, .timmo-hero__lead) {
	color: var(--c-text-muted);
	animation: thv2-hero-rise 1.1s var(--ease-expo) 0.35s both;
}

.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) .thv2-kicker {
	color: var(--c-bleu);
	animation: thv2-hero-drop 1s var(--ease-expo) both;
}

.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) .thv2-kicker span {
	background: var(--c-blanc);
	color: var(--c-bleu-nuit);
}

.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) .thv2-hl { color: var(--c-bleu); }
.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) .thv2-hl path { stroke: var(--c-jaune); }

.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) :is(.tarmac-breadcrumb, .tarmac-breadcrumb a, .tarmac-breadcrumb span) {
	color: var(--c-text-muted);
}

.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) .tarmac-breadcrumb a:hover { color: var(--c-bleu); }
.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) .tarmac-breadcrumb__sep { color: var(--c-rose); }

.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) .thv2-btn--ghost-light {
	color: var(--c-bleu-nuit);
	border-color: var(--c-bleu-nuit);
}

.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) .thv2-btn--ghost-light:hover {
	background: var(--c-bleu-nuit);
	color: var(--c-blanc);
}

@keyframes thv2-hero-rise {
	from { opacity: 0; transform: translateY(30px); }
	to { opacity: 1; transform: none; }
}

@keyframes thv2-hero-drop {
	from { opacity: 0; transform: translateY(-24px); }
	to { opacity: 1; transform: none; }
}

@media (max-width: 900px) {
	.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero):has(> [class$="hero__media"]) {
		flex-direction: column;
		align-items: stretch;
		padding-top: 0;
	}

	.tarmac-v2 :is(.tpage-hero__media, .trub-hero__media, .tmis-hero__media, .tdon-hero__media, .timmo-hero__media) {
		position: relative;
		inset: auto;
		width: 100%;
		height: clamp(180px, 42vw, 300px);
		margin-bottom: var(--sp-6);
		border-radius: 0 0 0 clamp(60px, 16vw, 120px);
	}

	.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero):has(> [class$="hero__media"]) .thv2-container {
		padding-right: var(--container-pad);
	}
}

@media (prefers-reduced-motion: reduce) {
	.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero) *,
	.tarmac-v2 :is(.tpage-hero, .trub-hero, .tmis-hero, .tdon-hero, .timmo-hero)::after { animation: none !important; }
}

/* ==========================================================================
   8. Cartes partenaires
   --------------------------------------------------------------------------
   Le nom du partenaire est un h2 : sans sélecteur préfixé, il prenait la
   taille des titres de section du design system (retour de recette n° 9).
   ========================================================================== */

.tarmac-v2 .tarmac-partner-card {
	border-radius: var(--radius-lg);
	border-top: 4px solid var(--c-jaune);
	transition: transform var(--dur-slow) var(--ease-back), box-shadow var(--dur-base) var(--ease-out);
}

.tarmac-v2 .tarmac-partner-card:nth-child(4n+2) { border-top-color: var(--c-rose); }
.tarmac-v2 .tarmac-partner-card:nth-child(4n+3) { border-top-color: var(--c-vert); }
.tarmac-v2 .tarmac-partner-card:nth-child(4n+4) { border-top-color: var(--c-bleu); }

.tarmac-v2 .tarmac-partner-card:hover {
	transform: translateY(-6px);
	box-shadow: var(--shadow-lg);
}

.tarmac-v2 .tarmac-partner-card__title {
	margin: 0 0 0.45rem;
	font-size: 1rem;
	font-weight: 700;
	line-height: 1.35;
	letter-spacing: 0;
	text-transform: none;
	color: var(--c-bleu-nuit);
}

/* ==========================================================================
   9. Nos sites : encart « appeler le 115 »
   ========================================================================== */

.tcarte-115 { padding-top: clamp(2rem, 5vw, 3.5rem); }

.tcarte-115__inner {
	display: flex;
	flex-wrap: wrap;
	gap: var(--sp-5);
	align-items: center;
	padding-block: var(--sp-6);
	border-radius: var(--radius-xl);
	background:
		radial-gradient(circle at 92% 20%, rgb(248 213 3 / 45%), transparent 35%),
		var(--c-rose);
	color: var(--c-bleu-nuit);
}

.tcarte-115__ico {
	flex: none;
	width: 64px;
	height: 64px;
	padding: 14px;
	border-radius: 50%;
	background: var(--c-blanc);
	fill: none;
	stroke: var(--c-rose);
	stroke-width: 1.8;
	stroke-linecap: round;
	stroke-linejoin: round;
	animation: thv2-ring 2.8s ease-in-out infinite;
}

.tcarte-115__text { flex: 1 1 320px; }

.tarmac-v2 .tcarte-115 h2 {
	margin: 0 0 var(--sp-2);
	font-size: var(--fs-h3);
	color: var(--c-bleu-nuit);
}

.tcarte-115__text p { margin: 0; font-weight: 500; }

@keyframes thv2-ring {
	0%, 60%, 100% { transform: rotate(0); }
	65% { transform: rotate(-14deg); }
	70% { transform: rotate(12deg); }
	75% { transform: rotate(-10deg); }
	80% { transform: rotate(8deg); }
	85% { transform: rotate(0); }
}
