/* casanova.css — En Casanova, gat professor (§13.2-bis, §13.3)
 * CANVI 11/09 vespre: RES de SVG dibuixat a mà. L'avatar és una <img>/<video> amb l'art real
 * de la Persephone (public/assets/casanova/); aquest fitxer només en dona moviment "suau"
 * (respiració, salt, estirament) i el posicionament de la capa fixa. La geometria de peces
 * (#cua, #orella-e...) de la versió SVG antiga ha desaparegut d'aquí — ja no hi ha peces.
 */

:root{
  --gat-bombolla-bg: var(--bg2, #fff);
}

/* ===== MOUNT: imatge de pose (sempre present) + vídeo de clip (només quan n'hi ha) ===== */
.casanova-avatar-wrap{
  display:flex;align-items:flex-end;justify-content:center;
}
.casanova-avatar-wrap.sense-art{display:none;}
.casanova-pose,
.casanova-clip{
  width:100%;height:100%;object-fit:contain;display:block;pointer-events:none;
  transition:transform .5s ease;
}
.casanova-clip[hidden]{display:none;}

/* ===== ESTAT: fora (mode examen, o encara no ha arribat) ===== */
.casanova-avatar-wrap.estat-fora{opacity:0;pointer-events:none;}
.casanova-avatar-wrap:not(.estat-fora){opacity:1;transition:opacity .35s ease;}

/* ===== IDLE comú: respiració suau a tots els estats "quiets" ===== */
@keyframes gatRespira{0%,100%{transform:scaleY(1);}50%{transform:scaleY(1.018);}}
.casanova-avatar-wrap.estat-assegut .casanova-pose,
.casanova-avatar-wrap.estat-acostant .casanova-pose{
  animation:gatRespira 3.6s ease-in-out infinite;
  transform-origin:bottom center;
}

/* ===== ACOSTANT — una mica més a prop, lleugerament inclinat cap al xat ===== */
.casanova-avatar-wrap.estat-acostant .casanova-pose{transform:scale(1.05);}

/* ===== PASSEJANT — lleuger balanceig vertical mentre es desplaça (translateX el fa JS) ===== */
@keyframes gatCaminaBot{0%,100%{transform:translateY(0);}50%{transform:translateY(-3px);}}
.casanova-avatar-wrap.estat-passejant .casanova-pose,
.casanova-avatar-wrap.estat-passejant .casanova-clip{animation:gatCaminaBot .42s ease-in-out infinite;}
.casanova-avatar-wrap.estat-passejant,
.casanova-avatar-wrap.estat-acostant{transition:left 1.1s linear;}

/* ===== DORMINT — encongit, zzz flotant (element .zzz afegit/tret per casanova.js) ===== */
.casanova-avatar-wrap.estat-dormint .casanova-pose{transform:scale(.94);}
.zzz{
  position:absolute;right:6px;top:2px;font-size:13px;
  font-family:'Inter',sans-serif;font-weight:700;color:var(--text,#17151b);
  opacity:0;pointer-events:none;animation:zzzFlota 2.4s ease-in infinite;
}
@keyframes zzzFlota{
  0%{opacity:0;transform:translate(0,0) scale(.6);}
  15%{opacity:.85;}
  85%{opacity:.15;}
  100%{opacity:0;transform:translate(14px,-34px) scale(1.15);}
}

/* ===== CELEBRANT — salt de festa ===== */
@keyframes gatSalt{
  0%,100%{transform:translateY(0) rotate(0);}
  30%{transform:translateY(-22px) rotate(-5deg);}
  55%{transform:translateY(-26px) rotate(4deg);}
  80%{transform:translateY(0) rotate(0);}
}
.casanova-avatar-wrap.estat-celebrant .casanova-pose,
.casanova-avatar-wrap.estat-celebrant .casanova-clip{animation:gatSalt .75s ease-out 2;}

/* ===== ESTIRANT — badall, estirament llarg ===== */
@keyframes gatEstira{
  0%,100%{transform:scale(1,1) translateY(0);}
  50%{transform:scale(1.1,.86) translateY(5px);}
}
.casanova-avatar-wrap.estat-estirant .casanova-pose,
.casanova-avatar-wrap.estat-estirant .casanova-clip{animation:gatEstira 1.6s ease-in-out 1;}

/* ===== BOMBOLLA de xorrada (§13.4) ===== */
.casanova-bombolla{
  position:absolute;bottom:100%;left:50%;transform:translateX(-50%);margin-bottom:6px;
  background:var(--gat-bombolla-bg);border:1px solid var(--border,#ccc);border-radius:12px;
  padding:7px 11px;font-size:12.5px;white-space:normal;text-align:center;max-width:220px;
  box-shadow:var(--shadow,0 4px 12px rgba(0,0,0,.15));opacity:0;transition:opacity .2s ease;
  pointer-events:none;
}
.casanova-bombolla.mostra{opacity:1;}

/* ===== reduced motion: respecta la preferència del sistema ===== */
@media (prefers-reduced-motion:reduce){
  .casanova-avatar-wrap *,.casanova-avatar-wrap{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;}
}
