/* Estilos do corpo do mascote — expressões e animações (compartilhado) */
.m-svg { overflow: visible; display: block; }
.m-bounce, .m-body, .m-tail, .m-ears, .eye-open, .look { transform-box: fill-box; }
.m-bounce { transform-origin: 50% 100%; }
.m-body { transform-origin: 50% 100%; animation: m-breathe 3.2s ease-in-out infinite; }
.m-arm { transform-box: view-box; transition: transform .25s ease; }
.m-ears, .m-tail { transform-origin: 50% 100%; }
.m-tail { animation: m-tail 2.4s ease-in-out infinite; transform-origin: 0% 80%; }
.eye-open { transform-origin: 50% 50%; transition: transform .09s ease; }
.look { transition: transform .18s ease-out; }

/* padrão: olhos abertos, boca neutra */
.mouth, .eye-closed, .eye-arc, .brow { display: none; }
.mouth-neutral { display: inline; }
.m-cheeks { opacity: 0; transition: opacity .4s; }
.m-cheeks.on { opacity: .75; }

/* piscar */
.blink .eye-open { transform: scaleY(.08); }

/* expressões */
.expr-happy .mouth-neutral, .expr-joy .mouth-neutral, .expr-sad .mouth-neutral, .expr-surprised .mouth-neutral,
.expr-love .mouth-neutral, .expr-sleepy .mouth-neutral, .expr-thinking .mouth-neutral, .expr-bored .mouth-neutral,
.expr-missing .mouth-neutral, .expr-curious .mouth-neutral { display: none; }
.expr-happy .mouth-happy, .expr-joy .mouth-joy, .expr-sad .mouth-sad, .expr-surprised .mouth-surprised,
.expr-love .mouth-love, .expr-sleepy .mouth-sleepy, .expr-thinking .mouth-thinking, .expr-bored .mouth-bored,
.expr-missing .mouth-missing, .expr-curious .mouth-curious { display: inline; }

.expr-happy .m-cheeks, .expr-joy .m-cheeks, .expr-love .m-cheeks { opacity: 1; }

.expr-joy .eye-open, .expr-love .eye-open, .expr-sleepy .eye-open { display: none; }
.expr-joy .eye-arc, .expr-love .eye-arc { display: inline; }
.expr-sleepy .eye-closed { display: inline; }

.expr-sad .brow, .expr-missing .brow { display: inline; }
.expr-sad .eye-open, .expr-missing .eye-open { transform: scaleY(.88) translateY(1px); }
.expr-thinking .eye-r .brow { display: inline; }
.expr-thinking .look { transform: translate(1.6px, -1.8px); }
.expr-bored .eye-open { transform: scaleY(.5) translateY(1.5px); }
.expr-surprised .eye-open { transform: scale(1.18); }
.expr-curious .look { transform: translate(0, -.8px); }

/* animações de corpo */
@keyframes m-breathe { 0%, 100% { transform: scale(1, 1); } 50% { transform: scale(1.018, 1.032); } }
@keyframes m-tail { 0%, 100% { transform: rotate(0); } 50% { transform: rotate(-10deg); } }
@keyframes m-hop { 0%, 100% { transform: translateY(0) scale(1, 1); } 30% { transform: translateY(-10%) scale(.96, 1.04); } 55% { transform: translateY(0) scale(1.06, .94); } }
@keyframes m-jump { 0% { transform: translateY(0) scale(1.08, .9); } 35% { transform: translateY(-34%) scale(.94, 1.08); } 70% { transform: translateY(0) scale(1.1, .9); } 100% { transform: translateY(0) scale(1, 1); } }
@keyframes m-wiggle { 0%, 100% { transform: rotate(0); } 25% { transform: rotate(-7deg); } 75% { transform: rotate(7deg); } }
@keyframes m-shiver { 0%, 100% { transform: translateX(0); } 25% { transform: translateX(-1.5%); } 75% { transform: translateX(1.5%); } }
@keyframes m-droop { 0%, 100% { transform: scale(1.02, .95); } 50% { transform: scale(1.03, .93); } }
@keyframes m-sleep { 0%, 100% { transform: scale(1.02, .97); } 50% { transform: scale(1.05, .93); } }
@keyframes m-wave { 0%, 100% { transform: rotate(0); } 25% { transform: rotate(-38deg); } 75% { transform: rotate(-12deg); } }
@keyframes m-dance { 0%, 100% { transform: rotate(0) translateY(0); } 25% { transform: rotate(-8deg) translateY(-6%); } 50% { transform: rotate(0) translateY(0); } 75% { transform: rotate(8deg) translateY(-6%); } }
@keyframes egg-wobble { 0%, 86%, 100% { transform: rotate(0); } 89% { transform: rotate(-8deg); } 92% { transform: rotate(8deg); } 95% { transform: rotate(-5deg); } }

.anim-walk .m-bounce { animation: m-hop .42s ease-in-out infinite; }
.anim-jump .m-bounce { animation: m-jump .7s cubic-bezier(.3,.7,.4,1) 1; }
.anim-wiggle .m-bounce { animation: m-wiggle .35s ease-in-out infinite; transform-origin: 50% 90%; }
.anim-shiver .m-bounce { animation: m-shiver .12s linear infinite; }
.anim-dance .m-bounce { animation: m-dance .9s ease-in-out infinite; transform-origin: 50% 100%; }
.anim-wave .m-arm-r { animation: m-wave .5s ease-in-out 3; }
.anim-wave .m-arm-r ellipse, .anim-wave .m-arm-l ellipse { transform-box: view-box; }
.mood-sad .m-body, .mood-missing .m-body { animation: m-droop 4.4s ease-in-out infinite; }
.mood-sleepy .m-body { animation: m-sleep 4.8s ease-in-out infinite; }
.m-egg .m-bounce { animation: egg-wobble 4s ease-in-out infinite; transform-origin: 50% 100%; }
.m-egg .egg-crack { opacity: 0; }
.hatching .m-egg .egg-crack { opacity: 1; }
.hatching .m-egg .m-bounce { animation: m-wiggle .18s linear infinite; }

@media (prefers-reduced-motion: reduce) {
  .m-body, .m-tail, .m-egg .m-bounce { animation: none !important; }
}
