 :root {
    --primary-color: #46a346;
    --primary-dark: #388238;
    --primary-light: #54c454;
}

/* Override Bootstrap primary color */
.btn-primary {
    background-color: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
    color: #fff !important;
}

.btn-primary:hover {
    background-color: var(--primary-dark) !important;
    border-color: var(--primary-dark) !important;
    color: #fff !important;
}

.btn-primary:focus,
.btn-primary.focus {
    background-color: var(--primary-dark) !important;
    border-color: var(--primary-dark) !important;
    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25) !important;
}

.btn-primary:active,
.btn-primary.active,
.btn-primary:not(:disabled):not(.disabled):active,
.btn-primary:not(:disabled):not(.disabled).active,
.show > .btn-primary.dropdown-toggle {
    background-color: var(--primary-dark) !important;
    border-color: var(--primary-dark) !important;
}

.btn-primary:disabled,
.btn-primary.disabled {
    background-color: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
}

/* Badge */
.badge-primary {
    background-color: var(--primary-color) !important;
    color: #fff !important;
}

/* Card primary */
.card-primary {
    border-top-color: var(--primary-color) !important;
}

.card-primary .card-header {
    background-color: var(--primary-color) !important;
    color: #fff !important;
}

/* Text utilities */
.text-primary {
    color: var(--primary-color) !important;
}

a.text-primary:hover, 
a.text-primary:focus {
    color: var(--primary-dark) !important;
}

/* Background utilities */
.bg-primary {
    background-color: var(--primary-color) !important;
}

a.bg-primary:hover, 
a.bg-primary:focus {
    background-color: var(--primary-dark) !important;
}

/* Border utilities */
.border-primary {
    border-color: var(--primary-color) !important;
}

/* Alert primary */
.alert-primary {
    background-color: var(--primary-light) !important;
    border-color: var(--primary-color) !important;
    color: #084298 !important;
}

.alert-primary hr {
    border-top-color: var(--primary-color) !important;
}

.alert-primary .alert-link {
    color: #0a3622 !important;
}

/* Nav pills */
.nav-pills .nav-link.active {
    background-color: var(--primary-color) !important;
    color: #fff !important;
}

.nav-pills .nav-link {
    color: #6c757d !important;
}

.nav-pills .nav-link:hover {
    color: #495057 !important;
}

/* Dropdown */
.dropdown-menu .dropdown-item.active,
.dropdown-menu .dropdown-item:active {
    background-color: var(--primary-color) !important;
}

/* Pagination */
.pagination .page-link {
    color: var(--primary-color) !important;
}

.pagination .page-link:hover {
    color: var(--primary-dark) !important;
    background-color: #e9ecef !important;
    border-color: #dee2e6 !important;
}

.pagination .page-item.active .page-link {
    background-color: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
}

/* Form focus */
.form-control:focus,
.form-select:focus,
.form-check-input:focus,
.custom-select:focus {
    border-color: var(--primary-color) !important;
    box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25) !important;
}

/* List group */
.list-group-item.active {
    background-color: var(--primary-color) !important;
    border-color: var(--primary-color) !important;
}

/* Navbar brand and links */
.navbar-brand {
    color: var(--primary-color) !important;
}

.navbar-brand:hover,
.navbar-brand:focus {
    color: var(--primary-dark) !important;
}

/* Sidebar elements */
.sidebar-menu .nav-link.active {
    color: var(--primary-color) !important;
    border-left-color: var(--primary-color) !important;
}

.sidebar-menu .nav-link:hover {
    color: var(--primary-color) !important;
}

/* Link color */
a {
    color: var(--primary-color) !important;
}

a:hover {
    color: var(--primary-dark) !important;
}

/* Breadcrumb */
.breadcrumb .active {
    color: var(--primary-color) !important;
}

/* Spinner */
.spinner-border {
    color: var(--primary-color) !important;
}

/* Progress bar */
.progress-bar {
    background-color: var(--primary-color) !important;
}

/* Tooltip */
.tooltip-inner {
    background-color: var(--primary-color) !important;
}

.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before,
.bs-tooltip-top .tooltip-arrow::before {
    border-top-color: var(--primary-color) !important;
}

.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before,
.bs-tooltip-end .tooltip-arrow::before {
    border-right-color: var(--primary-color) !important;
}

.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before,
.bs-tooltip-bottom .tooltip-arrow::before {
    border-bottom-color: var(--primary-color) !important;
}

.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before,
.bs-tooltip-start .tooltip-arrow::before {
    border-left-color: var(--primary-color) !important;
}

/* Popover */
.popover .popover-header {
    background-color: var(--primary-color) !important;
    border-bottom-color: var(--primary-color) !important;
}

/* Custom links styling */
.btn-link {
    color: var(--primary-color) !important;
}

.btn-link:hover {
    color: var(--primary-dark) !important;
}

/* Select2 styling */
.select2-container--default .select2-selection--single,
.select2-container--default.select2-container--focus .select2-selection--single {
    border-color: var(--primary-color) !important;
}

.select2-container--default .select2-results__option--highlighted[aria-selected] {
    background-color: var(--primary-color) !important;
}

/* CSS-based Spinner - Dynamic Theme Color */
@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

.loader {
    position: fixed !important;
    left: 0 !important;
    top: 0 !important;
    width: 100% !important;
    height: 100% !important;
    z-index: 9999 !important;
    background: #f9f9f9 !important;
    display: flex !important;
    justify-content: center !important;
    align-items: center !important;
}

.loader::before {
    content: '' !important;
    width: 50px !important;
    height: 50px !important;
    border: 5px solid rgba(0, 0, 0, 0.1) !important;
    border-top: 5px solid var(--primary-color) !important;
    border-radius: 50% !important;
    animation: spin 1s linear infinite !important;
}
