.ambient-life{position:fixed;inset:0;z-index:3;pointer-events:none;overflow:hidden;opacity:0;transition:opacity 1.6s ease}
.ambient-life.is-in{opacity:1}
.ambient-life i{position:absolute;left:var(--x);top:0;width:var(--s);height:var(--s);background:var(--c);opacity:0;will-change:transform,opacity;animation-duration:var(--dur);animation-delay:var(--delay);animation-iteration-count:infinite;animation-timing-function:linear}
.ambient-life.fall i{top:-6vh;animation-name:ambFall}
.ambient-life.rise i{top:auto;bottom:-6vh;animation-name:ambRise}
.ambient-life.stay i{top:var(--y)}
.ambient-life.stay.twinkle i{animation-name:ambTwinkle;animation-timing-function:ease-in-out}
.ambient-life.stay.breathe i{animation-name:ambBreathe;animation-timing-function:ease-in-out}
.ambient-life.leaf i{border-radius:0 100% 0 100%}
.ambient-life.petal i{border-radius:100% 0 100% 0;background:radial-gradient(circle at 30% 30%,#fff9,var(--c) 60%)}
.ambient-life.spark i{border-radius:50%;box-shadow:0 0 8px 2px var(--c)}
.ambient-life.star i{clip-path:polygon(50% 0,60% 40%,100% 50%,60% 60%,50% 100%,40% 60%,0 50%,40% 40%)}
.ambient-life.bubble i{border-radius:50%;background:radial-gradient(circle at 30% 28%,#fffc,#fff0 38%),transparent;border:1px solid var(--c)}
.ambient-life.bokeh i{border-radius:50%;filter:blur(2px);background:radial-gradient(circle,var(--c),#0000 70%)}
@keyframes ambFall{0%{opacity:0;transform:translate3d(0,0,0) rotate(0)}12%{opacity:var(--o)}88%{opacity:var(--o)}100%{opacity:0;transform:translate3d(var(--dx),112vh,0) rotate(var(--r))}}
@keyframes ambRise{0%{opacity:0;transform:translate3d(0,0,0) scale(.8)}14%{opacity:var(--o)}86%{opacity:var(--o)}100%{opacity:0;transform:translate3d(var(--dx),-112vh,0) scale(1.1)}}
@keyframes ambTwinkle{0%,100%{opacity:0;transform:scale(.5)}50%{opacity:var(--o);transform:scale(1)}}
@keyframes ambBreathe{0%,100%{opacity:calc(var(--o)*.35);transform:scale(.85)}50%{opacity:var(--o);transform:scale(1.15)}}
@media(prefers-reduced-motion:reduce){.ambient-life{display:none}}
@media(hover:hover){
main .photo,main .couple-photo{transition:transform .5s cubic-bezier(.2,.8,.2,1),box-shadow .5s}
main .photo:hover,main .couple-photo:hover{transform:translateY(-6px) rotate(-.6deg);box-shadow:0 26px 46px #0003}
main .event,main .schedule-day,main .agenda li{transition:transform .35s cubic-bezier(.2,.8,.2,1)}
main .event:hover,main .agenda li:hover{transform:translateX(5px)}
main .count>div,main .time-grid>div{transition:transform .3s cubic-bezier(.2,.8,.2,1)}
main .count>div:hover{transform:translateY(-4px)}
}
main .action:active,main .cta:active,main button:active,main a.button:active{transform:scale(.96)!important}
main .rsvp-form input:focus,main .rsvp-form select:focus,main .rsvp-form textarea:focus{transition:box-shadow .2s,border-color .2s;box-shadow:0 0 0 3px color-mix(in srgb,var(--accent,#927e55) 28%,transparent)}
.entry button,.entry .open{transition:transform .2s cubic-bezier(.2,.8,.2,1),box-shadow .25s}
.entry button:hover,.entry .open:hover{transform:translateY(-2px);box-shadow:0 12px 26px #0003}
.entry button:active,.entry .open:active{transform:scale(.96)}
@media(prefers-reduced-motion:reduce){main .photo,main .couple-photo,main .event,main .count>div{transition:none!important;transform:none!important}}
@media(min-width:900px){
main .arch-photo{max-width:520px;margin-left:auto;margin-right:auto}
main .arch-photo .hero-photo{width:100%;height:auto;max-height:min(74vh,680px);object-fit:cover}
main .hero-photo:not([style*="height"]){max-height:min(74vh,720px);height:auto;margin-left:auto;margin-right:auto;object-fit:cover}
}
main .section.quote{margin-left:auto;margin-right:auto}
