/* ---------- Avatar: partes visibles según el ánimo ---------- */
.avatar-svg { width: 100%; height: auto; display: block; overflow: visible; color: var(--ink, #3A1424); }
.avatar-svg .eye-happy, .avatar-svg .eye-closed, .avatar-svg .eye-dizzy, .avatar-svg .eye-heart,
.avatar-svg .mouth > g, .avatar-svg .mouth > path,
.avatar-svg .fx-zzz, .avatar-svg .fx-sweat { display: none; }

.avatar-svg:not([data-eyes="open"]) .eye-open { display: none; }
.avatar-svg[data-eyes="wink"] .eye-L .eye-open { display: inline; }
.avatar-svg[data-eyes="happy"] .eye-happy,
.avatar-svg[data-eyes="wink"] .eye-R .eye-happy,
.avatar-svg[data-eyes="closed"] .eye-closed,
.avatar-svg[data-eyes="dizzy"] .eye-dizzy,
.avatar-svg[data-eyes="heart"] .eye-heart { display: inline; }

.avatar-svg[data-mouth="smile"] .m-smile,
.avatar-svg[data-mouth="laugh"] .m-laugh,
.avatar-svg[data-mouth="o"] .m-o,
.avatar-svg[data-mouth="sad"] .m-sad,
.avatar-svg[data-mouth="flat"] .m-flat,
.avatar-svg[data-mouth="smirk"] .m-smirk { display: inline; }

.avatar-svg[data-mood="sleepy"] .fx-zzz { display: inline; }
.avatar-svg[data-mood="dizzy"] .fx-sweat,
.avatar-svg[data-mood="sad"] .fx-sweat { display: inline; }

.avatar-svg .eye { transform-box: fill-box; transform-origin: center; transition: transform .08s ease; }
.avatar-svg.blink .eye-open { transform: scaleY(.08); transform-box: fill-box; transform-origin: center; }
.avatar-svg .eye-open { transition: transform .07s ease; }

.avatar-svg .brow { transition: transform .25s cubic-bezier(.3,1.6,.5,1); transform-box: fill-box; transform-origin: center; }
.avatar-svg[data-brows="up"] .brow { transform: translateY(-9px); }
.avatar-svg[data-brows="down"] .brow-L { transform: translateY(3px) rotate(8deg); }
.avatar-svg[data-brows="down"] .brow-R { transform: translateY(3px) rotate(-8deg); }
.avatar-svg[data-brows="sad"] .brow-L { transform: translateY(-4px) rotate(-14deg); }
.avatar-svg[data-brows="sad"] .brow-R { transform: translateY(-4px) rotate(14deg); }

.avatar-svg .cheek { transition: opacity .3s; }
.avatar-svg[data-mood="happy"] .cheek, .avatar-svg[data-mood="love"] .cheek, .avatar-svg[data-mood="shy"] .cheek { opacity: .85; }

.avatar-svg .eye-dizzy path { transform-box: fill-box; transform-origin: center; animation: av-spin 0.8s linear infinite; }
.avatar-svg .eye-heart { transform-box: fill-box; transform-origin: center; animation: av-beat .6s ease-in-out infinite; }
.avatar-svg .fx-zzz text { animation: av-zzz 2.4s ease-in-out infinite; }
.avatar-svg .fx-zzz text:nth-child(2) { animation-delay: .4s; }
.avatar-svg .fx-zzz text:nth-child(3) { animation-delay: .8s; }
.avatar-svg .fx-sweat { animation: av-drip 1.4s ease-in infinite; }
.avatar-svg .av-bob { animation: av-breathe 4.2s ease-in-out infinite; transform-origin: 200px 470px; }

@keyframes av-spin { to { transform: rotate(360deg); } }
@keyframes av-beat { 50% { transform: scale(1.18); } }
@keyframes av-zzz { 0% { opacity: 0; transform: translate(0, 10px); } 30% { opacity: 1; } 100% { opacity: 0; transform: translate(14px, -26px); } }
@keyframes av-drip { 0% { transform: translateY(-4px); opacity: 0; } 20% { opacity: 1; } 100% { transform: translateY(18px); opacity: 0; } }
@keyframes av-breathe { 50% { transform: scale(1.012, 0.992); } }

.pop { animation: av-pop .45s cubic-bezier(.3,1.8,.5,1); }
@keyframes av-pop { 0% { transform: scale(1); } 40% { transform: scale(1.06, .95) rotate(-1.5deg); } 100% { transform: scale(1); } }
.nod { animation: av-nod .7s ease; }
@keyframes av-nod { 30% { transform: translateY(6px) rotate(2deg); } 60% { transform: translateY(-3px); } }

@media (prefers-reduced-motion: reduce) {
  .avatar-svg *, .pop, .nod { animation: none !important; }
}
