/* General Animations */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

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

@keyframes slideInLeft {
  from { transform: translateX(-50px); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

@keyframes slideInRight {
  from { transform: translateX(50px); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

@keyframes scaleIn {
  from { transform: scale(0.9); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}

@keyframes bounce {
  0%, 20%, 50%, 80%, 100% { transform: translateY(0); }
  40% { transform: translateY(-20px); }
  60% { transform: translateY(-10px); }
}

/* Hover Effects */
.hover-lift {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.hover-lift:hover {
  transform: translateY(-5px);
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
}

.hover-scale {
  transition: transform 0.3s ease;
}

.hover-scale:hover {
  transform: scale(1.05);
}

.hover-bright {
  transition: color 0.3s ease, opacity 0.3s ease;
}

.hover-bright:hover {
  opacity: 0.8;
}

/* Button Animations */
.btn {
  transition: background-color 0.3s ease, transform 0.2s ease;
}

.btn:active {
  transform: scale(0.95);
}

/* Navigation Link Hover Effects */
.nav__links a {
  position: relative;
  transition: color 0.3s ease;
}

.nav__links a::after {
  content: '';
  position: absolute;
  width: 0;
  height: 2px;
  bottom: -5px;
  left: 0;
  background-color: currentColor;
  transition: width 0.3s ease;
}

.nav__links a:hover::after {
  width: 100%;
}

/* Card Animations */
.card, .destination__card, .showcase__card {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

/* Form Input Focus Effects */
input, textarea {
  transition: border-color 0.3s ease, box-shadow 0.3s ease;
}

input:focus, textarea:focus {
  box-shadow: 0 0 0 2px rgba(40, 135, 255, 0.2);
}

/* Footer Link Hover Effects */
.footer__links a {
  transition: transform 0.3s ease, color 0.3s ease;
  display: inline-block;
}

.footer__links a:hover {
  transform: translateX(5px);
}

/* Social Media Icon Animations */
.footer__socials a {
  transition: transform 0.3s ease, background-color 0.3s ease;
}

.footer__socials a:hover {
  transform: translateY(-3px);
}

/* Animation Classes */
.fade-in {
  animation: fadeIn 0.8s ease forwards;
}

.slide-up {
  animation: slideUp 0.8s ease forwards;
}

.slide-in-left {
  animation: slideInLeft 0.8s ease forwards;
}

.slide-in-right {
  animation: slideInRight 0.8s ease forwards;
}

.scale-in {
  animation: scaleIn 0.8s ease forwards;
}

.bounce {
  animation: bounce 1s ease;
}

/* Animation Delays */
.delay-100 {
  animation-delay: 100ms;
}

.delay-200 {
  animation-delay: 200ms;
}

.delay-300 {
  animation-delay: 300ms;
}

.delay-400 {
  animation-delay: 400ms;
}

.delay-500 {
  animation-delay: 500ms;
}

/* Browser Compatibility */
@supports (-webkit-appearance:none) {
  /* Safari and Chrome specific fixes */
  .hover-lift:hover {
    -webkit-transform: translateY(-5px);
    transform: translateY(-5px);
  }
}

@supports (-moz-appearance:none) {
  /* Firefox specific fixes */
  .nav__links a::after {
    bottom: -3px;
  }
}

/* Edge and IE specific fixes */
@supports (-ms-ime-align:auto) {
  .hover-lift:hover {
    transform: translateY(-5px) translateZ(0);
  }
}