/* =========================================================
   Bootstrap 5+ Spacing Utilities
   ========================================================= */

:root {
    --bs-spacer: 1rem;

    --bs-spacing-0: 0;
    --bs-spacing-1: 0.25rem;
    --bs-spacing-2: 0.5rem;
    --bs-spacing-3: 1rem;
    --bs-spacing-4: 1.5rem;
    --bs-spacing-5: 3rem;
}


/* =========================================================
   Padding
   ========================================================= */

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

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

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

.ps-0 { padding-left: 0 !important; }
.ps-1 { padding-left: 0.25rem !important; }
.ps-2 { padding-left: 0.5rem !important; }
.ps-3 { padding-left: 1rem !important; }
.ps-4 { padding-left: 1.5rem !important; }
.ps-5 { padding-left: 3rem !important; }

.pe-0 { padding-right: 0 !important; }
.pe-1 { padding-right: 0.25rem !important; }
.pe-2 { padding-right: 0.5rem !important; }
.pe-3 { padding-right: 1rem !important; }
.pe-4 { padding-right: 1.5rem !important; }
.pe-5 { padding-right: 3rem !important; }

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

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


/* =========================================================
   Margin
   ========================================================= */

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

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

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

.ms-0 { margin-left: 0 !important; }
.ms-1 { margin-left: 0.25rem !important; }
.ms-2 { margin-left: 0.5rem !important; }
.ms-3 { margin-left: 1rem !important; }
.ms-4 { margin-left: 1.5rem !important; }
.ms-5 { margin-left: 3rem !important; }
.ms-auto { margin-left: auto !important; }

.me-0 { margin-right: 0 !important; }
.me-1 { margin-right: 0.25rem !important; }
.me-2 { margin-right: 0.5rem !important; }
.me-3 { margin-right: 1rem !important; }
.me-4 { margin-right: 1.5rem !important; }
.me-5 { margin-right: 3rem !important; }
.me-auto { margin-right: auto !important; }

.mx-0 {
    margin-left: 0 !important;
    margin-right: 0 !important;
}
.mx-1 {
    margin-left: 0.25rem !important;
    margin-right: 0.25rem !important;
}
.mx-2 {
    margin-left: 0.5rem !important;
    margin-right: 0.5rem !important;
}
.mx-3 {
    margin-left: 1rem !important;
    margin-right: 1rem !important;
}
.mx-4 {
    margin-left: 1.5rem !important;
    margin-right: 1.5rem !important;
}
.mx-5 {
    margin-left: 3rem !important;
    margin-right: 3rem !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: 0.25rem !important;
    margin-bottom: 0.25rem !important;
}
.my-2 {
    margin-top: 0.5rem !important;
    margin-bottom: 0.5rem !important;
}
.my-3 {
    margin-top: 1rem !important;
    margin-bottom: 1rem !important;
}
.my-4 {
    margin-top: 1.5rem !important;
    margin-bottom: 1.5rem !important;
}
.my-5 {
    margin-top: 3rem !important;
    margin-bottom: 3rem !important;
}
.my-auto {
    margin-top: auto !important;
    margin-bottom: auto !important;
}


/* =========================================================
   Responsive: sm >= 576px
   ========================================================= */

@media (min-width: 576px) {

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

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

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

    .ps-sm-0 { padding-left: 0 !important; }
    .ps-sm-1 { padding-left: 0.25rem !important; }
    .ps-sm-2 { padding-left: 0.5rem !important; }
    .ps-sm-3 { padding-left: 1rem !important; }
    .ps-sm-4 { padding-left: 1.5rem !important; }
    .ps-sm-5 { padding-left: 3rem !important; }

    .pe-sm-0 { padding-right: 0 !important; }
    .pe-sm-1 { padding-right: 0.25rem !important; }
    .pe-sm-2 { padding-right: 0.5rem !important; }
    .pe-sm-3 { padding-right: 1rem !important; }
    .pe-sm-4 { padding-right: 1.5rem !important; }
    .pe-sm-5 { padding-right: 3rem !important; }

    .px-sm-0 { padding-left: 0 !important; padding-right: 0 !important; }
    .px-sm-1 { padding-left: .25rem !important; padding-right: .25rem !important; }
    .px-sm-2 { padding-left: .5rem !important; padding-right: .5rem !important; }
    .px-sm-3 { padding-left: 1rem !important; padding-right: 1rem !important; }
    .px-sm-4 { padding-left: 1.5rem !important; padding-right: 1.5rem !important; }
    .px-sm-5 { padding-left: 3rem !important; padding-right: 3rem !important; }

    .py-sm-0 { padding-top: 0 !important; padding-bottom: 0 !important; }
    .py-sm-1 { padding-top: .25rem !important; padding-bottom: .25rem !important; }
    .py-sm-2 { padding-top: .5rem !important; padding-bottom: .5rem !important; }
    .py-sm-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
    .py-sm-4 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
    .py-sm-5 { padding-top: 3rem !important; padding-bottom: 3rem !important; }

    .m-sm-0 { margin: 0 !important; }
    .m-sm-1 { margin: .25rem !important; }
    .m-sm-2 { margin: .5rem !important; }
    .m-sm-3 { margin: 1rem !important; }
    .m-sm-4 { margin: 1.5rem !important; }
    .m-sm-5 { margin: 3rem !important; }
    .m-sm-auto { margin: auto !important; }

    .mt-sm-0 { margin-top: 0 !important; }
    .mt-sm-1 { margin-top: .25rem !important; }
    .mt-sm-2 { margin-top: .5rem !important; }
    .mt-sm-3 { margin-top: 1rem !important; }
    .mt-sm-4 { margin-top: 1.5rem !important; }
    .mt-sm-5 { margin-top: 3rem !important; }
    .mt-sm-auto { margin-top: auto !important; }

    .mb-sm-0 { margin-bottom: 0 !important; }
    .mb-sm-1 { margin-bottom: .25rem !important; }
    .mb-sm-2 { margin-bottom: .5rem !important; }
    .mb-sm-3 { margin-bottom: 1rem !important; }
    .mb-sm-4 { margin-bottom: 1.5rem !important; }
    .mb-sm-5 { margin-bottom: 3rem !important; }
    .mb-sm-auto { margin-bottom: auto !important; }

    .ms-sm-0 { margin-left: 0 !important; }
    .ms-sm-1 { margin-left: .25rem !important; }
    .ms-sm-2 { margin-left: .5rem !important; }
    .ms-sm-3 { margin-left: 1rem !important; }
    .ms-sm-4 { margin-left: 1.5rem !important; }
    .ms-sm-5 { margin-left: 3rem !important; }
    .ms-sm-auto { margin-left: auto !important; }

    .me-sm-0 { margin-right: 0 !important; }
    .me-sm-1 { margin-right: .25rem !important; }
    .me-sm-2 { margin-right: .5rem !important; }
    .me-sm-3 { margin-right: 1rem !important; }
    .me-sm-4 { margin-right: 1.5rem !important; }
    .me-sm-5 { margin-right: 3rem !important; }
    .me-sm-auto { margin-right: auto !important; }

    .mx-sm-0 { margin-left: 0 !important; margin-right: 0 !important; }
    .mx-sm-1 { margin-left: .25rem !important; margin-right: .25rem !important; }
    .mx-sm-2 { margin-left: .5rem !important; margin-right: .5rem !important; }
    .mx-sm-3 { margin-left: 1rem !important; margin-right: 1rem !important; }
    .mx-sm-4 { margin-left: 1.5rem !important; margin-right: 1.5rem !important; }
    .mx-sm-5 { margin-left: 3rem !important; margin-right: 3rem !important; }
    .mx-sm-auto { margin-left: auto !important; margin-right: auto !important; }

    .my-sm-0 { margin-top: 0 !important; margin-bottom: 0 !important; }
    .my-sm-1 { margin-top: .25rem !important; margin-bottom: .25rem !important; }
    .my-sm-2 { margin-top: .5rem !important; margin-bottom: .5rem !important; }
    .my-sm-3 { margin-top: 1rem !important; margin-bottom: 1rem !important; }
    .my-sm-4 { margin-top: 1.5rem !important; margin-bottom: 1.5rem !important; }
    .my-sm-5 { margin-top: 3rem !important; margin-bottom: 3rem !important; }
    .my-sm-auto { margin-top: auto !important; margin-bottom: auto !important; }
}

/* =========================================================
   Bootstrap 5+ Display Utilities
   ========================================================= */

/* Base */

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

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

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

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

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

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

.d-table-row {
    display: table-row !important;
}

.d-table-cell {
    display: table-cell !important;
}

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

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


/* =========================================================
   sm >= 576px
   ========================================================= */

@media (min-width: 576px) {

    .d-sm-none {
        display: none !important;
    }

    .d-sm-inline {
        display: inline !important;
    }

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

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

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

    .d-sm-table {
        display: table !important;
    }

    .d-sm-table-row {
        display: table-row !important;
    }

    .d-sm-table-cell {
        display: table-cell !important;
    }

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

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


/* =========================================================
   md >= 768px
   ========================================================= */

@media (min-width: 768px) {

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

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

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

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

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

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

    .d-md-table-row {
        display: table-row !important;
    }

    .d-md-table-cell {
        display: table-cell !important;
    }

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

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


/* =========================================================
   lg >= 992px
   ========================================================= */

@media (min-width: 992px) {

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

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

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

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

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

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

    .d-lg-table-row {
        display: table-row !important;
    }

    .d-lg-table-cell {
        display: table-cell !important;
    }

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

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


/* =========================================================
   xl >= 1200px
   ========================================================= */

@media (min-width: 1200px) {

    .d-xl-none {
        display: none !important;
    }

    .d-xl-inline {
        display: inline !important;
    }

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

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

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

    .d-xl-table {
        display: table !important;
    }

    .d-xl-table-row {
        display: table-row !important;
    }

    .d-xl-table-cell {
        display: table-cell !important;
    }

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

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


/* =========================================================
   xxl >= 1400px
   ========================================================= */

@media (min-width: 1400px) {

    .d-xxl-none {
        display: none !important;
    }

    .d-xxl-inline {
        display: inline !important;
    }

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

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

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

    .d-xxl-table {
        display: table !important;
    }

    .d-xxl-table-row {
        display: table-row !important;
    }

    .d-xxl-table-cell {
        display: table-cell !important;
    }

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

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