/* Ellohost — moteur de thèmes saisonniers (décor + accents).
   INACTIF par défaut : rien ne s'affiche tant que le backend n'a pas activé un thème
   (seasonal.mode!=="off" && theme!=="classic"), ou tant qu'aucun override ?season= n'est présent.
   Perf : uniquement transform/opacity (GPU), pointer-events:none, aucun layout shift,
   couche décor en z-index:-1 (derrière le contenu, au-dessus du fond clair). */

/* ---------- Accents par thème (variables CSS, appliquées sur <body>) ---------- */
body.season-halloween   {--se-a:#ff7a18;--se-b:#8b3df0;--se-c:#ffb703;--se-glow:#ff7a1855}
body.season-noel        {--se-a:#e63946;--se-b:#2a9d4a;--se-c:#e3b23c;--se-glow:#e3b23c55}
body.season-blackfriday {--se-a:#c6ff00;--se-b:#00e5ff;--se-c:#ffffff;--se-glow:#c6ff0040;--se-dark:#07070f}
body.season-cybermonday {--se-a:#00e5ff;--se-b:#b14bff;--se-c:#ffffff;--se-glow:#00e5ff40;--se-dark:#07070f}
body.season-newyear     {--se-a:#ffd166;--se-b:#6a4dff;--se-c:#ff4d8d;--se-glow:#ffd16655}

/* Accent discret et sûr : la sélection de texte reprend la couleur du thème.
   On ne touche PAS au dégradé de marque ni à la mise en page. */
body[class*="season-"] ::selection{background:var(--se-a,#6a4dff);color:#fff}

/* ---------- Couche décorative ---------- */
#ello-season-fx{
  position:fixed;inset:0;pointer-events:none;z-index:-1;overflow:hidden;
  contain:strict;will-change:contents;
}
#ello-season-fx .se-item{position:absolute;top:0;left:0;will-change:transform,opacity}

/* Réduire le mouvement : aucune animation (la couche n'est de toute façon pas injectée par le JS). */
@media (prefers-reduced-motion:reduce){
  #ello-season-fx .se-item{animation:none!important}
}

/* ---------- Halloween : chauves-souris qui traversent + lune discrète ---------- */
.se-bat{width:var(--sz,42px);color:var(--se-a);opacity:.0;
  animation:se-bat-fly var(--dur,14s) linear var(--delay,0s) infinite;}
.se-bat svg{display:block;width:100%;height:auto;transform-origin:center;
  animation:se-flap .35s ease-in-out infinite alternate}
@keyframes se-flap{from{transform:scaleY(.72)}to{transform:scaleY(1.05)}}
@keyframes se-bat-fly{
  0%{transform:translate3d(-12vw,var(--y0,20vh),0);opacity:0}
  8%{opacity:.85}
  50%{transform:translate3d(56vw,var(--y1,34vh),0)}
  92%{opacity:.85}
  100%{transform:translate3d(118vw,var(--y2,14vh),0);opacity:0}
}
.se-moon{right:6vw;top:8vh;width:clamp(90px,10vw,150px);height:clamp(90px,10vw,150px);
  border-radius:50%;background:radial-gradient(circle at 38% 36%,#fff7e6,#ffd98a 60%,#f4b942 100%);
  box-shadow:0 0 60px 10px var(--se-glow);opacity:.45;animation:se-glow 6s ease-in-out infinite}
@keyframes se-glow{50%{opacity:.7}}

/* ---------- Noël : neige + guirlande ---------- */
.se-flake{width:var(--sz,9px);height:var(--sz,9px);border-radius:50%;
  background:#fff;box-shadow:0 0 6px #ffffffcc;opacity:.0;
  animation:se-fall var(--dur,11s) linear var(--delay,0s) infinite}
@keyframes se-fall{
  0%{transform:translate3d(var(--x,10vw),-6vh,0);opacity:0}
  10%{opacity:.9}
  90%{opacity:.9}
  100%{transform:translate3d(calc(var(--x,10vw) + var(--drift,4vw)),106vh,0);opacity:0}
}
.se-garland{top:0;left:0;right:0;width:100%;height:26px;
  background:
    radial-gradient(circle at 10px 6px,var(--se-a) 0 4px,transparent 5px),
    radial-gradient(circle at 34px 6px,var(--se-c) 0 4px,transparent 5px),
    radial-gradient(circle at 58px 6px,var(--se-b) 0 4px,transparent 5px);
  background-size:72px 24px;background-repeat:repeat-x;opacity:.6;
  animation:se-twinkle 2.4s steps(2,jump-none) infinite}
@keyframes se-twinkle{50%{opacity:.3}}

/* ---------- Nouvel An : confettis ---------- */
.se-confetti{width:var(--sz,9px);height:calc(var(--sz,9px) * 1.6);background:var(--col,#ffd166);
  opacity:0;border-radius:2px;
  animation:se-fall-rot var(--dur,9s) linear var(--delay,0s) infinite}
@keyframes se-fall-rot{
  0%{transform:translate3d(var(--x,10vw),-8vh,0) rotate(0deg);opacity:0}
  10%{opacity:1}
  90%{opacity:1}
  100%{transform:translate3d(calc(var(--x,10vw) + var(--drift,6vw)),108vh,0) rotate(540deg);opacity:0}
}

/* ---------- Black Friday / Cyber Monday : halos néon qui dérivent ---------- */
.se-orb{width:var(--sz,260px);height:var(--sz,260px);border-radius:50%;
  background:radial-gradient(circle,var(--col,#00e5ff) 0%,transparent 68%);
  filter:blur(26px);opacity:.0;
  animation:se-drift var(--dur,20s) ease-in-out var(--delay,0s) infinite}
@keyframes se-drift{
  0%{transform:translate3d(var(--x0,10vw),var(--y0,20vh),0) scale(.9);opacity:.18}
  50%{transform:translate3d(var(--x1,60vw),var(--y1,60vh),0) scale(1.15);opacity:.32}
  100%{transform:translate3d(var(--x0,10vw),var(--y0,20vh),0) scale(.9);opacity:.18}
}

/* ---------- Bandeau de saison (discret, en haut de page) ---------- */
#ello-season-banner{
  display:block;text-align:center;padding:11px 46px 11px 18px;position:relative;
  background:linear-gradient(100deg,var(--se-a,#6a4dff),var(--se-b,#0098d6));
  color:#fff;font-weight:750;font-size:14.5px;line-height:1.35;letter-spacing:.01em}
#ello-season-banner a{color:inherit;text-decoration:none}
#ello-season-banner a:hover{text-decoration:underline}
#ello-season-banner .se-ban-close{
  position:absolute;right:12px;top:50%;transform:translateY(-50%);
  background:transparent;border:0;color:#fff;font-size:20px;line-height:1;
  opacity:.8;padding:4px 8px;border-radius:8px}
#ello-season-banner .se-ban-close:hover{opacity:1;background:#ffffff22}

/* ---------- Compte à rebours (BF/CM) : pastille discrète ---------- */
.ello-season-countdown{
  position:fixed;left:12px;bottom:12px;z-index:55;pointer-events:none;
  display:inline-flex;align-items:center;gap:9px;
  padding:9px 14px;border-radius:999px;
  background:rgba(7,7,15,.92);color:#fff;
  border:1px solid var(--se-a,#00e5ff);box-shadow:0 0 18px var(--se-glow,#00e5ff40);
  font-weight:800;font-size:13px;letter-spacing:.02em;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.ello-season-countdown .se-cd-label{font-weight:700;opacity:.85;text-transform:uppercase;font-size:11px;letter-spacing:.08em}
.ello-season-countdown .se-cd-time{color:var(--se-a,#00e5ff);font-variant-numeric:tabular-nums}
@media(max-width:640px){.ello-season-countdown{font-size:12px;padding:7px 11px;left:8px;bottom:8px}}

/* ---------- Promo produit : prix barré + badge -X% (piloté par ellocms-live.js) ---------- */
.ello-reg-price{display:inline-block;margin-left:10px;font-size:15px;font-weight:700;color:#8a8fa8;vertical-align:middle}
.ello-reg-price s{color:#8a8fa8}
.ello-pill-pct{background:linear-gradient(110deg,#ff3459,#a629dc)!important}
.ello-promo-countdown{display:block;margin:8px 0 0;font-size:13px;font-weight:800;color:#c0205a}
.ello-promo-countdown .se-cd-time{font-variant-numeric:tabular-nums}
