/* Animations and transitions - Clean Simple Design */

/* Keyframe animations - Minimal and Smooth */
@keyframes fadeIn {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

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

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

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

/* Smooth transitions for all interactive elements */
* {
  transition: color var(--transition-normal), 
              background-color var(--transition-normal), 
              border-color var(--transition-normal), 
              transform var(--transition-normal), 
              box-shadow var(--transition-normal);
}

/* Hover animations - Simple and Clean */
.hover-lift {
  transition: transform var(--transition-normal), box-shadow var(--transition-normal);
}

.hover-lift:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
}

.hover-slide {
  transition: transform var(--transition-normal);
}

.hover-slide:hover {
  transform: translateX(4px);
}

/* Button animations - Subtle */
.btn {
  position: relative;
  overflow: hidden;
  transition: all var(--transition-normal);
}

.btn:hover {
  transform: translateY(-1px);
}

/* Card animations - Smooth Hover Effects */
.card,
.research-card,
.publication-item {
  transition: all var(--transition-normal);
}

.card:hover,
.research-card:hover {
  transform: translateY(-4px);
}

.publication-item:hover {
  transform: translateX(8px);
}

/* Navigation animations */
.nav-links a {
  position: relative;
  transition: all var(--transition-normal);
}

/* Fade in animations for content */
.animate-fade-in {
  opacity: 0;
  animation: fadeIn 0.6s ease forwards;
}

.animate-fade-in-up {
  opacity: 0;
  animation: fadeInUp 0.6s ease forwards;
}

/* Staggered animations for lists */
.animate-stagger > *:nth-child(1) {
  animation-delay: 0.1s;
}

.animate-stagger > *:nth-child(2) {
  animation-delay: 0.2s;
}

.animate-stagger > *:nth-child(3) {
  animation-delay: 0.3s;
}

.animate-stagger > *:nth-child(4) {
  animation-delay: 0.4s;
}

/* Loading animations - Simple */
.loading-spinner {
  display: inline-block;
  width: 20px;
  height: 20px;
  border: 2px solid var(--bg-light);
  border-radius: 50%;
  border-top-color: var(--primary-color);
  animation: spin 1s linear infinite;
}

/* Smooth reveal for scroll-triggered content */
.reveal-on-scroll {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}

.reveal-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Hero animations - Subtle entrance */
.hero h1 {
  animation: fadeInUp 0.8s ease forwards;
}

.hero .subtitle {
  animation: fadeInUp 0.8s ease 0.2s both;
}

.hero .description {
  animation: fadeInUp 0.8s ease 0.4s both;
}

.hero .cta-button {
  animation: fadeInUp 0.8s ease 0.6s both;
}

/* Form focus animations */
.form-control:focus {
  transform: scale(1.01);
}

/* Link hover effects */
a {
  transition: color var(--transition-normal), transform var(--transition-fast);
}

a:hover {
  transform: translateY(-1px);
}

/* Social links animations */
.social-links a {
  transition: transform var(--transition-normal);
}

.social-links a:hover {
  transform: scale(1.2);
}

/* Smooth page transitions */
.page-transition {
  opacity: 0;
  animation: fadeIn 0.3s ease forwards;
}

/* Performance optimizations */
.will-change-transform {
  will-change: transform;
}

.will-change-opacity {
  will-change: opacity;
}

/* Reduced motion for accessibility */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  
  .hover-lift:hover,
  .hover-slide:hover,
  .btn:hover,
  .card:hover,
  .research-card:hover,
  .publication-item:hover {
    transform: none !important;
  }
}