/* One fixed decorative layer, shared by the entire invitation. */
#invitation>section{position:relative;isolation:isolate;overflow:hidden}
.floral-frame{position:fixed;inset:0;z-index:4;pointer-events:none;overflow:hidden;opacity:0;visibility:hidden;transition:opacity 1s ease,visibility 1s}
body:has(#envelope.opened) .floral-frame{opacity:1;visibility:visible}
.floral-wallpaper{position:absolute;inset:0;background:url('botanical-pattern.svg') repeat left top/360px 480px;opacity:.11;mask-image:linear-gradient(to right,#000,transparent 32%,transparent 68%,#000)}
.frame-bouquet{position:absolute;pointer-events:none}
.frame-bouquet img{display:block;width:100%;height:auto;object-fit:contain;transform-origin:50% 95%}
.frame-left{left:-28px;bottom:-36px;width:clamp(165px,19vw,240px);opacity:.86;transform:rotate(-7deg)}
.frame-right{right:-25px;top:60px;width:clamp(145px,16vw,200px);opacity:.75;transform:scaleX(-1) rotate(-8deg)}
.hero:before,.hero:after{display:none}
@media(prefers-reduced-motion:no-preference){
.frame-left img{animation:lily-sway 9s ease-in-out infinite;animation-play-state:paused}
.frame-right img{animation:lily-sway 11s ease-in-out -3s infinite reverse;animation-play-state:paused}
body:has(#invitation.celebration-open) .frame-bouquet img{animation-play-state:running}
@keyframes lily-sway{0%,100%{transform:translate3d(0,0,0) rotate(-1deg)}50%{transform:translate3d(2px,-4px,0) rotate(1deg)}}
}
@media(max-width:900px){.frame-left{width:165px;left:-55px;opacity:.7}.frame-right{width:145px;right:-55px;opacity:.64}}
@media(max-width:600px){
.floral-wallpaper{background-size:270px 360px;opacity:.08;mask-image:linear-gradient(to right,#000,transparent 22%,transparent 78%,#000)}
.frame-left{width:138px;left:-57px;bottom:calc(-25px + env(safe-area-inset-bottom,0px));opacity:.65}
.frame-right{width:118px;right:-57px;top:calc(70px + env(safe-area-inset-top,0px));opacity:.57}
}
@media(max-width:360px){.frame-left{width:122px;left:-57px;opacity:.58}.frame-right{width:104px;right:-56px;opacity:.5}}
@media(prefers-reduced-motion:reduce){.frame-bouquet img{animation:none}.floral-frame{transition:none}}
