/* ==========================================================================
   LBAC Cart — panier coulissant
   Même langage que le mega menu : navy structurel sur le premier et le
   dernier bloc, corps blanc, or pour l'action, Bricolage Grotesque pour
   les titres et les montants. Le panneau est une carte arrondie décollée
   des bords (12 px), pas un rectangle plein écran.

   Toutes les couleurs passent par les variables --lbac-cart-* injectées
   depuis les réglages : le plugin se rhabille sans toucher à ce fichier.
   ========================================================================== */

:root {
	/* Défauts de secours si l'inline des réglages ne charge pas. */
	--lbac-cart-dark: #14226b;
	--lbac-cart-action: #3550e0;
	--lbac-cart-accent: #f4b851;
	--lbac-cart-ink-dark: #fff;
	--lbac-cart-ink: #1a1a18;
	--lbac-cart-accent-ink: #412402;
	--lbac-cart-action-ink: #fff;
	--lbac-cart-display: "Bricolage Grotesque", "Archivo", "Helvetica Neue", Arial, sans-serif;
	--lbac-cart-width: 440px;
	--lbac-cart-radius: 12px;
	--lbac-cart-gap: 12px;
	--lbac-cart-muted: #7a7975;
	--lbac-cart-line: #e7e7e2;
	/* Courbe signature du mega menu — même sortie expo partout. */
	--lbac-cart-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

.lbac-cart,
.lbac-cart *,
.lbac-cart *::before,
.lbac-cart *::after {
	box-sizing: border-box;
}

.lbac-cart button {
	font: inherit;
	background: none;
	border: 0;
	padding: 0;
	margin: 0;
	color: inherit;
	cursor: pointer;
}

/* L'attribut hidden gagne TOUJOURS, même face à un display explicite plus
   bas (spinner en flex, champ promo en flex, panneau, bulle, badges). Sans
   cette règle, le voile de chargement restait affiché au-dessus du corps
   et le champ code promo naissait déplié. */
.lbac-cart [hidden],
.lbac-cart-badge[hidden] {
	display: none !important;
}

/* Divi impose sa couleur de lien avec des sélecteurs très spécifiques :
   on monte en spécificité plutôt que d'empiler des !important. */
.lbac-cart a,
.lbac-cart a:link,
.lbac-cart a:visited,
#et-boc .lbac-cart a,
#page-container .lbac-cart a,
body .lbac-cart a {
	text-decoration: none;
	color: inherit;
}

.lbac-cart :focus-visible {
	outline: 2px solid var(--lbac-cart-accent);
	outline-offset: 2px;
	border-radius: 4px;
}

.lbac-cart .screen-reader-text {
	position: absolute !important;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(1px, 1px, 1px, 1px);
	white-space: nowrap;
}

/* --------------------------------------------------------------------------
   Badge — même recette que la pastille du menu : or, chiffre navy.
   -------------------------------------------------------------------------- */

.lbac-cart-badge {
	display: inline-block;
	min-width: 17px;
	height: 17px;
	padding: 0 4px;
	border-radius: 999px;
	background: var(--lbac-cart-accent);
	color: var(--lbac-cart-dark);
	font-size: 10px;
	font-weight: 800;
	line-height: 17px;
	text-align: center;
	font-family: var(--lbac-cart-display);
}

.lbac-cart-toggle {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 48px;
	min-height: 48px;
	background: none;
	border: 0;
	padding: 10px;
	cursor: pointer;
	color: inherit;
}

.lbac-cart-toggle .lbac-cart-badge {
	position: absolute;
	top: 4px;
	right: 2px;
}

.lbac-cart-icon {
	width: 22px;
	height: 22px;
}

/* --------------------------------------------------------------------------
   Voile.
   -------------------------------------------------------------------------- */

.lbac-cart__overlay {
	position: fixed;
	inset: 0;
	z-index: 100090;
	background: color-mix(in srgb, #000 55%, transparent);
	opacity: 0;
	transition: opacity 0.35s ease;
}

.lbac-cart__overlay.is-open {
	opacity: 1;
}

@supports not (background: color-mix(in srgb, #000 55%, transparent)) {

	.lbac-cart__overlay {
		background: rgba(0, 0, 0, 0.55);
	}
}

/* --------------------------------------------------------------------------
   Panneau — carte arrondie décollée des bords.
   -------------------------------------------------------------------------- */

.lbac-cart__panel {
	position: fixed;
	top: var(--lbac-cart-gap);
	bottom: var(--lbac-cart-gap);
	right: var(--lbac-cart-gap);
	z-index: 100100;
	display: flex;
	flex-direction: column;
	width: min(var(--lbac-cart-width), calc(100vw - 2 * var(--lbac-cart-gap)));
	border-radius: var(--lbac-cart-radius);
	overflow: hidden;
	background: #fff;
	color: var(--lbac-cart-ink);
	box-shadow: 0 24px 70px color-mix(in srgb, var(--lbac-cart-dark) 38%, transparent);
	transform: translateX(calc(100% + 2 * var(--lbac-cart-gap)));
	transition: transform 0.45s var(--lbac-cart-ease);
	font-size: 14px;
	line-height: 1.45;
}

.lbac-cart[data-position="left"] .lbac-cart__panel {
	right: auto;
	left: var(--lbac-cart-gap);
	transform: translateX(calc(-100% - 2 * var(--lbac-cart-gap)));
}

.lbac-cart__panel.is-open,
.lbac-cart[data-position="left"] .lbac-cart__panel.is-open {
	transform: translateX(0);
}

/* Mouvement réduit : la transition devient un fondu. */
@media (prefers-reduced-motion: reduce) {

	.lbac-cart__panel,
	.lbac-cart[data-position="left"] .lbac-cart__panel {
		transition: opacity 0.2s ease;
		transform: none;
		opacity: 0;
	}

	.lbac-cart__panel.is-open,
	.lbac-cart[data-position="left"] .lbac-cart__panel.is-open {
		opacity: 1;
	}

	.lbac-cart__overlay {
		transition: none;
	}
}

/* --------------------------------------------------------------------------
   Premier bloc : l'en-tête porte le navy.
   -------------------------------------------------------------------------- */

.lbac-cart__head {
	position: relative;
	flex: none;
	background: var(--lbac-cart-dark);
	color: var(--lbac-cart-ink-dark);
	padding: 18px 20px 16px;
}

.lbac-cart__title {
	margin: 0;
	font-family: var(--lbac-cart-display);
	font-size: 22px;
	font-weight: 800;
	letter-spacing: -0.015em;
	color: var(--lbac-cart-ink-dark);
	display: flex;
	align-items: center;
	gap: 10px;
}

.lbac-cart__head-badge {
	transform: translateY(1px);
}

.lbac-cart__close {
	position: absolute;
	top: 12px;
	right: 12px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 40px;
	height: 40px;
	border-radius: 999px;
	color: var(--lbac-cart-ink-dark);
	transition: background 0.2s ease;
}

.lbac-cart__close:hover {
	background: color-mix(in srgb, #fff 12%, transparent);
}

.lbac-cart__close svg {
	width: 18px;
	height: 18px;
}

/* --------------------------------------------------------------------------
   Barre de livraison offerte — l'or file sur le navy.
   -------------------------------------------------------------------------- */

.lbac-cart__progress {
	margin-top: 12px;
}

.lbac-cart__progress-text {
	margin: 0 0 7px;
	font-size: 12.5px;
	color: color-mix(in srgb, var(--lbac-cart-ink-dark) 85%, transparent);
}

.lbac-cart__progress-text strong {
	color: var(--lbac-cart-accent);
	font-family: var(--lbac-cart-display);
	font-weight: 800;
}

.lbac-cart__progress.is-done .lbac-cart__progress-text {
	color: var(--lbac-cart-accent);
	font-weight: 700;
}

.lbac-cart__progress-track {
	height: 6px;
	border-radius: 999px;
	background: color-mix(in srgb, #fff 14%, transparent);
	overflow: hidden;
}

.lbac-cart__progress-fill {
	height: 100%;
	border-radius: 999px;
	background: var(--lbac-cart-accent);
	box-shadow: 0 0 10px color-mix(in srgb, var(--lbac-cart-accent) 55%, transparent);
	transition: width 0.6s var(--lbac-cart-ease);
}

@media (prefers-reduced-motion: reduce) {

	.lbac-cart__progress-fill {
		transition: none;
	}
}

/* --------------------------------------------------------------------------
   Notices.
   -------------------------------------------------------------------------- */

.lbac-cart__notices {
	flex: none;
}

.lbac-cart__notice {
	margin: 0;
	padding: 10px 20px;
	font-size: 13px;
	border-bottom: 1px solid var(--lbac-cart-line);
}

.lbac-cart__notice--error {
	background: #fdecec;
	color: #8c1d18;
}

.lbac-cart__notice--success {
	background: #e9f7ef;
	color: #14532d;
}

.lbac-cart__notice--notice {
	background: color-mix(in srgb, var(--lbac-cart-accent) 16%, #fff);
	color: color-mix(in srgb, var(--lbac-cart-accent) 42%, #000);
}

/* --------------------------------------------------------------------------
   Corps blanc.
   -------------------------------------------------------------------------- */

.lbac-cart__body {
	position: relative;
	flex: 1 1 auto;
	overflow-y: auto;
	overscroll-behavior: contain;
	-webkit-overflow-scrolling: touch;
	background: #fff;
}

.lbac-cart__loading {
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	background: #fff;
	z-index: 2;
}

.lbac-cart__spinner {
	width: 26px;
	height: 26px;
	border-radius: 999px;
	border: 3px solid var(--lbac-cart-line);
	border-top-color: var(--lbac-cart-action);
	animation: lbac-cart-spin 0.8s linear infinite;
}

@keyframes lbac-cart-spin {

	to {
		transform: rotate(360deg);
	}
}

@media (prefers-reduced-motion: reduce) {

	.lbac-cart__spinner {
		animation-duration: 1.6s;
	}
}

/* --------------------------------------------------------------------------
   Lignes de panier.
   -------------------------------------------------------------------------- */

.lbac-cart__items {
	margin: 0;
	padding: 6px 20px;
	list-style: none;
}

.lbac-cart__item {
	position: relative;
	display: flex;
	gap: 14px;
	padding: 16px 0;
	border-bottom: 1px solid var(--lbac-cart-line);
}

.lbac-cart__item:last-child {
	border-bottom: 0;
}

.lbac-cart__item.is-syncing {
	opacity: 0.65;
}

.lbac-cart__item-thumb {
	flex: none;
	width: 72px;
}

.lbac-cart__item-thumb img {
	display: block;
	width: 72px;
	height: 72px;
	object-fit: cover;
	border-radius: 10px;
	background: color-mix(in srgb, var(--lbac-cart-dark) 4%, #fff);
}

.lbac-cart__item-main {
	flex: 1 1 auto;
	min-width: 0;
	padding-right: 26px;
}

.lbac-cart__item-title {
	margin: 0 0 3px;
	font-family: var(--lbac-cart-display);
	font-size: 14.5px;
	font-weight: 700;
	letter-spacing: -0.01em;
	color: var(--lbac-cart-ink);
}

.lbac-cart__item-title a:hover {
	color: var(--lbac-cart-action);
}

/* Données de ligne du configurateur : la dl de WooCommerce, resserrée. */
.lbac-cart__item-data {
	font-size: 12px;
	color: var(--lbac-cart-muted);
}

.lbac-cart__item-data dl {
	margin: 0 0 4px;
	display: grid;
	grid-template-columns: auto 1fr;
	gap: 0 6px;
}

.lbac-cart__item-data dt {
	font-weight: 600;
	margin: 0;
}

.lbac-cart__item-data dd {
	margin: 0;
	overflow-wrap: anywhere;
}

.lbac-cart__item-data p {
	margin: 0;
}

.lbac-cart__item-stock {
	margin: 2px 0 0;
	font-size: 12px;
	font-weight: 700;
	color: #b3261e;
}

.lbac-cart__item.is-out-of-stock .lbac-cart__item-thumb img {
	filter: grayscale(1);
	opacity: 0.7;
}

.lbac-cart__item-bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	margin-top: 9px;
}

.lbac-cart__item-subtotal {
	font-family: var(--lbac-cart-display);
	font-weight: 800;
	font-size: 14.5px;
	white-space: nowrap;
}

/* Quantité : pilule bordée, comme les capsules du menu. */
.lbac-cart__qty {
	display: inline-flex;
	align-items: center;
	border: 1px solid var(--lbac-cart-line);
	border-radius: 999px;
	overflow: hidden;
}

.lbac-cart__qty--fixed {
	padding: 5px 14px;
	font-weight: 700;
	color: var(--lbac-cart-muted);
}

.lbac-cart__qty-btn {
	width: 30px;
	height: 30px;
	font-size: 16px;
	font-weight: 700;
	color: var(--lbac-cart-ink);
	transition: background 0.15s ease;
}

.lbac-cart__qty-btn:hover {
	background: color-mix(in srgb, var(--lbac-cart-dark) 4%, #fff);
}

.lbac-cart__qty-input {
	width: 32px;
	height: 30px;
	border: 0;
	padding: 0;
	text-align: center;
	font: inherit;
	font-weight: 700;
	color: var(--lbac-cart-ink);
	background: transparent;
	-moz-appearance: textfield;
	appearance: textfield;
}

.lbac-cart__qty-input:focus {
	outline: none;
	background: color-mix(in srgb, var(--lbac-cart-dark) 3%, #fff);
}

.lbac-cart__item-remove {
	position: absolute;
	top: 14px;
	right: 0;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 28px;
	height: 28px;
	border-radius: 999px;
	color: var(--lbac-cart-muted);
	transition: color 0.15s ease, background 0.15s ease;
}

.lbac-cart__item-remove:hover {
	color: #b3261e;
	background: #fdecec;
}

.lbac-cart__item-remove svg {
	width: 13px;
	height: 13px;
}

/* Bande « Retiré — Annuler » : occupe la place de la ligne 6 secondes. */
.lbac-cart__undo {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	width: 100%;
	min-height: 56px;
	padding: 12px 14px;
	border-radius: 10px;
	background: color-mix(in srgb, var(--lbac-cart-accent) 16%, #fff);
	border: 1px solid color-mix(in srgb, var(--lbac-cart-accent) 55%, #fff);
	font-size: 13px;
	color: color-mix(in srgb, var(--lbac-cart-accent) 42%, #000);
}

.lbac-cart__undo-label {
	font-weight: 600;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.lbac-cart__undo-btn {
	flex: none;
	font-weight: 800;
	font-family: var(--lbac-cart-display);
	color: var(--lbac-cart-action);
	text-decoration: underline;
	text-underline-offset: 3px;
}

/* --------------------------------------------------------------------------
   Panneau vide — une invitation à agir.
   -------------------------------------------------------------------------- */

.lbac-cart__empty {
	padding: 34px 20px 20px;
	text-align: center;
}

.lbac-cart__empty-text {
	margin: 0 0 16px;
	font-family: var(--lbac-cart-display);
	font-size: 17px;
	font-weight: 700;
	color: var(--lbac-cart-ink);
}

.lbac-cart__empty-cta {
	display: inline-block;
	padding: 11px 22px;
	border-radius: 999px;
	background: var(--lbac-cart-action);
	color: var(--lbac-cart-action-ink, #fff);
	font-family: var(--lbac-cart-display);
	font-weight: 800;
	font-size: 14px;
	transition: transform 0.2s var(--lbac-cart-ease), background 0.2s ease;
}

.lbac-cart__empty-cta:hover,
body .lbac-cart .lbac-cart__empty-cta:hover {
	color: var(--lbac-cart-action-ink, #fff);
	transform: translateY(-1px);
}

.lbac-cart__empty-picks {
	margin-top: 30px;
	text-align: left;
}

/* --------------------------------------------------------------------------
   Upsells — rangée déroulante à cartes.
   -------------------------------------------------------------------------- */

.lbac-cart__upsells {
	padding: 14px 20px 18px;
	border-top: 1px solid var(--lbac-cart-line);
	background: color-mix(in srgb, var(--lbac-cart-dark) 3%, #fff);
}

.lbac-cart__section-title {
	margin: 0 0 10px;
	font-family: var(--lbac-cart-display);
	font-size: 15px;
	font-weight: 800;
	letter-spacing: -0.01em;
	color: var(--lbac-cart-ink);
}

.lbac-cart__upsell-row {
	display: flex;
	gap: 10px;
	overflow-x: auto;
	scroll-snap-type: x proximity;
	padding-bottom: 4px;
	scrollbar-width: thin;
}

.lbac-cart__upsell {
	flex: none;
	width: 128px;
	scroll-snap-align: start;
	display: flex;
	flex-direction: column;
	background: #fff;
	border: 1px solid var(--lbac-cart-line);
	border-radius: 10px;
	padding: 8px;
}

.lbac-cart__upsell-media {
	position: relative;
	display: block;
}

/* Le + d'ajout direct, posé sur la miniature. Spécificité montée : Divi
   ne doit ni le masquer ni le recolorer. */
body .lbac-cart .lbac-cart__upsell-plus,
#et-boc .lbac-cart .lbac-cart__upsell-plus,
#page-container .lbac-cart .lbac-cart__upsell-plus {
	position: absolute;
	right: 6px;
	bottom: 6px;
	z-index: 2;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 32px;
	height: 32px;
	border: 0;
	border-radius: 999px;
	background: var(--lbac-cart-action, #3550e0);
	color: var(--lbac-cart-action-ink, #fff);
	font-size: 20px;
	font-weight: 800;
	font-family: var(--lbac-cart-display);
	line-height: 1;
	cursor: pointer;
	box-shadow: 0 4px 12px color-mix(in srgb, var(--lbac-cart-dark) 30%, transparent);
	transition: transform 0.15s var(--lbac-cart-ease), filter 0.15s ease;
	text-decoration: none;
	padding: 0;
}

body .lbac-cart .lbac-cart__upsell-plus:hover {
	transform: scale(1.08);
	filter: brightness(1.08);
	color: var(--lbac-cart-action-ink, #fff);
}

body .lbac-cart .lbac-cart__upsell-plus.is-busy {
	opacity: 0.55;
	pointer-events: none;
}

.lbac-cart__upsell-thumb img {
	display: block;
	width: 100%;
	aspect-ratio: 1;
	object-fit: cover;
	border-radius: 7px;
	background: color-mix(in srgb, var(--lbac-cart-dark) 4%, #fff);
}

.lbac-cart__upsell-title {
	margin: 7px 0 2px;
	font-size: 12px;
	font-weight: 600;
	line-height: 1.3;
	display: -webkit-box;
	-webkit-line-clamp: 2;
	-webkit-box-orient: vertical;
	overflow: hidden;
	min-height: calc(2 * 1.3em);
}

.lbac-cart__upsell-price {
	margin: 0 0 8px;
	font-family: var(--lbac-cart-display);
	font-size: 12.5px;
	font-weight: 800;
}

.lbac-cart__upsell-price del {
	color: var(--lbac-cart-muted);
	font-weight: 500;
	margin-right: 4px;
}

.lbac-cart__upsell-add {
	margin-top: auto;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-height: 30px;
	padding: 4px 10px;
	border-radius: 999px;
	background: var(--lbac-cart-action);
	color: var(--lbac-cart-action-ink, #fff);
	font-size: 12px;
	font-weight: 700;
	text-align: center;
	transition: filter 0.15s ease;
}

body .lbac-cart .lbac-cart__upsell-add {
	color: var(--lbac-cart-action-ink, #fff);
}

.lbac-cart__upsell-add:hover {
	filter: brightness(1.08);
}

.lbac-cart__upsell-add.is-busy {
	opacity: 0.6;
	pointer-events: none;
}

/* --------------------------------------------------------------------------
   Dernier bloc : le pied porte le navy.
   -------------------------------------------------------------------------- */

.lbac-cart__foot {
	flex: none;
	background: var(--lbac-cart-dark);
	color: var(--lbac-cart-ink-dark);
}

.lbac-cart__foot:empty,
.lbac-cart__foot [data-lbac-region="summary"]:empty {
	display: none;
}

.lbac-cart__summary {
	padding: 16px 20px 14px;
}

.lbac-cart__row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 6px;
	font-size: 13px;
	color: color-mix(in srgb, var(--lbac-cart-ink-dark) 85%, transparent);
}

.lbac-cart__row-value {
	font-family: var(--lbac-cart-display);
	font-weight: 700;
	color: var(--lbac-cart-ink-dark);
}

.lbac-cart__row--subtotal {
	font-size: 15px;
	color: var(--lbac-cart-ink-dark);
}

.lbac-cart__row--subtotal .lbac-cart__row-value {
	font-size: 19px;
	font-weight: 800;
	letter-spacing: -0.01em;
}

.lbac-cart__coupon-chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 3px 6px 3px 10px;
	border-radius: 999px;
	border: 1px solid color-mix(in srgb, var(--lbac-cart-accent) 65%, transparent);
	color: var(--lbac-cart-accent);
	font-weight: 700;
	font-size: 12px;
	text-transform: uppercase;
	letter-spacing: 0.04em;
}

.lbac-cart__coupon-remove {
	width: 17px;
	height: 17px;
	border-radius: 999px;
	line-height: 1;
	font-size: 13px;
	color: var(--lbac-cart-accent);
	display: inline-flex;
	align-items: center;
	justify-content: center;
}

.lbac-cart__coupon-remove:hover {
	background: color-mix(in srgb, #fff 14%, transparent);
}

.lbac-cart__shipping-note {
	margin: 2px 0 10px;
	font-size: 12px;
	color: color-mix(in srgb, var(--lbac-cart-ink-dark) 60%, transparent);
}

/* Code promo : replié derrière un lien or. */
.lbac-cart__coupon {
	margin-bottom: 12px;
}

.lbac-cart__coupon-toggle {
	font-size: 13px;
	font-weight: 700;
	color: var(--lbac-cart-accent);
	text-decoration: underline;
	text-underline-offset: 3px;
}

.lbac-cart__coupon-field {
	display: flex;
	gap: 8px;
	margin-top: 9px;
}

.lbac-cart__coupon-input {
	flex: 1 1 auto;
	min-width: 0;
	height: 40px;
	padding: 0 13px;
	border-radius: 999px;
	border: 1px solid color-mix(in srgb, #fff 28%, transparent);
	background: color-mix(in srgb, #fff 8%, transparent);
	color: var(--lbac-cart-ink-dark);
	font: inherit;
	text-transform: uppercase;
}

.lbac-cart__coupon-input::placeholder {
	color: color-mix(in srgb, var(--lbac-cart-ink-dark) 45%, transparent);
	text-transform: none;
}

.lbac-cart__coupon-input:focus {
	outline: 2px solid var(--lbac-cart-accent);
	outline-offset: 1px;
}

.lbac-cart__coupon-apply {
	flex: none;
	height: 40px;
	padding: 0 16px;
	border-radius: 999px;
	background: color-mix(in srgb, #fff 12%, transparent);
	color: var(--lbac-cart-ink-dark);
	font-weight: 700;
	font-size: 13px;
	transition: background 0.15s ease;
}

.lbac-cart__coupon-apply:hover {
	background: color-mix(in srgb, #fff 20%, transparent);
}

/* CTA principal : la carte or du menu, en bouton. */
.lbac-cart__cta,
body .lbac-cart .lbac-cart__cta {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	min-height: 52px;
	padding: 12px 18px;
	border-radius: 999px;
	background: var(--lbac-cart-accent);
	color: var(--lbac-cart-accent-ink, #412402);
	font-family: var(--lbac-cart-display);
	font-size: 16px;
	font-weight: 800;
	letter-spacing: -0.01em;
	transition: transform 0.2s var(--lbac-cart-ease), box-shadow 0.2s ease;
}

.lbac-cart__cta:hover {
	transform: translateY(-1px);
	box-shadow: 0 8px 22px color-mix(in srgb, var(--lbac-cart-accent) 40%, transparent);
}

.lbac-cart__cta[data-lbac-cta-disabled] {
	opacity: 0.45;
	pointer-events: none;
}

.lbac-cart__cta-blocked {
	margin: 8px 0 0;
	font-size: 12px;
	color: var(--lbac-cart-accent);
}

.lbac-cart__reassurance {
	margin: 10px 0 0;
	text-align: center;
	font-size: 12px;
	color: color-mix(in srgb, var(--lbac-cart-ink-dark) 62%, transparent);
}

.lbac-cart__payments {
	display: flex;
	justify-content: center;
	gap: 8px;
	margin-top: 10px;
}

.lbac-cart__payments svg {
	width: 38px;
	height: 25px;
	border-radius: 4px;
	opacity: 0.92;
}

/* --------------------------------------------------------------------------
   Bulle flottante — masquée par défaut, activée par réglage et par le JS
   (uniquement si le panier contient des articles).
   -------------------------------------------------------------------------- */

.lbac-cart__bubble {
	position: fixed;
	right: 18px;
	bottom: 18px;
	z-index: 100080;
	display: none;
	align-items: center;
	justify-content: center;
	width: 58px;
	height: 58px;
	border-radius: 999px;
	/* Pleinement opaque et cerclée : elle doit se voir sur n'importe quel
	   fond, jamais d'effet verre. */
	background: var(--lbac-cart-dark);
	border: 2px solid color-mix(in srgb, #fff 26%, var(--lbac-cart-dark));
	color: var(--lbac-cart-ink-dark);
	box-shadow: 0 10px 28px color-mix(in srgb, var(--lbac-cart-dark) 38%, transparent);
	transition: transform 0.2s var(--lbac-cart-ease);
}

.lbac-cart[data-position="left"] .lbac-cart__bubble {
	right: auto;
	left: 18px;
}

.lbac-cart__bubble:hover {
	transform: translateY(-2px);
}

.lbac-cart__bubble .lbac-cart-badge {
	position: absolute;
	top: -3px;
	right: -3px;
}

/* L'affichage ne dépend que du réglage d'appareil : la bulle est un point
   d'entrée permanent — panier vide compris, elle ouvre le panneau et ses
   produits mis en avant. */
@media (min-width: 981px) {

	.lbac-cart__bubble--desktop,
	.lbac-cart__bubble--both {
		display: inline-flex;
	}
}

@media (max-width: 980px) {

	.lbac-cart__bubble--mobile,
	.lbac-cart__bubble--both {
		display: inline-flex;
	}
}

/* --------------------------------------------------------------------------
   Verrouillage du défilement — la largeur de la scrollbar est compensée
   pour éviter le saut de mise en page (variable posée en JS).
   -------------------------------------------------------------------------- */

body.lbac-cart-locked {
	overflow: hidden;
	padding-right: var(--lbac-cart-sbw, 0px);
}

/* --------------------------------------------------------------------------
   Mobile : la carte garde son décollement, réduit à 8 px.
   -------------------------------------------------------------------------- */

@media (max-width: 560px) {

	.lbac-cart__panel {
		--lbac-cart-gap: 8px;
		width: calc(100vw - 2 * var(--lbac-cart-gap));
		font-size: 13.5px;
	}

	.lbac-cart__title {
		font-size: 20px;
	}

	.lbac-cart__items {
		padding: 4px 16px;
	}

	.lbac-cart__summary,
	.lbac-cart__upsells {
		padding-left: 16px;
		padding-right: 16px;
	}

	.lbac-cart__item-thumb,
	.lbac-cart__item-thumb img {
		width: 62px;
	}

	.lbac-cart__item-thumb img {
		height: 62px;
	}
}
