/* CruiseHQ — Animations & Microinteractions */

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes slideUp { from { transform: translateY(100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@keyframes slideDown { from { transform: translateY(-8px); opacity: 0; } to { transform: translateY(0); opacity: 1; } }
@keyframes scaleIn { from { transform: scale(0.94); opacity: 0; } to { transform: scale(1); opacity: 1; } }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: 0.55; } }

.animate-fade-up   { animation: fadeUp 0.35s ease forwards; opacity: 0; }
.animate-fade-in   { animation: fadeIn 0.25s ease forwards; }
.animate-slide-up  { animation: slideUp 0.3s ease forwards; }
.animate-slide-down{ animation: slideDown 0.3s ease forwards; }
.animate-scale-in  { animation: scaleIn 0.2s ease forwards; }
.animate-pulse-soft{ animation: pulse 2s ease-in-out infinite; }

/* Staggered card entry */
.stagger > * { animation: fadeUp 0.35s ease forwards; opacity: 0; }
.stagger > *:nth-child(1) { animation-delay: 0.00s; }
.stagger > *:nth-child(2) { animation-delay: 0.04s; }
.stagger > *:nth-child(3) { animation-delay: 0.08s; }
.stagger > *:nth-child(4) { animation-delay: 0.12s; }
.stagger > *:nth-child(5) { animation-delay: 0.16s; }
.stagger > *:nth-child(6) { animation-delay: 0.20s; }
.stagger > *:nth-child(7) { animation-delay: 0.24s; }
.stagger > *:nth-child(8) { animation-delay: 0.28s; }
.stagger > *:nth-child(9) { animation-delay: 0.32s; }
.stagger > *:nth-child(10){ animation-delay: 0.36s; }
.stagger > *:nth-child(n+11){ animation-delay: 0.40s; }

/* Card hover */
.card-hover { transition: transform 0.2s ease, box-shadow 0.2s ease; }
@media (hover: hover) {
  .card-hover:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); }
}

/* FAB press */
.press-scale { transition: transform 0.12s ease; }
.press-scale:active { transform: scale(0.94); }

/* Confetti canvas */
#confetti-canvas { position: fixed; inset: 0; pointer-events: none; z-index: 200; }

/* Reduced motion — kill everything */
@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;
  }
  .stagger > * { opacity: 1; }
  .animate-fade-up { opacity: 1; }
}
