@keyframes pulse-fail {
  0%, 100% {
    box-shadow: 0 0 12px var(--color-nogo-bg);
  }
  50% {
    box-shadow: 0 0 20px rgba(198, 40, 40, 0.2);
  }
}

@keyframes pulse-go {
  0%, 100% {
    box-shadow: 0 0 8px var(--color-go-bg);
  }
  50% {
    box-shadow: 0 0 16px rgba(46, 125, 50, 0.15);
  }
}

@keyframes shimmer {
  0% {
    background-position: -200% 0;
  }
  100% {
    background-position: 200% 0;
  }
}

@keyframes slide-down {
  from {
    opacity: 0;
    transform: translateY(-8px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slide-up {
  from {
    opacity: 0;
    transform: translateY(40px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

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

.condition-card.fail {
  animation: pulse-fail 2s ease-in-out infinite;
}

.condition-card.pass {
  animation: pulse-go 3s ease-in-out infinite;
}

.search-results {
  animation: slide-down 0.2s ease-out;
}

.skeleton {
  background: linear-gradient(90deg, var(--bg-card) 25%, var(--bg-card-hover) 50%, var(--bg-card) 75%);
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
  border-radius: var(--radius-md);
}

.status-banner.loading {
  animation: fade-in 0.3s ease;
}

.refresh-spinning {
  animation: spin 1s linear infinite;
}

.modal:not(.hidden) .modal-content {
  animation: slide-up 0.3s ease-out;
}

.modal:not(.hidden) .modal-backdrop {
  animation: fade-in 0.2s ease-out;
}

.daily-card.expanded .daily-intervals {
  animation: slide-down 0.2s ease-out;
}

.hourly-cell {
  animation: fade-in 0.3s ease-out both;
}

.hourly-cell:nth-child(2) { animation-delay: 0.03s; }
.hourly-cell:nth-child(3) { animation-delay: 0.06s; }
.hourly-cell:nth-child(4) { animation-delay: 0.09s; }
.hourly-cell:nth-child(5) { animation-delay: 0.12s; }
.hourly-cell:nth-child(6) { animation-delay: 0.15s; }
.hourly-cell:nth-child(7) { animation-delay: 0.18s; }
.hourly-cell:nth-child(8) { animation-delay: 0.21s; }
.hourly-cell:nth-child(9) { animation-delay: 0.24s; }
.hourly-cell:nth-child(10) { animation-delay: 0.27s; }
.hourly-cell:nth-child(11) { animation-delay: 0.3s; }
.hourly-cell:nth-child(12) { animation-delay: 0.33s; }

.daily-card {
  animation: fade-in 0.3s ease-out both;
}

.daily-card:nth-child(2) { animation-delay: 0.05s; }
.daily-card:nth-child(3) { animation-delay: 0.1s; }
.daily-card:nth-child(4) { animation-delay: 0.15s; }
.daily-card:nth-child(5) { animation-delay: 0.2s; }
