@keyframes confetti-fall {
  0% { transform: translate3d(0, -10vh, 0) rotate(0deg); opacity: 1; }
  100% { transform: translate3d(var(--drift, 0px), 108vh, 0) rotate(var(--spin, 540deg)); opacity: .95; }
}
@keyframes star-in {
  0% { transform: scale(.3) rotate(-18deg); opacity: 0; }
  60% { transform: scale(1.18) rotate(4deg); opacity: 1; }
  100% { transform: scale(1) rotate(0); opacity: 1; }
}
@keyframes soft-pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.035); }
}
@keyframes slide-up {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}
.result__stars span { display: inline-block; animation: star-in .45s ease both; }
.result__stars span:nth-child(2) { animation-delay: .12s; }
.result__stars span:nth-child(3) { animation-delay: .24s; }
.btn--primary:not(:disabled):hover { animation: soft-pulse 1.8s ease-in-out infinite; }
.dialog[open] .dialog__form { animation: slide-up .24s ease both; }
