@keyframes float-up {
  0%   { transform: translateY(0) rotate(0deg) scale(1); opacity: 0; }
  10%  { opacity: 0.85; }
  90%  { opacity: 0.6; }
  100% { transform: translateY(-105vh) rotate(40deg) scale(1.3); opacity: 0; }
}

@keyframes pulse {
  0%, 100% {
    box-shadow:
      0 4px 10px rgba(120,20,40,0.5),
      inset 0 -4px 8px rgba(80,0,20,0.4),
      0 0 0 0 color-mix(in srgb, var(--accent) 50%, transparent);
  }
  50% {
    box-shadow:
      0 4px 14px rgba(120,20,40,0.6),
      inset 0 -4px 8px rgba(80,0,20,0.4),
      0 0 0 14px transparent;
  }
}

@keyframes blink {
  0%, 100% { opacity: 0.4; }
  50%      { opacity: 1; }
}

@keyframes caret {
  0%, 100% { opacity: 1; }
  50%      { opacity: 0; }
}

.heart {
  position: fixed;
  bottom: -40px;
  font-size: 22px;
  opacity: 0;
  animation: float-up linear infinite;
  pointer-events: none;
  z-index: 0;
}

.confetti {
  position: fixed;
  top: -20px;
  font-size: 20px;
  pointer-events: none;
  z-index: 9;
  will-change: transform;
}

/* Big flowers that rise from the bottom with a gentle sway */
@keyframes flower-rise {
  0%   { transform: translateY(0) translateX(0) rotate(-8deg); opacity: 0; }
  12%  { opacity: 1; }
  30%  { transform: translateY(-32vh) translateX(26px) rotate(6deg); }
  55%  { transform: translateY(-58vh) translateX(-22px) rotate(-6deg); }
  80%  { transform: translateY(-84vh) translateX(16px) rotate(5deg); opacity: 1; }
  100% { transform: translateY(-112vh) translateX(0) rotate(-4deg); opacity: 0; }
}
.flower {
  position: fixed;
  bottom: -60px;
  z-index: 8;
  pointer-events: none;
  will-change: transform;
  animation: flower-rise ease-in forwards;
  filter: drop-shadow(0 4px 6px rgba(0, 0, 0, 0.15));
}
