/**
 * Arbre Cadeau — surcouche UI/UX panier & tunnel de commande.
 *
 * Surcouche pure : aucune structure HTML n'est modifiée, aucun template
 * surchargé. Désactivable depuis les réglages du plugin.
 *
 * Palette reprise du site : vert #31503c, brun #362626, crème #fdf9f0.
 */

:root {
	--ac-cream: #fdf9f0;
	--ac-surface: #ffffff;
	--ac-ink: #362626;
	--ac-green: #31503c;
	--ac-green-dark: #24402f;
	--ac-green-soft: #f2f6f3;
	--ac-border: #e6e0d3;
	--ac-border-strong: #d7cfbe;
	--ac-muted: #8d8d8d;
	--ac-danger: #a4242b;
	--ac-radius: 14px;
	--ac-radius-sm: 9px;
	--ac-pill: 999px;
	--ac-shadow: 0 1px 2px rgba(54, 38, 38, .04), 0 8px 24px -12px rgba(54, 38, 38, .12);
}

/* =========================================================================
   1. Mise en page — colonnes alignées en haut, récapitulatif collant
   ========================================================================= */

@media (min-width: 992px) {

	body.woocommerce-checkout form.checkout > .row,
	body.woocommerce-cart .wrapper-cart > .row {
		display: flex;
		flex-wrap: wrap;
		align-items: flex-start;
	}

	body.woocommerce-checkout .details-review,
	body.woocommerce-cart .cart-collaterals {
		position: -webkit-sticky;
		position: sticky;
		top: 24px;
	}
}

/* =========================================================================
   2. Panneaux — on transforme les blocs existants en cartes
   ========================================================================= */

body.woocommerce-checkout #customer_details > div,
body.woocommerce-checkout .details-review .woocommerce-checkout-review-order,
body.woocommerce-cart .cart_totals .cart_totals_inner,
body.woocommerce-cart .woocommerce-cart-form table.cart {
	background: var(--ac-surface);
	border: 1px solid var(--ac-border);
	border-radius: var(--ac-radius);
	box-shadow: var(--ac-shadow);
}

body.woocommerce-checkout #customer_details > div {
	padding: 26px 28px 8px;
	margin-bottom: 22px;
}

body.woocommerce-checkout .details-review .woocommerce-checkout-review-order,
body.woocommerce-cart .cart_totals .cart_totals_inner {
	padding: 26px 28px;
}

body.woocommerce-cart .woocommerce-cart-form table.cart {
	padding: 8px 22px;
	border-collapse: separate;
	border-spacing: 0;
}

/* =========================================================================
   3. Titres
   ========================================================================= */

body.woocommerce-checkout .woocommerce-billing-fields h3,
body.woocommerce-checkout .woocommerce-shipping-fields h3,
body.woocommerce-checkout #order_review_heading,
body.woocommerce-cart .cart_totals h2.title {
	color: var(--ac-ink);
	font-size: 18px;
	font-weight: 700;
	letter-spacing: -.01em;
	margin: 0 0 20px;
	padding-bottom: 14px;
	border-bottom: 1px solid var(--ac-border);
}

body.woocommerce-checkout #order_review_heading {
	border-bottom: 0;
	padding-bottom: 0;
	margin-bottom: 14px;
}

/* =========================================================================
   4. Champs et libellés
   ========================================================================= */

body.woocommerce-checkout .woocommerce-checkout .form-row label,
body.woocommerce-checkout form.checkout label {
	display: block;
	color: var(--ac-ink);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .01em;
	margin-bottom: 6px;
}

body.woocommerce-checkout form.checkout .required {
	color: var(--ac-danger);
	text-decoration: none;
}

body.woocommerce-checkout form.checkout .form-row {
	margin-bottom: 18px;
}

body.woocommerce-checkout form.checkout input.input-text,
body.woocommerce-checkout form.checkout textarea,
body.woocommerce-checkout form.checkout select,
body.woocommerce-checkout form.checkout .select2-selection {
	width: 100%;
	min-height: 46px;
	padding: 11px 14px;
	background: var(--ac-surface);
	color: var(--ac-ink);
	font-size: 15px;
	line-height: 1.4;
	border: 1px solid var(--ac-border-strong);
	border-radius: var(--ac-radius-sm);
	box-shadow: none;
	transition: border-color .15s ease, box-shadow .15s ease;
}

body.woocommerce-checkout form.checkout textarea {
	min-height: 96px;
	padding-top: 12px;
}

body.woocommerce-checkout form.checkout input.input-text::placeholder,
body.woocommerce-checkout form.checkout textarea::placeholder {
	color: #b6b1a8;
}

body.woocommerce-checkout form.checkout input.input-text:hover,
body.woocommerce-checkout form.checkout textarea:hover,
body.woocommerce-checkout form.checkout select:hover {
	border-color: #bdb3a0;
}

/* Focus visible — accessibilité clavier */
body.woocommerce-checkout form.checkout input.input-text:focus,
body.woocommerce-checkout form.checkout textarea:focus,
body.woocommerce-checkout form.checkout select:focus,
body.woocommerce-checkout form.checkout input[type="checkbox"]:focus-visible,
body.woocommerce-cart .coupon input:focus {
	outline: none;
	border-color: var(--ac-green);
	box-shadow: 0 0 0 3px rgba(49, 80, 60, .15);
}

/* Erreurs de validation lisibles */
body.woocommerce-checkout form.checkout .woocommerce-invalid input.input-text,
body.woocommerce-checkout form.checkout .woocommerce-invalid select {
	border-color: var(--ac-danger);
	background: #fdf6f6;
}

body.woocommerce-checkout form.checkout .woocommerce-validated input.input-text {
	border-color: #b9cbbf;
}

/* Case à cocher « Expédier à une adresse différente ? » */
body.woocommerce-checkout .acs-ship-toggle {
	display: flex;
	align-items: center;
	gap: 10px;
	margin: 4px 0 18px;
	font-size: 15px;
	font-weight: 600;
	color: var(--ac-ink);
	cursor: pointer;
}

body.woocommerce-checkout .acs-ship-toggle br {
	display: none;
}

body.woocommerce-checkout .acs-ship-toggle label {
	margin: 0;
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
}

body.woocommerce-checkout .acs-ship-toggle input[type="checkbox"] {
	flex: 0 0 auto;
	width: 18px;
	height: 18px;
	margin: 0;
	accent-color: var(--ac-green);
	cursor: pointer;
}

/* Conteneur natif laissé vide par l'éditeur de champs. */
body.woocommerce-checkout #ship-to-different-address:empty {
	display: none;
}

body.woocommerce-checkout .shipping_address {
	padding-top: 4px;
}

/* =========================================================================
   5. Modes de livraison — cartes cliquables
   ========================================================================= */

ul#shipping_method {
	list-style: none;
	margin: 0;
	padding: 0;
}

ul#shipping_method > li {
	position: relative;
	margin: 0 0 10px;
	padding: 14px 16px 14px 46px;
	background: var(--ac-surface);
	border: 1px solid var(--ac-border);
	border-radius: 12px;
	transition: border-color .15s ease, background-color .15s ease;
}

ul#shipping_method > li:hover {
	border-color: #b9cbbf;
}

ul#shipping_method > li:has(input:checked) {
	border-color: var(--ac-green);
	background: var(--ac-green-soft);
	box-shadow: inset 0 0 0 1px var(--ac-green);
}

ul#shipping_method > li input[type="radio"] {
	position: absolute;
	top: 18px;
	left: 17px;
	width: 18px;
	height: 18px;
	margin: 0;
	accent-color: var(--ac-green);
	cursor: pointer;
}

ul#shipping_method > li label {
	display: block;
	margin: 0;
	color: var(--ac-ink);
	font-size: 15px;
	font-weight: 600;
	cursor: pointer;
}

ul#shipping_method > li label .woocommerce-Price-amount {
	color: var(--ac-green);
	font-weight: 700;
}

ul#shipping_method > li label p {
	margin: 6px 0 0;
	color: var(--ac-muted);
	font-size: 13px;
	font-weight: 400;
	line-height: 1.5;
}

ul#shipping_method > li label p:empty {
	display: none;
}

/* Le module DPD sépare le libellé et le prix par des <br> : le prix se
   retrouvait seul sur une ligne. Les <p> assurent déjà le rythme vertical. */
ul#shipping_method > li label br {
	display: none;
}

ul#shipping_method > li img.dpd-logo {
	display: inline-block;
	max-width: 34px;
	height: auto;
	margin-right: 8px;
	vertical-align: middle;
}

/* Détail « 3 colis — dont supplément… » */
.acs-rate-details {
	display: block;
	margin-top: 8px;
	color: var(--ac-muted);
	font-size: 12.5px;
	opacity: 1;
}

/* Sélecteur de points relais DPD */
.shipping-selected {
	margin-top: 14px;
	border-radius: 10px;
	overflow: hidden;
}

.shipping-selected:empty {
	display: none;
}


/* =========================================================================
   6. Récapitulatif de commande
   ========================================================================= */

body.woocommerce-checkout .woocommerce-checkout-review-order-table {
	width: 100%;
	max-width: 100%;
	border: 0;
	border-collapse: collapse;
	table-layout: auto;
}

body.woocommerce-checkout .woocommerce-checkout-review-order-table th,
body.woocommerce-checkout .woocommerce-checkout-review-order-table td {
	overflow-wrap: anywhere;
}

body.woocommerce-checkout .woocommerce-checkout-review-order-table thead th {
	padding: 0 0 12px;
	color: var(--ac-muted);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	border-bottom: 1px solid var(--ac-border);
}

body.woocommerce-checkout .woocommerce-checkout-review-order-table tbody td,
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot td,
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot th {
	padding: 14px 0;
	border-bottom: 1px solid var(--ac-border);
	vertical-align: top;
}

body.woocommerce-checkout .woocommerce-checkout-review-order-table tbody td.product-name {
	color: var(--ac-ink);
	font-size: 14.5px;
	font-weight: 600;
	line-height: 1.45;
}

/* Colonnes de montants uniquement — surtout pas la ligne « Expédition »,
   dont la cellule contient toute la liste des modes de livraison. */
body.woocommerce-checkout .woocommerce-checkout-review-order-table td.product-total,
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot .cart-subtotal td,
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot .order-total td,
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot .fee td,
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot .tax-rate td,
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot .cart-discount td {
	text-align: right;
	white-space: nowrap;
}

/* La ligne « Expédition » passe en pleine largeur : les cartes de livraison
   et la liste des points relais ont besoin de toute la place disponible. */
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot .woocommerce-shipping-totals th,
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot .woocommerce-shipping-totals td {
	display: block;
	width: 100%;
	text-align: left;
	white-space: normal;
}

body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot .woocommerce-shipping-totals th {
	padding-bottom: 10px;
	border-bottom: 0;
}

body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot .woocommerce-shipping-totals td {
	padding-top: 0;
}

body.woocommerce-checkout .woocommerce-checkout-review-order-table .tc-epo-metadata,
body.woocommerce-checkout .woocommerce-checkout-review-order-table .variation {
	margin: 6px 0 0;
	color: var(--ac-muted);
	font-size: 12px;
	font-weight: 400;
	line-height: 1.6;
}

body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot th {
	color: var(--ac-muted);
	font-size: 13px;
	font-weight: 600;
	text-align: left;
}

body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot .order-total th,
body.woocommerce-checkout .woocommerce-checkout-review-order-table tfoot .order-total td,
body.woocommerce-cart .cart_totals .order-total th,
body.woocommerce-cart .cart_totals .order-total td {
	padding-top: 18px;
	color: var(--ac-ink);
	font-size: 19px;
	font-weight: 700;
	border-bottom: 0;
}

/* =========================================================================
   7. Boutons
   ========================================================================= */

body.woocommerce-checkout #place_order,
body.woocommerce-cart .wc-proceed-to-checkout .checkout-button,
body.woocommerce-cart .acs-quote-button {
	display: block;
	width: 100%;
	margin-top: 20px;
	padding: 16px 28px;
	background: var(--ac-ink);
	color: #fff;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .09em;
	text-transform: uppercase;
	text-align: center;
	border: 0;
	border-radius: var(--ac-pill);
	transition: transform .12s ease, background-color .15s ease, box-shadow .15s ease;
}

body.woocommerce-checkout #place_order:hover,
body.woocommerce-cart .wc-proceed-to-checkout .checkout-button:hover,
body.woocommerce-cart .acs-quote-button:hover {
	background: var(--ac-green);
	box-shadow: 0 10px 22px -12px rgba(49, 80, 60, .8);
	transform: translateY(-1px);
}

body.woocommerce-checkout #place_order:active,
body.woocommerce-cart .wc-proceed-to-checkout .checkout-button:active {
	transform: translateY(0);
}

body.woocommerce-cart button[name="update_cart"] {
	border-radius: var(--ac-pill);
	letter-spacing: .07em;
}

body.woocommerce-cart button[name="update_cart"]:disabled {
	opacity: .4;
	cursor: not-allowed;
}

/* =========================================================================
   8. Page panier
   ========================================================================= */

body.woocommerce-cart .woocommerce-cart-form table.cart thead th {
	padding: 18px 12px;
	color: var(--ac-muted);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	border-bottom: 1px solid var(--ac-border);
}

body.woocommerce-cart .woocommerce-cart-form table.cart td {
	padding: 20px 12px;
	border-bottom: 1px solid var(--ac-border);
	vertical-align: middle;
}

body.woocommerce-cart .woocommerce-cart-form table.cart tr:last-child td {
	border-bottom: 0;
}

body.woocommerce-cart td.product-thumbnail img {
	width: 84px;
	height: 84px;
	object-fit: cover;
	border-radius: 10px;
	border: 1px solid var(--ac-border);
}

body.woocommerce-cart td.product-name > a {
	display: block;
	color: var(--ac-ink);
	font-size: 15.5px;
	font-weight: 600;
	line-height: 1.4;
}

body.woocommerce-cart td.product-name .tm-cart-edit-options {
	display: inline-block;
	margin-top: 4px;
	color: var(--ac-green);
	font-size: 12px;
	font-weight: 600;
	text-decoration: underline;
}

body.woocommerce-cart td.product-name .tc-epo-metadata {
	margin: 6px 0 0;
	color: var(--ac-muted);
	font-size: 12px;
	line-height: 1.6;
}

body.woocommerce-cart td.product-price,
body.woocommerce-cart td.product-subtotal {
	color: var(--ac-ink);
	font-size: 15px;
	font-weight: 600;
	white-space: nowrap;
}

/* Sélecteur de quantité : le thème empile les boutons à cause d'un <br>. */
body.woocommerce-cart .quantity.buttons_added {
	position: static;
	display: inline-flex;
	align-items: stretch;
	overflow: hidden;
	background: var(--ac-surface);
	border: 1px solid var(--ac-border-strong);
	border-radius: var(--ac-pill);
}

/* Le thème empile les boutons en position absolue : on les remet dans le flux. */
body.woocommerce-cart .quantity.buttons_added input.minus,
body.woocommerce-cart .quantity.buttons_added input.plus {
	position: static;
	inset: auto;
	float: none;
	height: auto;
}

body.woocommerce-cart .quantity.buttons_added br,
body.woocommerce-cart .quantity.buttons_added label.screen-reader-text {
	display: none;
}

body.woocommerce-cart .quantity.buttons_added input.minus,
body.woocommerce-cart .quantity.buttons_added input.plus {
	width: 38px;
	padding: 0;
	background: transparent;
	color: var(--ac-ink);
	font-size: 17px;
	font-weight: 600;
	line-height: 1;
	border: 0;
	border-radius: 0;
	cursor: pointer;
	transition: background-color .15s ease;
}

body.woocommerce-cart .quantity.buttons_added input.minus { order: 1; }
body.woocommerce-cart .quantity.buttons_added input.qty   { order: 2; }
body.woocommerce-cart .quantity.buttons_added input.plus  { order: 3; }

body.woocommerce-cart .quantity.buttons_added input.minus:hover,
body.woocommerce-cart .quantity.buttons_added input.plus:hover {
	background: var(--ac-green-soft);
}

body.woocommerce-cart .quantity.buttons_added input.qty {
	width: 54px;
	height: 42px;
	padding: 0;
	background: transparent;
	color: var(--ac-ink);
	font-size: 15px;
	font-weight: 600;
	text-align: center;
	border: 0;
	border-left: 1px solid var(--ac-border);
	border-right: 1px solid var(--ac-border);
	-moz-appearance: textfield;
}

body.woocommerce-cart .quantity.buttons_added input.qty::-webkit-outer-spin-button,
body.woocommerce-cart .quantity.buttons_added input.qty::-webkit-inner-spin-button {
	-webkit-appearance: none;
	margin: 0;
}

body.woocommerce-cart td.product-remove a.remove {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	color: var(--ac-muted);
	border: 1px solid var(--ac-border);
	border-radius: 50%;
	transition: color .15s ease, border-color .15s ease, background-color .15s ease;
}

body.woocommerce-cart td.product-remove a.remove:hover {
	color: var(--ac-danger);
	background: #fdf6f6;
	border-color: #e5c9c9;
}

/* Coupon */
body.woocommerce-cart .coupon input.input-text {
	min-height: 46px;
	padding: 11px 16px;
	background: var(--ac-surface);
	border: 1px solid var(--ac-border-strong);
	border-radius: var(--ac-pill);
	font-size: 14px;
}

/* Totaux du panier — le tableau passe en blocs flex : c'est le seul moyen
   fiable de donner toute la largeur à la ligne « Expédition », qui contient
   les cartes de modes de livraison et la liste des points relais. */
body.woocommerce-cart .cart_totals table,
body.woocommerce-cart .cart_totals table tbody {
	display: block;
	width: 100%;
}

body.woocommerce-cart .cart_totals table tr {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 16px;
	width: 100%;
	padding: 14px 0;
	border-bottom: 1px solid var(--ac-border);
}

body.woocommerce-cart .cart_totals table th,
body.woocommerce-cart .cart_totals table td {
	display: block;
	padding: 0;
	border: 0;
}

body.woocommerce-cart .cart_totals table th {
	color: var(--ac-muted);
	font-size: 13px;
	font-weight: 600;
	text-align: left;
}

body.woocommerce-cart .cart_totals table td {
	color: var(--ac-ink);
	text-align: right;
}

body.woocommerce-cart .cart_totals table tr.woocommerce-shipping-totals {
	flex-direction: column;
	align-items: stretch;
	gap: 10px;
}

body.woocommerce-cart .cart_totals table tr.woocommerce-shipping-totals td {
	text-align: left;
}

body.woocommerce-cart .cart_totals table tr.order-total {
	border-bottom: 0;
}

/* =========================================================================
   9. Mentions et encarts
   ========================================================================= */

body.woocommerce-checkout .acs-shipping-note,
body.woocommerce-checkout .expedition-info,
body.woocommerce-cart .acs-island-hint {
	background: var(--ac-green-soft);
	border-left: 3px solid var(--ac-green);
	border-radius: 0 var(--ac-radius-sm) var(--ac-radius-sm) 0;
	color: #5c6b61;
	opacity: 1;
}

body.woocommerce-checkout .acs-shipping-note {
	padding: 12px 16px;
	font-size: 13px;
	line-height: 1.55;
}

body.woocommerce-checkout .expedition-info {
	padding: 16px 18px;
	margin: 18px 0 0;
	font-size: 13px;
	line-height: 1.6;
}

body.woocommerce-cart .acs-island-hint {
	padding: 11px 15px;
	margin: 0 0 16px;
	font-size: 12.5px;
	line-height: 1.5;
}

body.woocommerce-checkout .acs-quote-required {
	color: var(--ac-danger);
	font-weight: 600;
}

/* =========================================================================
   10. Responsive
   ========================================================================= */

@media (max-width: 991px) {

	body.woocommerce-checkout #customer_details > div,
	body.woocommerce-checkout .details-review .woocommerce-checkout-review-order,
	body.woocommerce-cart .cart_totals .cart_totals_inner {
		padding: 20px 18px;
	}

	body.woocommerce-cart .woocommerce-cart-form table.cart {
		padding: 6px 14px;
	}

	body.woocommerce-checkout .details-review {
		margin-top: 26px;
	}
}

@media (max-width: 600px) {

	body.woocommerce-cart .woocommerce-cart-form table.cart td {
		padding: 14px 8px;
	}

	body.woocommerce-cart td.product-thumbnail img {
		width: 62px;
		height: 62px;
	}

	/* Cible tactile confortable (44px minimum) */
	body.woocommerce-checkout form.checkout input.input-text,
	body.woocommerce-checkout form.checkout select,
	body.woocommerce-checkout form.checkout textarea {
		font-size: 16px; /* évite le zoom automatique iOS */
	}

	ul#shipping_method > li {
		padding: 13px 14px 13px 42px;
	}
}

/* Respect des préférences d'animation réduite */
@media (prefers-reduced-motion: reduce) {

	body.woocommerce-checkout #place_order,
	body.woocommerce-cart .wc-proceed-to-checkout .checkout-button,
	ul#shipping_method > li,
	body.woocommerce-checkout form.checkout input.input-text {
		transition: none;
	}
}
