@keyframes dot{0%,100%{transform:translateY(0);opacity:.55}50%{transform:translateY(-6px);opacity:1}}.loading-dots i:nth-child(1){animation:dot 1.1s infinite}.loading-dots i:nth-child(2){animation:dot 1.1s .14s infinite}.loading-dots i:nth-child(3){animation:dot 1.1s .28s infinite}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}.loading-kenty{animation:float 1.7s ease-in-out infinite}.screen-enter{animation:screenIn .22s ease both}@keyframes screenIn{from{opacity:0;transform:translateX(10px)}to{opacity:1;transform:none}}.sheet{animation:sheetIn .25s ease both}@keyframes sheetIn{from{transform:translateY(100%)}to{transform:none}}
/* 会話送りではこの小さな差し替え演出だけを使う。 */
@keyframes dialogueUpdate{from{opacity:.62;transform:translateY(3px)}to{opacity:1;transform:none}}.dialogue-update{animation:dialogueUpdate .15s ease both}@keyframes poseSwap{from{opacity:.72;transform:scale(.992)}to{opacity:1;transform:none}}.pose-swap{animation:poseSwap .16s ease both}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}.loading-kenty{animation:none}}
@keyframes coinInsert{0%{opacity:0;transform:translate(0,18px) scale(.7) rotate(-20deg)}15%{opacity:1}100%{opacity:0;transform:translate(285%,-430%) scale(.34) rotate(70deg)}}
@keyframes capsuleOut{0%{opacity:0;transform:translate(-50%,35%) scale(.35)}55%{opacity:1;transform:translate(-50%,-12%) scale(1.08)}100%{opacity:1;transform:translate(-50%,0) scale(1)}}
@keyframes machineShake{0%,100%{transform:translateX(0) rotate(0)}12%{transform:translateX(-3px) rotate(-.35deg)}24%{transform:translateX(4px) rotate(.35deg)}36%{transform:translateX(-4px) rotate(-.25deg)}48%{transform:translateX(3px) rotate(.2deg)}60%{transform:translateX(-2px)}72%{transform:translateX(2px)}}.gacha-machine.is-shaking{animation:machineShake .44s ease-in-out 5;filter:brightness(1.05) saturate(1.08)}
@keyframes capsuleIdle{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-8px) rotate(2deg)}}
@keyframes revealFlash{0%{opacity:0}22%{opacity:.96}100%{opacity:0}}
@keyframes stampIn{0%{opacity:0;transform:scale(1.7) rotate(-10deg)}70%{opacity:1;transform:scale(.92) rotate(-5deg)}100%{opacity:1;transform:scale(1) rotate(-6deg)}}
@keyframes detailIn{from{opacity:0;transform:scale(.92) translateY(8px)}to{opacity:1;transform:none}}
