/***********************************************************************************************************************************************************/
/* Global overrides to standard bootstrap text styles */
/***********************************************************************************************************************************************************/
.text-disabled {
    color: var(--modern-text-disabled);
}

.text-black {
    color: var(--modern-black);
}

.text-warning {
    color: var(--modern-warning-text);
}

.text-warning-200 {
    color: var(--modern-warning-icon);
}

.text-danger-200 {
    color: var(--modern-danger-btn-hover);
}

.text-success-200 {
    color: var(--modern-success-text);
}

/***********************************************************************************************************************************************************/
/* Global overrides to standard bootstrap background styles */
/***********************************************************************************************************************************************************/
.bg-info {
    background-color: var(--modern-info-btn-bg) !important;
}

.bg-warning {
    background-color: var(--modern-warning-btn-bg) !important;
}

.bg-success {
    background-color: var(--modern-success-toast-text) !important;
}

.bg-secondary {
    background-color: var(--modern-secondary-bg) !important;
}

/***********************************************************************************************************************************************************/
/* Global styles for negative margins - previously removed */
/***********************************************************************************************************************************************************/
.mt-n1 { margin-top: -0.25rem; }   /* ~ -4px  */
.mt-n2 { margin-top: -0.5rem; }    /* ~ -8px  */
.mt-n3 { margin-top: -1rem; }      /* ~ -16px */
.mt-n4 { margin-top: -1.5rem; }    /* ~ -24px */
.mt-n5 { margin-top: -3rem; }      /* ~ -48px */

/***********************************************************************************************************************************************************/
/* Global overrides to standard bootstrap button styles */
/***********************************************************************************************************************************************************/
.btn-info {
    --bs-btn-color: var(--bs-white);
    --bs-btn-bg: var(--bs-info);
    --bs-btn-border-color: var(--bs-info);
    --bs-btn-hover-color: var(--bs-white);
    --bs-btn-hover-bg: var(--bs-btn-info-hover-bg);
    --bs-btn-hover-border-color: var(--bs-btn-info-hover-bg);
    --bs-btn-active-color: var(--bs-white);
    --bs-btn-active-bg: var(--bs-btn-info-hover-bg);
    --bs-btn-active-border-color: var(--bs-btn-info-hover-bg);
    --bs-btn-focus-shadow-rgb: var(--bs-info-rgb);
    --bs-btn-disabled-color: var(--bs-white);
    --bs-btn-disabled-bg: color-mix(in srgb, var(--bs-info) 50%, white);
    --bs-btn-disabled-border-color: color-mix(in srgb, var(--bs-info) 50%, white);
}

.btn-warning {
    --bs-btn-color: var(--bs-white);
    --bs-btn-bg: var(--bs-warning);
    --bs-btn-border-color: var(--bs-warning);
    --bs-btn-hover-color: var(--bs-white);
    --bs-btn-hover-bg: var(--bs-btn-warning-hover-bg);
    --bs-btn-hover-border-color: var(--bs-btn-warning-hover-bg);
    --bs-btn-active-color: var(--bs-white);
    --bs-btn-active-bg: var(--bs-btn-warning-hover-bg);
    --bs-btn-active-border-color: var(--bs-btn-warning-hover-bg);
    --bs-btn-focus-shadow-rgb: var(--bs-warning-rgb);
    --bs-btn-disabled-color: var(--bs-white);
    --bs-btn-disabled-bg: color-mix(in srgb, var(--bs-warning) 50%, white);
    --bs-btn-disabled-border-color: color-mix(in srgb, var(--bs-warning) 50%, white);
}

.btn-danger {
    --bs-btn-color: var(--bs-white);
    --bs-btn-bg: var(--bs-danger);
    --bs-btn-border-color: var(--bs-danger);
    --bs-btn-hover-color: var(--bs-white);
    --bs-btn-hover-bg: var(--bs-btn-danger-hover-bg);
    --bs-btn-hover-border-color: var(--bs-btn-danger-hover-bg);
    --bs-btn-active-color: var(--bs-white);
    --bs-btn-active-bg: var(--bs-btn-danger-hover-bg);
    --bs-btn-active-border-color: var(--bs-btn-danger-hover-bg);
    --bs-btn-focus-shadow-rgb: var(--bs-danger-rgb);
    --bs-btn-disabled-color: var(--bs-white);
    --bs-btn-disabled-bg: color-mix(in srgb, var(--bs-danger) 50%, white);
    --bs-btn-disabled-border-color: color-mix(in srgb, var(--bs-danger) 50%, white);
}

.btn-success {
    --bs-btn-color: var(--bs-white);
    --bs-btn-bg: var(--bs-success);
    --bs-btn-border-color: var(--bs-success);
    --bs-btn-hover-color: var(--bs-white);
    --bs-btn-hover-bg: var(--bs-btn-success-hover-bg);
    --bs-btn-hover-border-color: var(--bs-btn-success-hover-bg);
    --bs-btn-active-color: var(--bs-white);
    --bs-btn-active-bg: var(--bs-btn-success-hover-bg);
    --bs-btn-active-border-color: var(--bs-btn-success-hover-bg);
    --bs-btn-focus-shadow-rgb: var(--bs-success-rgb);
    --bs-btn-disabled-color: var(--bs-white);
    --bs-btn-disabled-bg: color-mix(in srgb, var(--bs-success) 50%, white);
    --bs-btn-disabled-border-color: var(--bs-btn-success-disabled-bg);
}

.btn-secondary {
    --bs-btn-color: var(--bs-white);
    --bs-btn-bg: var(--bs-secondary);
    --bs-btn-border-color: var(--bs-secondary);
    --bs-btn-hover-color: var(--bs-white);
    --bs-btn-hover-bg: var(--bs-btn-secondary-hover-bg);
    --bs-btn-hover-border-color: var(--bs-btn-secondary-hover-bg);
    --bs-btn-active-color: var(--bs-white);
    --bs-btn-active-bg: var(--bs-btn-secondary-hover-bg);
    --bs-btn-active-border-color: var(--bs-btn-secondary-hover-bg);
    --bs-btn-focus-shadow-rgb: var(--bs-secondary-rgb);
    --bs-btn-disabled-color: var(--bs-white);
    --bs-btn-disabled-bg: var(--bs-btn-secondary-disabled-bg);
    --bs-btn-disabled-border-color: var(--bs-btn-secondary-disabled-bg);
}

.btn-outline-secondary {
    --bs-btn-disabled-color: color-mix(in srgb, var(--bs-secondary) 50%, white);
    --bs-btn-disabled-bg: transparent;
    --bs-btn-disabled-border-color: color-mix(in srgb, var(--bs-secondary) 50%, white);
    border: 1px solid var(--modern-border);
    color: var(--modern-text);
    background: var(--modern-white);
    font-size: 0.9rem;
    font-weight: 500;
    padding: 0.4rem 1rem;
    border-radius: 0.3rem;
    transition: all 0.15s ease;
}

.btn-outline-secondary i {
    color: var(--modern-text-muted);
    margin-right: 0.5rem;
    transition: color 0.15s ease, transform 0.15s ease;
}

.btn-outline-secondary:hover {
    border-color: var(--theme-accent-primary);
    color: var(--theme-accent-primary);
    background: var(--modern-white) !important;
}

.btn-outline-secondary:hover i {
    color: var(--theme-accent-primary) !important;
    transform: scale(1.2);
}

.btn-outline-secondary:active,
.btn-outline-secondary.active,
.btn-outline-secondary.show,
.btn-outline-secondary:focus,
.btn-outline-secondary:focus-visible,
.btn-outline-secondary:focus-within,
button.btn.btn-outline-secondary:focus,
button.btn.btn-outline-secondary:focus-visible,
button.btn.btn-outline-secondary:active {
    border-color: var(--theme-accent-primary) !important;
    color: var(--theme-accent-primary) !important;
    background: var(--modern-white) !important;
    box-shadow: none !important;
    outline: none !important;
    --bs-btn-active-bg: var(--modern-white);
    --bs-btn-active-border-color: var(--theme-accent-primary);
    --bs-btn-active-color: var(--theme-accent-primary);
}

.btn-outline-secondary:active i,
.btn-outline-secondary.active i,
.btn-outline-secondary.show i,
.btn-outline-secondary:focus i,
.btn-outline-secondary:focus-visible i {
    color: var(--theme-accent-primary) !important;
}

.grid-action-row {
    display: flex;
    flex-wrap: wrap;
    align-items: stretch;
    justify-content: flex-start;
    gap: 0.5rem;
}

    .grid-action-row > .btn-group {
        max-width: 100%;
    }

/***********************************************************************************************************************************************************/
/* Miscellaneous */
/***********************************************************************************************************************************************************/

/* Remove focus style from bootstrap buttons */
.btn-nofocus.btn:focus {
    outline: none !important;
    box-shadow: none !important;
}

button {
    cursor: pointer;
}

button.btn-nohover[disabled='disabled'] {
    background-color: var(--bs-disabled-bg) !important;
}

button.btn-nohover:hover {
    background-color: transparent !important;
}

button.btn-nohover[disabled='disabled']:hover {
    background-color: var(--bs-disabled-bg) !important;
    cursor: default;
}

button.btn-info.btn-nofocus[disabled='disabled'] {
    background-color: var(--bs-info) !important;
    border-color: var(--bs-info) !important;
    opacity: inherit;
}

.btn.btn-link {
    text-decoration: underline;
    text-underline-offset: 2px;
    color: var(--theme-accent-primary);
}

a.link-danger:hover, a.link-danger:focus {
    color: var(--modern-danger-btn-hover) !important;
    text-decoration: underline;
    text-decoration-thickness: 2px;
    text-shadow: none !important;
}

.alert {
    padding: .65rem 2rem .65rem 1rem;
}

    .alert .toggle-details {
        opacity: .9;
        letter-spacing: 1.1px;
        color: inherit;
        text-decoration: underline !important;
        text-decoration-thickness: 1px !important;
        text-underline-offset: 3px;
    }

        .alert .toggle-details:hover,
        .alert .toggle-details:focus-visible {
            opacity: 1;
            color: inherit;
            text-decoration: underline !important;
            text-decoration-thickness: 2px !important;
            outline: 0;
        }

.alert strong {
    text-transform: uppercase;
}

.alert-warning {
    background-color: var(--modern-warning-surface) !important;
    border: 1px solid var(--modern-warning-border-strong) !important;
    border-left: 5px solid var(--modern-warning-icon) !important;
    color: var(--modern-alert-text) !important;
    border-radius: 6px !important;
    font-size: 0.9rem;
    padding: 0.75rem 1rem;
}

.alert-dismissible {
    padding-right: 3.5rem !important;
}

.alert-warning strong {
    color: var(--modern-text);
}

.alert-info {
    background-color: var(--modern-info-header-bg) !important;
    border: 1px solid var(--modern-info-border) !important;
    border-left: 5px solid var(--bs-info-200) !important;
    border-radius: 8px !important;
    font-size: 0.95rem;
    padding: 0.75rem 1rem;
}

.alert-success {
    background-color: var(--modern-success-toast-bg) !important;
    border: 1px solid var(--modern-success-toast-border) !important;
    color: var(--modern-alert-text) !important;
    border-radius: 8px !important;
    font-size: 0.95rem;
    padding: 0.75rem 1rem;
}

.alert-danger {
    background-color: var(--modern-danger-header-bg) !important;
    border: 1px solid var(--modern-danger-border) !important;
    border-left: 5px solid var(--modern-danger-text) !important;
    color: var(--modern-alert-text) !important;
    border-radius: 8px !important;
    font-size: 0.95rem;
    padding: 0.75rem 1rem;
}

.alert-warning.alert-no-accent {
    border-left: 1px solid var(--modern-warning-border-strong) !important;
}

.alert-info.alert-no-accent {
    border-left: 1px solid var(--modern-info-border) !important;
}

.alert-danger.alert-no-accent {
    border-left: 1px solid var(--modern-danger-border) !important;
}

.alert-warning a:not(.btn):not(.btn-close),
.alert-info a:not(.btn):not(.btn-close),
.alert-danger a:not(.btn):not(.btn-close),
.alert-success a:not(.btn):not(.btn-close) {
    color: currentColor;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
    text-shadow: none;
}

.alert-warning a:not(.btn):not(.btn-close) {
    color: currentColor;
}

.alert-info a:not(.btn):not(.btn-close) {
    color: var(--modern-info-text);
}

.alert-danger a:not(.btn):not(.btn-close) {
    color: var(--modern-danger-text);
}

    .alert-warning a:not(.btn):not(.btn-close):hover,
    .alert-info a:not(.btn):not(.btn-close):hover,
    .alert-danger a:not(.btn):not(.btn-close):hover,
    .alert-success a:not(.btn):not(.btn-close):hover,
    .alert-warning a:not(.btn):not(.btn-close):focus-visible,
    .alert-info a:not(.btn):not(.btn-close):focus-visible,
    .alert-danger a:not(.btn):not(.btn-close):focus-visible,
    .alert-success a:not(.btn):not(.btn-close):focus-visible {
        text-decoration: underline;
        text-decoration-thickness: 2px;
        text-shadow: none;
        outline: 0;
    }

.alert-info .btn-close {
    opacity: 0.6;
}

.alert-info .btn-close:hover {
    opacity: 0.85;
}

.alert-dismissible > .btn-close {
    top: 0;
    right: 0;
    bottom: 0;
    width: 2.35rem;
    height: auto;
    padding: 0;
    border-left: 1px solid color-mix(in srgb, var(--bs-border-color) 45%, var(--modern-white));
    border-radius: 0 0.3rem 0.3rem 0;
    background-size: 0.65rem;
    background-position: center;
    opacity: 0.75;
}

    .alert-dismissible > .btn-close:hover,
    .alert-dismissible > .btn-close:focus-visible {
        background-color: color-mix(in srgb, var(--bs-border-color) 20%, var(--modern-white));
        background-size: 0.75rem;
        opacity: 1;
        transform: none;
    }

.alert-dismissible.alert-warning > .btn-close {
    border-left-color: color-mix(in srgb, var(--modern-warning-icon) 24%, var(--modern-white));
}

    .alert-dismissible.alert-warning > .btn-close:hover,
    .alert-dismissible.alert-warning > .btn-close:focus-visible {
        background-color: color-mix(in srgb, var(--modern-warning-icon) 14%, var(--modern-white));
    }

.alert-dismissible.alert-danger > .btn-close {
    border-left-color: color-mix(in srgb, var(--bs-danger-200) 24%, var(--modern-white));
}

    .alert-dismissible.alert-danger > .btn-close:hover,
    .alert-dismissible.alert-danger > .btn-close:focus-visible {
        background-color: color-mix(in srgb, var(--bs-danger-200) 14%, var(--modern-white));
    }

.alert-dismissible.alert-info > .btn-close {
    border-left-color: color-mix(in srgb, var(--bs-info-200) 24%, var(--modern-white));
}

    .alert-dismissible.alert-info > .btn-close:hover,
    .alert-dismissible.alert-info > .btn-close:focus-visible {
        background-color: color-mix(in srgb, var(--bs-info-200) 14%, var(--modern-white));
    }

.alert-dismissible.alert-success > .btn-close {
    border-left-color: color-mix(in srgb, var(--modern-success-btn-bg) 24%, var(--modern-white));
}

    .alert-dismissible.alert-success > .btn-close:hover,
    .alert-dismissible.alert-success > .btn-close:focus-visible {
        background-color: color-mix(in srgb, var(--modern-success-btn-bg) 14%, var(--modern-white));
    }

.alert pre {
    white-space: pre-wrap;
    word-break: break-word;
    margin-bottom: 0rem;
}

#alertInfoPanel > .alert,
.alertInfoPanel > .alert,
.tabContent > .alert,
.tabContent > div > .alert {
    padding: .75rem 1.5rem .55rem 1.5rem;
}

.alert-link {
    font-weight: normal;
    color: currentColor;
    text-decoration: underline;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
}

    .alert-link:hover {
        text-decoration: underline;
        text-decoration-thickness: 2px;
        color: currentColor;
        text-shadow: none;
    }

.alert-warning .alert-link {
    color: currentColor;
}

.alert-info .alert-link {
    color: var(--modern-info-text);
}

.alert-danger .alert-link,
.alert .link-danger {
    color: var(--modern-danger-text);
}

    .alert-danger .alert-link:hover,
    .alert .link-danger:hover,
    .alert .link-danger:focus {
        color: var(--modern-danger-btn-hover) !important;
    }

.btn-autosize {
    min-width: auto !important;
}

/***********************************************************************************************************************************************************/
/* Dropdown Overrides
/***********************************************************************************************************************************************************/

.dropdown-menu {
    padding: 6px 4px;
}

.dropdown-item {
    padding: .3rem 1.3rem;
    border-radius: 6px;
    color: var(--bs-gray);
    font-size: 1rem;
    white-space: nowrap;
    text-shadow: none !important;
}

    .dropdown-item a {
        color: var(--bs-gray);
        text-decoration: none !important;
        text-shadow: none !important;
    }

    .dropdown-item.active a:not(.pointer-events-none),
    .dropdown-item:active a:not(.pointer-events-none) {
        color: var(--bs-gray-900) !important;
    }

        .dropdown-item:hover a:not(.pointer-events-none), 
        .dropdown-item a:hover:not(.pointer-events-none) {
            color: var(--bs-gray-700);
        }


.dropdown-menu {
    cursor: pointer;
    margin-top: -2px;
}

.dropdown-header {
    text-transform: uppercase;
    cursor: default;
}

.dropdown-menu .dropdown-item:focus:not(:has(a.pointer-events-none)),
.dropdown-menu .dropdown-item:hover:not(:has(a.pointer-events-none)),
.dropdown-menu .dropdown-item.active,
.dropdown-menu .dropdown-item:active {
    background-color: var(--modern-accent-primary-12) !important;
}

    .dropdown-menu .dropdown-item:active i.fa {
        color: var(--bs-gray);
    }

.dropdown-menu .dropdown-item a i.fa:after {
    color: var(--bs-gray);
}

.dropdown-menu .dropdown-item a > .fa {
    visibility: hidden;
}

.dropdown-menu .dropdown-item a.selected > .fa {
    visibility: visible;
    color: var(--bs-green);
}

.dropdown-menu .dropdown-item:active a.selected > i.fa {
    color: var(--bs-green);
}

.dropdown-menu .dropdown-item:not(.dropdown-item) {
    margin-left: inherit;
    font-size: 1rem;
}

.dropdown-menu .dropdown-item i.fa, .dropdown-menu .dropdown-item i.fas {
    padding-right: 10px;
}

ul.dropdown-menu:not(.bs-select ul.dropdown-menu) {
    max-height: 450px;
    overflow-y: auto;
    overflow-x: hidden;
    border-radius: 10px;
    text-transform: none;
    min-width: 225px;
    border: 1px solid var(--theme-accent-primary);
}

    ul.dropdown-menu:not(.bs-select ul.dropdown-menu)::-webkit-scrollbar {
        width: 14px !important;
    }

    ul.dropdown-menu:not(.bs-select ul.dropdown-menu)::-webkit-scrollbar-track {
        background: var(--bs-white) !important;
        border-top-right-radius: 10px;
        border-bottom-right-radius: 10px;
    }

    ul.dropdown-menu:not(.bs-select ul.dropdown-menu)::-webkit-scrollbar-thumb {
        background: var(--modern-btn-primary-bg) !important;
        border: 3px solid var(--bs-white) !important;
        border-radius: 7px !important;
    }

    ul.dropdown-menu:not(.bs-select ul.dropdown-menu)::-webkit-scrollbar-corner {
        background: var(--bs-white) !important;
        border-bottom-right-radius: 10px;
    }

.dropdown-scrollable {
    max-height: 200px;
    overflow-y: auto;
}

/***********************************************************************************************************************************************************/
/* Override Info Color / Button Group Styles
/***********************************************************************************************************************************************************/

/* Unified hover and focus for btn-info group (main + caret always match) */
.btn-group > .btn-info,
.btn-group > .btn-info.dropdown-toggle {
    transition: background-color 0.15s ease, border-color 0.15s ease;
    cursor: pointer !important;
}

/* Hover or open = darker unified color */
.btn-group > .btn-group:hover > .btn-info,
.btn-group.show > .btn-info {
    background-color: var(--bs-btn-info-hover-bg) !important;
    border-color: var(--bs-btn-info-hover-bg) !important;
    color: var(--bs-white) !important;
}

/* Focused (but not hovered or open) = normal color */
.btn-group:focus-within:not(:hover):not(.show) > .btn-info:not(:disabled) {
    background-color: var(--bs-info) !important;
    border-color: var(--bs-info) !important;
    color: var(--bs-white) !important;
}

/* Keep caret animation */
.btn-info.dropdown-toggle::after {
    transition: border-top-color 0.15s ease, transform 0.15s ease;
}

.btn-info.dropdown-toggle:hover::after,
.btn-group.dropdown-open > .btn-info.dropdown-toggle::after {
    border-top-color: var(--bs-white) !important;
}

.btn-group:has(> .btn-info:hover) > .btn-info.dropdown-toggle::after,
.btn-info.dropdown-toggle:hover::after {
    transform: scale(1.2);
}

.btn-info.dropdown-toggle.show::after,
.btn-info.dropdown-toggle[aria-expanded="true"]::after,
.btn-group.dropdown-open > .btn-info.dropdown-toggle::after,
.btn-group.show > .btn-info.dropdown-toggle::after {
    transform: rotate(180deg) scale(1.2);
}

/* Prevent caret from flashing lighter or darkening before dropdown opens */
.btn-info.dropdown-toggle:active:not(.show),
.btn-info.dropdown-toggle:focus:active:not(.show),
.btn-group:active > .btn-info.dropdown-toggle:not(.show) {
    background-color: var(--bs-btn-info-hover-bg) !important;
    border-color: var(--bs-btn-info-hover-bg) !important;
    color: var(--bs-white) !important;
}

/* When a button-group's trailing button is hidden (via the collapse class on
   initial render, or via inline display:none after a jQuery show/hide toggle),
   round the right corners of the preceding button so it isn't squared off. */
.btn-group > .btn:has(+ .btn.collapse:not(.show)),
.btn-group > .btn:has(+ .btn[style*="display: none"]) {
    border-top-right-radius: var(--bs-btn-border-radius);
    border-bottom-right-radius: var(--bs-btn-border-radius);
}

/* Mirror the trailing-hidden fix for the leading edge: if the first child in a
   button group is hidden, the first visible button should regain left corners. */
.btn-group > :is(.collapse:not(.show), [style*="display: none"]) + .btn {
    margin-left: 0;
    border-top-left-radius: var(--bs-btn-border-radius);
    border-bottom-left-radius: var(--bs-btn-border-radius);
}

/* Keep caret consistent during click and after dropdown closes */
.btn-info.dropdown-toggle:active,
.btn-info.dropdown-toggle.show,
.btn-info.dropdown-toggle.show:active,
.btn-group.show > .btn-info.dropdown-toggle {
    background-color: var(--bs-btn-bg) !important;
    border-color: var(--bs-btn-border-color) !important;
}

.btn-info.show:hover,
.btn-info:active:hover,
.btn-info:focus:hover {
    background-color: var(--bs-btn-info-hover-bg) !important;
    border-color: var(--bs-btn-info-hover-bg) !important;
}

/* Apply subtle glow to the entire btn-info group */
.btn-group > .btn-group:has(> .btn-info):focus-within {
    box-shadow: 0 0 0 2px var(--modern-focus-info-20);
    border-radius: 0.375rem;
}

/* Fix lighter flash when pressing caret before dropdown opens */
.btn-group > .btn-info.dropdown-toggle:active,
.btn-group > .btn-info.dropdown-toggle:focus:active,
.btn-group > .btn-info.dropdown-toggle:not(.show):active {
    background-color: var(--bs-btn-info-hover-bg) !important;
    border-color: var(--bs-btn-info-hover-bg) !important;
    color: var(--bs-white) !important;
}

/* Prevent caret from showing its own focus border inside focused group */
.btn-group > .btn-group:has(> .btn-info):focus-within > .btn-info:focus,
.btn-group > .btn-group:has(> .btn-info):focus-within > .btn-info:focus-visible,
.btn-group > .btn-group:has(> .btn-info):focus-within > .btn-info:active {
    box-shadow: none !important;
    outline: none !important;
}


/***********************************************************************************************************************************************************/
/* Override Secondary Color / Button Group Styles
/***********************************************************************************************************************************************************/

/* Keep caret animation */
.btn-outline-secondary.dropdown-toggle::after {
    transition: border-top-color 0.15s ease, transform 0.15s ease;
}

/* Hover (closed): caret takes the button text-hover color so it stays
   visible against the white button, with a subtle scale. */
.btn-outline-secondary.dropdown-toggle:hover::after {
    border-top-color: var(--theme-accent-primary) !important;
    transform: scale(1.2);
}

/* Open: caret flips and turns white to read against the themed button. */
.btn-group.dropdown-open > .btn-outline-secondary.dropdown-toggle::after,
.btn-group.show > .btn-outline-secondary.dropdown-toggle::after {
    border-top-color: var(--bs-white) !important;
    transform: rotate(180deg) scale(1.2);
}

.btn-group.show > .btn-outline-secondary.dropdown-toggle,
.btn-group.dropdown-open > .btn-outline-secondary.dropdown-toggle,
.btn-outline-secondary.dropdown-toggle:active {
    background-color: var(--theme-accent-primary) !important;
    border-color: var(--theme-accent-primary) !important;
    color: var(--bs-white) !important;
}

.btn-group > .btn-outline-secondary.dropdown-toggle-split {
    flex: 0 0 2rem;
    width: 2rem;
    min-width: 2rem;
    padding-left: 0.375rem;
    padding-right: 0.375rem;
}

/***********************************************************************************************************************************************************/
/* Button Group Overrides */
/***********************************************************************************************************************************************************/

.btn-group button:not(.dropdown-menu) i.fa, .btn-group button:not(.dropdown-menu) i.fas {
    padding-right: 10px;
    transition: transform 0.15s ease;
}

.btn-group button:not(.dropdown-menu):hover i.fa, .btn-group button:not(.dropdown-menu):hover i.fas {
    transform: translateY(-1px);
}
/***********************************************************************************************************************************************************/
/* Input Group Overrides */
/***********************************************************************************************************************************************************/

.input-group .dropdown-toggle {
    transition: color 0.25s ease;
}

    .input-group .dropdown-toggle:has(i) i {
        margin-right: .5rem;
    }

    .input-group .dropdown-toggle::after {
        transition: transform 0.25s ease;
        transform-origin: center;
    }

    .input-group .dropdown-toggle:hover,
    .input-group .dropdown-toggle:focus,
    .input-group .dropdown-toggle[aria-expanded="true"],
    .input-group .dropdown-toggle[aria-expanded="true"] i {
        color: var(--modern-accent-focus);
    }

        .input-group .dropdown-toggle:hover::after {
            transform: scale(1.2);
        }

        .input-group .dropdown-toggle[aria-expanded="true"]::after {
            transform: rotate(180deg) scale(1.2);
        }

.input-group .fa,
.input-group-text .fa {
    color: var(--bs-gray);
    transition: transform 0.15s ease;
}

.input-group button:enabled:hover,
.input-group button:enabled .fa:hover {
    -webkit-text-stroke-width: 0;
    cursor: pointer;
}

.input-group button:disabled, .input-group button[disabled] {
    background-color: var(--bs-disabled-bg) !important;
}

/* allow dropdown wrappers to behave like input-group children */
.input-group > .dropdown {
    display: flex;
}

    /* make the toggle look like a normal input-group-text */
    .input-group > .dropdown > .dropdown-toggle {
        border-radius: 0;
    }

    /* restore right-side rounding on the final control */
    .input-group > .dropdown:last-child > .dropdown-toggle {
        border-top-right-radius: .375rem;
        border-bottom-right-radius: .375rem;
    }


/***********************************************************************************************************************************************************/
/* Controls Overrides (Focus / Focus Visible) */
/***********************************************************************************************************************************************************/

button.btn.btn-outline-secondary:focus,
button.btn.btn-outline-secondary:focus-visible,
button.btn.btn-outline-secondary:active,
button.btn.btn-secondary:focus,
button.btn.btn-secondary:focus-visible,
button.btn.btn-secondary:active,
a.btn.btn-secondary:focus,
a.btn.btn-secondary:focus-visible,
a.btn.btn-secondary:active {
    outline: 0;
    box-shadow: 0 0 0 2px var(--modern-focus-secondary-30) !important;
}

button.btn.btn-outline-info:focus,
button.btn.btn-outline-info:focus-visible,
button.btn.btn-outline-info:active,
button.btn.btn-info:focus,
button.btn.btn-info:focus-visible,
button.btn.btn-info:active,
a.btn.btn-info:focus,
a.btn.btn-info:focus-visible,
a.btn.btn-info:active {
    outline: 0;
    box-shadow: 0 0 0 2px var(--modern-focus-button-30) !important;
}

button.btn.btn-outline-success:focus,
button.btn.btn-outline-success:focus-visible,
button.btn.btn-outline-success:active,
button.btn.btn-success:focus,
button.btn.btn-success:focus-visible,
button.btn.btn-success:active,
a.btn.btn-success:focus,
a.btn.btn-success:focus-visible,
a.btn.btn-success:active {
    outline: 0;
    box-shadow: 0 0 0 2px var(--modern-focus-success-30) !important;
}

button.btn.btn-outline-danger:focus,
button.btn.btn-outline-danger:focus-visible,
button.btn.btn-outline-danger:active,
button.btn.btn-danger:focus,
button.btn.btn-danger:focus-visible,
button.btn.btn-danger:active,
a.btn.btn-danger:focus,
a.btn.btn-danger:focus-visible,
a.btn.btn-danger:active {
    outline: 0;
    box-shadow: 0 0 0 2px var(--modern-focus-danger-30) !important;
}

button.btn.btn-outline-warning:focus,
button.btn.btn-outline-warning:focus-visible,
button.btn.btn-outline-warning:active,
button.btn.btn-warning:focus,
button.btn.btn-warning:focus-visible,
button.btn.btn-warning:active,
a.btn.btn-warning:focus,
a.btn.btn-warning:focus-visible,
a.btn.btn-warning:active {
    outline: 0;
    box-shadow: 0 0 0 2px var(--modern-focus-warning-30) !important;
}

button.btn.btn-outline-primary:focus,
button.btn.btn-outline-primary:focus-visible,
button.btn.btn-outline-primary:active,
button.btn.btn-primary:focus,
button.btn.btn-primary:focus-visible,
button.btn.btn-primary:active,
a.btn.btn-primary:focus,
a.btn.btn-primary:focus-visible,
a.btn.btn-primary:active {
    outline: 0;
    box-shadow: 0 0 0 2px var(--modern-focus-primary-30) !important;
}

button.nav-link:focus-visible {
    box-shadow: 0 2px 0 0 var(--modern-accent-focus) !important;
}

button.nav-link:not(.active):focus-visible {
    outline: 0;
    text-decoration: underline;
    text-underline-offset: 5px;
    text-decoration-color: currentColor !important;
    text-decoration-thickness: 3px;
}

button.input-group-text:focus, 
button.input-group-text:focus-visible {
    outline: 0;
}

    button:not(:disabled).input-group-text:hover i,
    button.input-group-text:focus i,
    button.input-group-text:focus-visible i {
        color: var(--modern-accent-focus);
        -webkit-text-stroke-width: 0;
        transform: translateY(-1px);
    }

.fv-plugins-bootstrap5-row-invalid button.input-group-text:focus i,
.fv-plugins-bootstrap5-row-invalid button.input-group-text:focus-visible i {
    color: var(--bs-danger);
}

button.btn-info:focus i, button.btn-info:focus-visible i {
    color: var(--bs-white) !important;
    -webkit-text-stroke-width: 1px;
}

.btn.btn-link:hover {
    text-decoration: none;
    color: var(--modern-accent-focus);
}

a.btn.btn-link.btn-nofocus:focus, a.btn.btn-link.btn-nofocus:focus-visible {
    text-decoration: none;
    color: var(--modern-accent-focus);
}

/***********************************************************************************************************************************************************/
/* Form Control Overrides */
/***********************************************************************************************************************************************************/

.form-control:not(:disabled):not([disabled]):not([readonly]):not(.is-invalid),
.form-select:not(:disabled):not([disabled]):not(.is-invalid) {
    border-color: var(--form-control-border-color);
}

.form-control:disabled, .form-control[readonly], .form-select:disabled {
    border-color: var(--modern-control-disabled-border);
    border-width: 1px;
    background-color: var(--bs-disabled-bg) !important;
    color: var(--modern-control-disabled-text);
    box-shadow: 0 .0625rem .16rem var(--modern-shadow-black-rgb-075);
    opacity: 1;
}

.form-control.is-invalid, .form-select.is-invalid, .was-validated .form-control:invalid, .was-validated .form-select:invalid {
    border-color: var(--bs-form-invalid-border-color);
}

.form-control:focus:not(:disabled):not([disabled]):not([readonly]),
.form-select:focus:not(:disabled):not([disabled]) {
    border-color: color-mix(in srgb, var(--modern-accent-focus) 78%, white) !important;
    box-shadow: var(--bs-focus-shadow-accent) !important;
}

.form-control.is-invalid:focus:not(:disabled):not([disabled]):not([readonly]),
.form-select.is-invalid:focus:not(:disabled):not([disabled]),
.was-validated .form-control:invalid:focus:not(:disabled):not([disabled]):not([readonly]),
.was-validated .form-select:invalid:focus:not(:disabled):not([disabled]) {
    border-color: var(--bs-form-invalid-border-color) !important;
    box-shadow: var(--bs-focus-shadow-danger) !important;
}

.form-control:disabled:not(.is-invalid):focus, .form-control[readonly]:not(.is-invalid):focus {
    border-color: var(--modern-control-disabled-border) !important;
    box-shadow: none !important;
}

.form-label,
.col-form-label {
    color: var(--form-label-color);
    font-weight: var(--form-label-font-weight);
}

/***********************************************************************************************************************************************************/
/* Modal Overrides */
/***********************************************************************************************************************************************************/

.modal-footer > button, .modal-footer > div > button {
    min-width: 85px;
}

/* Custom scrollbar styling for bootstrap native modals */
.modal .modal-body::-webkit-scrollbar {
    width: 14px;
}

.modal .modal-body::-webkit-scrollbar-track {
    background: transparent;
}

.modal .modal-body::-webkit-scrollbar-thumb {
    background-color: var(--modern-accent-interactive);
    background-clip: padding-box;
    border: 2px solid transparent;
    border-left-width: 4px;
    border-right-width: 3px;
    border-radius: 999px;
}

/* Match the right summary panel's hover/selected thumb tone (soft muted
   blue-gray) instead of a saturated blue. Cover :active so dragging the
   thumb doesn't fall back to the browser's darker default. */
.modal .modal-body::-webkit-scrollbar-thumb:hover,
.modal .modal-body::-webkit-scrollbar-thumb:active {
    background: var(--modern-shadow-muted-blue-25);
}

.modal-footer {
    border-top: 1px solid var(--modern-border-modal);
}

.modal-header.bg-info {
    background-color: var(--modern-header-bg) !important;
    color: var(--modern-text) !important;
    border-bottom: 1px solid var(--modern-surface-disabled);
}

    .modal-header.bg-info label {
        color: var(--modern-dialog-secondary-text);
        font-weight: 600;
        font-size: 0.95rem;
        letter-spacing: 0.5px;
    }

.modal-header.bg-info.text-white {
    color: var(--modern-text) !important;
}

/**
 * Modal lookup window / search-control Bootstrap component styling.
 * Applies when .search-control inputs/selects are used within lookup modals
 * (.modalWindow .modal-body). These are Bootstrap component overrides, not app chrome.
 */

/* Lookup/search toggle icon and caret colors: muted at rest, modern accent on
   hover/focus/open. Cover both direct .dropdown-toggle buttons and wrapped
   .dropdown > .dropdown-toggle structures. */
.modalWindow .modal-body .input-group:has(> input.search-control) > .input-group-text > i:not(.input-control-icon-focus),
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle > i,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle > .caret,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle > i,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle > .caret,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle::after,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle::after {
    color: var(--modern-text-muted) !important;
    border-top-color: var(--modern-text-muted) !important;
    transition: color 0.15s ease, border-color 0.15s ease, transform 0.15s ease;
    transform-origin: center center;
}

.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle:hover > i,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle:focus-visible > i,
.modalWindow .modal-body .input-group.dropdown-open:has(> input.search-control) > .dropdown > .dropdown-toggle[aria-expanded="true"] > i,
.modalWindow .modal-body .input-group.dropdown-open:has(> input.search-control) > .dropdown-toggle > i,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle:hover > .caret,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle:focus-visible > .caret,
.modalWindow .modal-body .input-group.dropdown-open:has(> input.search-control) > .dropdown > .dropdown-toggle[aria-expanded="true"] > .caret,
.modalWindow .modal-body .input-group.dropdown-open:has(> input.search-control) > .dropdown-toggle > .caret,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle:hover > i,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle:focus-visible > i,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle:hover > .caret,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle:focus-visible > .caret,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle:hover::after,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle:focus-visible::after,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle.show::after,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle:hover::after,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle:focus-visible::after,
.modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle.show::after,
.modalWindow .modal-body .input-group.dropdown-open:has(> input.search-control) > .dropdown > .dropdown-toggle[aria-expanded="true"]::after {
    color: var(--modern-accent-emphasis) !important;
    border-top-color: var(--modern-accent-emphasis) !important;
    transform: scale(1.1);
}

/* Modal lookup windows (e.g. Serial Number Lookup) use a search-control input/select
   inside an input-group with dropdown wrappers. Mirror the page-search shell:
   single outer border, no internal separators, and focused outer accent. */
.modalWindow .modal-body .input-group:has(> input.search-control),
.modalWindow .modal-body .input-group:has(> select.search-control) {
    border: 1px solid var(--modern-border);
    border-radius: var(--bs-border-radius);
    overflow: visible;
    box-sizing: border-box;
    width: 100%;
}

    .modalWindow .modal-body .input-group:has(> input.search-control) > :not(:first-child),
    .modalWindow .modal-body .input-group:has(> select.search-control) > :not(:first-child) {
        margin-left: 0 !important;
    }

    .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown,
    .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown {
        position: relative;
        display: flex;
        align-items: stretch;
    }

        .modalWindow .modal-body .input-group:has(> input.search-control) > .input-group-text,
        .modalWindow .modal-body .input-group:has(> input.search-control) > input.search-control,
        .modalWindow .modal-body .input-group:has(> select.search-control) > .input-group-text,
        .modalWindow .modal-body .input-group:has(> select.search-control) > select.search-control,
        .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle,
        .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown-toggle,
        .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle,
        .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .dropdown-toggle,
        .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .input-group-text,
        .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .input-group-text {
            border-width: 0 !important;
            box-shadow: none !important;
        }

        .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle,
        .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown-toggle,
        .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle,
        .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .dropdown-toggle {
            display: flex;
            align-items: center;
            line-height: 1;
        }

            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle:hover::after,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown-toggle:hover::after,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle:hover::after,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .dropdown-toggle:hover::after {
                transform: scale(1) !important;
            }

            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle[aria-expanded="true"]::after,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle.show::after,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown-toggle[aria-expanded="true"]::after,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown-toggle.show::after,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle[aria-expanded="true"]::after,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle.show::after,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .dropdown-toggle[aria-expanded="true"]::after,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .dropdown-toggle.show::after {
                transform: rotate(180deg) scale(1) !important;
            }

            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle > .caret,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown-toggle > .caret,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle > .caret,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .dropdown-toggle > .caret {
                line-height: 1;
                vertical-align: middle;
            }

            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle:focus,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle:focus-visible,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle.show,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-toggle:active,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown-toggle:focus,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown-toggle:focus-visible,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown-toggle.show,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown-toggle:active,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle:focus,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle:focus-visible,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle.show,
            .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-toggle:active,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .dropdown-toggle:focus,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .dropdown-toggle:focus-visible,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .dropdown-toggle.show,
            .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .dropdown-toggle:active {
                border-width: 0 !important;
                box-shadow: none !important;
            }

        .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown-menu,
        .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown-menu,
        .modalWindow .modal-body .input-group:has(> input.search-control) > .dropdown > .dropdown-menu,
        .modalWindow .modal-body .input-group:has(> select.search-control) > .dropdown > .dropdown-menu {
            position: absolute;
            top: 100%;
        }

    .modalWindow .modal-body .input-group:has(> input.search-control) > input.search-control,
    .modalWindow .modal-body .input-group:has(> select.search-control) > select.search-control {
        border-right-color: transparent !important;
    }

    .modalWindow .modal-body .input-group:has(> input.search-control):focus-within,
    .modalWindow .modal-body .input-group:has(> select.search-control):focus-within {
        border-color: color-mix(in srgb, var(--modern-accent-focus) 78%, white);
    }

/* Serial/lookup modal search row uses a Bootstrap `.row` directly around an
   input-group (without a `.col-*` child), so default row gutters/negative
   margins make the shell extend wider than the AG-grid filter beneath it. */
.modalWindow .modal-body .row:has(> .input-group > input.search-control),
.modalWindow .modal-body .row:has(> .input-group > select.search-control) {
    --bs-gutter-x: 0;
    margin-left: 0 !important;
    margin-right: 0 !important;
}

    .modalWindow .modal-body .row:has(> .input-group > input.search-control) > .input-group,
    .modalWindow .modal-body .row:has(> .input-group > select.search-control) > .input-group {
        width: 100%;
    }

/* Lookup modal chrome alignment: keep header/title/close on the same horizontal
    rails as body controls. Bootstrap gives .btn-close a negative right margin in
    headers, which makes the X sit farther right than fields below. */
.modalWindow .modal-header,
.modalWindow .modal-body {
    padding-left: 1rem;
    padding-right: 1rem;
}

    .modalWindow .modal-header .btn-close {
        margin: 0 0 0 auto;
    }

/* Generic modal component styling */
.modal-content {
    border: none;
    border-radius: 10px;
    box-shadow: 0 8px 30px var(--modern-shadow-black-15), 0 2px 8px var(--modern-shadow-black-08);
    overflow: hidden;
}

.modal-header .btn-close:hover {
    background-color: var(--modern-shadow-black-08) !important;
    transform: scale(1.15);
    opacity: 0.7 !important;
}

/* Soften modal backdrop opacity from Bootstrap default */
body:has(.modal.show) > .modal-backdrop {
    opacity: 0.35 !important;
}

/* Modal footer button styling */
.modal-footer .btn-info,
.modal-footer .btn-secondary {
    font-size: 0.9rem;
    font-weight: 500;
    padding: 0.4rem 1.5rem;
    border-radius: 0.3rem;
    transition: all 0.15s ease;
}

.modal-footer .btn-secondary {
    background-color: var(--modern-white) !important;
    border: 1px solid var(--modern-border) !important;
    color: var(--modern-text) !important;
}

.modal-footer .btn-info + .btn-secondary {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    margin-left: -1px;
}

.modal-footer .btn-secondary:hover {
    border-color: var(--theme-accent-primary) !important;
    color: var(--theme-accent-primary) !important;
    background-color: var(--modern-white) !important;
}

.modal-footer .btn-info:focus,
.modal-footer .btn-info:focus-visible,
.modal-footer .btn-secondary:focus,
.modal-footer .btn-secondary:focus-visible {
    box-shadow: none !important;
    outline: none !important;
}

/* Modal header button styling */
.modal-header .btn-close-white {
    filter: none;
}

.modal-header button.btn.btn-sm.btn-light,
.modal-header button.btn.btn-sm.btn-light i {
    color: var(--modern-dialog-secondary-text) !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    filter: none !important;
    transition: color 0.15s ease, opacity 0.15s ease;
}

    .modal-header button.btn.btn-sm.btn-light.btn-reset i {
        color: var(--modern-border-neutral) !important;
        opacity: 1 !important;
    }

        .modal-header button.btn.btn-sm.btn-light.btn-reset i.dirty {
            color: var(--modern-text) !important;
            opacity: 1 !important;
            -webkit-text-stroke-width: 0;
        }

    .modal-header button.btn.btn-sm.btn-light:hover {
        background-color: var(--modern-shadow-black-08) !important;
        transform: scale(1.15);
    }

    .modal-header button.btn.btn-sm.btn-light.btn-resize:hover i {
        color: var(--modern-text-hover) !important;
    }

    .modal-header button.btn.btn-sm.btn-light.btn-reset:not(:has(i.dirty)):hover {
        background-color: transparent !important;
        transform: none;
    }

        .modal-header button.btn.btn-sm.btn-light.btn-reset:not(:has(i.dirty)):hover i {
            color: var(--modern-border-neutral) !important;
        }

    .modal-header button.btn.btn-sm.btn-light.btn-reset:hover i.dirty {
        color: var(--modern-text-hover) !important;
    }

.modal-header .btn-close {
    filter: none !important;
    opacity: 0.7 !important;
    transition: transform 0.15s ease, background-color 0.15s ease, opacity 0.15s ease;
}

.modal-header button.btn.btn-sm.btn-light:disabled,
.modal-header button.btn.btn-sm.btn-light:disabled i,
.modal-header button.btn.btn-sm.btn-light[disabled],
.modal-header button.btn.btn-sm.btn-light[disabled] i {
    color: var(--modern-text-disabled) !important;
    opacity: 0.6 !important;
    cursor: default;
}

.modal-header .btn-light:focus,
.modal-header .btn-light:focus-visible {
    box-shadow: none !important;
    outline: none !important;
}

/* Modal footer .btn-info theming - primary action button in modal contexts */
.modal-footer .btn-info {
    background-color: var(--modern-btn-primary-bg) !important;
    border-color: var(--modern-btn-primary-bg) !important;
    color: var(--modern-white) !important;
}

    .modal-footer .btn-info:hover {
        background-color: var(--modern-btn-primary-hover) !important;
        border-color: var(--modern-btn-primary-hover) !important;
    }

    .modal-footer .btn-info:disabled,
    .modal-footer .btn-info[disabled] {
        background-color: var(--modern-disabled-primary-bg) !important;
        border-color: var(--modern-disabled-primary-bg) !important;
        color: var(--modern-disabled-primary-text) !important;
        opacity: 1 !important;
        box-shadow: none !important;
        cursor: not-allowed;
    }

    /* Keep modern color on focus (overrides Bootstrap's
       .btn-group:focus-within:not(:hover):not(.show) > .btn-info) */
    .modal-footer .btn-group:focus-within:not(:hover):not(.show) > .btn-info,
    .modal-footer .btn-info:focus,
    .modal-footer .btn-info:focus-visible {
        background-color: var(--modern-btn-primary-bg) !important;
        border-color: var(--modern-btn-primary-bg) !important;
        color: var(--modern-white) !important;
    }

        .modal-footer .btn-group:focus-within:not(:hover):not(.show) > .btn-info:hover {
            background-color: var(--modern-btn-primary-hover) !important;
            border-color: var(--modern-btn-primary-hover) !important;
        }

/* Bootstrap tabs component theming */
.nav-tabs {
    border-bottom: none;
}

    .nav-tabs .nav-link {
        color: var(--modern-text-muted);
        font-weight: 500;
        font-size: 0.85rem;
        text-transform: none;
        border: 1px solid transparent !important;
        border-bottom: 0 !important;
        padding: 0.6rem 1rem;
        transition: color 0.2s ease, border-color 0.2s ease, background-color 0.2s ease;
        border-radius: 6px 6px 0 0;
    }

        .nav-tabs .nav-link:hover {
            color: var(--modern-accent-interactive) !important;
            border-bottom-color: transparent !important;
            background-color: color-mix(in srgb, var(--modern-accent-interactive) 8%, transparent);
        }

        .nav-tabs .nav-link:not(.active):hover:not(.ht-validation-alert) {
            color: var(--modern-accent-interactive) !important;
        }

        .nav-tabs .nav-link.active {
            color: var(--modern-accent-interactive) !important;
            font-weight: 500;
            border-top-color: var(--modern-border-soft) !important;
            border-left-color: var(--modern-border-soft) !important;
            border-right-color: var(--modern-border-soft) !important;
            border-bottom: 0 !important;
            background-color: color-mix(in srgb, var(--modern-accent-interactive) 8%, transparent);
        }

        .nav-tabs .nav-link::after {
            content: '';
            position: absolute;
            left: 50%;
            bottom: 0;
            width: 0;
            height: 3px;
            border-radius: 2px;
            background-color: var(--modern-accent-interactive);
            transform: translateX(-50%);
            transition: width 0.25s ease, height 0.2s ease, background-color 0.2s ease;
        }

        .nav-tabs .nav-link:hover::after {
            width: 100%;
        }

        .nav-tabs .nav-link.active::after {
            width: 100%;
            height: 2px;
            background-color: var(--modern-accent-interactive);
        }

/**
/* Bootstrap Switch */
/***********************************************************************************************************************************************************/

.bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-danger {
    background-color: var(--modern-text-muted) !important;
    color: var(--modern-white) !important;
}

.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-danger {
    background-color: var(--switch-no-active-bg) !important;
    color: var(--switch-no-active-text) !important;
}

.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-success, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-success {
    background-color: var(--modern-btn-primary-bg) !important;
    color: var(--modern-white) !important;
}

.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-primary, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-primary {
    background-color: var(--theme-nav-primary) !important;
    color: var(--modern-white) !important;
}

.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-info, .bootstrap-switch .bootstrap-switch-handle-on.bootstrap-switch-info {
    background-color: var(--modern-text-muted) !important;
    color: var(--modern-white) !important;
}

.bootstrap-switch .bootstrap-switch-handle-off.bootstrap-switch-default {
    background-color: var(--bs-disabled-bg) !important;
    color: var(--modern-control-disabled-text) !important;
}

.bootstrap-switch.bootstrap-switch-wrapper.bootstrap-switch-off:not(.bootstrap-switch-disabled):not(.bootstrap-switch-readonly) {
    background-color: var(--switch-no-active-bg) !important;
    border-color: var(--switch-no-active-border) !important;
}

.bootstrap-switch.bootstrap-switch-wrapper.bootstrap-switch-on:not(.bootstrap-switch-disabled):not(.bootstrap-switch-readonly) {
    background-color: var(--modern-btn-primary-bg) !important;
    border-color: var(--modern-btn-primary-bg) !important;
}

.bootstrap-switch.bootstrap-switch-off:not(.bootstrap-switch-disabled):not(.bootstrap-switch-readonly) .bootstrap-switch-handle-off {
    color: var(--switch-no-active-text) !important;
}

.bootstrap-switch.bootstrap-switch-wrapper.bootstrap-switch-off:not(.bootstrap-switch-disabled):not(.bootstrap-switch-readonly) .bootstrap-switch-label {
    border-top-right-radius: 0 !important;
    border-bottom-right-radius: 0 !important;
}

.bootstrap-switch.bootstrap-switch-wrapper {
    margin-top: 0;
}

.bootstrap-switch.bootstrap-switch-wrapper:not(:has(.bootstrap-switch-container[style])) {
    opacity: 0.25;
}

.bootstrap-switch.bootstrap-switch-wrapper:not([style]) .bootstrap-switch-container {
    visibility: hidden;
}

.bootstrap-switch,
.bootstrap-switch.bootstrap-switch-wrapper {
    border: 1px solid var(--modern-border);
    border-radius: var(--bs-border-radius) !important;
    min-height: 39px;
    overflow: hidden;
}

    .bootstrap-switch:not(.bootstrap-switch-mini):not(.bootstrap-switch-small):not(.bootstrap-switch-large) .bootstrap-switch-handle-on,
    .bootstrap-switch:not(.bootstrap-switch-mini):not(.bootstrap-switch-small):not(.bootstrap-switch-large) .bootstrap-switch-handle-off,
    .bootstrap-switch:not(.bootstrap-switch-mini):not(.bootstrap-switch-small):not(.bootstrap-switch-large) .bootstrap-switch-label {
        padding-top: 8px;
        padding-bottom: 8px;
    }

    .bootstrap-switch .bootstrap-switch-handle-on,
    .bootstrap-switch .bootstrap-switch-handle-off {
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 0.02em;
    }

    .bootstrap-switch.switch-no-warning-adorner.bootstrap-switch-off {
        position: relative;
    }

    .bootstrap-switch.switch-no-warning-adorner.bootstrap-switch-off::after {
        content: "\f071"; /* Font Awesome triangle-exclamation */
        font-family: "Font Awesome 6 Free";
        font-size: 9px;
        font-weight: 900;
        line-height: 1;
        color: var(--modern-white);
        position: absolute;
        top: 1px;
        right: 1px;
        pointer-events: none;
        z-index: 3;
        opacity: 0;
        transform: translate(2px, -2px) scale(0.92);
        animation: switch-no-adorner-reveal 120ms ease-out 180ms forwards;
    }

    .bootstrap-switch.switch-no-warning-adorner.bootstrap-switch-off::before {
        content: "";
        position: absolute;
        top: 0;
        right: 0;
        width: 0;
        height: 0;
        border-top: 22px solid color-mix(in srgb, var(--switch-no-active-border) 86%, var(--modern-warning-btn-hover));
        border-left: 22px solid transparent;
        pointer-events: none;
        z-index: 2;
        opacity: 0;
        transform: translate(2px, -2px) scale(0.92);
        animation: switch-no-adorner-reveal 120ms ease-out 180ms forwards;
    }

    .bootstrap-switch.switch-no-warning-adorner.bootstrap-switch-off.bootstrap-switch-disabled::after,
    .bootstrap-switch.switch-no-warning-adorner.bootstrap-switch-off.bootstrap-switch-readonly::after {
        color: color-mix(in srgb, var(--switch-no-disabled-bg) 90%, var(--modern-white));
    }

    .bootstrap-switch.switch-no-warning-adorner.bootstrap-switch-off.bootstrap-switch-disabled::before,
    .bootstrap-switch.switch-no-warning-adorner.bootstrap-switch-off.bootstrap-switch-readonly::before {
        border-top-color: var(--switch-no-disabled-border);
    }

@keyframes switch-no-adorner-reveal {
    from {
        opacity: 0;
        transform: translate(2px, -2px) scale(0.92);
    }

    to {
        opacity: 1;
        transform: translate(0, 0) scale(1);
    }
}

@media (prefers-reduced-motion: reduce) {
    .bootstrap-switch.switch-no-warning-adorner.bootstrap-switch-off::before,
    .bootstrap-switch.switch-no-warning-adorner.bootstrap-switch-off::after {
        animation: none;
        opacity: 1;
        transform: none;
    }
}

    .bootstrap-switch.bootstrap-switch-disabled,
    .bootstrap-switch.bootstrap-switch-readonly {
        background-color: var(--bs-disabled-bg) !important;
        border-color: var(--modern-control-disabled-border) !important;
        cursor: not-allowed;
    }

        .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-on,
        .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-handle-off,
        .bootstrap-switch.bootstrap-switch-disabled .bootstrap-switch-label,
        .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-on,
        .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-handle-off,
        .bootstrap-switch.bootstrap-switch-readonly .bootstrap-switch-label {
            background-color: var(--bs-disabled-bg) !important;
            color: var(--modern-control-disabled-text) !important;
            cursor: not-allowed;
            opacity: 1 !important;
            filter: none !important;
        }

    .bootstrap-switch.bootstrap-switch-disabled.bootstrap-switch-wrapper .bootstrap-switch-handle-on,
    .bootstrap-switch.bootstrap-switch-disabled.bootstrap-switch-wrapper .bootstrap-switch-handle-off,
    .bootstrap-switch.bootstrap-switch-disabled.bootstrap-switch-wrapper .bootstrap-switch-label,
    .bootstrap-switch.bootstrap-switch-readonly.bootstrap-switch-wrapper .bootstrap-switch-handle-on,
    .bootstrap-switch.bootstrap-switch-readonly.bootstrap-switch-wrapper .bootstrap-switch-handle-off,
    .bootstrap-switch.bootstrap-switch-readonly.bootstrap-switch-wrapper .bootstrap-switch-label {
        color: var(--modern-control-disabled-text) !important;
        font-weight: 700;
        text-transform: uppercase;
        letter-spacing: 0.02em;
        opacity: 1 !important;
        filter: none !important;
    }

    .bootstrap-switch.bootstrap-switch-disabled.bootstrap-switch-on .bootstrap-switch-handle-on,
    .bootstrap-switch.bootstrap-switch-readonly.bootstrap-switch-on .bootstrap-switch-handle-on {
        background-color: var(--switch-yes-disabled-bg) !important;
        color: var(--switch-yes-disabled-text) !important;
    }

    .bootstrap-switch.bootstrap-switch-disabled.bootstrap-switch-wrapper.bootstrap-switch-on,
    .bootstrap-switch.bootstrap-switch-readonly.bootstrap-switch-wrapper.bootstrap-switch-on {
        background-color: var(--switch-yes-disabled-bg) !important;
        border-color: var(--switch-yes-disabled-border) !important;
    }

    .bootstrap-switch.bootstrap-switch-disabled.bootstrap-switch-wrapper.bootstrap-switch-off,
    .bootstrap-switch.bootstrap-switch-readonly.bootstrap-switch-wrapper.bootstrap-switch-off {
        background-color: var(--switch-no-disabled-bg) !important;
        border-color: var(--switch-no-disabled-border) !important;
    }

        .bootstrap-switch.bootstrap-switch-disabled.bootstrap-switch-off .bootstrap-switch-handle-off,
        .bootstrap-switch.bootstrap-switch-readonly.bootstrap-switch-off .bootstrap-switch-handle-off {
            background-color: var(--switch-no-disabled-bg) !important;
            color: var(--switch-no-disabled-text) !important;
        }

    .bootstrap-switch.bootstrap-switch-wrapper .bootstrap-switch-handle-on,
    .bootstrap-switch.bootstrap-switch-wrapper.bootstrap-switch-inverse.bootstrap-switch-off .bootstrap-switch-label,
    .bootstrap-switch.bootstrap-switch-wrapper.bootstrap-switch-on .bootstrap-switch-label {
        border-top-left-radius: 0 !important;
        border-bottom-left-radius: 0 !important;
    }

    .bootstrap-switch.bootstrap-switch-wrapper .bootstrap-switch-handle-off,
    .bootstrap-switch.bootstrap-switch-wrapper.bootstrap-switch-inverse.bootstrap-switch-on .bootstrap-switch-label,
    .bootstrap-switch.bootstrap-switch-wrapper.bootstrap-switch-off .bootstrap-switch-label {
        border-top-right-radius: 0 !important;
        border-bottom-right-radius: 0 !important;
    }

    .bootstrap-switch.bootstrap-switch-focused:not(.bootstrap-switch-disabled):not(.bootstrap-switch-readonly) {
        border: 1px solid var(--bs-gray-400) !important;
        -webkit-box-shadow: none;
        box-shadow: none;
    }

    .bootstrap-switch.bootstrap-switch-wrapper:focus:not(.bootstrap-switch-disabled):not(.bootstrap-switch-readonly), .bootstrap-switch.bootstrap-switch-wrapper:focus-visible:not(.bootstrap-switch-disabled):not(.bootstrap-switch-readonly) {
        outline: 0 !important;
        box-shadow: var(--bs-focus-shadow-accent) !important;
        border-color: var(--bs-primary-border-subtle);
    }

    .bootstrap-switch.bootstrap-switch-disabled.bootstrap-switch-focused,
    .bootstrap-switch.bootstrap-switch-readonly.bootstrap-switch-focused,
    .bootstrap-switch.bootstrap-switch-disabled.bootstrap-switch-wrapper:focus,
    .bootstrap-switch.bootstrap-switch-disabled.bootstrap-switch-wrapper:focus-visible,
    .bootstrap-switch.bootstrap-switch-readonly.bootstrap-switch-wrapper:focus,
    .bootstrap-switch.bootstrap-switch-readonly.bootstrap-switch-wrapper:focus-visible {
        outline: 0 !important;
        border-color: var(--modern-control-disabled-border) !important;
        box-shadow: none !important;
    }

    .bootstrap-switch.bootstrap-switch-wrapper:not(:focus) {
        box-shadow: none !important;
    }

/***********************************************************************************************************************************************************/
/* Horizontal Tab Styles */
/***********************************************************************************************************************************************************/

.nav-tabs {
    margin-top: 1px;
    gap: 0.25rem;
    font-size: 15px;
}

    .nav-tabs .nav-item {
        font-size: inherit;
    }

.nav-link {
    color: var(--bs-gray-800);
    text-transform: uppercase;
    padding: .7rem 1.15rem .55rem 1.15rem;
    font-size: 1rem;
    font-weight: 500;
    letter-spacing: 1px;
    position: relative;
    border: 1px solid transparent !important;
    border-bottom: 0 !important;
    border-radius: 6px 6px 0 0 !important;
    transition: background-color .25s ease, color .25s ease;
}

    .nav-tabs .nav-link {
        display: inline-flex;
        align-items: baseline;
        background-color: var(--bs-body-bg);
        color: color-mix(in srgb, var(--theme-nav-primary) 72%, var(--modern-text)) !important;
        font-size: 15px !important;
        letter-spacing: 0.75px;
        box-shadow: none;
    }

    .tabContent.htab-discovery-active .nav-tabs:has(.nav-item:nth-child(2)) .nav-link:not(.active):not(.disabled) {
        animation: htab-discovery-reveal 1.35s ease-out 0.15s 1;
    }

@keyframes htab-discovery-reveal {
    0%, 100% {
        background-color: var(--bs-body-bg);
        box-shadow: none;
    }

    28%, 76% {
        background-color: color-mix(in srgb, var(--modern-row-active) 72%, var(--modern-warning-bg));
        box-shadow: 0 0 0 1px color-mix(in srgb, var(--theme-nav-secondary) 28%, transparent), 0 3px 10px var(--modern-shadow-black-08);
    }
}

@media (prefers-reduced-motion: reduce) {
    .nav-tabs .nav-link {
        animation: none !important;
    }
}

    .nav-link i {
        display: inline-block;
        line-height: 1;
        vertical-align: baseline;
    }

    .nav-link:not(.active):hover i {
        animation: nudge 0.3s ease-in-out 1;
    }

    .nav-link::after {
        content: '';
        position: absolute;
        left: 0;
        bottom: -5px;
        width: 0;
        height: 3px;
        border-radius: 2px;
        background-color: currentColor;
        transition: width .25s ease;
    }

    .nav-link:hover::after {
        width: 100%;
    }

    .nav-link.active {
        border-top-color: var(--modern-border-soft) !important;
        border-left-color: var(--modern-border-soft) !important;
        border-right-color: var(--modern-border-soft) !important;
        background-color: var(--modern-row-active);
        color: var(--theme-nav-primary) !important;
        font-weight: 600;
    }

        .nav-link.active::after {
            width: 100% !important;
            height: 3px !important;
        }

    .nav-link.ht-validation-alert.warning::after {
        background-color: var(--bs-warning);
    }

    .nav-link.ht-validation-alert.error::after {
        background-color: var(--bs-danger);
    }

    .nav-link:not(.active):hover:not(.ht-validation-alert) {
        color: var(--modern-accent-focus) !important;
    }

    .nav-link.ht-validation-alert.warning {
        color: var(--bs-warning) !important;
    }

    .nav-link.ht-validation-alert.error {
        color: var(--bs-danger) !important;
    }

    .nav-link.disabled {
        opacity: 0.5;
    }

/***********************************************************************************************************************************************************/
/* Tooltip Overrides */
/***********************************************************************************************************************************************************/

.tooltip {
    --bs-tooltip-bg: var(--modern-tooltip-legacy-blue);
    opacity: 1;
    transition: opacity 150ms ease-in;
}

.tooltip-inner {
    background-color: var(--modern-tooltip-bg);
    color: var(--modern-tooltip-color);
    font-size: 12px;
    font-weight: 400 !important;
    letter-spacing: 0.2px;
    padding: 6px 9px;
    border-radius: 6px;
    box-shadow: var(--modern-tooltip-shadow);
    max-width: 500px;
    text-align: center;
}

    .tooltip-inner.tooltip-html {
        max-width: none;
    }

    /* Base strong/b weight restoration for tooltip emphasis */
    .tooltip .tooltip-inner :is(strong, b) {
        font-weight: 700 !important;
    }

.tooltip-arrow::before {
    border-color: transparent;
    width: 8px;
    height: 8px;
}

/* Generic tooltip arrow positioning for all placement variants */
.tooltip.bs-tooltip-top .tooltip-arrow::before,
.tooltip.bs-tooltip-auto[data-popper-placement^="top"] .tooltip-arrow::before {
    border-top-color: var(--modern-tooltip-bg);
}

.tooltip.bs-tooltip-bottom .tooltip-arrow::before,
.tooltip.bs-tooltip-auto[data-popper-placement^="bottom"] .tooltip-arrow::before {
    border-bottom-color: var(--modern-tooltip-bg);
}

.tooltip.bs-tooltip-start .tooltip-arrow::before,
.tooltip.bs-tooltip-auto[data-popper-placement^="left"] .tooltip-arrow::before {
    border-left-color: var(--modern-tooltip-bg);
}

.tooltip.bs-tooltip-end .tooltip-arrow::before,
.tooltip.bs-tooltip-auto[data-popper-placement^="right"] .tooltip-arrow::before {
    border-right-color: var(--modern-tooltip-bg);
}

    .tooltip.show {
        opacity: 1;
    }

/**
/* Progress / Wait Overrides */
/***********************************************************************************************************************************************************/

.progress-bar {
    position: relative;
    overflow: hidden;
    border-radius: 6px;
}

    .progress-bar::before {
        content: "";
        position: absolute;
        top: 0;
        left: -50%;
        width: 50%;
        height: 100%;
        background: linear-gradient(to right, transparent, var(--modern-white-30), transparent);
        animation: shimmer 1.2s infinite;
    }

.spinner-border {
    border-width: 0.15em;
    animation: spinner-border 1.15s linear infinite;
}

.spinner-grow {
    animation: spinner-grow 1.5s linear infinite;
}

/***********************************************************************************************************************************************************/
/* Media Queries */
/***********************************************************************************************************************************************************/

/* On mobile, grid action button groups can exceed the viewport width because .btn-group
   is display:inline-flex (intrinsically sized). Keep the original grouped-row behavior by
   making each group full width, then let each button within that group share equally. */
@media (max-width: 767px) {
    .grid-action-row > .btn-group {
        display: flex;
        flex: 1 1 100%;
        max-width: 100%;
    }

        .grid-action-row > .btn-group > .btn-group {
            display: flex;
            flex: 1 1 0;
            min-width: 0;
        }

        .grid-action-row > .btn-group > .btn {
            flex: 1 1 0;
            min-width: 0;
        }

        .grid-action-row > .btn-group > .btn-group > .btn:not(.dropdown-toggle) {
            flex: 1 1 0;
            min-width: 0;
        }
}

@media (min-width: 576px) {
    .modal-xxl {
        max-width: 800px;
    }
}

@media (min-width: 992px) {
    .modal-xxl {
        max-width: 1200px;
    }
}

@media (min-width: 1200px) {
    .modal-xxl {
        max-width: 1500px;
    }
}
