/* Animations */
@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.fade-in {
  opacity: 0;
  transform: translateY(20px);
}

.animated {
  animation: fadeIn 0.7s ease-out forwards;
}

/* Button hover effects */
.btn {
  position: relative;
  overflow: hidden;
}

.btn::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  width: 0;
  height: 0;
  background-color: rgba(255, 255, 255, 0.1);
  border-radius: 50%;
  transform: translate(-50%, -50%);
  transition: width 0.6s, height 0.6s;
}

.btn:hover::before {
  width: 300px;
  height: 300px;
}

/* Service card animations */
.service-card {
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.service-icon img {
  transition: transform 0.4s ease;
}

.service-card:hover .service-icon img {
  transform: scale(1.1);
}

/* Form field focus animations */
.form-group input,
.form-group select,
.form-group textarea {
  transition: border-color 0.3s, box-shadow 0.3s;
}

/* Logo animation */
@keyframes pulse {
  0% {
    transform: scale(1);
  }
  50% {
    transform: scale(1.05);
  }
  100% {
    transform: scale(1);
  }
}

#logo:hover {
  animation: pulse 1s infinite;
}

/* Mobile menu animation */
.mobile-menu {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.5s ease;
}

.mobile-menu.active {
  max-height: 300px;
}

.mobile-menu-btn.active span:first-child {
  transform: rotate(45deg) translate(5px, 5px);
}

.mobile-menu-btn.active span:nth-child(2) {
  opacity: 0;
}

.mobile-menu-btn.active span:last-child {
  transform: rotate(-45deg) translate(7px, -7px);
}

/* Scroll indicator */
.scroll-progress {
  position: fixed;
  top: 0;
  left: 0;
  height: 3px;
  background-color: var(--accent-color);
  width: 0%;
  z-index: 9999;
  transition: width 0.1s;
}