/* =====================================================================
   Wineck — pages de boutique WooCommerce (panier, commande, compte, avis)
   et compléments des maquettes. Mêmes jetons de design que wineck.css.
   ===================================================================== */

/* --- utilitaires ajoutés ------------------------------------------- */
.w-skip:focus { position: static; width: auto; height: auto; clip: auto; display: inline-block; margin: 8px; padding: 10px 16px; background: var(--plum); color: #fff; border-radius: 999px; z-index: 999; }

/* --- recherche du menu (formulaire réel) ---------------------------- */
.w-search input[type="search"] { border: 0; background: transparent; outline: none; color: var(--ink); font-size: 14px; width: 100%; min-width: 0; }
.w-search input[type="search"]::placeholder { color: var(--muted); }

/* --- fiche produit : galerie, quantité, bouton ---------------------- */
.w-gallery__thumbs { display: flex; gap: 10px; margin-top: 12px; flex-wrap: wrap; }
.w-gallery__thumb { border: 1px solid var(--line); background: #fff; border-radius: 10px; padding: 0; overflow: hidden; cursor: pointer; width: 72px; }
.w-gallery__thumb:hover, .w-gallery__thumb.is-current { border-color: var(--brand); }
.w-btn--muted { opacity: .6; cursor: default; }
.w-btn--muted:hover { transform: none; background: transparent; color: var(--plum); }
.w-gallery__thumb img { width: 100%; height: auto; }

.w-pdp__desc { margin-top: 14px; color: var(--muted); }
.w-pdp__desc p { margin: 0 0 12px; }

.w-buy form.cart { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; margin: 0; }
.w-buy form.cart .quantity { display: inline-flex; align-items: center; border: 1.5px solid var(--line); border-radius: 999px; overflow: hidden; background: #fff; }
.w-buy form.cart .quantity input.qty { width: 62px; text-align: center; border: 0; padding: 12px 4px; font-weight: 700; background: transparent; }
.w-buy form.cart button[type="submit"],
.w-buy .single_add_to_cart_button {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	padding: 13px 22px; border-radius: 999px; font-weight: 700; font-size: 15px;
	border: 1.5px solid transparent; cursor: pointer; background: var(--brand); color: #fff;
	box-shadow: 0 8px 20px -8px rgba(172, 23, 128, .6); transition: background .2s, transform .2s;
}
.w-buy .single_add_to_cart_button:hover { background: var(--brand-dark); transform: translateY(-1px); }
.w-buy .single_add_to_cart_button.disabled,
.w-buy .single_add_to_cart_button[disabled] { opacity: .5; cursor: not-allowed; transform: none; }
.w-buy .stock.out-of-stock { color: var(--warn); font-weight: 700; }
.w-buy table.variations { width: 100%; border-collapse: collapse; margin-bottom: 8px; }
.w-buy table.variations th { text-align: left; font-weight: 700; font-size: 13px; padding: 6px 10px 6px 0; color: var(--plum); }
.w-buy table.variations td { padding: 6px 0; }
.w-buy table.variations select { width: 100%; padding: 11px 14px; border: 1.5px solid var(--line); border-radius: 12px; background: #fff; }
.w-buy .woocommerce-variation-price { margin: 8px 0; font-weight: 800; color: var(--plum); font-size: 20px; }
.w-buy .reset_variations { font-size: 13px; color: var(--muted); }

/* --- avis clients ---------------------------------------------------- */
.w-reviews { padding-top: 0; }
.w-reviews #reviews h2, .w-reviews .comment-reply-title { font-size: 26px; margin-bottom: 14px; }
.w-reviews .commentlist { list-style: none; padding: 0; margin: 0 0 24px; display: grid; gap: 14px; }
.w-reviews .commentlist li { background: var(--paper); border: 1px solid var(--line); border-radius: var(--radius); padding: 16px 18px; }
.w-reviews .comment-form { display: grid; gap: 12px; max-width: 640px; }
.w-reviews .comment-form input[type="text"],
.w-reviews .comment-form input[type="email"],
.w-reviews .comment-form textarea { width: 100%; padding: 12px 14px; border: 1.5px solid var(--line); border-radius: 12px; font: inherit; background: #fff; }
.w-reviews .comment-form .submit { justify-self: start; padding: 13px 22px; border-radius: 999px; border: 0; background: var(--brand); color: #fff; font-weight: 700; cursor: pointer; }
.w-reviews .stars a { color: var(--gold); text-decoration: none; margin-right: 2px; }

/* --- favoris --------------------------------------------------------- */
.w-card__wish.is-on { background: var(--brand); color: #fff; border-color: var(--brand); }
.w-card__wish.is-on svg { fill: currentColor; }
.w-wishlist { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; max-width: 640px; }
.w-wishlist li { display: flex; justify-content: space-between; align-items: center; gap: 12px; border: 1px solid var(--line); border-radius: 12px; padding: 12px 16px; background: #fff; }
.w-wishlist__rm { border: 0; background: transparent; font-size: 22px; line-height: 1; color: var(--muted); cursor: pointer; }
.w-wishlist__rm:hover { color: var(--warn); }

/* --- pages WooCommerce : structure commune --------------------------- */
/* Vertical padding only: the horizontal gutter comes from .w-wrap (the
   shorthand `padding: 34px 0 60px` used to erase it on every page). */
.w-page { padding-top: 34px; padding-bottom: 60px; }
.w-page__head { margin-bottom: 26px; }
.w-page__head h1 { font-size: clamp(30px, 4vw, 44px); }
.w-page__head p { color: var(--muted); max-width: 66ch; }
.w-prose { max-width: 74ch; color: var(--ink); }
.w-prose h2 { font-size: 26px; margin: 28px 0 10px; }
.w-prose h3 { font-size: 20px; margin: 22px 0 8px; }
.w-prose p, .w-prose li { color: var(--muted); }
.w-prose ul, .w-prose ol { padding-left: 20px; }
.w-prose a { color: var(--brand); text-decoration: underline; text-underline-offset: 3px; }
.w-prose table { width: 100%; border-collapse: collapse; margin: 18px 0; }
.w-prose th, .w-prose td { border: 1px solid var(--line); padding: 10px 12px; text-align: left; }
.w-prose th { background: var(--cream); color: var(--plum); }
.w-prose code { font-size: 13px; background: var(--cream); padding: 1px 6px; border-radius: 5px; color: var(--plum); }
/* Statutory boxes of the legal pages (D211-2 guarantees, R221-1 withdrawal
   form): set apart from the running text, as the Code requires an « encadré ». */
.w-prose .w-legal-box { margin: 16px 0 22px; padding: 18px 22px; border: 1px solid var(--line); border-left: 4px solid var(--brand); border-radius: 8px; background: var(--cream); }
.w-prose .w-legal-box p { color: var(--ink); margin: 0 0 10px; }
.w-prose .w-legal-box p:last-child { margin-bottom: 0; }

/* --- notices --------------------------------------------------------- */
.woocommerce-notices-wrapper { max-width: var(--max); margin: 0 auto; padding: 0 var(--gutter); }
.woocommerce-message, .woocommerce-info, .woocommerce-error {
	list-style: none; margin: 18px 0; padding: 14px 18px; border-radius: 12px;
	border: 1px solid var(--line); background: var(--cream); color: var(--ink); font-size: 15px;
	display: flex; flex-wrap: wrap; gap: 10px; align-items: center; justify-content: space-between;
}
.woocommerce-message { border-color: rgba(47,122,75,.35); background: rgba(47,122,75,.08); }
.woocommerce-error { border-color: rgba(179,38,30,.35); background: rgba(179,38,30,.08); }
.woocommerce-message .button, .woocommerce-info .button, .woocommerce-error .button { order: 2; }

/* --- boutons WooCommerce génériques ---------------------------------- */
.woocommerce .button, .wc-block-components-button, .woocommerce button.button, .woocommerce a.button, .woocommerce input.button {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	padding: 12px 20px; border-radius: 999px; font-weight: 700; font-size: 15px; line-height: 1.2;
	border: 1.5px solid var(--plum); background: transparent; color: var(--plum); cursor: pointer;
	text-decoration: none; transition: background .2s, color .2s;
}
.woocommerce .button:hover, .woocommerce a.button:hover, .woocommerce button.button:hover { background: var(--plum); color: #fff; }
.woocommerce .button.alt, .woocommerce button.button.alt, .woocommerce a.button.alt, .woocommerce input.button.alt,
.wc-block-components-button:not(.is-link) {
	background: var(--brand); border-color: var(--brand); color: #fff;
	box-shadow: 0 8px 20px -8px rgba(172, 23, 128, .6);
}
.woocommerce .button.alt:hover, .woocommerce button.button.alt:hover, .woocommerce a.button.alt:hover { background: var(--brand-dark); border-color: var(--brand-dark); color: #fff; }

/* --- panier ---------------------------------------------------------- */
.woocommerce-cart-form table.shop_table { width: 100%; border-collapse: collapse; background: #fff; border: 1px solid var(--line); border-radius: var(--radius); overflow: hidden; }
.woocommerce table.shop_table th { background: var(--cream); color: var(--plum); font-family: var(--font-display); font-size: 17px; text-align: left; padding: 14px 16px; }
.woocommerce table.shop_table td { padding: 14px 16px; border-top: 1px solid var(--line); vertical-align: middle; }
.woocommerce table.shop_table img { width: 64px; border-radius: 8px; }
.woocommerce .cart_totals table.shop_table { border: 1px solid var(--line); border-radius: var(--radius); }
.woocommerce .cart-collaterals, .woocommerce-cart .cart-collaterals { margin-top: 26px; display: grid; gap: 22px; }
.woocommerce .cart-collaterals .cart_totals { max-width: 480px; margin-left: auto; width: 100%; }
.woocommerce .quantity input.qty { width: 66px; padding: 10px; border: 1.5px solid var(--line); border-radius: 10px; text-align: center; }
.woocommerce .coupon input[type="text"] { padding: 12px 14px; border: 1.5px solid var(--line); border-radius: 999px; margin-right: 8px; }

/* Cart details (audit 03/10/2026): the bottle's name in the display face, a
   round 40 px "remove" target drawn as a cross (no bare « × » glyph), the
   shipping calculator as a visible link, no bullet in front of a lone
   shipping method. */
.woocommerce-cart-form table.shop_table td.product-name a { font-family: var(--font-display); font-size: 19px; font-weight: 600; color: var(--plum); line-height: 1.25; }
.woocommerce-cart-form table.shop_table td.product-name a:hover { color: var(--brand); }
.woocommerce-cart-form table.shop_table td.product-remove { width: 56px; }
.woocommerce-cart-form table.shop_table td.product-remove a.remove {
	display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px;
	border-radius: 50%; background: var(--cream); color: var(--plum); font-size: 0; line-height: 0; text-decoration: none;
	transition: background .2s, color .2s;
}
.woocommerce-cart-form table.shop_table td.product-remove a.remove::before {
	content: ""; width: 18px; height: 18px; background-color: currentColor;
	-webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6 6 18'/%3E%3C/svg%3E") center / 18px 18px no-repeat;
	mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M6 6l12 12M18 6 6 18'/%3E%3C/svg%3E") center / 18px 18px no-repeat;
}
.woocommerce-cart-form table.shop_table td.product-remove a.remove:hover,
.woocommerce-cart-form table.shop_table td.product-remove a.remove:focus-visible { background: rgba(179,38,30,.1); color: var(--warn); outline: none; }
.woocommerce a.shipping-calculator-button { color: var(--brand); text-decoration: underline; text-underline-offset: 3px; font-weight: 600; }
.woocommerce a.shipping-calculator-button:hover { color: var(--brand-dark); }
.woocommerce ul.woocommerce-shipping-methods, .woocommerce-checkout ul.woocommerce-shipping-methods { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.woocommerce ul.woocommerce-shipping-methods li { margin: 0; padding: 0; }
/* The label stays inline (a flex label would not wrap and widened the review
   table by 16 px at 320 px). */
.woocommerce ul.woocommerce-shipping-methods li label { display: inline; overflow-wrap: anywhere; }
.woocommerce ul.woocommerce-shipping-methods li input[type="radio"] { margin-right: 6px; vertical-align: -2px; }
/* Text links that looked like plain words: « Mot de passe perdu ? » (login),
   « Politique de confidentialité » (pro access form). */
.woocommerce-LostPassword a, .woocommerce-form-login .lost_password a,
.tarifs-pro-form a.privacy-policy-link, .tarifs-pro-form__legal a, .w-pro-form a {
	color: var(--brand); text-decoration: underline; text-underline-offset: 3px; font-weight: 600;
}
.woocommerce-LostPassword a:hover, .tarifs-pro-form a.privacy-policy-link:hover, .w-pro-form a:hover { color: var(--brand-dark); }

/* --- commande / paiement --------------------------------------------- */
.woocommerce form .form-row { display: grid; gap: 6px; margin-bottom: 14px; }
.woocommerce form .form-row label { font-weight: 600; font-size: 14px; color: var(--plum); }
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select,
.woocommerce .select2-container .select2-selection--single {
	width: 100%; padding: 12px 14px; border: 1.5px solid var(--line); border-radius: 12px; font: inherit; background: #fff; height: auto;
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row textarea:focus,
.woocommerce form .form-row select:focus {
	border-color: var(--brand); box-shadow: 0 0 0 3px rgba(172, 23, 128, .15); outline: none;
}

:root {
	--w-eye: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7-10-7-10-7z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
	--w-eye-off: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-10-8-10-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 10 8 10 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24'/%3E%3Cline x1='2' y1='2' x2='22' y2='22'/%3E%3C/svg%3E");
}

/* --- champs mot de passe ---------------------------------------------
   WooCommerce ajoute en JavaScript <span class="password-input"> autour du
   champ et un <button class="show-password-input"> pour afficher le mot de
   passe. Le theme remplace la feuille de styles de WooCommerce (voir
   inc/assets.php), donc ce bouton n'existe visuellement que par ce bloc.
   Concerne : connexion, inscription, nouveau mot de passe, details du
   compte et creation de compte a la commande. ------------------------- */
.password-input { display: block; position: relative; }
.woocommerce form .form-row .password-input > input.input-text,
.password-input > input { width: 100%; padding-right: 52px; }
/* Les navigateurs Microsoft ajoutent leur propre oeil: un seul suffit. */
.password-input > input::-ms-reveal { display: none; }

.show-password-input {
	position: absolute; top: 50%; right: 7px; transform: translateY(-50%);
	display: inline-flex; align-items: center; justify-content: center;
	width: 38px; height: 38px; padding: 0; margin: 0;
	border: 0; border-radius: 10px; background: transparent;
	color: var(--muted); cursor: pointer;
	-webkit-appearance: none; appearance: none;
	transition: color .15s, background .15s;
}
.show-password-input::before {
	content: ""; width: 21px; height: 21px; background-color: currentColor;
	-webkit-mask: var(--w-eye) center / 21px 21px no-repeat;
	mask: var(--w-eye) center / 21px 21px no-repeat;
}
.show-password-input:hover { color: var(--brand); background: var(--brand-soft); }
.show-password-input:focus-visible { outline: 2px solid var(--brand); outline-offset: 2px; color: var(--brand); }
.show-password-input.display-password { color: var(--brand); }
.show-password-input.display-password::before {
	-webkit-mask-image: var(--w-eye-off);
	mask-image: var(--w-eye-off);
}

/* Indicateur de robustesse et conseil, affiches pendant la saisie. */
.woocommerce-password-strength {
	margin-top: 8px; padding: 9px 14px; border-radius: 10px;
	font-size: 13px; font-weight: 700; text-align: center;
	border: 1.5px solid var(--line); background: var(--cream); color: var(--muted);
}
.woocommerce-password-strength.short,
.woocommerce-password-strength.bad { border-color: #e7b7b3; background: #fdf1f0; color: var(--warn); }
.woocommerce-password-strength.good { border-color: var(--gold); background: #fbf5e9; color: #8a6a1f; }
.woocommerce-password-strength.strong { border-color: #a9d3ba; background: #eef7f1; color: var(--ok); }
.woocommerce-password-hint { display: block; margin-top: 6px; font-size: 13px; line-height: 1.5; color: var(--muted); }

/* Bloc « Changement de mot de passe » de la page Details du compte. */
.woocommerce-EditAccountForm fieldset {
	margin: 22px 0 18px; padding: 18px 20px 6px;
	border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper);
}
.woocommerce-EditAccountForm fieldset legend {
	padding: 0 8px; font-family: var(--font-display); font-size: 20px; font-weight: 600; color: var(--plum);
}

.woocommerce-checkout #payment { background: var(--cream); border-radius: var(--radius); padding: 18px; border: 1px solid var(--line); }
.woocommerce-checkout #payment ul.payment_methods { list-style: none; margin: 0 0 14px; padding: 0; display: grid; gap: 10px; }
.woocommerce-checkout #payment ul.payment_methods li { background: #fff; border: 1.5px solid var(--line); border-radius: 12px; padding: 14px 16px; }
.woocommerce-checkout #payment ul.payment_methods li label { font-weight: 700; color: var(--plum); display: inline-flex; align-items: center; gap: 10px; }
.woocommerce-checkout #payment div.payment_box { background: transparent; padding: 10px 0 0; font-size: 14px; color: var(--muted); }
.woocommerce-checkout #payment div.payment_box::before { display: none; }
.w-checkout__legal { font-size: 13px; color: var(--muted); margin: 10px 0 14px; line-height: 1.5; }
.woocommerce-checkout .place-order .button { width: 100%; }

/* --- mon compte ------------------------------------------------------ */
.woocommerce-account .woocommerce { display: grid; grid-template-columns: 240px minmax(0, 1fr); gap: 30px; align-items: start; }
.woocommerce-account .woocommerce-MyAccount-navigation ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.woocommerce-account .woocommerce-MyAccount-navigation a { display: block; padding: 11px 14px; border-radius: 10px; color: var(--ink); font-weight: 600; font-size: 15px; }
.woocommerce-account .woocommerce-MyAccount-navigation a:hover { background: var(--cream); }
.woocommerce-account .woocommerce-MyAccount-navigation .is-active a { background: var(--plum); color: #fff; }
.woocommerce-account .col2-set { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 24px; }
.woocommerce-account form.login, .woocommerce-account form.register { border: 1px solid var(--line); border-radius: var(--radius); padding: 22px; background: #fff; }

@media (max-width: 860px) {
	.woocommerce-account .woocommerce { grid-template-columns: minmax(0, 1fr); }
}

/* --- pagination ------------------------------------------------------ */
.w-pagination .page-numbers { display: inline-flex; align-items: center; justify-content: center; min-width: 40px; height: 40px; padding: 0 10px; border-radius: 10px; border: 1px solid var(--line); color: var(--ink); font-weight: 600; }
.w-pagination .page-numbers.current { background: var(--plum); border-color: var(--plum); color: #fff; }
.w-pagination .page-numbers.dots { border: 0; }

/* --- Wine-Box : la page dédiée porte un h1 là où la maquette avait un h2 --- */
.w-box h1 { color: #fff; font-size: clamp(32px, 4vw, 48px); }
.w-box .w-crumbs, .w-box .w-crumbs a { color: rgba(255, 255, 255, .7); }
.w-box .w-crumbs a:hover { color: #fff; }

/* --- Wine-Box : rappel d'abonnement sur la fiche --------------------- */
.wineck-box__per { font-size: .62em; font-weight: 500; letter-spacing: .02em; opacity: .75; }
.wineck-box__total { display: block; margin-top: 4px; font-size: .5em; font-weight: 500; letter-spacing: .02em; opacity: .7; }
.w-sub-note { margin-top: 12px; padding: 14px 16px; border-radius: 12px; background: var(--brand-soft); color: var(--plum); font-size: 14px; line-height: 1.55; }
.w-sub-note b { display: block; margin-bottom: 4px; }

/* --- espace pro ------------------------------------------------------ */
.w-pro-form { display: grid; gap: 12px; max-width: 560px; }
.w-pro-form input, .w-pro-form textarea, .w-pro-form select { width: 100%; padding: 12px 14px; border: 1.5px solid var(--line); border-radius: 12px; font: inherit; background: #fff; }
.w-pro-form label { font-weight: 600; font-size: 14px; color: var(--plum); }

/* --- franco de port ---------------------------------------------------- */
.wineck-franco {
	margin: 18px 0; padding: 12px 18px; border-radius: 12px;
	border: 1px solid var(--line); background: var(--cream);
	font-size: 15px; color: var(--ink);
}
.wineck-franco::before { content: "🚚"; margin-right: 8px; }
.wineck-franco--reached { border-color: rgba(47,122,75,.35); background: rgba(47,122,75,.08); }
.wineck-franco--reached::before { content: "✓"; color: #2f7a4b; font-weight: 700; }

/* --- panier sur telephone : le tableau devient une fiche par article ---
   Mesure du 21/09/2026 sur le site reel : le tableau a six colonnes de
   WooCommerce depassait de 142 px a 320 px, 102 a 360, 72 a 390 et 48 a 414 —
   la page se decalait sur le cote et le sous-total sortait de l'ecran. On ne
   touche pas au gabarit de WooCommerce (il se met a jour tout seul) : on
   s'appuie sur les attributs data-title que WooCommerce pose deja sur chaque
   cellule, qui remplacent les en-tetes de colonnes par des libelles en ligne.
   Tous les selecteurs gardent le prefixe complet `.woocommerce-cart-form
   table.shop_table` : sans lui, la regle generique des cellules (largeur
   100 %, display block) est plus specifique et gagne. ------------------ */
@media (max-width: 640px) {
	.woocommerce-cart-form table.shop_table,
	.woocommerce-cart-form table.shop_table tbody,
	.woocommerce-cart-form table.shop_table tr,
	.woocommerce-cart-form table.shop_table td { display: block; width: 100%; }
	.woocommerce-cart-form table.shop_table thead { display: none; }

	.woocommerce-cart-form table.shop_table tr.cart_item {
		position: relative;
		display: grid;
		grid-template-columns: 64px minmax(0, 1fr);
		grid-template-areas: "img name" "img price" "img qty" "img total";
		column-gap: 14px; row-gap: 8px;
		padding: 16px; border-top: 1px solid var(--line);
	}
	.woocommerce-cart-form table.shop_table tr.cart_item:first-child { border-top: 0; }
	.woocommerce-cart-form table.shop_table tr.cart_item td { padding: 0; border: 0; width: auto; }

	.woocommerce-cart-form table.shop_table td.product-thumbnail { grid-area: img; }
	.woocommerce-cart-form table.shop_table td.product-thumbnail img { width: 64px; }
	.woocommerce-cart-form table.shop_table tr.cart_item td.product-name { grid-area: name; padding-right: 40px; font-weight: 700; line-height: 1.35; }
	.woocommerce-cart-form table.shop_table td.product-price { grid-area: price; }
	.woocommerce-cart-form table.shop_table td.product-quantity { grid-area: qty; }
	.woocommerce-cart-form table.shop_table td.product-subtotal { grid-area: total; }

	/* Libelle a gauche, valeur a droite : remplace l'en-tete de colonne. */
	.woocommerce-cart-form table.shop_table td.product-price,
	.woocommerce-cart-form table.shop_table td.product-quantity,
	.woocommerce-cart-form table.shop_table td.product-subtotal {
		display: flex; align-items: center; justify-content: space-between; gap: 12px;
	}
	.woocommerce-cart-form table.shop_table td.product-price::before,
	.woocommerce-cart-form table.shop_table td.product-quantity::before,
	.woocommerce-cart-form table.shop_table td.product-subtotal::before {
		content: attr(data-title); font-size: 13px; font-weight: 600; color: var(--muted);
	}
	.woocommerce-cart-form table.shop_table td.product-subtotal { font-weight: 700; color: var(--plum); }
	.woocommerce-cart-form table.shop_table td.product-quantity .quantity { width: auto; }
	.woocommerce-cart-form table.shop_table td.product-quantity input.qty { width: 84px; }

	/* La croix de suppression se pose dans le coin de la fiche. */
	.woocommerce-cart-form table.shop_table td.product-remove {
		position: absolute; top: 10px; right: 10px; width: auto; padding: 0;
	}
	.woocommerce-cart-form table.shop_table td.product-remove a.remove {
		display: flex; align-items: center; justify-content: center;
		width: 40px; height: 40px; border-radius: 50%; background: var(--cream); text-decoration: none;
	}
	.woocommerce-cart-form table.shop_table tr.cart_item td.product-name { padding-right: 48px; }

	/* Code promo et mise a jour : pleine largeur, jamais cote a cote. */
	.woocommerce-cart-form table.shop_table td.actions { padding: 14px 16px; border-top: 1px solid var(--line); }
	.woocommerce-cart-form table.shop_table td.actions .coupon { display: flex; flex-wrap: wrap; gap: 8px; }
	.woocommerce-cart-form table.shop_table td.actions .coupon input[type="text"] { flex: 1 1 150px; min-width: 0; margin-right: 0; }
	.woocommerce-cart-form table.shop_table td.actions .coupon .button,
	.woocommerce-cart-form table.shop_table td.actions > .button { width: 100%; margin-top: 8px; }

	/* Totaux : les montants restent dans l'ecran. */
	.woocommerce .cart_totals table.shop_table th,
	.woocommerce .cart_totals table.shop_table td { padding: 12px 14px; }
	.woocommerce .cart_totals table.shop_table th { font-size: 15px; }
}

/* Cases a cocher (CGV a la commande, « se souvenir de moi », newsletter) :
   13 x 13 px au rendu par defaut du navigateur, trop petit pour un pouce.
   Mesure du 21/09/2026. */
.woocommerce form .form-row input[type="checkbox"],
.woocommerce-form__input-checkbox,
.wineck-checkbox input[type="checkbox"] {
	width: 18px; height: 18px; margin-right: 6px;
	vertical-align: -3px; accent-color: var(--brand); cursor: pointer;
}

/* --- abonnements (Abonnéo) : le module apporte la logique, le thème l'habille ---
   Aucune classe du module n'est renommée : s'il évolue, le style suit. */
.w-buy__actions--subscribe { display: block; }
.abonneo-standalone { width: 100%; }
.abonneo-form { display: grid; gap: 14px; margin: 0; }
.abonneo-field { display: grid; gap: 6px; margin: 0; }
.abonneo-label { font-size: 13px; font-weight: 700; color: var(--ink); }
.abonneo-select, .abonneo-input {
	width: 100%; padding: 12px 14px; border: 1.5px solid var(--line); border-radius: 12px;
	background: #fff; color: var(--ink); font: inherit; font-size: 15px;
}
.abonneo-select { appearance: none; -webkit-appearance: none; padding-right: 40px;
	/* Long plan labels ("Découverte Box — 3 mois · 19,90 € par mois"): the
	   field takes the whole width, the text is cut with an ellipsis rather
	   than overflowing the box (phone, audit 03/10/2026). */
	max-width: 100%; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%234a0c33' stroke-width='2'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 14px center; background-size: 16px; }
.abonneo-select:focus, .abonneo-input:focus { outline: 2px solid var(--brand); border-color: transparent; }
textarea.abonneo-input { resize: vertical; min-height: 80px; }
.abonneo-field--purpose { display: flex; gap: 8px; }
.abonneo-choice { flex: 1; display: flex; align-items: center; gap: 8px; padding: 11px 14px; border: 1.5px solid var(--line); border-radius: 12px; cursor: pointer; font-weight: 600; font-size: 14px; background: #fff; }
.abonneo-choice input { accent-color: var(--brand); margin: 0; }
.abonneo-choice:has(input:checked) { border-color: var(--brand); background: var(--brand-soft); color: var(--plum); }
.abonneo-check { display: flex; align-items: flex-start; gap: 10px; font-size: 14px; cursor: pointer; }
.abonneo-check input { accent-color: var(--brand); margin: 3px 0 0; }
.abonneo-gift { display: grid; gap: 12px; padding: 14px 16px; border-radius: 12px; background: var(--cream); }
.abonneo-summary { padding: 14px 16px; border-radius: 12px; background: var(--brand-soft); color: var(--plum); font-size: 14px; line-height: 1.55; }
.abonneo-summary__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.abonneo-summary__row { display: flex; justify-content: space-between; gap: 12px; }
/* The browser indents <dd> by 40 px: stacked on a phone, the values looked
   like a second, misaligned column (audit 03/10/2026). */
.abonneo-summary__row dt, .abonneo-summary__row dd { margin: 0; }
.abonneo-summary__row dt { flex: 0 0 auto; color: var(--muted); font-weight: 600; }
.abonneo-summary__row dd { text-align: right; }
.abonneo-summary__row b, .abonneo-summary__row strong { font-weight: 700; }
.abonneo-summary__note { margin: 6px 0 0; font-size: 13px; opacity: .85; }
.abonneo-note { margin: 0; font-size: 13px; color: var(--muted); line-height: 1.5; }
.abonneo-note--checkout { text-align: center; }
.abonneo-error { margin: 0; color: var(--warn); font-size: 14px; }
.abonneo-muted { color: var(--muted); }
.woocommerce .abonneo-submit, .woocommerce button.abonneo-submit, .abonneo-form .abonneo-submit {
	width: 100%; padding: 14px 22px; border-radius: 999px; border: 1.5px solid var(--brand);
	background: var(--brand); color: #fff; font-weight: 700; font-size: 15px; cursor: pointer;
	box-shadow: 0 8px 20px -8px rgba(172, 23, 128, .6); transition: background .2s, transform .2s;
}
.woocommerce .abonneo-submit:hover, .abonneo-form .abonneo-submit:hover { background: var(--brand-dark); border-color: var(--brand-dark); color: #fff; transform: translateY(-1px); }
.abonneo-badge { background: var(--brand-soft); color: var(--plum); }

/* Bouton « S'abonner » à côté du bouton d'achat (produit vendu des deux façons) */
.woocommerce .abonneo-subscribe-trigger, .woocommerce button.abonneo-subscribe-trigger { margin: 8px 0 0; width: 100%; }

/* Fenêtre du module (mode « panneau ») */
.abonneo-panel__dialog { border-radius: var(--radius); box-shadow: var(--shadow); font-family: var(--font-body); }
.abonneo-panel__title { font-family: var(--font-display); font-size: 28px; color: var(--plum); margin: 0 0 14px; padding-right: 32px; }
.abonneo-panel__close { color: var(--muted); }

/* Case de consentement au paiement (commande) */
.abonneo-consent { margin: 12px 0 16px; padding: 14px 16px; border-radius: 12px; background: var(--brand-soft); color: var(--plum); font-size: 14px; line-height: 1.5; }
.abonneo-consent label { display: flex; gap: 10px; align-items: flex-start; cursor: pointer; }
.abonneo-consent input { accent-color: var(--brand); margin: 3px 0 0; flex: none; }

/* Page de remerciement */
.abonneo-thankyou { margin: 20px 0; padding: 18px 20px; border-radius: var(--radius); border: 1px solid var(--line); background: var(--cream); }
.abonneo-thankyou h2, .abonneo-thankyou h3 { font-size: 22px; margin-bottom: 8px; }
.abonneo-thankyou__item { margin: 6px 0; }

/* Mon compte → Mes abonnements */
.abonneo-subscriptions { width: 100%; border-collapse: collapse; font-size: 15px; }
.abonneo-subscriptions th, .abonneo-subscriptions td { padding: 12px 10px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: middle; }
.abonneo-subscriptions th { font-size: 13px; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.abonneo-status { display: inline-block; padding: 3px 10px; border-radius: 999px; font-size: 13px; font-weight: 700; background: var(--cream); color: var(--ink); }
.abonneo-status--active, .abonneo-status--trialing { background: rgba(47,122,75,.12); color: var(--ok); }
.abonneo-status--past_due, .abonneo-status--suspended { background: rgba(179,38,30,.1); color: var(--warn); }
.abonneo-status--pending_cancellation, .abonneo-status--cancelled, .abonneo-status--expired, .abonneo-status--completed { background: var(--cream); color: var(--muted); }
.abonneo-detail__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 14px; margin: 16px 0; }
.abonneo-card { padding: 14px 16px; border: 1px solid var(--line); border-radius: 12px; background: #fff; }
.abonneo-card__label { display: block; font-size: 12px; text-transform: uppercase; letter-spacing: .08em; color: var(--muted); margin-bottom: 4px; }
.abonneo-card__value { font-weight: 700; color: var(--plum); }
.abonneo-actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 16px 0; }

/* Page d'enregistrement de carte (changement de moyen de paiement) et activation d'un cadeau */
.abonneo-card-setup, .abonneo-redeem { max-width: 560px; margin: 40px auto; padding: 0 var(--gutter); display: grid; gap: 14px; }
.abonneo-card-setup h1, .abonneo-redeem h1 { font-size: 32px; }
#abonneo-sumup-card { min-height: 320px; }

@media (max-width: 640px) {
	.abonneo-field--purpose { flex-direction: column; }
	.abonneo-panel__dialog { width: 100vw; max-height: 100vh; border-radius: 18px 18px 0 0; align-self: flex-end; }
}
.w-sticky-buy b small { font-size: .7em; font-weight: 500; opacity: .75; }
@media (max-width: 640px) {
	.abonneo-summary__row { flex-direction: column; gap: 2px; padding: 8px 0; border-bottom: 1px solid rgba(74, 12, 51, .12); }
	.abonneo-summary__row:last-child { border-bottom: 0; }
	.abonneo-summary__row dt { font-size: 12px; text-transform: uppercase; letter-spacing: .08em; }
	.abonneo-summary__row dd { text-align: left; }
	.abonneo-summary__row > :last-child { font-weight: 700; }
	.abonneo-select { font-size: 14px; }
}

/* 30/09/2026 — estate pages (/brands/<slug>/): Wineck's text and logo, then the bottles. */
.w-estate { display: grid; grid-template-columns: minmax(0, 180px) minmax(0, 1fr); gap: 32px; align-items: start; background: var(--cream); border-radius: var(--radius); padding: 28px; margin: 8px 0 32px; }
.w-estate__logo img { width: 100%; height: auto; border-radius: 12px; background: #fff; }
.w-estate__text { font-size: 16px; line-height: 1.7; max-width: 72ch; }
.w-estate__text p:first-child { margin-top: 0; }
.w-estate__wines { margin-bottom: 48px; }
@media (max-width: 640px) { .w-estate { grid-template-columns: minmax(0, 1fr); padding: 20px; gap: 18px; } .w-estate__logo { max-width: 140px; } }
/* 01/10/2026 — a page without logo (most estates): the text takes the whole block,
   in two columns on wide screens for a comfortable line length. */
.w-estate--solo { grid-template-columns: minmax(0, 1fr); }
.w-estate--solo .w-estate__text { max-width: none; columns: 2 340px; column-gap: 40px; }
.w-estate--solo .w-estate__text p { break-inside: avoid; }
.w-preview { background: #fff4d6; border: 1px solid #e8c766; color: #5b4300; border-radius: 10px; padding: 12px 16px; margin: 16px 0 0; font-size: 14px; }

/* 30/09/2026 — product page texts: summary under the title, Vincent's words in
   « Le mot du caviste », Pikali's text in « Description ». */
.w-pdp__lead { font-size: 17px; line-height: 1.6; color: var(--ink, #2a1f24); margin: 4px 0 18px; max-width: 62ch; }
.w-quote p { margin: 0 0 10px; }

/* Estate pictures (Studio IA › Domaines, 01/10/2026): logo on its plate (a
   light logo on a dark one), photos of the estate, credit to the producer. */
.w-logo { display: block; background: #fff; border-radius: 12px; padding: 14px; }
.w-logo img, .w-estate__logo .w-logo img { display: block; width: 100%; height: auto; background: transparent; border-radius: 0; }
.w-logo--light, .w-producer__mono--logo.w-logo--light { background: var(--plum); }
.w-estate__photos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 0 0 40px; }
.w-estate__photo { margin: 0; border-radius: var(--radius); overflow: hidden; background: var(--cream); aspect-ratio: 3 / 2; }
.w-estate__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.w-estate__photos--1 { grid-template-columns: minmax(0, 1fr); }
.w-estate__photos--1 .w-estate__photo { aspect-ratio: 21 / 9; }
.w-estate__photos--3 { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); }
.w-estate__photos--3 .w-estate__photo:first-child { grid-row: span 2; aspect-ratio: auto; }
.w-estate__credit { grid-column: 1 / -1; margin: -4px 0 0; font-size: 12px; color: var(--muted); }
.w-estate__credit a { color: inherit; }
.w-estate__title { font-size: clamp(24px, 3vw, 32px); margin: 0 0 18px; }
.w-preview__tag { font-family: var(--font-body); font-size: 13px; font-weight: 400; color: var(--muted); letter-spacing: 0; }
.w-producer__mono--logo { background: #fff; border: 1px solid var(--line); overflow: hidden; padding: 5px; }
.w-producer__mono--logo img { display: block; width: 100%; height: 100%; object-fit: contain; }
@media (max-width: 640px) {
	.w-estate__photos, .w-estate__photos--3 { grid-template-columns: minmax(0, 1fr); }
	.w-estate__photos--3 .w-estate__photo:first-child { grid-row: auto; aspect-ratio: 3 / 2; }
	.w-estate__photos--1 .w-estate__photo { aspect-ratio: 3 / 2; }
}

.w-estate-head { display: flex; align-items: center; justify-content: space-between; gap: 32px; }
.w-estate-head__logo { flex: 0 0 auto; width: 240px; }
.w-estate-head__logo .w-logo { padding: 16px 20px; box-shadow: 0 1px 0 var(--line); }
.w-estate-head__logo img { max-height: 120px; width: auto; max-width: 100%; margin: 0 auto; object-fit: contain; }
.w-estate--solo { margin-top: 24px; }
.w-prose a.w-producer { text-decoration: none; color: inherit; }
.w-producer .w-producer__mono { font-size: 24px; color: var(--brand); }
@media (max-width: 640px) {
	.w-estate-head { flex-direction: column-reverse; align-items: flex-start; gap: 16px; }
	.w-estate-head__logo { width: 170px; }
	.w-estate-head__logo img { max-height: 80px; }
}
.w-estate__photos { margin-top: 24px; }
.w-estate + .w-estate__photos { margin-top: 0; }
.w-estate__wines { margin-top: 32px; }

/* Estate story: photo / text alternating (Baptiste, 01/10/2026). */
.w-estory { display: grid; gap: 40px; margin: 24px 0 40px; }
.w-estory__row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 48px; align-items: center; }
.w-estory__row--flip .w-estory__photo { order: 2; }
.w-estory__photo { margin: 0; border-radius: var(--radius); overflow: hidden; background: var(--cream); aspect-ratio: 4 / 3; }
.w-estory__photo img { display: block; width: 100%; height: 100%; object-fit: cover; }
.w-estory__text h2, .w-estate__section h2 { font-size: clamp(24px, 2.6vw, 32px); margin: 0 0 12px; }
.w-estory__text h2::after, .w-estate__section h2::after { content: ""; display: block; width: 44px; height: 2px; background: var(--brand); margin-top: 12px; }
.w-estory__text p { font-size: 16.5px; line-height: 1.75; margin: 0 0 12px; }
.w-estory__text strong, .w-estate__text strong { color: var(--plum); font-weight: 700; }
.w-estory__text a, .w-estate__text a { color: var(--brand); font-weight: 600; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px; }
.w-estory__text a:hover, .w-estate__text a:hover { color: var(--plum); }
.w-estate__section { break-inside: avoid; margin-bottom: 18px; }
.w-estate__section p { margin: 0 0 10px; }
.w-estate--more { margin-top: 0; }
.w-estate__credit { margin: -24px 0 32px; }
@media (max-width: 760px) {
	.w-estory { gap: 32px; }
	.w-estory__row { grid-template-columns: minmax(0, 1fr); gap: 16px; }
	.w-estory__row--flip .w-estory__photo { order: 0; }
}

/* Wine-Box colour preference at checkout (Wineck_Box_Preference, 03/10/2026). */
.woocommerce-checkout .w-box-preference { margin: 22px 0 10px; padding: 18px 20px 16px; background: var(--cream); border: 1px solid var(--line); border-radius: var(--radius); }
.woocommerce-checkout .w-box-preference h3 { margin: 0 0 10px; font-family: var(--font-display); font-size: 22px; color: var(--plum); }
.woocommerce-checkout .w-box-preference .form-row { margin-bottom: 0; }
.woocommerce-checkout .w-box-preference .form-row > label { margin-bottom: 2px; }
.woocommerce-checkout .w-box-preference .form-row > label .required { display: none; }
.woocommerce-checkout .w-box-preference .woocommerce-input-wrapper { display: grid; grid-template-columns: 20px minmax(0, 1fr); gap: 8px 10px; align-items: center; }
.woocommerce-checkout .w-box-preference .woocommerce-input-wrapper input[type="radio"] { margin: 0; width: 18px; height: 18px; accent-color: var(--brand); }
.woocommerce-checkout .w-box-preference .woocommerce-input-wrapper label.radio { font-weight: 500; font-size: 15px; color: var(--ink); cursor: pointer; }
.woocommerce-checkout .w-box-preference .woocommerce-input-wrapper label.radio .required { display: none; }
.woocommerce-checkout .w-box-preference .description { display: block; grid-column: 1 / -1; margin-top: 6px; font-size: 13px; color: var(--muted); }
