/* Turbo Loading States */
turbo-frame[busy] {
  opacity: 0.5;
  pointer-events: none;
}

/* Flash Message Transitions */
.alert {
  transition: opacity 0.3s ease;
}

/* Order Row Hover */
tr.hover:hover {
  background-color: oklch(var(--b2));
}

/* Live Dashboard: Highlight animation for real-time updates */
@keyframes highlight-pulse {
  0% {
    box-shadow: 0 0 0 0 rgb(34 197 94 / 0.7);
    background-color: rgb(34 197 94 / 0.15);
  }
  70% {
    box-shadow: 0 0 0 6px rgb(34 197 94 / 0.3);
    background-color: rgb(34 197 94 / 0.08);
  }
  100% {
    box-shadow: 0 0 0 0 rgb(34 197 94 / 0);
    background-color: transparent;
  }
}

@keyframes highlight-row {
  0% {
    background-color: rgb(34 197 94 / 0.25);
  }
  100% {
    background-color: transparent;
  }
}

.animate-highlight {
  animation: highlight-pulse 1s ease-out;
}

.animate-highlight-row {
  animation: highlight-row 1s ease-out;
}

/* Version Update Banner */
@keyframes fade-in {
  from {
    opacity: 0;
    transform: translateY(1rem);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.animate-fade-in {
  animation: fade-in 0.3s ease-out;
}
