/* ─────────────────────────────────────────────
   ANIMACIONES — CocinarIA
   ───────────────────────────────────────────── */

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

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes slideUp {
  from { transform: translateY(100%); }
  to   { transform: translateY(0); }
}

@keyframes slideDown {
  from { transform: translateY(0); }
  to   { transform: translateY(100%); }
}

@keyframes toastIn {
  from { opacity: 0; transform: translateX(-50%) translateY(10px); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}

@keyframes shimmer {
  0%   { background-position: -400px 0; }
  100% { background-position: 400px 0; }
}

@keyframes spin {
  to { transform: rotate(360deg); }
}

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

/* Welcome / empty state */
@keyframes sgFloat {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-18px); }
}

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

/* Chef IA core burst */
@keyframes coreBackdrop {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes coreBurst {
  0%   { opacity: 0; transform: scale(0.4); }
  40%  { opacity: 1; transform: scale(1.7); }
  100% { opacity: 0; transform: scale(2.6); }
}

@keyframes corePillIn {
  from { opacity: 0; transform: translateY(10px) scale(0.93); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes coreGoldRise {
  0%   { transform: translateY(0); }
  45%  { transform: translateY(-6px); }
  100% { transform: translateY(0); }
}

/* Clases de utilidad para aplicar animaciones */
.anim-fade-up      { animation: fadeUp var(--duration-slow) var(--ease-standard) both; }
.anim-fade-in      { animation: fadeIn var(--duration-standard) var(--ease-standard) both; }
.anim-slide-up     { animation: slideUp var(--duration-standard) var(--ease-spring) both; }
.anim-core-pill-in { animation: corePillIn var(--duration-standard) var(--ease-spring) both; }
.anim-spin         { animation: spin 1s linear infinite; }
.anim-pulse        { animation: pulse 1.6s ease infinite; }

/* Respeta preferencias de movimiento reducido */
@media (prefers-reduced-motion: reduce) {
  .anim-fade-up,
  .anim-fade-in,
  .anim-slide-up,
  .anim-core-pill-in { animation: fadeIn var(--duration-fast) ease both; }

  @keyframes corePillIn {
    from { opacity: 0; }
    to   { opacity: 1; }
  }

  @keyframes coreBurst {
    0%   { opacity: 0; }
    100% { opacity: 0; }
  }

  @keyframes coreGoldRise {
    0%, 100% { transform: none; }
  }
}
