/* 背景と人物を独立したレイヤーで動かす */
.campaign-fv .hero.has-motion-background{background-image:none}
.hero-motion-background{position:absolute;inset:0;z-index:-2;pointer-events:none;animation:hero-breathe 18s ease-in-out infinite;will-change:transform}
@keyframes hero-breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.045)}}
.campaign-fv .person{transform-origin:50% 100%;--enter-x:-22px;--sway:-1deg}
.campaign-fv .person-right{--enter-x:22px;--sway:1deg}
.campaign-fv[data-people-motion="1"] .person{animation:person-rise 1.3s ease-out both}
.campaign-fv[data-people-motion="2"] .person{animation:person-side 1.3s ease-out both}
.campaign-fv[data-people-motion="3"] .person{animation:person-float 5s ease-in-out infinite}
.campaign-fv[data-people-motion="4"] .person{animation:person-sway 6s ease-in-out infinite}
.campaign-fv[data-people-motion="5"] .person{animation:person-pop 1.2s cubic-bezier(.2,.75,.3,1) both}
.campaign-fv[data-people-motion="1"] .person-right,.campaign-fv[data-people-motion="2"] .person-right,.campaign-fv[data-people-motion="5"] .person-right{animation-delay:.18s}
.campaign-fv[data-people-motion="3"] .person-right,.campaign-fv[data-people-motion="4"] .person-right{animation-delay:-2.5s}
@keyframes person-rise{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}
@keyframes person-side{from{opacity:0;transform:translateX(var(--enter-x))}to{opacity:1;transform:translateX(0)}}
@keyframes person-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-7px)}}
@keyframes person-sway{0%,100%{transform:rotate(0)}50%{transform:rotate(var(--sway))}}
@keyframes person-pop{0%{opacity:0;transform:scale(.94)}70%{opacity:1;transform:scale(1.012)}100%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.campaign-fv .person,.hero-motion-background{animation:none!important}}
