/* ===== rig ===== */
.mz .body,.mz .tilt,.mz .all,.mz .arm,.mz .eye,.mz .shadow,.mz .fx *{transform-box:view-box}
.mz .body,.mz .tilt{transform-origin:60px 128px}
.mz .shadow{transform-origin:60px 130px}
.mz .eye{transform-box:fill-box;transform-origin:center}
.mz .eye{animation:blink 4.2s infinite}
@keyframes blink{0%,93%,100%{transform:scaleY(1)}95.5%{transform:scaleY(.1)}}
.mz.closed .eye{animation:none}
@keyframes breathe{0%,100%{transform:scale(1,1)}50%{transform:scale(1.025,.975)}}
.mv-idle .body,.mv-listen .body,.mv-reassure .body{animation:breathe 3.2s ease-in-out infinite}
/* wave */
@keyframes wave{0%,100%{transform:rotate(-125deg)}50%{transform:rotate(-165deg)}}
.mv-hello .armR{animation:wave .7s ease-in-out infinite}
.mv-hello .body{animation:breathe 3.2s ease-in-out infinite}
/* bounce */
@keyframes hop{0%,100%{transform:translateY(0)}45%{transform:translateY(-22px)}55%{transform:translateY(-22px)}}
@keyframes land{0%,100%{transform:scale(1.14,.86)}12%{transform:scale(1,1)}45%{transform:scale(.95,1.06)}85%{transform:scale(1,1)}}
@keyframes shad{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(.65);opacity:.5}}
.mv-bounce .all{animation:hop 1s cubic-bezier(.4,0,.6,1) infinite}
.mv-bounce .body{animation:land 1s ease-in-out infinite}
.mv-bounce .shadow{animation:shad 1s ease-in-out infinite}
/* squish */
@keyframes squish{0%,60%,100%{transform:scale(1,1)}10%{transform:scale(1.2,.76)}22%{transform:scale(.92,1.1)}32%{transform:scale(1.05,.96)}42%{transform:scale(1,1)}}
.mv-squish .body,.mz.tap .body{animation:squish 1.6s ease-in-out infinite}
.mz.tap .body{animation-iteration-count:1;animation-duration:1s}
/* stretch */
@keyframes stretch{0%,100%{transform:scale(1,1)}40%,60%{transform:scale(.88,1.16)}}
@keyframes armsUpL{0%,100%{transform:rotate(20deg)}40%,60%{transform:rotate(150deg)}}
@keyframes armsUpR{0%,100%{transform:rotate(-20deg)}40%,60%{transform:rotate(-150deg)}}
.mv-stretch .body{animation:stretch 2.6s ease-in-out infinite}
.mv-stretch .armL{animation:armsUpL 2.6s ease-in-out infinite}
.mv-stretch .armR{animation:armsUpR 2.6s ease-in-out infinite}
/* celebrate */
@keyframes cheerL{0%,100%{transform:rotate(140deg)}50%{transform:rotate(165deg)}}
@keyframes cheerR{0%,100%{transform:rotate(-140deg)}50%{transform:rotate(-165deg)}}
.mv-celebrate .all{animation:hop .8s cubic-bezier(.4,0,.6,1) infinite}
.mv-celebrate .body{animation:land .8s ease-in-out infinite}
.mv-celebrate .shadow{animation:shad .8s ease-in-out infinite}
.mv-celebrate .armL{animation:cheerL .4s ease-in-out infinite}
.mv-celebrate .armR{animation:cheerR .4s ease-in-out infinite}
@keyframes fall{0%{transform:translateY(-30px) rotate(0);opacity:0}10%{opacity:1}100%{transform:translateY(120px) rotate(300deg);opacity:0}}
.confetti rect,.confetti circle{animation:fall 1.8s linear infinite;transform-box:fill-box;transform-origin:center}
/* thinking */
@keyframes tilt{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(-8deg)}}
@keyframes pop{0%,20%{transform:scale(0)}35%,85%{transform:scale(1)}100%{transform:scale(0)}}
.mv-think .tilt{animation:tilt 3s ease-in-out infinite}
.bub{transform-box:fill-box!important;transform-origin:center;animation:pop 3s ease-out infinite}
.bub:nth-child(2){animation-delay:.25s}.bub:nth-child(3){animation-delay:.5s}
/* curious / listening lean */
@keyframes lean{0%,100%{transform:rotate(0)}30%,70%{transform:rotate(9deg)}}
.mv-listen .tilt{animation:lean 3.4s ease-in-out infinite}
@keyframes curious{0%,100%{transform:rotate(0) translateY(0)}25%{transform:rotate(-10deg) translateY(-3px)}60%{transform:rotate(7deg) translateY(-3px)}}
.mv-curious .tilt{animation:curious 2.8s ease-in-out infinite}
/* reassure nod */
@keyframes nod{0%,100%{transform:scale(1,1)}20%{transform:scale(1.03,.95)}35%{transform:scale(1,1)}50%{transform:scale(1.03,.95)}65%{transform:scale(1,1)}}
@keyframes pat{0%,100%{transform:rotate(-30deg)}50%{transform:rotate(-50deg)}}
.mv-reassure .body{animation:nod 2.4s ease-in-out infinite}
.mv-reassure .armR{animation:pat 1.2s ease-in-out infinite}
/* oops */
@keyframes shake{0%,40%,100%{transform:translateX(0)}5%{transform:translateX(-5px)}10%{transform:translateX(5px)}15%{transform:translateX(-4px)}20%{transform:translateX(4px)}25%{transform:translateX(-2px)}30%{transform:translateX(0)}}
@keyframes drip{0%,30%{transform:translateY(0);opacity:0}40%{opacity:1}100%{transform:translateY(14px);opacity:0}}
.mv-oops .all{animation:shake 2.2s ease-in-out infinite}
.sweat{transform-box:fill-box!important;animation:drip 2.2s ease-in infinite}
/* sleepy */
@keyframes deep{0%,100%{transform:scale(1,1)}50%{transform:scale(1.05,.95)}}
@keyframes zz{0%{transform:translate(0,0) scale(.6);opacity:0}20%{opacity:1}100%{transform:translate(14px,-34px) scale(1.2);opacity:0}}
.mv-sleepy .body{animation:deep 4s ease-in-out infinite}
.zz{transform-box:fill-box!important;transform-origin:center;animation:zz 3s ease-out infinite}
.zz:nth-child(2){animation-delay:1s}.zz:nth-child(3){animation-delay:2s}
/* peek */
@keyframes peek{0%,15%{transform:translateY(70px)}35%,75%{transform:translateY(8px)}45%{transform:translateY(4px)}90%,100%{transform:translateY(70px)}}
.mv-peek .all{animation:peek 3.6s ease-in-out infinite}
.mv-peek .shadow{display:none}
/* pointing */
@keyframes point{0%,100%{transform:rotate(-95deg)}50%{transform:rotate(-88deg)}}
@keyframes leanR{0%,100%{transform:rotate(4deg)}50%{transform:rotate(6deg)}}
.mv-point .armR{animation:point .8s ease-in-out infinite}
.mv-point .tilt{animation:leanR 1.6s ease-in-out infinite}
/* pop in */
@keyframes popin{0%{transform:scale(0)}12%{transform:scale(1.15)}18%{transform:scale(.94)}24%,85%{transform:scale(1)}100%{transform:scale(0)}}
.mv-popin .tilt{animation:popin 3.2s cubic-bezier(.3,1.4,.6,1) infinite}
.mv-popin .armR{animation:wave .7s ease-in-out infinite}
/* all done: thumbs / tick */
@keyframes tickdraw{0%,20%{stroke-dashoffset:40}45%,100%{stroke-dashoffset:0}}
.tick{stroke-dasharray:40;animation:tickdraw 2.4s ease-out infinite}
.mv-done .body{animation:nod 2.4s ease-in-out infinite}
/* loading / one moment: spinner dots */
@keyframes dot{0%,100%{transform:translateY(0)}30%{transform:translateY(-6px)}}
.dots circle{transform-box:fill-box;animation:dot 1s ease-in-out infinite}
.dots circle:nth-child(2){animation-delay:.15s}.dots circle:nth-child(3){animation-delay:.3s}
.mv-moment .tilt{animation:tilt 3s ease-in-out infinite}

@keyframes marks{0%,100%{opacity:0;transform:scale(.6)}30%,70%{opacity:1;transform:scale(1)}}
.marks{transform-box:fill-box!important;transform-origin:left bottom;animation:marks 1.4s ease-in-out infinite}
@keyframes steam{0%{transform:translateY(4px);opacity:0}30%{opacity:.9}100%{transform:translateY(-10px);opacity:0}}
.steam{transform-box:fill-box!important;animation:steam 1.6s ease-out infinite}
@keyframes sip{0%,55%,100%{transform:rotate(-20deg)}65%,85%{transform:rotate(-120deg)}}
@keyframes sway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
.mv-coffee .tilt{animation:sway 4s ease-in-out infinite}
.mv-coffee .armR{transform:rotate(-70deg)!important}
