/* ================================================================
   ANIMATIONS (animations.css)
   ================================================================ */

/* ── Keyframes ────────────────────────────────────────────────── */
@keyframes nkro-orbit-spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}
@keyframes nkro-heartbeat {
  0%,100% { transform: scale(1); }
  15%     { transform: scale(1.25); }
  30%     { transform: scale(1.1); }
  45%     { transform: scale(1.2); }
}
@keyframes nkro-fade-in-up {
  from { opacity:0; transform:translateY(30px); }
  to   { opacity:1; transform:translateY(0); }
}
@keyframes nkro-fade-in {
  from { opacity:0; }
  to   { opacity:1; }
}
@keyframes nkro-shimmer {
  from { background-position:200% center; }
  to   { background-position:-200% center; }
}
@keyframes nkro-float {
  0%,100% { transform:translateY(0); }
  50%     { transform:translateY(-10px); }
}
@keyframes nkro-twinkle {
  0%,100% { opacity:0; transform:scale(.6); }
  50%     { opacity:.8; transform:scale(1.3); }
}
@keyframes nkro-spin {
  to { transform:rotate(360deg); }
}
@keyframes nkro-slide-in-right {
  from { opacity:0; transform:translateX(50px); }
  to   { opacity:1; transform:translateX(0); }
}
@keyframes nkro-slide-in-up {
  from { opacity:0; transform:translateY(20px); }
  to   { opacity:1; transform:translateY(0); }
}
@keyframes nkro-bounce-in {
  0%   { opacity:0; transform:scale(.6); }
  60%  { opacity:1; transform:scale(1.1); }
  100% { transform:scale(1); }
}
@keyframes nkro-count-up {
  from { opacity:0; transform:translateY(10px); }
  to   { opacity:1; transform:translateY(0); }
}

/* ── Animation utility classes ───────────────────────────────── */
.nkro-animate-fade-up {
  animation: nkro-fade-in-up .7s var(--nkro-ease-out) both;
}
.nkro-animate-heartbeat {
  animation: nkro-heartbeat 2s ease-in-out infinite;
}
.nkro-animate-float {
  animation: nkro-float 4s ease-in-out infinite;
}

/* ── Scroll reveal ────────────────────────────────────────────── */
.nkro-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity .6s var(--nkro-ease-out) var(--delay, 0s),
              transform .6s var(--nkro-ease-out) var(--delay, 0s);
}
.nkro-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ── Stagger for grid items ──────────────────────────────────── */
.nkro-memories-grid .nkro-card:nth-child(1) { transition-delay: .05s; }
.nkro-memories-grid .nkro-card:nth-child(2) { transition-delay: .10s; }
.nkro-memories-grid .nkro-card:nth-child(3) { transition-delay: .15s; }
.nkro-memories-grid .nkro-card:nth-child(4) { transition-delay: .20s; }
.nkro-memories-grid .nkro-card:nth-child(5) { transition-delay: .25s; }
.nkro-memories-grid .nkro-card:nth-child(6) { transition-delay: .30s; }
.nkro-memories-grid .nkro-card:nth-child(n+7) { transition-delay: .35s; }

/* ── Reduced motion overrides ─────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  .nkro-reveal,
  .nkro-animate-fade-up,
  .nkro-animate-heartbeat,
  .nkro-animate-float,
  .nkro-orbit-ring,
  .nkro-particle,
  .nkro-skeleton {
    animation: none !important;
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}
