/* ==========================================================================
   Sport Pulse : colonne « Meilleurs bonus » et cadeau Unibet (bouton fixe en bas de l'écran)
   (inc/bonus.php : sp_bloc_bonus, sp_cadeau_unibet ; assets/js/cadeau.js).
   Chargé sur TOUTES les pages, après commun.css.
   Cartes : famille des encarts .offre du Quinté+ (filet, rayon, logo carré),
   bouton sombre qui passe au rouge (comparateur), montant en bleu comme les
   offres sport de « Meilleurs sites de paris ».
   Cadeau : vert du logo Unibet, pastilles vertes de la créa de pronostic
   (article.css, .sp-prono__marque). Le clignotement n'anime que l'opacité et
   la transformation, et s'arrête avec prefers-reduced-motion.
   ========================================================================== */

:root {
  --unibet: #147B44;        /* fond du logo Unibet (op-unibet.png) */
  --unibet-fonce: #0F6537;  /* survol, bouton ouvert */
  --unibet-vif: #3DAE49;    /* pastilles du logo, comme .sp-prono__marque */
}

/* ---------- Meilleurs bonus : une carte par site (logo, offre, S'inscrire, 18+) ---------- */
.bonus__liste {
  margin-top: 12px; display: grid; gap: 10px;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
}
.bonus-carte {
  display: flex; flex-direction: column; min-width: 0; overflow: hidden;
  background: var(--blanc); border: 1px solid var(--bordure); border-radius: var(--rayon);
  transition: border-color .15s ease, box-shadow .15s ease;
}
.bonus-carte:hover { border-color: var(--bordure-2); box-shadow: 0 2px 10px rgba(15, 23, 32, .07); }
.bonus-carte__lien {
  flex: 1 1 auto; display: grid; grid-template-columns: 48px minmax(0, 1fr) auto; align-items: center; gap: 12px;
  padding: 12px; color: inherit; text-decoration: none;
}
.bonus-carte__lien:focus-visible { outline-offset: -3px; }
.bonus-carte__logo { width: 48px; height: 48px; border-radius: 8px; object-fit: cover; background: var(--fond); }
.bonus-carte__logo--texte { display: grid; place-items: center; font-weight: 700; font-size: 15px; color: var(--texte-2); }
.bonus-carte__texte { min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.bonus-carte__nom { font-weight: 600; font-size: 13px; line-height: 1.2; color: var(--texte-3); }
.bonus-carte__offre {
  font-family: var(--police-etroite); font-weight: 700; font-size: 16.5px; line-height: 1.12;
  letter-spacing: .01em; text-transform: uppercase; color: var(--texte); text-wrap: pretty;
}
.bonus-carte__montant { font-weight: 700; font-size: 1.36em; line-height: 1; color: var(--bleu); white-space: nowrap; }
.bonus-carte__bouton {
  display: inline-flex; align-items: center; justify-content: center; padding: 10px 11px 9px; border-radius: 3px;
  background: var(--texte); color: #fff; white-space: nowrap;
  font-family: var(--police-etroite); font-weight: 700; font-size: 14.5px; line-height: 1;
  letter-spacing: .04em; text-transform: uppercase;
  transition: background-color .15s ease;
}
.bonus-carte__lien:hover .bonus-carte__bouton { background: var(--rouge); }
.bonus-carte__mention {
  padding: 7px 12px 8px; background: var(--fond); border-top: 1px solid var(--bordure);
  font-size: 11.5px; line-height: 1.4; color: var(--texte-3);
}
.bonus-carte__mention strong { font-weight: 700; color: var(--texte-2); }

/* ---------- Cadeau Unibet : bouton de base (fixé en bas à droite de l'écran par .cadeau--flottant, plus bas) ---------- */
.cadeau { position: relative; justify-self: end; }
.cadeau__bouton {
  position: relative; width: 44px; height: 44px; display: grid; place-items: center; padding: 0;
  border: 0; border-radius: var(--rayon); background: var(--unibet); color: #fff; cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.cadeau__bouton:hover, .cadeau--ouvert .cadeau__bouton { background: var(--unibet-fonce); }
.cadeau__icone { position: relative; z-index: 1; width: 24px; height: 24px; }
/* Clignotement doux : un éclat clair sur le bouton et un halo vert qui s'élargit, puis une pause */
.cadeau__bouton::before, .cadeau__bouton::after {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; opacity: 0;
}
.cadeau__bouton::before { background: rgba(255, 255, 255, .22); animation: cadeau-eclat 2.8s ease-in-out infinite; }
.cadeau__bouton::after { box-shadow: 0 0 0 3px var(--unibet-vif); animation: cadeau-halo 2.8s ease-out infinite; }
@keyframes cadeau-eclat {
  0%, 46%, 100% { opacity: 0; }
  14% { opacity: 1; }
}
@keyframes cadeau-halo {
  0% { opacity: .85; transform: scale(1); }
  46%, 100% { opacity: 0; transform: scale(1.32); }
}
/* Bulle ouverte, ou déjà vue sur cette page : le bouton ne clignote plus */
.cadeau--ouvert .cadeau__bouton::before, .cadeau--ouvert .cadeau__bouton::after,
.cadeau--vu .cadeau__bouton::before, .cadeau--vu .cadeau__bouton::after { animation: none; opacity: 0; }

/* Bulle : sous le bouton, calée à droite, flèche vers le cadeau (modèle : bulle bwin de Scores24, en vert Unibet) */
.cadeau__bulle {
  position: absolute; top: calc(100% + 12px); right: -6px; z-index: 30;
  width: min(340px, calc(100vw - 24px)); padding: 16px 16px 12px;
  background: var(--unibet); color: #fff; border-radius: 10px; text-align: left;
  box-shadow: 0 18px 40px rgba(15, 23, 32, .26), 0 2px 6px rgba(15, 23, 32, .12);
  transform-origin: calc(100% - 28px) 0;
  animation: cadeau-ouverture .16s ease-out;
}
.cadeau__bulle::before {
  content: ""; position: absolute; top: -6px; right: 21px; width: 14px; height: 14px;
  background: var(--unibet); border-radius: 2px 0 0 0; transform: rotate(45deg);
}
@keyframes cadeau-ouverture {
  from { opacity: 0; transform: translateY(-4px) scale(.97); }
  to { opacity: 1; transform: none; }
}
.cadeau__bulle :focus-visible { outline-color: #fff; }
.cadeau__fermer {
  position: absolute; top: 6px; right: 6px; width: 36px; height: 36px; display: grid; place-items: center; padding: 0;
  border: 0; border-radius: 4px; background: none; color: #fff; cursor: pointer;
}
.cadeau__fermer:hover { background: rgba(255, 255, 255, .14); }
.cadeau__fermer svg { width: 20px; height: 20px; }
.cadeau__haut { display: flex; align-items: center; gap: 14px; padding-right: 30px; }
/* Marque Unibet : mot blanc et six pastilles vertes (comme .sp-prono__marque d'article.css) */
.cadeau__marque {
  flex: none; position: relative; padding-bottom: 11px;
  font-weight: 700; font-size: 22px; line-height: 1; letter-spacing: .03em; text-transform: uppercase;
  -webkit-text-stroke: .4px #fff;
}
.cadeau__marque::after {
  content: ""; position: absolute; left: 50%; bottom: 0; width: 54px; height: 7px; transform: translateX(-50%);
  background: radial-gradient(circle closest-side, var(--unibet-vif) 88%, transparent 100%) 0 0 / 9px 7px repeat-x;
}
.cadeau__titre {
  min-width: 0; padding-left: 14px; border-left: 1px solid rgba(255, 255, 255, .24);
  font-family: var(--police-etroite); font-weight: 700; font-size: 24px; line-height: 1.02;
  letter-spacing: .01em; text-transform: uppercase; text-wrap: balance;
}
.cadeau__montant { font-weight: 700; font-size: 1.25em; white-space: nowrap; }
.cadeau__inscription {
  display: flex; align-items: center; justify-content: center; margin-top: 14px; padding: 13px 14px 12px;
  border-radius: 4px; background: #fff; color: var(--unibet); text-decoration: none;
  font-family: var(--police-etroite); font-weight: 700; font-size: 17px; line-height: 1;
  letter-spacing: .05em; text-transform: uppercase;
  transition: background-color .15s ease;
}
.cadeau__inscription:hover { background: #E6F4EA; }
.cadeau__mention { margin-top: 10px; font-size: 11.5px; line-height: 1.4; color: rgba(255, 255, 255, .88); }
.cadeau__mention strong { font-weight: 700; color: #fff; }

/* Variante flottante (footer.php, toutes les pages) : bouton rond fixe en bas à droite, bulle ouverte au-dessus */
.cadeau--flottant { position: fixed; right: 22px; bottom: calc(22px + env(safe-area-inset-bottom, 0px)); z-index: 60; }
.cadeau--flottant .cadeau__bouton {
  width: 62px; height: 62px; border-radius: 50%;
  box-shadow: 0 10px 26px rgba(15, 23, 32, .3), 0 2px 6px rgba(15, 23, 32, .14);
}
.cadeau--flottant .cadeau__icone { width: 29px; height: 29px; }
.cadeau--flottant .cadeau__bulle {
  top: auto; bottom: calc(100% + 14px); right: 0;
  transform-origin: calc(100% - 31px) 100%; animation-name: cadeau-ouverture-haut;
}
.cadeau--flottant .cadeau__bulle::before { top: auto; bottom: -6px; right: 24px; border-radius: 0 0 2px 0; }
@keyframes cadeau-ouverture-haut {
  from { opacity: 0; transform: translateY(6px) scale(.97); }
  to { opacity: 1; transform: none; }
}

@media (max-width: 760px) {
  .cadeau__titre { font-size: 22px; }
  .cadeau--flottant { right: 14px; bottom: calc(14px + env(safe-area-inset-bottom, 0px)); }
  .cadeau--flottant .cadeau__bouton { width: 56px; height: 56px; }
  .cadeau--flottant .cadeau__bulle { right: -2px; }
  .pied { padding-bottom: calc(84px + env(safe-area-inset-bottom, 0px)); } /* le bouton ne cache pas la mention légale */
  /* Menu tiroir ouvert (header.php, attribut hidden retiré) : le bouton fixe ne recouvre pas ses derniers liens */
  body:has(#tiroir:not([hidden])) .cadeau--flottant { display: none; }
}

@media (prefers-reduced-motion: reduce) {
  .cadeau__bouton::before, .cadeau__bouton::after { animation: none; opacity: 0; }
  .cadeau__bulle { animation: none; }
  .bonus-carte, .bonus-carte__bouton, .cadeau__inscription { transition: none; }
}

@media print {
  .cadeau { display: none; }
}

/* Menu tiroir ouvert, à toutes les largeurs (tablette en paysage comprise) : le cadeau ne recouvre pas ses liens */
body:has(#tiroir:not([hidden])) .cadeau--flottant { display: none; }
