/**
 * AniWorld - Helper Utilities
 *
 * Utility classes for visibility, spacing, flexbox, and text.
 */

/* Display utilities */
.hidden {
  display: none !important;
}

.visible {
  visibility: visible !important;
}

.invisible {
  visibility: hidden !important;
}

.block {
  display: block !important;
}

.inline-block {
  display: inline-block !important;
}

.inline {
  display: inline !important;
}

.flex {
  display: flex !important;
}

.inline-flex {
  display: inline-flex !important;
}

.grid {
  display: grid !important;
}

/* Flexbox utilities */
.flex-row {
  flex-direction: row !important;
}

.flex-column {
  flex-direction: column !important;
}

.flex-wrap {
  flex-wrap: wrap !important;
}

.flex-nowrap {
  flex-wrap: nowrap !important;
}

.justify-start {
  justify-content: flex-start !important;
}

.justify-end {
  justify-content: flex-end !important;
}

.justify-center {
  justify-content: center !important;
}

.justify-between {
  justify-content: space-between !important;
}

.justify-around {
  justify-content: space-around !important;
}

.align-start {
  align-items: flex-start !important;
}

.align-end {
  align-items: flex-end !important;
}

.align-center {
  align-items: center !important;
}

.align-stretch {
  align-items: stretch !important;
}

.flex-1 {
  flex: 1 !important;
}

.flex-auto {
  flex: auto !important;
}

.flex-none {
  flex: none !important;
}

/* Text alignment */
.text-left {
  text-align: left !important;
}

.text-center {
  text-align: center !important;
}

.text-right {
  text-align: right !important;
}

/* Text transformation */
.text-uppercase {
  text-transform: uppercase !important;
}

.text-lowercase {
  text-transform: lowercase !important;
}

.text-capitalize {
  text-transform: capitalize !important;
}

/* Font weight */
.font-normal {
  font-weight: 400 !important;
}

.font-medium {
  font-weight: 500 !important;
}

.font-semibold {
  font-weight: 600 !important;
}

.font-bold {
  font-weight: 700 !important;
}

/* Margins */
.m-0 {
  margin: 0 !important;
}

.mt-0 {
  margin-top: 0 !important;
}

.mb-0 {
  margin-bottom: 0 !important;
}

.ml-0 {
  margin-left: 0 !important;
}

.mr-0 {
  margin-right: 0 !important;
}

.mb-1 {
  margin-bottom: var(--spacing-xs) !important;
}

.mb-2 {
  margin-bottom: var(--spacing-sm) !important;
}

.mb-3 {
  margin-bottom: var(--spacing-md) !important;
}

.mb-4 {
  margin-bottom: var(--spacing-lg) !important;
}

.mt-1 {
  margin-top: var(--spacing-xs) !important;
}

.mt-2 {
  margin-top: var(--spacing-sm) !important;
}

.mt-3 {
  margin-top: var(--spacing-md) !important;
}

.mt-4 {
  margin-top: var(--spacing-lg) !important;
}

.mx-auto {
  margin-left: auto !important;
  margin-right: auto !important;
}

/* Padding */
.p-0 {
  padding: 0 !important;
}

.p-1 {
  padding: var(--spacing-xs) !important;
}

.p-2 {
  padding: var(--spacing-sm) !important;
}

.p-3 {
  padding: var(--spacing-md) !important;
}

.p-4 {
  padding: var(--spacing-lg) !important;
}

/* Width utilities */
.w-full {
  width: 100% !important;
}

.w-auto {
  width: auto !important;
}

/* Height utilities */
.h-full {
  height: 100% !important;
}

.h-auto {
  height: auto !important;
}

/* Overflow */
.overflow-hidden {
  overflow: hidden !important;
}

.overflow-auto {
  overflow: auto !important;
}

.overflow-scroll {
  overflow: scroll !important;
}

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

.absolute {
  position: absolute !important;
}

.fixed {
  position: fixed !important;
}

.sticky {
  position: sticky !important;
}

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

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

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

.select-text {
  user-select: text !important;
}

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

/* Border radius */
.rounded {
  border-radius: var(--border-radius-md) !important;
}

.rounded-lg {
  border-radius: var(--border-radius-lg) !important;
}

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

.rounded-none {
  border-radius: 0 !important;
}

/* Shadow */
.shadow {
  box-shadow: var(--shadow-card) !important;
}

.shadow-lg {
  box-shadow: var(--shadow-elevated) !important;
}

.shadow-none {
  box-shadow: none !important;
}

/* Opacity */
.opacity-0 {
  opacity: 0 !important;
}

.opacity-50 {
  opacity: 0.5 !important;
}

.opacity-100 {
  opacity: 1 !important;
}

/* Transition */
.transition {
  transition: all var(--transition-duration) var(--transition-easing) !important;
}

.transition-none {
  transition: none !important;
}

/* Z-index */
.z-0 {
  z-index: 0 !important;
}

.z-10 {
  z-index: 10 !important;
}

.z-50 {
  z-index: 50 !important;
}

.z-100 {
  z-index: 100 !important;
}
