/* Décor du Lutin, injecté par core/home.html (blocs extra_css + body_end).
   Apparition « Toasty » latérale + overlay de révélation, animations par
   palier. Piloté en JS pur par les événements DOM sb:goblin.*. */
#goblin-overlay {
  position:fixed; inset:0; z-index:50; display:flex; align-items:center; justify-content:center;
  background:rgba(12,10,9,.9); padding:20px; --tc:var(--tier-common);
}
#goblin-overlay[hidden] { display:none; }
#goblin-overlay[data-tier="rare"] { --tc:var(--tier-rare); }
#goblin-overlay[data-tier="epic"] { --tc:var(--tier-epic); }
#goblin-overlay[data-tier="legendary"] { --tc:var(--tier-legendary); }
.goblin-close {
  position:absolute; top:16px; right:16px; width:40px; height:40px;
  border:0; border-radius:50%; background:var(--card); color:var(--ink);
  font-size:1.1rem; cursor:pointer; line-height:1;
}
.goblin-close:hover { background:var(--border); }
#goblin-fireworks {
  position:absolute; inset:0; z-index:0; width:100%; height:100%; pointer-events:none;
}
#goblin-fireworks[hidden] { display:none; }
.goblin-card {
  position:relative; z-index:1;
  background:var(--card); border:2px solid var(--tc); border-radius:18px;
  padding:28px 26px; text-align:center; max-width:360px; width:100%;
}
.goblin-card[hidden] { display:none; }

/* --- Apparition « Toasty » : le lutin glisse sur un bord de l'écran ------
   Pas d'overlay, pas de carte : juste le visuel, ratable si on ne tape pas
   à temps. Durée pilotée par GoblinConfig.onscreen_seconds. */
#goblin-toasts {
  position:fixed; inset:0; z-index:45; overflow:hidden; pointer-events:none;
}
#goblin-toasts[hidden] { display:none; }
.goblin-toast {
  position:absolute; padding:0; border:0; background:none; line-height:0;
  cursor:pointer; pointer-events:auto; -webkit-tap-highlight-color:transparent;
  transition:transform .45s cubic-bezier(.22,1.2,.36,1), opacity .3s ease;
  --tc:var(--tier-common);
}
.goblin-toast[data-tier="rare"] { --tc:var(--tier-rare); }
.goblin-toast[data-tier="epic"] { --tc:var(--tier-epic); }
.goblin-toast[data-tier="legendary"] { --tc:var(--tier-legendary); }
.goblin-toast .goblin-sprite {
  display:block; width:112px; height:112px; object-fit:contain;
}
.goblin-toast .goblin-sprite-fallback {
  display:block; width:112px; height:112px;
  font-size:80px; line-height:112px; text-align:center;
}
.goblin-toast.side-left  { left:0;  transform:translateX(calc(-100% - 24px)); }
.goblin-toast.side-right { right:0; transform:translateX(calc(100% + 24px)); }
.goblin-toast.is-in { transform:translateX(0); }
.goblin-toast.is-out { opacity:0; }
/* halo croissant selon la rareté */
.goblin-toast[data-tier="rare"] .goblin-sprite,
.goblin-toast[data-tier="rare"] .goblin-sprite-fallback {
  filter:drop-shadow(0 0 6px var(--tc));
}
.goblin-toast[data-tier="epic"] .goblin-sprite,
.goblin-toast[data-tier="epic"] .goblin-sprite-fallback {
  filter:drop-shadow(0 0 8px var(--tc)) drop-shadow(0 0 20px var(--tc));
}
.goblin-toast[data-tier="legendary"] .goblin-sprite,
.goblin-toast[data-tier="legendary"] .goblin-sprite-fallback {
  filter:drop-shadow(0 0 10px var(--tc)) drop-shadow(0 0 26px var(--tc));
}
.goblin-toast[data-tier="epic"] { animation:goblin-toast-bob 1.1s ease-in-out infinite; }
.goblin-toast[data-tier="legendary"] { animation:goblin-toast-bob .8s ease-in-out infinite; }
@keyframes goblin-toast-bob { 0%,100% { translate:0 0; } 50% { translate:0 -7px; } }
.goblin-flash {
  position:fixed; left:50%; bottom:118px; transform:translateX(-50%);
  z-index:46; background:var(--card); border:1px solid var(--border);
  color:var(--ink); padding:10px 16px; border-radius:999px; font-size:.9rem;
  box-shadow:0 6px 20px -8px rgba(0,0,0,.6);
}
.goblin-flash[hidden] { display:none; }
@media (prefers-reduced-motion:reduce) {
  .goblin-toast { transition:opacity .25s ease; animation:none; }
  .goblin-toast.side-left, .goblin-toast.side-right { transform:translateX(0); opacity:0; }
  .goblin-toast.is-in { opacity:1; }
}

/* --- animations par rareté : rien (commun) -> scintille -> brille -> feux --- */
#goblin-overlay[data-tier="rare"] .goblin-card { animation:glow-soft 2.6s ease-in-out infinite; }
#goblin-overlay[data-tier="epic"] .goblin-card { animation:glow-strong 1.9s ease-in-out infinite; }
#goblin-overlay[data-tier="legendary"] .goblin-card { animation:glow-max 1.5s ease-in-out infinite; }
@keyframes glow-soft {
  0%,100% { box-shadow:0 0 0 rgba(0,0,0,0); }
  50% { box-shadow:0 0 16px -2px var(--tc); }
}
@keyframes glow-strong {
  0%,100% { box-shadow:0 0 12px -2px var(--tc); }
  50% { box-shadow:0 0 32px 1px var(--tc), 0 0 60px -14px var(--tc); }
}
@keyframes glow-max {
  0%,100% { box-shadow:0 0 18px 0 var(--tc); }
  50% { box-shadow:0 0 44px 6px var(--tc), 0 0 90px -10px var(--tc); }
}
/* balayage lumineux (épique + légendaire) */
#goblin-overlay[data-tier="epic"] .goblin-reveal,
#goblin-overlay[data-tier="legendary"] .goblin-reveal { overflow:hidden; }
#goblin-overlay[data-tier="epic"] .goblin-reveal::after,
#goblin-overlay[data-tier="legendary"] .goblin-reveal::after {
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  background:linear-gradient(115deg,transparent 42%,rgba(255,255,255,.16) 50%,transparent 58%);
  background-size:250% 100%; animation:sheen 2.6s linear infinite;
}
@keyframes sheen { from { background-position:130% 0; } to { background-position:-130% 0; } }
/* étincelles (rare + épique) */
.spark {
  position:absolute; width:4px; height:4px; border-radius:50%; background:#fff;
  box-shadow:0 0 6px 1px var(--tc); opacity:0; pointer-events:none;
  animation:twinkle 1.6s ease-in-out infinite;
}
#goblin-overlay[data-tier="epic"] .spark { width:6px; height:6px; box-shadow:0 0 10px 2px var(--tc); }
@keyframes twinkle {
  0%,100% { opacity:0; transform:scale(.3); }
  50% { opacity:1; transform:scale(1); }
}
@media (prefers-reduced-motion:reduce) {
  #goblin-overlay .goblin-card,
  #goblin-overlay .goblin-reveal::after,
  .spark { animation:none; }
  .spark { opacity:.7; }
}
.goblin-card .goblin-tier { color:var(--tc); text-transform:capitalize; }

.goblin-reveal .reveal-badge {
  display:inline-block; text-transform:uppercase; letter-spacing:.14em;
  font-size:.7rem; font-weight:700; padding:5px 12px; border-radius:999px;
  color:var(--bg); background:var(--tc); margin-bottom:14px;
}
.goblin-reveal h2 { font-size:1.5rem; margin:0; color:var(--tc); }
.reveal-prize { margin:8px 0 0; }
.reveal-clock {
  margin:22px auto 0; padding:18px; border-radius:14px;
  border:2px solid var(--tc); max-width:280px;
}
.reveal-date { text-transform:capitalize; color:var(--soft); font-size:.9rem; }
.reveal-time {
  font-variant-numeric:tabular-nums; font-size:2.3rem; font-weight:700;
  letter-spacing:.04em; margin:2px 0;
}
.reveal-since { font-size:.82rem; }
.reveal-pulse {
  width:14px; height:14px; border-radius:50%; background:var(--tc);
  margin:20px auto 0; animation:pulse 1.4s ease-in-out infinite;
}
@keyframes pulse { 0%,100%{transform:scale(1);opacity:1} 50%{transform:scale(1.9);opacity:.35} }
@media (prefers-reduced-motion:reduce){ .reveal-pulse{animation:none} }
