/* ==========================================================================
   Petal & Stem — animations.css
   Keyframes and motion utilities. Respects prefers-reduced-motion.
   ========================================================================== */

@keyframes marquee {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

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

@keyframes bloomIn {
  0% { opacity: 0; transform: scale(0.2) translateY(20px); }
  60% { opacity: 1; transform: scale(1.1) translateY(0); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}

@keyframes floatY {
  0%, 100% { transform: translateY(0) rotate(var(--rot, 0deg)); }
  50% { transform: translateY(-18px) rotate(var(--rot, 0deg)); }
}

@keyframes drift {
  0% { transform: translate(0, 0) rotate(0deg); opacity: 0; }
  10% { opacity: var(--op, 0.5); }
  90% { opacity: var(--op, 0.5); }
  100% { transform: translate(var(--dx, 40px), 120vh) rotate(360deg); opacity: 0; }
}

@keyframes spinSlow {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

@keyframes pulse {
  0%, 100% { transform: scale(1); opacity: 1; }
  50% { transform: scale(1.06); opacity: 0.85; }
}

/* Floating petal decoration */
.petal-deco {
  position: absolute;
  pointer-events: none;
  opacity: 0;
  animation: drift var(--dur, 16s) linear infinite;
  will-change: transform, opacity;
}

/* Gentle floating for hero decorative shapes */
.float-anim { animation: floatY 6s ease-in-out infinite; }
.float-anim--2 { animation: floatY 8s ease-in-out infinite; animation-delay: -2s; }
.float-anim--3 { animation: floatY 7s ease-in-out infinite; animation-delay: -4s; }

/* Spin on hover for circular badges */
.spin-badge { animation: spinSlow 20s linear infinite; }

/* Reduced motion — disable non-essential animations */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
  .petal-deco, .float-anim, .float-anim--2, .float-anim--3, .spin-badge { animation: none !important; opacity: 0 !important; }
  .reveal, .reveal-stagger > * { opacity: 1 !important; transform: none !important; }
  .cursor, .cursor__label { display: none !important; }
}
