/* ===== SAFAREJA — ANIMATIONS ===== */

/* Fade up on scroll */
.fade-up {
  opacity: 0;
  transform: translateY(24px);
  animation: fadeUp 0.5s ease forwards;
  animation-delay: var(--delay, 0s);
}

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

/* Scale in */
.scale-in {
  animation: scaleIn 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}
@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.85); }
  to   { opacity: 1; transform: scale(1); }
}

/* Slide in from bottom */
.slide-up {
  animation: slideUp 0.4s cubic-bezier(0.34, 1.1, 0.64, 1) forwards;
}
@keyframes slideUp {
  from { transform: translateY(30px); opacity: 0; }
  to   { transform: translateY(0);    opacity: 1; }
}

/* Pulse for fav button */
@keyframes heartBeat {
  0%   { transform: scale(1); }
  14%  { transform: scale(1.3); }
  28%  { transform: scale(1); }
  42%  { transform: scale(1.15); }
  70%  { transform: scale(1); }
}
.heart-beat { animation: heartBeat 0.5s ease; }

/* Page transition */
.page-enter {
  animation: pageEnter 0.35s ease forwards;
}
@keyframes pageEnter {
  from { opacity: 0; transform: translateX(-16px); }
  to   { opacity: 1; transform: translateX(0); }
}

/* Topbar scroll hide/show */
.topbar { transition: transform 0.3s ease; }
.topbar.hidden { transform: translateY(-100%); }

/* Active press effect */
.press-effect:active { transform: scale(0.97); transition: transform 0.1s; }
