/* ============================================
   Turbo Web Styles - Utility Classes
   ============================================

   Single-purpose utility classes that supplement Bootstrap 5.
   No component-level rules belong here.
   ============================================ */

/* ============================================
   COLOR UTILITIES
   ============================================ */

.text-primary { color: var(--color-text-primary) !important; }
.text-secondary { color: var(--color-text-secondary) !important; }
.text-tertiary { color: var(--color-text-tertiary) !important; }
.text-disabled { color: var(--color-text-disabled) !important; }
.text-inverse { color: var(--color-text-inverse) !important; }

.text-success { color: var(--color-success) !important; }
.text-error { color: var(--color-error) !important; }
.text-warning { color: var(--color-warning) !important; }
.text-info { color: var(--color-info) !important; }

.text-monospace {
  font-family: var(--font-family-monospace) !important;
}

.bg-background { background-color: var(--color-background) !important; }
.bg-surface { background-color: var(--color-surface) !important; }
.bg-surface-hover { background-color: var(--color-surface-hover) !important; }
.bg-surface-active { background-color: var(--color-surface-active) !important; }

/* ============================================
   BORDER UTILITIES
   ============================================ */

.border-default { border: var(--border-width) solid var(--color-border) !important; }
.border-light { border: var(--border-width) solid var(--color-border-light) !important; }
.border-dark { border: var(--border-width) solid var(--color-border-dark) !important; }

/* ============================================
   TRANSITION UTILITIES
   ============================================ */

.transition-fast { transition: all var(--transition-fast) !important; }
.transition-base { transition: all var(--transition-base) !important; }
.transition-slow { transition: all var(--transition-slow) !important; }
.transition-none { transition: none !important; }

.transition-colors {
  transition-property: color, background-color, border-color !important;
  transition-duration: var(--transition-fast) !important;
}

.transition-opacity {
  transition-property: opacity !important;
  transition-duration: var(--transition-fast) !important;
}

.transition-transform {
  transition-property: transform !important;
  transition-duration: var(--transition-fast) !important;
}

/* ============================================
   Z-INDEX UTILITIES
   ============================================ */

.z-base { z-index: var(--z-index-base) !important; }
.z-dropdown { z-index: var(--z-index-dropdown) !important; }
.z-sticky { z-index: var(--z-index-sticky) !important; }
.z-overlay { z-index: var(--z-index-overlay) !important; }
.z-modal { z-index: var(--z-index-modal) !important; }
.z-tooltip { z-index: var(--z-index-tooltip) !important; }

/* ============================================
   INTERACTIVE STATE UTILITIES
   ============================================ */

.hover-lift:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-md);
  transition: transform var(--transition-fast), box-shadow var(--transition-fast);
}

.hover-scale:hover {
  transform: scale(1.02);
  transition: transform var(--transition-fast);
}

.active-scale:active {
  transform: scale(0.98);
  transition: transform var(--transition-fast);
}

.hover-bg:hover {
  background-color: var(--color-surface-hover);
  transition: background-color var(--transition-fast);
}

/* ============================================
   TEXT TRUNCATION
   ============================================ */

.line-clamp-2 {
  overflow: hidden !important;
  display: -webkit-box !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 2 !important;
}

.line-clamp-3 {
  overflow: hidden !important;
  display: -webkit-box !important;
  -webkit-box-orient: vertical !important;
  -webkit-line-clamp: 3 !important;
}

/* ============================================
   FOCUS VISIBLE
   ============================================ */

*:focus-visible {
  outline: 2px solid var(--color-border-focus);
  outline-offset: 2px;
}

button:focus-visible,
.btn:focus-visible {
  outline-offset: 2px;
}
