@keyframes invite-rise{0%{opacity:0;filter:blur(4px);transform:translateY(14px)}to{opacity:1;filter:none;transform:none}}@media (prefers-reduced-motion:no-preference){.invite-enter{animation:invite-rise .9s var(--ease-out) both;animation-delay:var(--enter-delay,0s)}}@keyframes invite-nudge{0%,to{transform:translateY(0)}50%{transform:translateY(5px)}}@media (prefers-reduced-motion:no-preference){.invite-nudge{animation:invite-nudge 2.4s var(--ease-in-out) infinite}}@keyframes invite-fall{0%{opacity:0;transform:translateY(-8vh)rotate(0)}12%{opacity:var(--peak,.85)}85%{opacity:var(--peak,.85)}to{opacity:0;transform:translate3d(var(--drift), 108svh, 0) rotate(var(--spin))}}.invite-petals{display:none}@media (prefers-reduced-motion:no-preference){.invite-petals{display:block}.invite-petal{top:0;left:var(--x);width:var(--size);height:calc(var(--size) * 1.35);opacity:0;will-change:transform, opacity;animation:invite-fall var(--dur) linear var(--delay) infinite;position:absolute}.invite-petals[data-paused] .invite-petal{animation-play-state:paused}}.invite-petal[data-kind=petal]{background:linear-gradient(135deg, var(--rose-soft), var(--blush));border-radius:80% 0}.invite-petal[data-kind=dust]{height:var(--size);background:radial-gradient(circle, var(--gold-light), color-mix(in oklab, var(--gold) 60%, transparent) 70%, transparent);--peak:.7;border-radius:50%}.invite-foil{touch-action:none;cursor:grab}.invite-foil:active{cursor:grabbing}.invite-foil-static{background:repeating-linear-gradient(115deg, #ffffff24 0 2px, transparent 2px 9px), linear-gradient(135deg, var(--gold-light), var(--gold) 45%, var(--gold-light) 70%, var(--gold-deep))}
