/* ============================================================
   BASE UTILITIES
   COMPLMENTARY TO BOOTSTRAP v2.2.1 - Inspired by TailwindCSS
   ============================================================ */

/* ===== FLEXBOX ===== */
.flex { display: flex !important; }
.inline-flex { display: inline-flex !important; }
.flex-col { flex-direction: column !important; }
.flex-row { flex-direction: row !important; }
.flex-wrap { flex-wrap: wrap !important; }
.items-center { align-items: center !important; }
.items-start { align-items: flex-start !important; }
.items-end { align-items: flex-end !important; }
.justify-center { justify-content: center !important; }
.justify-between { justify-content: space-between !important; }
.justify-around { justify-content: space-around !important; }
.justify-end { justify-content: flex-end !important; }

/* ===== FLEX STRETCH / GROW ===== */
.flex-1 { flex: 1 1 0% !important; }
.flex-auto { flex: 1 1 auto !important; }
.flex-none { flex: none !important; }
.flex-half { flex: 1 1 50% !important; }

/* ===== FLEX CONTAINERS ===== */
.flex-row-2 { display: flex !important; flex-direction: row !important; }
.flex-even { display: flex !important; }
.flex-even > * { flex: 1 1 0% !important; }

/* ===== FLEX ALIGN SELF ===== */
.self-center { align-self: center !important; }
.self-start { align-self: flex-start !important; }
.self-end { align-self: flex-end !important; }

/* ===== GRID ===== */
.grid { display: grid !important; }
.grid-2 { grid-template-columns: repeat(2, 1fr) !important; }
.grid-3 { grid-template-columns: repeat(3, 1fr) !important; }
.grid-4 { grid-template-columns: repeat(4, 1fr) !important; }

/* ===== GAP UTILITIES ===== */
.gap-1  { gap: 1px !important; }
.gap-2  { gap: 2px !important; }
.gap-3  { gap: 3px !important; }
.gap-4  { gap: 4px !important; }
.gap-5  { gap: 5px !important; }
.gap-6  { gap: 6px !important; }
.gap-7  { gap: 7px !important; }
.gap-8  { gap: 8px !important; }
.gap-9  { gap: 9px !important; }
.gap-10 { gap: 10px !important; }
.gap-12 { gap: 12px !important; }
.gap-15 { gap: 15px !important; }
.gap-14 { gap: 14px !important; }
.gap-16 { gap: 16px !important; }
.gap-18 { gap: 18px !important; }
.gap-20 { gap: 20px !important; }
.gap-24 { gap: 24px !important; }
.gap-30 { gap: 30px !important; }
.gap-28 { gap: 28px !important; }
.gap-32 { gap: 32px !important; }
.gap-36 { gap: 36px !important; }
.gap-40 { gap: 40px !important; }
.gap-44 { gap: 44px !important; }
.gap-48 { gap: 48px !important; }
.gap-50 { gap: 50px !important; }

/* ===== TYPOGRAPHY ===== */
/* HEADINGS */
.h1 { font-size: 32px !important; font-weight: 700 !important; line-height: 1.2 !important; }
.h2 { font-size: 26px !important; font-weight: 600 !important; line-height: 1.25 !important; }
.h3 { font-size: 22px !important; font-weight: 600 !important; line-height: 1.3 !important; }
.h4 { font-size: 18px !important; font-weight: 600 !important; line-height: 1.4 !important; }
.h5 { font-size: 15px !important; font-weight: 600 !important; line-height: 1.4 !important; }
.h6 { font-size: 13px !important; font-weight: 600 !important; line-height: 1.4 !important; }

/* 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; }

/* TRANSFORM */
.text-uppercase  { text-transform: uppercase !important; }
.text-lowercase  { text-transform: lowercase !important; }
.text-capitalize { text-transform: capitalize !important; }

/* FONT WEIGHT */
.fw-light       { font-weight: 300 !important; }
.fw-normal      { font-weight: 400 !important; }
.fw-medium      { font-weight: 500 !important; }
.fw-semibold    { font-weight: 600 !important; }
.fw-bold        { font-weight: 700 !important; }
.fw-extrabold   { font-weight: 800 !important; }
.fw-black       { font-weight: 900 !important; }

/* STYLE */
.text-italic  { font-style: italic !important; }
.text-normal  { font-style: normal !important; }

/* SIZE */
.text-xs   { font-size: 11px !important; }
.text-sm   { font-size: 13px !important; }
.text-base, .text-md { font-size: 16px !important; }
.text-mdlg { font-size: 20px !important; }
.text-lg   { font-size: 18px !important; }
.text-xl   { font-size: 22px !important; }

/* LETTER SPACING */
.tracking-tight { letter-spacing: -0.4px !important }

/* COLOR (UTILITY) */
.text-white     { color: #FFF !important; }
.text-muted     { color: #ABABAB !important; }
.text-primary   { color: var(--primary-500, #004990) !important; }
.text-secondary { color: var(--secondary-500, #f5a623) !important; }
.text-accent    { color: var(--accent-500, #ff5722) !important; }
.text-success   { color: #468847 !important; }
.text-error     { color: #b94a48 !important; }
.text-warning   { color: #c09853 !important; }
.text-info      { color: #3a87ad !important; }

/* DECORATION */
.text-underline     { text-decoration: underline !important; }
.text-line-through  { text-decoration: line-through !important; }
.text-no-decoration { text-decoration: none !important; }

/* LEADING (LINE HEIGHT) */
.leading-1       { line-height: 1 !important; }
.leading-tight   { line-height: 1.1 !important; }
.leading-normal  { line-height: 1.4 !important; }
.leading-relaxed { line-height: 1.6 !important; }
.leading-loose   { line-height: 1.8 !important; }

/* ===== MISC ===== */
.rounded-none { border-radius: 0 !important; }
.rounded-xs { border-radius: 2px !important; }
.rounded, .rounded-sm { border-radius: 4px !important; }
.rounded-md { border-radius: 6px !important; }
.rounded-lg { border-radius: 8px !important; }
.rounded-xl { border-radius: 12px !important; }
.shadow-sm { box-shadow: 0 1px 2px rgba(0,0,0,0.08) !important; }
.shadow-md { box-shadow: 0 3px 6px rgba(0,0,0,0.1) !important; }
.shadow-lg { box-shadow: 0 6px 12px rgba(0,0,0,0.15) !important; }

.w-full { width: 100% !important; }
.h-full { height: 100% !important; }
.inline-block { display: inline-block !important; }
.hidden { display: none !important; }
.overflow-hidden { overflow: hidden; }

.bg-none { background-color: transparent !important; }
.bg-image-none { background-image: none !important; }
.bg-white { background-color: #FFFFFF !important; }
.bg-light { background-color: #FAFAFA !important; }
.bg-lighter { background-color: #FCFCFC !important; }

.box-shadow-none { box-shadow: none !important; }

.user-select-none { user-select: none !important; }

.relative { position: relative !important }
.absolute { position: absolute !important }

.w-fit { width: fit-content !important; }

.border-none { border: none !important; }
.border-gray { border: 1px solid #C6CCDC; }
.border-gray-light { border: 1px solid #E6E8Ef; }

.inline-block { display: inline-block !important }

.cursor-pointer { cursor: pointer !important }

.break-all { word-break: break-all !important; }

/* =======================================================
   SPACING UTILITIES (PX-BASED)
   ======================================================= */

/* ===== MARGIN ===== */
.m-0  { margin: 0 !important; }
.m-1  { margin: 1px !important; }
.m-2  { margin: 2px !important; }
.m-3  { margin: 3px !important; }
.m-4  { margin: 4px !important; }
.m-5  { margin: 5px !important; }
.m-6  { margin: 6px !important; }
.m-7  { margin: 7px !important; }
.m-8  { margin: 8px !important; }
.m-9  { margin: 9px !important; }
.m-10 { margin: 10px !important; }
.m-20 { margin: 20px !important; }
.m-30 { margin: 30px !important; }
.m-40 { margin: 40px !important; }
.m-50 { margin: 50px !important; }
.m-60 { margin: 60px !important; }
.m-70 { margin: 70px !important; }
.m-80 { margin: 80px !important; }
.m-90 { margin: 90px !important; }
.m-100 { margin: 100px !important; }

/* ===== MARGIN DIRECTIONS ===== */
.mt-0  { margin-top: 0 !important; }
.mt-1  { margin-top: 1px !important; }
.mt-2  { margin-top: 2px !important; }
.mt-3  { margin-top: 3px !important; }
.mt-4  { margin-top: 4px !important; }
.mt-5  { margin-top: 5px !important; }
.mt-6  { margin-top: 6px !important; }
.mt-7  { margin-top: 7px !important; }
.mt-8  { margin-top: 8px !important; }
.mt-9  { margin-top: 9px !important; }
.mt-10 { margin-top: 10px !important; }
.mt-20 { margin-top: 20px !important; }
.mt-30 { margin-top: 30px !important; }
.mt-40 { margin-top: 40px !important; }
.mt-50 { margin-top: 50px !important; }
.mt-60 { margin-top: 60px !important; }
.mt-70 { margin-top: 70px !important; }
.mt-80 { margin-top: 80px !important; }
.mt-90 { margin-top: 90px !important; }
.mt-100 { margin-top: 100px !important; }

/* ===== MARGIN RIGHT ===== */
.mr-0  { margin-right: 0 !important; }
.mr-1  { margin-right: 1px !important; }
.mr-2  { margin-right: 2px !important; }
.mr-3  { margin-right: 3px !important; }
.mr-4  { margin-right: 4px !important; }
.mr-5  { margin-right: 5px !important; }
.mr-6  { margin-right: 6px !important; }
.mr-7  { margin-right: 7px !important; }
.mr-8  { margin-right: 8px !important; }
.mr-9  { margin-right: 9px !important; }
.mr-10 { margin-right: 10px !important; }
.mr-20 { margin-right: 20px !important; }
.mr-30 { margin-right: 30px !important; }
.mr-40 { margin-right: 40px !important; }
.mr-50 { margin-right: 50px !important; }
.mr-60 { margin-right: 60px !important; }
.mr-70 { margin-right: 70px !important; }
.mr-80 { margin-right: 80px !important; }
.mr-90 { margin-right: 90px !important; }
.mr-100 { margin-right: 100px !important; }

/* ===== MARGIN BOTTOM ===== */
.mb-0  { margin-bottom: 0 !important; }
.mb-1  { margin-bottom: 1px !important; }
.mb-2  { margin-bottom: 2px !important; }
.mb-3  { margin-bottom: 3px !important; }
.mb-4  { margin-bottom: 4px !important; }
.mb-5  { margin-bottom: 5px !important; }
.mb-6  { margin-bottom: 6px !important; }
.mb-7  { margin-bottom: 7px !important; }
.mb-8  { margin-bottom: 8px !important; }
.mb-9  { margin-bottom: 9px !important; }
.mb-10 { margin-bottom: 10px !important; }
.mb-20 { margin-bottom: 20px !important; }
.mb-30 { margin-bottom: 30px !important; }
.mb-40 { margin-bottom: 40px !important; }
.mb-50 { margin-bottom: 50px !important; }
.mb-60 { margin-bottom: 60px !important; }
.mb-70 { margin-bottom: 70px !important; }
.mb-80 { margin-bottom: 80px !important; }
.mb-90 { margin-bottom: 90px !important; }
.mb-100 { margin-bottom: 100px !important; }

/* ===== MARGIN LEFT ===== */
.ml-0  { margin-left: 0 !important; }
.ml-1  { margin-left: 1px !important; }
.ml-2  { margin-left: 2px !important; }
.ml-3  { margin-left: 3px !important; }
.ml-4  { margin-left: 4px !important; }
.ml-5  { margin-left: 5px !important; }
.ml-6  { margin-left: 6px !important; }
.ml-7  { margin-left: 7px !important; }
.ml-8  { margin-left: 8px !important; }
.ml-9  { margin-left: 9px !important; }
.ml-10 { margin-left: 10px !important; }
.ml-20 { margin-left: 20px !important; }
.ml-30 { margin-left: 30px !important; }
.ml-40 { margin-left: 40px !important; }
.ml-50 { margin-left: 50px !important; }
.ml-60 { margin-left: 60px !important; }
.ml-70 { margin-left: 70px !important; }
.ml-80 { margin-left: 80px !important; }
.ml-90 { margin-left: 90px !important; }
.ml-100 { margin-left: 100px !important; }
.ml-auto { margin-left: auto !important; }

/* ===== MARGIN AXES ===== */
.mx-0   { margin-left: 0 !important; margin-right: 0 !important; }
.mx-1   { margin-left: 1px !important; margin-right: 1px !important; }
.mx-2   { margin-left: 2px !important; margin-right: 2px !important; }
.mx-5   { margin-left: 5px !important; margin-right: 5px !important; }
.mx-10  { margin-left: 10px !important; margin-right: 10px !important; }
.mx-20  { margin-left: 20px !important; margin-right: 20px !important; }
.mx-30  { margin-left: 30px !important; margin-right: 30px !important; }
.mx-40  { margin-left: 40px !important; margin-right: 40px !important; }
.mx-auto { margin-left: auto !important; margin-right: auto !important; }

.my-0   { margin-top: 0 !important; margin-bottom: 0 !important; }
.my-1   { margin-top: 1px !important; margin-bottom: 1px !important; }
.my-2   { margin-top: 2px !important; margin-bottom: 2px !important; }
.my-5   { margin-top: 5px !important; margin-bottom: 5px !important; }
.my-10  { margin-top: 10px !important; margin-bottom: 10px !important; }
.my-20  { margin-top: 20px !important; margin-bottom: 20px !important; }
.my-30  { margin-top: 30px !important; margin-bottom: 30px !important; }
.my-40  { margin-top: 40px !important; margin-bottom: 40px !important; }

/* ===== PADDING ===== */
.p-0  { padding: 0 !important; }
.p-1  { padding: 1px !important; }
.p-2  { padding: 2px !important; }
.p-3  { padding: 3px !important; }
.p-4  { padding: 4px !important; }
.p-5  { padding: 5px !important; }
.p-6  { padding: 6px !important; }
.p-7  { padding: 7px !important; }
.p-8  { padding: 8px !important; }
.p-9  { padding: 9px !important; }
.p-10 { padding: 10px !important; }
.p-20 { padding: 20px !important; }
.p-30 { padding: 30px !important; }
.p-40 { padding: 40px !important; }
.p-50 { padding: 50px !important; }
.p-60 { padding: 60px !important; }
.p-70 { padding: 70px !important; }
.p-80 { padding: 80px !important; }
.p-90 { padding: 90px !important; }
.p-100 { padding: 100px !important; }

/* ===== PADDING TOP ===== */
.pt-0  { padding-top: 0 !important; }
.pt-1  { padding-top: 1px !important; }
.pt-2  { padding-top: 2px !important; }
.pt-3  { padding-top: 3px !important; }
.pt-4  { padding-top: 4px !important; }
.pt-5  { padding-top: 5px !important; }
.pt-10 { padding-top: 10px !important; }
.pt-20 { padding-top: 20px !important; }
.pt-30 { padding-top: 30px !important; }
.pt-40 { padding-top: 40px !important; }
.pt-50 { padding-top: 50px !important; }
.pt-60 { padding-top: 60px !important; }
.pt-70 { padding-top: 70px !important; }
.pt-80 { padding-top: 80px !important; }
.pt-90 { padding-top: 90px !important; }
.pt-100 { padding-top: 100px !important; }

/* ===== PADDING RIGHT ===== */
.pr-0  { padding-right: 0 !important; }
.pr-1  { padding-right: 1px !important; }
.pr-2  { padding-right: 2px !important; }
.pr-3  { padding-right: 3px !important; }
.pr-4  { padding-right: 4px !important; }
.pr-5  { padding-right: 5px !important; }
.pr-10 { padding-right: 10px !important; }
.pr-20 { padding-right: 20px !important; }
.pr-30 { padding-right: 30px !important; }
.pr-40 { padding-right: 40px !important; }
.pr-50 { padding-right: 50px !important; }
.pr-60 { padding-right: 60px !important; }
.pr-70 { padding-right: 70px !important; }
.pr-80 { padding-right: 80px !important; }
.pr-90 { padding-right: 90px !important; }
.pr-100 { padding-right: 100px !important; }

/* ===== PADDING BOTTOM ===== */
.pb-0  { padding-bottom: 0 !important; }
.pb-1  { padding-bottom: 1px !important; }
.pb-2  { padding-bottom: 2px !important; }
.pb-3  { padding-bottom: 3px !important; }
.pb-4  { padding-bottom: 4px !important; }
.pb-5  { padding-bottom: 5px !important; }
.pb-10 { padding-bottom: 10px !important; }
.pb-20 { padding-bottom: 20px !important; }
.pb-30 { padding-bottom: 30px !important; }
.pb-40 { padding-bottom: 40px !important; }
.pb-50 { padding-bottom: 50px !important; }
.pb-60 { padding-bottom: 60px !important; }
.pb-70 { padding-bottom: 70px !important; }
.pb-80 { padding-bottom: 80px !important; }
.pb-90 { padding-bottom: 90px !important; }
.pb-100 { padding-bottom: 100px !important; }

/* ===== PADDING LEFT ===== */
.pl-0  { padding-left: 0 !important; }
.pl-1  { padding-left: 1px !important; }
.pl-2  { padding-left: 2px !important; }
.pl-3  { padding-left: 3px !important; }
.pl-4  { padding-left: 4px !important; }
.pl-5  { padding-left: 5px !important; }
.pl-10 { padding-left: 10px !important; }
.pl-20 { padding-left: 20px !important; }
.pl-30 { padding-left: 30px !important; }
.pl-40 { padding-left: 40px !important; }
.pl-50 { padding-left: 50px !important; }
.pl-60 { padding-left: 60px !important; }
.pl-70 { padding-left: 70px !important; }
.pl-80 { padding-left: 80px !important; }
.pl-90 { padding-left: 90px !important; }
.pl-100 { padding-left: 100px !important; }

/* ===== PADDING AXES ===== */
.px-0  { padding-left: 0 !important; padding-right: 0 !important; }
.px-1  { padding-left: 1px !important; padding-right: 1px !important; }
.px-2  { padding-left: 2px !important; padding-right: 2px !important; }
.px-5  { padding-left: 5px !important; padding-right: 5px !important; }
.px-15 { padding-left: 15px !important; padding-right: 15px !important; }
.px-10 { padding-left: 10px !important; padding-right: 10px !important; }
.px-20 { padding-left: 20px !important; padding-right: 20px !important; }
.px-30 { padding-left: 30px !important; padding-right: 30px !important; }
.px-40 { padding-left: 40px !important; padding-right: 40px !important; }

.py-0  { padding-top: 0 !important; padding-bottom: 0 !important; }
.py-1  { padding-top: 1px !important; padding-bottom: 1px !important; }
.py-2  { padding-top: 2px !important; padding-bottom: 2px !important; }
.py-5  { padding-top: 5px !important; padding-bottom: 5px !important; }
.py-15 { padding-top: 15px !important; padding-bottom: 15px !important; }
.py-10 { padding-top: 10px !important; padding-bottom: 10px !important; }
.py-20 { padding-top: 20px !important; padding-bottom: 20px !important; }
.py-30 { padding-top: 30px !important; padding-bottom: 30px !important; }
.py-40 { padding-top: 40px !important; padding-bottom: 40px !important; }
