/* The buddy's moods: which face parts and props each mood shows, and their little animations.
   A static file on purpose — the app's CSP blocks <style> elements created by scripts. */
.buddy-svg .e-happy, .buddy-svg .e-closed, .buddy-svg .b-sad, .buddy-svg .m, .buddy-svg .p { display: none; }
.buddy-svg .m-smile { display: inline; }
.mood-happy .e-open, .mood-listening .e-open, .mood-success .e-open, .mood-celebrate .e-open,
.mood-processing .e-open, .mood-sleep .e-open, .mood-yawn .e-open { display: none; }
.mood-happy .e-happy, .mood-listening .e-happy, .mood-success .e-happy, .mood-celebrate .e-happy { display: inline; }
.mood-processing .e-closed, .mood-sleep .e-closed, .mood-yawn .e-closed { display: inline; }
.mood-sad .b-normal { display: none; } .mood-sad .b-sad { display: inline; }
.mood-happy .m-smile, .mood-thinking .m-smile, .mood-talking .m-smile, .mood-listening .m-smile, .mood-processing .m-smile,
.mood-success .m-smile, .mood-sad .m-smile, .mood-working .m-smile, .mood-pointing .m-smile, .mood-celebrate .m-smile,
.mood-sleep .m-smile, .mood-yawn .m-smile { display: none; }
.mood-yawn .m-o { display: inline; } .mood-yawn .talkmouth { transform-origin: 120px 145px; animation: bdy-yawn 1.6s ease-in-out; }
.mood-yawn .arm-l { transform: rotate(120deg) translate(4px, 6px); }
.mood-happy .m-grin, .mood-success .m-grin, .mood-pointing .m-grin, .mood-celebrate .m-grin { display: inline; }
.mood-talking .m-o { display: inline; }
.mood-thinking .m-wavy { display: inline; }
.mood-sad .m-frown { display: inline; }
.mood-listening .m-content, .mood-processing .m-content, .mood-working .m-content, .mood-sleep .m-content { display: inline; }
.mood-thinking .p-question, .mood-sad .p-bang, .mood-talking .p-waves, .mood-listening .p-headphones,
.mood-processing .p-ring-back, .mood-processing .p-ring-front, .mood-success .p-sparkles, .mood-celebrate .p-confetti,
.mood-working .p-laptop, .mood-sleep .p-zzz { display: inline; }
.buddy-svg .pupils, .buddy-svg .glints { transition: transform .14s ease-out; }
.buddy-svg .eyes { transform-origin: 120px 113px; transition: transform .09s ease; }
.buddy-svg .eyes.blink { transform: scaleY(.08); }
.mood-working .pupils { transform: translate(3px, 7px) !important; }
.mood-thinking .pupils { transform: translate(-3px, -8px) !important; }
.buddy-svg .arm-l { transform-origin: 62px 112px; transition: transform .45s cubic-bezier(.34, 1.56, .64, 1); }
.buddy-svg .arm-r { transform-origin: 178px 112px; transition: transform .45s cubic-bezier(.34, 1.56, .64, 1); }
.mood-thinking .arm-r { transform: rotate(52deg) translate(-14px, 6px); }
.mood-happy .arm-r, .mood-success .arm-r { transform: rotate(-80deg); }
.mood-celebrate .arm-l { transform: rotate(118deg); } .mood-celebrate .arm-r { transform: rotate(-118deg); }
.mood-working .arm-r { transform: rotate(28deg) translate(-6px, 26px); }
.mood-sad .arm-l { transform: rotate(-10deg); } .mood-sad .arm-r { transform: rotate(10deg); }
.mood-sleep .whole { transform: translateY(26px) scale(1.08, .82); transform-origin: 120px 200px; }
.mood-sleep .arm-l { transform: rotate(38deg) translate(-4px, 18px); } .mood-sleep .arm-r { transform: rotate(-38deg) translate(4px, 18px); }
.buddy-svg .whole { transition: transform .5s cubic-bezier(.34, 1.56, .64, 1); }
.buddy-svg .ring { stroke-dasharray: 40 14; animation: bdy-ring 1.2s linear infinite; }
.buddy-svg .p-waves .w1 { animation: bdy-wave 1s ease-in-out infinite; } .buddy-svg .p-waves .w2 { animation: bdy-wave 1s ease-in-out .2s infinite; }
.buddy-svg .p-sparkles path { transform-box: fill-box; transform-origin: center; animation: bdy-twinkle 1.4s ease-in-out infinite; }
.buddy-svg .p-sparkles .s2 { animation-delay: .4s; } .buddy-svg .p-sparkles .s3 { animation-delay: .8s; }
.buddy-svg .p-confetti > * { transform-box: fill-box; animation: bdy-fall 1.6s ease-in infinite; }
.buddy-svg .p-confetti .c2 { animation-delay: .5s; } .buddy-svg .p-confetti .c3 { animation-delay: 1s; }
.buddy-svg .p-zzz text { animation: bdy-z 2.4s ease-in-out infinite; } .buddy-svg .z2 { animation-delay: .4s !important; } .buddy-svg .z3 { animation-delay: .8s !important; }
.buddy-svg .p-question, .buddy-svg .p-bang { transform-box: fill-box; transform-origin: 50% 100%; animation: bdy-bob 1.2s ease-in-out infinite; }
.buddy-svg .p-headphones rect[stroke] { animation: bdy-pulse 1.1s ease-in-out infinite; }
@keyframes bdy-yawn { 0% { transform: scale(.4); } 40%, 70% { transform: scale(1.5, 1.8); } 100% { transform: scale(.5); } }
@keyframes bdy-ring { to { stroke-dashoffset: -108; } }
@keyframes bdy-wave { 50% { opacity: .25; } }
@keyframes bdy-twinkle { 50% { transform: scale(.45) rotate(45deg); opacity: .5; } }
@keyframes bdy-fall { 0% { transform: translateY(-6px); opacity: 0; } 30% { opacity: 1; } 100% { transform: translateY(26px) rotate(160deg); opacity: 0; } }
@keyframes bdy-z { 0% { opacity: 0; transform: translate(0, 6px); } 40% { opacity: 1; } 100% { opacity: 0; transform: translate(6px, -8px); } }
@keyframes bdy-bob { 50% { transform: translateY(-5px) rotate(6deg); } }
@keyframes bdy-pulse { 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) { .buddy-svg * { animation: none !important; } }
.mood-carry .m-smile { display: none; } .mood-carry .m-grin { display: inline; }
.mood-carry .arm-l { transform: rotate(150deg) translate(4px, 4px); } .mood-carry .arm-r { transform: rotate(-150deg) translate(-4px, 4px); }
.mood-carry .pupils { transform: translate(0, -7px) !important; }
.talking .talkmouth { transform-origin: 120px 145px; animation: bdy-talk .2s ease-in-out infinite alternate; }
@keyframes bdy-talk { from { transform: scaleY(.45); } to { transform: scaleY(1.3); } }
