/* =============== DISPLAY UTILITIES =============== */
.d-flex {
    display: flex !important;
}

.d-grid {
    display: grid !important;
}

.d-block {
    display: block !important;
}

.d-inline {
    display: inline !important;
}

.d-inline-block {
    display: inline-block !important;
}

.d-inline-flex {
    display: inline-flex !important;
}

.d-none {
    display: none !important;
}

/* =============== FLEX DIRECTION =============== */
.flex-row {
    flex-direction: row !important;
}

.flex-column {
    flex-direction: column !important;
}

.flex-row-reverse {
    flex-direction: row-reverse !important;
}

.flex-column-reverse {
    flex-direction: column-reverse !important;
}

/* =============== JUSTIFY CONTENT =============== */
.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;
}

.justify-evenly {
    justify-content: space-evenly !important;
}

/* =============== ALIGN ITEMS =============== */
.items-start {
    align-items: flex-start !important;
}

.items-end {
    align-items: flex-end !important;
}

.items-center {
    align-items: center !important;
}

.items-baseline {
    align-items: baseline !important;
}

.items-stretch {
    align-items: stretch !important;
}

/* =============== ALIGN CONTENT =============== */
.align-start {
    align-content: flex-start !important;
}

.align-end {
    align-content: flex-end !important;
}

.align-center {
    align-content: center !important;
}

.align-between {
    align-content: space-between !important;
}

.align-around {
    align-content: space-around !important;
}

.align-stretch {
    align-content: stretch !important;
}

/* =============== FLEX WRAP =============== */
.flex-wrap {
    flex-wrap: wrap !important;
}

.flex-nowrap {
    flex-wrap: nowrap !important;
}

.flex-wrap-reverse {
    flex-wrap: wrap-reverse !important;
}

/* =============== FLEX GROW & SHRINK =============== */
.flex-grow-0 {
    flex-grow: 0 !important;
}

.flex-grow-1 {
    flex-grow: 1 !important;
}

.flex-grow-2 {
    flex-grow: 2 !important;
}

.flex-shrink-0 {
    flex-shrink: 0 !important;
}

.flex-shrink-1 {
    flex-shrink: 1 !important;
}

/* =============== GAP UTILITIES =============== */
.gap-5 {
    gap: 5px !important;
}

.gap-10 {
    gap: 10px !important;
}

.gap-15 {
    gap: 15px !important;
}

.gap-20 {
    gap: 20px !important;
}

.gap-25 {
    gap: 25px !important;
}

.gap-30 {
    gap: 30px !important;
}

.gap-40 {
    gap: 40px !important;
}

.gap-50 {
    gap: 50px !important;
}

/* =============== MARGIN UTILITIES =============== */
/* Margin All */
.m-0 {
    margin: 0 !important;
}

.m-5 {
    margin: 5px !important;
}

.m-10 {
    margin: 10px !important;
}

.m-15 {
    margin: 15px !important;
}

.m-20 {
    margin: 20px !important;
}

.m-25 {
    margin: 25px !important;
}

.m-30 {
    margin: 30px !important;
}

.m-40 {
    margin: 40px !important;
}

.m-50 {
    margin: 50px !important;
}

.m-auto {
    margin: auto !important;
}

/* Margin Top */
.mt-0 {
    margin-top: 0 !important;
}

.mt-5 {
    margin-top: 5px !important;
}

.mt-10 {
    margin-top: 10px !important;
}

.mt-15 {
    margin-top: 15px !important;
}

.mt-20 {
    margin-top: 20px !important;
}

.mt-25 {
    margin-top: 25px !important;
}

.mt-30 {
    margin-top: 30px !important;
}

.mt-40 {
    margin-top: 40px !important;
}

.mt-50 {
    margin-top: 50px !important;
}

/* Margin Bottom */
.mb-0 {
    margin-bottom: 0 !important;
}

.mb-5 {
    margin-bottom: 5px !important;
}

.mb-10 {
    margin-bottom: 10px !important;
}

.mb-15 {
    margin-bottom: 15px !important;
}

.mb-20 {
    margin-bottom: 20px !important;
}

.mb-25 {
    margin-bottom: 25px !important;
}

.mb-30 {
    margin-bottom: 30px !important;
}

.mb-40 {
    margin-bottom: 40px !important;
}

.mb-50 {
    margin-bottom: 50px !important;
}

/* Margin Left */
.ml-0 {
    margin-left: 0 !important;
}

.ml-5 {
    margin-left: 5px !important;
}

.ml-10 {
    margin-left: 10px !important;
}

.ml-15 {
    margin-left: 15px !important;
}

.ml-20 {
    margin-left: 20px !important;
}

.ml-25 {
    margin-left: 25px !important;
}

.ml-30 {
    margin-left: 30px !important;
}

.ml-40 {
    margin-left: 40px !important;
}

.ml-50 {
    margin-left: 50px !important;
}

.ml-auto {
    margin-left: auto !important;
}

/* Margin Right */
.mr-0 {
    margin-right: 0 !important;
}

.mr-5 {
    margin-right: 5px !important;
}

.mr-10 {
    margin-right: 10px !important;
}

.mr-15 {
    margin-right: 15px !important;
}

.mr-20 {
    margin-right: 20px !important;
}

.mr-25 {
    margin-right: 25px !important;
}

.mr-30 {
    margin-right: 30px !important;
}

.mr-40 {
    margin-right: 40px !important;
}

.mr-50 {
    margin-right: 50px !important;
}

.mr-auto {
    margin-right: auto !important;
}

/* Margin X (left & right) */
.mx-0 {
    margin-left: 0 !important;
    margin-right: 0 !important;
}

.mx-5 {
    margin-left: 5px !important;
    margin-right: 5px !important;
}

.mx-10 {
    margin-left: 10px !important;
    margin-right: 10px !important;
}

.mx-15 {
    margin-left: 15px !important;
    margin-right: 15px !important;
}

.mx-20 {
    margin-left: 20px !important;
    margin-right: 20px !important;
}

.mx-25 {
    margin-left: 25px !important;
    margin-right: 25px !important;
}

.mx-30 {
    margin-left: 30px !important;
    margin-right: 30px !important;
}

.mx-40 {
    margin-left: 40px !important;
    margin-right: 40px !important;
}

.mx-50 {
    margin-left: 50px !important;
    margin-right: 50px !important;
}

.mx-auto {
    margin-left: auto !important;
    margin-right: auto !important;
}

/* Margin Y (top & bottom) */
.my-0 {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
}

.my-5 {
    margin-top: 5px !important;
    margin-bottom: 5px !important;
}

.my-10 {
    margin-top: 10px !important;
    margin-bottom: 10px !important;
}

.my-15 {
    margin-top: 15px !important;
    margin-bottom: 15px !important;
}

.my-20 {
    margin-top: 20px !important;
    margin-bottom: 20px !important;
}

.my-25 {
    margin-top: 25px !important;
    margin-bottom: 25px !important;
}

.my-30 {
    margin-top: 30px !important;
    margin-bottom: 30px !important;
}

.my-40 {
    margin-top: 40px !important;
    margin-bottom: 40px !important;
}

.my-50 {
    margin-top: 50px !important;
    margin-bottom: 50px !important;
}

/* =============== PADDING UTILITIES =============== */
/* Padding All */
.p-0 {
    padding: 0 !important;
}

.p-5 {
    padding: 5px !important;
}

.p-10 {
    padding: 10px !important;
}

.p-15 {
    padding: 15px !important;
}

.p-20 {
    padding: 20px !important;
}

.p-25 {
    padding: 25px !important;
}

.p-30 {
    padding: 30px !important;
}

.p-40 {
    padding: 40px !important;
}

.p-50 {
    padding: 50px !important;
}

/* Padding Top */
.pt-0 {
    padding-top: 0 !important;
}

.pt-5 {
    padding-top: 5px !important;
}

.pt-10 {
    padding-top: 10px !important;
}

.pt-15 {
    padding-top: 15px !important;
}

.pt-20 {
    padding-top: 20px !important;
}

.pt-25 {
    padding-top: 25px !important;
}

.pt-30 {
    padding-top: 30px !important;
}

.pt-40 {
    padding-top: 40px !important;
}

.pt-50 {
    padding-top: 50px !important;
}

/* Padding Bottom */
.pb-0 {
    padding-bottom: 0 !important;
}

.pb-5 {
    padding-bottom: 5px !important;
}

.pb-10 {
    padding-bottom: 10px !important;
}

.pb-15 {
    padding-bottom: 15px !important;
}

.pb-20 {
    padding-bottom: 20px !important;
}

.pb-25 {
    padding-bottom: 25px !important;
}

.pb-30 {
    padding-bottom: 30px !important;
}

.pb-40 {
    padding-bottom: 40px !important;
}

.pb-50 {
    padding-bottom: 50px !important;
}

/* Padding Left */
.pl-0 {
    padding-left: 0 !important;
}

.pl-5 {
    padding-left: 5px !important;
}

.pl-10 {
    padding-left: 10px !important;
}

.pl-15 {
    padding-left: 15px !important;
}

.pl-20 {
    padding-left: 20px !important;
}

.pl-25 {
    padding-left: 25px !important;
}

.pl-30 {
    padding-left: 30px !important;
}

.pl-40 {
    padding-left: 40px !important;
}

.pl-50 {
    padding-left: 50px !important;
}

/* Padding Right */
.pr-0 {
    padding-right: 0 !important;
}

.pr-5 {
    padding-right: 5px !important;
}

.pr-10 {
    padding-right: 10px !important;
}

.pr-15 {
    padding-right: 15px !important;
}

.pr-20 {
    padding-right: 20px !important;
}

.pr-25 {
    padding-right: 25px !important;
}

.pr-30 {
    padding-right: 30px !important;
}

.pr-40 {
    padding-right: 40px !important;
}

.pr-50 {
    padding-right: 50px !important;
}

/* Padding X (left & right) */
.px-0 {
    padding-left: 0 !important;
    padding-right: 0 !important;
}

.px-5 {
    padding-left: 5px !important;
    padding-right: 5px !important;
}

.px-10 {
    padding-left: 10px !important;
    padding-right: 10px !important;
}

.px-15 {
    padding-left: 15px !important;
    padding-right: 15px !important;
}

.px-20 {
    padding-left: 20px !important;
    padding-right: 20px !important;
}

.px-25 {
    padding-left: 25px !important;
    padding-right: 25px !important;
}

.px-30 {
    padding-left: 30px !important;
    padding-right: 30px !important;
}

.px-40 {
    padding-left: 40px !important;
    padding-right: 40px !important;
}

.px-50 {
    padding-left: 50px !important;
    padding-right: 50px !important;
}

/* Padding Y (top & bottom) */
.py-0 {
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

.py-5 {
    padding-top: 5px !important;
    padding-bottom: 5px !important;
}

.py-10 {
    padding-top: 10px !important;
    padding-bottom: 10px !important;
}

.py-15 {
    padding-top: 15px !important;
    padding-bottom: 15px !important;
}

.py-20 {
    padding-top: 20px !important;
    padding-bottom: 20px !important;
}

.py-25 {
    padding-top: 25px !important;
    padding-bottom: 25px !important;
}

.py-30 {
    padding-top: 30px !important;
    padding-bottom: 30px !important;
}

.py-40 {
    padding-top: 40px !important;
    padding-bottom: 40px !important;
}

.py-50 {
    padding-top: 50px !important;
    padding-bottom: 50px !important;
}

/* =============== WIDTH UTILITIES =============== */
.w-100 {
    width: 100% !important;
}

.w-auto {
    width: auto !important;
}

.w-25 {
    width: 25% !important;
}

.w-50 {
    width: 50% !important;
}

.w-75 {
    width: 75% !important;
}

.w-20 {
    width: 20% !important;
}

.w-30 {
    width: 30% !important;
}

.w-40 {
    width: 40% !important;
}

.w-60 {
    width: 60% !important;
}

.w-35 {
    width: 35% !important;
}

.w-65 {
    width: 65% !important;
}

/* =============== HEIGHT UTILITIES =============== */
.h-100 {
    height: 100% !important;
}

.h-auto {
    height: auto !important;
}

.h-25 {
    height: 25% !important;
}

.h-50 {
    height: 50% !important;
}

.h-75 {
    height: 75% !important;
}

.min-h-100 {
    min-height: 100% !important;
}

.min-h-vh {
    min-height: 100vh !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 COLOR =============== */
.text-primary {
    color: var(--first-color) !important;
}

.text-title {
    color: var(--title-color) !important;
}

.text-body {
    color: var(--text-color) !important;
}

.text-white {
    color: #ffffff !important;
}

.text-black {
    color: #000000 !important;
}

.text-pink {
    color: #f02769 !important;
}

/* =============== FONT WEIGHT =============== */
.font-light {
    font-weight: 300 !important;
}

.font-normal {
    font-weight: 400 !important;
}

.font-medium {
    font-weight: var(--font-medium) !important;
}

.font-semibold {
    font-weight: var(--font-semi-bold) !important;
}

.font-bold {
    font-weight: 700 !important;
}

/* =============== FONT SIZE =============== */
.fs-xs {
    font-size: 0.75rem !important;
}

.fs-sm {
    font-size: 0.875rem !important;
}

.fs-base {
    font-size: 1rem !important;
}

.fs-lg {
    font-size: 1.125rem !important;
}

.fs-xl {
    font-size: 1.25rem !important;
}

.fs-2xl {
    font-size: 1.5rem !important;
}

.fs-3xl {
    font-size: 1.875rem !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;
}

/* =============== TOP RIGHT BOTTOM LEFT =============== */
.top-0 {
    top: 0 !important;
}

.right-0 {
    right: 0 !important;
}

.bottom-0 {
    bottom: 0 !important;
}

.left-0 {
    left: 0 !important;
}

/* =============== BORDER RADIUS =============== */
.rounded-0 {
    border-radius: 0 !important;
}

.rounded-5 {
    border-radius: 5px !important;
}

.rounded-10 {
    border-radius: 10px !important;
}

.rounded-15 {
    border-radius: 15px !important;
}

.rounded-20 {
    border-radius: 20px !important;
}

.rounded-50 {
    border-radius: 50% !important;
}

/* =============== BACKGROUND COLOR =============== */
.bg-primary {
    background-color: var(--first-color) !important;
}

.bg-light {
    background-color: var(--first-color-lighten) !important;
}

.bg-white {
    background-color: #ffffff !important;
}

.bg-body {
    background-color: var(--body-color) !important;
}

/* =============== OVERFLOW =============== */
.overflow-hidden {
    overflow: hidden !important;
}

.overflow-auto {
    overflow: auto !important;
}

.overflow-visible {
    overflow: visible !important;
}

.overflow-x-auto {
    overflow-x: auto !important;
}

.overflow-y-auto {
    overflow-y: auto !important;
}

/* =============== OBJECT FIT =============== */
.object-cover {
    object-fit: cover !important;
}

.object-contain {
    object-fit: contain !important;
}

.object-fill {
    object-fit: fill !important;
}

/* =============== BOX SHADOW =============== */
.shadow-sm {
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1) !important;
}

.shadow-md {
    box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1) !important;
}

.shadow-lg {
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.15) !important;
}

.shadow-xl {
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.15) !important;
}

.shadow-none {
    box-shadow: none !important;
}

/* =============== BORDER =============== */
.border {
    border: 1px solid #e0e0e0 !important;
}

.border-none {
    border: none !important;
}

.border-top {
    border-top: 1px solid #e0e0e0 !important;
}

.border-bottom {
    border-bottom: 1px solid #e0e0e0 !important;
}

.border-left {
    border-left: 1px solid #e0e0e0 !important;
}

.border-right {
    border-right: 1px solid #e0e0e0 !important;
}

/* =============== VISIBILITY =============== */
.visible {
    visibility: visible !important;
}

.invisible {
    visibility: hidden !important;
}

/* =============== CURSOR =============== */
.cursor-pointer {
    cursor: pointer !important;
}

.cursor-default {
    cursor: default !important;
}

.cursor-not-allowed {
    cursor: not-allowed !important;
}

/* =============== OTHERS =============== */
.img-responsive {
    max-width: 100% !important;
    height: auto !important;
    display: block !important;
}

.list-unstyled {
    list-style: none !important;
    padding: 0 !important;
    margin: 0 !important;
}

.clearfix::after {
    content: "";
    display: table;
    clear: both;
}

.text-truncate {
    overflow: hidden !important;
    text-overflow: ellipsis !important;
    white-space: nowrap !important;
}