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

@keyframes emberRise {
  0% { transform: translate3d(0, 20px, 0) scale(.6); opacity: 0; }
  15% { opacity: .85; }
  100% { transform: translate3d(var(--drift, 30px), -110vh, 0) scale(1.25); opacity: 0; }
}

@keyframes breatheGlow {
  0%,100% { box-shadow: 0 0 0 rgba(255,153,48,0), 0 10px 30px rgba(0,0,0,.35); }
  50% { box-shadow: 0 0 34px rgba(255,153,48,.24), 0 10px 30px rgba(0,0,0,.35); }
}

@keyframes shimmer {
  0% { transform: translateX(-130%) rotate(12deg); }
  65%,100% { transform: translateX(230%) rotate(12deg); }
}

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