/* ==========================================================================
   StoreLocatore — Promos (v2.4)
   Page Promos, bouton flottant, bande de la fiche restaurant, lecteur story.
   Couleurs et polices : réglages globaux d'Elementor s'ils existent (--e-global-*),
   sinon valeurs par défaut. Jaune promo et bandeau : réglages des promos (:root).
   ========================================================================== */

.tfmsl-promos-scope,
.tfmsl-story {
	--tfp-ink: var(--e-global-color-text, #2B1406);
	--tfp-title: var(--e-global-color-primary, var(--tfp-ink));
	--tfp-muted: var(--e-global-color-secondary, #6B4A3A);
	--tfp-btn: var(--e-global-color-accent, #C8400A);
	--tfp-btn-hover: color-mix(in srgb, var(--tfp-btn) 84%, #000);
	--tfp-on-yellow: #2B1406;
	--tfp-card: #FFFFFF;
	--tfp-tile: color-mix(in srgb, var(--tfp-ink) 7%, #FFFFFF);
	--tfp-line: color-mix(in srgb, var(--tfp-ink) 12%, transparent);
	--tfp-r: 20px;
	--tfp-r-sm: 12px;
	--tfp-font-title: var(--e-global-typography-primary-font-family, inherit);
	--tfp-font-btn: var(--e-global-typography-accent-font-family, var(--tfp-font-title));
	--tfp-font-text: var(--e-global-typography-text-font-family, inherit);
	color: var(--tfp-ink);
	font-family: var(--tfp-font-text);
	box-sizing: border-box;
}
.tfmsl-promos-scope *, .tfmsl-promos-scope *::before, .tfmsl-promos-scope *::after,
.tfmsl-story *, .tfmsl-story *::before, .tfmsl-story *::after { box-sizing: border-box; }
.tfmsl-promos-scope [hidden], .tfmsl-story [hidden] { display: none !important; }
.tfmsl-pi { width: 1.15em; height: 1.15em; flex: none; }
.tfmsl-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
:where(.tfmsl-promos-scope, .tfmsl-story) button { font: inherit; cursor: pointer; }
/* Thèmes (Hello Elementor…) : leurs styles de bouton (bordure, fond coloré au survol ou au focus)
   ne s'appliquent pas ici. Chaque bouton règle ses couleurs par variables : --b-bg, --b-fg, --b-bg-h, --b-fg-h, --b-shadow. */
.tfmsl-promos-scope button[class*="tfmsl-"], .tfmsl-promos-scope button[data-tfmsl-tab], .tfmsl-story button[class*="tfmsl-"] {
	border: 0; background: var(--b-bg, transparent); color: var(--b-fg, inherit); box-shadow: var(--b-shadow, none); text-transform: none; letter-spacing: normal; text-decoration: none;
}
.tfmsl-promos-scope button[class*="tfmsl-"]:is(:hover, :focus), .tfmsl-promos-scope button[data-tfmsl-tab]:is(:hover, :focus), .tfmsl-story button[class*="tfmsl-"]:is(:hover, :focus) {
	background: var(--b-bg-h, var(--b-bg, transparent)); color: var(--b-fg-h, var(--b-fg, inherit)); box-shadow: var(--b-shadow, none);
}
.tfmsl-promos-scope a[class*="tfmsl-"], .tfmsl-story a[class*="tfmsl-"] { text-decoration: none; }
.tfmsl-promos-scope :focus-visible, .tfmsl-story :focus-visible { outline: 3px solid var(--tfp-btn); outline-offset: 2px; }

/* ── Une promo : carte par défaut (grille) ──────────────────────────────── */
.tfmsl-promo { position: relative; display: flex; flex-direction: column; min-width: 0; background: var(--tfp-card); border-radius: var(--tfp-r); overflow: hidden; }
.tfmsl-promo__media { position: relative; background: var(--tfp-tile); }
.tfmsl-promo__square, .tfmsl-promo__story { display: block; width: 100%; object-fit: cover; }
.tfmsl-promo__square { aspect-ratio: 1 / 1; }
.tfmsl-promo__story { display: none; aspect-ratio: 9 / 16; }
.tfmsl-promo__exclu {
	position: absolute; top: 12px; left: 12px; z-index: 1; display: inline-flex; align-items: center; height: 30px; padding: 0 12px;
	border-radius: 999px; background: var(--tfp-band); color: var(--tfp-on-yellow); font-size: 13px; font-weight: 700; line-height: 1;
}
.tfmsl-promo__badge {
	position: absolute; right: 14px; bottom: -16px; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center;
	padding: 8px 14px; border-radius: 16px; background: var(--tfp-yellow, #FFC21A); color: var(--tfp-on-yellow);
	font-family: var(--tfp-font-title); font-weight: 600; line-height: 1; transform: rotate(-6deg); box-shadow: 0 8px 20px rgba(0, 0, 0, .14); text-align: center;
}
.tfmsl-promo__kicker { font-size: 11px; letter-spacing: .6px; text-transform: uppercase; margin-bottom: 3px; }
.tfmsl-promo__price { font-size: 24px; white-space: nowrap; }
.tfmsl-promo__old { margin-top: 3px; font-size: 11px; font-weight: 500; text-decoration: line-through; white-space: nowrap; }
.tfmsl-promo__body { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; padding: 22px 20px 20px; flex-grow: 1; }
.tfmsl-promo__left {
	display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 11px; border-radius: 999px;
	background: var(--tfp-ink); color: #FFFFFF; font-size: 13px; font-weight: 600; line-height: 1;
}
.tfmsl-promo__left .tfmsl-pi { color: var(--tfp-yellow, #FFC21A); width: 15px; height: 15px; }
.tfmsl-promos-scope .tfmsl-promo__title { margin: 0; font-family: var(--tfp-font-title); font-weight: 600; font-size: 22px; line-height: 1.15; color: var(--tfp-title); }
.tfmsl-promo__pitch { margin: 0; font-size: 16px; line-height: 1.5; color: var(--tfp-muted); }
.tfmsl-promo__until { margin: 0; font-size: 14px; color: var(--tfp-muted); }
.tfmsl-promo__terms { margin: 0; font-size: 12px; color: var(--tfp-muted); opacity: .85; }
.tfmsl-promo__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: auto; padding-top: 6px; }
.tfmsl-promo__cta, .tfmsl-promo__flyer {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 46px; padding: 0 18px; border: 0; border-radius: var(--tfp-r-sm);
	font-family: var(--tfp-font-btn); font-weight: 600; font-size: 16px; line-height: 1; text-decoration: none; transition: background .2s, transform .2s;
}
.tfmsl-promos-scope .tfmsl-promo__cta { background: var(--tfp-btn); color: #FFFFFF; }
.tfmsl-promos-scope .tfmsl-promo__cta:hover { background: var(--tfp-btn-hover); color: #FFFFFF; }
.tfmsl-promo__flyer { --b-bg: var(--tfp-tile); --b-fg: var(--tfp-ink); --b-bg-h: color-mix(in srgb, var(--tfp-ink) 12%, #FFFFFF); }
.tfmsl-promo__flyer .tfmsl-pi { width: 14px; height: 14px; }

/* ── Page Promos ────────────────────────────────────────────────────────── */
.tfmsl-pp { display: flex; flex-direction: column; gap: 24px; width: 100%; }
.tfmsl-pp__hero { display: flex; flex-wrap: wrap; align-items: center; gap: 32px 40px; padding: clamp(24px, 4vw, 48px); border-radius: 32px; background: var(--tfp-band); }
.tfmsl-pp__intro { flex: 1 1 380px; display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.tfmsl-pp__eyebrow { margin: 0; font-family: var(--tfp-font-title); font-weight: 600; font-size: 15px; letter-spacing: 1px; text-transform: uppercase; color: var(--tfp-on-yellow); }
.tfmsl-promos-scope .tfmsl-pp__title { margin: 0; font-family: var(--tfp-font-title); font-weight: 600; font-size: clamp(38px, 5vw, 64px); line-height: 1; color: #FFFFFF; }
.tfmsl-pp__lead { margin: 0; font-size: 19px; line-height: 1.5; color: var(--tfp-on-yellow); }
.tfmsl-pp__locate { flex: 1 1 340px; max-width: 460px; display: flex; flex-direction: column; gap: 12px; padding: 20px; border-radius: 24px; background: var(--tfp-card); }
.tfmsl-pp__locate-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; }
.tfmsl-promos-scope .tfmsl-pp__locate-title { margin: 0; font-family: var(--tfp-font-title); font-weight: 600; font-size: 20px; color: var(--tfp-title); }
.tfmsl-pp__geo {
	display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 14px; border-radius: var(--tfp-r-sm);
	--b-bg: var(--tfp-ink); --b-fg: #FFFFFF; font-family: var(--tfp-font-btn); font-weight: 600; font-size: 15px;
}
.tfmsl-pp__geo .tfmsl-pi { color: var(--tfp-yellow, #FFC21A); }
.tfmsl-pp__geo[aria-busy="true"] { opacity: .7; }
.tfmsl-pp__current { display: flex; align-items: center; gap: 10px; margin: 0; padding: 12px 14px; border-radius: 14px; background: var(--tfp-tile); font-size: 16px; }
.tfmsl-pp__current .tfmsl-pi, .tfmsl-fab__store .tfmsl-pi { color: var(--tfp-btn); }
.tfmsl-pp__dist { margin-left: 6px; color: var(--tfp-muted); font-weight: 400; }
.tfmsl-pp__dist:empty { display: none; }
.tfmsl-pp__nearest { display: flex; flex-direction: column; gap: 6px; }
.tfmsl-pp__near {
	display: flex; align-items: center; gap: 10px; width: 100%; min-height: 48px; padding: 6px 12px; border-radius: 12px; text-align: left;
	--b-bg: var(--tfp-card); --b-fg: var(--tfp-ink); --b-shadow: inset 0 0 0 1px var(--tfp-line);
}
.tfmsl-pp__near[aria-pressed="true"] { --b-shadow: inset 0 0 0 2px var(--tfp-btn); }
.tfmsl-pp__near span { flex-grow: 1; }
.tfmsl-pp__near small { color: var(--tfp-muted); font-size: 14px; }
.tfmsl-pp__select-label { font-size: 14px; font-weight: 600; color: var(--tfp-muted); }
.tfmsl-promos-scope .tfmsl-pp__select { width: 100%; min-height: 46px; padding: 0 12px; border: 1px solid var(--tfp-line); border-radius: var(--tfp-r-sm); background: var(--tfp-card); color: var(--tfp-ink); font: inherit; font-size: 16px; }
.tfmsl-pp__status { margin: 0; font-size: 14px; color: var(--tfp-muted); }
.tfmsl-pp__status:empty { display: none; }

.tfmsl-pp__bar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px; margin-top: 16px; }
.tfmsl-promos-scope .tfmsl-pp__at { margin: 0; font-family: var(--tfp-font-title); font-weight: 600; font-size: clamp(26px, 3vw, 36px); line-height: 1.1; color: var(--tfp-title); }
.tfmsl-pp__tabs, .tfmsl-fab__tabs { display: flex; gap: 4px; padding: 4px; border-radius: 14px; background: var(--tfp-tile); }
.tfmsl-pp__tabs [role="tab"], .tfmsl-fab__tabs [role="tab"] {
	display: inline-flex; align-items: center; justify-content: center; gap: 6px; min-height: 44px; padding: 0 18px; border-radius: 10px;
	--b-bg: transparent; --b-fg: var(--tfp-ink); --b-bg-h: color-mix(in srgb, var(--tfp-ink) 8%, transparent); font-family: var(--tfp-font-btn); font-weight: 600; font-size: 16px;
}
.tfmsl-pp__tabs [aria-selected="true"], .tfmsl-fab__tabs [aria-selected="true"] { --b-bg: var(--tfp-ink); --b-fg: #FFFFFF; --b-bg-h: var(--tfp-ink); }
.tfmsl-pp__count { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px; padding: 0 6px; border-radius: 999px; background: var(--tfp-yellow, #FFC21A); color: var(--tfp-on-yellow); font-size: 13px; line-height: 1; }
.tfmsl-pp__count:empty { display: none; }

.tfmsl-pp__list { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 24px; }
.tfmsl-pp__list > .tfmsl-promo.is-featured { grid-column: 1 / -1; flex-direction: row; flex-wrap: wrap; align-items: center; gap: 0; border-radius: 32px; }
.tfmsl-pp__list > .is-featured .tfmsl-promo__media { flex: 0 0 300px; margin: 28px 0 28px 28px; border-radius: 24px; overflow: visible; background: transparent; }
.tfmsl-pp__list > .is-featured .tfmsl-promo__story { display: block; border-radius: 24px; }
.tfmsl-pp__list > .is-featured .tfmsl-promo__square { display: none; }
.tfmsl-pp__list > .is-featured .tfmsl-promo__body { flex: 1 1 380px; gap: 14px; padding: 32px 40px; }
.tfmsl-promos-scope .tfmsl-pp__list > .is-featured .tfmsl-promo__title { font-size: clamp(34px, 4vw, 52px); line-height: 1.02; }
.tfmsl-pp__list > .is-featured .tfmsl-promo__pitch { font-size: 19px; max-width: 560px; }
.tfmsl-pp__list > .is-featured .tfmsl-promo__badge { right: -22px; bottom: 28px; padding: 12px 20px; border-radius: 22px; }
.tfmsl-pp__list > .is-featured .tfmsl-promo__price { font-size: 44px; }
.tfmsl-pp__list > .is-featured .tfmsl-promo__kicker { font-size: 13px; }
.tfmsl-pp__list > .is-featured .tfmsl-promo__cta, .tfmsl-pp__list > .is-featured .tfmsl-promo__flyer { min-height: 52px; padding: 0 24px; font-size: 17px; }
@media (max-width: 767px) {
	.tfmsl-pp__list { grid-template-columns: minmax(0, 1fr); gap: 16px; }
	.tfmsl-pp__list > .tfmsl-promo.is-featured { flex-direction: column; align-items: stretch; border-radius: 24px; }
	.tfmsl-pp__list > .is-featured .tfmsl-promo__media { flex: none; margin: 0; border-radius: 0; }
	.tfmsl-pp__list > .is-featured .tfmsl-promo__story { border-radius: 0; max-height: 520px; }
	.tfmsl-pp__list > .is-featured .tfmsl-promo__badge { right: 16px; bottom: -20px; }
	.tfmsl-pp__list > .is-featured .tfmsl-promo__body { padding: 26px 20px 20px; }
	.tfmsl-pp__list > .is-featured .tfmsl-promo__actions { width: 100%; }
	.tfmsl-pp__list > .is-featured .tfmsl-promo__cta { flex: 1 1 100%; }
	.tfmsl-pp__list > .is-featured .tfmsl-promo__flyer { flex: 1 1 100%; }
	/* Autres promos : lignes compactes */
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) { display: grid; grid-template-columns: 96px minmax(0, 1fr); align-items: center; border-radius: 18px; }
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__media { margin: 10px; border-radius: 14px; overflow: hidden; }
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__badge { right: auto; left: 46px; bottom: -6px; padding: 4px 8px; border-radius: 10px; }
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__price { font-size: 15px; }
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__kicker,
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__old,
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__exclu,
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__pitch,
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__terms,
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__left,
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__cta { display: none; }
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__body { padding: 10px 14px 10px 4px; gap: 4px; }
	.tfmsl-promos-scope .tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__title { font-size: 18px; }
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__actions { position: static; margin: 0; padding: 0; }
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__flyer { --b-bg: transparent; --b-bg-h: transparent; position: absolute; inset: 0; z-index: 3; min-height: 0; padding: 0; border-radius: 18px; background: transparent; font-size: 0; }
	.tfmsl-pp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__flyer .tfmsl-pi { display: none; }
}
.tfmsl-pp__empty { margin: 0; padding: 28px; border-radius: var(--tfp-r); background: var(--tfp-card); text-align: center; font-size: 17px; color: var(--tfp-muted); }

.tfmsl-pp__app { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; padding: 28px; border-radius: 24px; background: var(--tfp-ink); color: #FFFFFF; }
.tfmsl-pp__app > div { flex: 1 1 260px; display: flex; flex-direction: column; gap: 6px; }
.tfmsl-pp__app-icon { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; border-radius: 14px; background: rgba(255, 255, 255, .1); color: var(--tfp-yellow, #FFC21A); }
.tfmsl-pp__app-icon .tfmsl-pi { width: 26px; height: 26px; }
.tfmsl-promos-scope .tfmsl-pp__app-title { margin: 0; font-family: var(--tfp-font-title); font-weight: 600; font-size: 24px; color: #FFFFFF; }
.tfmsl-pp__app-text { margin: 0; font-size: 16px; line-height: 1.5; color: rgba(255, 255, 255, .82); }
.tfmsl-promos-scope .tfmsl-pp__app-btn { display: inline-flex; align-items: center; min-height: 46px; padding: 0 20px; border-radius: var(--tfp-r-sm); background: var(--tfp-yellow, #FFC21A); color: var(--tfp-on-yellow); font-family: var(--tfp-font-btn); font-weight: 600; font-size: 16px; text-decoration: none; }

/* ── Bande de la fiche restaurant ───────────────────────────────────────── */
.tfmsl-promos-strip-wrap { margin-top: 24px; margin-bottom: 8px; }
.tfmsl-sp { display: flex; flex-direction: column; gap: 16px; }
.tfmsl-sp__head { display: flex; flex-wrap: wrap; align-items: center; gap: 12px; }
.tfmsl-sp__icon { display: flex; align-items: center; justify-content: center; width: 40px; height: 40px; border-radius: 12px; background: var(--tfp-ink); color: var(--tfp-yellow, #FFC21A); }
.tfmsl-promos-scope .tfmsl-sp__title { margin: 0; font-family: var(--tfp-font-title); font-weight: 600; font-size: clamp(22px, 2.5vw, 30px); line-height: 1.15; color: var(--tfp-title); }
.tfmsl-sp__count { display: inline-flex; align-items: center; height: 28px; padding: 0 10px; border-radius: 999px; background: var(--tfp-yellow, #FFC21A); color: var(--tfp-on-yellow); font-weight: 700; font-size: 14px; }
.tfmsl-promos-scope .tfmsl-sp__all { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; font-family: var(--tfp-font-btn); font-weight: 600; font-size: 16px; color: var(--tfp-btn); text-decoration: none; }
.tfmsl-sp__list { display: flex; gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 6px; }
.tfmsl-sp__list > .tfmsl-promo { flex: 0 0 auto; scroll-snap-align: start; }
.tfmsl-sp__list > .is-featured { flex: 1 0 min(640px, 88%); flex-direction: row; flex-wrap: wrap; border-radius: 24px; }
.tfmsl-sp__list > .is-featured .tfmsl-promo__media { flex: 0 0 min(300px, 100%); }
.tfmsl-sp__list > .is-featured .tfmsl-promo__square { height: 100%; min-height: 260px; }
.tfmsl-sp__list > .is-featured .tfmsl-promo__badge { bottom: 16px; right: -18px; }
.tfmsl-sp__list > .is-featured .tfmsl-promo__body { flex: 1 1 260px; justify-content: center; gap: 12px; padding: 28px; }
.tfmsl-promos-scope .tfmsl-sp__list > .is-featured .tfmsl-promo__title { font-size: clamp(28px, 3vw, 38px); line-height: 1.04; }
/* Autres promos : vignettes story */
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) { width: 169px; min-height: 300px; border-radius: 24px; background: var(--tfp-ink); }
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__media { position: absolute; inset: 0; }
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__story { display: block; height: 100%; aspect-ratio: auto; }
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__square,
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__badge,
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__exclu,
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__pitch,
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__terms,
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__left,
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__cta { display: none; }
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__body { position: absolute; left: 0; right: 0; bottom: 0; padding: 12px 14px; gap: 2px; background: var(--tfp-ink); }
.tfmsl-promos-scope .tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__title { font-size: 17px; color: #FFFFFF; }
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__until { font-size: 13px; color: rgba(255, 255, 255, .8); }
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__actions { margin: 0; padding: 0; }
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__flyer { --b-bg: transparent; --b-bg-h: transparent; position: absolute; inset: 0; z-index: 3; min-height: 0; padding: 0; border-radius: 24px; background: transparent; font-size: 0; }
.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__flyer .tfmsl-pi { display: none; }
@media (max-width: 767px) {
	.tfmsl-sp__list > .is-featured { flex-direction: column; flex-basis: 290px; flex-wrap: nowrap; }
	.tfmsl-sp__list > .is-featured .tfmsl-promo__media { flex: none; }
	.tfmsl-sp__list > .is-featured .tfmsl-promo__square { min-height: 0; height: auto; }
	.tfmsl-sp__list > .is-featured .tfmsl-promo__badge { bottom: -16px; right: 12px; }
	.tfmsl-sp__list > .is-featured .tfmsl-promo__body { padding: 24px 16px 16px; }
	.tfmsl-sp__list > .is-featured .tfmsl-promo__pitch { display: none; }
	.tfmsl-sp__list > .is-featured .tfmsl-promo__flyer { display: none; }
	.tfmsl-sp__list > .is-featured .tfmsl-promo__cta { width: 100%; }
	.tfmsl-sp__list > .tfmsl-promo:not(.is-featured) { width: 160px; min-height: 0; align-self: stretch; }
}
/* Fiche au style sombre : cartes translucides, textes clairs. */
.tfmsl-store-page:not(.tfmsl-skin-light) .tfmsl-sp {
	--tfp-ink: var(--tfmsl-text, #F0F0F0);
	--tfp-title: var(--tfmsl-text, #F0F0F0);
	--tfp-muted: color-mix(in srgb, var(--tfmsl-text, #F0F0F0) 70%, transparent);
	--tfp-btn: var(--tfmsl-accent, #E94560);
	--tfp-card: color-mix(in srgb, var(--tfmsl-text, #F0F0F0) 8%, transparent);
	--tfp-tile: color-mix(in srgb, var(--tfmsl-text, #F0F0F0) 12%, transparent);
	--tfp-font-title: var(--tfmsl-font, inherit);
	--tfp-font-btn: var(--tfmsl-font, inherit);
	--tfp-font-text: var(--tfmsl-font, inherit);
}
.tfmsl-store-page:not(.tfmsl-skin-light) .tfmsl-sp__icon { background: var(--tfp-tile); }
.tfmsl-store-page:not(.tfmsl-skin-light) .tfmsl-sp__list > .tfmsl-promo:not(.is-featured),
.tfmsl-store-page:not(.tfmsl-skin-light) .tfmsl-sp__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__body { background: #111; }
.tfmsl-store-page:not(.tfmsl-skin-light) .tfmsl-promo__left { background: rgba(0, 0, 0, .45); }

/* ── Bouton flottant ────────────────────────────────────────────────────── */
.tfmsl-fab { position: fixed; right: 24px; bottom: 24px; z-index: 9990; display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.tfmsl-fab__btn {
	position: relative; display: inline-flex; align-items: center; gap: 8px; height: 56px; padding: 0 22px 0 18px; border-radius: 999px;
	--b-bg: var(--tfp-ink); --b-fg: #FFFFFF; --b-shadow: 0 10px 28px rgba(0, 0, 0, .28); font-family: var(--tfp-font-btn); font-weight: 600; font-size: 17px; line-height: 1;
	transition: transform .2s;
}
.tfmsl-fab__btn:hover { transform: translateY(-2px); }
.tfmsl-fab__btn .tfmsl-pi { width: 22px; height: 22px; color: var(--tfp-yellow, #FFC21A); }
.tfmsl-fab__icon-open { display: inline-flex; }
.tfmsl-fab__icon-close, .tfmsl-fab.is-open .tfmsl-fab__icon-open { display: none; }
.tfmsl-fab.is-open .tfmsl-fab__icon-close { display: inline-flex; }
.tfmsl-fab__count {
	position: absolute; top: -6px; right: -4px; display: inline-flex; align-items: center; justify-content: center; min-width: 24px; height: 24px; padding: 0 6px;
	border: 2px solid #FFFFFF; border-radius: 999px; background: var(--tfp-yellow, #FFC21A); color: var(--tfp-on-yellow); font-size: 13px;
}
.tfmsl-fab__count:empty, .tfmsl-fab.is-open .tfmsl-fab__count { display: none; }
.tfmsl-fab.has-new .tfmsl-fab__btn::after {
	content: ""; position: absolute; inset: 0; border-radius: inherit; box-shadow: 0 0 0 0 var(--tfp-yellow, #FFC21A); animation: tfmsl-fab-pulse 1.8s ease-out 3;
}
@keyframes tfmsl-fab-pulse { 0% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--tfp-yellow, #FFC21A) 70%, transparent); } 100% { box-shadow: 0 0 0 16px transparent; } }
.tfmsl-fab__hint {
	max-width: 240px; margin: 0; padding: 10px 14px; border-radius: 16px 16px 4px 16px; background: var(--tfp-card); color: var(--tfp-ink);
	font-size: 14px; line-height: 1.35; box-shadow: 0 8px 24px rgba(0, 0, 0, .16);
}
.tfmsl-fab__backdrop { position: fixed; inset: 0; z-index: -1; background: transparent; }
@media (max-width: 767px) { .tfmsl-fab__backdrop { background: rgba(0, 0, 0, .45); } }
.tfmsl-fab__panel {
	position: absolute; right: 0; bottom: 72px; width: 392px; max-height: min(640px, calc(100vh - 140px)); overflow-y: auto; overscroll-behavior: contain;
	display: flex; flex-direction: column; gap: 14px; padding: 20px; border-radius: 24px;
	background: color-mix(in srgb, var(--tfp-ink) 3%, #FFFFFF); box-shadow: 0 24px 60px rgba(0, 0, 0, .28);
}
.tfmsl-fab__grip { display: none; }
.tfmsl-fab__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.tfmsl-promos-scope .tfmsl-fab__title { margin: 0; font-family: var(--tfp-font-title); font-weight: 600; font-size: 24px; color: var(--tfp-title); }
.tfmsl-fab__close { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border-radius: 999px; --b-bg: var(--tfp-tile); --b-fg: var(--tfp-ink); --b-bg-h: color-mix(in srgb, var(--tfp-ink) 14%, #FFFFFF); }
.tfmsl-fab__store { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-height: 48px; padding: 6px 6px 6px 12px; border-radius: 14px; background: var(--tfp-card); font-size: 15px; }
.tfmsl-fab__store-name { flex: 1 1 140px; }
.tfmsl-fab__geo, .tfmsl-promos-scope .tfmsl-fab__change {
	display: inline-flex; align-items: center; min-height: 36px; padding: 0 12px; border-radius: 10px; background: var(--tfp-tile);
	color: var(--tfp-btn); font-weight: 700; font-size: 14px; text-decoration: none;
}
.tfmsl-fab__geo { --b-bg: var(--tfp-tile); --b-fg: var(--tfp-btn); --b-bg-h: color-mix(in srgb, var(--tfp-ink) 14%, #FFFFFF); }
.tfmsl-fab__tabs [role="tab"] { flex: 1; font-size: 15px; padding: 0 10px; }
.tfmsl-fab__list { display: flex; flex-direction: column; gap: 10px; }
/* Promo à la une du panneau */
.tfmsl-fab__list > .is-featured .tfmsl-promo__square { aspect-ratio: auto; height: 190px; }
.tfmsl-fab__list > .is-featured .tfmsl-promo__body { padding: 20px 16px 16px; }
.tfmsl-fab__list > .is-featured .tfmsl-promo__pitch, .tfmsl-fab__list > .is-featured .tfmsl-promo__terms, .tfmsl-fab__list > .is-featured .tfmsl-promo__until { display: none; }
.tfmsl-fab__list > .is-featured .tfmsl-promo__actions { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
.tfmsl-fab__list > .is-featured .tfmsl-promo__actions > :only-child { grid-column: 1 / -1; }
/* Autres promos : lignes compactes */
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) { display: grid; grid-template-columns: 72px minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 10px; border-radius: 16px; }
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__media { position: static; width: 72px; height: 72px; border-radius: 12px; overflow: hidden; }
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__square { height: 72px; }
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__badge { position: static; grid-column: 3; grid-row: 1; padding: 5px 9px; border-radius: 10px; box-shadow: none; }
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__price { font-size: 16px; }
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__kicker,
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__old,
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__exclu,
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__pitch,
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__terms,
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__left,
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__cta { display: none; }
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__body { grid-column: 2; grid-row: 1; padding: 0; gap: 3px; }
.tfmsl-promos-scope .tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__title { font-size: 17px; }
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__until { font-size: 13px; }
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__actions { margin: 0; padding: 0; }
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__flyer { --b-bg: transparent; --b-bg-h: transparent; position: absolute; inset: 0; z-index: 3; min-height: 0; padding: 0; border-radius: 16px; background: transparent; font-size: 0; }
.tfmsl-fab__list > .tfmsl-promo:not(.is-featured) .tfmsl-promo__flyer .tfmsl-pi { display: none; }
.tfmsl-promos-scope .tfmsl-fab__all { display: flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; border-radius: var(--tfp-r-sm); background: var(--tfp-btn); color: #FFFFFF; font-family: var(--tfp-font-btn); font-weight: 600; font-size: 16px; text-decoration: none; }
.tfmsl-promos-scope .tfmsl-fab__all:hover { background: var(--tfp-btn-hover); color: #FFFFFF; }
.tfmsl-fab .tfmsl-pp__empty { padding: 18px; font-size: 15px; }

@media (max-width: 767px) {
	.tfmsl-fab { right: 16px; bottom: var(--tfp-fab-bottom-m, 24px); }
	.tfmsl-fab__panel {
		position: fixed; left: 0; right: 0; bottom: 0; width: auto; max-height: 88vh; padding: 10px 16px calc(24px + env(safe-area-inset-bottom));
		border-radius: 28px 28px 0 0;
	}
	.tfmsl-fab__grip { display: block; align-self: center; width: 44px; height: 5px; border-radius: 999px; background: var(--tfp-line); }
	.tfmsl-fab.is-open .tfmsl-fab__btn { visibility: hidden; }
}

/* ── Lecteur story ──────────────────────────────────────────────────────── */
.tfmsl-story { position: fixed; inset: 0; z-index: 99999; display: flex; align-items: center; justify-content: center; background: rgba(0, 0, 0, .86); }
.tfmsl-story__frame { position: relative; width: min(420px, 100vw, calc((100vh - 24px) * 9 / 16)); aspect-ratio: 9 / 16; max-height: 100vh; border-radius: 22px; overflow: hidden; background: #000; color: #FFFFFF; }
.tfmsl-story__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.tfmsl-story__shade { position: absolute; left: 0; right: 0; height: 120px; pointer-events: none; }
.tfmsl-story__shade--top { top: 0; background: linear-gradient(rgba(0, 0, 0, .45), transparent); }
.tfmsl-story__shade--bottom { bottom: 0; height: 200px; background: linear-gradient(transparent, rgba(0, 0, 0, .7)); }
.tfmsl-story__bars { position: absolute; top: 10px; left: 10px; right: 10px; z-index: 3; display: flex; gap: 4px; }
.tfmsl-story__bar { flex: 1; height: 3px; border-radius: 999px; background: rgba(255, 255, 255, .4); overflow: hidden; }
.tfmsl-story__bar > i { display: block; height: 100%; width: 0; background: #FFFFFF; }
.tfmsl-story__bar.is-done > i { width: 100%; }
.tfmsl-story__bar.is-active > i { animation: tfmsl-story-progress var(--tfmsl-story-ms, 6000ms) linear forwards; }
.tfmsl-story.is-paused .tfmsl-story__bar.is-active > i { animation-play-state: paused; }
@keyframes tfmsl-story-progress { to { width: 100%; } }
.tfmsl-story__head { position: absolute; top: 24px; left: 14px; right: 6px; z-index: 3; display: flex; align-items: center; gap: 10px; font-size: 14px; line-height: 1.25; text-shadow: 0 1px 6px rgba(0, 0, 0, .5); }
.tfmsl-story__head span { flex-grow: 1; }
.tfmsl-story__close { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; --b-fg: #FFFFFF; --b-bg-h: rgba(255, 255, 255, .14); border-radius: 999px; }
.tfmsl-story__close .tfmsl-pi { width: 26px; height: 26px; }
.tfmsl-story__nav { position: absolute; top: 72px; bottom: 150px; z-index: 2; width: 35%; padding: 0; --b-bg-h: transparent; }
.tfmsl-story__nav--prev { left: 0; }
.tfmsl-story__nav--next { right: 0; width: 65%; }
.tfmsl-story__badge {
	position: absolute; right: 18px; bottom: 150px; z-index: 3; padding: 8px 14px; border-radius: 16px; background: var(--tfp-yellow, #FFC21A); color: #2B1406;
	font-family: var(--e-global-typography-primary-font-family, inherit); font-weight: 600; font-size: 28px; line-height: 1; transform: rotate(-6deg);
}
.tfmsl-story__badge:empty { display: none; }
.tfmsl-story__foot { position: absolute; left: 0; right: 0; bottom: 0; z-index: 3; display: flex; flex-direction: column; gap: 12px; padding: 16px; }
.tfmsl-story__title { margin: 0; font-family: var(--e-global-typography-primary-font-family, inherit); font-weight: 600; font-size: 22px; line-height: 1.15; color: #FFFFFF; }
.tfmsl-story__until { margin: -8px 0 0; font-size: 14px; color: rgba(255, 255, 255, .85); }
.tfmsl-story__until:empty { display: none; }
.tfmsl-story__actions { display: flex; gap: 8px; }
.tfmsl-story__cta {
	flex-grow: 1; display: flex; align-items: center; justify-content: center; min-height: 52px; border-radius: 14px; background: var(--e-global-color-accent, #C8400A);
	color: #FFFFFF; font-family: var(--e-global-typography-accent-font-family, inherit); font-weight: 600; font-size: 17px; text-decoration: none;
}
.tfmsl-story__cta:hover { color: #FFFFFF; filter: brightness(.92); }
.tfmsl-story__share { display: flex; align-items: center; justify-content: center; width: 52px; height: 52px; padding: 0; border-radius: 14px; --b-bg: rgba(255, 255, 255, .16); --b-fg: #FFFFFF; --b-bg-h: rgba(255, 255, 255, .26); }
@media (max-width: 480px) {
	.tfmsl-story__frame { width: 100vw; height: 100vh; height: 100dvh; aspect-ratio: auto; border-radius: 0; }
}

@media (prefers-reduced-motion: reduce) {
	.tfmsl-fab__btn, .tfmsl-promo__cta, .tfmsl-promo__flyer { transition: none; }
	.tfmsl-fab.has-new .tfmsl-fab__btn::after { animation: none; }
	.tfmsl-story__bar.is-active > i { animation: none; width: 100%; }
}
