@keyframes breatheGlow {
  0%, 100% {
    opacity: 0.65;
    transform: translateX(-50%) scale(0.95);
  }
  50% {
    opacity: 1;
    transform: translateX(-50%) scale(1.06);
  }
}

@keyframes lanternFloat {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}

@keyframes silkDrift {
  0%, 100% {
    transform: translate3d(0, 0, 0);
  }
  50% {
    transform: translate3d(0, -12px, 0);
  }
}

@keyframes pulseGold {
  0%, 100% {
    box-shadow: 0 0 0 rgba(212, 175, 55, 0.28);
  }
  50% {
    box-shadow: 0 0 26px rgba(212, 175, 55, 0.46);
  }
}

.scene__glow {
  animation: breatheGlow 4.8s ease-in-out infinite;
}

.envelope__lantern {
  animation: lanternFloat 5s ease-in-out infinite;
}

.scene__decor--silk-left,
.scene__decor--silk-top {
  animation: silkDrift 7s ease-in-out infinite;
}

.countdown-card__ring,
.scene-dot.is-active {
  animation: pulseGold 2.8s ease-in-out infinite;
}

@keyframes inkReveal {
  from {
    opacity: 0;
    clip-path: inset(0 100% 0 0);
    transform: translateY(8px);
  }
  to {
    opacity: 1;
    clip-path: inset(0 0 0 0);
    transform: translateY(0);
  }
}

@keyframes nameReveal {
  from {
    opacity: 0;
    transform: translateY(18px) scale(0.96);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
