/**
 * Utility Classes
 * Helper classes for common patterns
 */

/* Visibility Utilities */
.no-print {
  /* Will be hidden in print.css */
}

.active {
  /* Used for active states across components */
}

/* Layout Utilities */
.flex {
  display: flex;
}

.flex-col {
  display: flex;
  flex-direction: column;
}

.flex-1 {
  flex: 1;
}

.gap-2 {
  gap: 0.5rem;
}

.gap-4 {
  gap: 1rem;
}

/* Text Utilities */
.text-center {
  text-align: center;
}

.text-bold {
  font-weight: 700;
}

.text-italic {
  font-style: italic;
}

/* Visibility */
.hidden {
  display: none;
}

.invisible {
  visibility: hidden;
}

/* Cursor */
.cursor-pointer {
  cursor: pointer;
}

.cursor-not-allowed {
  cursor: not-allowed;
}

/* User Select */
.select-none {
  user-select: none;
}

.select-all {
  user-select: all;
}

/* Overflow */
.overflow-auto {
  overflow: auto;
}

.overflow-hidden {
  overflow: hidden;
}

.overflow-x-auto {
  overflow-x: auto;
}

.overflow-y-auto {
  overflow-y: auto;
}

/* Position */
.relative {
  position: relative;
}

.absolute {
  position: absolute;
}

.fixed {
  position: fixed;
}

/* Animation Classes */
.fade-in {
  animation: fadeIn 0.3s ease-in-out;
}

.slide-down {
  animation: slideDown 0.3s ease-in-out;
}

.scale-on-hover:hover {
  transform: scale(1.02);
  transition: transform 0.2s;
}

/* Status Indicators */
.status-success {
  color: var(--success);
}

.status-error {
  color: var(--accent);
}

.status-warning {
  color: var(--warning);
}

.status-info {
  color: var(--info);
}

/* Loading State */
.loading {
  opacity: 0.6;
  pointer-events: none;
}

.loading::after {
  content: "...";
  animation: dots 1.5s steps(4, end) infinite;
}

@keyframes dots {
  0%,
  20% {
    content: ".";
  }
  40% {
    content: "..";
  }
  60% {
    content: "...";
  }
  80%,
  100% {
    content: "";
  }
}

/* Disabled State */
.disabled {
  opacity: 0.5;
  cursor: not-allowed;
  pointer-events: none;
}

/* Shadow Utilities */
.shadow-sm {
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
}

.shadow-md {
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1);
}

.shadow-lg {
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
}

/* Rounded Corners */
.rounded {
  border-radius: 6px;
}

.rounded-full {
  border-radius: 9999px;
}

/* Spacing */
.m-0 {
  margin: 0;
}

.p-0 {
  padding: 0;
}

.mt-2 {
  margin-top: 0.5rem;
}

.mb-2 {
  margin-bottom: 0.5rem;
}

.p-2 {
  padding: 0.5rem;
}

.p-4 {
  padding: 1rem;
}
