@keyframes fadeIn {
  from { opacity: 0; transform: translateY(-10px); }
  to { opacity: 1; transform: translateY(0); }
}

.job-table tbody tr {
  animation: fadeIn 0.3s ease forwards;
}

@keyframes progressFill {
  from { width: 0%; }
  to { width: 100%; }
}

.progress-bar-R {
  animation: progressFill 5s linear forwards;
}

.btn {
  position: relative;
  overflow: hidden;
}

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

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

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

.modal-content {
  animation: modalFadeIn 0.2s ease forwards;
}

@keyframes gaugePulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.05); }
}

.gauge-text {
  animation: gaugePulse 2s infinite;
}

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

.chart-container {
  animation: chartFadeIn 1s ease forwards;
}
