body::before, body::after {
  content: "";
  position: fixed;
  z-index: -1;
  width: 34rem;
  height: 34rem;
  border-radius: 50%;
  filter: blur(110px);
  pointer-events: none;
  opacity: 0.11;
}
body::before { top: -14rem; left: -12rem; background: var(--primary); }
body::after { right: -15rem; bottom: -16rem; background: linear-gradient(var(--red), var(--violet)); }

.motion-ready [data-reveal] {
  opacity: 0;
  transform: translateY(2rem) scale(0.985);
  transition: opacity 800ms cubic-bezier(.2,.75,.2,1), transform 800ms cubic-bezier(.2,.75,.2,1);
  transition-delay: var(--reveal-delay, 0ms);
}
.motion-ready [data-reveal].is-visible { opacity: 1; transform: translateY(0) scale(1); }
.motion-ready .motion-title span { opacity: 0; transform: translateY(0.8em); animation: title-rise 850ms cubic-bezier(.16,.8,.25,1) forwards; }
.motion-ready .motion-title span:nth-child(2) { animation-delay: 110ms; }
.motion-ready .motion-title span:nth-child(3) { animation-delay: 220ms; }
.motion-ready .stage-window-main { animation: stage-float 7s ease-in-out infinite; }
.motion-ready .floating-app-send { animation: badge-float 5.6s ease-in-out infinite; }
.motion-ready .floating-app-screen { animation: badge-float 6.4s ease-in-out -1.8s infinite; }
.motion-ready .stage-glow { animation: glow-turn 14s linear infinite; }
.motion-ready .product-card.is-visible { transition-delay: calc(var(--card-index, 0) * 70ms); }

@keyframes title-rise { to { opacity: 1; transform: translateY(0); } }
@keyframes stage-float { 0%,100% { transform: translateY(0) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg)); } 50% { transform: translateY(-0.65rem) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg)); } }
@keyframes badge-float { 0%,100% { transform: translate3d(0,0,0); } 50% { transform: translate3d(0,-0.7rem,0); } }
@keyframes glow-turn { to { transform: rotate(360deg); } }

@media (prefers-reduced-motion: reduce) {
  .motion-ready [data-reveal], .motion-ready .motion-title span { opacity: 1; transform: none; animation: none; }
  .motion-ready .stage-window-main, .motion-ready .floating-app, .motion-ready .stage-glow { animation: none; }
}
