/* ===== 人物立繪舞台 ===== */
#stage{position:absolute;left:0;right:0;bottom:150px;height:min(60vh,500px);pointer-events:none;z-index:1;overflow:visible}
#stage .pt{position:absolute;bottom:0;height:100%;aspect-ratio:3/4;left:50%;transform:translateX(-50%);
  transition:left .5s cubic-bezier(.3,.8,.3,1),transform .5s cubic-bezier(.3,.8,.3,1),filter .45s,opacity .45s;filter:drop-shadow(0 6px 14px rgba(0,0,0,.25))}
#stage .pt.L{left:30%}
#stage .pt.R{left:70%}
#stage .pt.C{left:50%}
#stage .pt.in{opacity:0;transform:translateX(-50%) translateY(18px)}
#stage .pt.out{opacity:0;transform:translateX(-50%) translateY(18px);transition-duration:.45s}
#stage .pt.dim{filter:brightness(.5) saturate(.55) drop-shadow(0 6px 14px rgba(0,0,0,.25));transform:translateX(-50%) scale(.93);transform-origin:50% 100%;z-index:0}
#stage .pt.dim.soft{filter:brightness(.78) saturate(.8) drop-shadow(0 6px 14px rgba(0,0,0,.2))}
#stage .pt:not(.dim){z-index:2}
#stage .pt svg{width:100%;height:100%;display:block;animation:ptBreathe 4.5s ease-in-out infinite alternate;animation-delay:var(--bd,0s);transform-origin:50% 100%}
@keyframes ptBreathe{from{transform:translateY(0) scaleY(1)}to{transform:translateY(-2px) scaleY(1.006)}}
#stage .eye,#face .eye{animation:blink 5.2s infinite;animation-delay:var(--bd,0s);transform-box:view-box}
@keyframes blink{0%,94%,100%{transform:scaleY(1)}96.5%{transform:scaleY(.08)}}
.m-talk{opacity:0}
#stage .pt.talk .m-talk{animation:talkA .24s steps(1) infinite}
#stage .pt.talk .m-rest{animation:talkB .24s steps(1) infinite}
@keyframes talkA{0%{opacity:1}50%{opacity:0}}
@keyframes talkB{0%{opacity:0}50%{opacity:1}}
/* 對話框頭像 */
#face.pic{overflow:hidden;padding:0;background:#efe6d2}
#face.pic svg{width:100%;height:100%;display:block}
@media (max-height:640px){#stage{height:52vh;bottom:140px}}
@media (min-width:500px){#stage .pt.L{left:32%}#stage .pt.R{left:68%}}
