.d-lg-inline-block {
        display: inline-block !important;
}
.me-xl-auto {
        margin-right: auto !important;
    }

.flex{
    display: flex;
}
.flex-col{
    flex-direction: column;
}
.flex-row{
    flex-direction: row;
}
.flex-wrap{
    flex-wrap: wrap;
}
.flex-nowrap{
    flex-wrap: nowrap;
}
.flex-wrap-reverse{
    flex-wrap: wrap-reverse;
}
.flex-grow{
    flex-grow: 1;
}
.flex-shrink{
    flex-shrink: 1;
}

.gap-1{
    gap: 0.5rem;
}
.gap-2{
    gap: 1rem;
}
.gap-3{
    gap: 1.5rem;
}
.gap-4{
    gap: 2rem;
}
.gap-5{
    gap: 2.5rem;
}

.m-1{
    margin: 0.5rem !important;
}
.m-2{
    margin: 1rem !important;
}
.m-3{
    margin: 1.5rem !important;
}
.m-4{
    margin: 2rem !important;
}
.m-5{
    margin: 2.5rem !important;
}

.mt-1{
    margin-top: 0.5rem !important;
}
.mt-2{
    margin-top: 1rem !important;
}
.mt-3{
    margin-top: 1.5rem !important;
}
.mt-4{
    margin-top: 2rem !important;
}
.mt-5{
    margin-top: 2.5rem !important;
}

.mb-1{
    margin-bottom: 0.5rem !important;
}
.mb-2{
    margin-bottom: 1rem !important;
}
.mb-3{
    margin-bottom: 1.5rem !important;
}
.mb-4{
    margin-bottom: 2rem !important;
}
.mb-5{
    margin-bottom: 2.5rem !important;
}

.ml-1{
    margin-left: 0.5rem !important;
}
.ml-2{
    margin-left: 1rem !important;
}
.ml-3{
    margin-left: 1.5rem !important;
}
.ml-4{
    margin-left: 2rem !important;
}
.ml-5{
    margin-left: 2.5rem !important;
}

.mr-1{
    margin-right: 0.5rem !important;
}
.mr-2{
    margin-right: 1rem !important;
}
.mr-3{
    margin-right: 1.5rem !important;
}
.mr-4{
    margin-right: 2rem !important;
}
.mr-5{
    margin-right: 2.5rem !important;
}

.mx-1{
    margin-left: 0.5rem !important;
    margin-right: 0.5rem !important;
}
.mx-2{
    margin-left: 1rem !important;
    margin-right: 1rem !important;
}
.mx-3{
    margin-left: 1.5rem !important;
    margin-right: 1.5rem !important;
}
.mx-4{
    margin-left: 2rem !important;
    margin-right: 2rem !important;
}
.mx-5{
    margin-left: 2.5rem !important;
    margin-right: 2.5rem !important;
}

.my-1{
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
}
.my-2{
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
}
.my-3{
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
}
.my-4{
    margin-top: 2rem !important;
    margin-bottom: 2rem !important;
}
.my-5{
    margin-top: 2.5rem !important;
    margin-bottom: 2.5rem !important;
}

.p-1{
    padding: 0.5rem !important;
}
.p-2{
    padding: 1rem !important;
}
.p-3{
    padding: 1.5rem !important;
}
.p-4{
    padding: 2rem !important;
}
.p-5{
    padding: 2.5rem !important;
}

.pt-1{
    padding-top: 0.5rem !important;
}
.pt-2{
    padding-top: 1rem !important;
}
.pt-3{
    padding-top: 1.5rem !important;
}
.pt-4{
    padding-top: 2rem !important;
}
.pt-5{
    padding-top: 2.5rem !important;
}

.pb-1{
    padding-bottom: 0.5rem !important;
}
.pb-2{
    padding-bottom: 1rem !important;
}
.pb-3{
    padding-bottom: 1.5rem !important;
}
.pb-4{
    padding-bottom: 2rem !important;
}
.pb-5{
    padding-bottom: 2.5rem !important;
}

.pl-1{
    padding-left: 0.5rem !important;
}
.pl-2{
    padding-left: 1rem !important;
}
.pl-3{
    padding-left: 1.5rem !important;
}
.pl-4{
    padding-left: 2rem !important;
}
.pl-5{
    padding-left: 2.5rem !important;
}

.pr-1{
    padding-right: 0.5rem !important;
}
.pr-2{
    padding-right: 1rem !important;
}
.pr-3{
    padding-right: 1.5rem !important;
}
.pr-4{
    padding-right: 2rem !important;
}
.pr-5{
    padding-right: 2.5rem !important;
}

.px-1{
    padding-left: 0.5rem !important;
    padding-right: 0.5rem !important;
}
.px-2{
    padding-left: 1rem !important;
    padding-right: 1rem !important;
}
.px-3{
    padding-left: 1.5rem !important;
    padding-right: 1.5rem !important;
}
.px-4{
    padding-left: 2rem !important;
    padding-right: 2rem !important;
}
.px-5{
    padding-left: 2.5rem !important;
    padding-right: 2.5rem !important;
}

.py-1{
    padding-top: 0.5rem !important;
    padding-bottom: 0.5rem !important;
}
.py-2{
    padding-top: 1rem !important;
    padding-bottom: 1rem !important;
}
.py-3{
    padding-top: 1.5rem !important;
    padding-bottom: 1.5rem !important;
}
.py-4{
    padding-top: 2rem !important;
    padding-bottom: 2rem !important;
}
.py-5{
    padding-top: 2.5rem !important;
    padding-bottom: 2.5rem !important;
}

/* --- Display & Visibility --- */
.block {
    display: block;
}
.inline-block {
    display: inline-block;
}
.inline {
    display: inline;
}
.grid {
    display: grid;
}
.hidden {
    display: none;
}

/* --- Positioning --- */
.relative {
    position: relative;
}
.absolute {
    position: absolute;
}
.fixed {
    position: fixed;
}
.sticky {
    position: sticky;
}
.top-0 { top: 0px; }
.right-0 { right: 0px; }
.bottom-0 { bottom: 0px; }
.left-0 { left: 0px; }

/* --- Sizing --- */
.w-full { width: 100%; }
.h-full { height: 100%; }
.w-screen { width: 100vw; }
.h-screen { height: 100vh; }

.w-1\/2 { width: 50%; }
.w-1\/3 { width: 33.333333%; }
.w-2\/3 { width: 66.666667%; }
.w-1\/4 { width: 25%; }
.w-2\/4 { width: 50%; }
.w-3\/4 { width: 75%; }
.w-1\/5 { width: 20%; }
.w-2\/5 { width: 40%; }
.w-3\/5 { width: 60%; }
.w-4\/5 { width: 80%; }

/* --- Typography --- */
/* Font Size */
.text-xs { font-size: 0.75rem; /* 12px */ }
.text-sm { font-size: 0.875rem; /* 14px */ }
.text-base { font-size: 1rem; /* 16px */ }
.text-lg { font-size: 1.125rem; /* 18px */ }
.text-xl { font-size: 1.25rem; /* 20px */ }
.text-2xl { font-size: 1.5rem; /* 24px */ }

/* Font Weight */
.font-light { font-weight: 300; }
.font-normal { font-weight: 400; }
.font-medium { font-weight: 500; }
.font-semibold { font-weight: 600; }
.font-bold { font-weight: 700; }

/* Text Align */
.text-left { text-align: left; }
.text-center { text-align: center; }
.text-right { text-align: right; }
.text-justify { text-align: justify; }

/* Text Transform */
.uppercase { text-transform: uppercase; }
.lowercase { text-transform: lowercase; }
.capitalize { text-transform: capitalize; }
.normal-case { text-transform: none; }

/* Font Style */
.italic { font-style: italic; }
.not-italic { font-style: normal; }

/* --- Flex & Grid Alignment --- */
/* Justify Content */
.justify-start { justify-content: flex-start; }
.justify-end { justify-content: flex-end; }
.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }
.justify-around { justify-content: space-around; }
.justify-evenly { justify-content: space-evenly; }

/* Align Items */
.items-start { align-items: flex-start; }
.items-end { align-items: flex-end; }
.items-center { align-items: center; }
.items-baseline { align-items: baseline; }
.items-stretch { align-items: stretch; }

/* Align Self */
.self-auto { align-self: auto; }
.self-start { align-self: flex-start; }
.self-end { align-self: flex-end; }
.self-center { align-self: center; }
.self-stretch { align-self: stretch; }

/* --- Opacity --- */
.opacity-0 { opacity: 0; }
.opacity-25 { opacity: 0.25; }
.opacity-50 { opacity: 0.5; }
.opacity-75 { opacity: 0.75; }
.opacity-100 { opacity: 1; }

/* --- Colors --- */

/* Background Colors */
.bg-gray-100 { background-color: #f3f4f6; }
.bg-gray-300 { background-color: #d1d5db; }
.bg-gray-500 { background-color: #6b7280; }
.bg-gray-700 { background-color: #374151; }

.bg-red-100 { background-color: #fee2e2; }
.bg-red-300 { background-color: #fca5a5; }
.bg-red-500 { background-color: #ef4444; }
.bg-red-700 { background-color: #b91c1c; }

.bg-black { background-color: #000; }
.bg-brand-green { background-color: #194923; }
.bg-white { background-color: #fff; }

/* Text Colors */
.text-gray-100 { color: #f3f4f6; }
.text-gray-300 { color: #d1d5db; }
.text-gray-500 { color: #6b7280; }
.text-gray-700 { color: #374151; }

.text-red-100 { color: #fee2e2; }
.text-red-300 { color: #fca5a5; }
.text-red-500 { color: #ef4444; }
.text-red-700 { color: #b91c1c; }

.text-black { color: #000; }
.text-brand-green { color: #194923; }
.text-white { color: #fff; }

/* Border Colors */
.border-gray-100 { border-color: #f3f4f6; }
.border-gray-300 { border-color: #d1d5db; }
.border-gray-500 { border-color: #6b7280; }
.border-gray-700 { border-color: #374151; }

.border-red-100 { border-color: #fee2e2; }
.border-red-300 { border-color: #fca5a5; }
.border-red-500 { border-color: #ef4444; }
.border-red-700 { border-color: #b91c1c; }

.border-black { border-color: #000; }
.border-brand-green { border-color: #194923; }
.border-white { border-color: #fff; }

/* --- Headings --- */
.heading-1 {
    font-size: 1.875rem; /* 30px */
    font-weight: 600;
    padding-top: 0.75rem;
    padding-bottom: 1.25rem;
}
.heading-2 {
    font-size: 1.5rem; /* 24px */
    font-weight: 600;
    padding-top: 0.5rem;
    padding-bottom: 1rem;
}
.heading-3 {
    font-size: 1.25rem; /* 20px */
    font-weight: 600;
    padding-top: 0.25rem;
    padding-bottom: 0.75rem;
}
.heading-4 {
    font-size: 1.125rem; /* 18px */
    font-weight: 600;
    padding-top: 0.25rem;
    padding-bottom: 0.5rem;
}
.heading-5 {
    font-size: 1rem; /* 16px */
    font-weight: 500;
    padding-top: 0.125rem;
    padding-bottom: 0.5rem;
}
.heading-6 {
    font-size: 0.875rem; /* 14px */
    font-weight: 500;
    padding-top: 0.125rem;
    padding-bottom: 0.25rem;
}
