@charset "UTF-8";
/**
 * Fiche produit — fidèle à Fiche produit.dc.html.
 */

.ffp { background: #fff; }

.ffp-crumb { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; font: 500 12px var(--ff-sans); color: var(--ff-ink-55); }
.ffp-crumb a { color: var(--ff-pink-mid); }
.ffp-crumb span { color: rgba(51,39,46,.28); }
.ffp-crumb b { color: var(--ff-ink); font-weight: 700; }

.ffp-row { margin-top: 22px; display: flex; align-items: flex-start; gap: clamp(24px, 4vw, 72px); }
@media (max-width: 980px) {
	.ffp-row { flex-wrap: wrap; }
	.ffp-gal, .ffp-info { flex: 1 1 100% !important; max-width: 100% !important; position: static !important; }
}

/* -------------------------------------------------------------- Galerie */

.ffp-gal { flex: 1 1 auto; min-width: 0; max-width: min(100%, 560px); }
.ffp-gal__main {
	position: relative; width: 100%; aspect-ratio: 1/1.06; max-height: min(70vh, 620px);
	overflow: hidden; cursor: zoom-in; border-radius: 4px; background: var(--ff-clay);
}
.ffp-gal__main img { width: 100%; height: 100%; object-fit: cover; transition: transform .6s var(--ff-ease); }
.ffp-gal__main:hover img { transform: scale(1.02); }
.ffp-gal__lens {
	display: none; position: absolute; width: 190px; height: 190px;
	transform: translate(-50%, -50%); border-radius: 50%; pointer-events: none;
	border: 1.5px solid rgba(255,255,255,.85); box-shadow: 0 22px 44px rgba(58,33,53,.28);
	background: var(--ff-clay) no-repeat; background-size: 260% auto;
}
@media (hover: hover) and (pointer: fine) { .ffp-gal__main:hover .ffp-gal__lens { display: block; } }
.ffp-gal__badge {
	position: absolute; top: 14px; left: 14px; padding: 7px 13px; border-radius: var(--ff-r-pill);
	background: rgba(255,255,255,.92); color: var(--ff-plum);
	font: 700 9px var(--ff-sans); letter-spacing: .2em; text-transform: uppercase;
	box-shadow: 0 6px 16px rgba(58,33,53,.12);
}
.ffp-gal__shadow {
	width: 62%; height: 22px; margin: 2px auto 0; border-radius: 50%;
	background: radial-gradient(closest-side, rgba(58,33,53,.16), rgba(58,33,53,0) 74%); filter: blur(7px);
}
.ffp-gal__thumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-top: 16px; }
.ffp-gal__thumbs button {
	width: 68px; height: 82px; min-width: 44px; min-height: 44px; border-radius: 10px; border: none; padding: 0; cursor: pointer;
	background: var(--ff-clay) center/cover no-repeat;
	box-shadow: 0 4px 12px rgba(58,33,53,.1); transition: box-shadow .3s;
}
.ffp-gal__thumbs button.is-on { box-shadow: 0 0 0 2px var(--ff-pink-mid), 0 8px 18px rgba(58,33,53,.14); }
.ffp-gal__hint { flex: 1; min-width: 80px; font: 400 11.5px/1.5 var(--ff-sans); color: rgba(51,39,46,.42); text-align: right; }

/* ---------------------------------------------------------------- Infos */

.ffp-info { flex: 1 1 clamp(360px, 38%, 520px); min-width: min(100%, 300px); position: sticky; top: 88px; }
.ffp-info__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.ffp-info__cat {
	display: flex; align-items: center; gap: 11px;
	font: 700 10.5px var(--ff-sans); letter-spacing: .3em; text-transform: uppercase; color: var(--ff-plum);
}
.ffp-info__cat span { display: inline-block; width: 26px; height: 1.5px; background: var(--ff-pink); }
.ffp-info__tag {
	flex: none; padding: 7px 13px; border-radius: var(--ff-r-pill);
	border: 1px solid rgba(201,103,159,.5);
	font: 700 8.5px var(--ff-sans); letter-spacing: .2em; text-transform: uppercase; color: var(--ff-plum);
}
.ffp-info__title { margin: 13px 0 0; font: 500 clamp(32px, 3.6vw, 50px)/1.05 var(--ff-serif); color: var(--ff-ink); }
.ffp-info__hand { margin-top: 7px; font: 600 19px var(--ff-script); color: var(--ff-sage); transform: rotate(-1deg); }
.ffp-info__desc { margin: 18px 0 0; font: 400 15px/1.75 var(--ff-sans); color: var(--ff-ink-70); }

.ffp-specs {
	margin-top: 22px; display: grid; grid-template-columns: 1fr 1fr;
	border-top: 1px solid rgba(224,147,190,.4); border-bottom: 1px solid rgba(224,147,190,.4);
}
.ffp-specs > div { padding: 12px 14px 12px 0; }
.ffp-specs > div:nth-child(odd) { border-right: 1px solid rgba(224,147,190,.3); }
.ffp-specs > div:nth-child(-n+2) { border-bottom: 1px solid rgba(224,147,190,.3); }
.ffp-specs > div:nth-child(even) { padding-left: 14px; }
.ffp-specs b { display: block; font: 700 8.5px var(--ff-sans); letter-spacing: .22em; text-transform: uppercase; color: rgba(51,39,46,.45); }
.ffp-specs span { display: block; margin-top: 4px; font: 500 13px/1.35 var(--ff-sans); color: var(--ff-ink); }

.ffp-low { display: flex; align-items: center; gap: 10px; margin-top: 18px; font: 700 10px var(--ff-sans); letter-spacing: .18em; text-transform: uppercase; color: var(--ff-plum); }
.ffp-low span { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--ff-pink-mid); box-shadow: 0 0 0 4px rgba(201,103,159,.18); }

/* Bloc d'achat : habille les formulaires natifs WooCommerce. */
.ffp-buy { position: relative; margin-top: 18px; }
.ffp-buy .price {
	display: block; font: 800 clamp(28px, 2.8vw, 38px)/1 var(--ff-sans);
	color: var(--ff-ink); letter-spacing: -.02em; font-variant-numeric: tabular-nums; margin: 0 0 14px;
}
.ffp-buy .price del { font-size: .6em; color: var(--ff-ink-55); }
.ffp-buy .price ins { text-decoration: none; }

.ffp-buy form.cart { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0; }
.ffp-buy form.cart.variations_form { display: block; }
.ffp-buy table.variations { border: none; margin: 0 0 14px; }
.ffp-buy table.variations td, .ffp-buy table.variations th { border: none; padding: 0 0 8px; vertical-align: middle; }
.ffp-buy table.variations label { font: 700 10px var(--ff-sans); letter-spacing: .14em; text-transform: uppercase; color: var(--ff-plum); }
.ffp-buy table.variations select {
	width: 100%; max-width: 320px; padding: 12px 18px;
	border: 1px solid var(--ff-line-strong); border-radius: var(--ff-r-pill);
	background: var(--ff-surface); font: 500 14px var(--ff-sans); color: var(--ff-ink);
}
.ffp-buy .reset_variations { font: 600 11px var(--ff-sans); color: var(--ff-pink-deep); }
.ffp-buy .woocommerce-variation-price .price { font-size: clamp(24px, 2.4vw, 32px); margin: 6px 0 12px; }
.ffp-buy .woocommerce-variation-availability { font: 600 12px var(--ff-sans); color: var(--ff-sage-deep); }
.ffp-buy .single_variation_wrap .woocommerce-variation-add-to-cart,
.ffp-buy form.cart:not(.variations_form) { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }

.ffp-buy .quantity { display: flex; align-items: center; margin: 0; }
.ffp-buy .quantity .qty {
	width: 76px; height: 54px; text-align: center;
	border: 1px solid var(--ff-line-strong); border-radius: var(--ff-r-pill);
	background: var(--ff-surface); font: 800 14px var(--ff-sans); color: var(--ff-ink);
}
@keyframes ffp-sweep { 0% { transform: translateX(-120%); } 100% { transform: translateX(220%); } }
.ffp-buy .single_add_to_cart_button {
	position: relative; overflow: hidden; height: 54px; padding: 0 26px; border: none; border-radius: var(--ff-r-pill);
	background: var(--ff-pink); color: var(--ff-ink-deep); cursor: pointer;
	font: 800 11.5px var(--ff-sans); letter-spacing: .1em; text-transform: uppercase;
	box-shadow: 0 12px 26px rgba(224,147,190,.4);
	transition: background .35s, box-shadow .35s, transform .3s;
}
.ffp-buy .single_add_to_cart_button::after {
	content: ''; position: absolute; top: 0; bottom: 0; left: 0; width: 34%;
	background: linear-gradient(100deg, rgba(255,255,255,0), rgba(255,255,255,.5), rgba(255,255,255,0));
	animation: ffp-sweep 2.6s cubic-bezier(.5,0,.4,1) infinite; pointer-events: none;
}
.ffp-buy .single_add_to_cart_button:hover { transform: translateY(-2px); }
.ffp-fav {
	position: absolute; right: 0; bottom: 0;
	width: 54px; height: 54px; flex: none; border-radius: 50%;
	border: 1px solid rgba(224,147,190,.55); background: #fff; cursor: pointer;
	display: flex; align-items: center; justify-content: center;
	color: var(--ff-plum); transition: all .3s;
}
.ffp-fav.is-on { border-color: var(--ff-pink-mid); background: rgba(201,103,159,.1); color: var(--ff-pink-mid); }
.ffp-fav.is-on svg { fill: var(--ff-pink-mid); }

.ffp-taxes { margin: 10px 0 0; font: 400 11.5px/1.6 var(--ff-sans); color: var(--ff-ink-55); }
.ffp-gocart { display: block; margin-top: 11px; text-align: center; font: 700 10px var(--ff-sans); letter-spacing: .16em; text-transform: uppercase; color: var(--ff-ink-55); }
.ffp-gocart:hover { color: var(--ff-plum); }

.ffp-facts { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 20px; }
.ffp-facts span {
	display: flex; align-items: center; gap: 7px; padding: 8px 13px; border-radius: var(--ff-r-pill);
	background: rgba(224,147,190,.1); font: 600 11px var(--ff-sans); color: var(--ff-plum);
}
.ffp-facts i { color: var(--ff-pink-mid); font-style: normal; }

.ffp-accs { margin-top: 20px; }
.ffp-acc { border-radius: 0; background: none; border: none; border-top: 1px solid rgba(224,147,190,.3); }
.ffp-acc.is-open { box-shadow: none; border-color: rgba(224,147,190,.3); }
.ffp-accs::after { content: ''; display: block; border-top: 1px solid rgba(224,147,190,.3); }
.ffp-acc button { padding: 15px 2px; }
.ffp-acc .ffh-faq__body > div { padding-left: 2px; }

.ffp-related { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(44vw, 206px), 1fr)); gap: clamp(14px, 1.6vw, 22px); margin-top: 20px; }

/* -------------------------------------------- Barre d'achat mobile */

.ffp-bar {
	position: fixed; left: 10px; right: 10px;
	bottom: calc(64px + env(safe-area-inset-bottom, 0px) + 8px);
	z-index: 69;
	display: none; align-items: center; gap: 12px;
	padding: 9px 10px;
	background: rgba(255,253,251,.97);
	backdrop-filter: blur(16px) saturate(1.4); -webkit-backdrop-filter: blur(16px) saturate(1.4);
	border: 1px solid rgba(224,147,190,.35);
	border-radius: 20px;
	box-shadow: 0 -2px 8px rgba(58,33,53,.04), 0 14px 34px rgba(58,33,53,.18);
	animation: ffp-barin .35s cubic-bezier(.22,.9,.26,1);
}
@keyframes ffp-barin { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
.ffp-bar__img {
	width: 44px; height: 44px; flex: none;
	border-radius: 13px; object-fit: cover;
	background: var(--ff-clay);
	box-shadow: 0 3px 8px rgba(58,33,53,.14);
}
.ffp-bar__txt { flex: 1; min-width: 0; }
.ffp-bar__txt b {
	display: block; font: 600 13.5px/1.2 var(--ff-serif); color: var(--ff-ink);
	white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
	letter-spacing: .005em;
}
.ffp-bar__txt span {
	display: flex; align-items: baseline; gap: 5px; margin-top: 2px;
	font: 800 14px var(--ff-sans); color: var(--ff-plum);
	font-variant-numeric: tabular-nums;
}
.ffp-bar__txt .ff-card__from { font: 600 9px var(--ff-sans); letter-spacing: .06em; text-transform: uppercase; color: var(--ff-ink-55); }
.ffp-bar__btn {
	flex: none; height: 42px; padding: 0 18px; border: none; border-radius: var(--ff-r-pill);
	background: linear-gradient(120deg, var(--ff-pink), var(--ff-pink-mid)); color: #fff; cursor: pointer;
	font: 800 9.5px var(--ff-sans); letter-spacing: .12em; text-transform: uppercase;
	box-shadow: 0 8px 18px rgba(201,103,159,.42);
	transition: transform .2s, box-shadow .2s;
}
.ffp-bar__btn:active { transform: scale(.97); box-shadow: 0 4px 10px rgba(201,103,159,.4); }
@media (max-width: 980px) {
	.ffp-bar.is-on { display: flex; }
	.ffp { padding-bottom: 74px; }
}

/* ================= Améliorations : image, stepper, prix, select ================= */

/* Image moins envahissante. */
.ffp-gal { max-width: min(100%, 440px); }
.ffp-gal__main { max-height: min(56vh, 470px); aspect-ratio: 1/1; border-radius: 14px; }
@media (max-width: 980px) { .ffp-gal { margin: 0 auto; } }

/* Sélecteur de style : pilule pleine largeur, flèche douce. */
.ffp-buy table.variations select {
	max-width: 100%;
	height: 50px;
	background-color: var(--ff-bg-soft);
	appearance: none; -webkit-appearance: none;
	background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238E3A6B' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat; background-position: right 16px center;
	padding-right: 42px; cursor: pointer;
}
.ffp-buy table.variations select:focus { outline: none; border-color: var(--ff-pink); box-shadow: 0 0 0 3px var(--ff-veil); }

/* Stepper quantité −/+ (habillé en JS autour du champ natif). */
.ffp-qty {
	display: inline-flex; align-items: center; gap: 2px;
	border: 1px solid var(--ff-line-strong); border-radius: var(--ff-r-pill);
	background: var(--ff-surface); overflow: hidden;
}
.ffp-qty button {
	width: 44px; height: 52px; border: none; background: none; cursor: pointer;
	color: var(--ff-plum); font: 700 17px var(--ff-sans);
	transition: background .2s;
}
.ffp-qty button:hover { background: var(--ff-veil); }
.ffp-qty .qty, .ffp-buy .ffp-qty .quantity .qty {
	width: 40px; height: 52px; border: none; border-radius: 0;
	background: none; text-align: center;
	font: 800 15px var(--ff-sans); color: var(--ff-ink);
	-moz-appearance: textfield;
}
.ffp-qty .qty::-webkit-outer-spin-button, .ffp-qty .qty::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.ffp-qty .quantity { margin: 0; }
.ffp-qty .qty:focus { outline: none; }

/* Prix : le prix principal se met à jour à la sélection — le doublon natif est masqué. */
.ffp-buy .woocommerce-variation-price { display: none; }
.ffp-buy .price del { opacity: .55; }
.ffp-buy .price .ffp-price-note {
	display: inline-block; margin-left: 10px; vertical-align: middle;
	padding: 5px 11px; border-radius: var(--ff-r-pill);
	background: rgba(168,183,158,.2); color: var(--ff-sage-deep);
	font: 700 10px var(--ff-sans); letter-spacing: .12em; text-transform: uppercase;
}

/* Toast de confirmation d'ajout au panier. */
@keyframes ffp-toastin { from { opacity: 0; transform: translate(-50%, 16px); } to { opacity: 1; transform: translate(-50%, 0); } }
.ffp-toast {
	position: fixed; left: 50%; bottom: 30px; z-index: 130; transform: translateX(-50%);
	display: flex; align-items: center; gap: 12px;
	padding: 14px 18px 14px 22px; border-radius: var(--ff-r-pill);
	background: var(--ff-ink); color: #fff;
	font: 600 13px var(--ff-sans);
	box-shadow: 0 18px 44px rgba(51,39,46,.4);
	animation: ffp-toastin .35s ease;
	max-width: min(92vw, 480px);
}
.ffp-toast i {
	flex: none; display: flex; align-items: center; justify-content: center;
	width: 22px; height: 22px; border-radius: 50%;
	background: var(--ff-sage); color: var(--ff-ink-deep); font-style: normal; font-weight: 800;
}
.ffp-toast a {
	flex: none; padding: 8px 14px; border-radius: var(--ff-r-pill);
	background: var(--ff-pink); color: var(--ff-ink-deep);
	font: 800 10px var(--ff-sans); letter-spacing: .12em; text-transform: uppercase;
}

/* ---- Style en pastilles : le select est caché, les pastilles pilotent ---- */
.ffp-has-styles table.variations select { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.ffp-styles { display: flex; flex-wrap: wrap; gap: 8px; }
.ffp-style {
	border: 1.5px solid rgba(224,147,190,.55); border-radius: var(--ff-r-pill);
	background: #fff; padding: 10px 16px; cursor: pointer;
	font: 700 12px var(--ff-sans); color: var(--ff-ink); transition: all .2s;
}
.ffp-style:hover { border-color: var(--ff-pink); background: rgba(224,147,190,.1); }
.ffp-style.is-on {
	background: var(--ff-ink); border-color: var(--ff-ink); color: #fff;
	box-shadow: 0 8px 18px rgba(51,39,46,.25);
}
.ffp-style.is-on::before { content: '\2713' '  '; color: var(--ff-pink); }
.ffp-has-styles .reset_variations { margin-top: 6px; display: inline-block; }
.ffp-has-styles .reset_variations { display: none !important; }

/* Pastilles de style compactes (web + mobile). */
.ffp-styles { gap: 6px; }
.ffp-style { padding: 7px 12px; font-size: 11px; border-width: 1px; }
.ffp-buy table.variations td, .ffp-buy table.variations th { padding: 0 0 5px; }
.ffp-buy table.variations { margin: 0 0 10px; }

/* Mobile : le cœur favori ne chevauche plus le bouton d'ajout. */
@media (max-width: 980px) {
	.ffp-buy { position: relative; }
	.ffp-buy form.cart { padding-right: 56px; }
	.ffp-fav { width: 46px; height: 46px; bottom: 4px; }
	.ffp-fav svg { width: 16px; height: 16px; }
}

/* En-tête du choix de style : consigne, puis choix retenu. */
.ffp-has-styles table.variations th.label { display: none; }
.ffp-styles__head { margin: 0 0 7px; font: 600 12px var(--ff-sans); color: var(--ff-ink-70); }
.ffp-styles__head b { color: var(--ff-ink); font-weight: 800; }
.ffp-styles__head em { font-style: normal; font-size: 10.5px; color: var(--ff-ink-55); }
.ffp-styles__head.is-warn { color: var(--ff-pink-deep); }
.ffp-styles__head.is-warn em { color: var(--ff-pink-deep); font-weight: 700; }

/* Sans style choisi : les pastilles se secouent et s'illuminent. */
@keyframes ffp-nudge {
	0%, 100% { transform: translateX(0); }
	15% { transform: translateX(-7px); }
	35% { transform: translateX(6px); }
	55% { transform: translateX(-4px); }
	75% { transform: translateX(3px); }
}
.ffp-styles.is-nudge { animation: ffp-nudge .55s ease; }
.ffp-styles.is-nudge .ffp-style {
	border-color: var(--ff-pink);
	box-shadow: 0 0 0 3px rgba(224,147,190,.28);
}

/* Mobile : quantité + ajouter + cœur sur une seule rangée, tailles douces ;
   pastilles en rangée défilante. */
@media (max-width: 980px) {
	/* Les options passent à la ligne : une rangée qui défile horizontalement
	   masquait les choix suivants sans le moindre indice visuel — la cliente
	   croyait que le produit n'en proposait que quatre. */
	.ffp-styles { flex-wrap: wrap; }
	.ffp-style { flex: none; max-width: 100%; }

	.ffp-buy .woocommerce-variation-add-to-cart,
	.ffp-buy form.cart:not(.variations_form) { display: flex; flex-wrap: nowrap; align-items: center; gap: 8px; }
	.ffp-qty { flex: none; }
	.ffp-qty button { width: 34px; height: 44px; font-size: 15px; }
	.ffp-qty .qty, .ffp-qty input { height: 44px; }
	.ffp-buy .single_add_to_cart_button {
		flex: 1; min-width: 0; height: 46px; padding: 0 12px;
		font-size: 10px; letter-spacing: .08em; white-space: nowrap;
	}
	.ffp-buy form.cart { padding-right: 54px; }

}

/* États de stock de la variante. */
.ffp-price-note--out { background: rgba(165,72,76,.12) !important; color: #A5484C !important; }
.ffp-price-note--back { background: rgba(196,151,60,.14) !important; color: #8a6620 !important; }
.ffp-var-out .single_add_to_cart_button,
.ffp-buy .single_add_to_cart_button.disabled,
.ffp-buy .single_add_to_cart_button.wc-variation-is-unavailable {
	background: rgba(51,39,46,.18) !important; color: rgba(51,39,46,.5) !important;
	box-shadow: none !important; cursor: not-allowed; pointer-events: auto;
}
.ffp-var-out .single_add_to_cart_button::after { animation: none; content: none; }

/* Groupes d'attributs empilés proprement. */
.ffp-buy table.variations tr + tr .ffp-styles__head { margin-top: 4px; }
.ffp-styles { margin-bottom: 4px; }
/* Ligne de disponibilité Woo : couleurs cohérentes. */
.ffp-buy .stock.out-of-stock { color: #A5484C; font-weight: 600; }
.ffp-buy .stock.available-on-backorder { color: #8a6620; font-weight: 600; }
.ffp-buy .stock.in-stock { color: var(--ff-sage-deep); }

/* ---- Combinaison en rupture : retour visuel sans alerte native ---- */
.ffp-price-note--out.is-shake {
	animation: ffpShake .55s cubic-bezier(.36, .07, .19, .97) both;
}
@keyframes ffpShake {
	10%, 90% { transform: translateX(-1px); }
	20%, 80% { transform: translateX(3px); }
	30%, 50%, 70% { transform: translateX(-5px); }
	40%, 60% { transform: translateX(5px); }
}
.ffp-style.is-hint {
	animation: ffpHint 1.1s ease both;
}
@keyframes ffpHint {
	0% { box-shadow: 0 0 0 0 rgba(142, 58, 107, 0); }
	40% { box-shadow: 0 0 0 7px rgba(142, 58, 107, .16); transform: translateY(-2px); border-color: var(--ff-plum, #8E3A6B); }
	100% { box-shadow: 0 0 0 0 rgba(142, 58, 107, 0); transform: translateY(0); }
}
body .ffp-toast-out {
	--ffx: -50%;
	position: fixed;
	left: 50%;
	bottom: 28px;
	transform: translateX(var(--ffx));
	z-index: 9999;
	display: flex;
	align-items: center;
	gap: 12px;
	max-width: min(430px, calc(100vw - 32px));
	padding: 13px 20px 13px 14px;
	background: #fff;
	border: 1px solid #F2D7D7;
	border-radius: 16px;
	box-shadow: 0 18px 44px rgba(60, 22, 44, .18);
	animation: ffpToastIn .45s cubic-bezier(.2, .9, .3, 1.2) both;
}
body .ffp-toast-out.is-hide { animation: ffpToastOut .45s ease both; }
body .ffp-toast-out i {
	flex: 0 0 auto;
	display: grid;
	place-items: center;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: #F7E7E7;
	color: #A5484C;
	font-style: normal;
	font-weight: 700;
	font-size: 13px;
}
body .ffp-toast-out span {
	min-width: 0;
	font: 500 12.5px/1.45 var(--ff-sans);
	color: var(--ff-ink-70, #5C4F55);
}
body .ffp-toast-out span b {
	display: block;
	font: 700 11px/1.3 var(--ff-sans);
	letter-spacing: .12em;
	text-transform: uppercase;
	color: #A5484C;
}
@keyframes ffpToastIn {
	from { opacity: 0; transform: translateX(var(--ffx, -50%)) translateY(18px) scale(.96); }
	to { opacity: 1; transform: translateX(var(--ffx, -50%)) translateY(0) scale(1); }
}
@keyframes ffpToastOut {
	from { opacity: 1; transform: translateX(var(--ffx, -50%)) translateY(0); }
	to { opacity: 0; transform: translateX(var(--ffx, -50%)) translateY(14px); }
}
@media (max-width: 760px) {
	/* Bannière pleine largeur : un élément fixé avec left:50% ne dispose
	   que d'une demi-fenêtre pour se poser — on ancre donc aux deux bords. */
	body .ffp-toast-out {
		--ffx: 0;
		left: 14px;
		right: 14px;
		max-width: none;
		bottom: calc(84px + env(safe-area-inset-bottom, 0px));
		padding: 12px 16px;
		border-radius: 14px;
		box-shadow: 0 14px 34px rgba(60, 22, 44, .22);
	}
	body .ffp-toast-out span { font-size: 12px; }
	/* Au-dessus de la barre d'achat flottante quand elle est affichée. */
	body .ffp-toast-out--abar { bottom: calc(146px + env(safe-area-inset-bottom, 0px)); }
	body .ffp-toast-out i { width: 26px; height: 26px; font-size: 12px; }
}


/* ---- Beaucoup d'options : repli progressif ----
   Au-delà de trois rangées, le bloc est replié et un bouton révèle le
   reste. Tout reste accessible, rien ne sort de l'écran, et la zone
   d'achat ne se retrouve pas repoussée très bas. */
.ffp-styles--clamp {
	position: relative;
	overflow: hidden;
	max-height: var(--ffp-clamp, 116px);
}
.ffp-styles--clamp::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0;
	height: 26px;
	background: linear-gradient(to bottom, rgba(255, 253, 251, 0), var(--ff-surface, #fff));
	pointer-events: none;
}
.ffp-styles.is-open { max-height: none; }
.ffp-styles.is-open::after { display: none; }
.ffp-styles__more {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	margin: 8px 0 0;
	padding: 6px 2px;
	border: none;
	background: none;
	cursor: pointer;
	font: 700 11.5px var(--ff-sans);
	color: var(--ff-plum);
	text-decoration: underline;
	text-underline-offset: 3px;
}
.ffp-styles__more svg { transition: transform .25s; }
.ffp-styles__more[aria-expanded="true"] svg { transform: rotate(180deg); }
.ffp-styles__more:hover { color: var(--ff-pink-deep); }
