/* Envelope opening for the Bulgarian invitations (designs without a filmed opening).
   Pose to pose: the seal squashes and bursts, the picture pulls back a touch then pushes in,
   and the paper card rises out of the envelope on an arc, overshoots a little and settles. */
.open2 .stage.zoom .stage-frame{animation:bdo-frame .95s cubic-bezier(.45,0,.2,1) forwards}
@keyframes bdo-frame{
  0%{transform:translate(-50%,-50%) scale(1);filter:none}
  16%{transform:translate(-50%,-50%) scale(.975);filter:none}
  100%{transform:translate(-50%,-50%) scale(1.32);filter:brightness(1.06) saturate(1.05)}}

/* seal: squash on the tap, then pop */
.open2 .stage.opening .stage-tap{opacity:1!important;animation:bdo-seal .32s cubic-bezier(.3,0,.2,1) forwards}
.open2 .stage.opening .stage-tap .ring{animation:none;opacity:0}
@keyframes bdo-seal{0%{transform:translate(-50%,-50%) scale(1)}28%{transform:translate(-50%,-50%) scale(.84,1.12)}60%{transform:translate(-50%,-50%) scale(1.18,.92);opacity:1}100%{transform:translate(-50%,-50%) scale(1.5);opacity:0}}
/* secondary action: a gold ring and sparks fly out of the seal */
.open2 .stage-tap::before,.open2 .stage-tap::after{content:"";position:absolute;inset:18%;border-radius:50%;pointer-events:none;opacity:0}
.open2 .stage.opening .stage-tap::before{border:3px solid rgba(255,214,120,.95);animation:bdo-ring .5s cubic-bezier(.2,.7,.3,1) .05s forwards}
.open2 .stage.opening .stage-tap::after{background:radial-gradient(circle,#fff6d8 0 6%,transparent 7%) 50% 0/22% 22% no-repeat,radial-gradient(circle,#ffe39a 0 6%,transparent 7%) 100% 50%/22% 22% no-repeat,radial-gradient(circle,#fff6d8 0 6%,transparent 7%) 50% 100%/22% 22% no-repeat,radial-gradient(circle,#ffe39a 0 6%,transparent 7%) 0 50%/22% 22% no-repeat,radial-gradient(circle,#fff 0 5%,transparent 6%) 15% 15%/18% 18% no-repeat,radial-gradient(circle,#fff 0 5%,transparent 6%) 85% 85%/18% 18% no-repeat;animation:bdo-spark .55s cubic-bezier(.15,.6,.3,1) .04s forwards}
@keyframes bdo-ring{0%{opacity:1;transform:scale(.6)}100%{opacity:0;transform:scale(2.6)}}
@keyframes bdo-spark{0%{opacity:1;transform:scale(.5) rotate(0)}70%{opacity:1}100%{opacity:0;transform:scale(2.3) rotate(25deg)}}

/* the card rising out of the envelope */
.open2 .stage::after{content:"";position:absolute;left:50%;top:50%;z-index:8;width:min(100vw,56.25svh);aspect-ratio:9/16;border-radius:10px;pointer-events:none;opacity:0;
  background:linear-gradient(180deg,rgba(255,255,255,.55),rgba(255,255,255,0) 40%),var(--paper,#f6efe2);
  box-shadow:inset 0 0 0 10px var(--paper,#f6efe2),inset 0 0 0 11px rgba(122,86,30,.35),inset 0 0 0 17px var(--paper,#f6efe2),inset 0 0 0 18px rgba(122,86,30,.18),0 30px 60px -20px rgba(0,0,0,.45)}
.open2 .stage.zoom::after{animation:bdo-card .9s cubic-bezier(.5,0,.25,1) .14s forwards}
@keyframes bdo-card{
  0%{opacity:0;transform:translate(-50%,-42%) scale(.3) rotate(-4deg)}
  22%{opacity:1;transform:translate(-50%,-62%) scale(.42) rotate(-6deg)}
  58%{opacity:1;transform:translate(-47%,-58%) scale(.78) rotate(2.5deg)}
  84%{opacity:1;transform:translate(-50%,-50%) scale(1.04) rotate(-.6deg)}
  100%{opacity:1;transform:translate(-50%,-50%) scale(1.12) rotate(0)}}
@media (min-aspect-ratio:1/1){.open2 .stage::after{width:100vw;aspect-ratio:auto;height:100svh;border-radius:0}
  @keyframes bdo-card{0%{opacity:0;transform:translate(-50%,-42%) scale(.2) rotate(-4deg)}22%{opacity:1;transform:translate(-50%,-62%) scale(.27) rotate(-5deg)}58%{opacity:1;transform:translate(-48%,-56%) scale(.62) rotate(2deg)}84%{opacity:1;transform:translate(-50%,-50%) scale(1.02) rotate(-.4deg)}100%{opacity:1;transform:translate(-50%,-50%) scale(1.02) rotate(0)}}}
.open2 .stage.opening .tag-name{opacity:0;transition:opacity .2s}
.open2 .stage.gone{transition:opacity .45s ease,visibility .45s}
/* the page takes over from the card without a flash */
.open2 .hero-in{transition-duration:.5s}
@media (prefers-reduced-motion:reduce){.open2 .stage.zoom::after,.open2 .stage.zoom .stage-frame,.open2 .stage.opening .stage-tap{animation-duration:.01s}}
