/* ===== UTILITIES - Clube da Hora ===== */
/* Classes utilitárias para uso rápido */

/* ===== SPACING - MARGIN ===== */

.m-0 {
  margin: 0;
}

.m-1 {
  margin: var(--spacing-xs);
}

.m-2 {
  margin: var(--spacing-sm);
}

.m-3 {
  margin: var(--spacing-md);
}

.m-4 {
  margin: var(--spacing-lg);
}

.m-5 {
  margin: var(--spacing-xl);
}

.mt-0 {
  margin-top: 0;
}

.mt-1 {
  margin-top: var(--spacing-xs);
}

.mt-2 {
  margin-top: var(--spacing-sm);
}

.mt-3 {
  margin-top: var(--spacing-md);
}

.mt-4 {
  margin-top: var(--spacing-lg);
}

.mt-5 {
  margin-top: var(--spacing-xl);
}

.mb-0 {
  margin-bottom: 0;
}

.mb-1 {
  margin-bottom: var(--spacing-xs);
}

.mb-2 {
  margin-bottom: var(--spacing-sm);
}

.mb-3 {
  margin-bottom: var(--spacing-md);
}

.mb-4 {
  margin-bottom: var(--spacing-lg);
}

.mb-5 {
  margin-bottom: var(--spacing-xl);
}

.ml-0 {
  margin-left: 0;
}

.ml-1 {
  margin-left: var(--spacing-xs);
}

.ml-2 {
  margin-left: var(--spacing-sm);
}

.ml-3 {
  margin-left: var(--spacing-md);
}

.ml-4 {
  margin-left: var(--spacing-lg);
}

.ml-5 {
  margin-left: var(--spacing-xl);
}

.mr-0 {
  margin-right: 0;
}

.mr-1 {
  margin-right: var(--spacing-xs);
}

.mr-2 {
  margin-right: var(--spacing-sm);
}

.mr-3 {
  margin-right: var(--spacing-md);
}

.mr-4 {
  margin-right: var(--spacing-lg);
}

.mr-5 {
  margin-right: var(--spacing-xl);
}

.mx-auto {
  margin-left: auto;
  margin-right: auto;
}

/* ===== SPACING - PADDING ===== */

.p-0 {
  padding: 0;
}

.p-1 {
  padding: var(--spacing-xs);
}

.p-2 {
  padding: var(--spacing-sm);
}

.p-3 {
  padding: var(--spacing-md);
}

.p-4 {
  padding: var(--spacing-lg);
}

.p-5 {
  padding: var(--spacing-xl);
}

.pt-0 {
  padding-top: 0;
}

.pt-1 {
  padding-top: var(--spacing-xs);
}

.pt-2 {
  padding-top: var(--spacing-sm);
}

.pt-3 {
  padding-top: var(--spacing-md);
}

.pt-4 {
  padding-top: var(--spacing-lg);
}

.pt-5 {
  padding-top: var(--spacing-xl);
}

.pb-0 {
  padding-bottom: 0;
}

.pb-1 {
  padding-bottom: var(--spacing-xs);
}

.pb-2 {
  padding-bottom: var(--spacing-sm);
}

.pb-3 {
  padding-bottom: var(--spacing-md);
}

.pb-4 {
  padding-bottom: var(--spacing-lg);
}

.pb-5 {
  padding-bottom: var(--spacing-xl);
}

.pl-0 {
  padding-left: 0;
}

.pl-1 {
  padding-left: var(--spacing-xs);
}

.pl-2 {
  padding-left: var(--spacing-sm);
}

.pl-3 {
  padding-left: var(--spacing-md);
}

.pl-4 {
  padding-left: var(--spacing-lg);
}

.pl-5 {
  padding-left: var(--spacing-xl);
}

.pr-0 {
  padding-right: 0;
}

.pr-1 {
  padding-right: var(--spacing-xs);
}

.pr-2 {
  padding-right: var(--spacing-sm);
}

.pr-3 {
  padding-right: var(--spacing-md);
}

.pr-4 {
  padding-right: var(--spacing-lg);
}

.pr-5 {
  padding-right: var(--spacing-xl);
}

/* ===== DISPLAY ===== */

.d-none {
  display: none !important;
}

.d-block {
  display: block !important;
}

.d-inline {
  display: inline !important;
}

.d-inline-block {
  display: inline-block !important;
}

.d-flex {
  display: flex !important;
}

.d-inline-flex {
  display: inline-flex !important;
}

.d-grid {
  display: grid !important;
}

/* ===== FLEXBOX ===== */

.flex-row {
  flex-direction: row !important;
}

.flex-column {
  flex-direction: column !important;
}

.flex-wrap {
  flex-wrap: wrap !important;
}

.flex-nowrap {
  flex-wrap: nowrap !important;
}

.align-items-start {
  align-items: flex-start !important;
}

.align-items-center {
  align-items: center !important;
}

.align-items-end {
  align-items: flex-end !important;
}

.align-items-stretch {
  align-items: stretch !important;
}

.justify-content-start {
  justify-content: flex-start !important;
}

.justify-content-center {
  justify-content: center !important;
}

.justify-content-end {
  justify-content: flex-end !important;
}

.justify-content-between {
  justify-content: space-between !important;
}

.justify-content-around {
  justify-content: space-around !important;
}

.gap-0 {
  gap: 0 !important;
}

.gap-1 {
  gap: var(--spacing-xs) !important;
}

.gap-2 {
  gap: var(--spacing-sm) !important;
}

.gap-3 {
  gap: var(--spacing-md) !important;
}

.gap-4 {
  gap: var(--spacing-lg) !important;
}

.gap-5 {
  gap: var(--spacing-xl) !important;
}

/* ===== TEXT ALIGNMENT ===== */

.text-left {
  text-align: left !important;
}

.text-center {
  text-align: center !important;
}

.text-right {
  text-align: right !important;
}

.text-justify {
  text-align: justify !important;
}

/* ===== TEXT SIZE ===== */

.text-xs {
  font-size: 0.75rem !important;
}

.text-sm {
  font-size: 0.875rem !important;
}

.text-base {
  font-size: 1rem !important;
}

.text-lg {
  font-size: 1.125rem !important;
}

.text-xl {
  font-size: 1.25rem !important;
}

.text-2xl {
  font-size: 1.5rem !important;
}

/* ===== FONT WEIGHT ===== */

.font-light {
  font-weight: 300 !important;
}

.font-normal {
  font-weight: 400 !important;
}

.font-medium {
  font-weight: 500 !important;
}

.font-semibold {
  font-weight: 600 !important;
}

.font-bold {
  font-weight: 700 !important;
}

/* ===== TEXT TRANSFORM ===== */

.text-uppercase {
  text-transform: uppercase !important;
}

.text-lowercase {
  text-transform: lowercase !important;
}

.text-capitalize {
  text-transform: capitalize !important;
}

/* ===== TEXT COLORS ===== */

.text-primary {
  color: var(--primary) !important;
}

.text-success {
  color: var(--success) !important;
}

.text-danger {
  color: var(--danger) !important;
  font-size: 0.75rem !important;
  font-weight: 500;
  display: block;
  margin-top: 0.25rem;
}

.text-warning {
  color: var(--warning) !important;
}

.text-info {
  color: var(--info) !important;
}

.text-gray-400 {
  color: var(--gray-400) !important;
}

.text-gray-500 {
  color: var(--gray-500) !important;
}

.text-gray-600 {
  color: var(--gray-600) !important;
}

.text-gray-700 {
  color: var(--gray-700) !important;
}

.text-gray-800 {
  color: var(--gray-800) !important;
}

.text-gray-900 {
  color: var(--gray-900) !important;
}

.text-white {
  color: var(--white) !important;
}

.text-black {
  color: var(--black) !important;
}

.text-muted {
  color: var(--gray-500) !important;
}

/* ===== BACKGROUND COLORS ===== */

.bg-primary {
  background-color: var(--primary) !important;
}

.bg-success {
  background-color: var(--success) !important;
}

.bg-danger {
  background-color: var(--danger) !important;
}

.bg-warning {
  background-color: var(--warning) !important;
}

.bg-info {
  background-color: var(--info) !important;
}

.bg-gray-50 {
  background-color: var(--gray-50) !important;
}

.bg-gray-100 {
  background-color: var(--gray-100) !important;
}

.bg-gray-200 {
  background-color: var(--gray-200) !important;
}

.bg-white {
  background-color: var(--white) !important;
}

.bg-transparent {
  background-color: transparent !important;
}

/* ===== WIDTH ===== */

.w-25 {
  width: 25% !important;
}

.w-50 {
  width: 50% !important;
}

.w-75 {
  width: 75% !important;
}

.w-100 {
  width: 100% !important;
}

.w-auto {
  width: auto !important;
}

.w-full {
  width: 100% !important;
}

/* ===== HEIGHT ===== */

.h-25 {
  height: 25% !important;
}

.h-50 {
  height: 50% !important;
}

.h-75 {
  height: 75% !important;
}

.h-100 {
  height: 100% !important;
}

.h-auto {
  height: auto !important;
}

.h-full {
  height: 100% !important;
}

/* ===== BORDER ===== */

.border {
  border: 1px solid var(--gray-200) !important;
}

.border-0 {
  border: 0 !important;
}

.border-top {
  border-top: 1px solid var(--gray-200) !important;
}

.border-bottom {
  border-bottom: 1px solid var(--gray-200) !important;
}

.border-left {
  border-left: 1px solid var(--gray-200) !important;
}

.border-right {
  border-right: 1px solid var(--gray-200) !important;
}

/* ===== BORDER RADIUS ===== */

.rounded-0 {
  border-radius: 0 !important;
}

.rounded-sm {
  border-radius: var(--radius-sm) !important;
}

.rounded {
  border-radius: var(--radius-md) !important;
}

.rounded-lg {
  border-radius: var(--radius-lg) !important;
}

.rounded-xl {
  border-radius: var(--radius-xl) !important;
}

.rounded-full {
  border-radius: var(--radius-full) !important;
}

/* ===== SHADOW ===== */

.shadow-none {
  box-shadow: none !important;
}

.shadow-sm {
  box-shadow: var(--shadow-sm) !important;
}

.shadow {
  box-shadow: var(--shadow-md) !important;
}

.shadow-lg {
  box-shadow: var(--shadow-lg) !important;
}

.shadow-xl {
  box-shadow: var(--shadow-xl) !important;
}

/* ===== POSITION ===== */

.position-static {
  position: static !important;
}

.position-relative {
  position: relative !important;
}

.position-absolute {
  position: absolute !important;
}

.position-fixed {
  position: fixed !important;
}

.position-sticky {
  position: sticky !important;
}

/* ===== OVERFLOW ===== */

.overflow-auto {
  overflow: auto !important;
}

.overflow-hidden {
  overflow: hidden !important;
}

.overflow-visible {
  overflow: visible !important;
}

.overflow-scroll {
  overflow: scroll !important;
}

/* ===== CURSOR ===== */

.cursor-pointer {
  cursor: pointer !important;
}

.cursor-default {
  cursor: default !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;
}

/* ===== OPACITY ===== */

.opacity-0 {
  opacity: 0 !important;
}

.opacity-25 {
  opacity: 0.25 !important;
}

.opacity-50 {
  opacity: 0.5 !important;
}

.opacity-75 {
  opacity: 0.75 !important;
}

.opacity-100 {
  opacity: 1 !important;
}

/* ===== VISIBILITY ===== */

.visible {
  visibility: visible !important;
}

.invisible {
  visibility: hidden !important;
}