/* Mini Gourmand : animations de la mascotte (appli et page d'accueil). */
.mg { overflow: visible; flex-shrink: 0; }
.mg .mg-all { transform-origin: 60px 108px; animation: mg-bob 2.6s ease-in-out infinite; }
.mg-faim .mg-all { animation: mg-hop 0.9s ease-in-out infinite; }
.mg-dodo .mg-all { animation: mg-breathe 3.4s ease-in-out infinite; }
.mg-mange .mg-all { animation: mg-chew 0.5s ease-in-out infinite; }
.mg-faim .mg-drool { animation: mg-drool 1.8s ease-in-out infinite; transform-origin: 74px 78px; }
.mg-repu .mg-spark { animation: mg-twinkle 1.6s ease-in-out infinite; transform-origin: 60px 30px; }
.mg-dodo .mg-z { animation: mg-z 2.4s ease-in-out infinite; }
.mg-mange .mg-paper { animation: mg-nibble 0.5s ease-in-out infinite; transform-box: fill-box; transform-origin: center; }
@keyframes mg-bob { 50% { transform: translateY(-3px) scaleY(1.02); } }
@keyframes mg-hop { 0%, 100% { transform: translateY(0) scaleY(1); } 40% { transform: translateY(-7px) scaleY(1.04); } 60% { transform: translateY(0) scaleY(0.95); } }
@keyframes mg-breathe { 50% { transform: scale(1.03, 0.98); } }
@keyframes mg-chew { 50% { transform: scale(1.04, 0.95); } }
@keyframes mg-drool { 0%, 100% { transform: scaleY(1); opacity: 1; } 50% { transform: scaleY(1.35); opacity: .8; } }
@keyframes mg-twinkle { 50% { opacity: .3; transform: scale(.85); } }
@keyframes mg-z { 0% { opacity: 0; transform: translate(-6px, 6px); } 40% { opacity: 1; } 100% { opacity: 0; transform: translate(4px, -6px); } }
@keyframes mg-nibble { 50% { transform: translateX(-3px) rotate(-4deg); } }

.mg .mg-eyes { transform-box: fill-box; transform-origin: center; animation: mg-blink 4.6s infinite; }
.mg .mg-look { transform: translate(var(--mg-px, 0px), var(--mg-py, 0px)); transition: transform .12s ease-out; }
@keyframes mg-blink { 0%, 93%, 100% { transform: scaleY(1); } 95.5% { transform: scaleY(0.08); } }
.mg-oups .mg-all { animation: mg-shake 0.5s ease-in-out 2; }
.mg-oups .mg-sweat { animation: mg-drool 1.4s ease-in-out infinite; }
@keyframes mg-shake { 25% { transform: translateX(-4px) rotate(-3deg); } 75% { transform: translateX(4px) rotate(3deg); } }
svg.mg { cursor: pointer; }
.lock svg.mg { cursor: default; }
.mg.mg-boing .mg-all { animation: mg-boing .65s cubic-bezier(.3, 1.6, .5, 1); }
@keyframes mg-boing { 0% { transform: scale(1, 1); } 20% { transform: scale(1.12, .82); } 45% { transform: translateY(-16px) scale(.92, 1.1) rotate(-6deg); } 70% { transform: translateY(0) scale(1.06, .94); } 100% { transform: scale(1, 1); } }

/* Gestes de Mini Gourmand : bras (pivot à l'épaule), mèche, fête, réflexion, gestes au hasard. */
.mg .mg-arm-l { transform-origin: 24px 64px; }
.mg .mg-arm-r { transform-origin: 96px 64px; }
.mg .mg-tuft { transform-origin: 62px 20px; animation: mg-tuft 3.2s ease-in-out infinite; }
@keyframes mg-tuft { 0%, 100% { transform: rotate(0); } 50% { transform: rotate(5deg); } }
.mg:hover .mg-all { filter: brightness(1.04); }
.mg-bravo .mg-all { animation: mg-hop .7s ease-in-out infinite; }
.mg-bravo .mg-arm-l { animation: mg-cheer-l .35s ease-in-out infinite alternate; }
.mg-bravo .mg-arm-r { animation: mg-cheer-r .35s ease-in-out infinite alternate; }
@keyframes mg-cheer-l { to { transform: rotate(-16deg); } }
@keyframes mg-cheer-r { to { transform: rotate(16deg); } }
.mg-bravo .mg-confetti rect { transform-box: fill-box; transform-origin: center; animation: mg-confetti 1.6s linear infinite; }
.mg-bravo .mg-confetti .c1 { animation-delay: -.3s; } .mg-bravo .mg-confetti .c2 { animation-delay: -.7s; }
.mg-bravo .mg-confetti .c3 { animation-delay: -1s; } .mg-bravo .mg-confetti .c4 { animation-delay: -1.3s; }
@keyframes mg-confetti { 0% { transform: translateY(-6px) rotate(0); opacity: 0; } 15% { opacity: 1; } 100% { transform: translateY(40px) rotate(540deg); opacity: 0; } }
.mg-reflechit .mg-all { animation: mg-breathe 2.4s ease-in-out infinite; }
.mg-reflechit .mg-arm-r { animation: mg-tap 1.2s ease-in-out infinite; }
@keyframes mg-tap { 50% { transform: rotate(-6deg); } }
.mg-reflechit .mg-dots circle { animation: mg-dot 1.5s ease-in-out infinite; opacity: .25; }
.mg-reflechit .mg-dots .d1 { animation-delay: .25s; } .mg-reflechit .mg-dots .d2 { animation-delay: .5s; }
@keyframes mg-dot { 40% { opacity: 1; } }
.mg.mg-act-wave .mg-arm-r { animation: mg-wave 1.4s ease-in-out; }
@keyframes mg-wave { 15% { transform: rotate(-115deg); } 30%, 60% { transform: rotate(-95deg); } 45%, 75% { transform: rotate(-125deg); } 100% { transform: rotate(0); } }
.mg.mg-act-flip .mg-all { animation: mg-flip 1s cubic-bezier(.3, 1.3, .5, 1); }
@keyframes mg-flip { 0% { transform: none; } 20% { transform: scale(1.1, .85); } 55% { transform: translateY(-22px) rotate(-360deg); } 80% { transform: translateY(0) scale(1.08, .9) rotate(-360deg); } 100% { transform: rotate(-360deg); } }
.mg.mg-act-look .mg-look { animation: mg-lookaround 1.5s ease-in-out; }
@keyframes mg-lookaround { 25% { transform: translate(-4px, 0); } 55% { transform: translate(4px, -1px); } 80% { transform: translate(0, -3px); } }
.mg.mg-act-tuft .mg-tuft { animation: mg-tuft-boing .8s ease-in-out 2; }
@keyframes mg-tuft-boing { 25% { transform: rotate(-14deg); } 75% { transform: rotate(14deg); } }
/* Petit coucou de la mascotte du logo au survol. */
.brand:hover .mg .mg-arm-r, #logo:hover .mg .mg-arm-r { animation: mg-wave 1.4s ease-in-out; }
@media (prefers-reduced-motion: reduce) { .mg * { animation: none !important; } }

/* Mini Gourmand déguisé (thèmes de l'offre Étudiant, voir skins.js) */
.mg-skin-halloween .mg-tuft, .mg-skin-noel .mg-tuft { display: none; }
.mg-skin-halloween .mg-spider { animation: mg-spider 2.4s ease-in-out infinite; transform-origin: 90px 26px; }
@keyframes mg-spider { 50% { transform: scaleY(1.18) rotate(4deg); } }
.mg-skin-noel .mg-pompom { animation: mg-pompom 2.2s ease-in-out infinite; transform-origin: 98px 22px; }
@keyframes mg-pompom { 50% { transform: rotate(10deg); } }
@media (prefers-reduced-motion: reduce) { .mg-costume * { animation: none !important; } }
