@keyframes splashIn {
  from { opacity: 0; transform: translateY(22px) scale(.96); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes kenburns {
  0%, 100% { transform: scale(1.05) translate3d(0, 0, 0); opacity: 0; }
  8%, 30% { opacity: 1; }
  45% { transform: scale(1.17) translate3d(-2%, -1%, 0); opacity: 0; }
}

@keyframes droneSweep {
  0% { transform: scale(1.18) translate3d(-2%, -1%, 0) rotate(.15deg); }
  50% { transform: scale(1.08) translate3d(2%, 1%, 0) rotate(-.1deg); }
  100% { transform: scale(1.18) translate3d(-2%, -1%, 0) rotate(.15deg); }
}

@keyframes droneIntro {
  0% {
    background-size: 72% auto;
    transform: scale(1) translate3d(0, 0, 0) rotate(0deg);
    filter: saturate(.92) brightness(.82);
  }
  55% {
    background-size: 92% auto;
    transform: scale(1) translate3d(0, 0, 0) rotate(.02deg);
    filter: saturate(1.05) brightness(.92);
  }
  100% {
    background-size: 118% auto;
    transform: scale(1) translate3d(0, 0, 0) rotate(-.04deg);
    filter: saturate(1.08) brightness(1);
  }
}

@keyframes starPulse {
  0%, 100% { text-shadow: 0 0 0 rgba(201,168,76,0); }
  50% { text-shadow: 0 0 20px rgba(201,168,76,.75); }
}

@keyframes pulseGlow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(37, 211, 102, .35); }
  50% { box-shadow: 0 0 0 14px rgba(37, 211, 102, 0); }
}

@keyframes floatUp {
  from { opacity: 0; transform: translateY(28px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes shimmer {
  from { background-position: 200% 0; }
  to { background-position: -200% 0; }
}

.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .75s ease, transform .75s ease;
}

.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

.confetti::before,
.confetti::after {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  background:
    radial-gradient(circle, #C9A84C 0 4px, transparent 5px) 12% 20% / 90px 90px,
    radial-gradient(circle, #2D5016 0 4px, transparent 5px) 66% 10% / 110px 110px,
    radial-gradient(circle, #F5F0E8 0 3px, transparent 4px) 42% 30% / 80px 80px;
  animation: floatUp 1.1s ease forwards;
  z-index: 50;
}
