/*
 Theme Name:   Woodmart Child
 Description:  Woodmart Child Theme
 Author:       XTemos
 Author URI:   http://xtemos.com
 Template:     woodmart
 Version:      1.0.0
 Text Domain:  woodmart
*/

/* ------------------------------------------------------------------
   Écran de chargement — grappe centrée dans l'anneau rotatif
   ------------------------------------------------------------------
   Woodmart affiche SOIT son anneau rotatif, SOIT l'image renseignée
   dans Réglages du thème > Preloader : jamais les deux. Le CSS de
   l'anneau n'est imprimé que si aucune image n'est définie
   (woodmart/inc/template-tags/template-tags.php, ligne 240).

   L'option image est donc laissée VIDE à dessein — la renseigner
   supprimerait l'animation. Le SVG est posé en fond du conteneur :
   l'anneau (::before) tourne, le fond reste immobile.

   Les styles du thème sont imprimés dans le <body>, donc après cette
   feuille. Les sélecteurs ci-dessous sont volontairement plus
   spécifiques pour l'emporter sans recourir à !important.
------------------------------------------------------------------ */

.wd-preloader .wd-preloader-img {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 68px;
	height: 68px;
	background-image: url("/wp-content/uploads/2026/08/wine-grape.svg");
	background-repeat: no-repeat;
	background-position: center;
	/* Dimensions explicites : le SVG n'a ni width ni height, seulement un
	   viewBox 32x40 — « auto » serait résolu différemment selon le
	   navigateur. 26x32.5 conserve le rapport d'origine. */
	background-size: 26px 32.5px;
}

.wd-preloader.color-scheme-dark .wd-preloader-img::before,
.wd-preloader.color-scheme-light .wd-preloader-img::before {
	width: 68px;
	height: 68px;
	/* Repli pour les navigateurs sans color-mix ; la seconde déclaration
	   prend le relais et suit la couleur primaire si elle change. */
	border-color: rgba(172, 68, 85, 0.2);
	border-color: color-mix(in srgb, var(--wd-primary-color, #ac4455) 20%, transparent);
	border-top-color: var(--wd-primary-color, #ac4455);
}

/* ------------------------------------------------------------------
   Mention sanitaire du popup de vérification d'âge
   ------------------------------------------------------------------
   Insérée par woodmart_child_age_verify_ajouter_mention() dans
   functions.php. Volontairement discrète : elle est obligatoire, pas
   promotionnelle, et ne doit pas concurrencer les deux boutons.

   La couleur suit celle du texte du popup en l'atténuant, pour rester
   lisible sur les deux jeux de couleurs (color-scheme-dark et -light)
   sans figer une valeur qui ne vaudrait que pour l'un des deux.
------------------------------------------------------------------ */

.wd-age-verify .wd-age-verify-mention {
	margin-top: 20px;
	margin-bottom: 0;
	font-size: 12px;
	line-height: 1.5;
	text-align: center;
	text-transform: uppercase;
	letter-spacing: 0.03em;
	opacity: 0.65;
}

/* ------------------------------------------------------------------
   Livraison et paiement — les radios deviennent des boutons
   ------------------------------------------------------------------
   Ajouté le 24 août 2026, sur le panier ET la page de commande : les
   deux pages impriment exactement le même balisage pour la livraison
   (`ul#shipping_method.woocommerce-shipping-methods`), une seule
   série de règles les couvre donc toutes les deux.

   Le natif aligne des boutons radio de quelques pixels, à droite dans
   une cellule de tableau, sans qu'aucun repère visuel ne signale
   l'option retenue. Chaque option devient ici un bouton pleine
   largeur ; la sélection est portée par un aplat de la couleur
   primaire du thème.

   Deux points qui ne sont pas du confort :

   - **Le radio n'est pas supprimé, seulement rendu invisible.** Un
     `display: none` le sortirait de la navigation au clavier et le
     tunnel deviendrait impraticable sans souris. Il reste dans le
     flux, en position absolue, et c'est le `<label>` — déjà lié par
     `for` — qui reçoit l'apparence et le clic.
   - **La coche double la couleur.** Signaler la sélection par la
     seule teinte laisse de côté ceux qui la distinguent mal.

   La couleur vient de `--wd-primary-color`, que Woodmart imprime dans
   sa feuille de réglages générée. Changer la couleur du thème suffit
   à changer celle des boutons ; le repli en dur ne sert que si cette
   feuille n'est pas chargée.

   Quand une seule méthode de livraison est disponible, WooCommerce
   imprime bien la liste et le libellé, mais remplace le bouton radio
   par un **champ caché** : il n'y a plus rien à choisir, la sélection
   est faite. Un champ caché n'étant jamais `:checked`, la règle de
   sélection ne s'appliquait pas et l'option restait blanche, sans
   coche — alors qu'elle est retenue. Le cas est traité plus bas, à
   part.
------------------------------------------------------------------ */

.woocommerce-checkout .wc_payment_methods,
.woocommerce-shipping-methods {
	display: flex;
	flex-direction: column;
	gap: 8px;
	margin: 0 0 5px;
	padding: 0;
	text-align: start;
	list-style: none;
}

.woocommerce-checkout .wc_payment_methods > li,
.woocommerce-shipping-methods > li {
	position: relative;
	margin: 0;
	padding: 0;
	list-style: none;
}

/* Invisible, mais toujours focusable au clavier. */
.woocommerce-checkout .wc_payment_methods > li > input.input-radio,
.woocommerce-shipping-methods > li > input.shipping_method {
	position: absolute;
	inset-inline-start: 0;
	top: 0;
	width: 1px;
	height: 1px;
	margin: 0;
	opacity: 0;
	pointer-events: none;
}

.woocommerce-checkout .wc_payment_methods > li > label,
.woocommerce-shipping-methods > li > label {
	display: flex;
	align-items: center;
	gap: 8px;
	width: 100%;
	margin: 0;
	padding: 15px 18px;
	font-size: 14px;
	font-weight: 700;
	line-height: 1.35;
	color: inherit;
	text-align: start;
	background-color: var(--bgcolor-white, #fff);
	border: 2px solid var(--brdcolor-gray-300, #dcdcdc);
	border-radius: var(--wd-brd-radius, 4px);
	cursor: pointer;
	transition: border-color .15s ease, background-color .15s ease, color .15s ease;
}

.woocommerce-checkout .wc_payment_methods > li > label:hover,
.woocommerce-shipping-methods > li > label:hover {
	border-color: var(--wd-primary-color, rgb(172, 68, 85));
}

.woocommerce-checkout .wc_payment_methods > li > input.input-radio:checked + label,
.woocommerce-shipping-methods > li > input.shipping_method:checked + label {
	color: #fff;
	background-color: var(--wd-primary-color, rgb(172, 68, 85));
	border-color: var(--wd-primary-color, rgb(172, 68, 85));
}

/* Le montant se détache à droite du libellé ; sur les paiements, il
   n'y en a pas, c'est la coche qui prend cette place. */
.woocommerce-shipping-methods > li > label .woocommerce-Price-amount {
	margin-inline-start: auto;
	font-weight: 700;
}

.woocommerce-checkout .wc_payment_methods > li > input.input-radio:checked + label::after,
.woocommerce-shipping-methods > li > input.shipping_method:checked + label::after {
	content: "\2713";
	font-size: 1.05em;
	line-height: 1;
}

.woocommerce-checkout .wc_payment_methods > li > input.input-radio:checked + label::after {
	margin-inline-start: auto;
}

/* Le prix garde la couleur du bouton une fois sélectionné : Woodmart
   le peint en couleur primaire, illisible sur un aplat primaire. */
.woocommerce-shipping-methods > li > input.shipping_method:checked + label .woocommerce-Price-amount,
.woocommerce-shipping-methods > li > input.shipping_method:checked + label .amount {
	color: inherit;
}

.woocommerce-checkout .wc_payment_methods > li > input.input-radio:focus-visible + label,
.woocommerce-shipping-methods > li > input.shipping_method:focus-visible + label {
	outline: 2px solid var(--wd-primary-color, rgb(172, 68, 85));
	outline-offset: 2px;
}

/* ------------------------------------------------------------------
   Méthode de livraison unique
   ------------------------------------------------------------------
   WooCommerce troque alors le bouton radio contre un champ caché.
   L'option EST retenue — elle est la seule — mais `:checked` ne peut
   pas la reconnaître : elle restait blanche et sans coche, donc lue
   comme non sélectionnée. On lui rend l'apparence de la sélection.

   Le curseur repasse en flèche : le libellé pointe un champ caché,
   cliquer dessus ne fait rien, et un curseur en main promettrait une
   action qui n'existe pas. Le survol ne change plus la bordure, pour
   la même raison.

   Le cas se rencontre sur toute destination que Planet Aura ne
   dessert pas : notre méthode ne renvoie aucun tarif, seul le retrait
   au domaine subsiste. Le popup d'alerte du plugin prévient par
   ailleurs le client que la livraison lui a été refusée — ici, on ne
   traite que l'apparence.
------------------------------------------------------------------ */

.woocommerce-shipping-methods > li > input.shipping_method[type="hidden"] + label {
	color: #fff;
	background-color: var(--wd-primary-color, rgb(172, 68, 85));
	border-color: var(--wd-primary-color, rgb(172, 68, 85));
	cursor: default;
}

.woocommerce-shipping-methods > li > input.shipping_method[type="hidden"] + label:hover {
	border-color: var(--wd-primary-color, rgb(172, 68, 85));
}

.woocommerce-shipping-methods > li > input.shipping_method[type="hidden"] + label::after {
	content: "\2713";
	margin-inline-start: auto;
	font-size: 1.05em;
	line-height: 1;
}

.woocommerce-shipping-methods > li > input.shipping_method[type="hidden"] + label .woocommerce-Price-amount,
.woocommerce-shipping-methods > li > input.shipping_method[type="hidden"] + label .amount {
	color: inherit;
}

/* Les logos de passerelle restent à leur taille, sans écraser le libellé. */
.woocommerce-checkout .wc_payment_methods > li > label img {
	max-height: 26px;
	width: auto;
}

.woocommerce-checkout .wc_payment_methods .payment_box {
	margin-top: 8px;
}

/* La cellule « Expédition » du récapitulatif est alignée à droite par
   le thème : les boutons y prendraient une largeur de texte. */
.woocommerce-checkout-review-order-table .woocommerce-shipping-methods,
.shop_table .woocommerce-shipping-methods {
	width: 100%;
}

@media (max-width: 480px) {
	.woocommerce-checkout .wc_payment_methods > li > label,
	.woocommerce-shipping-methods > li > label {
		padding: 13px 14px;
	}
}

/* ------------------------------------------------------------------
   Page « Le Domaine » — rangée de chiffres clés à cinq colonnes
   ------------------------------------------------------------------
   La rangée compte cinq repères depuis l'ajout de « 2026 certifié Bio »
   à côté de « 2019 certifié HVE ». WPBakery accepte bien width="1/5"
   dans le shortcode, mais wpb_translateColumnWidthToSpan() renvoie
   alors la classe littérale `vc_col-sm-1/5` — que ni js_composer.min.css
   ni le thème ne définissent (leur grille s'arrête à vc_col-sm-1..12).
   Sans la règle ci-dessous, les cinq colonnes retombent en pleine
   largeur et s'empilent sur le bureau.

   On cible la classe de rangée `dn-chiffres-cles` plutôt que la classe
   à barre oblique, qui demanderait un échappement CSS peu lisible.
   `content_placement="middle"` met la rangée en flex : la largeur seule
   ne suffit pas, il faut aussi fixer la base flex.
------------------------------------------------------------------ */

@media (min-width: 769px) {
	.dn-chiffres-cles > .wpb_column {
		flex: 0 0 20%;
		width: 20%;
		max-width: 20%;
	}
}

@media (max-width: 768px) {
	.dn-chiffres-cles > .wpb_column {
		flex: 0 0 100%;
		width: 100%;
		max-width: 100%;
	}
}

/* ------------------------------------------------------------------
   Bandeau de consentement aux cookies
   ------------------------------------------------------------------
   Une carte ancrée en bas à droite, pas un mur : la page reste lisible
   et navigable derrière, ce qui est la condition pour que « continuer
   sans se prononcer » soit réellement possible.

   Les deux boutons de premier niveau — refuser, accepter — partagent
   exactement le même style. C'est le point de conformité le plus
   souvent raté : un « refuser » plus terne qu'un « accepter » vaut
   consentement extorqué. Ne pas les différencier.

   Le widget de langue GTranslate est fixé en bas à gauche. Sur mobile,
   la carte occupe presque toute la largeur et le recouvrirait : elle
   est donc remontée au-dessus de lui sous 576 px.
------------------------------------------------------------------ */

.dn-cookies {
	position: fixed;
	z-index: 9998;
	inset-block-end: 20px;
	inset-inline-end: 20px;
	width: min(420px, calc(100vw - 40px));
	max-height: calc(100vh - 40px);
	overflow-y: auto;
	padding: 22px 24px;
	background: #fff;
	border-radius: 4px;
	box-shadow: 0 6px 34px rgba(0, 0, 0, 0.18);
	/* Décalage puis remise à zéro : la carte monte à l'ouverture. */
	transform: translateY(16px);
	opacity: 0;
	transition: opacity 0.25s ease, transform 0.25s ease;
}

.dn-cookies[hidden] {
	display: none;
}

.dn-cookies--visible {
	transform: translateY(0);
	opacity: 1;
}

.dn-cookies__titre {
	margin: 0 0 10px;
	font-size: 13px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	opacity: 0.7;
}

/* Le titre reçoit le focus quand le panneau est rouvert depuis le menu :
   l'anneau par défaut du navigateur y serait un contour parasite autour
   d'un texte non cliquable, mais le retirer sans rien mettre à la place
   priverait l'utilisateur au clavier de tout repère. */
.dn-cookies__titre:focus-visible {
	outline: 2px solid var(--wd-primary-color, rgb(172, 68, 85));
	outline-offset: 4px;
}

.dn-cookies__texte {
	margin: 0 0 16px;
	font-size: 14px;
	line-height: 1.6;
}

.dn-cookies__details {
	margin-bottom: 16px;
	padding: 16px 18px;
	background: #f7f5f0;
	border-radius: 4px;
}

.dn-cookies__categorie + .dn-cookies__categorie {
	margin-top: 14px;
	padding-top: 14px;
	border-top: 1px solid rgba(0, 0, 0, 0.07);
}

.dn-cookies__label {
	display: flex;
	align-items: center;
	gap: 8px;
	margin: 0;
	font-size: 14px;
	font-weight: 600;
	cursor: pointer;
}

.dn-cookies__label input[disabled] {
	cursor: default;
}

.dn-cookies__toujours {
	font-size: 12px;
	font-weight: 400;
	opacity: 0.6;
}

.dn-cookies__categorie-texte {
	margin: 6px 0 0;
	font-size: 13px;
	line-height: 1.5;
	opacity: 0.75;
}

.dn-cookies__actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
}

/* ------------------------------------------------------------------
   Les trois couleurs du domaine sur les trois boutons
   ------------------------------------------------------------------
   Blanc, rosé, rouge. Le point de vigilance est le couple
   refuser/accepter : ils gardent des dimensions, une typographie et
   une forme strictement identiques, et restent tous deux des aplats
   pleins en texte blanc. Seule la teinte change.

   Les contrastes sont tenus au-dessus du seuil AA (4,5:1 pour du
   texte de 13 px) : doré 5,0:1, grenat 9,4:1, rosé 5,0:1. Éclaircir
   l'un de ces fonds ferait tomber son libellé sous le seuil, et
   affaiblirait au passage le bouton concerné face à son voisin — ce
   qui, sur un bandeau de consentement, n'est pas qu'une question de
   lisibilité.
------------------------------------------------------------------ */

.dn-cookies__btn {
	flex: 1 1 auto;
	min-width: 130px;
	padding: 11px 18px;
	color: #fff;
	font-size: 13px;
	font-weight: 600;
	letter-spacing: 0.03em;
	text-transform: uppercase;
	border: 0;
	border-radius: 3px;
	cursor: pointer;
	transition: background-color 0.15s ease;
}

.dn-cookies__btn[hidden] {
	display: none;
}

/* Le survol fonce la teinte, il ne la délave pas.
   Une baisse d'opacité laisse passer le blanc de la carte au travers :
   le grenat vire au vieux rose et le doré au beige, exactement l'effet
   terne qu'on ne veut pas. Chaque variante a donc sa nuance foncée,
   qui garde la couleur du vin et gagne même en contraste. */

/* Le libellé reste blanc au survol et au focus.
   Sans cette déclaration, la règle générique du thème sur `button:hover`
   reprend la main et fait virer le texte au sombre sur un fond de vin —
   illisible. La couleur est donc redite explicitement pour les deux états.

   L'or et le rosé la redisent plus bas pour leur propre compte : leurs fonds
   sont clairs, et la question du contraste s'y pose autrement.

   L'anneau de focus est posé en sombre et non en `currentColor` : le texte
   des boutons est blanc, et un anneau blanc à 3 px du bord tomberait sur
   le fond blanc de la carte, donc invisible au clavier. */
.dn-cookies__btn:hover,
.dn-cookies__btn:focus,
.dn-cookies__btn:focus-visible,
.dn-cookies__btn:active {
	color: #fff;
}

.dn-cookies__btn:focus-visible {
	outline: 2px solid #242424;
	outline-offset: 3px;
}

/* Vin blanc — or clair. */
.dn-cookies__btn--blanc {
	background-color: #c7b68b;
}

.dn-cookies__btn--blanc:hover,
.dn-cookies__btn--blanc:focus-visible {
	background-color: #b8a26b;
}

/* Vin rouge — grenat. */
.dn-cookies__btn--rouge {
	background-color: #8a1538;
}

.dn-cookies__btn--rouge:hover,
.dn-cookies__btn--rouge:focus-visible {
	background-color: #6d0f2b;
}

/* Vin rosé — pleine largeur, sur sa propre ligne. Porté par « Personnaliser »
   puis par « Enregistrer mes choix », qui prend sa place au dépliage : même
   emplacement, même allure, l'un remplaçant l'autre sans que rien ne bouge.

   La ligne du dessous, jamais celle du dessus : le couple refuser/accepter
   doit rester lisible comme une paire, et un troisième pavé aligné à côté
   d'eux ferait lire trois options de même nature. */
.dn-cookies__btn--rose {
	flex: 1 0 100%;
	background-color: #da918a;
}

.dn-cookies__btn--rose:hover,
.dn-cookies__btn--rose:focus-visible {
	background-color: #cf7168;
}

/* Libellé blanc sur l'or et le rosé, comme sur les variantes sombres —
   uniformité de la barre, choix assumé du 31 août 2026.

   **Le contraste ne suit pas, et c'est écrit ici pour que personne ne le
   redécouvre par hasard.** Blanc sur #c7b68b donne 2,0:1, sur #da918a 2,5:1,
   contre les 4,5:1 attendus pour un texte de 13 px. Les libellés sont donc
   difficiles à lire pour une partie des visiteurs — sur un bandeau de
   consentement, où le refus doit rester aussi lisible que l'acceptation.

   Deux façons de rattraper le jour où on le voudra, et une seule marche :
   foncer les deux fonds jusqu'à ce que le blanc tienne (il faut descendre
   nettement, ces teintes-ci n'y arriveront pas), ou repasser le libellé en
   sombre — #242424 donnait 7,8:1 sur l'or et 6,2:1 sur le rosé. Une ombre
   portée ne compte pas : les règles d'accessibilité ne la prennent pas en
   compte.

   Les cinq états sont redits parce que la règle générique les couvre tous avec
   la même spécificité : n'en déclarer qu'un laisserait le thème reprendre la
   main au survol et au clavier. */
.dn-cookies__btn--blanc,
.dn-cookies__btn--blanc:hover,
.dn-cookies__btn--blanc:focus,
.dn-cookies__btn--blanc:focus-visible,
.dn-cookies__btn--blanc:active,
.dn-cookies__btn--rose,
.dn-cookies__btn--rose:hover,
.dn-cookies__btn--rose:focus,
.dn-cookies__btn--rose:focus-visible,
.dn-cookies__btn--rose:active {
	color: #fff;
}

@media (max-width: 575px) {
	.dn-cookies {
		inset-block-end: 84px;
		inset-inline-end: 12px;
		width: calc(100vw - 24px);
		max-height: calc(100vh - 104px);
		padding: 18px 20px;
	}
}

@media (prefers-reduced-motion: reduce) {
	.dn-cookies {
		transform: none;
		transition: opacity 0.15s ease;
	}
}
