.floral-transition{position:fixed;inset:0;z-index:1000;overflow:hidden;background:transparent}
.floral-scene{position:absolute;inset:0;overflow:hidden}
.floral-petal{position:absolute;inset:-5%;background:#e7b2c5;--x:35%;--y:65%;clip-path:ellipse(0% 0% at var(--x) var(--y));animation:petal-cover 1.15s cubic-bezier(.4,0,.2,1) both;animation-delay:calc(var(--i)*35ms)}
.floral-petal:nth-child(3n+1){background:#f5d7df;--x:65%;--y:45%}
.floral-petal:nth-child(3n+2){background:#cf91aa;--x:45%;--y:35%}
.floral-petal:nth-child(3n){background:#e9bbc9;--x:70%;--y:75%}
.floral-reveal .floral-petal{animation:petal-open 1.3s cubic-bezier(.4,0,.2,1) both;animation-delay:calc(var(--i)*40ms)}
.floral-ribbon .floral-petal{background:#f5e6d8;--x:50%;--y:85%}
.floral-ribbon .floral-petal:nth-child(3n+1){background:#d9dfce;--x:20%;--y:75%}
.floral-ribbon .floral-petal:nth-child(3n+2){background:#f0cbd6;--x:80%;--y:70%}
.floral-ribbon .floral-petal:nth-child(3n){background:#fff0e3;--x:50%;--y:30%}
.floral-satin{display:none}
.floral-bouquet{position:absolute;z-index:1;left:50%;top:43%;width:clamp(190px,25vw,320px);color:#843c59;transform:translate(-50%,-65%);animation:bouquet-in .85s .35s both}
.floral-bouquet svg{width:100%;height:auto;overflow:visible}
.floral-ribbon .floral-bouquet{color:#775247}
.floral-carrier{width:clamp(280px,34vw,440px);top:43%}
.carrier-flowers{animation:carrier-place 1.05s .3s both}
.carrier-hand-left,.carrier-hand-right-motion{animation:carrier-hands 1.15s .3s both}
@keyframes carrier-place{0%,15%{transform:translateY(-62px) rotate(-3deg);transform-origin:220px 180px}75%,100%{transform:translateY(0) rotate(0);transform-origin:220px 180px}}
@keyframes carrier-hands{0%,15%{transform:translate(20px,-62px)}65%{transform:translate(20px,0);opacity:1}100%{transform:translate(-28px,8px);opacity:0}}
@media(max-height:550px){.floral-bouquet.floral-carrier{width:220px;top:42%}}
.scissor-arm{transform-origin:160px 153px}
.scissor-arm-back{animation:scissor-snip-back 1.1s .35s both}
.scissor-arm-front{animation:scissor-snip-front 1.1s .35s both}
.cut-ribbon-left{animation:ribbon-cut-left .65s 1.08s both}
.cut-ribbon-right{animation:ribbon-cut-right .65s 1.08s both}
.scissor-spark{animation:scissor-spark .35s 1.05s both;transform-origin:160px 80px}
@keyframes scissor-snip-back{0%,35%{transform:rotate(-25deg)}65%{transform:rotate(-15deg)}72%,85%{transform:rotate(0)}100%{transform:rotate(-12deg)}}
@keyframes scissor-snip-front{0%,35%{transform:rotate(25deg)}65%{transform:rotate(15deg)}72%,85%{transform:rotate(0)}100%{transform:rotate(12deg)}}
@keyframes ribbon-cut-left{from{transform:translate(0,0)}to{transform:translate(-24px,22px) rotate(-6deg);opacity:.7}}
@keyframes ribbon-cut-right{from{transform:translate(0,0)}to{transform:translate(24px,16px) rotate(6deg);opacity:.7}}
@keyframes scissor-spark{0%{opacity:0;transform:scale(.5)}40%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(1.3)}}
.floral-caption{position:absolute;z-index:2;left:0;right:0;top:62%;display:flex;flex-direction:column;align-items:center;text-align:center;padding:16px 24px;color:#64142f;animation:caption-in .6s .65s both}
.floral-caption>span{font-family:Serpantin,Georgia,serif;font-size:clamp(28px,4.5vw,60px);line-height:1.15;max-width:800px}
.floral-caption small{font-family:Vela,Arial,sans-serif;font-size:10px;letter-spacing:.24em;margin-top:18px}
.floral-reveal .floral-caption{animation:caption-out .5s both}
.floral-reveal .floral-bouquet{animation:bouquet-out .85s both}
@keyframes petal-cover{from{clip-path:ellipse(0% 0% at var(--x) var(--y))}to{clip-path:ellipse(150% 150% at var(--x) var(--y))}}
@keyframes petal-open{from{clip-path:ellipse(150% 150% at var(--x) var(--y))}to{clip-path:ellipse(0% 0% at var(--x) var(--y))}}
@keyframes bouquet-in{from{opacity:0;transform:translate(-50%,-45%) rotate(-9deg) scale(.8)}to{opacity:1;transform:translate(-50%,-65%) rotate(0) scale(1)}}
@keyframes bouquet-out{from{opacity:1;transform:translate(-50%,-65%) scale(1)}to{opacity:0;transform:translate(-50%,-75%) rotate(6deg) scale(1.12)}}
@keyframes caption-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes caption-out{from{opacity:1}to{opacity:0;transform:translateY(-12px)}}
@media(max-height:550px){.floral-bouquet{width:150px;top:40%}.floral-caption{top:64%}.floral-caption>span{font-size:28px}}
@media(prefers-reduced-motion:reduce){.floral-transition{display:none}}
.floral-worker{width:clamp(230px,29vw,360px)}
.worker-head{transform-origin:180px 145px;animation:worker-nod .45s .4s infinite alternate ease-in-out}
.worker-arm-left{transform-origin:130px 171px;animation:worker-left .35s .4s infinite alternate ease-in-out}
.worker-arm-right{transform-origin:231px 171px;animation:worker-right .35s .4s infinite alternate ease-in-out}
.worker-bunch{transform-origin:184px 244px;animation:worker-bouquet .35s .4s infinite alternate ease-in-out}
.worker-steam{animation:worker-steam .7s .4s infinite alternate ease-in-out}
@keyframes worker-nod{to{transform:rotate(-4deg) translateY(2px)}}
@keyframes worker-left{to{transform:rotate(-9deg)}}
@keyframes worker-right{to{transform:rotate(9deg)}}
@keyframes worker-bouquet{to{transform:rotate(5deg)}}
@keyframes worker-steam{to{opacity:.3;transform:translateY(-8px)}}
