/*
 * Cap Access — styles complémentaires au theme.json.
 * Prototype C1 (15 octobre 2026), complété au lot C2 (même jour).
 *
 * Règles de couleur (contrastes calculés, CONCEPTION_V1 § 8.1) :
 * - jaune #F8C143 jamais en texte sur fond blanc ou clair (1,65:1) ;
 * - jaune sur bleu #0163A3 : grand texte et éléments graphiques seulement (3,83:1) ;
 * - jaune sur bleu foncé #014A7A (5,62:1) ou encre #14213D (9,66:1) : autorisé.
 */

:root {
	--ca-encre: var(--wp--preset--color--contrast);
	--ca-jaune: var(--wp--preset--color--accent-1);
	--ca-bleu: var(--wp--preset--color--accent-3);
	--ca-bleu-fonce: var(--wp--preset--color--accent-6);
	--ca-blanc: var(--wp--preset--color--base);
	--ca-erreur: var(--wp--preset--color--erreur);
	--ca-succes: var(--wp--preset--color--succes);
	--ca-rayon: 0.5rem;
}

/* ---------- Focus : double anneau visible sur tous les fonds ---------- */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--ca-encre);
	outline-offset: 0;
	box-shadow: 0 0 0 6px var(--ca-jaune);
	border-radius: 2px;
}
/* Ne jamais supprimer le focus sans remplacement. */

/* ---------- Liens d'accès rapide (lot C2) : masqués jusqu'à la prise de focus ---------- */
.ca-evitement ul { list-style: none; margin: 0; padding: 0; }
.ca-evitement {
	position: absolute; left: 0; top: 0; z-index: 100000;
	width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap;
}
.ca-evitement:focus-within {
	position: static; width: auto; height: auto; overflow: visible; clip-path: none; white-space: normal;
	background: var(--ca-blanc); border-bottom: 3px solid var(--ca-encre); padding: 0.5rem clamp(1rem, 4vw, 2.5rem);
}
.ca-evitement:focus-within ul { display: flex; flex-wrap: wrap; gap: 0.5rem 1.5rem; }
.ca-evitement a { display: inline-block; padding: 0.5rem 0.25rem; font-weight: 700; color: var(--ca-encre); min-height: 44px; line-height: 1.6; }
/* Zones atteintes par ces liens : pas d'anneau autour de toute la zone. */
#contenu:focus, #menu-principal:focus, #pied-de-page:focus { outline: none; box-shadow: none; }

/* ---------- V0.15.11 : très grand texte sur téléphone (contrôle A4 de remplacement, 4/11) ----------
   À 360 px avec un texte à 200 %, des mots longs, l'adresse de courriel, le champ de recherche
   et quelques boutons faisaient défiler la page de côté. Ces règles ne changent rien aux tailles normales. */
body { overflow-wrap: break-word; }
:where(input, select, textarea, button) { max-width: 100%; }
ol.ca-etapes > li, .ca-filtres li { min-width: 0; max-width: 100%; }
.ca-telecharger .wp-element-button, .ca-filtres a { max-width: 100%; box-sizing: border-box; }
@media (max-width: 40em) {
	.ca-telecharger .wp-element-button, .ca-filtres a { overflow-wrap: anywhere; }
}
/* V0.15.12 : formulaire de contact (vu le 4/11 après installation de 0.15.11) : un champ ne doit pas élargir sa colonne. */
.ca-form > *, .ca-champ > *, fieldset { min-width: 0; }

/* ---------- Liens : soulignement plus épais au survol ---------- */
a { text-underline-offset: 0.18em; text-decoration-thickness: 1px; }
a:hover { text-decoration-thickness: 3px; }

/* ---------- En-tête ---------- */
.ca-entete { border-bottom: 1px solid #D5D9E0; }
.ca-entete__barre { gap: 1rem 2rem; }
/* V0.13.1 : en-tête sur deux lignes (aperçu V3) — logo et outils en haut, rubriques dessous ; panneaux pleine largeur. */
.ca-entete { position: relative; z-index: 20; background: var(--ca-blanc); }
.ca-entete__nav { border-top: 1px solid #D5D9E0; }
.ca-nav__liste { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: stretch; gap: 0.25rem; }
.ca-nav__item { position: static; display: flex; flex-wrap: wrap; }
.ca-nav__lien[hidden], .ca-nav__bascule[hidden] { display: none; }
.ca-nav__lien, .ca-nav__bascule { font: inherit; font-weight: 700; color: var(--ca-encre); background: none; border: 0; border-bottom: 4px solid transparent; padding: 0.85rem 0.9rem 0.7rem; display: inline-flex; align-items: center; gap: 0.45rem; text-decoration: none; cursor: pointer; min-height: 48px; box-sizing: border-box; line-height: 1.4; text-align: left; }
.ca-nav__lien:hover, .ca-nav__bascule:hover { border-bottom-color: #C9CED6; text-decoration: underline; }
.ca-nav__lien[aria-current="page"], .est-dans-rubrique > .ca-nav__lien, .est-dans-rubrique > .ca-nav__bascule { border-bottom-color: var(--ca-bleu); }
.ca-nav__bascule[aria-expanded="true"] { border-bottom-color: var(--ca-jaune); background: var(--wp--preset--color--accent-5); }
.ca-nav__chevron { width: 0.75em; height: 0.75em; flex: none; transition: transform 0.15s; }
.ca-nav__bascule[aria-expanded="true"] .ca-nav__chevron { transform: rotate(180deg); }
.ca-sous-menu { display: none; }
.est-ouvert > .ca-sous-menu { display: block; }
/* V0.13.2 (retour de Mathieu du 26/10/2026) : panneau VERTICAL à une seule colonne, ancré sous sa rubrique.
   Lecture de haut en bas : titre, phrase d'orientation, « Voir toute la rubrique », puis une entrée par ligne. */
.ca-sous-menu__interieur { box-sizing: border-box; display: block; margin: 0; padding: 1rem 1.25rem 1.25rem; }
.ca-sous-menu__titre { font-size: 1.1em; font-weight: 700; margin: 0 0 0.25rem; }
.ca-sous-menu__texte { font-size: 0.95em; color: var(--wp--preset--color--accent-4); margin: 0 0 0.75rem; }
.ca-sous-menu__tout { margin: 0 0 0.5rem; }
.ca-sous-menu__tout a { display: block; box-sizing: border-box; min-height: 44px; padding: 0.6rem 0.75rem; border-left: 4px solid var(--ca-bleu); background: var(--wp--preset--color--accent-5); font-weight: 700; color: var(--ca-bleu); text-underline-offset: 0.18em; }
.ca-sous-menu__liens { list-style: none; margin: 0; padding: 0; display: block; }
.ca-sous-menu__liens li + li { margin-top: 0.25rem; }
.ca-sous-menu__liens a { display: block; min-height: 44px; box-sizing: border-box; padding: 0.6rem 0.75rem; border-left: 4px solid #C9CED6; text-decoration: none; color: var(--ca-encre); }
.ca-sous-menu__liens a:hover, .ca-sous-menu__liens a:focus-visible, .ca-sous-menu__liens a[aria-current="page"] { border-left-color: var(--ca-bleu); background: var(--wp--preset--color--accent-5); }
.ca-sous-menu__liens a[aria-current="page"] strong::after { content: " (page actuelle)"; font-weight: 400; color: var(--ca-encre); text-decoration: none; }
.ca-sous-menu__liens strong { display: block; color: var(--ca-bleu); text-decoration: underline; text-underline-offset: 0.18em; }
.ca-sous-menu__liens span { display: block; font-size: 0.9em; color: var(--wp--preset--color--accent-4); margin-top: 0.15rem; }
.ca-sous-menu__liens .ca-externe { display: inline; margin-left: 0.3rem; color: var(--ca-bleu); }
.ca-seulement-petit { display: none; }
@media (min-width: 782px) {
	.ca-nav__item { position: relative; }
	.ca-sous-menu { position: absolute; left: 0; top: 100%; z-index: 30; width: min(25rem, calc(100vw - 2rem)); background: var(--ca-blanc); border: 1px solid #C9CED6; border-top: 4px solid var(--ca-jaune); border-radius: 0 0 var(--ca-rayon) var(--ca-rayon); box-shadow: 0 12px 24px rgba(20, 33, 61, 0.15); }
	.ca-nav__item--droite > .ca-sous-menu { left: auto; right: 0; }
}
.ca-acces .ca-icone { vertical-align: middle; margin-right: 0.35rem; }
.ca-acces p { margin: 0; }
.ca-acces p a { display: inline-flex; align-items: center; min-height: 44px; padding: 0.4rem 0.6rem; border-radius: var(--ca-rayon); color: var(--ca-encre); text-decoration: none; }
.ca-acces p a:hover { background: var(--wp--preset--color--accent-5); text-decoration: underline; }
.ca-acces { gap: 0.75rem 1.25rem; align-items: center; }
.ca-acces .wp-block-button__link { min-height: 48px; display: inline-flex; align-items: center; }
/* D-06/11-11 : marque ESS « L'économie en mieux » à droite de l'en-tête, après « Contact », sur tous les écrans ; séparée par un trait. */
.ca-acces .ca-marque-ess { margin: 0; padding-left: 1.25rem; border-left: 1px solid #D5D9E0; display: flex; align-items: center; flex: 0 0 auto; }
.ca-acces .ca-marque-ess img { display: block; width: 56px; height: 56px; }

/* Bouton Menu ajouté par menu.js sur petits écrans (amélioration progressive). */
.ca-menu-bouton {
	display: none;
	font: inherit;
	font-weight: 700;
	background: var(--ca-blanc);
	color: var(--ca-encre);
	border: 2px solid var(--ca-encre);
	border-radius: var(--ca-rayon);
	min-height: 48px;
	padding: 0.5rem 1rem;
	cursor: pointer;
}
@media (max-width: 781px) {
	.js-ca-menu .ca-menu-bouton { display: inline-flex; align-items: center; gap: 0.5rem; }
	.js-ca-menu .ca-menu-panneau[hidden] { display: none !important; }
	.ca-menu-panneau { width: 100%; }
	.ca-nav__liste { flex-direction: column; gap: 0; width: 100%; }
	.ca-nav__item { flex-direction: column; }
	.ca-nav__lien, .ca-nav__bascule { width: 100%; justify-content: space-between; border-bottom: 1px solid #D5D9E0; }
	.ca-sous-menu__interieur { display: block; padding: 0.5rem 0 1rem 1rem; border-left: 4px solid var(--ca-jaune); }
	.ca-sous-menu__titre, .ca-sous-menu__texte { display: none; }
	.ca-seulement-petit { display: flex; }
	.ca-masquer-petit { display: none !important; }
	.ca-entete__nav { border-top: 0; }
	/* Ligne du haut compacte : logo, Affichage (icône, nom conservé pour les lecteurs d'écran), Menu. */
	.ca-entete__barre { gap: 0.5rem 1rem !important; } /* Retour à la ligne seulement si le texte est agrandi (reflow). */
	.ca-entete__barre .ca-acces { margin-left: auto; }
	.ca-acces { flex-wrap: nowrap !important; gap: 0.5rem !important; }
	.ca-affichage-bouton { padding: 0.5rem; min-width: 48px; justify-content: center; }
	.ca-acces .ca-marque-ess { padding-left: 0.5rem; }
	.ca-acces .ca-marque-ess img { width: 40px; height: 40px; }
	.ca-affichage-libelle { border: 0; clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; white-space: nowrap; }
}

/* ---------- V0.13.0 : réglage Affichage (M-40) ---------- */
.ca-affichage-bouton { font: inherit; font-weight: 700; display: inline-flex; align-items: center; gap: 0.4rem; min-height: 48px; padding: 0.5rem 0.9rem; background: var(--ca-blanc); color: var(--ca-encre); border: 2px solid var(--ca-encre); border-radius: var(--ca-rayon); cursor: pointer; }
.ca-affichage-bouton[hidden] { display: none; }
.ca-affichage-bouton[aria-expanded="true"] { background: var(--wp--preset--color--accent-2); }
.ca-affichage { position: absolute; right: clamp(1rem, 4vw, 2.5rem); top: 100%; z-index: 40; width: min(26rem, calc(100% - 2rem)); box-sizing: border-box; background: var(--ca-blanc); color: var(--ca-encre); border: 1px solid #C9CED6; border-top: 4px solid var(--ca-bleu); border-radius: 0 0 var(--ca-rayon) var(--ca-rayon); box-shadow: 0 12px 24px rgba(20, 33, 61, 0.15); padding: 1.25rem; }
.ca-affichage[hidden] { display: none; }
.ca-affichage .ca-affichage__titre { font-size: 1.2em; font-weight: 700; margin: 0 0 0.75rem; } /* V0.15.2 : intitulé sans niveau de titre (CA-18). */
.ca-affichage fieldset { border: 0; padding: 0; margin: 0 0 1rem; min-width: 0; }
.ca-affichage legend { font-weight: 700; margin-bottom: 0.4rem; padding: 0; }
.ca-choix { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.ca-choix label { display: flex; align-items: center; gap: 0.45rem; border: 1px solid var(--ca-encre); border-radius: var(--ca-rayon); padding: 0.45rem 0.7rem; min-height: 44px; box-sizing: border-box; cursor: pointer; }
.ca-choix input { width: 1.15rem; height: 1.15rem; margin: 0; accent-color: var(--ca-bleu); }
.ca-choix label:has(input:checked) { border-color: var(--ca-bleu); border-width: 2px; background: var(--wp--preset--color--accent-5); font-weight: 700; }
.ca-affichage__actions { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.ca-bouton-secondaire { font: inherit; min-height: 44px; padding: 0.5rem 0.9rem; background: transparent; color: var(--ca-bleu); border: 2px solid currentColor; border-radius: var(--ca-rayon); cursor: pointer; }
.ca-affichage__note { font-size: var(--wp--preset--font-size--small); color: var(--wp--preset--color--accent-4); margin: 0.75rem 0 0; }

/* Effets des réglages : variables seulement, le zoom du navigateur reste prioritaire. */
:root[data-ca-taille="grand"] { font-size: 112.5%; }
:root[data-ca-taille="tres-grand"] { font-size: 125%; }
:root[data-ca-espacement="augmente"] body { line-height: 1.9; letter-spacing: 0.06em; word-spacing: 0.16em; }
:root[data-ca-espacement="augmente"] :where(p, li, dd) { line-height: 1.9; margin-block-end: 1.2em; }
:root[data-ca-contraste="renforce"] {
	--wp--preset--color--accent-4: #2B323C;
	--wp--preset--color--accent-3: #003A66;
	--wp--preset--color--accent-6: #002A4A;
	--wp--preset--color--accent-2: #FFFFFF;
	--wp--preset--color--accent-5: #FFFFFF;
}
:root[data-ca-contraste="renforce"] :where(.ca-fiche, .ca-encadre, .ca-entete, .ca-sous-menu, .ca-affichage, .ca-choix label) { border-color: #14213D; }
:root[data-ca-contraste="renforce"] a:where(:not(.wp-block-button__link)) { text-decoration-thickness: 2px; }

/* ---------- Sections ---------- */
.ca-section-foncee { background: var(--ca-bleu-fonce); color: var(--ca-blanc); }
.ca-section-foncee :where(h1, h2, h3, p, li, figcaption) { color: var(--ca-blanc); }
.wp-block-image img { border-radius: var(--ca-rayon); height: auto; }
.wp-block-image figcaption { font-size: var(--wp--preset--font-size--small); }
.ca-section-foncee a:where(:not(.wp-block-button__link)) { color: var(--ca-blanc); }
.ca-section-foncee .wp-block-button__link { background: var(--ca-jaune); color: var(--ca-encre); }
.ca-section-foncee .wp-block-button__link:hover { background: var(--ca-blanc); color: var(--ca-encre); }
.ca-section-foncee .wp-block-button.is-style-outline .wp-block-button__link { background: transparent; color: var(--ca-blanc); border: 2px solid var(--ca-blanc); }
.ca-section-foncee .wp-block-button.is-style-outline .wp-block-button__link:hover { background: var(--ca-blanc); color: var(--ca-encre); }

/* « Trait de cap » : accent jaune sous les titres, sur fond foncé uniquement. */
.ca-section-foncee .ca-trait::after {
	content: "";
	display: block;
	width: 4rem;
	height: 0.375rem;
	margin-top: 0.75rem;
	background: var(--ca-jaune);
	border-radius: 3px;
}

/* ---------- Boutons secondaires ---------- */
.wp-block-button.is-style-outline .wp-block-button__link {
	background: transparent;
	color: var(--ca-bleu);
	border: 2px solid currentColor;
}
.wp-block-button.is-style-outline .wp-block-button__link:hover { color: var(--ca-bleu-fonce); background: transparent; }
.wp-block-button__link { min-height: 48px; }

/* ---------- Emplacement photo (prototype) ---------- */
.ca-photo-a-fournir {
	border: 2px dashed var(--wp--preset--color--accent-4);
	background: var(--wp--preset--color--accent-5);
	color: var(--ca-encre);
	padding: 2rem 1.5rem;
	min-height: 12rem;
	display: flex;
	align-items: center;
	justify-content: center;
	text-align: center;
	border-radius: var(--ca-rayon);
}

/* ---------- Cartes : le titre est le lien ; toute la carte est cliquable ---------- */
.ca-carte { position: relative; border: 1px solid #C9CED6; border-radius: var(--ca-rayon); background: var(--ca-blanc); padding: 1.5rem; height: 100%; }
.ca-carte :is(h2, h3) a { text-decoration: none; color: var(--ca-encre); }
.ca-carte :is(h2, h3) a::after { content: ""; position: absolute; inset: 0; }
.ca-carte:hover { border-color: var(--ca-bleu); box-shadow: 0 0 0 2px var(--ca-bleu); }
.ca-carte:hover :is(h2, h3) a { text-decoration: underline; }
.ca-carte:focus-within { box-shadow: 0 0 0 3px var(--ca-encre), 0 0 0 6px var(--ca-jaune); }
.ca-carte :is(h2, h3) a:focus-visible { box-shadow: none; outline: none; }

/* ---------- Étapes numérotées ---------- */
ol.ca-etapes { counter-reset: etape; list-style: none; padding-left: 0; display: grid; gap: 1rem; }
ol.ca-etapes > li { counter-increment: etape; position: relative; padding-left: 3.5rem; min-height: 2.75rem; }
ol.ca-etapes > li::before {
	content: counter(etape);
	position: absolute; left: 0; top: 0;
	width: 2.5rem; height: 2.5rem;
	border-radius: 50%;
	background: var(--ca-bleu-fonce); color: var(--ca-blanc);
	font-weight: 700; display: grid; place-items: center;
}

/* ---------- Encadrés ---------- */
.ca-encadre { background: var(--wp--preset--color--accent-2); border-left: 6px solid var(--ca-bleu-fonce); padding: 1.25rem 1.5rem; border-radius: 0 var(--ca-rayon) var(--ca-rayon) 0; }
.ca-a-completer { background: var(--wp--preset--color--accent-5); border: 2px dashed var(--wp--preset--color--accent-4); padding: 1rem 1.25rem; border-radius: var(--ca-rayon); }

/* ---------- Fiche d'identité de réalisation ---------- */
.ca-fiche { box-sizing: border-box; border: 1px solid #C9CED6; border-radius: var(--ca-rayon); padding: 1.25rem 1.5rem; background: var(--wp--preset--color--accent-5); }
.ca-fiche dl { display: grid; grid-template-columns: minmax(8rem, max-content) 1fr; gap: 0.5rem 1.5rem; margin: 0; }
.ca-fiche dt { font-weight: 700; }
.ca-fiche dd { margin: 0; }
@media (max-width: 480px) { .ca-fiche dl { grid-template-columns: 1fr; } .ca-fiche dd { margin-bottom: 0.5rem; } }
.ca-statut { display: inline-block; font-weight: 700; padding: 0.125rem 0.5rem; border-radius: 4px; border: 2px solid currentColor; }

/* ---------- Bandeau de campagne ---------- */
.ca-bandeau { background: var(--wp--preset--color--accent-2); border-bottom: 1px solid #C9CED6; padding: 0.75rem clamp(1rem, 4vw, 2.5rem); }
.ca-bandeau p { margin: 0; max-width: 76rem; margin-inline: auto; }

/* ---------- Formulaire ---------- */
.ca-form { display: grid; gap: 1.5rem; max-width: 40rem; }
.ca-champ { display: grid; gap: 0.375rem; }
.ca-champ label, .ca-champ legend { font-weight: 700; }
.ca-aide { color: var(--wp--preset--color--accent-4); font-size: 1rem; margin: 0; }
.ca-form input[type="text"], .ca-form input[type="email"], .ca-form input[type="tel"], .ca-form select, .ca-form textarea {
	font: inherit; color: var(--ca-encre); background: var(--ca-blanc);
	border: 2px solid #5B6470; border-radius: 6px; padding: 0.625rem 0.75rem; width: 100%; box-sizing: border-box; min-height: 48px;
}
.ca-form textarea { min-height: 10rem; }
.ca-form :is(input, select, textarea)[aria-invalid="true"] { border-color: var(--ca-erreur); border-width: 3px; }
.ca-erreur-champ { color: var(--ca-erreur); font-weight: 700; margin: 0; }
.ca-erreur-champ::before { content: "Erreur : "; }
.ca-recap-erreurs { border: 3px solid var(--ca-erreur); border-radius: var(--ca-rayon); padding: 1rem 1.25rem; background: #FFF5F4; }
.ca-recap-erreurs h2 { color: var(--ca-erreur); font-size: var(--wp--preset--font-size--large); margin-top: 0; }
.ca-message-succes { border: 3px solid var(--ca-succes); border-radius: var(--ca-rayon); padding: 1rem 1.25rem; }
.ca-piege { position: absolute !important; left: -10000px !important; width: 1px; height: 1px; overflow: hidden; }
.ca-form button[type="submit"] {
	font: inherit; font-weight: 700; background: var(--ca-bleu); color: var(--ca-blanc);
	border: 0; border-radius: var(--ca-rayon); min-height: 48px; padding: 0.75rem 1.5rem; cursor: pointer; justify-self: start;
}
.ca-form button[type="submit"]:hover { background: var(--ca-bleu-fonce); }

/* ---------- Pied de page ---------- */
.ca-pied { background: var(--ca-encre); color: var(--ca-blanc); }
.ca-pied :where(p, li, h2, h3) { color: var(--ca-blanc); }
.ca-pied a { color: var(--ca-blanc); }
.ca-pied a:hover { color: var(--ca-jaune); }
.ca-pied ul { list-style: none; padding-left: 0; }
.ca-pied li { margin: 0.5rem 0; }
/* V0.15.2 (CA-32, O-08) : liens du pied de page en cibles de 44 px de haut (confort tactile au-delà des 24 px du
   critère WCAG 2.2 de niveau AA), sans changer leur aspect. */
.ca-pied li { margin: 0; }
.ca-pied li a { display: inline-flex; align-items: center; min-height: 44px; }

/* ---------- Logo (lot C3) : zone de protection d'au moins 10 % du diamètre ---------- */
.wp-block-site-title a { display: inline-flex; align-items: center; gap: 0.75rem; text-decoration: none; color: var(--ca-encre); }
.wp-block-site-title a:hover { text-decoration: underline; }
.ca-logo { width: 56px; height: 56px; flex: 0 0 auto; }
@media (max-width: 480px) { .ca-logo { width: 48px; height: 48px; } }

/* ---------- Lien « Rechercher » de l'en-tête ---------- */
.ca-lien-recherche a { font-weight: 700; }

/* ---------- Fil d'Ariane (lot C2) ---------- */
.ca-ariane { margin-bottom: 1.5rem; font-size: var(--wp--preset--font-size--small); }
.ca-ariane ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 0.25rem 0; }
.ca-ariane li { display: inline-flex; align-items: center; }
/* Séparateur dessiné (aucun texte lu par les lecteurs d'écran). */
.ca-ariane li + li::before {
	content: ""; display: inline-block; width: 0.45em; height: 0.45em;
	border-top: 2px solid currentColor; border-right: 2px solid currentColor;
	transform: rotate(45deg); margin: 0 0.75em 0 0.5em;
}
.ca-ariane a { padding: 0.25rem 0; }
.ca-ariane [aria-current="page"] { font-weight: 700; }

/* ---------- Recherche (lot C2) ---------- */
.wp-block-search__label { font-weight: 700; display: block; margin-bottom: 0.375rem; }
.wp-block-search__inside-wrapper { gap: 0.5rem; flex-wrap: wrap; }
.wp-block-search__input {
	font: inherit; color: var(--ca-encre); background: var(--ca-blanc);
	border: 2px solid #5B6470 !important; border-radius: 6px; padding: 0.625rem 0.75rem; min-height: 48px; flex: 1 1 14rem;
}
.wp-block-search__button {
	font: inherit; font-weight: 700; background: var(--ca-bleu); color: var(--ca-blanc);
	border: 0; border-radius: var(--ca-rayon); min-height: 48px; padding: 0.75rem 1.5rem; cursor: pointer; margin-left: 0;
}
.wp-block-search__button:hover { background: var(--ca-bleu-fonce); }
.ca-recherche-biblio { margin: 1.5rem 0 2rem; max-width: 44rem; }
.ca-recherche-biblio__aide { margin: 0.375rem 0 0; font-size: var(--wp--preset--font-size--small); }
.ca-recherche-biblio__effacer { margin: 0.5rem 0 0; }
.ca-recherche-biblio__effacer a { display: inline-block; min-height: 24px; padding-block: 2px; }
.ca-resultats { font-weight: 700; font-size: var(--wp--preset--font-size--large); }
.ca-type { margin: 0 0 0.25rem; font-size: var(--wp--preset--font-size--small); font-weight: 700; color: var(--wp--preset--color--accent-4); text-transform: uppercase; letter-spacing: 0.04em; }
.ca-liste-resultats > li { padding: 1.25rem 0; border-bottom: 1px solid #C9CED6; }
.ca-liste-resultats :is(h2, h3) { margin: 0 0 0.5rem; }
.ca-liste-resultats :is(h2, h3) a { text-decoration: underline; text-decoration-thickness: 1px; }
.ca-liste-resultats :is(h2, h3) a:hover { text-decoration-thickness: 3px; }

/* ---------- Ressources (lot C2) ---------- */
.ca-filtres ul { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 0.75rem; }
.ca-filtres a {
	display: inline-flex; align-items: center; min-height: 44px; padding: 0.375rem 1rem;
	border: 2px solid var(--ca-bleu); border-radius: 999px; color: var(--ca-bleu-fonce); text-decoration: none; font-weight: 700;
}
.ca-filtres a:hover { text-decoration: underline; }
.ca-filtres a[aria-current="page"] { background: var(--ca-bleu-fonce); border-color: var(--ca-bleu-fonce); color: var(--ca-blanc); }
.ca-filtres a[aria-current="page"]::before { content: ""; width: 0.5em; height: 0.9em; border-right: 3px solid currentColor; border-bottom: 3px solid currentColor; transform: rotate(45deg); margin: -0.2em 0.6em 0 0; }
.ca-ressource-meta { font-size: var(--wp--preset--font-size--small); color: var(--wp--preset--color--accent-4); margin: 0.5rem 0 0; }
/* D-01/11-5 (0.15.6) : thème écrit sur chaque carte de ressource. */
.ca-ressource-themes { margin: 1rem 0 0; color: var(--ca-encre); font-weight: 700; } /* Pas de bleu : ce texte n'est pas un lien. */
.ca-ressource-themes__libelle { font-weight: 400; }
.ca-ressource-public { margin: 0.25rem 0 0; color: var(--ca-encre); } /* 0.15.9 (V4-28) : « Pour : … » sous le thème. */
.ca-ressource-public__libelle { font-weight: 700; }
/* D-01/11-8 (0.15.6) : explication de la mention « Réservé » pour les visiteurs sans compte. */
.is-layout-constrained > .ca-reserve-explication { max-width: 48rem; margin: 1.5rem 0 0.75rem max(0px, calc((100% - 76rem) / 2)) !important; padding: 0.75rem 1rem; border-left: 4px solid var(--ca-bleu-fonce); background: var(--ca-blanc); } /* Aligné à gauche sur la colonne de texte (largeur du modèle : 76rem). */
.ca-telecharger .wp-element-button { display: inline-flex; flex-wrap: wrap; gap: 0 0.4em; align-items: center; min-height: 48px; text-decoration: none; }
.ca-telecharger__details { font-weight: 400; }

/* ---------- Actualités (lot C2) ---------- */
.ca-date { color: var(--wp--preset--color--accent-4); font-size: var(--wp--preset--font-size--small); }

/* ---------- Pagination ---------- */
.wp-block-query-pagination { gap: 0.5rem 1rem; flex-wrap: wrap; margin-top: 2rem; }
.wp-block-query-pagination a, .wp-block-query-pagination .page-numbers { display: inline-flex; align-items: center; min-height: 44px; min-width: 44px; justify-content: center; }
.wp-block-query-pagination .page-numbers.current { font-weight: 700; border-bottom: 3px solid currentColor; }

/* ---------- Plan du site (lot C2) ---------- */
.ca-plan ul ul { margin-top: 0.25rem; }
.ca-plan li { margin: 0.375rem 0; }

/* ---------- Préférences de l'utilisateur ---------- */
@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}
@media (forced-colors: active) {
	:where(a, button, input, select, textarea, summary):focus-visible { outline: 3px solid CanvasText; box-shadow: none; }
	/* E16 : les cartes portent leur focus par une ombre, supprimée en couleurs forcées : contour système explicite. */
	.ca-carte :is(h2, h3) a:focus-visible { outline: 3px solid CanvasText; outline-offset: 4px; }
	.ca-carte:focus-within { outline: 3px solid CanvasText; }
	.ca-carte, .ca-fiche, .ca-encadre { border: 1px solid CanvasText; }
	.ca-filtres a[aria-current="page"] { forced-color-adjust: none; background: Highlight; color: HighlightText; border-color: Highlight; }
}

/* Lot C3 (suite) : lexique « Comprendre l’accessibilité » */
.ca-lexique { padding-left: 1.25rem; }
.ca-lexique li { margin-block: 0.625rem; }

/* Lot C4 : Mon espace */
.ca-mon-espace { margin-block: 1.5rem 2.5rem; }
.ca-documents { list-style: none; padding: 0; margin: 0 0 1.5rem; display: grid; gap: 0.75rem; }
.ca-documents li { border: 1px solid #C9CED6; border-radius: var(--ca-rayon); padding: 0.875rem 1rem; background: var(--ca-blanc); }
.ca-documents a { font-weight: 700; }
.ca-documents__infos, .ca-documents__resume { color: var(--ca-encre); }

/* Taille des cibles (WCAG 2.2, critère 2.5.8, complément à RGAA 4.1.2) : liens hors des paragraphes. */
.ca-acces a:not(.wp-block-button__link), .ca-pied li a, .ca-ariane a, .ca-documents a, .ca-plan a, .ca-filtres a { display: inline-block; min-height: 24px; padding-block: 2px; }

/* V9.3 (CE-V92-004) : lien désactivé (destination vide ou non publiée) : simple texte, jamais présenté comme un lien. */
a.ca-lien-retire,
a.ca-lien-retire:hover {
	color: inherit;
	text-decoration: none;
	cursor: auto;
}

/* Texte réservé aux technologies d'assistance (défini ici : le thème ne dépend pas d'une feuille du cœur). */
.screen-reader-text { border: 0; clip-path: inset(50%); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; word-wrap: normal !important; }

/* ---------- V0.13.0 : accueil hybride (G1, aperçu V3) — sections réutilisables dans l'éditeur ---------- */
.ca-surtitre { font-weight: 700; letter-spacing: 0.02em; margin: 0 0 0.5rem; }
.ca-section-foncee .ca-surtitre { color: var(--ca-jaune); }
.ca-profils { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 16rem), 1fr)); gap: 0.75rem; }
.ca-profils a { display: flex; align-items: center; box-sizing: border-box; height: 100%; min-height: 3.5rem; padding: 0.9rem 1rem; border-left: 4px solid var(--ca-bleu); background: #F3F5F8; color: var(--ca-encre); font-weight: 700; text-decoration: none; overflow-wrap: break-word; }
.ca-profils a:hover { border-left-color: var(--ca-jaune); text-decoration: underline; }
/* Cartes avec photo (accueil) : photo, trait jaune, titre ; toute la carte est cliquable par son titre. */
.ca-carte.ca-carte--photo { border: 0; padding: 0; background: transparent; display: flex; flex-direction: column; }
.ca-carte--photo .wp-block-image { margin: 0 0 0.9rem; }
.ca-carte--photo .wp-block-image img { border-radius: 0.35rem; }
.ca-carte--photo :is(h2, h3) { font-size: 1.15em; margin: 0 0 0.4rem; padding-top: 0.6rem; border-top: 4px solid var(--ca-jaune); }
.ca-carte--photo p { color: var(--wp--preset--color--accent-4); margin: 0; }
.ca-carte.ca-carte--photo:hover { box-shadow: none; }
.ca-carte--photo:hover :is(h2, h3) a { color: var(--ca-bleu); }
/* « S'engager à nos côtés » : trois entrées mises en avant. */
.ca-engager { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: 1rem 1.5rem; }
.ca-engager a { display: block; box-sizing: border-box; height: 100%; padding: 1.1rem 1.25rem; border-left: 4px solid var(--ca-jaune); background: #F3F5F8; text-decoration: none; color: var(--ca-encre); }
.ca-engager a strong { display: block; color: var(--ca-bleu); text-decoration: underline; text-underline-offset: 0.18em; }
.ca-engager a:hover { border-left-color: var(--ca-bleu); }
:root[data-ca-contraste="renforce"] :is(.ca-profils a, .ca-engager a) { background: #FFFFFF; outline: 1px solid #14213D; }
.ca-situations { list-style: none; margin: 0; padding: 0; columns: 2 18rem; column-gap: 2.5rem; }
.ca-situations li { break-inside: avoid; position: relative; padding: 0.4rem 0 0.4rem 2rem; }
.ca-situations li::before { content: ""; position: absolute; left: 0.2rem; top: 0.85rem; width: 0.9rem; height: 0.45rem; border-left: 3px solid var(--ca-bleu); border-bottom: 3px solid var(--ca-bleu); transform: rotate(-45deg); }
.ca-citation { border-left: 5px solid var(--ca-jaune); padding: 0.25rem 0 0.25rem 1.25rem; font-size: 1.15em; margin: 1.5rem 0 0; }
.ca-presse-liste { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 14rem), 1fr)); gap: 1rem; }
.ca-presse-liste li { border-top: 4px solid var(--ca-bleu); padding: 0.75rem 0; }
.ca-presse-liste strong { display: block; }
.ca-domaines { font-size: var(--wp--preset--font-size--small); color: var(--wp--preset--color--accent-4); }
:where(.ca-profils, .ca-situations, .ca-presse-liste) li { overflow-wrap: break-word; hyphens: auto; }

/* V0.13.5 (A-0134-01) : tableau plus large que l'écran — cadre défilant atteignable au clavier, focus visible. */
.ca-tableau-defilant:focus-visible { outline: 3px solid var(--ca-bleu); outline-offset: 2px; }

/* V0.13.14 — « Dans le même thème » (fiche d'une ressource). */
.ca-ressources-liees { margin-top: 3rem; padding-top: 1.5rem; border-top: 2px solid currentColor; }
.ca-ressources-liees ul { list-style: none; padding: 0; margin: 0; display: grid; gap: 1.25rem; }
.ca-ressources-liees li a { font-weight: 700; font-size: 1.1em; }
.ca-ressources-liees li p { margin: 0.25rem 0 0; }

/* V0.13.16 — « Dans cette fiche » (sommaire d'une ressource longue). */
.ca-sommaire { margin: 1.5rem 0 2rem; padding: 1rem 1.25rem; border-left: 4px solid var(--ca-bleu); background: #F3F5F9; max-width: 44rem; }
.ca-sommaire__titre { font-size: var(--wp--preset--font-size--medium); margin: 0 0 0.5rem; }
.ca-sommaire ol { margin: 0; padding-left: 1.5rem; }
.ca-sommaire li { padding-block: 0.3rem; line-height: 1.4; }
/* 0.13.19 : cibles d'au moins 24 px de haut (WCAG 2.5.8, complément) pour les liens seuls dans une liste ou une cellule. */
.ca-sommaire a, .ca-fiche dd > a:only-child { padding-block: 2px; }
/* V0.15.8 (contre-audit V4, L4) : sommaire des pages longues et des guides (« Dans cette page », « Dans ce guide »). */
.ca-sommaire-page { margin: 1.5rem 0 2rem; padding: 1rem 1.25rem; border-left: 4px solid var(--ca-bleu); background: #F3F5F9; max-width: 44rem; }
.ca-sommaire-page p { margin: 0 0 0.5rem; }
.ca-sommaire-page ul { margin: 0; padding-left: 1.5rem; }
.ca-sommaire-page li { padding-block: 0.3rem; line-height: 1.4; }
.ca-sommaire-page a { padding-block: 2px; }
/* Mention d'accès ajoutée après un lien vers une fiche réservée (V4-11, V4-38) : même couleur que le texte. */
.ca-mention-acces { color: inherit; white-space: normal; }
:where(.wp-block-post-content) h2[id] { scroll-margin-top: 1.5rem; }
@media (forced-colors: active) { .ca-sommaire, .ca-sommaire-page { border-left-color: CanvasText; } }

/* V0.14.0 — Fiches réservées : résumé, encart d'invitation, mention « Réservé » sur les cartes. */
.ca-reserve__resume { font-size: var(--wp--preset--font-size--medium); max-width: 44rem; }
.ca-reserve__encart { margin: 1.5rem 0 2rem; padding: 1.25rem 1.5rem; border: 2px solid var(--ca-bleu); border-radius: 8px; background: #F3F5F9; max-width: 44rem; }
.ca-reserve__encart h2 { font-size: var(--wp--preset--font-size--large); margin: 0 0 0.5rem; }
.ca-reserve__actions { margin: 0.75rem 0 0; padding-left: 1.25rem; }
.ca-reserve__actions li { padding-block: 0.3rem; }
.ca-reserve__actions a { padding-block: 2px; }
.ca-badge-reserve { display: inline-block; max-width: 100%; margin-left: 0.4em; padding: 0.1em 0.5em; border: 1px solid currentColor; border-radius: 4px; font-size: 0.75em; font-weight: 600; vertical-align: middle; } /* 0.15.9 : plus de « nowrap », le badge « Réservé aux structures accompagnées » passe à la ligne à 320 px. */
@media (forced-colors: active) { .ca-reserve__encart { border-color: CanvasText; } }
/* V0.14.7 (D-31-4) : aperçu public des fiches réservées et fiches libres liées. */
.ca-apercu { margin: 1.5rem 0 0; max-width: 44rem; }
.ca-apercu h2 { font-size: var(--wp--preset--font-size--large); margin: 0 0 0.75rem; }
.ca-apercu h3 { font-size: var(--wp--preset--font-size--medium); margin: 1.25rem 0 0.5rem; }
.ca-apercu__public { margin: 0 0 0.75rem; }
.ca-apercu__questions { margin: 0; padding-left: 1.25rem; }
.ca-apercu__questions li { margin: 0.35rem 0; line-height: 1.5; }
.ca-apercu-libres { margin: 0 0 2rem; max-width: 44rem; }
.ca-apercu-libres h2 { font-size: var(--wp--preset--font-size--large); margin: 0 0 0.5rem; }
.ca-apercu-libres ul { margin: 0; padding-left: 1.25rem; }
.ca-apercu-libres li { margin: 0.35rem 0; }


/* V0.13.16 — Impression d'une page (fiche pratique emportée sur le terrain, réunion). */
@media print {
	@page { margin: 1.5cm; }
	body { background: #fff !important; color: #000 !important; font-size: 12pt; line-height: 1.4; }
	header.wp-block-template-part, footer.wp-block-template-part, .ca-ariane, .ca-filtres, .ca-recherche-biblio,
	.ca-ressources-liees, .ca-sommaire, .wp-block-query-pagination, .ca-acces, .ca-lien-evitement, .skip-link,
	.wp-block-buttons, .ca-bandeau, .ca-preprod { display: none !important; } /* 0.13.18 (FAB-013) : bandeau de démonstration non imprimé. */
	main { padding: 0 !important; }
	a { color: #000 !important; text-decoration: underline; }
	main a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 0.85em; word-break: break-all; }
	h1, h2, h3 { break-after: avoid; page-break-after: avoid; color: #000 !important; }
	ul, ol, table, figure, blockquote { break-inside: avoid; page-break-inside: avoid; }
	img { max-width: 100% !important; height: auto !important; }
	table, th, td { border: 1px solid #000 !important; }
	.ca-tableau-defilant, [class*="defil"] { overflow: visible !important; max-height: none !important; }
}

/* PER-02 (31/10/2026) : avis du mode recette du formulaire (préproduction, administrateurs seulement). */
.ca-formulaire-recette, .ca-formulaire-desactive { margin: 0 0 1.5rem; padding: 0.75rem 1rem; border-left: 4px solid var(--ca-bleu); background: #F3F5F9; max-width: 44rem; }
@media (forced-colors: active) { .ca-formulaire-recette, .ca-formulaire-desactive { border-left-color: CanvasText; } }
.ca-lien-espace .ca-deconnexion { margin-left: 0.75rem; }

/* V0.14.8 — Lot 4, méthode A : impression aux couleurs de Cap Access (maquette validée, décision S19). */
.ca-impression { display: none; }
@media print {
	.ca-impression { display: block; }
	body, .ca-impression { font-family: "Atkinson Hyperlegible", Arial, sans-serif; font-size: 12pt; }
	.ca-impression-entete { display: grid; grid-template-columns: 64px 1fr; gap: 0.4cm; align-items: center; margin: 0 0 0.6cm; padding-bottom: 0.4cm; border-bottom: 3px solid #0163A3; }
	.ca-impression-entete p { margin: 0; color: #0163A3 !important; line-height: 1.35; }
	.ca-impression-entete strong { font-size: 16pt; }
	.ca-impression-mention { grid-column: 1 / -1; margin-top: 0.3cm !important; padding: 0.2cm 0.3cm; border-left: 5px solid #000; background: #F8C143 !important; color: #000 !important; font-weight: 700; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
	main h1 { color: #fff !important; background: #0163A3 !important; padding: 0.25cm 0.4cm; border-bottom: 4px solid #F8C143; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
	main h2 { color: #0163A3 !important; border-bottom: 1px solid #F8C143; padding-bottom: 0.1cm; }
	.ca-fiche { border: 1px solid #0163A3 !important; padding: 0.3cm 0.4cm; }
	.ca-impression-pied { margin-top: 0.8cm; padding-top: 0.3cm; border-top: 2px solid #0163A3; break-inside: avoid; page-break-inside: avoid; }
	.ca-impression-pied h2 { margin-top: 0; }
	.ca-impression-pied p { margin: 0.15cm 0; }
	.ca-apercu-libres, .ca-reserve__actions { display: none !important; }
}

/* ==========================================================================
   V0.15.0 — Accueil photographique (décision D-31-6 du 31/10/2026)
   Ouverture : bloc Couverture. Le texte n'est posé que sur la zone couverte à 90 % au moins par le bleu foncé
   (#014A7A) : contraste du blanc ≥ 6,8:1 quel que soit le pixel de la photo. Sur mobile, la photo passe au-dessus du
   texte, sur fond uni. Mosaïque : bloc Galerie (légendes sur fond uni). Bandeau : bloc Média et texte.
   ========================================================================== */
.ca-hero-photo.wp-block-cover { min-height: min(80vh, 44rem) !important; padding: 0; }
.ca-hero-photo .wp-block-cover__background { opacity: 0 !important; } /* V0.15.1 : photo sans voile ; le texte est sur une carte. */
.ca-hero-photo .wp-block-cover__inner-container { width: 100%; max-width: 76rem; margin-inline: auto !important; padding: 3.5rem clamp(1rem, 4vw, 2rem); box-sizing: border-box; }
.ca-hero-photo .ca-hero-texte, .ca-bandeau-page .ca-bandeau-texte {
	max-width: min(36rem, 52vw); box-sizing: border-box; padding: 1.75rem 2rem; border-radius: 0.6rem;
	background: rgba(1, 74, 122, 0.95); box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
}
.ca-hero-photo :where(h1, p) { color: var(--ca-blanc); }
.ca-hero-photo h1 { font-size: clamp(1.9rem, 1.3rem + 2vw, 2.9rem); line-height: 1.12; margin: 0.25rem 0 1rem; }
.ca-hero-photo .ca-surtitre { color: var(--ca-jaune); }
.ca-hero-photo p { font-size: 1.1rem; line-height: 1.55; }
.ca-hero-photo .wp-block-button__link { background: var(--ca-jaune); color: var(--ca-encre); }
.ca-hero-photo .wp-block-button__link:hover { background: var(--ca-blanc); color: var(--ca-encre); }
.ca-hero-photo .wp-block-button.is-style-outline .wp-block-button__link { background: transparent; color: var(--ca-blanc); border: 2px solid var(--ca-blanc); }
.ca-hero-photo .wp-block-button.is-style-outline .wp-block-button__link:hover { background: var(--ca-blanc); color: var(--ca-encre); }
.ca-credit-photo { font-size: 0.85rem !important; margin-top: 1.25rem; }
@media (max-width: 48rem) {
	.ca-hero-photo.wp-block-cover { flex-direction: column; align-items: stretch; min-height: 0 !important; background: var(--ca-bleu-fonce); }
	.ca-hero-photo .wp-block-cover__image-background { position: relative; height: 58vw; max-height: 22rem; }
	.ca-hero-photo .wp-block-cover__background { display: none; }
	.ca-hero-photo .wp-block-cover__inner-container { padding-top: 1.75rem; padding-bottom: 2.25rem; }
	.ca-hero-photo .ca-hero-texte { max-width: none; padding: 0; background: none; box-shadow: none; border-radius: 0; }
}
@media (forced-colors: active) {
	.ca-hero-photo .wp-block-cover__inner-container { background: Canvas; }
	.ca-hero-photo :where(h1, p) { color: CanvasText; }
}
:root[data-ca-contraste="renforce"] :is(.ca-hero-photo .ca-hero-texte, .ca-bandeau-page .ca-bandeau-texte) { background: #014A7A; box-shadow: none; outline: 2px solid #FFFFFF; }

.ca-reperes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: 1rem 2rem; }
.ca-reperes li { border-left: 4px solid var(--ca-jaune); padding: 0.2rem 0 0.2rem 1rem; color: var(--ca-encre); }
.ca-reperes strong { display: block; font-size: 1.35rem; line-height: 1.2; color: var(--ca-bleu-fonce); }

.wp-block-gallery.ca-mosaique { display: grid !important; gap: 0.75rem !important; grid-template-columns: repeat(4, 1fr); grid-auto-rows: 13rem; margin-top: 1.5rem; }
.wp-block-gallery.ca-mosaique > figure.wp-block-image { width: auto !important; margin: 0 !important; height: 100%; position: relative; overflow: hidden; border-radius: var(--ca-rayon); }
.wp-block-gallery.ca-mosaique > figure.wp-block-image img { width: 100%; height: 100% !important; object-fit: cover; display: block; transition: transform 0.4s ease; }
.wp-block-gallery.ca-mosaique > figure:nth-child(1) { grid-column: span 2; grid-row: span 2; }
.wp-block-gallery.ca-mosaique > figure:nth-child(4), .wp-block-gallery.ca-mosaique > figure:nth-child(7) { grid-column: span 2; }
.wp-block-gallery.ca-mosaique > figure.wp-block-image figcaption {
	position: absolute; left: 0.5rem; right: 0.5rem; bottom: 0.5rem; top: auto; max-height: none; overflow: visible; margin: 0; padding: 0.4rem 0.6rem;
	background: rgba(20, 33, 61, 0.92); color: var(--ca-blanc); font-size: 0.9rem; line-height: 1.35; text-align: left; text-shadow: none; border-radius: 0.3rem;
}
@media (prefers-reduced-motion: no-preference) { .wp-block-gallery.ca-mosaique > figure:hover img { transform: scale(1.04); } }
@media (max-width: 48rem) {
	.wp-block-gallery.ca-mosaique { grid-template-columns: 1fr 1fr; grid-auto-rows: 11rem; }
	.wp-block-gallery.ca-mosaique > figure:nth-child(1) { grid-row: span 1; }
}
@media (max-width: 30rem) {
	.wp-block-gallery.ca-mosaique { grid-template-columns: 1fr; grid-auto-rows: auto; }
	.wp-block-gallery.ca-mosaique > figure:is(:nth-child(1), :nth-child(4), :nth-child(7)) { grid-column: auto; }
	.wp-block-gallery.ca-mosaique > figure.wp-block-image { height: auto; }
	.wp-block-gallery.ca-mosaique > figure.wp-block-image img { height: 14rem !important; }
	.wp-block-gallery.ca-mosaique > figure.wp-block-image figcaption { position: static; border-radius: 0; }
}

.ca-bandeau-photo.wp-block-media-text { background: var(--ca-bleu-fonce); color: var(--ca-blanc); }
.ca-bandeau-photo :where(h2, p) { color: var(--ca-blanc); }
.ca-bandeau-photo .wp-block-media-text__content { padding: clamp(1.5rem, 4vw, 3.5rem); }
.ca-bandeau-photo .wp-block-media-text__media { align-self: stretch; }
.ca-bandeau-photo .wp-block-media-text__media img { height: 100%; min-height: 20rem; object-fit: cover; }
.ca-bandeau-photo .ca-engager { grid-template-columns: 1fr; gap: 0.6rem; }
.ca-bandeau-photo .ca-engager a { padding: 0.8rem 1rem; }
@media print {
	.ca-hero-photo .wp-block-cover__image-background, .ca-hero-photo .wp-block-cover__background, .ca-mosaique, .ca-bandeau-photo .wp-block-media-text__media { display: none !important; }
	.ca-hero-photo :where(h1, p), .ca-bandeau-photo :where(h2, p) { color: #000 !important; }
	.ca-hero-photo.wp-block-cover, .ca-bandeau-photo { background: none !important; min-height: 0 !important; }
}
.wp-block-gallery.ca-mosaique > figure.wp-block-image::before { display: none !important; }
/* V0.15.1 : texte de l'ouverture aligné sur le logo de l'en-tête, même si la position « centre gauche » est choisie
   dans l'éditeur (la règle de WordPress, plus forte, réduisait le conteneur et le recentrait). */
.wp-block-cover.ca-hero-photo.has-custom-content-position .wp-block-cover__inner-container { width: 100% !important; }

/* V0.15.1 — Bandeau photo des pages principales (décisions du 31/10/2026). Modèle « Page avec bandeau photo » :
   la page commence par un bloc Couverture (photo et point de cadrage modifiables dans l'éditeur) contenant le fil
   d'Ariane, le titre et la phrase d'introduction sur une carte bleue (contraste du blanc ≥ 7:1, du jaune ≥ 4,5:1,
   quel que soit le pixel de la photo). Photo sans voile. Sur mobile : photo au-dessus, texte sur fond uni. */
.ca-bandeau-page.wp-block-cover { min-height: 22rem !important; padding: 0; }
.ca-bandeau-page .wp-block-cover__background { opacity: 0 !important; }
.ca-bandeau-page .wp-block-cover__inner-container { width: 100% !important; max-width: 76rem; margin-inline: auto !important; padding: 2.5rem clamp(1rem, 4vw, 2rem); box-sizing: border-box; }
.ca-bandeau-page .ca-bandeau-texte { margin-left: 0 !important; }
.ca-bandeau-page :where(h1, p) { color: var(--ca-blanc); }
.ca-bandeau-page h1 { font-size: clamp(1.9rem, 1.4rem + 1.8vw, 2.6rem); line-height: 1.15; margin: 0.25rem 0 0; }
.ca-bandeau-page .ca-surtitre { color: var(--ca-jaune); margin: 0; }
.ca-bandeau-page .ca-chapo { font-size: 1.1rem; line-height: 1.5; margin: 0.75rem 0 0; }
.ca-bandeau-page .ca-ariane { margin-bottom: 0.75rem; }
.ca-bandeau-page .ca-ariane, .ca-bandeau-page .ca-ariane a, .ca-bandeau-page .ca-ariane [aria-current] { color: var(--ca-blanc); }
.ca-bandeau-page .ca-ariane a:focus-visible { outline-color: var(--ca-jaune); }
.ca-bandeau-page .ca-credit-photo { margin: 1rem 0 0; }
@media (max-width: 48rem) {
	.ca-bandeau-page.wp-block-cover { flex-direction: column; align-items: stretch; min-height: 0 !important; background: var(--ca-bleu-fonce); }
	.ca-bandeau-page .wp-block-cover__image-background { position: relative; height: 45vw; max-height: 16rem; }
	.ca-bandeau-page .wp-block-cover__inner-container { padding-top: 1.5rem; padding-bottom: 1.75rem; }
	.ca-bandeau-page .ca-bandeau-texte { max-width: none; padding: 0; background: none; box-shadow: none; border-radius: 0; }
}
@media (forced-colors: active) {
	:is(.ca-hero-photo .ca-hero-texte, .ca-bandeau-page .ca-bandeau-texte) { background: Canvas; border: 2px solid CanvasText; }
	.ca-bandeau-page :where(h1, p, a, li, span) { color: CanvasText; }
}
@media print {
	.ca-bandeau-page .wp-block-cover__image-background { display: none !important; }
	.ca-bandeau-page.wp-block-cover { background: none !important; min-height: 0 !important; }
	:is(.ca-hero-photo .ca-hero-texte, .ca-bandeau-page .ca-bandeau-texte) { background: none !important; box-shadow: none !important; padding: 0 !important; }
	.ca-bandeau-page :where(h1, p, a, li, span) { color: #000 !important; }
}
/* V0.15.1 : sur grand écran, la carte s'aligne exactement sur le logo et le menu (même largeur de 76rem). */
@media (min-width: 80rem) {
	:is(.ca-hero-photo, .ca-bandeau-page) .wp-block-cover__inner-container { padding-inline: 0; }
}

/* ==========================================================================
   V0.15.2 — Accueil en deux colonnes (décision du 31/10/2026 au soir ; DEC-8 du contre-audit 360°, O-22).
   Bloc « Média et texte » : texte à gauche sur fond crème (encre sur crème 15:1, bleu foncé 8,9:1), photo entière à
   droite : rien ne recouvre les personnes. Point de cadrage réglable dans l'éditeur (« Recadrer pour remplir »).
   Sous 60rem : photo au-dessus, texte en dessous sur bleu foncé, comme auparavant sur téléphone.
   ========================================================================== */
.wp-block-media-text.ca-hero-duo { position: relative; margin-top: 0; background: var(--wp--preset--color--accent-5); color: var(--ca-encre); grid-template-columns: minmax(0, 1fr) 54% !important; min-height: min(78vh, 40rem); }
.ca-hero-duo > .wp-block-media-text__content { align-self: center; padding: clamp(2rem, 4vw, 3.5rem) clamp(1.5rem, 3.5vw, 3.5rem) clamp(2.5rem, 4.5vw, 4rem) max(clamp(1rem, 4vw, 2.5rem), calc((100vw - 76rem) / 2)); }
.ca-hero-duo > .wp-block-media-text__media { align-self: stretch; min-height: 22rem; }
.ca-hero-duo h1 { font-size: clamp(1.9rem, 1.2rem + 1.6vw, 2.65rem); line-height: 1.12; margin: 0.25rem 0 1rem; color: var(--ca-encre); }
.ca-hero-duo .ca-surtitre { color: var(--ca-bleu-fonce); }
.ca-hero-duo .ca-trait::after { content: ""; display: block; width: 4rem; height: 0.375rem; margin-top: 0.75rem; background: var(--ca-jaune); }
.ca-hero-duo p { font-size: 1.1rem; line-height: 1.55; }
.ca-hero-duo .ca-credit-photo { position: absolute; z-index: 1; right: 0.75rem; bottom: 0.5rem; margin: 0; padding: 0.15rem 0.5rem; background: rgba(20, 33, 61, 0.88); color: var(--ca-blanc); border-radius: 0.25rem; font-size: 0.8rem !important; line-height: 1.4; }
@media (max-width: 60rem) {
	.wp-block-media-text.ca-hero-duo { grid-template-columns: 100% !important; min-height: 0; background: var(--ca-bleu-fonce); }
	.ca-hero-duo > .wp-block-media-text__media { grid-column: 1; grid-row: 1; height: 58vw; max-height: 24rem; min-height: 0; }
	.ca-hero-duo > .wp-block-media-text__content { grid-column: 1; grid-row: 2; padding: 1.75rem clamp(1rem, 4vw, 2rem) 2.25rem; }
	.ca-hero-duo :is(h1, p) { color: var(--ca-blanc); }
	.ca-hero-duo .ca-surtitre { color: var(--ca-jaune); }
	.ca-hero-duo .wp-block-button__link { background: var(--ca-jaune); color: var(--ca-encre); }
	.ca-hero-duo .wp-block-button__link:hover { background: var(--ca-blanc); color: var(--ca-encre); }
	.ca-hero-duo .wp-block-button.is-style-outline .wp-block-button__link { background: transparent; color: var(--ca-blanc); border: 2px solid var(--ca-blanc); }
	.ca-hero-duo .wp-block-button.is-style-outline .wp-block-button__link:hover { background: var(--ca-blanc); color: var(--ca-encre); }
	.ca-hero-duo .ca-credit-photo { top: calc(min(58vw, 24rem) - 1.9rem); bottom: auto; }
}
@media (forced-colors: active) {
	.wp-block-media-text.ca-hero-duo { background: Canvas; }
	.ca-hero-duo :is(h1, p) { color: CanvasText; }
	.ca-hero-duo .ca-credit-photo { background: Canvas; color: CanvasText; border: 1px solid CanvasText; }
}
:root[data-ca-contraste="renforce"] .wp-block-media-text.ca-hero-duo { background: #FFFFFF; }
:root[data-ca-contraste="renforce"] .ca-hero-duo .ca-surtitre { color: #14213D; }
@media (max-width: 60rem) {
	:root[data-ca-contraste="renforce"] .wp-block-media-text.ca-hero-duo { background: #014A7A; }
	:root[data-ca-contraste="renforce"] .ca-hero-duo .ca-surtitre { color: #F8C143; }
}
@media print {
	.ca-hero-duo > .wp-block-media-text__media, .ca-hero-duo .ca-credit-photo { display: none !important; }
	.wp-block-media-text.ca-hero-duo { display: block; background: none !important; min-height: 0 !important; }
	.ca-hero-duo :is(h1, p) { color: #000 !important; }
}

/* 0.15.14 (GPT-AV-17) : pied de page entre 782 et 1099 pixels. Les 4 colonnes y sont trop étroites : des mots comme
   « Accompagnements » étaient coupés au milieu (lecture difficile, notamment pour les personnes dys). Deux colonnes
   par ligne à ces largeurs ; en dessous de 782 pixels, WordPress les empile déjà. */
@media (min-width: 782px) and (max-width: 1099px) {
	.ca-pied .wp-block-columns { flex-wrap: wrap !important; row-gap: 2rem; }
	.ca-pied .wp-block-columns > .wp-block-column { flex-basis: calc(50% - 2rem) !important; flex-grow: 1; }
}

/* ===== 0.15.16 — Page Partenaires : cartes et mur de logos (D-06/11-18, maquette B validée) =====
   Carte entière cliquable par un seul lien (nom de la structure) étendu à toute la carte : un seul arrêt au clavier.
   Les logos sont affichés tels que fournis par les structures (aucun fond ni couleur ajoutés). */
.ca-partenaires-cartes { margin-block: 1rem 0; }
.ca-partenaire { position: relative; background: var(--ca-blanc); border: 1px solid #D5D9E0; border-left: 6px solid var(--ca-jaune); border-radius: 12px; padding: 1.25rem; transition: box-shadow 0.15s ease; }
.ca-partenaire--reseau { border-left-color: var(--ca-bleu); }
.ca-partenaire:hover { box-shadow: 0 6px 18px rgba(20, 33, 61, 0.14); }
.ca-partenaire .wp-block-image { margin: 0; height: 6rem; display: flex; align-items: center; justify-content: flex-start; }
.ca-partenaire .wp-block-image img { width: auto; height: auto; max-width: 100%; max-height: 100%; object-fit: contain; }
.ca-partenaire h3 { font-size: 1.15rem; line-height: 1.35; margin: 0; }
.ca-partenaire p { margin: 0; font-size: 0.95rem; color: var(--wp--preset--color--accent-4); }
.ca-partenaire :is(h3, p) a { color: var(--ca-encre); text-decoration: underline; text-underline-offset: 3px; }
.ca-partenaire :is(h3, p) a::after { content: ""; position: absolute; inset: 0; border-radius: 12px; }
.ca-partenaire:focus-within { outline: 3px solid var(--ca-encre); outline-offset: 2px; box-shadow: 0 0 0 7px var(--ca-jaune); }
.ca-partenaire :is(h3, p) a:focus-visible { outline: none; box-shadow: none; }
.ca-partenaire--sans-logo { justify-content: center; }
.ca-partenaires-mur { background: var(--wp--preset--color--accent-5); border-radius: 16px; padding: clamp(1rem, 3vw, 1.5rem); margin-top: 1rem; }
.ca-partenaire--tuile { border: 0; border-radius: 12px; padding: 1rem 0.75rem 0.9rem; text-align: center; align-items: center; box-shadow: 0 1px 3px rgba(20, 33, 61, 0.12); }
.ca-partenaire--tuile .wp-block-image { height: 5rem; width: 100%; justify-content: center; }
.ca-partenaire--tuile p { color: var(--ca-encre); font-weight: 700; font-size: 1rem; }
.ca-partenaire--tuile.ca-partenaire--sans-logo { min-height: 9rem; }
.ca-partenaire--tuile.ca-partenaire--sans-logo p { font-size: 1.15rem; }
:root[data-ca-contraste="renforce"] .ca-partenaire { border: 2px solid #14213D; border-left-width: 6px; }
:root[data-ca-contraste="renforce"] .ca-partenaire--tuile { border-left-width: 2px; }
@media (forced-colors: active) { .ca-partenaire { border: 1px solid CanvasText; } .ca-partenaire:focus-within { outline: 3px solid Highlight; } }
@media (prefers-reduced-motion: reduce) { .ca-partenaire { transition: none; } }

/* ===== 0.15.16 — Page « Applications mobiles utiles » : une carte par application (D-06/11-19) =====
   Icône officielle de l'application, nom, éditeur, description, puis des boutons texte « App Store » et « Google Play ». */
.ca-applis { margin-block: 1rem 0; }
.ca-appli { background: var(--ca-blanc); border: 1px solid #D5D9E0; border-radius: 12px; padding: 1.25rem; }
.ca-appli__entete { gap: 1rem; }
.ca-appli__entete .wp-block-image { margin: 0; flex: 0 0 auto; }
.ca-appli__entete .wp-block-image img { display: block; width: 4rem; height: 4rem; object-fit: cover; border-radius: 22%; box-shadow: 0 0 0 1px rgba(20, 33, 61, 0.12); }
.ca-appli--site .ca-appli__entete .wp-block-image img { width: 6.5rem; height: 3.5rem; object-fit: contain; border-radius: 0; box-shadow: none; }
.ca-appli h3 { font-size: 1.15rem; line-height: 1.3; margin: 0; }
.ca-appli p { margin: 0; }
.ca-appli .ca-appli__editeur, .ca-appli .ca-appli__infos { font-size: 0.95rem; color: var(--wp--preset--color--accent-4); }
.ca-appli .ca-appli__liens { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: auto; padding-top: 0.25rem; }
.ca-appli__liens a { display: inline-flex; align-items: center; min-height: 44px; padding: 0.45rem 1rem; border: 2px solid var(--ca-encre); border-radius: 999px; background: var(--ca-blanc); color: var(--ca-encre); font-weight: 700; text-decoration: none; line-height: 1.3; }
.ca-appli__liens a:hover { background: var(--ca-encre); color: var(--ca-blanc); }
:root[data-ca-contraste="renforce"] .ca-appli { border: 2px solid #14213D; }
@media (forced-colors: active) { .ca-appli { border: 1px solid CanvasText; } .ca-appli__liens a { border-color: LinkText; } }
.ca-partenaire__plus { display: inline-block; margin-top: 0.15rem; font-weight: 400; font-size: 0.9rem; color: var(--wp--preset--color--accent-4); }

/* V0.16.0 : catalogue des applications et outils (une fiche par outil), filtres sans JavaScript, agenda. */
.ca-outils-filtres fieldset { border: 1px solid #C9CED6; border-radius: var(--ca-rayon); padding: 1rem 1.25rem; margin: 1rem 0 1.5rem; background: var(--wp--preset--color--accent-5); }
.ca-outils-filtres legend { font-weight: 700; padding: 0 0.25rem; }
.ca-outils-filtres__champs { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr)); gap: 1rem; }
.ca-outils-filtres__champs p { margin: 0; display: flex; flex-direction: column; gap: 0.35rem; }
.ca-outils-filtres label { font-weight: 700; }
.ca-outils-filtres select { min-height: 44px; max-width: 100%; padding: 0.4rem 0.6rem; border: 2px solid var(--ca-encre); border-radius: 8px; background: var(--ca-blanc); color: var(--ca-encre); font: inherit; }
.ca-outils-filtres__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; margin: 1rem 0 0; }
.ca-outils-filtres__actions .wp-element-button { min-height: 44px; }
.ca-outils-compte { scroll-margin-top: 1rem; }
.ca-outils-groupe { margin-block: 2rem; }
.ca-outils-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(18rem, 100%), 1fr)); gap: 1.5rem; margin-block: 1rem 0; }
.ca-outil { display: flex; flex-direction: column; gap: 0.75rem; }
.ca-outil .ca-appli__entete { display: flex; align-items: center; }
.ca-outil .ca-appli__titre { display: flex; flex-direction: column; gap: 0.25rem; }
.ca-outil :is(h3, h4, h5) { font-size: 1.15rem; line-height: 1.3; margin: 0; }
.ca-outil__infos { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.3rem; font-size: 0.95rem; }
.ca-outil__libelle { font-weight: 700; }
.ca-outil .ca-appli__magasins { display: flex; flex-wrap: wrap; gap: 0.5rem 0.75rem; }
.ca-outil__badge { display: inline-block; line-height: 0; }
.ca-outil__badge img { height: 44px; width: auto; }
.ca-outil__fiche { margin-top: auto !important; }
.ca-fiche-outil .ca-appli__magasins { display: flex; flex-wrap: wrap; gap: 0.5rem 0.75rem; margin: 0 0 1rem; }
.ca-fiche-outil .ca-appli__liens { display: flex; flex-wrap: wrap; gap: 0.5rem; margin: 0 0 1rem; }
.ca-fiche-outil dd ul { margin: 0; padding-left: 1.2rem; }
.ca-agenda__liste { list-style: none; margin: 1rem 0; padding: 0; display: grid; gap: 1rem; }
.ca-agenda__element { border-left: 6px solid var(--ca-jaune); background: var(--ca-blanc); border-radius: 8px; padding: 0.75rem 1rem; box-shadow: 0 0 0 1px #D5D9E0; }
.ca-agenda__element--modifie { border-left-color: var(--wp--preset--color--accent-4); }
.ca-agenda__quand { margin: 0; font-weight: 700; }
.ca-agenda__etat { display: inline-block; margin-left: 0.5rem; padding: 0 0.5rem; border: 2px solid var(--ca-encre); border-radius: 999px; font-size: 0.9rem; }
.ca-agenda__titre { font-size: 1.2rem; margin: 0.25rem 0; }
.ca-agenda__infos { margin: 0; color: var(--wp--preset--color--accent-4); }
:root[data-ca-contraste="renforce"] :where(.ca-outils-filtres fieldset, .ca-agenda__element) { border-color: #14213D; box-shadow: 0 0 0 2px #14213D; }
@media (forced-colors: active) { .ca-outils-filtres fieldset, .ca-agenda__element { border: 1px solid CanvasText; } .ca-outils-filtres select { border-color: CanvasText; } }
@media print { .ca-outils-filtres { display: none; } }

/* V0.16.1 (demande du 7/11 au soir) : badges des magasins (44 px, côte à côte dans une carte) sous la description ; fonction déjà installée signalée ;
   renvoi vers « Participer à un événement » quand ce choix est actif. */
.ca-outil .ca-appli__liens { margin-top: 0; padding-top: 0; }
.ca-outil__integre { align-self: flex-start; margin: 0; padding: 0.35rem 0.75rem; border-left: 5px solid var(--ca-jaune); border-radius: 4px; background: var(--wp--preset--color--accent-5); color: var(--ca-encre); font-weight: 700; font-size: 0.95rem; line-height: 1.4; } /* mention, pas un bouton : pas de cadre arrondi */
.ca-outils-renvoi { margin: 0.5rem 0 1rem; padding: 0.75rem 1rem; border-left: 6px solid var(--ca-jaune); background: var(--ca-blanc); border-radius: 8px; box-shadow: 0 0 0 1px #D5D9E0; }
:root[data-ca-contraste="renforce"] .ca-outils-renvoi { box-shadow: 0 0 0 2px #14213D; }
@media (forced-colors: active) { .ca-outil__integre, .ca-outils-renvoi { border: 1px solid CanvasText; } }
