.hero{isolation:isolate}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(ellipse at 15% 35%,#b898e51c,transparent 55%),radial-gradient(ellipse at 85% 65%,#bfb8d01c,transparent 50%);animation:ambient-light 9s ease-in-out infinite alternate}
.hero-copy>*,.hero-photo{animation:invitation-enter .95s cubic-bezier(.2,.65,.3,1) both}
.hero-copy h1{animation-delay:.12s}.hero-phrase{animation-delay:.23s}.date-line,.hero-copy .city{animation-delay:.32s}.hero-copy .button{animation-delay:.4s}.hero-photo{animation-delay:.2s;animation-duration:1.2s}
.hero-spark,.little-star,.large-star,.family-star,.gallery-end,.rsvp-star{animation:disco-sparkle 5s ease-in-out infinite}
.spark-two,.family-star,.gallery-end{animation-delay:-2.5s}.little-star,.rsvp-star{animation-delay:-1.3s}
.disco-ball{animation:mirror-ball-float 6s ease-in-out infinite;transform-origin:50% 0;filter:drop-shadow(0 8px 22px #c9b2ed18)}
.gallery-tile{transition:translate .35s ease,box-shadow .35s ease,border-color .35s ease}
@media(hover:hover){.gallery-tile:hover{translate:0 -4px;box-shadow:0 12px 28px #100a2145;border-color:#c9b2ed77}}
.primary{position:relative;overflow:hidden}.primary::after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 20%,#f4eaff40 48%,transparent 74%);translate:-160% 0;animation:invitation-shine 8s ease-in-out infinite}
.scroll-progress{position:fixed;top:0;left:0;z-index:30;width:100%;height:2px;background:linear-gradient(90deg,#a486ca,#e6d8f5,#b4a5c9);transform:scaleX(var(--scroll-progress,0));transform-origin:0 50%;pointer-events:none}
@keyframes invitation-enter{from{opacity:0;translate:0 16px}to{opacity:1;translate:0 0}}
@keyframes disco-sparkle{0%,100%{opacity:.45;scale:.9;rotate:-5deg}50%{opacity:1;scale:1.08;rotate:5deg}}
@keyframes mirror-ball-float{0%,100%{translate:0 0;rotate:-1.5deg}50%{translate:0 -5px;rotate:1.5deg}}
@keyframes ambient-light{from{opacity:.55}to{opacity:1}}
@keyframes invitation-shine{0%,65%{translate:-160% 0}85%,100%{translate:160% 0}}
@media(prefers-reduced-motion:reduce){.scroll-progress{display:none}.hero::before,.hero-copy>*,.hero-photo,.hero-spark,.little-star,.large-star,.family-star,.gallery-end,.rsvp-star,.disco-ball,.primary::after{animation:none!important}.gallery-tile{transition:none!important}}
