/* =====================================================================================
   ENCART « OFFRES DE LA BOUTIQUE » de l'accueil (2026-10-22, demande Simon) — js/menu-promo.js.
   Carrousel d'offres RÉELLES (prix lus dans le catalogue : META / UI / catalogue Stripe), visuels animés
   dessinés en code. Habillage = cartes de l'accueil arcade (crème, contour marine, ombre portée basse) :
   pas une bannière de pub. Ancré en bas à droite (desktop) / bas centré (mobile) / haut gauche (paysage court),
   dans #menu → disparaît avec le menu. Rien n'est calculé ici (pas d'animation CSS en boucle).
   ===================================================================================== */
#menu-promo, #menu-promo-pill {
  --mp-ink: #1a3d55; --mp-cream: #fff7e3; --mp-yellow: #ffe36b; --mp-yellow-d: #3b2a00;
  --mp-muted: #4d6a7d;
  font-family: "Arial Rounded MT Bold", "Baloo 2", "Trebuchet MS", "Segoe UI", system-ui, sans-serif;
  box-sizing: border-box;
}
#menu-promo *, #menu-promo-pill * { box-sizing: border-box; }

#menu-promo {
  position: fixed; z-index: 5; right: 16px; bottom: calc(var(--mp-foot, 40px) + 10px);
  width: min(460px, calc(100vw - 32px)); text-align: left; letter-spacing: normal; text-transform: none;
  display: grid; grid-template-columns: var(--mp-cw, 156px) minmax(0, 1fr); gap: 8px 12px;
  padding: 10px 12px 10px 10px;
  background: var(--mp-cream); color: var(--mp-ink);
  border: 3px solid var(--mp-ink); border-radius: 18px;
  box-shadow: 0 5px 0 var(--mp-ink), 0 12px 22px rgba(10, 30, 45, .28);
  transition: opacity .18s ease, transform .18s ease;
}
/* VEDETTES (Grade VIP, Galion Doré, Sucre d'orge) : visuel plus grand, liseré doré */
#menu-promo.is-star { --mp-cw: 206px; box-shadow: 0 5px 0 var(--mp-ink), 0 0 0 3px rgba(255, 209, 74, .75), 0 12px 24px rgba(10, 30, 45, .32); }
#menu-promo.is-star .mpromo-arrow { top: 50px; }
#menu-promo.is-star .mpromo-name { font-size: 19px; }
#menu-promo.is-star .mpromo-kicker { color: #b3590b; }
.mpromo-ico { margin-right: 5px; color: #c98a00; }
.mpromo-perk { display: flex; gap: 5px; align-items: baseline; line-height: 1.3; }
.mpromo-perk i { font-style: normal; font-weight: 800; color: #2f8f3a; }
/* TEASER : rien à acheter, juste un mystère */
#menu-promo.is-teaser { background: #0d1830; color: #dcecff; border-color: #6cc6ff; box-shadow: 0 5px 0 #05101f, 0 0 22px rgba(108, 198, 255, .35); }
#menu-promo.is-teaser .mpromo-name { color: #e6f6ff; font-size: 18px; font-style: italic; }
#menu-promo.is-teaser .mpromo-kicker { color: #8fd0ff; }
#menu-promo.is-teaser .mpromo-cv { border-color: #6cc6ff; }
#menu-promo.is-teaser .mpromo-body { justify-content: center; }
.mpromo-cta[hidden] { display: none; }
.mpromo-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 10px; margin-top: auto; }
.mpromo-row .mpromo-price { margin-top: 0; }
.mpromo-row .mpromo-cta { margin-top: 0; align-self: auto; }
#menu-promo[hidden], #menu-promo-pill[hidden] { display: none !important; }
#menu-promo.is-yield { opacity: 0; transform: translateY(8px); pointer-events: none; }

.mpromo-x {
  position: absolute; top: -13px; right: -9px; z-index: 2;
  width: 30px; height: 30px; padding: 0; border-radius: 50%;
  display: grid; place-items: center; cursor: pointer;
  font: 800 19px/1 inherit; color: var(--mp-cream);
  background: var(--mp-ink); border: 2px solid var(--mp-cream);
  box-shadow: 0 2px 0 rgba(10, 30, 45, .55);
}
.mpromo-x:hover { background: #2a5a7a; }

.mpromo-stage { position: relative; align-self: start; }
.mpromo-cv {
  display: block; width: var(--mp-cw, 156px); height: calc(var(--mp-cw, 156px) * 0.625); border-radius: 12px;
  border: 2px solid var(--mp-ink); background: #2f87a6;
}
.mpromo-arrow {
  position: absolute; top: 34px; width: 24px; height: 30px; padding: 0;
  display: grid; place-items: center; cursor: pointer;
  font: 800 18px/1 inherit; color: #fff; background: rgba(15, 40, 58, .55);
  border: 0; border-radius: 8px; opacity: .8;
}
.mpromo-arrow:hover, .mpromo-arrow:focus-visible { opacity: 1; background: rgba(15, 40, 58, .8); }
.mpromo-arrow--prev { left: 4px; } .mpromo-arrow--next { right: 4px; }
.mpromo-dots { display: flex; justify-content: center; gap: 0; margin-top: 4px; }
.mpromo-dot {
  width: 18px; height: 20px; padding: 0; border: 0; background: none; cursor: pointer;
  display: grid; place-items: center;
}
.mpromo-dot::before {
  content: ""; width: 9px; height: 9px; border-radius: 50%;
  background: #b9c9d3; border: 2px solid var(--mp-ink); transition: background .15s, transform .15s;
}
.mpromo-dot[aria-current="true"]::before { background: var(--mp-yellow); transform: scale(1.2); }

.mpromo-body { min-width: 0; display: flex; flex-direction: column; gap: 3px; padding-top: 2px; }
.mpromo-kicker {
  font: 800 10px/1 inherit; letter-spacing: .09em; text-transform: uppercase; color: #8a5a00;
}
.mpromo-name { font: 800 17px/1.1 inherit; color: var(--mp-ink); overflow-wrap: anywhere; }
.mpromo-hook { font: 700 11.5px/1.25 inherit; color: var(--mp-muted); }
.mpromo-price { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 5px; margin-top: 2px; color: var(--mp-ink); }
.mpromo-price b { font: 800 19px/1 inherit; }
.mpromo-price span, .mpromo-price i { font: 800 12px/1 inherit; font-style: normal; color: var(--mp-muted); }
.mpromo-cta {
  align-self: flex-start; margin-top: auto; padding: 8px 14px; cursor: pointer;
  font: 800 13px/1 inherit; color: var(--mp-yellow-d);
  background: var(--mp-yellow); border: 2.5px solid var(--mp-yellow-d); border-radius: 12px;
  box-shadow: 0 3px 0 var(--mp-yellow-d); transition: transform .08s ease, box-shadow .08s ease;
}
.mpromo-cta:hover { transform: translateY(-1px); box-shadow: 0 4px 0 var(--mp-yellow-d); }
.mpromo-cta:active { transform: translateY(2px); box-shadow: 0 1px 0 var(--mp-yellow-d); }
#menu-promo button:focus-visible, #menu-promo-pill:focus-visible { outline: 3px solid #2fb6ff; outline-offset: 2px; }

/* état réduit : une pastille qui rouvre l'encart */
#menu-promo-pill {
  position: fixed; z-index: 5; right: 16px; bottom: calc(var(--mp-foot, 40px) + 10px);
  display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; cursor: pointer;
  font: 800 13px/1 inherit; color: var(--mp-ink); background: var(--mp-cream);
  border: 3px solid var(--mp-ink); border-radius: 999px; box-shadow: 0 3px 0 var(--mp-ink);
}
#menu-promo-pill.is-yield { opacity: 0; pointer-events: none; }
#menu-promo-pill span { color: #c98a00; }

/* flash de la carte ciblée dans la boutique (clic « Voir l'offre ») */
@keyframes mpromo-flash { 0%, 100% { box-shadow: 0 0 0 0 rgba(47, 182, 255, 0); } 40% { box-shadow: 0 0 0 5px rgba(47, 182, 255, .85); } }
.mpromo-flash { animation: mpromo-flash 1.1s ease 2; border-radius: 16px; }

/* ---- format COMPACT (bas centré, vignette réduite) : classe `is-compact` posée par js/menu-promo.js (syncFoot) quand
   la fenêtre fait moins de 900 px OU dès que l'encart plein format recouvrirait un élément de l'accueil
   (pseudo, drapeau, JOUER, « Autres modes »). Si même le compact recouvre, l'encart se replie seul en pastille. ---- */
#menu-promo.is-compact { right: auto; left: 50%; bottom: calc(var(--mp-foot, 40px) + 4px); transform: translateX(-50%); width: min(380px, calc(100vw - 28px)); grid-template-columns: 104px minmax(0, 1fr); gap: 4px 10px; padding: 6px 10px 6px 6px; }
#menu-promo.is-compact.is-yield { transform: translate(-50%, 8px); }
#menu-promo.is-compact .mpromo-cv { width: 104px; height: 65px; }
#menu-promo.is-compact .mpromo-arrow, #menu-promo.is-compact.is-star .mpromo-arrow { top: 19px; height: 26px; width: 20px; }
#menu-promo.is-compact .mpromo-dots { margin-top: 1px; } #menu-promo.is-compact .mpromo-dot { height: 16px; width: 13px; }
#menu-promo.is-compact.is-star { --mp-cw: 104px; }
#menu-promo.is-compact .mpromo-name, #menu-promo.is-compact.is-star .mpromo-name, #menu-promo.is-compact.is-teaser .mpromo-name { font-size: 15px; }
#menu-promo.is-compact .mpromo-row { flex-direction: column; align-items: flex-start; gap: 3px; }
#menu-promo.is-compact .mpromo-hook, #menu-promo.is-compact .mpromo-kicker { display: none; }   /* la place entre « Autres modes » et le pied de page est comptée */
#menu-promo.is-compact .mpromo-price b { font-size: 17px; }
#menu-promo.is-compact .mpromo-cta { padding: 7px 12px; font-size: 12.5px; }
#menu-promo-pill.is-compact { right: auto; left: 50%; bottom: calc(var(--mp-foot, 40px) + 8px); transform: translateX(-50%); }
/* fenêtre large mais basse/serrée : le compact reste ancré à DROITE (loin du bloc central de l'accueil) */
@media (min-width: 900px) {
  #menu-promo.is-compact { right: 16px; left: auto; transform: none; }
  #menu-promo.is-compact.is-yield { transform: translateY(8px); }
  #menu-promo-pill.is-compact { right: 16px; left: auto; transform: none; }
}
/* 1re visite : le bandeau « données & cookies » occupe le bas de l'écran mobile → l'encart attend son « OK » (display:none ⇒ l'animation s'arrête aussi) */
@media (max-width: 899px) and (min-height: 560px) {
  body:has(#privacy-notice:not(.hidden)) #menu-promo, body:has(#privacy-notice:not(.hidden)) #menu-promo-pill { display: none !important; }
}
/* ---- paysage court (téléphone couché) : coin haut gauche, vignette + texte réduits ---- */
@media (max-height: 559px) {
  #menu-promo { right: auto; left: 10px; top: 10px; bottom: auto; transform: none; width: min(330px, 46vw); grid-template-columns: 96px minmax(0, 1fr); padding: 6px 8px 6px 6px; gap: 4px 8px; }
  #menu-promo.is-yield { transform: translateY(-8px); }
  .mpromo-cv { width: 96px; height: 60px; }
  .mpromo-arrow { top: 16px; height: 24px; }
  .mpromo-hook, .mpromo-kicker { display: none; }
  .mpromo-name { font-size: 14px; }
  .mpromo-price b { font-size: 15px; }
  .mpromo-cta { padding: 6px 10px; font-size: 12px; }
  .mpromo-dots { margin-top: 1px; }
  .mpromo-dot { height: 16px; width: 13px; }
  #menu-promo.is-star { --mp-cw: 96px; }
  #menu-promo.is-star .mpromo-arrow { top: 16px; }
  #menu-promo.is-star .mpromo-name, #menu-promo.is-teaser .mpromo-name { font-size: 14px; }
  #menu-promo-pill { right: auto; left: 10px; top: 10px; bottom: auto; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  #menu-promo, .mpromo-cta, .mpromo-dot::before { transition: none; }
  .mpromo-flash { animation: none; box-shadow: 0 0 0 4px rgba(47, 182, 255, .85); }
}
