/* A living ivory garden: all motion is decorative and never intercepts a tap. */
.art-library{position:absolute;width:0;height:0;overflow:hidden;pointer-events:none}
.living-garden{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:102;contain:layout paint}
.flower-spray{position:absolute;width:250px;pointer-events:none;z-index:2;transform-origin:center bottom}
.flower-spray svg{display:block;width:100%;height:auto;overflow:visible}
.flower-breath{transform-origin:38% 95%;animation:garden-sway 5.8s ease-in-out infinite alternate}
.frond{transform-box:view-box;transform-origin:90px 300px;animation:leaf-breeze 4.5s ease-in-out infinite alternate}
.frond-b{animation-delay:-2.5s;animation-duration:6s}
.bloom{animation:rose-breathe 6s ease-in-out infinite alternate;transform-origin:0 0}
.bloom-silk{animation-delay:-2s}.bloom-small{animation-delay:-4s}
.gate-flowers{left:-30px;bottom:-12px;width:min(29vw,360px);opacity:.95;transform:rotate(-8deg)}
.gate-right .gate-flowers{left:auto;right:-30px;transform:scaleX(-1) rotate(-8deg)}
.gate-flowers .flower-breath{animation-duration:7s}
.garden-hero-left{left:-42px;top:15px;width:220px;transform:rotate(160deg);opacity:.96}
.garden-hero-right{right:-31px;bottom:0;width:265px;transform:rotate(9deg)}
.garden-hero-right .flower-breath{animation-delay:-2s}
.love-note{position:relative;isolation:isolate}
.garden-note{left:-30px;bottom:-4px;width:185px;transform:rotate(-19deg);z-index:-1;opacity:.85}
.garden-date-left{left:1%;bottom:-38px;width:220px;transform:rotate(12deg);opacity:.8}
.garden-date-right{right:1%;top:-48px;width:220px;transform:rotate(190deg);opacity:.8}
.date-banner>.eyebrow,.date-display,.date-sentiment{position:relative;z-index:3}
footer{position:relative;overflow:hidden;isolation:isolate}
.garden-footer{right:1%;bottom:-35px;width:190px;opacity:.8;z-index:-1}
.butterfly{position:absolute;width:68px;--wing-color:url(#butterfly-wine);filter:drop-shadow(0 5px 5px #60333b1c);will-change:transform}
.butterfly svg{width:100%;height:auto;overflow:visible}
.butterfly-1{left:3%;top:28%;animation:butterfly-dance 13s ease-in-out infinite}
.butterfly-2{right:4%;top:46%;width:61px;--wing-color:url(#butterfly-ivory);animation:butterfly-dance-right 17s ease-in-out infinite;animation-delay:-7s}
.butterfly-3{left:15%;top:78%;width:42px;--wing-color:url(#butterfly-ivory);animation:butterfly-dance 19s ease-in-out infinite reverse;animation-delay:-11s;opacity:.9}
.butterfly-lilt{animation:butterfly-hover 2.8s ease-in-out infinite alternate}
.butterfly-2 .butterfly-lilt{animation-delay:-1s}
.wing{transform-origin:50px 48px;animation:wing-beat .68s ease-in-out infinite alternate}
.butterfly-2 .wing{animation-duration:.84s}.butterfly-3 .wing{animation-duration:.56s}
.drifting-petal{position:absolute;left:var(--x);top:-60px;width:var(--petal-size);height:calc(var(--petal-size)*1.4);animation:petal-fall var(--fall) linear var(--delay) infinite;will-change:transform;opacity:.62}
.drifting-petal i{display:block;width:100%;height:100%;border-radius:70% 10% 65% 35%;background:linear-gradient(140deg,#bd8894,#7e334b 60%,#5d2437);box-shadow:inset 1px 1px 1px #edc8c755;animation:petal-tumble 3.5s ease-in-out var(--delay) infinite alternate}
.petal-1 i{background:linear-gradient(130deg,#fffaf0,#e0c9a4 70%,#b99b68);box-shadow:inset 1px 1px 2px #fffdf8}
.petal-2 i{background:linear-gradient(140deg,#d8acaa,#b57782 65%,#915666)}
.garden-light{position:absolute;width:3px;height:3px;border-radius:50%;background:#d1ad60;box-shadow:0 0 8px 2px #e5ce9566;animation:golden-air 7s ease-in-out infinite}
.motion-switch{position:fixed;right:14px;bottom:14px;z-index:110;width:44px;height:44px;padding:12px;border:1px solid #c6af80a6;border-radius:50%;background:#faf5e9ed;color:#8d7046;box-shadow:0 2px 12px #5d381012;display:grid;place-items:center}
.motion-switch svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.motion-switch .play-icon{display:none}
.motion-switch[aria-pressed=true] .pause-icon{display:none}
.motion-switch[aria-pressed=true] .play-icon{display:block}
.motion-switch:hover{background:#fffaf0;color:var(--burgundy)}
.swans{animation:swan-glide 6.5s ease-in-out infinite}
.portrait-halo{animation:halo-breathe 6s ease-in-out infinite;transform-origin:center}
.portrait-halo:after{animation:halo-breathe 6s ease-in-out -3s infinite}
.botanical-top{animation:branch-sway 5.5s ease-in-out infinite alternate}
.botanical-bottom{animation:branch-sway-bottom 6.5s ease-in-out infinite alternate}
.wax-seal{animation:seal-invitation 3.6s ease-in-out infinite}
.open-invitation:hover .wax-seal{animation-play-state:paused}
.small-ornament,.form-flower,.footer-flourish{display:inline-block;animation:ornament-turn 12s ease-in-out infinite}
.discover span:last-child{animation:scroll-invitation 2.3s ease-in-out infinite}
.date-display>div{animation:date-breathe 5s ease-in-out infinite}
.lace{animation:lace-glow 5.5s ease-in-out infinite alternate}
body:not(.intro-active) .hero-content>*{animation:petal-arrival 1.25s cubic-bezier(.16,.7,.25,1) both}
body:not(.intro-active) .hero-content>:nth-child(2){animation-delay:.1s}
body:not(.intro-active) .hero-content>:nth-child(3){animation-delay:.2s}
body:not(.intro-active) .hero-content>:nth-child(4){animation-delay:.35s}
body:not(.intro-active) .hero-content>:nth-child(5){animation-delay:.45s}
body:not(.intro-active) .hero-content>:nth-child(n+6){animation-delay:.65s}
.success-panel:not([hidden]) .success-icon{animation:confirmation-bloom .7s ease both}
@keyframes garden-sway{0%{transform:rotate(-3deg) translateY(2px)}100%{transform:rotate(4deg) translateY(-5px)}}
@keyframes leaf-breeze{from{transform:rotate(-1.5deg)}to{transform:rotate(3.5deg)}}
@keyframes rose-breathe{from{transform:rotate(-2deg) scale(.97)}to{transform:rotate(3deg) scale(1.04)}}
@keyframes wing-beat{0%{transform:perspective(200px) rotateY(-12deg)}100%{transform:perspective(200px) rotateY(68deg)}}
@keyframes butterfly-hover{from{transform:translateY(-6px) rotate(-5deg)}to{transform:translateY(7px) rotate(8deg)}}
@keyframes butterfly-dance{0%,100%{transform:translate(0,0) rotate(-15deg)}20%{transform:translate(45px,-50px) rotate(12deg)}45%{transform:translate(20px,-105px) rotate(-20deg)}70%{transform:translate(-9px,-45px) rotate(8deg)}}
@keyframes butterfly-dance-right{0%,100%{transform:translate(0,0) rotate(15deg)}25%{transform:translate(-47px,-40px) rotate(-18deg)}50%{transform:translate(-20px,45px) rotate(20deg)}75%{transform:translate(12px,18px) rotate(-10deg)}}
@keyframes petal-fall{0%{transform:translate3d(0,-4vh,0) rotate(-20deg);opacity:0}10%{opacity:.65}85%{opacity:.55}100%{transform:translate3d(var(--drift),calc(100svh + 140px),0) rotate(250deg);opacity:0}}
@keyframes petal-tumble{0%{transform:rotateY(0) rotate(0)}100%{transform:rotateY(70deg) rotate(60deg)}}
@keyframes golden-air{0%,100%{opacity:.12;transform:translate(0,0) scale(.7)}50%{opacity:.65;transform:translate(16px,-23px) scale(1.2)}}
@keyframes swan-glide{0%,100%{transform:translateY(3px) rotate(-.6deg)}50%{transform:translateY(-10px) rotate(.6deg)}}
@keyframes halo-breathe{0%,100%{transform:scale(.96);opacity:.45}50%{transform:scale(1.035);opacity:1}}
@keyframes seal-invitation{0%,100%{transform:rotate(-8deg) scale(1)}50%{transform:rotate(-3deg) scale(1.045)}}
@keyframes ornament-turn{0%,100%{transform:rotate(-10deg);opacity:.6}50%{transform:rotate(18deg);opacity:1}}
@keyframes scroll-invitation{0%,100%{transform:translateY(0)}50%{transform:translateY(7px)}}
@keyframes date-breathe{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
@keyframes lace-glow{from{opacity:.35}to{opacity:.7}}
@keyframes petal-arrival{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}
@keyframes confirmation-bloom{0%{transform:scale(.65) rotate(-20deg);opacity:0}70%{transform:scale(1.08) rotate(3deg)}100%{transform:scale(1);opacity:1}}
.garden-resting *,.page-asleep *,.page-asleep *:before,.page-asleep *:after,.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation-play-state:paused!important}
.motion-paused .hero-content>*,.motion-paused .reveal{animation:none!important;opacity:1!important;transform:none!important}
@media(min-width:1500px){.butterfly-1{left:12%}.butterfly-2{right:12%}}
@media(max-width:900px){.garden-note{width:130px;left:-15px;opacity:.55}.garden-date-left{left:-65px}.garden-date-right{right:-65px}}
@media(max-width:640px){
  .gate-flowers{width:190px;left:-61px;bottom:-24px}.gate-right .gate-flowers{right:-61px}
  .garden-hero-left{width:129px;left:-43px;top:0}.garden-hero-right{width:156px;right:-36px;bottom:1px}
  .garden-note{width:108px;left:-35px;bottom:-18px;opacity:.6}
  .garden-date-left{width:155px;left:-76px;bottom:-30px}.garden-date-right{width:155px;right:-76px;top:-35px}
  .garden-footer{right:-35px;width:138px;bottom:-20px;opacity:.65}
  .butterfly-1{left:1%;top:33%;width:43px}.butterfly-2{right:2%;top:61%;width:41px}.butterfly-3{display:none}
  .drifting-petal:nth-of-type(n+10){display:none}.drifting-petal{opacity:.5}
  .motion-switch{right:10px;bottom:10px;background:#faf5e9de}
  @keyframes butterfly-dance{0%,100%{transform:translate(0,0) rotate(-15deg)}30%{transform:translate(17px,-60px) rotate(12deg)}65%{transform:translate(7px,-100px) rotate(-20deg)}}
  @keyframes butterfly-dance-right{0%,100%{transform:translate(0,0) rotate(15deg)}30%{transform:translate(-15px,-48px) rotate(-18deg)}65%{transform:translate(5px,35px) rotate(20deg)}}
}
@media(prefers-reduced-motion:reduce){.living-garden{display:none}.flower-spray *,.swans,.wax-seal,.portrait-halo,.hero-content>*,.date-display>div{animation:none!important}.motion-ready .reveal{opacity:1;transform:none}}
