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

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

@keyframes pulse {
  0%, 100% {
    transform: scale(1);
    box-shadow: 0 0 0 0 rgba(32, 170, 46, 0.4);
  }
  50% {
    transform: scale(1.02);
    box-shadow: 0 0 0 8px rgba(32, 170, 46, 0);
  }
}

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

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

.animate-fade-in {
  animation: fadeIn 0.5s ease forwards;
}

.animate-fade-up {
  opacity: 0;
}

.animate-fade-up.is-visible {
  animation: fadeInUp 0.6s ease forwards;
}

.animate-slide-right {
  opacity: 0;
}

.animate-slide-right.is-visible {
  animation: slideInRight 0.5s ease forwards;
}

.btn--primary:not(:disabled) {
  transition: background-color 0.2s ease, transform 0.15s ease, box-shadow 0.2s ease;
}

.btn--primary:not(:disabled):hover {
  background-color: #1d9929;
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(32, 170, 46, 0.35);
}

.btn--primary:not(:disabled):active {
  transform: translateY(0);
}

.btn--secondary:not(:disabled) {
  transition: background-color 0.2s ease, transform 0.15s ease;
}

.btn--secondary:not(:disabled):hover {
  background-color: #31343f;
  transform: translateY(-1px);
}

.card {
  transition: box-shadow 0.2s ease;
}

.card:hover {
  box-shadow: 0 4px 24px rgba(0, 0, 0, 0.25);
}

.faq-answer {
  transition: none;
}

.faq-answer.is-open {
  animation: fadeIn 0.25s ease forwards;
}

.faq-chevron {
  transition: transform 0.25s ease;
}

.faq-question[aria-expanded="true"] .faq-chevron {
  transform: rotate(180deg);
}

.floating-widget {
  transition: opacity 0.3s ease, transform 0.3s ease;
}

.floating-widget.is-hidden {
  opacity: 0;
  transform: translateX(120%);
  pointer-events: none;
}

.star-input-btn {
  transition: color 0.1s ease, transform 0.1s ease;
}

.star-input-btn:hover {
  transform: scale(1.2);
}

.review-card {
  transition: box-shadow 0.2s ease, transform 0.2s ease;
}

.review-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
}

.action-btn {
  transition: color 0.15s ease, background-color 0.15s ease;
}

.action-btn:hover {
  color: #20AA2E;
}

.action-btn.is-active {
  color: #20AA2E;
}

.pulse-cta {
  animation: pulse 2.5s infinite;
}

.nav-link {
  transition: color 0.15s ease;
}

.nav-link:hover {
  color: #20AA2E;
}

.footer-link {
  transition: color 0.15s ease;
}

.footer-link:hover {
  color: #20AA2E;
}

.source-badge {
  transition: background-color 0.15s ease;
}

.source-badge:hover {
  background-color: rgba(32, 170, 46, 0.25);
}

.read-more-btn {
  transition: color 0.15s ease;
}

.read-more-btn:hover {
  color: #1d9929;
}

.info-tile {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.info-tile:hover {
  transform: translateY(-3px);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
}

.comparison-row {
  transition: background-color 0.15s ease;
}

.comparison-row:hover {
  background-color: rgba(255, 255, 255, 0.04);
}
