/*!
Theme Name:   Kadence Child — Ipedis
Theme URI:    https://www.ipedis.com/
Template:     kadence
Author:       Ipedis
Author URI:   https://www.ipedis.com/
Description:  Thème enfant du thème Kadence pour la refonte du site Ipedis — socle neutre : accessibilité RGAA/WCAG 2.2, performance, sécurité, SEO. Aucune personnalisation visuelle avant intégration de la maquette.
Version:      1.3.7
Requires at least: 6.4
Requires PHP: 8.1
License:      GNU General Public License v3.0 (or later)
License URI:  https://www.gnu.org/licenses/gpl-3.0.html
Text Domain:  ipedis
*/

/* =============================================================================
 * SOCLE ACCESSIBILITÉ — 100 % neutre visuellement
 * -----------------------------------------------------------------------------
 * Aucune couleur, typo ou espacement "maison" ici : tout s'appuie sur les
 * variables globales Kadence (--global-palette1…9) qui seront définies dans
 * le Customizer à partir des tokens Figma. Ces règles héritent donc
 * automatiquement de la future charte, sans rien à réécrire.
 * ========================================================================== */

/* 1. Focus visible renforcé — WCAG 2.4.7 / 2.4.13.
 * :focus-visible : anneau au clavier uniquement, pas au clic souris.
 * currentColor en secours garantit un contraste correct quel que soit
 * le fond, avant même que la palette soit définie. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
	outline: 3px solid var(--global-palette1, currentColor);
	outline-offset: 2px;
}

/* 2. Respect de prefers-reduced-motion — WCAG 2.3.3.
 * Neutralise animations, transitions et défilement fluide pour les
 * personnes sensibles aux mouvements (troubles vestibulaires). */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}
}

/* 3. Texte réservé aux lecteurs d'écran — complément de la classe
 * native WordPress .screen-reader-text, utilisée par nos helpers PHP. */
.ipedis-sr-only {
	position: absolute !important;
	width: 1px;
	height: 1px;
	padding: 0;
	margin: -1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

/* 4. Lien d'évitement : garanti visible et au-dessus de tout à la prise
 * de focus. Couleurs héritées de la palette Kadence. */
.skip-link:focus,
.skip-link:focus-visible {
	z-index: 100000;
}

/* Note (WCAG 2.2 §2.4.11 Focus Not Obscured) : l'offset du header fixe est DÉJÀ géré, de façon
 * plus complète, par l'asset global `ipd-assets/global-head.css` — `html { scroll-padding-top }`
 * (195px avec bandeau webinaire / 123px sans), calibré selon bandeau, barre d'admin et breakpoint.
 * Ne PAS redéfinir scroll-padding-top ici : ce serait une règle concurrente et moins précise. */

/* =============================================================================
 * STYLES DU PROJET — NE RIEN AJOUTER AVANT LA MAQUETTE
 * -----------------------------------------------------------------------------
 * À l'arrivée des tokens Figma :
 *   1. Renseigner la palette globale Kadence (Personnaliser > Couleurs)
 *      et la typographie (Personnaliser > Typographie) — source de vérité.
 *   2. N'écrire ici QUE ce que le Customizer/les blocs ne couvrent pas,
 *      par composant, en petites sections commentées.
 * Rappels a11y à valider avec la maquette : contrastes >= 4.5:1,
 * cibles tactiles >= 44px, interlignage >= 1.5.
 * ========================================================================== */

/* =============================================================================
 * (RETIRÉ 2026-10-05) L'icône « lien nouvelle fenêtre » (.ipedis-newwin-ico) du
 * contenu d'article est supprimée : un système SITE-WIDE (.external-link /
 * .external-link__icon) pose déjà cette icône → on évite le DOUBLON.
 * ========================================================================== */

/* =============================================================================
 * Fil d'ariane article — une seule ligne + « … » AU-DESSUS de 768px (desktop /
 * tablette paysage) : seul le DERNIER élément (titre) se tronque s'il est trop long,
 * « Accueil » et « Blog » ne rétrécissent jamais. Troncature VISUELLE seulement (le
 * titre complet reste dans le DOM + le schema BreadcrumbList → aucun impact SEO/GEO).
 * En dessous de 768px (mobile/tablette portrait), la troncature est LEVÉE : le titre
 * passe à la ligne et reste lisible en entier à 320px (WCAG 1.4.10 Redistribution ;
 * voir la media query en fin de bloc).
 * (Complète la règle ol du Blog CSS ; spécificité supérieure pour primer.)
 * ========================================================================== */
.ipedis-breadcrumb ol {
	display: flex;
	flex-wrap: nowrap;
	align-items: center;
	overflow: hidden;
	min-width: 0;
}
.ipedis-breadcrumb ol > li {
	flex: 0 0 auto;   /* Accueil, Blog : taille fixe, pas de rétrécissement */
	min-width: 0;
	white-space: nowrap;
}
.ipedis-breadcrumb ol > li:last-child {
	flex: 0 1 auto;   /* le titre prend l'espace restant et peut rétrécir */
	min-width: 0;
	overflow: hidden;
}
/* Le dernier item contient le séparateur (span aria-hidden, taille fixe) + le
 * titre courant (seul élément tronqué en « … » s'il déborde). */
.ipedis-breadcrumb ol > li:last-child > .ipedis-breadcrumb__sep {
	flex: 0 0 auto;
}
.ipedis-breadcrumb ol > li:last-child > [aria-current="page"] {
	flex: 0 1 auto;
	display: block;
	max-width: 100%;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
/* ≤ 768px (mobile + tablette portrait) — priorité accessibilité (WCAG 1.4.10) :
 * le fil d'Ariane s'affiche en FLUX INLINE HORIZONTAL et le titre passe à la ligne
 * au ras de gauche (aucun texte tronqué à 320px). Au-dessus de 768px, la troncature
 * « … » sur une seule ligne reste en vigueur. */
@media (max-width: 768px) {
	.ipedis-breadcrumb ol { display: block; overflow: visible; }
	.ipedis-breadcrumb li { display: inline; margin: 0; }
	.ipedis-breadcrumb li > a,
	.ipedis-breadcrumb li > span { display: inline; }
	.ipedis-breadcrumb ol > li:last-child,
	.ipedis-breadcrumb ol > li:last-child > [aria-current="page"] {
		overflow: visible;
		text-overflow: clip;
		white-space: normal;
	}
}