/* ============================================================================
   QZR vNext — Mascotte « amplifiée » (mouvements exagérés + accessoires)
   ----------------------------------------------------------------------------
   Couche STRICTEMENT ADDITIVE et OPT-IN par-dessus vnext-mascot.css. Rien ne
   change tant que l'hôte de la mascotte ne porte pas [data-qzr-amp="on"] :
     - amplitude : des keyframes DÉDIÉES (qzrAmp*) — les keyframes de base ne
       sont jamais réécrites, donc les 12 états existants restent identiques ;
     - accessoires : larme / Zzz / cœurs / confettis / points de réflexion,
       injectés cachés (opacity=0) dans le SVG unique (window.qzrMascotSvg) et
       révélés ici par état ;
     - déclenchement : le bus qzr-mascot.js pose [data-qzr-amp="on"] le temps
       d'une réaction festive (levelUp / win / perfect / badge / chestOpen).
   À charger APRÈS vnext-mascot.css. Respecte prefers-reduced-motion.
   ============================================================================ */

/* ── Accessoires : couleur du texte Zzz (bat la recolorisation .qzr-mascot-svg text) ── */
.qzr-mascot-svg .qzr-m-fx-zzz text { fill: var(--qz-muted, #5E8A7C); font-family: "Nunito", "Segoe UI", Arial, sans-serif; font-weight: 800; }

/* Transformations auto-relatives pour les particules (sinon origine = 0,0 du SVG) */
.qzr-m-fx-tear path,
.qzr-m-fx-hearts .hp,
.qzr-m-fx-confetti rect,
.qzr-m-fx-zzz text,
.qzr-m-fx-dots circle { transform-box: fill-box; transform-origin: center; }

/* ════════════════════════════════════════════════════════════════════════
   AMPLITUDE — corps entier + membres, uniquement sous [data-qzr-amp="on"]
   ════════════════════════════════════════════════════════════════════════ */
/* Rebond marqué (célébration / victoire / série) */
[data-qzr-amp="on"][data-qzr-expr="celebrate"] .qzr-mascot-svg,
[data-qzr-amp="on"][data-qzr-expr="victory"]   .qzr-mascot-svg { animation: qzrAmpBounce .5s ease infinite; }
[data-qzr-amp="on"][data-qzr-expr="dance"]     .qzr-mascot-svg { animation: qzrAmpDance .45s ease-in-out infinite alternate; }
/* Tremblement d'excitation (coffre / récompense) */
[data-qzr-amp="on"][data-qzr-expr="excited"] .qzr-mascot-svg { animation: qzrAmpTremor .25s ease infinite; }
/* Flottement amoureux (sans-faute) */
[data-qzr-amp="on"][data-qzr-expr="love"] .qzr-mascot-svg { animation: qzrAmpFloat 1.5s ease-in-out infinite; }

/* Membres exagérés (remplacent l'anim de base par une amplitude plus forte) */
[data-qzr-amp="on"][data-qzr-expr="celebrate"] .qzr-m-arm-l { transform-origin: 72px 120px;  animation: qzrAmpArmL .5s ease infinite alternate; }
[data-qzr-amp="on"][data-qzr-expr="celebrate"] .qzr-m-arm-r { transform-origin: 128px 120px; animation: qzrAmpArmR .5s ease infinite alternate-reverse; }
[data-qzr-amp="on"][data-qzr-expr="excited"]   .qzr-m-arm-l { transform-origin: 72px 120px;  animation: qzrAmpExcShake .13s ease infinite alternate; }
[data-qzr-amp="on"][data-qzr-expr="excited"]   .qzr-m-arm-r { transform-origin: 128px 120px; animation: qzrAmpExcShake .13s ease infinite alternate-reverse; }
[data-qzr-amp="on"][data-qzr-expr="love"]      .qzr-m-head  { transform-origin: 100px 69px;  animation: qzrAmpLovePulse .9s ease-in-out infinite; }

/* ════════════════════════════════════════════════════════════════════════
   ACCESSOIRES — révélés par état sous [data-qzr-amp="on"]
   ════════════════════════════════════════════════════════════════════════ */
/* Larme (triste) */
[data-qzr-amp="on"][data-qzr-expr="sad"] .qzr-m-fx-tear { opacity: 1; }
[data-qzr-amp="on"][data-qzr-expr="sad"] .qzr-m-fx-tear path { animation: qzrTear 1.7s ease infinite; }

/* Zzz (sommeil) */
[data-qzr-amp="on"][data-qzr-expr="sleep"] .qzr-m-fx-zzz { opacity: 1; }
[data-qzr-amp="on"][data-qzr-expr="sleep"] .qzr-m-fx-zzz text { animation: qzrZzz 2.7s ease infinite; }
[data-qzr-amp="on"][data-qzr-expr="sleep"] .qzr-m-fx-zzz .z2 { animation-delay: .9s; }
[data-qzr-amp="on"][data-qzr-expr="sleep"] .qzr-m-fx-zzz .z3 { animation-delay: 1.8s; }

/* Cœurs (amour / sans-faute) */
[data-qzr-amp="on"][data-qzr-expr="love"] .qzr-m-fx-hearts { opacity: 1; }
[data-qzr-amp="on"][data-qzr-expr="love"] .qzr-m-fx-hearts .hp { animation: qzrHeart 2.1s ease infinite; }
[data-qzr-amp="on"][data-qzr-expr="love"] .qzr-m-fx-hearts g:nth-child(2) .hp { animation-delay: .5s; }
[data-qzr-amp="on"][data-qzr-expr="love"] .qzr-m-fx-hearts g:nth-child(3) .hp { animation-delay: 1s; }
[data-qzr-amp="on"][data-qzr-expr="love"] .qzr-m-fx-hearts g:nth-child(4) .hp { animation-delay: 1.5s; }

/* Confettis (célébration / victoire / série / coffre) */
[data-qzr-amp="on"][data-qzr-expr="celebrate"] .qzr-m-fx-confetti,
[data-qzr-amp="on"][data-qzr-expr="victory"]   .qzr-m-fx-confetti,
[data-qzr-amp="on"][data-qzr-expr="dance"]     .qzr-m-fx-confetti,
[data-qzr-amp="on"][data-qzr-expr="excited"]   .qzr-m-fx-confetti { opacity: 1; }
[data-qzr-amp="on"][data-qzr-expr="celebrate"] .qzr-m-fx-confetti rect,
[data-qzr-amp="on"][data-qzr-expr="victory"]   .qzr-m-fx-confetti rect,
[data-qzr-amp="on"][data-qzr-expr="dance"]     .qzr-m-fx-confetti rect,
[data-qzr-amp="on"][data-qzr-expr="excited"]   .qzr-m-fx-confetti rect { animation: qzrConfetti 1.5s linear infinite; }

/* Points de réflexion (réfléchir / curieux) */
[data-qzr-amp="on"][data-qzr-expr="thinking"] .qzr-m-fx-dots,
[data-qzr-amp="on"][data-qzr-expr="curious"]  .qzr-m-fx-dots { opacity: 1; }
[data-qzr-amp="on"][data-qzr-expr="thinking"] .qzr-m-fx-dots .d1,
[data-qzr-amp="on"][data-qzr-expr="curious"]  .qzr-m-fx-dots .d1 { animation: qzrDot 1.2s ease infinite; }
[data-qzr-amp="on"][data-qzr-expr="thinking"] .qzr-m-fx-dots .d2,
[data-qzr-amp="on"][data-qzr-expr="curious"]  .qzr-m-fx-dots .d2 { animation: qzrDot 1.2s ease infinite .2s; }
[data-qzr-amp="on"][data-qzr-expr="thinking"] .qzr-m-fx-dots .d3,
[data-qzr-amp="on"][data-qzr-expr="curious"]  .qzr-m-fx-dots .d3 { animation: qzrDot 1.2s ease infinite .4s; }

/* ── Keyframes (préfixe qzrAmp* / accessoires) ─────────────────────────────── */
@keyframes qzrAmpBounce { 0%, 100% { transform: translateY(0) scale(1); } 30% { transform: translateY(-11px) scale(1.05); } 60% { transform: translateY(-3px) scale(1.02); } }
@keyframes qzrAmpTremor { 0% { transform: translateX(-2px) rotate(-1.5deg); } 100% { transform: translateX(2px) rotate(1.5deg); } }
@keyframes qzrAmpFloat  { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-7px); } }
@keyframes qzrAmpDance  { 0% { transform: translateX(-5px) rotate(-3deg); } 100% { transform: translateX(5px) rotate(3deg); } }
@keyframes qzrAmpArmL { 0% { transform: rotate(0deg); } 100% { transform: rotate(32deg); } }
@keyframes qzrAmpArmR { 0% { transform: rotate(0deg); } 100% { transform: rotate(-32deg); } }
@keyframes qzrAmpExcShake { 0% { transform: rotate(-8deg); } 100% { transform: rotate(8deg); } }
@keyframes qzrAmpLovePulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.09); } }
@keyframes qzrTear { 0% { opacity: 0; transform: translateY(-2px) scale(.4); } 20% { opacity: 1; transform: translateY(0) scale(1); } 100% { opacity: 0; transform: translateY(26px) scale(.9); } }
@keyframes qzrZzz { 0% { opacity: 0; transform: translate(0, 4px) scale(.7); } 30% { opacity: 1; } 100% { opacity: 0; transform: translate(12px, -18px) scale(1.1); } }
@keyframes qzrHeart { 0% { opacity: 0; transform: translateY(6px) scale(.5); } 25% { opacity: 1; } 100% { opacity: 0; transform: translateY(-24px) scale(1); } }
@keyframes qzrConfetti { 0% { opacity: 0; transform: translateY(-4px) rotate(0deg); } 12% { opacity: 1; } 100% { opacity: 0; transform: translateY(125px) rotate(340deg); } }
@keyframes qzrDot { 0%, 100% { opacity: .25; transform: translateY(0); } 50% { opacity: 1; transform: translateY(-2px); } }

/* ── Accessibilité : pas de mouvement additionnel ni d'accessoires animés ──── */
@media (prefers-reduced-motion: reduce) {
  [data-qzr-amp="on"] .qzr-mascot-svg,
  [data-qzr-amp="on"] .qzr-m-arm-l,
  [data-qzr-amp="on"] .qzr-m-arm-r,
  [data-qzr-amp="on"] .qzr-m-head { animation: none !important; }
  [data-qzr-amp="on"] .qzr-m-fx-tear path,
  [data-qzr-amp="on"] .qzr-m-fx-zzz text,
  [data-qzr-amp="on"] .qzr-m-fx-hearts .hp,
  [data-qzr-amp="on"] .qzr-m-fx-confetti rect,
  [data-qzr-amp="on"] .qzr-m-fx-dots circle { animation: none !important; }
  /* accessoires statiques discrets plutôt qu'animés */
  [data-qzr-amp="on"][data-qzr-expr="sad"] .qzr-m-fx-tear,
  [data-qzr-amp="on"][data-qzr-expr="love"] .qzr-m-fx-hearts,
  [data-qzr-amp="on"][data-qzr-expr="thinking"] .qzr-m-fx-dots,
  [data-qzr-amp="on"][data-qzr-expr="curious"] .qzr-m-fx-dots { opacity: 1; }
}
