/* ---------- ending easter eggs (transform + opacity only) ---------- */
.couple-btn { position:absolute; left:28%; bottom:4%; width:44%; aspect-ratio:320/483; padding:0; z-index:2; cursor:default; }
.couple-btn:not(:disabled) { cursor:pointer; }
.couple-btn .pose { position:absolute; left:0; bottom:0; width:100%; opacity:0; transform-origin:50% 100%; }
.couple-btn .pose img { display:block; width:100%; }
.couple-btn[data-pose="0"] .p0, .couple-btn[data-pose="1"] .p1, .couple-btn[data-pose="2"] .p2 { opacity:1; }
.hearts { position:absolute; left:30%; top:-2%; width:40%; height:20%; pointer-events:none; }
.hearts i { position:absolute; bottom:0; width:24%; opacity:0; }
.hearts i:nth-child(1) { left:0; } .hearts i:nth-child(2) { left:30%; } .hearts i:nth-child(3) { left:58%; } .hearts i:nth-child(4) { left:80%; }
.hearts svg { display:block; width:100%; }
.hearts.pop i { animation:heart 1.3s var(--out) forwards; }
.hearts.pop i:nth-child(2) { animation-delay:.12s; } .hearts.pop i:nth-child(3) { animation-delay:.24s; } .hearts.pop i:nth-child(4) { animation-delay:.36s; }
@keyframes heart { 0% { opacity:0; transform:translate3d(0,20%,0) scale(.4); } 25% { opacity:1; transform:translate3d(0,-30%,0) scale(1); }
  100% { opacity:0; transform:translate3d(0,-260%,0) scale(.8) rotate(12deg); } }
.curtain-btn { position:absolute; inset:0; z-index:4; cursor:pointer; }
.curtain-btn[hidden] { display:none; }
.curtain-btn:focus-visible { outline-offset:-6px; }
.magpie-run { position:absolute; left:0; top:22%; width:26%; z-index:5; opacity:0; pointer-events:none; transform:translate3d(-120%,0,0); }
.magpie-run picture, .magpie-run img { display:block; width:100%; }
.magpie-run svg { position:absolute; left:-46%; top:46%; width:60%; }
.end-stage.flying .magpie-run { animation:mrun 2.6s var(--io) forwards; will-change:transform, opacity; }
@keyframes mrun { 0% { opacity:1; transform:translate3d(-120%,40%,0) rotate(-6deg); } 50% { transform:translate3d(170%,-30%,0) rotate(4deg); }
  95% { opacity:1; } 100% { opacity:0; transform:translate3d(420%,10%,0) rotate(-4deg); } }
.try { margin-top:8px; font-size:14px; color:var(--mute); letter-spacing:.3em; padding-left:.3em; transition:opacity .8s; }
.try.gone { opacity:0; }

/* paper-cut rain: at most 30 pieces, each removed when it lands */
.rain { position:fixed; inset:0; z-index:45; pointer-events:none; overflow:hidden; max-width:var(--col); margin:0 auto; }
.rain i { position:absolute; top:-8%; display:block; will-change:transform, opacity; animation:fall var(--d) linear var(--w) forwards; opacity:0; }
.rain svg { display:block; width:100%; height:100%; }
@keyframes fall { 0% { opacity:0; transform:translate3d(0,0,0) rotate(0); } 6% { opacity:.95; }
  85% { opacity:.9; } 100% { opacity:0; transform:translate3d(var(--x), 112vh, 0) rotate(var(--r)); } }

/* hidden photo */
.peek { position:fixed; inset:0; z-index:65; display:grid; place-items:center; overflow-y:auto; padding:16px 0; }
.peek[hidden] { display:none; }
.peek-bg { position:absolute; inset:0; background:rgba(42,36,32,.55); opacity:0; transition:opacity .4s; cursor:pointer; }
.peek.open .peek-bg { opacity:1; }
.peek-card { position:relative; width:min(74vw, 320px, calc((100vh - 120px) * .7)); padding:4% 4% 0; background:#fbf8f1; box-shadow:0 10px 30px rgba(0,0,0,.35); text-align:center;
  transform:translate3d(0,-120vh,0) rotate(-14deg); transition:transform .9s var(--spring); cursor:pointer; }
.peek.open .peek-card { transform:rotate(-3deg); }
.peek-ph { display:block; aspect-ratio:3/4; background:#cdbda6; overflow:hidden; }
.peek-ph img { display:block; width:100%; height:100%; object-fit:cover; }
.peek-note { display:block; padding:12px 6px 16px; font-size:17px; line-height:1.6; color:var(--ink); }

@media (prefers-reduced-motion: reduce) { .rain, .magpie-run, .hearts { display:none; } .peek-card { transform:rotate(-3deg); } }
