/* ==================================================================
   CARTElib Child — surcouche design
   S'appuie sur la palette globale Astra (--ast-global-color-0 à 8)
   avec des valeurs de repli : le design suit automatiquement vos
   réglages Personnaliser > Global > Couleurs.
   ================================================================== */

:root {
	--cartelib-accent: var(--ast-global-color-0, #0a5bd3);
	--cartelib-accent-2: var(--ast-global-color-1, #063e93);
	--cartelib-text: var(--ast-global-color-2, #1a1f36);
	--cartelib-muted: var(--ast-global-color-3, #55607a);
	--cartelib-surface: var(--ast-global-color-5, #ffffff);
	--cartelib-bg-soft: var(--ast-global-color-4, #f4f7fc);
	--cartelib-ok: #0f8a4b;
	--cartelib-radius: 12px;
	--cartelib-shadow: 0 6px 24px rgba(16, 32, 74, 0.08);
}

/* ------------------------------------------------------------------
   Accessibilité : focus visible, lien d'évitement, motion réduite
   ------------------------------------------------------------------ */
:where(a, button, input, summary, [tabindex]):focus-visible {
	outline: 3px solid var(--cartelib-accent);
	outline-offset: 2px;
	border-radius: 4px;
}

.cartelib-skip-link {
	position: absolute;
	left: -9999px;
	z-index: 100000;
	padding: .75rem 1.25rem;
	background: var(--cartelib-accent);
	color: #fff;
	border-radius: 0 0 8px 0;
	text-decoration: none;
	font-weight: 600;
}
.cartelib-skip-link:focus {
	left: 0;
	top: 0;
}

@media (prefers-reduced-motion: reduce) {
	*, *::before, *::after {
		animation-duration: .01ms !important;
		transition-duration: .01ms !important;
		scroll-behavior: auto !important;
	}
}

/* ------------------------------------------------------------------
   Icônes SVG inline (cartelib_icon) — remplacent les émojis
   ------------------------------------------------------------------ */
.clh-icon {
	display: inline-block;
	vertical-align: -0.18em;
	flex: 0 0 auto;
}

/* ------------------------------------------------------------------
   Pleine largeur & anti « bande blanche »
   Technique fiable : sur les pages des modèles CARTElib (body.clh-page),
   les conteneurs Astra du CONTENU sont neutralisés (100 % de large,
   sans padding) — l'en-tête n'est pas touché. Les sections .clh-fullbleed
   occupent alors naturellement toute la largeur, sans hack 100vw
   (source de bandes blanches et de débordements selon la barre de
   défilement et la disposition Astra).
   ------------------------------------------------------------------ */
html, body {
	overflow-x: clip;
}
.clh-fullbleed {
	width: 100%;
}
/* Conteneur de CONTENU neutralisé (l'en-tête garde ses réglages). */
.clh-page .site,
.clh-page #page {
	max-width: 100% !important;
	width: 100% !important;
}
.clh-page .site-content .ast-container,
.clh-page .site-content .ast-container-inner,
.clh-page #content > .ast-container {
	max-width: 100% !important;
	width: 100% !important;
	padding-left: 0 !important;
	padding-right: 0 !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
	display: block !important;
}
.clh-page .site-content,
.clh-page .site-content #primary,
.clh-page .site-content .content-area,
.clh-page .entry-content,
.clh-page article.page {
	margin: 0 !important;
	padding: 0 !important;
	max-width: 100% !important;
	width: 100% !important;
	float: none !important;
}
/* Disposition Astra « Encadrée » (ast-separate-container) : supprime
   le cadre blanc, ses marges et son ombre sur les pages CARTElib. */
.clh-page.ast-separate-container .ast-article-single,
.clh-page.ast-separate-container .ast-article-post,
.clh-page.ast-separate-container #primary,
.clh-page.ast-separate-container .site-content > .ast-container {
	background: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
	padding: 0 !important;
	margin: 0 !important;
	max-width: 100% !important;
}

/* ------------------------------------------------------------------
   Barre de confiance globale (toutes les pages, sous l'en-tête)
   Doublon volontaire du CSS critique imprimé inline (inc/brands.php) :
   ceinture et bretelles contre tout cache périmé.
   ------------------------------------------------------------------ */
.clh-trustbar {
	position: relative;
	z-index: 60;
	isolation: isolate;
	background: #0b1b3f;
	color: #dbe6ff;
	font-size: .85rem;
	width: 100%;
}
.clh-trustbar ul {
	list-style: none !important;
	margin: 0 auto !important;
	padding: .55rem 1.25rem !important;
	max-width: 1180px;
	display: flex;
	flex-wrap: wrap;
	gap: .35rem 2rem;
	justify-content: center;
}
.clh-trustbar li {
	display: inline-flex !important;
	align-items: center;
	gap: .45rem;
	margin: 0 !important;
	padding: 0 !important;
	color: #dbe6ff;
	list-style: none !important;
}
.clh-trustbar li::before,
.clh-trustbar li::marker {
	content: none !important;
	display: none !important;
}
.clh-trustbar strong { color: #fff; }
.clh-trustbar .clh-icon { color: #7fa8f5; }
@media (max-width: 600px) {
	.clh-trustbar ul { justify-content: flex-start; gap: .3rem 1.25rem; }
}

/* ------------------------------------------------------------------
   Habillage des pages standards (À propos, légales, contact, blog)
   ------------------------------------------------------------------ */
.page .entry-content > h2,
.single-post .entry-content > h2 {
	margin-top: 2.25rem;
}
.page .entry-content a:not(.clh-btn):not(.button),
.single-post .entry-content a:not(.clh-btn):not(.button) {
	color: var(--cartelib-accent);
	text-decoration-thickness: 1.5px;
	text-underline-offset: 2px;
}

/* ------------------------------------------------------------------
   Bloc réassurance fiche produit (.cartelib-trust)
   ------------------------------------------------------------------ */
.cartelib-trust {
	list-style: none;
	margin: 1.25rem 0 0;
	padding: 1rem 1.25rem;
	background: var(--cartelib-bg-soft);
	border: 1px solid rgba(16, 32, 74, 0.08);
	border-radius: var(--cartelib-radius);
	display: grid;
	gap: .5rem;
}
.cartelib-trust li {
	display: flex;
	align-items: center;
	gap: .6rem;
	font-size: .95rem;
	color: var(--cartelib-text);
}
.cartelib-trust .clh-icon {
	color: var(--cartelib-accent);
}

/* ------------------------------------------------------------------
   TL;DR / L'essentiel (.cartelib-tldr) — bloc citable par les IA
   ------------------------------------------------------------------ */
.cartelib-tldr {
	margin: 0 0 2rem;
	padding: 1.25rem 1.5rem;
	background: linear-gradient(0deg, rgba(10, 91, 211, 0.05), rgba(10, 91, 211, 0.05));
	border-left: 4px solid var(--cartelib-accent);
	border-radius: 0 var(--cartelib-radius) var(--cartelib-radius) 0;
}
.cartelib-tldr__label {
	margin: 0 0 .35rem;
	font-size: .8rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--cartelib-accent);
}
.cartelib-tldr__body p:last-child {
	margin-bottom: 0;
}

/* ------------------------------------------------------------------
   Faits clés (.cartelib-key-facts)
   ------------------------------------------------------------------ */
.cartelib-key-facts {
	margin: 1.5rem 0;
	border: 1px solid rgba(16, 32, 74, 0.1);
	border-radius: var(--cartelib-radius);
	overflow: hidden;
}
.cartelib-key-facts__row {
	display: grid;
	grid-template-columns: minmax(110px, 160px) 1fr;
	gap: 1rem;
	padding: .8rem 1.1rem;
	background: var(--cartelib-surface);
}
.cartelib-key-facts__row:nth-child(even) {
	background: var(--cartelib-bg-soft);
}
.cartelib-key-facts dt {
	font-weight: 700;
	color: var(--cartelib-accent-2);
}
.cartelib-key-facts dd {
	margin: 0;
	color: var(--cartelib-text);
}
@media (max-width: 560px) {
	.cartelib-key-facts__row {
		grid-template-columns: 1fr;
		gap: .15rem;
	}
}

/* ------------------------------------------------------------------
   FAQ (.cartelib-faq) — <details> natifs, zéro JavaScript
   ------------------------------------------------------------------ */
.cartelib-faq {
	display: grid;
	gap: .75rem;
	margin: 1.5rem 0;
}
.cartelib-faq__item {
	background: var(--cartelib-surface);
	border: 1px solid rgba(16, 32, 74, 0.1);
	border-radius: var(--cartelib-radius);
	box-shadow: var(--cartelib-shadow);
	overflow: hidden;
}
.cartelib-faq__q {
	cursor: pointer;
	list-style: none;
	padding: 1rem 3rem 1rem 1.25rem;
	position: relative;
	user-select: none;
}
.cartelib-faq__q::-webkit-details-marker { display: none; }
.cartelib-faq__q h3 {
	display: inline;
	margin: 0;
	font-size: 1.05rem;
	line-height: 1.45;
	color: var(--cartelib-text);
}
.cartelib-faq__q::after {
	content: "+";
	position: absolute;
	right: 1.1rem;
	top: 50%;
	transform: translateY(-50%);
	font-size: 1.4rem;
	font-weight: 300;
	color: var(--cartelib-accent);
	transition: transform .2s ease;
}
.cartelib-faq__item[open] .cartelib-faq__q::after {
	transform: translateY(-50%) rotate(45deg);
}
.cartelib-faq__a {
	padding: 0 1.25rem 1.1rem;
	color: var(--cartelib-muted);
	line-height: 1.65;
}

/* ------------------------------------------------------------------
   Boutique : cartes produit plus « premium »
   ------------------------------------------------------------------ */
.woocommerce ul.products li.product {
	transition: transform .18s ease, box-shadow .18s ease;
	border-radius: var(--cartelib-radius);
}
.woocommerce ul.products li.product:hover {
	transform: translateY(-4px);
	box-shadow: var(--cartelib-shadow);
}
.woocommerce ul.products li.product .price {
	font-weight: 700;
	color: var(--cartelib-accent-2);
}
.woocommerce span.onsale {
	background: var(--cartelib-ok);
	border-radius: 999px;
}

/* Bouton d'achat : cible tactile confortable (min. 44 px) */
.woocommerce a.button,
.woocommerce button.button,
.woocommerce .single_add_to_cart_button {
	min-height: 44px;
	border-radius: 10px;
	font-weight: 600;
}

/* Rupture de stock lisible */
.woocommerce ul.products li.product .out-of-stock,
.woocommerce p.stock.out-of-stock {
	color: #b3261e;
	font-weight: 600;
}

/* ------------------------------------------------------------------
   Divers : images fluides, tableaux responsables
   ------------------------------------------------------------------ */
img { height: auto; max-width: 100%; }

.entry-content table {
	display: block;
	overflow-x: auto;
	max-width: 100%;
}
