/*
 * Train Rouge — base commune des widgets de présentation.
 * Styles de secours à spécificité nulle (:where) : le thème enfant les remplace.
 * Couleurs : variables de la charte (--tr-*), valeurs du mode clair en secours.
 */

:where(.tr-visuellement-cache) {
	position: absolute !important;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0 0 0 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

:where(.tr-icone) {
	display: inline-block;
	flex: none;
	vertical-align: middle;
}

/* Pas sur le conteneur d'un widget Elementor (le thème stylise alors le titre interne). */
:where(.tr-surtitre:not(.elementor-widget)) {
	display: flex;
	align-items: center;
	gap: 0.75rem;
	margin: 0 0 1rem;
	font-family: var(--tr-police-texte, "Atkinson Hyperlegible Next", system-ui, sans-serif);
	font-size: 0.9375rem;
	font-weight: 700;
	line-height: 1.45;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	color: var(--tr-texte-accent, #a3141e);
}

:where(.tr-surtitre:not(.elementor-widget))::before {
	content: "";
	flex: none;
	width: 1.75rem;
	height: 0.25rem;
	border-radius: 2px;
	background: currentColor;
}

:where(.tr-surtitre--clair:not(.elementor-widget)) {
	color: var(--tr-texte-lumiere, #fbb86a);
}

:where(.tr-entete) {
	max-width: 47.5rem;
	margin: 0 0 2.5rem;
}

:where(.tr-entete__titre) {
	margin: 0;
	font-family: var(--tr-police-titres, "Bricolage Grotesque", system-ui, sans-serif);
	font-size: clamp(1.875rem, 1.25rem + 2vw, 2.75rem);
	font-weight: 700;
	line-height: 1.18;
	letter-spacing: -0.01em;
	color: var(--tr-texte-marque, #24255d);
}

:where(.tr-entete__intro) {
	margin: 1rem 0 0;
	font-size: clamp(1.1875rem, 1.05rem + 0.45vw, 1.375rem);
	line-height: 1.55;
	color: var(--tr-texte-secondaire, #45465f);
}

.tr-entete.tr-entete--sombre .tr-entete__titre {
	color: var(--tr-texte-inverse, #fff);
}

.tr-entete.tr-entete--sombre .tr-entete__intro {
	color: var(--tr-texte-inverse-doux, #c9cae3);
}

.tr-entete.tr-entete--sombre .tr-surtitre {
	color: var(--tr-texte-lumiere, #fbb86a);
}

/*
 * Liens-composants des widgets : jamais soulignés au repos, même dans le contenu
 * d'une page (Astra souligne « .ast-single-post .entry-content a »).
 */
.ast-single-post .entry-content :is(.tr-btn, .tr-cartes__lien, .tr-acces__lien, .tr-actu__lien, .tr-fb__lien, .tr-terr__lien, .tr-pagination__lien, .tr-actus-filtres__chip, .tr-actus-tri__liste a, .tr-partage__lien, .tr-fil-ariane a, .tr-une__lien),
.elementor .elementor-widget :is(.tr-btn, .tr-cartes__lien, .tr-acces__lien, .tr-actu__lien, .tr-fb__lien, .tr-terr__lien, .tr-pagination__lien, .tr-actus-filtres__chip, .tr-actus-tri__liste a, .tr-fil-ariane a, .tr-une__lien) {
	text-decoration: none;
}

.elementor .elementor-widget .tr-btn--lien:hover .tr-btn__texte,
.ast-single-post .entry-content .tr-btn--lien:hover .tr-btn__texte {
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

/* Boutons (secours) */
:where(.tr-btn) {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.625rem;
	min-height: 3.5rem;
	padding: 0.875rem 2rem;
	border: 2px solid transparent;
	border-radius: 999px;
	font-family: var(--tr-police-texte, "Atkinson Hyperlegible Next", system-ui, sans-serif);
	font-size: 1.125rem;
	font-weight: 700;
	line-height: 1.3;
	text-decoration: none;
	cursor: pointer;
	transition: background-color 0.2s, color 0.2s, border-color 0.2s;
}

:where(.tr-btn--m) {
	min-height: 3rem;
	padding: 0.625rem 1.5rem;
	font-size: 1rem;
}

:where(.tr-btn--primaire) {
	background: var(--tr-action-primaire, #a3141e);
	color: #fff;
}

:where(.tr-btn--primaire:hover) {
	background: var(--tr-action-primaire-survol, #8f111a);
	color: #fff;
}

:where(.tr-btn--secondaire) {
	border-color: var(--tr-action-secondaire, #24255d);
	background: transparent;
	color: var(--tr-action-secondaire, #24255d);
}

:where(.tr-btn--secondaire:hover) {
	background: var(--tr-action-secondaire, #24255d);
	color: var(--tr-fond-page, #fff);
}

:where(.tr-btn--clair) {
	background: #fff;
	color: #24255d;
}

:where(.tr-btn--contour-clair) {
	border-color: #fff;
	background: transparent;
	color: #fff;
}

:where(.tr-btn--contour-clair:hover) {
	background: #fff;
	color: #24255d;
}

:where(.tr-btn--lien) {
	min-height: 2.75rem;
	padding: 0.25rem 0;
	border: 0;
	border-radius: 4px;
	background: none;
	color: var(--tr-texte-accent, #a3141e);
}

:where(.tr-btn--lien:hover) .tr-btn__texte {
	text-decoration: underline;
	text-underline-offset: 0.2em;
}

:where(.tr-btn:focus-visible) {
	outline: 3px solid var(--tr-bordure-forte, #24255d);
	outline-offset: 3px;
}

:where(.tr-btn__icone) {
	display: inline-flex;
}

/* Badges (secours) */
:where(.tr-badge) {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	width: fit-content;
	margin: 0;
	padding: 0.375rem 0.875rem;
	border-radius: 999px;
	font-family: var(--tr-police-texte, "Atkinson Hyperlegible Next", system-ui, sans-serif);
	font-size: 0.9375rem;
	font-weight: 700;
	line-height: 1.35;
}

:where(.tr-badge--rouge) {
	background: var(--tr-fond-accent-doux, #fef2f2);
	color: var(--tr-texte-accent, #a3141e);
}

:where(.tr-badge--bleu) {
	background: var(--tr-fond-froid, #f2f2f9);
	color: var(--tr-texte-marque, #24255d);
}

:where(.tr-badge--lumiere) {
	background: var(--tr-fond-lumiere-vif, #f68e1e);
	color: var(--tr-texte-sur-lumiere, #16173f);
}

:where(.tr-badge--succes) {
	background: var(--tr-statut-succes-doux, #eaf6f0);
	color: var(--tr-statut-succes, #0f5a3a);
}

:where(.tr-badge--sombre) {
	background: var(--tr-fond-marque, #24255d);
	color: #fff;
}

:where(.tr-badge--verre) {
	background: rgba(15, 16, 51, 0.86);
	color: #fff;
}

/* Pastilles d'icône (secours) */
:where(.tr-pastille) {
	display: inline-flex;
	flex: none;
	align-items: center;
	justify-content: center;
	width: 3.5rem;
	height: 3.5rem;
	border-radius: 50%;
}

:where(.tr-pastille--marque) {
	background: var(--tr-fond-marque, #24255d);
	color: var(--tr-icone-lumiere, #f68e1e);
}

:where(.tr-pastille--accent) {
	background: var(--tr-action-primaire, #a3141e);
	color: #fff;
}

:where(.tr-pastille--lumiere) {
	background: var(--tr-fond-lumiere, #fff6eb);
	color: var(--tr-icone-accent, #a3141e);
}

:where(.tr-pastille--douce) {
	background: var(--tr-fond-froid, #f2f2f9);
	color: var(--tr-icone-marque, #24255d);
}

/* Image absente (éditeur seulement) */
.tr-ui-image-vide {
	display: block;
	width: 100%;
	height: 100%;
	min-height: 8rem;
	background: repeating-linear-gradient(45deg, #e4e5f2 0 10px, #f2f2f9 10px 20px);
}

@media (prefers-reduced-motion: reduce) {
	:where([class^="tr-"], [class*=" tr-"]) {
		transition: none !important;
		animation: none !important;
	}
}
