/* ============================================================
 * animations.css — All @keyframes animations
 * My Travel History v2.0 — Modular CSS
 * ============================================================ */

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

@keyframes authCardIn{from{opacity:0;transform:translateY(32px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}

@keyframes shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}

@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}

@keyframes cardIn{from{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}

@keyframes viewIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.view-enter{animation:viewIn .35s var(--ease) both}

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

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

@keyframes slideUpModal{from{opacity:0;transform:translateY(24px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}

@keyframes toastIn{from{opacity:0;transform:translateX(40px) scale(.95)}to{opacity:1;transform:translateX(0) scale(1)}}

@keyframes toastOut{to{opacity:0;transform:translateX(40px) scale(.95)}}

@keyframes budgetPulse{0%,100%{opacity:1}50%{opacity:.7}}

@keyframes badgePulse{0%,100%{box-shadow:0 2px 8px rgba(59,130,246,.3)}
  50%{box-shadow:0 2px 20px rgba(59,130,246,.5)}}

@keyframes joinCardIn{from{opacity:0;transform:translateY(32px) scale(.96)}
  to{opacity:1;transform:translateY(0) scale(1)}}
