:root {
    /* Primary color and variations */
    --bs-primary: var(--PRIMARY_COLOR);
    --bs-primary-rgb: var(--PRIMARY_RGB);
    --bs-primary-100: var(--PRIMARY_100);
    --bs-primary-200: var(--PRIMARY_200);
    --bs-primary-300: var(--PRIMARY_300);
    --bs-primary-400: var(--PRIMARY_400);
    --bs-primary-500: var(--PRIMARY_COLOR);
    --bs-primary-600: var(--PRIMARY_600);
    --bs-primary-700: var(--PRIMARY_700);
    --bs-primary-800: var(--PRIMARY_800);
    --bs-primary-900: var(--PRIMARY_900);
    
    /* Primary text and background variations */
    --bs-primary-text-emphasis: var(--PRIMARY_TEXT_EMPHASIS);
    --bs-primary-bg-subtle: var(--PRIMARY_BG_SUBTLE);
    --bs-primary-border-subtle: var(--PRIMARY_BORDER_SUBTLE);
    
    /* Link colors */
    --bs-link-color: var(--LINK_COLOR);
    --bs-link-hover-color: var(--LINK_HOVER_COLOR);
    --bs-link-color-rgb: var(--PRIMARY_RGB);
    --bs-link-hover-color-rgb: var(--PRIMARY_RGB);
    
    /* Button colors */
    --bs-btn-primary-color: #fff;
    --bs-btn-primary-bg: var(--PRIMARY_COLOR);
    --bs-btn-primary-border-color: var(--PRIMARY_COLOR);
    --bs-btn-primary-hover-color: #fff;
    --bs-btn-primary-hover-bg: var(--PRIMARY_600);
    --bs-btn-primary-hover-border-color: var(--PRIMARY_600);
    --bs-btn-primary-focus-shadow-rgb: var(--PRIMARY_RGB);
    --bs-btn-primary-active-color: #fff;
    --bs-btn-primary-active-bg: var(--PRIMARY_700);
    --bs-btn-primary-active-border-color: var(--PRIMARY_700);
    --bs-btn-primary-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
    --bs-btn-primary-disabled-color: #fff;
    --bs-btn-primary-disabled-bg: var(--PRIMARY_COLOR);
    --bs-btn-primary-disabled-border-color: var(--PRIMARY_COLOR);
    
    /* Form controls */
    --bs-form-check-input-checked-color: var(--PRIMARY_COLOR);
    --bs-form-check-input-checked-bg-color: var(--PRIMARY_COLOR);
    --bs-form-check-input-checked-border-color: var(--PRIMARY_COLOR);
    --bs-form-check-input-focus-border: var(--PRIMARY_COLOR);
    --bs-form-check-input-focus-box-shadow: 0 0 0 0.25rem rgba(var(--PRIMARY_RGB), 0.25);
    
    /* Form range */
    --bs-form-range-thumb-bg: var(--PRIMARY_COLOR);
    --bs-form-range-thumb-active-bg: var(--PRIMARY_200);
    --bs-form-range-thumb-disabled-bg: var(--PRIMARY_COLOR);
    
    /* Form switch */
    --bs-form-switch-checked-color: var(--PRIMARY_COLOR);
    --bs-form-switch-checked-bg-color: var(--PRIMARY_COLOR);
    --bs-form-switch-checked-border-color: var(--PRIMARY_COLOR);
    --bs-form-switch-focus-color: var(--PRIMARY_200);
    --bs-form-switch-focus-bg-color: var(--PRIMARY_200);
    
    /* Navigation */
    --bs-nav-pills-link-active-color: #fff;
    --bs-nav-pills-link-active-bg: var(--PRIMARY_COLOR);
    
    /* Nav tabs */
    --bs-nav-tabs-link-active-color: var(--PRIMARY_COLOR);
    --bs-nav-tabs-link-active-bg: #fff;
    --bs-nav-tabs-link-active-border-color: var(--PRIMARY_COLOR);
    
    /* Pagination */
    --bs-pagination-active-color: #fff;
    --bs-pagination-active-bg: var(--PRIMARY_COLOR);
    --bs-pagination-active-border-color: var(--PRIMARY_COLOR);
    --bs-pagination-focus-color: var(--PRIMARY_700);
    --bs-pagination-focus-bg: var(--PRIMARY_100);
    --bs-pagination-focus-border-color: var(--PRIMARY_300);
    --bs-pagination-hover-color: var(--PRIMARY_700);
    --bs-pagination-hover-bg: var(--PRIMARY_100);
    --bs-pagination-hover-border-color: var(--PRIMARY_300);
    
    /* Progress bar */
    --bs-progress-bar-color: #fff;
    --bs-progress-bar-bg: var(--PRIMARY_COLOR);
    
    /* Alerts */
    --bs-alert-primary-color: var(--PRIMARY_TEXT_EMPHASIS);
    --bs-alert-primary-bg: var(--PRIMARY_BG_SUBTLE);
    --bs-alert-primary-border-color: var(--PRIMARY_BORDER_SUBTLE);
    
    /* Badge */
    --bs-badge-primary-color: #fff;
    --bs-badge-primary-bg: var(--PRIMARY_COLOR);
    
    /* List group */
    --bs-list-group-active-color: #fff;
    --bs-list-group-active-bg: var(--PRIMARY_COLOR);
    --bs-list-group-active-border-color: var(--PRIMARY_COLOR);
    
    /* Dropdown */
    --bs-dropdown-link-active-color: #fff;
    --bs-dropdown-link-active-bg: var(--PRIMARY_COLOR);
    
    /* Accordion */
    --bs-accordion-active-color: var(--PRIMARY_TEXT_EMPHASIS);
    --bs-accordion-active-bg: var(--PRIMARY_BG_SUBTLE);
    --bs-accordion-btn-focus-border-color: var(--PRIMARY_600);
    --bs-accordion-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--PRIMARY_RGB), 0.25);
    
    /* Carousel */
    --bs-carousel-indicator-active-bg: var(--PRIMARY_COLOR);
    
    /* Offcanvas */
    --bs-offcanvas-color: inherit;
    --bs-offcanvas-bg: #fff;
    
    /* Toast */
    --bs-toast-header-color: var(--PRIMARY_TEXT_EMPHASIS);
    --bs-toast-header-bg: var(--PRIMARY_BG_SUBTLE);
    --bs-toast-header-border-color: var(--PRIMARY_BORDER_SUBTLE);
    
    /* Tooltip */
    --bs-tooltip-color: #fff;
    --bs-tooltip-bg: var(--PRIMARY_COLOR);
    
    /* Popover */
    --bs-popover-header-bg: var(--PRIMARY_BG_SUBTLE);
    --bs-popover-header-color: var(--PRIMARY_TEXT_EMPHASIS);
    
    /* Table */
    --bs-table-primary-color: var(--PRIMARY_TEXT_EMPHASIS);
    --bs-table-primary-bg: var(--PRIMARY_BG_SUBTLE);
    --bs-table-primary-border-color: var(--PRIMARY_BORDER_SUBTLE);
    
    /* Text colors */
    --bs-primary-text-emphasis: var(--PRIMARY_TEXT_EMPHASIS);
    --bs-text-primary: var(--PRIMARY_COLOR);
    
    /* Background colors */
    --bs-bg-primary: var(--PRIMARY_COLOR);
    --bs-bg-primary-subtle: var(--PRIMARY_BG_SUBTLE);
    
    /* Border colors */
    --bs-border-primary: var(--PRIMARY_COLOR);
    --bs-border-primary-subtle: var(--PRIMARY_BORDER_SUBTLE);
}

/* Additional CSS rules to ensure proper styling */

/* Primary buttons */
.btn-primary {
    --bs-btn-color: #fff;
    --bs-btn-bg: var(--PRIMARY_COLOR);
    --bs-btn-border-color: var(--PRIMARY_COLOR);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--PRIMARY_600);
    --bs-btn-hover-border-color: var(--PRIMARY_600);
    --bs-btn-focus-shadow-rgb: var(--PRIMARY_RGB);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--PRIMARY_700);
    --bs-btn-active-border-color: var(--PRIMARY_700);
    --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
    --bs-btn-disabled-color: #fff;
    --bs-btn-disabled-bg: var(--PRIMARY_COLOR);
    --bs-btn-disabled-border-color: var(--PRIMARY_COLOR);
}

/* Primary outline buttons */
.btn-outline-primary {
    --bs-btn-color: var(--PRIMARY_COLOR);
    --bs-btn-border-color: var(--PRIMARY_COLOR);
    --bs-btn-hover-color: #fff;
    --bs-btn-hover-bg: var(--PRIMARY_COLOR);
    --bs-btn-hover-border-color: var(--PRIMARY_COLOR);
    --bs-btn-focus-shadow-rgb: var(--PRIMARY_RGB);
    --bs-btn-active-color: #fff;
    --bs-btn-active-bg: var(--PRIMARY_COLOR);
    --bs-btn-active-border-color: var(--PRIMARY_COLOR);
    --bs-btn-disabled-color: var(--PRIMARY_COLOR);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: var(--PRIMARY_COLOR);
}

/* Force primary button colors */
.btn-primary,
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary.active,
.btn-primary.show {
    background-color: var(--bs-btn-bg) !important;
    border-color: var(--bs-btn-border-color) !important;
}

.btn-primary:hover {
    background-color: var(--PRIMARY_600) !important;
    border-color: var(--PRIMARY_COLOR) !important;
}

.btn-primary:focus,
.btn-primary.focus {
    background-color: var(--PRIMARY_600) !important;
    border-color: var(--PRIMARY_COLOR) !important;
    box-shadow: 0 0 0 0.2rem rgba(var(--PRIMARY_RGB), 0.5) !important;
}

.btn-primary:active,
.btn-primary.active,
.btn-primary.show {
    background-color: var(--PRIMARY_700) !important;
    border-color: var(--PRIMARY_COLOR) !important;
}

.btn-primary:disabled,
.btn-primary.disabled {
    background-color: var(--PRIMARY_COLOR) !important;
    border-color: var(--PRIMARY_COLOR) !important;
    opacity: 0.65;
}

/* Force outline primary button colors */
.btn-outline-primary {
    color: var(--PRIMARY_COLOR);
    border-color: var(--PRIMARY_COLOR);
}

.btn-outline-primary:hover {
    color: #fff;
    background-color: var(--PRIMARY_COLOR);
    border-color: var(--PRIMARY_COLOR);
}

.btn-outline-primary:focus,
.btn-outline-primary.focus {
    box-shadow: 0 0 0 0.2rem rgba(var(--PRIMARY_RGB), 0.5);
}

.btn-outline-primary:active,
.btn-outline-primary.active,
.btn-outline-primary.show {
    color: #fff;
    background-color: var(--PRIMARY_COLOR);
    border-color: var(--PRIMARY_COLOR);
}

.btn-outline-primary:disabled,
.btn-outline-primary.disabled {
    color: var(--PRIMARY_COLOR);
    background-color: transparent;
}

/* List group active items */
.list-group-item.active {
    color: #fff;
    background-color: var(--PRIMARY_COLOR);
    border-color: var(--PRIMARY_COLOR);
}

.list-group-item-primary {
    color: var(--PRIMARY_TEXT_EMPHASIS);
    background-color: var(--PRIMARY_BG_SUBTLE);
    border-color: var(--PRIMARY_BORDER_SUBTLE);
}

.list-group-item-primary.list-group-item-action:hover,
.list-group-item-primary.list-group-item-action:focus {
    color: var(--PRIMARY_TEXT_EMPHASIS);
    background-color: var(--PRIMARY_200);
}

.list-group-item-primary.list-group-item-action.active {
    color: #fff;
    background-color: var(--PRIMARY_TEXT_EMPHASIS);
    border-color: var(--PRIMARY_TEXT_EMPHASIS);
}

/* Dropdown active items */
.dropdown-item.active,
.dropdown-item:active {
    color: #fff;
    text-decoration: none;
    background-color: var(--PRIMARY_COLOR);
}

.dropdown-item:hover,
.dropdown-item:focus {
    color: var(--PRIMARY_TEXT_EMPHASIS);
    background-color: var(--PRIMARY_BG_SUBTLE);
}

/* Nav pills active */
.nav-pills .nav-link.active,
.nav-pills .show > .nav-link {
    color: #fff;
    background-color: var(--PRIMARY_COLOR);
}

/* Nav tabs active */
/*
.nav-tabs .nav-link.active,
.nav-tabs .nav-item.show .nav-link {
    color: var(--PRIMARY_COLOR);
    background-color: var(--bs-nav-tabs-link-active-bg);
    border-color: var(--bs-nav-tabs-link-active-border-color);
}
*/

/* Pagination active */
.pagination .page-item.active .page-link {
    color: #fff;
    background-color: var(--PRIMARY_COLOR);
    border-color: var(--PRIMARY_COLOR);
}

.pagination .page-link:hover {
    color: var(--PRIMARY_700);
}

.pagination .page-link:focus {
    color: var(--PRIMARY_700);
    background-color: var(--PRIMARY_100);
    border-color: var(--PRIMARY_300);
    outline: 0;
    box-shadow: 0 0 0 0.25rem rgba(var(--PRIMARY_RGB), 0.25);
}

/* Progress bar */
.progress-bar {
    background-color: var(--PRIMARY_COLOR);
}

/* Alerts */
.alert-primary {
    --bs-alert-color: var(--PRIMARY_TEXT_EMPHASIS);
    --bs-alert-bg: var(--PRIMARY_BG_SUBTLE);
    --bs-alert-border-color: var(--PRIMARY_BORDER_SUBTLE);
    --bs-alert-link-color: var(--PRIMARY_TEXT_EMPHASIS);
}

/* Badges */
.badge.bg-primary {
    background-color: var(--PRIMARY_COLOR) !important;
}

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

/* Form controls */
.form-check-input:checked {
    background-color: var(--PRIMARY_COLOR) !important;
    border-color: var(--PRIMARY_COLOR) !important;
}

.form-check-input:focus {
    border-color: var(--PRIMARY_600) !important;
    outline: 0;
    box-shadow: 0 0 0 0.25rem rgba(var(--PRIMARY_RGB), 0.25) !important;
}

.form-check-input:checked:focus {
    border-color: var(--PRIMARY_700) !important;
    box-shadow: 0 0 0 0.25rem rgba(var(--PRIMARY_RGB), 0.25) !important;
}

/* Form range */
.form-range::-webkit-slider-thumb {
    background-color: var(--PRIMARY_COLOR) !important;
}

.form-range::-moz-range-thumb {
    background-color: var(--PRIMARY_COLOR) !important;
}

.form-range::-webkit-slider-thumb:active {
    background-color: var(--PRIMARY_200) !important;
}

.form-range:focus::-webkit-slider-thumb {
    box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(var(--PRIMARY_RGB), 0.25) !important;
}

.form-range:focus::-moz-range-thumb {
    box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(var(--PRIMARY_RGB), 0.25) !important;
}

/* Form switch - more specific selectors */
.form-switch .form-check-input {
    /* background-color: #dee2e6; /* Generates a visual bug */
}

.form-switch .form-check-input:checked {
    background-color: var(--PRIMARY_COLOR) !important;
    border-color: var(--PRIMARY_COLOR) !important;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e") !important;
}

.form-switch .form-check-input:focus {
    background-color: var(--PRIMARY_200) !important;
    border-color: var(--PRIMARY_300) !important;
    box-shadow: 0 0 0 0.25rem rgba(var(--PRIMARY_RGB), 0.25) !important;
    --bs-form-switch-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23var(--PRIMARY_COLOR_NO_HASH)'/%3e%3c/svg%3e") !important;
}

.form-switch .form-check-input:checked:focus {
    background-color: var(--PRIMARY_COLOR) !important;
    border-color: var(--PRIMARY_COLOR) !important;
    box-shadow: 0 0 0 0.25rem rgba(var(--PRIMARY_RGB), 0.25) !important;
}

.form-switch .form-check-input:disabled {
    background-color: #e9ecef !important;
}

.form-switch .form-check-input:checked:disabled {
    background-color: rgba(var(--PRIMARY_RGB), 0.5) !important;
}

/* Accordion */
.accordion-button:not(.collapsed) {
    color: var(--PRIMARY_TEXT_EMPHASIS);
    background-color: var(--PRIMARY_BG_SUBTLE);
    border-color: var(--PRIMARY_BORDER_SUBTLE);
}

.accordion-button:focus {
    z-index: 3;
    border-color: var(--PRIMARY_600);
    outline: 0;
    box-shadow: 0 0 0 0.25rem rgba(var(--PRIMARY_RGB), 0.25);
}

/* Carousel indicators */
.carousel-indicators [data-bs-target] {
    background-color: var(--PRIMARY_COLOR);
}

/* Text utilities */
.text-primary {
    --bs-text-opacity: 1;
    color: rgba(var(--PRIMARY_RGB), var(--bs-text-opacity)) !important;
}

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

/* Background utilities */
.bg-primary {
    --bs-bg-opacity: 1;
    background-color: rgba(var(--PRIMARY_RGB), var(--bs-bg-opacity)) !important;
}

.bg-primary-subtle {
    background-color: var(--PRIMARY_BG_SUBTLE) !important;
}

/* Border utilities */
.border-primary {
    --bs-border-opacity: 1;
    border-color: rgba(var(--PRIMARY_RGB), var(--bs-border-opacity)) !important;
}

.border-primary-subtle {
    border-color: var(--PRIMARY_BORDER_SUBTLE) !important;
}

/* Links */
a {
    color: var(--PRIMARY_COLOR);
}

a:hover {
    color: var(--PRIMARY_700);
}

/* Link utilities */
.link-primary {
    color: var(--PRIMARY_COLOR) !important;
    text-decoration-color: var(--PRIMARY_COLOR) !important;
}

.link-primary:hover,
.link-primary:focus {
    color: var(--PRIMARY_600) !important;
    text-decoration-color: var(--PRIMARY_600) !important;
}

.link-primary:active {
    color: var(--PRIMARY_800) !important;
    text-decoration-color: var(--PRIMARY_700) !important;
}

/* Link underline utilities */
.link-underline-primary {
    --bs-link-underline-color: var(--PRIMARY_COLOR);
    text-decoration-color: var(--PRIMARY_COLOR) !important;
}

.link-underline-primary:hover,
.link-underline-primary:focus {
    --bs-link-underline-color: var(--PRIMARY_600);
    text-decoration-color: var(--PRIMARY_600) !important;
}

/* Link offset and opacity utilities */
.link-primary.link-offset-1:hover,
.link-primary.link-offset-2:hover,
.link-primary.link-offset-3:hover {
    color: var(--PRIMARY_600) !important;
}

.link-primary.link-opacity-10,
.link-primary.link-opacity-25,
.link-primary.link-opacity-50,
.link-primary.link-opacity-75 {
    color: var(--PRIMARY_COLOR) !important;
}

.link-primary.link-opacity-10:hover,
.link-primary.link-opacity-25:hover,
.link-primary.link-opacity-50:hover,
.link-primary.link-opacity-75:hover {
    color: var(--PRIMARY_600) !important;
}

/* Table */
.table-primary {
    --bs-table-color: var(--PRIMARY_TEXT_EMPHASIS);
    --bs-table-bg: var(--PRIMARY_BG_SUBTLE);
    --bs-table-border-color: var(--PRIMARY_BORDER_SUBTLE);
    --bs-table-striped-bg: var(--PRIMARY_100);
    --bs-table-striped-color: var(--PRIMARY_TEXT_EMPHASIS);
    --bs-table-active-bg: var(--PRIMARY_200);
    --bs-table-active-color: var(--PRIMARY_TEXT_EMPHASIS);
    --bs-table-hover-bg: var(--PRIMARY_200);
    --bs-table-hover-color: var(--PRIMARY_TEXT_EMPHASIS);
}

/* Toast */
.toast-header {
    color: var(--PRIMARY_TEXT_EMPHASIS);
    background-color: var(--PRIMARY_BG_SUBTLE);
    border-bottom: 1px solid var(--PRIMARY_BORDER_SUBTLE);
}

/* Offcanvas */
.offcanvas-primary {
    --bs-offcanvas-bg: var(--PRIMARY_BG_SUBTLE);
    --bs-offcanvas-color: var(--PRIMARY_TEXT_EMPHASIS);
}

/* Modal */
.modal-primary .modal-header {
    color: var(--PRIMARY_TEXT_EMPHASIS);
    background-color: var(--PRIMARY_BG_SUBTLE);
    border-bottom: 1px solid var(--PRIMARY_BORDER_SUBTLE);
}

/* Spinner */
.spinner-border-primary {
    --bs-spinner-border-color: var(--PRIMARY_COLOR);
    --bs-spinner-border-right-color: transparent;
}

.spinner-grow-primary {
    --bs-spinner-color: var(--PRIMARY_COLOR);
}

/* Placeholder */
.placeholder-primary {
    background-color: var(--PRIMARY_COLOR);
}

.form-control:focus {
    background-color: var(--bs-body-bg);
    border-color: var(--PRIMARY_600) !important;
    box-shadow: 0 0 0 0.25rem rgba(var(--PRIMARY_RGB), 0.25);
    color: var(--bs-body-color);
    outline: 0;
}
