/* ===================================
   UTILITIES - OrçaZap
   Classes utilitárias mobile-first
   =================================== */

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

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

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

.m-1 {
    margin: var(--space-1) !important;
}

.m-2 {
    margin: var(--space-2) !important;
}

.m-3 {
    margin: var(--space-4) !important;
}

.m-4 {
    margin: var(--space-6) !important;
}

.m-5 {
    margin: var(--space-8) !important;
}

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

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

.mt-3 {
    margin-top: var(--space-4) !important;
}

.mt-4 {
    margin-top: var(--space-6) !important;
}

.mt-5 {
    margin-top: var(--space-8) !important;
}

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

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

.mb-3 {
    margin-bottom: var(--space-4) !important;
}

.mb-4 {
    margin-bottom: var(--space-6) !important;
}

.mb-5 {
    margin-bottom: var(--space-8) !important;
}

.p-0 {
    padding: 0 !important;
}

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

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

.p-3 {
    padding: var(--space-4) !important;
}

.p-4 {
    padding: var(--space-6) !important;
}

.p-5 {
    padding: var(--space-8) !important;
}

.py-1 {
    padding-top: var(--space-1) !important;
    padding-bottom: var(--space-1) !important;
}

.py-2 {
    padding-top: var(--space-2) !important;
    padding-bottom: var(--space-2) !important;
}

.py-3 {
    padding-top: var(--space-4) !important;
    padding-bottom: var(--space-4) !important;
}

.py-4 {
    padding-top: var(--space-6) !important;
    padding-bottom: var(--space-6) !important;
}

.py-5 {
    padding-top: var(--space-8) !important;
    padding-bottom: var(--space-8) !important;
}

.px-1 {
    padding-left: var(--space-1) !important;
    padding-right: var(--space-1) !important;
}

.px-2 {
    padding-left: var(--space-2) !important;
    padding-right: var(--space-2) !important;
}

.px-3 {
    padding-left: var(--space-4) !important;
    padding-right: var(--space-4) !important;
}

.px-4 {
    padding-left: var(--space-6) !important;
    padding-right: var(--space-6) !important;
}

/* ========== TEXT ========== */
.text-center {
    text-align: center !important;
}

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

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

.text-primary {
    color: var(--color-primary) !important;
}

.text-muted {
    color: var(--text-muted) !important;
}

.text-white {
    color: white !important;
}

.fw-normal {
    font-weight: var(--font-weight-normal) !important;
}

.fw-medium {
    font-weight: var(--font-weight-medium) !important;
}

.fw-semibold {
    font-weight: var(--font-weight-semibold) !important;
}

.fw-bold {
    font-weight: var(--font-weight-bold) !important;
}

.small {
    font-size: var(--font-size-sm) !important;
}

.lead {
    font-size: var(--font-size-lg) !important;
    color: var(--text-secondary);
}

/* ========== DISPLAY ========== */
.d-none {
    display: none !important;
}

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

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

.d-grid {
    display: grid !important;
}

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

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

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

.flex-grow-1 {
    flex-grow: 1 !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;
}

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

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

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

.gap-1 {
    gap: var(--space-1) !important;
}

.gap-2 {
    gap: var(--space-2) !important;
}

.gap-3 {
    gap: var(--space-4) !important;
}

.gap-4 {
    gap: var(--space-6) !important;
}

/* ========== WIDTH ========== */
.w-25 {
    width: 25% !important;
}

.w-50 {
    width: 50% !important;
}

.w-75 {
    width: 75% !important;
}

.w-100 {
    width: 100% !important;
}

/* ========== BORDERS ========== */
.border {
    border: 1px solid var(--border-color) !important;
}

.border-top {
    border-top: 1px solid var(--border-color) !important;
}

.border-bottom {
    border-bottom: 1px solid var(--border-color) !important;
}

.border-0 {
    border: 0 !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;
}

/* ========== SHADOWS ========== */
.shadow-none {
    box-shadow: none !important;
}

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

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

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

/* ========== BACKGROUNDS ========== */
.bg-primary {
    background: var(--bg-primary) !important;
}

.bg-secondary {
    background: var(--bg-secondary) !important;
}

.bg-white {
    background: white !important;
}

/* ========== POSITION ========== */
.position-relative {
    position: relative !important;
}

.position-absolute {
    position: absolute !important;
}

.position-fixed {
    position: fixed !important;
}

/* ========== RESPONSIVE DISPLAY ========== */
@media (min-width: 768px) {
    .d-md-none {
        display: none !important;
    }

    .d-md-block {
        display: block !important;
    }

    .d-md-flex {
        display: flex !important;
    }
}

@media (min-width: 992px) {
    .d-lg-none {
        display: none !important;
    }

    .d-lg-block {
        display: block !important;
    }
}

/* ========== MOBILE UTILITIES ========== */
@media (max-width: 767.98px) {
    .mobile-full-width {
        width: 100% !important;
    }

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

    .mobile-hide {
        display: none !important;
    }
}

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

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

.cursor-pointer {
    cursor: pointer !important;
}

.list-unstyled {
    list-style: none;
    padding-left: 0;
}