.portrait-stack{position:absolute;inset:-1.5%;transform-origin:50% 42%;animation:livingPresence 8s ease-in-out infinite}
.portrait-stack img{position:absolute;inset:0}
.companion-stage.speaking .portrait-stack{animation:speakingPresence 3.8s ease-in-out infinite}
.companion-stage.listening .portrait-stack{animation:listeningPresence 5s ease-in-out infinite}
.companion-stage.expression-thoughtful .portrait-stack{transform-origin:52% 45%;animation:thoughtfulPresence 5.5s ease-in-out infinite}
.companion-stage.expression-concerned .portrait-stack{animation:concernedPresence 5.5s ease-in-out infinite}
.companion-stage.expression-concerned img{filter:saturate(.86) brightness(.96)}
.companion-stage.expression-laugh .portrait-stack{animation:warmReaction 2.8s cubic-bezier(.45,0,.25,1) infinite}
.companion-stage.expression-laugh img{filter:brightness(1.06) saturate(1.04)}
.companion-stage.speaking:after{content:'';position:absolute;inset:0;box-shadow:inset 0 0 95px rgba(127,224,214,.12);pointer-events:none;animation:speechGlow 2.2s ease-in-out infinite}
@keyframes livingPresence{0%,100%{transform:scale(1.015) translate3d(0,0,0)}45%{transform:scale(1.027) translate3d(-1px,-2px,0)}72%{transform:scale(1.02) translate3d(1px,-1px,0)}}
@keyframes speakingPresence{0%,100%{transform:scale(1.025) translate3d(0,0,0) rotate(0)}28%{transform:scale(1.034) translate3d(-1px,-2px,0) rotate(-.18deg)}58%{transform:scale(1.03) translate3d(1px,-1px,0) rotate(.12deg)}78%{transform:scale(1.036) translate3d(0,-2px,0) rotate(-.08deg)}}
@keyframes listeningPresence{0%,100%{transform:scale(1.02) translate3d(0,0,0)}50%{transform:scale(1.032) translate3d(-2px,-2px,0) rotate(-.25deg)}}
@keyframes thoughtfulPresence{0%,100%{transform:scale(1.02) translate3d(0,1px,0) rotate(0)}50%{transform:scale(1.03) translate3d(-2px,-1px,0) rotate(-.38deg)}}
@keyframes concernedPresence{0%,100%{transform:scale(1.02) translate3d(0,1px,0)}50%{transform:scale(1.026) translate3d(0,-1px,0)}}
@keyframes warmReaction{0%,100%{transform:scale(1.022) translate3d(0,0,0)}35%{transform:scale(1.04) translate3d(0,-4px,0) rotate(-.2deg)}60%{transform:scale(1.032) translate3d(1px,-2px,0) rotate(.16deg)}}
@keyframes speechGlow{0%,100%{opacity:.25}50%{opacity:.75}}
@media(prefers-reduced-motion:reduce){.portrait-stack,.companion-stage.speaking .portrait-stack,.companion-stage.listening .portrait-stack,.companion-stage.expression-thoughtful .portrait-stack,.companion-stage.expression-concerned .portrait-stack,.companion-stage.expression-laugh .portrait-stack,.companion-stage.speaking:after{animation:none}}
