.sakura-page-transition {
  position: fixed;
  z-index: 5000;
  inset: 0;
  overflow: hidden;
  background: rgba(255, 248, 251, 0);
  pointer-events: none;
  transition: background 620ms cubic-bezier(.2, 0, 0, 1);
}

.sakura-page-transition.is-running { background: rgba(255, 248, 251, 0.72); }

.return-bloom {
  position: absolute;
  left: var(--return-origin-x);
  top: var(--return-origin-y);
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255,255,255,.98) 0 18%, rgba(242,116,158,.6) 22%, rgba(255,217,230,.32) 55%, transparent 70%);
  filter: blur(.2px);
  opacity: 0;
  transform: translate(-50%, -50%) scale(.25);
}

.is-running .return-bloom { animation: returnBloom 760ms cubic-bezier(.2, 0, 0, 1) both; }

.return-wind {
  position: absolute;
  left: var(--return-origin-x);
  top: var(--return-origin-y);
  width: min(72vw, 920px);
  height: 100px;
  border-top: 2px solid rgba(226, 100, 143, .22);
  border-radius: 50%;
  opacity: 0;
  transform-origin: left center;
}

.return-wind-a { transform: translate(-12%, -30%) rotate(-8deg); }
.return-wind-b { transform: translate(-8%, 28%) rotate(7deg) scale(.82); }
.is-running .return-wind { animation: returnWind 660ms 90ms cubic-bezier(.2, 0, 0, 1) both; }

.return-petal {
  position: absolute;
  left: var(--return-origin-x);
  top: var(--return-origin-y);
  width: 15px;
  height: 10px;
  border-radius: 80% 20% 70% 30%;
  background: linear-gradient(135deg, #fff6fa, #ef85aa 68%, #dc5f8b);
  box-shadow: 0 2px 8px rgba(205, 72, 119, .16);
  opacity: 0;
  transform: translate(-50%, -50%) rotate(0) scale(var(--petal-scale));
}

.is-running .return-petal {
  animation: returnPetal 700ms var(--petal-delay) cubic-bezier(.2, 0, 0, 1) both;
}

body.is-page-closing { overflow: hidden; }

@keyframes returnBloom {
  0% { opacity: 0; transform: translate(-50%, -50%) scale(.25); }
  34% { opacity: 1; }
  100% { opacity: 0; transform: translate(-50%, -50%) scale(18); }
}

@keyframes returnWind {
  0% { opacity: 0; clip-path: inset(0 100% 0 0); }
  30% { opacity: 1; }
  100% { opacity: 0; clip-path: inset(0 0 0 0); }
}

@keyframes returnPetal {
  0% { opacity: 0; transform: translate(-50%, -50%) rotate(0) scale(var(--petal-scale)); }
  18% { opacity: .94; }
  100% { opacity: 0; transform: translate(calc(-50% + var(--petal-x)), calc(-50% + var(--petal-y))) rotate(var(--petal-r)) scale(calc(var(--petal-scale) * .72)); }
}

@media (prefers-reduced-motion: reduce) {
  .sakura-page-transition { transition-duration: 1ms; }
  .return-bloom,
  .return-wind,
  .return-petal { display: none; }
}
