/* 2026 invite motion: envelope, petals, springs, scroll reveals. Respect reduced motion. */
.petal-burst{position:fixed;inset:0;z-index:30;pointer-events:none;overflow:hidden}
.petal{position:absolute;top:-8%;left:var(--x,50%);width:12px;height:18px;border-radius:80% 0 80% 0;background:linear-gradient(135deg,#f4b3c8,#9d315e);opacity:.92;transform:rotate(var(--r,0deg));animation:petal-fall var(--d,2.2s) var(--delay,0s) ease-in forwards}
.petal:nth-child(3n){width:9px;height:14px;background:linear-gradient(135deg,#fff6fa,#e78bad)}
.petal:nth-child(4n){width:7px;height:11px;border-radius:2px;background:#efc45b}
.petal:nth-child(5n){background:linear-gradient(135deg,#f9d1df,#ca7291)}
@keyframes petal-fall{
  0%{transform:translate3d(0,0,0) rotate(var(--r,0deg)) scale(1);opacity:1}
  80%{opacity:.85}
  100%{transform:translate3d(calc(var(--drift, -40px)), 110vh, 0) rotate(calc(var(--r,0deg) + 220deg)) scale(.6);opacity:0}
}

.envelope-button img{transform-origin:50% 70%;transition:transform .55s cubic-bezier(.22,1.25,.36,1),filter .55s}
.envelope-screen.opening img{transform:translateY(-42px) rotateX(28deg) scale(1.08);filter:drop-shadow(0 18px 16px #9d315e30)}

html body h1 span{display:inline-block;animation:title-float 5.5s ease-in-out infinite}
@keyframes title-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}

.music-control{transition:transform .25s cubic-bezier(.22,1.4,.36,1),background .2s,box-shadow .25s}
.music-control:hover{transform:scale(1.08)}
.music-control[aria-label="Pause music"],.music-control[aria-label="Pausar música"]{animation:music-pulse 1.7s ease-in-out infinite;box-shadow:0 0 0 0 #9d315e55}
@keyframes music-pulse{0%{box-shadow:0 0 0 0 #9d315e40}70%{box-shadow:0 0 0 12px #9d315e00}100%{box-shadow:0 0 0 0 #9d315e00}}

html body .button{transition:transform .28s cubic-bezier(.22,1.4,.36,1),box-shadow .28s,background .2s}
html body .button:hover{transform:translateY(-4px) scale(1.03);box-shadow:0 10px 22px #9d315e28}
html body .button:active{transform:translateY(0) scale(.98)}

html body .gallery figure{transition:transform .5s cubic-bezier(.22,1.25,.36,1),box-shadow .5s}
html body .gallery figure:nth-child(odd):hover{transform:rotate(-2deg) translateY(-10px) scale(1.05);box-shadow:0 18px 28px #9d315e22}
html body .gallery figure:nth-child(even):hover{transform:rotate(2deg) translateY(-10px) scale(1.05);box-shadow:0 18px 28px #9d315e22}

.reveal-ready{opacity:0;transform:translateY(28px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .7s cubic-bezier(.22,1,.36,1)}
.reveal-ready.visible{opacity:1;transform:none}
html body .gallery figure.reveal-ready.visible:nth-child(odd){transform:rotate(-2deg)}
html body .gallery figure.reveal-ready.visible:nth-child(even){transform:rotate(2deg)}
.gallery.reveal-ready,.gallery figure.reveal-ready{transition-duration:.55s}
.gallery figure.reveal-ready:nth-child(1){transition-delay:.04s}
.gallery figure.reveal-ready:nth-child(2){transition-delay:.08s}
.gallery figure.reveal-ready:nth-child(3){transition-delay:.12s}
.gallery figure.reveal-ready:nth-child(4){transition-delay:.16s}
.gallery figure.reveal-ready:nth-child(5){transition-delay:.2s}
.gallery figure.reveal-ready:nth-child(6){transition-delay:.08s}
.gallery figure.reveal-ready:nth-child(7){transition-delay:.12s}
.gallery figure.reveal-ready:nth-child(8){transition-delay:.16s}
.gallery figure.reveal-ready:nth-child(9){transition-delay:.2s}
.gallery figure.reveal-ready:nth-child(10){transition-delay:.24s}

.languages button{transition:background .2s,color .2s,transform .2s}
.languages button:hover{transform:translateY(-1px)}

@media (hover:none){
  html body .gallery figure:nth-child(odd):hover,
  html body .gallery figure:nth-child(even):hover{transform:none;box-shadow:0 5px 12px #9d315e0c}
  html body .gallery figure:nth-child(odd){transform:rotate(-2deg)}
  html body .gallery figure:nth-child(even){transform:rotate(2deg)}
}

@media (prefers-reduced-motion:reduce){
  .petal-burst,html body h1 span,.music-control[aria-label="Pause music"],.music-control[aria-label="Pausar música"]{animation:none}
  .reveal-ready{opacity:1;transform:none;transition:none}
  html body h1 span{display:block}
}
