/* Ilustrasi pasangan dari berkas vektor (app/couples.php) — animasi masuk & gerak halus.
   Dipakai di halaman undangan, dan disematkan ke SVG mandiri (/ilustrasi/*.svg). */
.fc .fc-heart{transform-box:fill-box;transform-origin:50% 50%;animation:fcHeart 3.2s ease-in-out infinite}
.fc .fc-heart--2{animation-delay:-.8s}.fc .fc-heart--3{animation-delay:-1.6s}.fc .fc-heart--4{animation-delay:-2.4s}
.fc-enter .fc-heart{animation:fcPop .7s cubic-bezier(.3,1.6,.5,1) 1s both,fcHeart 3.2s ease-in-out 1.7s infinite}

/* Ilustrasi dari berkas vektor (kelas .fcs): tokoh berayun dari titik tumpunya sendiri (--o, satuan viewBox) */
.fcs .fc-groom,.fcs .fc-bride,.fcs .fc-ride,.fcs .fc-wave{transform-box:view-box;transform-origin:var(--o,50% 100%)}
.fcs .fc-groom,.fcs .fc-bride{animation:fcSwayS 6s ease-in-out infinite}
.fcs .fc-bride{animation-delay:-3s}
.fcs .fc-ride{animation:fcBump .7s ease-in-out infinite}
.fcs .fc-wave{animation:fcWave 1.8s ease-in-out infinite}
.fcs .fc-st{transform-box:fill-box;transform-origin:50% 50%;animation:fcStBeat 3.2s ease-in-out infinite}
.fcs .fc-deco{transform-box:fill-box;transform-origin:50% 100%;animation:fcDeco 5s ease-in-out infinite}
.fc-enter.fcs .fc-groom{animation:fcInLs 1.2s cubic-bezier(.2,.8,.2,1) both,fcSwayS 6s ease-in-out 1.2s infinite}
.fc-enter.fcs .fc-bride{animation:fcInRs 1.2s cubic-bezier(.2,.8,.2,1) .12s both,fcSwayS 6s ease-in-out 1.32s infinite}
.fc-enter.fc--riang .fc-groom,.fc-enter.fc--riang .fc-wave{animation:fcInRs 1.2s cubic-bezier(.2,.8,.2,1) both,fcSwayS 6s ease-in-out 1.2s infinite}
.fc-enter.fc--riang .fc-wave{animation:fcInRs 1.2s cubic-bezier(.2,.8,.2,1) both,fcWave 1.8s ease-in-out 1.2s infinite}
.fc-enter.fc--riang .fc-bride{animation:fcInLs 1.2s cubic-bezier(.2,.8,.2,1) .12s both,fcSwayS 6s ease-in-out 1.32s infinite}
.fc-enter.fcs .fc-ride{animation:fcRideS 1.8s cubic-bezier(.2,.7,.2,1) both,fcBump .7s ease-in-out 1.8s infinite}
.fc-enter.fcs .fc-st{animation:fcStIn 1.3s cubic-bezier(.2,.8,.2,1) both,fcStBeat 3.2s ease-in-out 1.3s infinite}
.fc-enter.fcs .fc-deco{animation:fcPop .8s cubic-bezier(.3,1.4,.5,1) .1s both,fcDeco 5s ease-in-out .9s infinite}
@keyframes fcSwayS{0%,100%{transform:rotate(-.6deg)}50%{transform:rotate(.6deg)}}
@keyframes fcWave{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(9deg)}}
@keyframes fcStBeat{0%,100%{transform:scale(1)}14%{transform:scale(1.025)}28%{transform:scale(1)}42%{transform:scale(1.018)}}
@keyframes fcStIn{from{opacity:0;transform:scale(.7)}}
@keyframes fcDeco{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes fcInLs{from{opacity:0;transform:translateX(-140px)}}
@keyframes fcInRs{from{opacity:0;transform:translateX(140px)}}
@keyframes fcRideS{from{opacity:0;transform:translateX(-1500px)}to{opacity:1;transform:translateX(0)}}

@keyframes fcHeart{0%,100%{transform:translateY(0) scale(1)}15%{transform:translateY(-2px) scale(1.25)}30%{transform:translateY(-3px) scale(1)}45%{transform:translateY(-3px) scale(1.14)}65%{transform:translateY(-1px) scale(1)}}
@keyframes fcBump{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.5px)}}
@keyframes fcPop{from{opacity:0;transform:scale(0)}}
@media (prefers-reduced-motion:reduce){.fc *{animation:none!important}}
