@keyframes fadeIn {
  from { opacity: 0; transform: translateY(10px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes scaleIn {
  from { opacity: 0; transform: translate(-50%, -50%) scale(0.8); }
  to { opacity: 1; transform: translate(-50%, -50%) scale(1); }
}

@keyframes pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.05); }
}

@keyframes slideIn {
  from { opacity: 0; transform: translateX(-20px); }
  to { opacity: 1; transform: translateX(0); }
}

.animate-fade-in {
  animation: fadeIn 0.5s ease-out forwards;
}

.animate-scale-in {
  animation: scaleIn 0.3s ease-out forwards;
}

.animate-pulse-once {
  animation: pulse 0.3s ease-out;
}

.animate-slide-in {
  animation: slideIn 0.4s ease-out forwards;
}

body {
  transition: opacity 0.3s ease;
}

.option-radio:checked + label {
  background-color: #3B82F6;
  color: white;
  border-color: #3B82F6;
  transform: scale(1.02);
}

.option-radio:not(:checked) + label {
  transition: all 0.2s ease;
}

.option-radio:not(:checked) + label:hover {
  background-color: #EFF6FF;
  border-color: #BFDBFE;
}

.dark .option-radio:not(:checked) + label:hover {
  background-color: #1E3A5F;
  border-color: #3B82F6;
}

.progress-bar-fill {
  transition: width 0.4s ease;
}

.card-hover {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.card-hover:hover {
  transform: translateY(-2px);
  box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.1);
}

.btn-primary {
  transition: all 0.2s ease;
}

.btn-primary:hover {
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(59, 130, 246, 0.4);
}

.btn-primary:active {
  transform: translateY(0);
}

.result-number {
  font-variant-numeric: tabular-nums;
}

.scrollbar-hide::-webkit-scrollbar {
  display: none;
}

.scrollbar-hide {
  -ms-overflow-style: none;
  scrollbar-width: none;
}