/* Material, pose, and restrained movement belong to the character alone. */
.pal-character{overflow:visible;filter:none;opacity:1;isolation:isolate}
.pal-character .pal-body{transform-origin:75px 108px;animation:none;transition:transform .45s cubic-bezier(.2,.7,.3,1)}
.pal-character .pal-ground{transform-origin:75px 129px;opacity:1;transition:opacity .4s,transform .4s}
.pal-character .pal-face{transform-origin:75px 72px;transition:transform .45s cubic-bezier(.2,.7,.3,1)}
.pal-character .pal-eyes{transform:none;transform-origin:75px 72px}
.pal-character .pal-blink{transform-origin:75px 72px;animation:pal-soft-blink 7.8s ease-in-out infinite}
.pal-character .pal-gaze{transition:transform .45s ease;transform-origin:75px 70px}
.pal-character .pal-eye-left{transform-origin:54px 72px}.pal-character .pal-eye-right{transform-origin:96px 72px}
.pal-character .pal-lids,.pal-character .pal-smile-eyes,.pal-character .pal-curious-brow,.pal-character .pal-glint-spark{display:none}
.pal-character[data-eyes=spark] .pal-glint-oval{display:none}.pal-character[data-eyes=spark] .pal-glint-spark{display:block}
.pal-character[data-eyes=smile] .pal-eyes{display:none}.pal-character[data-eyes=smile] .pal-smile-eyes{display:block}
/* Connecting changes the status words, not the pal's life or colour. */
.pal-character[data-state=ready] .pal-body,.pal-character[data-state=disconnected] .pal-body{animation:pal-rest-breath 8s ease-in-out infinite}
.pal-character[data-state=replying] .pal-body{transform:rotate(1.5deg) translateY(-1px);animation:pal-speaking 3.8s ease-in-out infinite}
.pal-character[data-state=replying] .pal-face{transform:translateY(-2px)}
.pal-character[data-state=replying] .pal-eyes{transform:scale(1.035)}
.pal-character[data-state=replying] .pal-blink{animation-duration:6.7s}
.pal-character[data-state=working] .pal-body{transform:rotate(-2.5deg);animation:pal-attentive 6s ease-in-out infinite}
.pal-character[data-state=working] .pal-face{transform:translate(2px,1px)}
.pal-character[data-state=working] .pal-eyes{transform:scaleY(.9)}
.pal-character[data-state=working] .pal-gaze{transform:translate(2px,1.5px)}
.pal-character[data-state=waiting] .pal-body{transform:rotate(-5deg) translateY(-1px)}
.pal-character[data-state=waiting] .pal-face{transform:translate(-1px,-2px) rotate(3deg)}
.pal-character[data-state=waiting] .pal-eye-right{transform:translateY(-2px) scaleY(1.06)}
.pal-character[data-state=waiting] .pal-curious-brow{display:block}
.pal-character[data-state=paused] .pal-body{transform:translateY(3px) scaleY(.97);animation:none}
.pal-character[data-state=paused] .pal-eyes,.pal-character[data-state=paused] .pal-smile-eyes{display:none}
.pal-character[data-state=paused] .pal-lids{display:block}
.pal-character[data-state=paused] .pal-ground{transform:scaleX(1.08);opacity:.75}
/* The sidebar pal keeps its body still, but shares the main face's quiet blink. */
.pal-chat-tab .pal-character .pal-body,.pal-settings-options .pal-character .pal-body,.pal-settings-options .pal-character .pal-blink{animation:none}
.pal-hidden .pal-character *{animation-play-state:paused!important;transition:none!important}
@keyframes pal-soft-blink{0%,90.3%,92.4%,100%{transform:scaleY(1)}91.3%{transform:scaleY(.07)}}
@keyframes pal-rest-breath{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-1px) scale(1.006,.993)}}
@keyframes pal-attentive{0%,100%{transform:rotate(-2.5deg) translateY(0)}48%,58%{transform:rotate(-1deg) translateY(-1.5px)}}
@keyframes pal-speaking{0%,100%{transform:rotate(0) translateY(0)}22%{transform:rotate(1.5deg) translateY(-1.5px)}46%{transform:rotate(-1deg) translateY(0)}70%{transform:rotate(.7deg) translateY(-1px)}}
@media(prefers-reduced-motion:reduce){.pal-character *{animation:none!important;transition:none!important}}
