/*
Theme Name: Bernizan 2026
Theme URI: https://armurerie-bernizan.com
Description: Thème enfant FSE d'Armurerie Bernizan. Reprend l'identité noir / or / noyer
             de l'ancien Storefront dans une base à blocs, sans surcharge PHP de gabarit.
Author: Patxi H
Template: twentytwentyfive
Version: 1.1.3
Requires at least: 6.7
Tested up to: 7.1
Requires PHP: 8.0
License: GNU General Public License v2 or later
Text Domain: bernizan-2026
*/

/* La mise en forme générale vit dans theme.json.
   Cette feuille ne porte que ce que les styles globaux ne savent pas exprimer. */

/* ---------------------------------------------------------------------------
   Index des rayons — remplace l'extension menu-image, qui affichait la
   vignette de la catégorie liée en 36x36.
   En en-tête : une rangée qui passe à la ligne. Dans la page : un index
   typographique sur trois colonnes (voir .bernizan-index).
   --------------------------------------------------------------------------- */

ul.bernizan-nav-cats {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.35rem var(--wp--preset--spacing--50);
	margin: 0;
	padding: 0;
	list-style: none;
}

ul.bernizan-nav-cats > li.bernizan-nav-cats__item {
	margin: 0;
	padding: 0;
	list-style: none;
}

.bernizan-nav-cats__link {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	text-decoration: none;
	color: inherit;
	line-height: 1.2;
	padding: 0.3rem 0;
}

.bernizan-nav-cats__link:hover,
.bernizan-nav-cats__link:focus-visible {
	color: var(--wp--preset--color--laiton-fonce);
	text-decoration: none;
}

.bernizan-nav-cats__link:focus-visible {
	outline: 2px solid var(--wp--preset--color--laiton);
	outline-offset: 3px;
}

img.bernizan-nav-cats__img {
	/* Case plus large que haute : les pictos au rapport 2:1 (revolver,
	   pistolet) ne faisaient plus que 16 px de haut dans une case carrée,
	   alors que les pictos verticaux occupaient toute la hauteur. */
	width: 48px;
	height: 36px;
	max-width: 48px;
	object-fit: contain;
	flex: 0 0 auto;
	display: block;
}

/* Les rayons sans vignette réservent la place de l'icône sans rien dessiner :
   un cadre vide se lirait comme une image cassée, mais sans réserve les
   libellés se décalent et la rangée devient bancale. */
.bernizan-nav-cats__item--sans-image .bernizan-nav-cats__link::before {
	content: "";
	display: block;
	width: 48px;
	height: 36px;
	flex: 0 0 auto;
}

/* Variante « index » : trois colonnes réglées, un filet par rangée. */
.bernizan-index ul.bernizan-nav-cats {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0;
	border-top: 1px solid var(--wp--preset--color--contrast);
}

.bernizan-index ul.bernizan-nav-cats > li.bernizan-nav-cats__item {
	border-bottom: 1px solid var(--wp--preset--color--filet);
}

.bernizan-index .bernizan-nav-cats__link {
	display: flex;
	align-items: center;
	width: 100%;
	box-sizing: border-box;
	gap: 1.125rem;
	padding: 1rem 0;
	padding-right: var(--wp--preset--spacing--40);
	font-size: 1.0625rem;
	font-weight: 500;
}

.bernizan-index .bernizan-nav-cats__link > span {
	flex-grow: 1;
}

@media (max-width: 860px) {
	.bernizan-index ul.bernizan-nav-cats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 600px) {
	.bernizan-index ul.bernizan-nav-cats { grid-template-columns: 1fr; }

	/* 56 px suffisent pour la cible tactile ; le padding vertical hérité
	   portait la rangée à 93 px et étirait la section sur 1 400 px. */
	.bernizan-index .bernizan-nav-cats__link {
		min-height: 56px;
		align-items: center;
		padding-block: 0;
		gap: 0.875rem;
	}

	.bernizan-index img.bernizan-nav-cats__img,
	.bernizan-index .bernizan-nav-cats__item--sans-image .bernizan-nav-cats__link::before {
		width: 28px;
		height: 28px;
		max-width: 28px;
	}
}

/* ---------------------------------------------------------------------------
   Pied de page — horaires en deux colonnes, plan d'accès pleine hauteur.
   --------------------------------------------------------------------------- */

.bernizan-horaires p {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1.25rem;
	margin: 0;
}

.bernizan-horaires p span:first-child { color: var(--wp--preset--color--laiton); }
.bernizan-horaires p span:last-child { font-variant-numeric: tabular-nums; }

.bernizan-adresse { color: var(--wp--preset--color--laiton); }

iframe.bernizan-plan {
	display: block;
	width: 100%;
	min-height: 420px;
	height: 100%;
	border: 0;
}

@media (max-width: 780px) {
	iframe.bernizan-plan { min-height: 260px; }
}

/* ---------------------------------------------------------------------------
   Disponibilité produit — reprend les couleurs de woo-custom-stock-status.
   --------------------------------------------------------------------------- */

.stock.in-stock,
.stock.available-on-backorder {
	color: #77a464;
}

.stock.bernizan-stock-nous-consulter {
	color: #ff0000;
	font-weight: 600;
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		transition-duration: 0.01ms !important;
	}
}

/* ---------------------------------------------------------------------------
   Grille produits — les visuels du catalogue ont des proportions très
   variables (fiches en boutique, fonds studio, photos d'atelier). Sans
   cadrage commun, les titres, prix et boutons ne s'alignent plus d'une
   carte à l'autre.
   --------------------------------------------------------------------------- */

li.wc-block-product {
	display: flex;
	flex-direction: column;
}

li.wc-block-product .wc-block-components-product-image {
	aspect-ratio: 4 / 3;
	overflow: hidden;
	position: relative;
	margin: 0 0 var(--wp--preset--spacing--30);
	/* Blanc : la plupart des visuels produits sont pris sur fond blanc. */
	background: var(--wp--preset--color--blanc);
	border: 1px solid var(--wp--preset--color--filet);
}

li.wc-block-product .wc-block-components-product-image a,
li.wc-block-product .wc-block-components-product-image img {
	width: 100%;
	height: 100%;
	display: block;
}

li.wc-block-product .wc-block-components-product-image img {
	object-fit: contain;
	padding: var(--wp--preset--spacing--30);
	box-sizing: border-box;
	transition: transform 0.25s ease;
}

li.wc-block-product:hover .wc-block-components-product-image img {
	transform: scale(1.03);
}

/* Colle le bouton en bas de carte, quelle que soit la longueur du titre. */
li.wc-block-product .wp-block-button,
li.wc-block-product .wc-block-components-product-button {
	margin-top: auto;
}

li.wc-block-product .wc-block-components-product-title {
	text-wrap: balance;
}

/* ---------------------------------------------------------------------------
   Galerie produit — grille, sans carrousel.
   Dans un thème bloc il n'y a pas d'ancêtre .woocommerce div.product : la
   galerie vit dans .wp-block-woocommerce-product-image-gallery. C'est ce
   conteneur qu'il faut viser, pas la chaîne des thèmes classiques.
   --------------------------------------------------------------------------- */

.wp-block-woocommerce-product-image-gallery { position: relative; }

.wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__wrapper {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: var(--wp--preset--spacing--20);
	margin: 0;
	padding: 0;
}

.wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__image {
	margin: 0;
	padding: 0;
	aspect-ratio: 3 / 2;
	overflow: hidden;
	/* Blanc comme les cartes du catalogue : les prises de vue produits sont
	   sur fond blanc, un cadre beige laissait des bandes visibles. */
	background: var(--wp--preset--color--blanc);
	border: 1px solid var(--wp--preset--color--filet);
}

.wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__image:first-child {
	grid-column: 1 / -1;
}

.wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__image a {
	display: block;
	width: 100%;
	height: 100%;
}

.wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__image img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	box-shadow: none;
}

/* La photo principale est vue en entier ; seules les vignettes sont recadrées. */
.wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__image:first-child img {
	object-fit: contain;
}

.wp-block-woocommerce-product-image-gallery .woocommerce-product-gallery__trigger {
	position: absolute;
	top: var(--wp--preset--spacing--20);
	right: var(--wp--preset--spacing--20);
	z-index: 2;
}

/* woocommerce.css impose width:25% aux images de galerie à partir de la
   deuxième (héritage de la mise en page en flottants). Sur une grille, ces
   25 % s'appliquent à la cellule et réduisent la vignette au quart de sa
   place. Ce sélecteur passe devant, sans !important. */
.wp-block-woocommerce-product-image-gallery
	.woocommerce-product-gallery.images
	.woocommerce-product-gallery__wrapper
	.woocommerce-product-gallery__image:nth-child(n + 2) {
	width: auto;
	display: block;
}

/* ---------------------------------------------------------------------------
   Formulaire de contact — remplace le widget SiteOrigin.
   --------------------------------------------------------------------------- */

.bernizan-contact__form {
	display: flex;
	flex-direction: column;
	gap: var(--wp--preset--spacing--30);
	max-width: 34rem;
}

.bernizan-contact__champ {
	display: flex;
	flex-direction: column;
	gap: .35rem;
	margin: 0;
}

.bernizan-contact__champ label {
	font-weight: 600;
	font-size: var(--wp--preset--font-size--small);
}

.bernizan-contact__champ input,
.bernizan-contact__champ textarea {
	width: 100%;
	padding: .65rem .75rem;
	border: 1px solid var(--wp--preset--color--acier);
	border-radius: 2px;
	background: var(--wp--preset--color--base);
	color: var(--wp--preset--color--contrast);
	font: inherit;
}

.bernizan-contact__champ input:focus-visible,
.bernizan-contact__champ textarea:focus-visible {
	outline: 2px solid var(--wp--preset--color--laiton);
	outline-offset: 1px;
	border-color: var(--wp--preset--color--laiton);
}

/* Pot de miel : masqué à l'écran, hors du flux de tabulation. */
.bernizan-contact__pot-de-miel {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip-path: inset(50%);
	white-space: nowrap;
	margin: 0;
}

.bernizan-contact__actions { margin: 0; }

.bernizan-contact__avis {
	padding: .8rem 1rem;
	border-left: 3px solid;
	border-radius: 0 2px 2px 0;
	margin-bottom: var(--wp--preset--spacing--30);
	max-width: 34rem;
}

.bernizan-contact__avis--ok {
	border-color: #26604a;
	background: #e2efe9;
	color: #1c4636;
}

.bernizan-contact__avis--erreur {
	border-color: #99291b;
	background: #f7e7e4;
	color: #7a2115;
}

/* ---------------------------------------------------------------------------
   Logo — l'illustration porte une bande noire sur toute sa largeur, avec du
   lettrage blanc dessus : la rendre transparente effacerait ce blanc sur
   l'ivoire. La rangée d'en-tête est donc noire, et la bande s'y fond.
   --------------------------------------------------------------------------- */

.wp-block-site-logo img {
	display: block;
	max-width: 100%;
	height: auto;
}

/* ---------------------------------------------------------------------------
   Titres de produits — Karla, pas le Bodoni des titres éditoriaux.
   Le bloc post-title hérite sinon du style des intertitres.
   --------------------------------------------------------------------------- */

.wc-block-product-template .wp-block-post-title,
.wc-block-product-template .wp-block-post-title a,
.wc-block-grid__product-title {
	font-family: var(--wp--preset--font-family--karla);
	font-weight: 600;
	letter-spacing: 0;
	line-height: 1.35;
}

/* Le prix garde le Bodoni : c'est le chiffre qu'on lit en diagonale. */
.wc-block-components-product-price {
	font-family: var(--wp--preset--font-family--bodoni);
}

/* ---------------------------------------------------------------------------
   Cartes produits de la page d'accueil — bloc bernizan/produits.
   --------------------------------------------------------------------------- */

ul.bernizan-cartes {
	display: grid;
	grid-template-columns: repeat(var(--bernizan-colonnes, 3), minmax(0, 1fr));
	gap: var(--wp--preset--spacing--40);
	margin: 0;
	padding: 0;
	list-style: none;
}

li.bernizan-carte {
	display: flex;
	flex-direction: column;
	margin: 0;
	list-style: none;
}

.bernizan-carte__visuel {
	display: block;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	/* Blanc et non beige : la plupart des visuels produits sont des prises de
	   vue sur fond blanc, qui laissaient sinon des bandes latérales visibles. */
	background: var(--wp--preset--color--blanc);
	border: 1px solid var(--wp--preset--color--filet);
}

.bernizan-carte__visuel img,
.bernizan-carte__sans-image {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: contain;
	/* Le produit ne touche pas les bords du cadre : les prises de vue sont
	   cadrées au plus juste et se retrouvaient collées au filet. */
	padding: var(--wp--preset--spacing--30);
	box-sizing: border-box;
	transition: transform 0.25s ease;
}

li.bernizan-carte:hover .bernizan-carte__visuel img {
	transform: scale(1.03);
}

@media (prefers-reduced-motion: reduce) {
	.bernizan-carte__visuel img { transition: none; }
	li.bernizan-carte:hover .bernizan-carte__visuel img { transform: none; }
}

.bernizan-carte__texte {
	display: flex;
	flex-direction: column;
	gap: 0.45rem;
	padding-top: var(--wp--preset--spacing--30);
	flex-grow: 1;
}

.bernizan-carte__rayon {
	font-size: var(--wp--preset--font-size--micro);
	letter-spacing: 0.18em;
	text-transform: uppercase;
	font-weight: 700;
	color: var(--wp--preset--color--laiton-fonce);
}

.bernizan-carte__titre {
	margin: 0;
	font-family: var(--wp--preset--font-family--karla);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 600;
	line-height: 1.35;
	letter-spacing: 0;
	text-wrap: balance;
}

.bernizan-carte__titre a { color: inherit; text-decoration: none; }
.bernizan-carte__titre a:hover { color: var(--wp--preset--color--laiton-fonce); }

.bernizan-carte__prix {
	margin: 0;
	margin-top: auto;
	padding-top: 0.35rem;
	font-family: var(--wp--preset--font-family--bodoni);
	font-size: var(--wp--preset--font-size--large);
}

.bernizan-carte__prix del { color: var(--wp--preset--color--acier); font-size: 0.8em; }
.bernizan-carte__prix ins { text-decoration: none; }

.bernizan-carte__note {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--acier);
}

/* Sur fond sombre, la bande promotions inverse l'encre. */
.bernizan-promos .bernizan-carte__visuel { background: var(--wp--preset--color--blanc); border-color: transparent; }
.bernizan-promos .bernizan-carte__titre a { color: var(--wp--preset--color--creme); }
.bernizan-promos .bernizan-carte__titre a:hover { color: var(--wp--preset--color--laiton); }
.bernizan-promos .bernizan-carte__prix ins { color: var(--wp--preset--color--laiton); }
.bernizan-promos .bernizan-carte__prix del { color: #8a7454; }
.bernizan-promos .bernizan-carte__rayon { color: #8a7454; }

@media (max-width: 860px) {
	ul.bernizan-cartes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
	ul.bernizan-cartes { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------------------------
   Entêtes de section — titre à gauche, lien à droite, séparés de la grille
   par un filet. Sans lui, le sous-titre collait au titre et le bloc entier
   touchait les cartes.
   --------------------------------------------------------------------------- */

.bernizan-titre-section {
	align-items: baseline;
	column-gap: var(--wp--preset--spacing--50);
	row-gap: var(--wp--preset--spacing--20);
	padding-bottom: var(--wp--preset--spacing--30);
	margin-bottom: var(--wp--preset--spacing--50);
	border-bottom: 1px solid var(--wp--preset--color--filet);
}

.bernizan-titre-section p { margin: 0; }
.bernizan-titre-section h2 { margin: 0; }

/* Le sous-titre suit son titre de près, mais ne le touche pas. */
.bernizan-titre-section > .wp-block-group {
	display: flex;
	flex-direction: column;
	gap: 0.4rem;
	align-items: flex-start;
}

/* Sur la bande sombre, le filet passe au noyer. */
.bernizan-promos .bernizan-titre-section {
	border-bottom-color: var(--wp--preset--color--noyer);
}

.bernizan-surtitre {
	letter-spacing: 0.22em;
	text-transform: uppercase;
	font-weight: 600;
	margin-bottom: var(--wp--preset--spacing--30);
}

/* Héros : la photo remplit sa colonne. */
.bernizan-hero__visuel { min-height: 34rem; }
.bernizan-hero__image { margin: 0; height: 100%; }
.bernizan-hero__image img { width: 100%; height: 100%; object-fit: cover; display: block; }

@media (max-width: 780px) {
	.bernizan-hero__visuel { min-height: 0; }
	.bernizan-hero__image img { height: 19rem; }
}

/* Le compteur d'articles n'apparaît que dans la variante « index ». */
.bernizan-nav-cats__n { display: none; }

.bernizan-index .bernizan-nav-cats__n {
	/* Largeur fixe : les nombres s'alignent sur leur unité d'une rangée à
	   l'autre, au lieu d'être seulement calés à droite. */
	display: block;
	flex: 0 0 3.25rem;
	text-align: right;
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--laiton-fonce);
	font-variant-numeric: tabular-nums;
}

/* ---------------------------------------------------------------------------
   Petits écrans — l'en-tête tenait sur une largeur supérieure au viewport
   et coupait la navigation et le téléphone.
   --------------------------------------------------------------------------- */

@media (max-width: 700px) {
	/* Le bandeau utilitaire passe à la ligne au lieu de pousser la page. */
	.wp-block-group.has-bronze-background-color .wp-block-group {
		row-gap: 0.25rem;
	}

	ul.bernizan-nav-cats {
		gap: 0.25rem var(--wp--preset--spacing--40);
	}

	.bernizan-nav-cats__link { font-size: var(--wp--preset--font-size--small); }
	img.bernizan-nav-cats__img { width: 28px; height: 28px; max-width: 28px; }

	.bernizan-titre-section { row-gap: var(--wp--preset--spacing--20); }
}

@media (max-width: 480px) {
	.wp-block-site-logo img { max-width: 60vw; padding: 0.45rem 0.7rem; }
}

/* Rien ne doit dépasser la largeur du viewport : les longues références
   produit et les tableaux d'attributs sont les suspects habituels. */
.bernizan-carte__titre,
.bernizan-carte__rayon {
	overflow-wrap: anywhere;
}

/* ---------------------------------------------------------------------------
   Héros sur petit écran — le padding de colonne de 4 rem ne laissait que
   190 px de texte utile à 390 px de large, et le titre se coupait en
   milieu de mot.
   --------------------------------------------------------------------------- */

@media (max-width: 780px) {
	.bernizan-hero > .wp-block-column {
		padding-left: var(--wp--preset--spacing--30) !important;
		padding-right: var(--wp--preset--spacing--30) !important;
		padding-top: var(--wp--preset--spacing--60) !important;
		padding-bottom: var(--wp--preset--spacing--50) !important;
	}

	.bernizan-hero__visuel { padding: 0 !important; }

	/* Un titre ne se coupe jamais en milieu de mot : on préfère
	   qu'il déborde en hauteur. */
	.bernizan-hero h1 { hyphens: manual; overflow-wrap: normal; word-break: normal; }
}

@media (max-width: 480px) {
	.bernizan-hero .wp-block-buttons .wp-block-button { width: 100%; }
	.bernizan-hero .wp-block-button__link { display: block; text-align: center; }
}

/* ---------------------------------------------------------------------------
   Masthead — bandeau utilitaire et rangée du logo forment un seul bloc noir.
   --------------------------------------------------------------------------- */

.bernizan-masthead a { color: var(--wp--preset--color--creme); }
.bernizan-masthead a:hover { color: var(--wp--preset--color--laiton); }
.bernizan-masthead svg { fill: currentColor; }

.bernizan-masthead .wc-block-customer-account,
.bernizan-masthead .wc-block-mini-cart__button {
	color: var(--wp--preset--color--creme);
}

.bernizan-masthead .wc-block-mini-cart__badge {
	background: var(--wp--preset--color--laiton);
	color: var(--wp--preset--color--bronze);
	border-color: var(--wp--preset--color--laiton);
}

/* L'index des rayons garde son fond ivoire, avec un filet de séparation. */

/* Réserve à la bonne taille dans chaque contexte. */
@media (max-width: 700px) {
	.bernizan-nav-cats__item--sans-image .bernizan-nav-cats__link::before {
		width: 28px;
		height: 28px;
	}
}

/* ---------------------------------------------------------------------------
   Bannière — le logo occupe toute la largeur de section. Son illustration
   porte déjà une bande noire pleine largeur, qui se fond dans le fond du
   bloc : aucune couture visible.
   --------------------------------------------------------------------------- */

.bernizan-banniere { overflow: hidden; }

.bernizan-banniere .wp-block-site-logo,
.bernizan-banniere .wp-block-site-logo a {
	display: block;
	width: 100%;
	margin: 0;
}

.bernizan-banniere .wp-block-site-logo img {
	display: block;
	width: 100%;
	height: auto;
	max-width: none;
	/* Le fichier fait 1882x200 : au-delà, il se pixelliserait. */
	max-height: 168px;
	object-fit: contain;
	object-position: center;
}

/* La barre utilitaire coûte trois lignes sur un écran étroit pour un contenu
   secondaire : ses informations se retrouvent dans le méga-menu et le pied de
   page. On la retire sous 780px plutôt que de la laisser repousser le logo. */
@media (max-width: 780px) {
	.bernizan-barre-utile { display: none; }
}

@media (max-width: 900px) {
	.bernizan-banniere .wp-block-site-logo img { max-height: 108px; }
}

@media (max-width: 560px) {
	.bernizan-banniere .wp-block-site-logo img { max-height: 74px; }
}

/* ---------------------------------------------------------------------------
   Barre de navigation — burger à gauche, compte et panier à droite.
   --------------------------------------------------------------------------- */

.bernizan-barre-nav a { color: var(--wp--preset--color--creme); }
.bernizan-barre-nav a:hover { color: var(--wp--preset--color--laiton); }
.bernizan-barre-nav svg { fill: currentColor; }

.bernizan-barre-nav .wc-block-mini-cart__badge {
	background: var(--wp--preset--color--laiton);
	color: var(--wp--preset--color--bronze);
	border-color: var(--wp--preset--color--laiton);
}

/* ---------------------------------------------------------------------------
   Méga-menu.
   --------------------------------------------------------------------------- */

.bernizan-barre-nav { position: relative; }
.bernizan-mega { position: static; }

.bernizan-mega__bouton {
	display: inline-flex;
	align-items: center;
	gap: 0.75rem;
	min-height: 44px;
	padding: 0.35rem 0;
	background: none;
	border: 0;
	color: var(--wp--preset--color--creme);
	font-family: var(--wp--preset--font-family--karla);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	cursor: pointer;
}

.bernizan-mega__bouton:hover { color: var(--wp--preset--color--laiton); }

.bernizan-mega__bouton:focus-visible {
	outline: 2px solid var(--wp--preset--color--laiton);
	outline-offset: 4px;
}

.bernizan-mega__barres {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 4px;
	width: 22px;
	height: 16px;
}

.bernizan-mega__barres span {
	display: block;
	height: 2px;
	width: 100%;
	background: currentColor;
	transition: transform 0.18s ease, opacity 0.18s ease;
}

.bernizan-mega.est-ouvert .bernizan-mega__barres span:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.bernizan-mega.est-ouvert .bernizan-mega__barres span:nth-child(2) { opacity: 0; }
.bernizan-mega.est-ouvert .bernizan-mega__barres span:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

/* Le panneau occupe toute la largeur, sous la barre. */
.bernizan-mega__panneau {
	position: absolute;
	top: 100%;
	left: 0;
	right: 0;
	z-index: 40;
	background: var(--wp--preset--color--bronze);
	border-bottom: 1px solid var(--wp--preset--color--noyer);
	opacity: 0;
	transform: translateY(-8px);
	transition: opacity 0.18s ease, transform 0.18s ease;
}

.bernizan-mega.est-ouvert .bernizan-mega__panneau {
	opacity: 1;
	transform: translateY(0);
}

.bernizan-mega__interieur {
	display: grid;
	grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
	gap: var(--wp--preset--spacing--60);
	max-width: var(--wp--style--global--wide-size);
	margin: 0 auto;
	padding: var(--wp--preset--spacing--50) var(--wp--preset--spacing--50) var(--wp--preset--spacing--60);
}

.bernizan-mega__intitule {
	display: block;
	font-size: var(--wp--preset--font-size--micro);
	letter-spacing: 0.2em;
	text-transform: uppercase;
	font-weight: 700;
	color: var(--wp--preset--color--laiton);
	padding-bottom: var(--wp--preset--spacing--30);
}

.bernizan-mega__liste {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 0 var(--wp--preset--spacing--50);
	margin: 0;
	padding: 0;
	list-style: none;
	border-top: 1px solid var(--wp--preset--color--noyer);
}

.bernizan-mega__liste--simple { grid-template-columns: 1fr; }

.bernizan-mega__liste li {
	margin: 0;
	list-style: none;
	border-bottom: 1px solid #1c1610;
}

.bernizan-mega__liste a {
	display: flex;
	align-items: center;
	gap: 1rem;
	min-height: 52px;
	color: var(--wp--preset--color--creme);
	text-decoration: none;
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 500;
}

.bernizan-mega__liste a:hover .bernizan-mega__nom { color: var(--wp--preset--color--laiton); }
.bernizan-mega__nom { flex-grow: 1; }

.bernizan-mega__n {
	flex: 0 0 auto;
	font-size: var(--wp--preset--font-size--small);
	color: #6b5a3c;
	font-variant-numeric: tabular-nums;
}

.bernizan-mega__contact {
	padding-top: var(--wp--preset--spacing--50);
	color: #a8977c;
	font-size: var(--wp--preset--font-size--small);
}

.bernizan-mega__contact p { margin: 0 0 0.4rem; }
.bernizan-mega__contact a { color: var(--wp--preset--color--laiton); }
.bernizan-mega__horaire { color: #6b5a3c; }

@media (max-width: 900px) {
	.bernizan-mega__interieur { grid-template-columns: 1fr; gap: var(--wp--preset--spacing--50); }
	.bernizan-mega__liste { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
	.bernizan-mega__liste { grid-template-columns: 1fr; }
	.bernizan-mega__libelle { display: none; }
	.bernizan-mega__panneau { max-height: 78vh; overflow-y: auto; }
}

@media (prefers-reduced-motion: reduce) {
	.bernizan-mega__panneau,
	.bernizan-mega__barres span { transition: none; }
}

/* ---------------------------------------------------------------------------
   Catalogue — la grille WooCommerce des pages boutique et catégorie, alignée
   sur l'anatomie des cartes maison : cadre blanc, titre en Karla, prix en
   Bodoni.
   --------------------------------------------------------------------------- */

.bernizan-catalogue .wc-block-product-template {
	gap: var(--wp--preset--spacing--40);
}

.bernizan-catalogue li.wc-block-product {
	display: flex;
	flex-direction: column;
	gap: 0;
	border: 0;
	padding: 0;
	text-align: left;
}

.bernizan-catalogue .wp-block-post-title {
	margin: 0 0 0.35rem;
	font-family: var(--wp--preset--font-family--karla);
	font-size: var(--wp--preset--font-size--medium);
	font-weight: 600;
	line-height: 1.35;
	letter-spacing: 0;
	text-wrap: balance;
}

.bernizan-catalogue .wp-block-post-title a { color: inherit; text-decoration: none; }
.bernizan-catalogue .wp-block-post-title a:hover { color: var(--wp--preset--color--laiton-fonce); }

.bernizan-catalogue .wc-block-components-product-price {
	margin: auto 0 0;
	font-family: var(--wp--preset--font-family--bodoni);
	font-size: var(--wp--preset--font-size--large);
}

.bernizan-catalogue .wc-block-components-product-price del { color: var(--wp--preset--color--acier); font-size: 0.8em; }
.bernizan-catalogue .wc-block-components-product-price ins { text-decoration: none; }

/* Pastille « promo » : discrète, sur le coin du cadre. */
.bernizan-catalogue .wc-block-components-product-sale-badge {
	position: absolute;
	top: 0;
	right: 0;
	z-index: 2;
	background: var(--wp--preset--color--laiton);
	color: var(--wp--preset--color--contrast);
	border: 0;
	border-radius: 0;
	padding: 0.3rem 0.6rem;
	font-family: var(--wp--preset--font-family--karla);
	font-size: var(--wp--preset--font-size--micro);
	font-weight: 700;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}

/* Pagination et tri. */
.bernizan-catalogue .wp-block-query-pagination {
	margin-top: var(--wp--preset--spacing--60);
	gap: var(--wp--preset--spacing--30);
	font-size: var(--wp--preset--font-size--small);
}

.bernizan-catalogue .wp-block-query-pagination-numbers .page-numbers {
	padding: 0.4rem 0.7rem;
	border: 1px solid var(--wp--preset--color--filet);
	text-decoration: none;
}

.bernizan-catalogue .wp-block-query-pagination-numbers .page-numbers.current {
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--contrast);
}

.wc-block-catalog-sorting select,
.woocommerce-ordering select {
	font-family: var(--wp--preset--font-family--karla);
	font-size: var(--wp--preset--font-size--small);
	padding: 0.45rem 0.6rem;
	border: 1px solid var(--wp--preset--color--filet);
	background: var(--wp--preset--color--blanc);
	border-radius: 0;
}

.woocommerce-breadcrumb { color: var(--wp--preset--color--acier); }

@media (max-width: 860px) {
	.bernizan-catalogue .wc-block-product-template { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 560px) {
	.bernizan-catalogue .wc-block-product-template { grid-template-columns: 1fr; }
}

/* ---------------------------------------------------------------------------
   Fiche produit.
   --------------------------------------------------------------------------- */

.bernizan-fiche__rayon {
	margin: 0;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	font-weight: 700;
}

.bernizan-fiche__rayon a {
	color: var(--wp--preset--color--laiton-fonce);
	text-decoration: none;
}

.bernizan-fiche__rayon a:hover { color: var(--wp--preset--color--noyer); }

.bernizan-fiche__resume .wp-block-post-title {
	font-family: var(--wp--preset--font-family--bodoni);
	line-height: 1.05;
}

/* Le prix est le chiffre qu'on lit en diagonale : Bodoni, pas de gras. */
.bernizan-fiche__resume .wc-block-components-product-price {
	display: block;
	font-family: var(--wp--preset--font-family--bodoni);
	font-weight: 400;
}

.bernizan-fiche__resume .wc-block-components-product-price del {
	color: var(--wp--preset--color--acier);
	font-size: 0.6em;
	margin-right: 0.5rem;
}

.bernizan-fiche__resume .wc-block-components-product-price ins { text-decoration: none; }

/* Disponibilité : reprend les couleurs de l'ancien woo-custom-stock-status. */
.bernizan-fiche__resume .wc-block-components-product-stock-indicator {
	font-weight: 600;
}

.bernizan-fiche__resume .wc-block-components-product-stock-indicator--in-stock { color: #77a464; }
.bernizan-fiche__resume .wc-block-components-product-stock-indicator--out-of-stock { color: #ff0000; }

/* Formulaire d'ajout au panier. */
.bernizan-fiche__resume form.cart {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: var(--wp--preset--spacing--30);
	margin: 0;
}

.bernizan-fiche__resume form.cart .quantity input[type="number"] {
	width: 5rem;
	height: 100%;
	min-height: 3rem;
	padding: 0.5rem 0.6rem;
	border: 1px solid var(--wp--preset--color--contrast);
	background: var(--wp--preset--color--blanc);
	font: inherit;
	text-align: center;
	border-radius: 0;
}

.bernizan-fiche__resume form.cart button[type="submit"],
.bernizan-fiche__resume .single_add_to_cart_button {
	flex-grow: 1;
	min-height: 3rem;
	padding: 0.95rem 1.875rem;
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	border: 0;
	border-radius: 0;
	font-family: var(--wp--preset--font-family--karla);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	letter-spacing: 0.04em;
	cursor: pointer;
}

.bernizan-fiche__resume form.cart button[type="submit"]:hover,
.bernizan-fiche__resume .single_add_to_cart_button:hover {
	background: var(--wp--preset--color--noyer);
}

/* Références et rayons, en pied de colonne. */
.bernizan-fiche__meta {
	font-size: var(--wp--preset--font-size--small);
	color: var(--wp--preset--color--acier);
}

.bernizan-fiche__meta > * { margin: 0; }
.bernizan-fiche__meta a { color: var(--wp--preset--color--laiton-fonce); }

.bernizan-fiche__reassurance p { margin: 0; }
.bernizan-fiche__reassurance strong { color: var(--wp--preset--color--noyer); }

/* Onglets description / informations complémentaires. */
.bernizan-fiche__details .wc-tabs,
.bernizan-fiche__details ul.tabs {
	display: flex;
	flex-wrap: wrap;
	gap: var(--wp--preset--spacing--40);
	margin: 0 0 var(--wp--preset--spacing--50);
	padding: 0 0 var(--wp--preset--spacing--30);
	list-style: none;
	border-bottom: 1px solid var(--wp--preset--color--filet);
}

.bernizan-fiche__details .wc-tabs li,
.bernizan-fiche__details ul.tabs li { margin: 0; list-style: none; }

.bernizan-fiche__details .wc-tabs li a,
.bernizan-fiche__details ul.tabs li a {
	font-family: var(--wp--preset--font-family--karla);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--acier);
	text-decoration: none;
}

.bernizan-fiche__details .wc-tabs li.active a,
.bernizan-fiche__details ul.tabs li.active a { color: var(--wp--preset--color--contrast); }

.bernizan-fiche__details h2 {
	font-family: var(--wp--preset--font-family--bodoni);
	font-size: var(--wp--preset--font-size--x-large);
	font-weight: 400;
}

.bernizan-fiche__details table {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--wp--preset--font-size--small);
}

.bernizan-fiche__details table th,
.bernizan-fiche__details table td {
	padding: 0.65rem 0.85rem;
	border-bottom: 1px solid var(--wp--preset--color--filet);
	text-align: left;
	vertical-align: top;
}

.bernizan-fiche__details table th {
	font-weight: 600;
	width: 34%;
	color: var(--wp--preset--color--acier);
}

@media (max-width: 780px) {
	.bernizan-fiche__resume form.cart .quantity input[type="number"] { width: 4.5rem; }
}

/* ---------------------------------------------------------------------------
   Pages éditoriales — mentions, CGV, atelier, revendeurs.
   --------------------------------------------------------------------------- */

.bernizan-page h2 {
	margin-top: var(--wp--preset--spacing--60);
	font-size: var(--wp--preset--font-size--x-large);
}

.bernizan-page h3 {
	margin-top: var(--wp--preset--spacing--50);
	font-size: var(--wp--preset--font-size--large);
}

.bernizan-page p { line-height: 1.7; }

.bernizan-page table {
	width: 100%;
	border-collapse: collapse;
	font-size: var(--wp--preset--font-size--small);
}

.bernizan-page table th,
.bernizan-page table td {
	padding: 0.6rem 0.8rem;
	border-bottom: 1px solid var(--wp--preset--color--filet);
	text-align: left;
}

/* ---------------------------------------------------------------------------
   Recherche.
   --------------------------------------------------------------------------- */

.wp-block-search__input {
	padding: 0.8rem 1rem;
	border: 1px solid var(--wp--preset--color--contrast);
	border-radius: 0;
	background: var(--wp--preset--color--blanc);
	font: inherit;
}

.wp-block-search__button {
	padding: 0.8rem 1.5rem;
	border: 0;
	border-radius: 0;
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--karla);
	font-size: var(--wp--preset--font-size--small);
	font-weight: 600;
	letter-spacing: 0.04em;
}

.wp-block-search__button:hover { background: var(--wp--preset--color--noyer); }

/* ---------------------------------------------------------------------------
   Tunnel — panier et commande. Les blocs WooCommerce arrivent avec leurs
   arrondis et leur bleu par défaut ; on les remet dans la charte.
   --------------------------------------------------------------------------- */

.wp-block-woocommerce-cart,
.wp-block-woocommerce-checkout {
	font-family: var(--wp--preset--font-family--karla);
}

.wc-block-components-title,
.wp-block-woocommerce-cart h1,
.wp-block-woocommerce-checkout h1 {
	font-family: var(--wp--preset--font-family--bodoni);
	font-weight: 400;
	letter-spacing: -0.012em;
}

.wc-block-components-button:not(.is-link) {
	border-radius: 0;
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	font-family: var(--wp--preset--font-family--karla);
	font-weight: 600;
	letter-spacing: 0.04em;
}

.wc-block-components-button:not(.is-link):hover {
	background: var(--wp--preset--color--noyer);
	color: var(--wp--preset--color--base);
}

.wc-block-components-text-input input,
.wc-block-components-textarea,
.wc-block-components-combobox-control input,
.wc-block-components-select__select {
	border-radius: 0;
	border-color: var(--wp--preset--color--acier);
	background: var(--wp--preset--color--blanc);
}

.wc-block-components-text-input.is-active input:focus,
.wc-block-components-text-input input:focus {
	outline: 2px solid var(--wp--preset--color--laiton);
	outline-offset: 0;
}

.wc-block-components-panel,
.wc-block-components-totals-wrapper,
.wc-block-cart-items,
.wp-block-woocommerce-checkout-order-summary-block {
	border-color: var(--wp--preset--color--filet);
}

.wc-block-components-product-name {
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.wc-block-components-order-summary-item__image img,
.wc-block-cart-item__image img {
	border: 1px solid var(--wp--preset--color--filet);
	background: var(--wp--preset--color--blanc);
}

.wc-block-components-totals-footer-item .wc-block-components-totals-item__value {
	font-family: var(--wp--preset--font-family--bodoni);
	font-weight: 400;
}

.wc-block-components-radio-control__option--checked-option-highlighted,
.wc-block-components-radio-control-accordion-option--checked-option-highlighted {
	border-color: var(--wp--preset--color--laiton);
	box-shadow: 0 0 0 1px var(--wp--preset--color--laiton);
}

.wc-block-components-checkout-step__title {
	font-family: var(--wp--preset--font-family--bodoni);
	font-weight: 400;
}

/* Une gouttière entre les colonnes de l'index : sans elle, le chiffre d'une
   colonne touchait l'icône de la suivante. */
.bernizan-index ul.bernizan-nav-cats {
	column-gap: var(--wp--preset--spacing--50);
}

/* ---------------------------------------------------------------------------
   Empilement — l'en-tête passe au-dessus du contenu.
   La loupe de la galerie produit est posée par WooCommerce à z-index 99 ;
   le panneau du méga-menu, à 40, passait dessous. Plutôt que de surenchérir
   élément par élément, on hisse l'en-tête entier : tout ce qu'il contient
   couvre alors le contenu de la page.
   --------------------------------------------------------------------------- */

header.wp-block-group {
	position: relative;
	z-index: 100;
}

/* La visionneuse plein écran de WooCommerce (photoswipe) doit rester
   au-dessus de tout, en-tête compris. */
.pswp {
	z-index: 1500;
}
