/* Ensure all labels are not bolded */
label {
    font-weight: normal !important;
}

/* Make input, select, and textarea font bold */
input, select, textarea, option {
    font-weight: bold !important;
}

/* Make all table body row text black */
tbody tr td {
    color: #000 !important;
}

/* Application Availability Manager (table #application-availability-table): must beat
   `tbody tr td { color: #000 !important }` and BS5 `.table > * > * > *` cell color on <td>.
   Scoped by id so we do not widen side effects across all tables. */
#application-availability-table tbody tr td .vision-app-status-badge {
    display: inline-block;
    box-sizing: border-box;
    padding: 4px 14px;
    font-size: 85% !important;
    font-weight: 600;
    line-height: 1.4;
    border-radius: 4px;
    color: #ffffff !important;
    border: none;
    -webkit-text-fill-color: #ffffff;
}

#application-availability-table tbody tr td .vision-app-status-badge--enabled {
    background-color: #157846 !important;
}

#application-availability-table tbody tr td .vision-app-status-badge--disabled {
    background-color: #a72925 !important;
}

#application-availability-table tbody tr td .toggle-app-btn.vision-app-availability-toggle {
    box-sizing: border-box;
    min-width: 6.75rem;
}

.panel-default {
    margin-bottom: 5px;
}


#loading-overlay,
.vision-ajax-blocking-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: #000;
    filter: alpha(opacity=50);
    -ms-opacity: 0.5;
    opacity: 0.5;
    /* Above .modal.show (12000) / .modal-backdrop (11950); below datepicker popups (20600). */
    z-index: 12500;
}

.spinloading {
    left: 50%;
    top: 50%;
    margin-top: -50%;
    display: block;
    background: url(../images/spinner.gif) no-repeat center;
    width: 100px;
    height: 100px;
    margin: 0 auto;
    position: fixed;
}

html {
    overflow: -moz-scrollbars-vertical;
    overflow-y: scroll;
    overflow-x: hidden;
    /* Keep a stable vertical scrollbar gutter (short pages + overlay scrollbars).
       Without this, `position: fixed; left: 0; right: 0` on `.navbar-fixed-top` can
       extend under the scrollbar so the right-hand nav (user menu, help) is clipped. */
    scrollbar-gutter: stable;
}

:root {
    /* Navbar row is locked to 44px (logo img, h1 app-title, collapse min-heights).
       `body` padding-top must match the fixed bar's outer height, or the body's
       background shows as a strip between the bar and `.wrapper`.
       Bootstrap 5 sets `.navbar { padding: var(--bs-navbar-padding-y) 0 }` (0.5rem
       top/bottom ≈ 8px each) unless overridden; we force padding 0 with !important
       below so the bar stays 44px tall and clearance can match it exactly. */
    --vision-navbar-fixed-clearance: 44px;
    /* Space between navigation rail and main form */
    --vision-gutter-to-main-gap: 20px;
    /* Set by `site.2.0.0.js` (`visionSyncRootScrollbarWidth`) — vertical scrollbar width for navbar inset */
    --vision-scrollbar-width: 0px;
    /* Match `.wrapper > .body-content` horizontal gutter so navbar user cluster lines up with panes below */
    --vision-main-content-padding-x: calc(var(--bs-gutter-x, 1.5rem) * 0.5);
    --vision-navbar-inset-right: calc(var(--vision-main-content-padding-x) + var(--vision-scrollbar-width, 0px));
    /* Cap width of the logo+title strip (desktop grid col 1) so long app names cannot shove user/help off-screen */
    --vision-navbar-title-track-max: 32rem;
    --vision-navbar-title-track-vw: 48vw;
}

body {
    padding-top: var(--vision-navbar-fixed-clearance);
    padding-bottom: 20px;
    border: none;
    border-width: 0;
    margin: 0;
}

.body-content {
    position: absolute;
    top: var(--vision-navbar-fixed-clearance);
    left: 200px;
    padding-right: 250px;
    width: 100%;
}

@media (min-width: 768px) {
    .body-content {
        min-width: 750px;
        width: 100%;
    }
}

@media (min-width: 992px) {
    .body-content {
        min-width: 970px;
        width: 100%;
    }
}

@media (min-width: 1200px) {
    .body-content {
        min-width: 1170px;
        width: 100%;
    }
}


.form-control-inline {
    display: inline-block;
    width: auto;
    height: 34px;
    padding: 6px 12px;
    font-size: 14px;
    line-height: 1.42857143;
    color: #555;
    background-color: #fff;
    background-image: none;
    border: 1px solid #ccc;
    border-radius: 4px;
    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
    -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
    -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
    transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}

.form-control-inline-100 {
    display: inline-block;
    width: 100%;
    height: 34px;
    padding: 6px 12px;
    font-size: 14px;
    line-height: 1.42857143;
    color: #555;
    background-color: #fff;
    background-image: none;
    border: 1px solid #ccc;
    border-radius: 4px;
    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
    box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
    -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
    -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
    transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
}

.body-content-lite {
    position: absolute;
    top: 20px;
    left: 20px;
}

/* Header bar — compact fixed bar (~44px); title size scoped on h1 only.
   Do not set flex-wrap here: it overrides BS5 `.navbar-expand-lg { flex-wrap: nowrap }`
   loaded earlier in bootstrap.css — that bug hid/pushed `#myNavbar` (notifications). */
.navbar {
    background-color: #374D81;
    min-height: 44px;
    /* BS5 `.navbar` uses shorthand `padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x)`
       (0.5rem vertical by default). Kill it entirely so the fixed bar height matches
       our 44px artwork row; otherwise ~8px extra top+bottom makes body padding look
       short and leaves a body-coloured gap under the navy bar. */
    padding: 0 !important;
    /* BS3-era global `.navbar { margin-bottom: 20px }` still ships in some
       bootstrap bundles; for position:fixed it can interact oddly with
       padding-based clearance. Pin to zero so no extra gap below the bar. */
    margin-bottom: 0 !important;
}

/* Scrollbar inset on the fixed header: the root `.navbar` rule uses `padding: 0 !important`,
   which overrides a bare `.navbar-fixed-top { padding-right: … }` on this same element
   (shorthand wins). Re-apply on the combined selector + `!important`. `--vision-scrollbar-width`
   is updated from `window.innerWidth - document.documentElement.clientWidth` in `site.2.0.0.js`. */
.navbar.navbar-fixed-top {
    padding-right: max(
        var(--vision-navbar-inset-right),
        calc(var(--vision-main-content-padding-x) + max(18px, calc(100vw - 100% + 14px)))
    ) !important;
}
.navbar.navbar-inverse {
    /* BS3 .navbar-inverse — BS5 ignores it; set light-on-dark tokens so links/headings aren’t gray */
    --bs-navbar-color: rgba(255, 255, 255, 0.95);
    --bs-navbar-hover-color: #ffffff;
    --bs-navbar-disabled-color: rgba(255, 255, 255, 0.55);
    --bs-navbar-active-color: #ffffff;
    --bs-navbar-brand-color: #ffffff;
    --bs-navbar-brand-hover-color: #ffffff;
}

.navbar.navbar-inverse .navbar-nav .nav-link {
    color: rgba(255, 255, 255, 0.95) !important;
}

.navbar.navbar-inverse .navbar-nav .nav-link:focus,
.navbar.navbar-inverse .navbar-nav .nav-link:hover {
    color: #ffffff !important;
}

/* Bootstrap 3 navbar compatibility on Bootstrap 5 */
.navbar-fixed-top {
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    z-index: 1030;
    box-sizing: border-box;
}

.navbar .navbar-header {
    display: flex;
    align-items: center;
    align-self: center;
    min-height: 44px;
    box-sizing: border-box;
    gap: 0.35rem;
}

@media (min-width: 992px) {
    /*
     * Desktop: CSS Grid (not flex) so a long application title cannot consume the whole bar.
     * Outer grid — col 1: *fixed width* min(vw, cap) so the boundary with `#myNavbar` does not
     * move when the title text grows/shrinks (fit-content would). Col 2: `#myNavbar` fills the rest.
     * Inner grid on `#myNavbar` — breadcrumbs scroll in the first track; user/help stay in `auto`.
     * `theme-shims.1.0.0.css` sets `.navbar-left/.navbar-right { margin-*: auto !important }` for
     * legacy flex; neutralize that here so grid placement is deterministic.
     */
    .navbar.navbar-expand-lg {
        display: grid;
        grid-template-columns:
            min(var(--vision-navbar-title-track-vw), var(--vision-navbar-title-track-max))
            minmax(0, 1fr);
        align-items: center;
        column-gap: 0.35rem;
        min-width: 0;
    }

    .navbar.navbar-expand-lg > .navbar-header.navbar-title {
        grid-column: 1;
        min-width: 0;
        max-width: 100%;
        width: 100%;
        overflow: hidden;
    }

    .navbar.navbar-expand-lg > .navbar-header.navbar-title > a.navbar-brand:first-of-type,
    .navbar.navbar-expand-lg > .navbar-header.navbar-title > .navbar-toggle,
    .navbar.navbar-expand-lg > .navbar-header.navbar-title > .navbar-toggler {
        flex-shrink: 0;
    }

    .navbar.navbar-expand-lg > .navbar-header.navbar-title > h1.app-title {
        flex: 1 1 0%;
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .navbar.navbar-expand-lg > .navbar-collapse {
        display: grid !important;
        grid-column: 2;
        grid-template-columns: minmax(0, 1fr) minmax(max-content, auto);
        column-gap: 0.5rem;
        align-items: center;
        align-self: center;
        justify-self: stretch;
        width: 100%;
        min-width: 0;
        min-height: 44px;
        overflow-x: visible;
    }

    .navbar .navbar-nav {
        display: flex;
        flex-direction: row;
        align-items: center;
    }

    .navbar.navbar-expand-lg .navbar-nav.navbar-left {
        grid-column: 1;
        grid-row: 1;
        flex: none;
        min-width: 0;
        margin-right: 0 !important;
        overflow-x: auto;
        overflow-y: hidden;
        flex-wrap: nowrap;
        /* Still scrollable via trackpad/shift-wheel/touch; hide bar — thin scrollbar looked noisy while narrowing. */
        scrollbar-width: none;
        -ms-overflow-style: none;
    }

    .navbar.navbar-expand-lg .navbar-nav.navbar-left::-webkit-scrollbar {
        display: none;
        width: 0;
        height: 0;
    }

    .navbar.navbar-expand-lg .navbar-nav.navbar-right {
        grid-column: 2;
        grid-row: 1;
        flex: none;
        flex-shrink: 0;
        margin-left: 0 !important;
        justify-self: end;
        justify-content: flex-end;
        overflow: visible;
        position: relative;
        z-index: 5;
        /* Grid min-content can shrink to 0 when flex children collapse; reserve real width. */
        width: max-content;
        min-width: max-content;
    }

    .navbar.navbar-expand-lg .navbar-nav.navbar-left {
        position: relative;
        z-index: 1;
    }

    .navbar.navbar-expand-lg .navbar-nav.navbar-right > li {
        flex-shrink: 0;
    }
}

.navbar-dev {
    background-color: #374D81;
}

.navbar-test {
    background-color: #374D81;
}

.navbar-toggle {
    border-width: 2px !important;
    border-color: #FFFFFF !important;
}

/*
 * Do NOT set overflow:hidden here. .dropdown-menu is position:absolute and its
 * visible box is clipped to the nearest ancestor with overflow != visible.
 * Hiding overflow here clips the user/notification dropdowns to the ~44px
 * navbar height, so users only see the top sliver. The mobile breakpoint
 * (max-width: 991px) below re-enables overflow:hidden where it's needed for
 * the collapse animation.
 */
.navbar-collapse {
    border-width: 0;
    border: none;
    padding: 0;
    margin: 0;
}

.navbar-header {
    border-width: 0;
    border: none;
    padding: 0;
    margin: 0;
}

.navbar-brand {
    padding: 0;
    color: #FFFFFF !important;
    font-weight: bold;
    margin-left: 0;
}

.navbar-title {
    display: flex;
    text-overflow: ellipsis;
    white-space: nowrap;
    overflow: hidden;
    border-style: none;
}

    .navbar-title > button {
        padding: 4px;
    }

.app-title {
    padding-top: 0;
}

/* Logo fills navbar height (aspect ratio preserved); link flush to header row (margin-left: 0) */
.navbar-header.navbar-title > a.navbar-brand > img,
.navbar-brand > img {
    height: 44px;
    max-height: 44px;
    width: auto;
    padding: 0;
    margin: 0;
    display: block;
    object-fit: contain;
}

.navbar-header.navbar-title > a.navbar-brand {
    display: inline-flex;
    align-items: center;
    align-self: center;
    min-height: 44px;
    max-height: 44px;
    box-sizing: border-box;
    margin-left: 0;
    margin-right: 0;
    padding: 0;
}

.notify-label {
}

.helplink {
}

.link {
    cursor: pointer;
}

.navbar-nav {
    border-width: 0;
    border: none;
    padding: 0;
    margin: 0;
    margin-top: 0;
}

    .navbar-nav > li {
        text-wrap: none !important;
        white-space: nowrap;
    }

.navbar-link > a {
    padding: 2px 8px 2px 0 !important;
    top: 0 !important;
    font-size: 16px;
    color: #ffffff !important;
}

.navbar-link-help > a {
    padding: 2px 0 2px 0 !important;
    top: 0 !important;
    font-size: 16px;
    color: #ffffff !important;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

/* Space between user dropdown and help icon (avoid flex gap — it clipped the bell). */
.navbar-nav.navbar-right > li.navbar-link-help {
    margin-inline-start: 16px;
    flex-shrink: 0;
}

/* Was margin-bottom: 20px globally — inflated fixed navbar height */
.navbar .dropdown-toggle {
    margin-bottom: 0;
    padding-top: 2px;
    padding-bottom: 2px;
    font-size: 16px;
    color: #ffffff !important;
}

.dropdown > .dropdown-menu {
    max-height: 300px !important;
}

/* Keep user menu as an overlay in navbar (do not expand navbar height) */
.navbar .dropdown {
    position: relative;
}

.navbar .dropdown-menu {
    position: absolute !important;
    top: 100%;
    left: 0;
    z-index: 1100;
}

.navbar-right .dropdown-menu {
    right: 0;
    left: auto;
}

/* Avoid double carets: keep legacy <span class="caret"> only */
.navbar .dropdown-toggle::after {
    display: none;
}

    .dropdown > .dropdown-menu > li > a {
        color: #000000 !important;
        font-weight: bold;
    }

    .dropdown > .dropdown-menu > .dropdown-menu-release > a {
        color: #000000 !important;
        font-weight: normal;
        cursor: text;
    }

/* Navbar user/notification dropdown items: extra breathing room + hover state.
   Markup is BS3-style (<li><a>), so BS5's .dropdown-item defaults don't apply. */
.navbar .dropdown-menu > li > a {
    display: block;
    padding: 6px 16px;
    text-decoration: none;
}

.navbar .dropdown-menu > li > a:hover,
.navbar .dropdown-menu > li > a:focus {
    background-color: #f0f0f0;
}

/* Keep the read-only "Version x.y.z" row from highlighting on hover. */
.navbar .dropdown-menu > .dropdown-menu-release > a:hover,
.navbar .dropdown-menu > .dropdown-menu-release > a:focus {
    background-color: transparent;
}

.divider {
    visibility: hidden;
}

@media (max-width: 991px) {
    .navbar-header {
        float: none;
    }

    .navbar-left, .navbar-right {
        float: none !important;
    }

    .navbar-toggle {
        display: block;
    }

    /* overflow:hidden is required during the collapse expand/contract animation
       (Bootstrap shrinks height: 0 -> auto and any content past the box would
       leak out mid-transition). However, once `.show` is applied the menu is
       fully open and absolutely-positioned dropdown menus (User Settings,
       Notifications) need to be allowed to extend past the navbar bottom edge
       -- otherwise they're visually clipped to a sliver. Hence the second
       block below, which only fires in the fully-expanded state. */
    .navbar-collapse {
        overflow-y: hidden !important;
        overflow-x: hidden !important;
        overflow: -moz-scrollbars-none !important;
        border-width: 0;
        border: none;
        padding: 0 0 8px 0 !important;
        margin: 0;
    }

    .navbar-collapse.show,
    .navbar-collapse.in {
        overflow: visible !important;
    }

    .navbar-fixed-top {
        top: 0;
    }

    .navbar-collapse.collapse {
        display: none !important;
    }

    .navbar-nav {
        float: none !important;
        margin-top: 7.5px;
    }

        .navbar-nav > li {
            float: none;
        }

            .navbar-nav > li > a {
                padding: 5px 5px 5px 20px !important;
                top: 0 !important;
                color: #ffffff !important;
            }

    .navbar-nav {
        border-width: 0;
        border: none;
        padding: 0;
        margin: 0;
    }

        .navbar-nav > li {
            text-wrap: none !important;
            white-space: nowrap;
        }

    .navbar-link > a {
        padding: 2px 8px 2px 0 !important;
        top: 0 !important;
        font-size: 16px;
        color: #ffffff !important;
    }

    .navbar-link-help > a {
        padding: 2px 0 2px 0 !important;
        top: 0 !important;
        font-size: 16px;
        color: #ffffff !important;
    }

    .dropdown-toggle {
        margin-bottom: 0;
    }

    /* Do not constrain `.dropdown-menu` height or force white menu text here — those rules
       applied to every navbar dropdown on small screens and broke User Options (white on
       white) and Notifications (panel clipped to ~76px). Desktop dropdown styling above applies. */

    .divider {
        visibility: visible;
    }

    .collapse.in,
    .collapse.show {
        display: block !important;
    }

    /* Center each row of the collapsed (hamburger) navbar so items don't
       cling to the left edge. Earlier rules in this @media block apply
       asymmetric left padding (20px / 8px) to .navbar-nav > li > a and the
       .navbar-link* variants for the docked desktop look; here we zero that
       out and let text-align do the work. Dropdown menus are position:absolute
       so centering the <li>s doesn't shift them. */
    .navbar-collapse .navbar-nav {
        text-align: center;
    }

    .navbar-collapse .navbar-nav > li > a,
    .navbar-collapse .navbar-link > a,
    .navbar-collapse .navbar-link-help > a {
        padding-left: 0 !important;
        padding-right: 0 !important;
        text-align: center;
    }
}

/* Accordion: when a panel expands, scrollIntoView aligns its top — offset for fixed navbar.
   Avoid :has(): legacy BundlerMinifier rejects it during minification. */
.panel-group > .panel,
#accordion.panel .panel.panel-default {
    scroll-margin-top: calc(var(--vision-navbar-fixed-clearance, 44px) + 16px);
}

/* Left Nav */
.nav-link {
    text-decoration: none;
}

.iconav {
    background-color: #FFF;
    overflow-y: hidden;
    overflow-x: hidden;
    top: 50px;
    width: 250px;
}

.iconav-slider {
    overflow-y: hidden;
    overflow-x: hidden;
}

/* Disable Hover decoration on Links */
a:hover {
    text-decoration: none;
}

/* Manage Main Layout */
#sidebar {
    position: fixed;
    top: var(--vision-navbar-fixed-clearance);
    left: 0;
    width: 200px;
    bottom: 0;
    overflow-y: auto;
    z-index: 21;
    box-sizing: border-box;
}

.wrapper {
    display: flex;
    gap: var(--vision-gutter-to-main-gap);
    -ms-align-items: stretch;
    -o-align-items: stretch;
    -webkit-align-items: stretch;
    align-items: stretch;
}

/* Main pane: fill space beside the gutter; avoid legacy absolute + fixed max-width from .container */
@media screen {
    .wrapper > .body-content {
        position: relative;
        top: 0;
        left: 0;
        flex: 1 1 auto;
        min-width: 0;
        width: auto;
        max-width: none;
        /* Drop legacy 250px; match BS5 .container-fluid horizontal gutter */
        padding-right: calc(var(--bs-gutter-x, 1.5rem) * 0.5);
        padding-left: calc(var(--bs-gutter-x, 1.5rem) * 0.5);
    }

    /* Platform: #sidebar is position:fixed; margin keeps main content out from under the rail + gap */
    .wrapper > #sidebar ~ .body-content {
        margin-left: calc(200px + var(--vision-gutter-to-main-gap));
    }
}

.main {
    margin-left: 160px;
    padding: 0 10px;
}
/* END - Manage Main Layout */

.panel-divider {
    border: #374D81 solid 2px;
}

/* BS3 `.table` cells default to padding: 8px and BS3 `.btn` is ~34px tall (padding 6px 12px,
   line-height 1.42857), so grids of icon actions inside panels rendered tall rows with the
   button overflowing a short line box (text centered, button baseline-anchored). Compact the
   cells AND the buttons so the row tracks the action height. Skip tables already marked
   compact (.table-condensed) or borderless (.int-table).
   The same compact row + in-cell button sizing applies to main search / list grids outside
   panels: `#search-results`, tables whose id starts with `search-results-table`, and a few
   standalone admin list tables. */
.panel .panel-body table.table:not(.table-condensed):not(.int-table) > thead > tr > th,
.panel .panel-body table.table:not(.table-condensed):not(.int-table) > tbody > tr > th,
.panel .panel-body table.table:not(.table-condensed):not(.int-table) > tfoot > tr > th,
.panel .panel-body table.table:not(.table-condensed):not(.int-table) > thead > tr > td,
.panel .panel-body table.table:not(.table-condensed):not(.int-table) > tbody > tr > td,
.panel .panel-body table.table:not(.table-condensed):not(.int-table) > tfoot > tr > td,
#search-results table.table:not(.table-condensed):not(.int-table) > thead > tr > th,
#search-results table.table:not(.table-condensed):not(.int-table) > tbody > tr > th,
#search-results table.table:not(.table-condensed):not(.int-table) > tfoot > tr > th,
#search-results table.table:not(.table-condensed):not(.int-table) > thead > tr > td,
#search-results table.table:not(.table-condensed):not(.int-table) > tbody > tr > td,
#search-results table.table:not(.table-condensed):not(.int-table) > tfoot > tr > td,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) > thead > tr > th,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) > tbody > tr > th,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) > tfoot > tr > th,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) > thead > tr > td,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) > tbody > tr > td,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) > tfoot > tr > td,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) > thead > tr > th,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) > tbody > tr > th,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) > tfoot > tr > th,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) > thead > tr > td,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) > tbody > tr > td,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) > tfoot > tr > td,
table#employee-table.table:not(.table-condensed):not(.int-table) > thead > tr > th,
table#employee-table.table:not(.table-condensed):not(.int-table) > tbody > tr > th,
table#employee-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > th,
table#employee-table.table:not(.table-condensed):not(.int-table) > thead > tr > td,
table#employee-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td,
table#employee-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > td,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) > thead > tr > th,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) > tbody > tr > th,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > th,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) > thead > tr > td,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > td,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) > thead > tr > th,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) > tbody > tr > th,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > th,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) > thead > tr > td,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > td,
table#configValues-table.table:not(.table-condensed):not(.int-table) > thead > tr > th,
table#configValues-table.table:not(.table-condensed):not(.int-table) > tbody > tr > th,
table#configValues-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > th,
table#configValues-table.table:not(.table-condensed):not(.int-table) > thead > tr > td,
table#configValues-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td,
table#configValues-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > td,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) > thead > tr > th,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) > tbody > tr > th,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > th,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) > thead > tr > td,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > td,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) > thead > tr > th,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) > tbody > tr > th,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > th,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) > thead > tr > td,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) > tfoot > tr > td {
    padding: 4px 6px;
    vertical-align: middle;
    line-height: 1.25;
}

/* Uniform result-grid row height. min-height on table rows/cells is ignored by table layout;
   height on tr is treated as a minimum and still grows for multi-line cells. */
.panel .panel-body table.table:not(.table-condensed):not(.int-table) > tbody > tr,
#search-results table.table:not(.table-condensed):not(.int-table) > tbody > tr,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) > tbody > tr,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) > tbody > tr,
table#employee-table.table:not(.table-condensed):not(.int-table) > tbody > tr,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) > tbody > tr,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) > tbody > tr,
table#configValues-table.table:not(.table-condensed):not(.int-table) > tbody > tr,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) > tbody > tr,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) > tbody > tr,
table#searchResults.table:not(.table-condensed):not(.int-table) > tbody > tr {
    height: 42px;
}

/* Empty cells (e.g. hidden edit action): spacer matches in-grid button block (~30px). */
.panel .panel-body table.table:not(.table-condensed):not(.int-table) > tbody > tr > td:empty::after,
#search-results table.table:not(.table-condensed):not(.int-table) > tbody > tr > td:empty::after,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) > tbody > tr > td:empty::after,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) > tbody > tr > td:empty::after,
table#employee-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td:empty::after,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td:empty::after,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td:empty::after,
table#configValues-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td:empty::after,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td:empty::after,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) > tbody > tr > td:empty::after,
table#searchResults.table:not(.table-condensed):not(.int-table) > tbody > tr > td:empty::after {
    content: "";
    display: inline-block;
    height: 30px;
    width: 0;
    vertical-align: middle;
}

/* In-grid action buttons: target plain .btn (not just .btn-sm) so legacy icon buttons get
   a uniform comfortable hit-target. Anchor as inline-block + vertical-align: middle so they
   sit at the cell's vertical center next to the text instead of anchoring to the line baseline.
   Sized to ~30px tall (4 + 14×1.42857 + 4 + 2 = 30); row tracks at ~38px (4 cell padding above
   and below). Horizontal padding trimmed to keep the icon hit-target compact (6px on each side
   below BS3 .btn's default 12px). */
.panel .panel-body table.table:not(.table-condensed):not(.int-table) tbody td > .btn,
.panel .panel-body table.table:not(.table-condensed):not(.int-table) tbody td > a.btn,
.panel .panel-body table.table:not(.table-condensed):not(.int-table) tbody td > button.btn,
#search-results table.table:not(.table-condensed):not(.int-table) tbody td > .btn,
#search-results table.table:not(.table-condensed):not(.int-table) tbody td > a.btn,
#search-results table.table:not(.table-condensed):not(.int-table) tbody td > button.btn,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) tbody td > .btn,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) tbody td > a.btn,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) tbody td > button.btn,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) tbody td > .btn,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) tbody td > a.btn,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) tbody td > button.btn,
table#employee-table.table:not(.table-condensed):not(.int-table) tbody td > .btn,
table#employee-table.table:not(.table-condensed):not(.int-table) tbody td > a.btn,
table#employee-table.table:not(.table-condensed):not(.int-table) tbody td > button.btn,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) tbody td > .btn,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) tbody td > a.btn,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) tbody td > button.btn,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) tbody td > .btn,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) tbody td > a.btn,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) tbody td > button.btn,
table#configValues-table.table:not(.table-condensed):not(.int-table) tbody td > .btn,
table#configValues-table.table:not(.table-condensed):not(.int-table) tbody td > a.btn,
table#configValues-table.table:not(.table-condensed):not(.int-table) tbody td > button.btn,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) tbody td > .btn,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) tbody td > a.btn,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) tbody td > button.btn,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) tbody td > .btn,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) tbody td > a.btn,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) tbody td > button.btn {
    display: inline-block;
    padding: 2px 6px 6px;
    font-size: 14px;
    line-height: 1.42857143;
    vertical-align: middle;
    margin: 0;
}

/* Icon glyph inherits the button's 14px font-size by default; bump to 18px so the action
   icons (edit, trash, cycle, etc.) read clearly inside the narrower button. */
.panel .panel-body table.table:not(.table-condensed):not(.int-table) tbody td > .btn > .icon,
.panel .panel-body table.table:not(.table-condensed):not(.int-table) tbody td > .btn > span,
#search-results table.table:not(.table-condensed):not(.int-table) tbody td > .btn > .icon,
#search-results table.table:not(.table-condensed):not(.int-table) tbody td > .btn > span,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) tbody td > .btn > .icon,
#userAccountSearchResultsPanel table.table:not(.table-condensed):not(.int-table) tbody td > .btn > span,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) tbody td > .btn > .icon,
table.table[id^="search-results-table"]:not(.table-condensed):not(.int-table) tbody td > .btn > span,
table#employee-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > .icon,
table#employee-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > span,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > .icon,
table#hierarchyValues-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > span,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > .icon,
table#workflowTasks-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > span,
table#configValues-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > .icon,
table#configValues-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > span,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > .icon,
table#searchGroup-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > span,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > .icon,
table#groupAccess-table.table:not(.table-condensed):not(.int-table) tbody td > .btn > span {
    vertical-align: middle;
    line-height: 1;
    font-size: 18px;
}

.int-table > tbody > tr > td {
    border-top-style: none;
    border-left-style: none;
    border-right-style: none;
    border-bottom-style: none;
}

/* Keyboard navigation highlight */
.keyboard-highlight {
    background-color: #f5f5f5 !important;
    border: 2px solid #0066cc !important;
    box-shadow: 0 0 5px rgba(0, 102, 204, 0.3) !important;
}

.keyboard-highlight:hover {
    background-color: #e6f3ff !important;
}

/* Table focus indicator for keyboard navigation */
#search-results-table:focus {
    outline: 2px solid #0066cc;
    outline-offset: 2px;
}

.row-divider {
    padding: 0;
    margin: 0;
    height: 1px;
}

.row-border-top {
    border-top: #374D81 solid 2px;
}

.workflow-admin-list {
    margin-left: -20px;
}

/* Peer Group Rule styles */
.or-divider-row {
    border: #66ccff solid 1px;
    border-spacing: 1px;
    background-color: #66ccff;
    padding-top: 0;
    padding-bottom: 0;
}

.or-row {
    -ms-opacity: 1;
    opacity: 1;
    font-weight: bold;
    color: #000;
}


/* Awards Search Panel styles */
.grid-divider > .grid-divider-section {
    border-left: 2px solid #374D81;
    top: 0;
    margin-bottom: 0;
}

    .grid-divider > .grid-divider-section > .section-padding {
        padding-top: 0;
    }

/* Special Panel and Header styles */
.subSection-header-panel {
    padding-top: 0 !important;
    margin-top: 0 !important;
}

.subSection-header {
    padding-top: 6px;
    background-color: #6a6c6f !important;
    color: #ffffff !important;
    font-weight: bold !important;
    font-size: 12pt;
    height: 40px;
}

/* Override Dropzone styles */
.dropzone {
    background-color: #efefef;
    border-color: #374D81;
    border-style: dashed;
    border-width: 3px;
    -ms-border-radius: 5px;
    border-radius: 5px;
    color: #000000 !important;
    font-weight: bold !important;
    font-size: 12pt;
    -ms-opacity: .8;
    opacity: .8;
}

    .dropzone .dz-preview .dz-error-message {
        top: 150px;
        left: -10px;
    }

/* BS5 `.row` is flex; a `.form-group` without `.col-*` as the direct flex child can shrink to
   content width and make modal upload dropzones look collapsed. Column-first layout is in the
   views; keep explicit width + min-height so Dropzone keeps the expected hit area. */
#document-modal form.dropzone.dz-clickable,
#image-upload-modal form.dropzone.dz-clickable {
    width: 100%;
    min-height: 150px;
    box-sizing: border-box;
}

/* Treeview */
.treeView {
    font-weight: bold !important;
    font-size: 12pt;
}

.positionView {
    color: #374D81 !important;
    font-weight: bold !important;
    font-size: 12pt;
    width: 300px;
    display: inline-block;
}

.positionViewHighlight {
    color: #0329FA !important;
    font-weight: bold !important;
    font-size: 12pt;
    width: 300px;
    display: inline-block;
}

.statusView {
    color: #374D81 !important;
    font-weight: bold !important;
    font-size: 12pt;
}

.statusViewHighlight {
    color: #0329FA !important;
    font-weight: bold !important;
    font-size: 12pt;
}

.orgTree .icon {
    font-weight: bold !important;
    font-size: 12pt;
}

/* Stop modal windows scrolling to top */
body.modal-open {
    overflow: visible;
}

.modal-link {
    cursor: pointer;
}

/* Display Record State */
.record-state {
    color: #000000 !important;
    font-weight: bold !important;
    font-size: 12pt;
}

/* Accordion Styles Begin*/
.panel-title {
    text-decoration: none;
    outline: none;
    color: #000000 !important;
    font-weight: bold !important;
    font-size: 12pt;
}

    .panel-title > a {
        text-decoration: none;
        outline: none;
        cursor: pointer;
        color: #000000 !important;
        font-weight: bold !important;
        font-size: 12pt;
    }


.panel-aqua > .panel-heading {
    background-color: #A1C4E3;
}

.panel-aqua .panel-title > span, .panel-aqua .panel-title > a {
    color: #FFFFFF !important;
}



.sm-spacer {
    height: 5px;
}

.panel-aqua-body .panel-heading {
    background-color: #A1C4E3;
}

.panel-aqua-body .panel-title span, .panel-aqua-body .panel-title a {
    color: #FFFFFF !important;
}

.accordion-option > a {
    color: #374D81;
    text-decoration: none;
    outline: none;
    cursor: pointer;
}
/*Accordion Styles End*/

/* Custom Div*/
.editable-div {
    -moz-appearance: textfield-multiline;
    -webkit-appearance: textarea;
    font: medium -moz-fixed;
    font: -webkit-small-control;
    font-size:1.1em;
    overflow: auto;
    padding: 2px;
    resize: both;
    border-radius: 5px;
    border: 1px solid #374D81;
}

.editable-div:focus {
    outline: 2px solid transparent;
}

.employee-information {
    background-color: #6a6c6f !important;
    color: #ffffff !important;
    font-weight: bold !important;
    font-size: 12pt;
}

.spacer {
    height: 20px;
}

/* Added to remove error in VS */
.required {
    text-decoration: none;
}

.toggle-accordion {
    text-decoration: none;
    cursor: pointer;
}

.error {
    text-decoration: none;
}

.select-all {
    text-decoration: none;
}

/* Employee Detail Image */
.employee-image > img {
    -ms-border-radius: 5px;
    border-radius: 5px;
    border-color: #000000;
}

/* Employee header (Personnel Jacket / Vision): bordered summary block beside photo */
.employee-information-summary {
    border: 1px solid #dee2e6;
    border-radius: 4px;
    padding: 12px 14px;
    background-color: #fff;
}

[data-bs-theme="dark"] .employee-information-summary {
    border-color: var(--bs-border-color, #495057);
    background-color: var(--bs-body-bg, #212529);
}

/* Select List - wider */
.select-wide {
    width: 500px;
}

.modal-panel-header {
    color: #fff;
    background-color: #444;
    font-weight: bold;
}

/* Modal Windows */
.modal-header {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    gap: 0.5rem;
    color: #fff;
    background-color: #444;
    font-weight: bold;
    cursor: move;
}

.modal-header .modal-title {
    flex: 1 1 auto;
    margin: 0;
    line-height: 1.35;
    min-width: 0;
}

/* .modal-footer: do not override padding — BS5 sets flex layout, gutters, and
   symmetric padding via --bs-modal-footer-gap / --bs-modal-padding. Legacy
   padding-bottom:0 + nested .row/.col inside footers made actions hug the
   bottom edge and sit inset from the right. */

/* Toolkit `.modal-body-scroller` (not in bootstrap.min.css): cap height and scroll long lists. */
.modal-body.modal-body-scroller {
    max-height: min(480px, calc(100vh - 12rem));
    overflow-y: auto;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

/* Email template edit: shorter modal and rich-text area */
#email-table-edit-modal .email-template-edit-modal .modal-content {
    max-height: min(670px, calc(100vh - 4rem));
}

#email-table-edit-modal .email-template-edit-modal .modal-body {
    max-height: min(530px, calc(100vh - 10rem));
    overflow-y: auto;
}

/* Pull Email Body row up: same <br /> as other rows, but TinyMCE adds extra top margin */
#email-table-edit-modal .email-template-body-row {
    margin-top: -0.5rem;
}

#email-table-edit-modal .email-template-editor-field {
    overflow: visible;
}

#email-table-edit-modal .email-template-editor-field .tox-tinymce {
    margin-top: 0;
}

/*
 * Modals: required labels use a trailing red asterisk (not the global leading "*"
 * from .control-label.required:before). Labels with <span class="text-danger">*</span>
 * (FAQ, Recruiting Events) are unchanged.
 */
.modal .modal-body .control-label.required::before {
    content: none;
}

.modal .modal-body .control-label.required::after {
    content: " *";
    color: #E64759;
    font-weight: bold;
}

#security-group-access-modal #add-access-table thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    background-color: #fff;
}

html[data-bs-theme="dark"] #security-group-access-modal #add-access-table thead th {
    background-color: #2b3035;
}

.close {
    float: right;
    /* BS5 removed Bootstrap 3’s `button.close { background: transparent }`.
       Plain `<button class="close">` otherwise picks up the UA “gray button” chrome. */
    background-color: transparent;
    border: 0;
    appearance: none;
    -webkit-appearance: none;
    box-shadow: none;
    padding: 0.15rem 0.35rem;
    font-family: inherit;
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1;
    color: #fff;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.45);
    filter: alpha(opacity=20);
    -ms-opacity: .95;
    opacity: .95;
}

    .close:hover {
        color: #fff;
        background-color: transparent;
        opacity: 1;
    }

    .close:focus {
        color: #fff;
        outline: none;
    }

.close:focus-visible {
    outline: 2px solid rgba(255, 255, 255, 0.85);
    outline-offset: 2px;
}

button.close {
    background-image: none;
}

/* Override broken theme nav-item */
.nav-item > a {
    outline: none;
}

.nav-active {
    background-color: #ffffff;
}

.nav-flat > a:hover {
    border-bottom-color: #374D81 !important;
    border-bottom-width: 4px !important;
}

.nav-flat > .active {
    border-bottom-color: #374D81 !important;
    border-bottom-width: 4px !important;
}

/* VisionMenu: active tab underline (see Shared/Components/VisionMenu/Default.cshtml) */
.nav-bordered > li.active > a {
    border-bottom-color: #374D81 !important;
}

/* VisionMenu (Shared/Components/VisionMenu/Default): BS5 `.nav` defaults to flex-wrap, so tabs
   stacked in a short column before using horizontal space. Use one row + optional x-scroll. */
.vision-menu-row > .vision-menu-nav-col {
    min-width: 0;
}

.vision-menu-row ul.nav.nav-bordered {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: thin;
}

.vision-menu-row ul.nav.nav-bordered > li.nav-item {
    flex: 0 0 auto;
}

.nav-header-links {
    color: white !important;
    cursor: pointer;
    font-weight: bold;
    font-size: 18px;
}

/* Form Panel */
.perception-panel {
    padding: 14px;
    border-width: 2px;
    border-color: #374D81;
    -ms-border-radius: 10px;
    border-radius: 10px;
}

.perception-panel-light {
    padding: 14px;
    border-width: 1px;
    border-color: #374D81;
    -ms-border-radius: 10px;
    border-radius: 10px;
}

.perception-panel-title {
    position: relative;
    top: 10px;
    left: 110px;
    font-size: 17px;
    background-color: #262830;
    color:  #374D81;
}

.perception-panel-title-light {
    position: relative;
    top: 10px;
    left: 110px;
    font-size: 17px;
    background-color: white;
    color:  #374D81;
}

.perception-panel-B {
    padding: 14px;
    border-width: 2px;
    border-color: grey;
    -ms-border-radius: 10px;
    border-radius: 10px;
}

/* (No/Number) of Records Found */
.records-found {
    font-weight: bold;
    font-size: 18px;
}

/* No search criteria entered */
.input-empty {
    font-weight: bold;
    font-size: 18px;
    color:red;
}

/* Pagination */
.pagination, .paginationA, .paginationB {
    margin: 0;
    padding: 0;
    border-style: none;
}

#pagination a, #paginationA a, #paginationB a {
    display: inline-block;
    margin-right: 5px;
    margin-top: 5px;
    margin-bottom: 5px;
    cursor: pointer;
}

#pagination .active, #paginationA .active, #paginationB .active {
    background-color: #374D81;
    color: white;
}

/* Sorting: only header links are sort controls — plain-text headers (e.g. panel subgrids)
   should not show a pointer over the whole column. */
.results-column {
    cursor: default;
}

.results-column > a {
    cursor: pointer;
}

/* Search result grids (tablesorter): match Applicant Tracking — white header, black text, no link styling. */
html:not([data-bs-theme="dark"]) #search-results table.table thead > tr > th,
html:not([data-bs-theme="dark"]) table.table#search-results-table thead > tr > th,
html:not([data-bs-theme="dark"]) table.table[id^="search-results-table"] thead > tr > th {
    background-color: #fff !important;
    color: #000 !important;
    box-shadow: none !important;
}

html[data-bs-theme="dark"] #search-results table.table thead > tr > th,
html[data-bs-theme="dark"] table.table#search-results-table thead > tr > th,
html[data-bs-theme="dark"] table.table[id^="search-results-table"] thead > tr > th {
    background-color: transparent !important;
    color: #fff !important;
    box-shadow: none !important;
}

#search-results table thead th.results-column,
table.table#search-results-table thead th.results-column,
table.table[id^="search-results-table"] thead th.results-column {
    cursor: pointer;
}

#search-results table thead th.results-column > a,
table.table#search-results-table thead th.results-column > a,
table.table[id^="search-results-table"] thead th.results-column > a {
    color: inherit;
    text-decoration: none;
    cursor: pointer;
}

/* Login screen */
.login-page-layout {
    margin-top: 40px;
    margin-left: 55px;
}

/* Login lite layout: sit closer to the left edge (offset default container/body inset). */
body:has(.login-page-layout) {
    padding-left: 0;
}

body:has(.login-page-layout) > .container {
    padding-left: 0;
    margin-left: 0;
    max-width: 100%;
}

.login-page-form {
    position: relative;
    max-width: 300px;
}

.login-panel {
    width: 300px;
}

.login-form-1 {
    position: relative;
    top: 0;
    left: 0;
    max-width: 300px;
    -ms-border-radius: 5px;
    border-radius: 5px;
    display: inline-block;
    background-color: transparent;
}

.main-login-form {
    position: relative;
}

.login-form-1 .form-control {
    border: 0;
    box-shadow: none;
    -ms-border-radius: 0;
    border-radius: 0;
    background: transparent;
    padding: 7px 0;
    font-weight: bold;
    height: auto;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
    color: #ffffff;
    caret-color: #ffffff;
}

.login-form-1 .form-control:focus,
.login-form-1 .form-control:focus-visible {
    outline: none;
}

/* Ring on the row so width matches the underline (full field width). */
.login-form-1 .form-group:focus-within {
    border-bottom-color: #accbf9;
    border-bottom-width: 2px;
    outline: 2px solid #accbf9;
    outline-offset: 2px;
}

.login-form-1 .form-control::placeholder {
    color: rgba(255, 255, 255, 0.65);
    opacity: 1;
}

.login-form-1 .form-control::-webkit-input-placeholder {
    color: rgba(255, 255, 255, 0.65);
}

.login-form-1 .form-control::-moz-placeholder {
    color: rgba(255, 255, 255, 0.65);
    opacity: 1;
}


.login-form-1 .form-group {
    margin-bottom: 0;
    border-bottom: 2px solid #efefef;
    padding-right: 20px;
    position: relative;
}

.login-group {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    min-width: 0;
    box-sizing: border-box;
    background-color: transparent;
    -ms-border-radius: 8px;
    border-radius: 8px;
    padding: 19px 20px 12px;
    border: solid;
    border-color: #accbf9;
    border-width: 1px;
}

/* Less right inset than `.form-group`: widens Login to match visible field / underline width. */
.form-group-button {
    margin-top: 7px;
    padding-right: 0;
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
}

.login-form-1 #login-button {
    display: block;
    width: 100%;
    max-width: 100%;
    box-sizing: border-box;
}

/* Validation */

.char-count-container {
    text-align: right;
}

label.form-invalid {
    position: absolute;
    top: 0;
    right: -200px;
    z-index: 5;
    display: block;
    background: #A0A0A0;
    border: 2px solid #000000;
    color: #FFFFFF;
    -ms-border-radius: 4px;
    border-radius: 4px;
    height: 30px;
    padding: 2px 5px 5px 5px;
    font-weight: bold;
    font-size: 11pt;
}

.login-error-area {
    margin-top: 12px;
}

.error-message {
    visibility: hidden;
    position: relative;
    top: 0;
    left: 0;
    z-index: 5;
    display: block;
    background: #A0A0A0;
    border: 2px solid #000000;
    color: #FFFFFF;
    -ms-border-radius: 4px;
    border-radius: 4px;
    min-height: 30px;
    padding: 2px 5px 5px 5px;
    font-weight: bold;
    font-size: 11pt;
    box-sizing: border-box;
}

.field-validation-error {
    font-weight: bold;
}

/* Login Page Hover Effects */
.cardContainer {
    vertical-align: middle;
    position: relative;
}

.card {
    position: relative;
    top: 0;
    left: 0;
    width: 180px;
    height: 180px;
    padding: 4px;
    margin: 4px;
    -ms-opacity: 1;
    opacity: 1;
}

.cardHover {
    position: absolute;
    top: 0;
    left: 14px;
    width: 180px;
    height: 180px;
    padding: 4px;
    margin: 4px;
    -ms-opacity: 0;
    opacity: 0;
    -moz-transition: -webkit-transform .5s, opacity .5s ease-in-out;
    -webkit-transition: -webkit-transform .5s, opacity .5s ease-in-out;
    transition: transform .5s, opacity .5s ease-in-out;
}

    .cardHover:hover {
        -ms-opacity: 1;
        opacity: 1;
        -webkit-transform: rotate(180deg);
        transform: rotate(180deg);
    }

.cardSpacer {
    -ms-border-radius: 20px;
    border-radius: 20px;
    border-style: solid;
    border-width: 2px;
    filter: alpha(opacity=10);
    -ms-opacity: 0.1;
    opacity: 0.1;
    position: relative;
    top: 0;
    left: 0;
    width: 180px;
    height: 180px;
    padding: 4px;
    margin: 4px;
}

/* Home Page Hover Effects */
.homeContainer {
    vertical-align: middle;
    position: relative;
}

.homeMenuCard {
    position: relative;
    top: 0;
    left: 0;
    width: 180px;
    height: 180px;
    padding: 0;
    margin: 0;
    -ms-opacity: 1;
    opacity: 1;
}

.homeMenuCardHover {
    position: absolute;
    top: 0;
    left: 5px;
    width: 180px;
    height: 180px;
    padding: 0;
    margin: 0;
    -ms-opacity: 0;
    opacity: 0;
    -moz-transition: -webkit-transform .5s, opacity .3s ease-in-out;
    -webkit-transition: -webkit-transform .5s, opacity .3s ease-in-out;
    transition: transform .5s, opacity .3s ease-in-out;
}

    .homeMenuCardHover:hover {
        -ms-opacity: 1;
        opacity: 1;
        cursor: pointer;
    }

.homeSpacer {
    position: relative;
    top: 0;
    left: 0;
    width: 10px;
    width: 8px;
}

/* Bordered element */
.border-group {
    border: 0.5px solid #A0A0A0;
    padding: 10px
}

/* Left Nav Hover Effects */
.navContainer {
    vertical-align: middle;
    position: relative;
    overflow-y: hidden;
    overflow-x: hidden;
    padding: 0;
    margin: 0;
}

.navMenuCard {
    position: relative;
    top: 0;
    left: 0;
    width: 60px;
    height: 60px;
    padding: 0;
    margin: 0;
    -ms-opacity: 1;
    opacity: 1;
}

.navMenuCardHover {
    position: absolute;
    top: 0;
    left: 0;
    width: 167px;
    height: 60px;
    padding: 0;
    margin: 0;
    background-color: transparent;
    -ms-opacity: 0;
    opacity: 0;
    -moz-transition: -webkit-transform .5s, opacity .3s ease-in-out;
    -webkit-transition: -webkit-transform .5s, opacity .3s ease-in-out;
    transition: transform .5s, opacity .3s ease-in-out;
}

    .navMenuCardHover:hover {
        -ms-opacity: 1;
        opacity: 1;
        cursor: pointer;
        background-color: transparent;
    }

/* Standard data control */
.perceptionInput {
    background-color: transparent;
    cursor: default;
    color: #000;
}

    .perceptionInput:focus {
        background-color: transparent;
        cursor: default;
    }

    .required.perceptionInput {        
        cursor: default;
    }

    .required.perceptionInput:focus {        
        cursor: default;
    }

    .required.perceptionInput[readonly] {
        background-color: #f5f5f5;
        cursor: default;
    }

    .required.perceptionInput[disabled] {
        background-color: #f5f5f5;
        cursor: default;
    }

.control-label {
    font-weight: bold;
}

label.control-label > span, label.footer-label > span {
    font-weight: bold;
}

label.footer-label {
    font-weight: normal;
}

.required.perceptionInput[readonly]:focus {
    background-color: #d2d0d0;
    cursor: default;
}
.form-group.required .control-label:before {
    content: "*";
}
.form-group.required {
    color: #555;
}
.form-group .control-label {
    color: #555;
}
.control-label.required:before {
    content: "*";
}
/* Custom validation error messages */
label.error {
    color: #E64759;
    background-color: transparent;
}

.custom-error {
    color: #A03131;
    background-color: transparent;
    visibility: hidden;
    font-weight: bold;
}

.duplicate-error {
    color: #A03131;
    background-color: transparent;
    font-weight: bold;
}

.duplicateErrorDiv {
    visibility: hidden;
}

/* Overdue tasks */
.perceptionOverdue {
    color: #A03131;
    background-color: transparent;
}

/* Table Header Row */
.perceptionTableHeader {
    color: #374D81;
    background-color: #efefef;
    font-weight: bold;
}

/* Ssrs Report Viewer - Parameters */
.ReportViewer {
    position: relative;
    margin: 0;
    width: 100%;
    height: 100%;
    box-sizing: border-box;
}

.ReportViewerHeader {
    border-width: 2px;
    border-color: #374D81;
    border-style: solid;
    -ms-border-radius: 4px;
    border-radius: 4px;
    padding: 2px 8px 8px 8px;
    width: 100%;
}

.ParametersContainer {
    padding: 0;
    margin: 0;
}

.Parameters {
    padding: 0;
    margin: 0;
    border-style: none;
}

.ParameterRow {
    margin: 0;
    padding: 0;
    border-bottom-width: 1px;
    border-bottom-color: #d2d0d0;
    border-bottom-style: solid;
    padding-bottom: 5px;
    padding-top: 2px;
}

.Parameter {
    padding: 0;
}

.ParameterLabel {
    padding: 0;
    margin-top: 5px;
}

/* Above `.modal.show` / `.modal-backdrop` (12000 / 11950) and #loading-overlay (12500) */
.datepicker {
    z-index: 20600 !important;
}

.datepicker-dropdown,
.datepicker-dropdown.dropdown-menu {
    z-index: 20600 !important;
    display: block !important;
    max-height: none !important;
    height: auto !important;
    min-height: 0 !important;
    overflow: visible !important;
    width: auto !important;
}

.ReportViewerPager {
    margin: 0;
    padding: 0;
    padding-top: 5px;
}

/* Report Viewer toolbar: parameter header stays a light surface (white inputs) even in
   dark theme, so do NOT use global [data-bs-theme="dark"] white outline-button text here. */
.ReportViewerPager .btn-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
}

.ReportViewerHeader .btn-toolbar a.btn,
.ReportViewerHeader .btn-toolbar a.btn.btn-primary-outline,
.ReportViewerHeader .btn-toolbar a.btn.btn-default {
    margin-bottom: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.25rem;
    min-height: 34px;
    color: #374d81 !important;
    background-color: #fff !important;
    border: 1px solid #374d81 !important;
}

.ReportViewerHeader .btn-toolbar a.btn .icon,
.ReportViewerHeader .btn-toolbar a.btn .icon:before,
.ReportViewerHeader .btn-toolbar a.btn .glyphicon,
.ReportViewerHeader .btn-toolbar a.btn .material-symbols-outlined,
.ReportViewerHeader .btn-toolbar a.btn .vision-report-toolbar-icon {
    color: #374d81 !important;
}

.ReportViewerHeader .btn-toolbar a.btn:hover,
.ReportViewerHeader .btn-toolbar a.btn:focus,
.ReportViewerHeader .btn-toolbar a.btn:focus-visible {
    color: #fff !important;
    background-color: #374d81 !important;
    border-color: #374d81 !important;
}

.ReportViewerHeader .btn-toolbar a.btn:hover .icon,
.ReportViewerHeader .btn-toolbar a.btn:hover .icon:before,
.ReportViewerHeader .btn-toolbar a.btn:hover .glyphicon,
.ReportViewerHeader .btn-toolbar a.btn:hover .material-symbols-outlined,
.ReportViewerHeader .btn-toolbar a.btn:hover .vision-report-toolbar-icon,
.ReportViewerHeader .btn-toolbar a.btn:focus .icon,
.ReportViewerHeader .btn-toolbar a.btn:focus .icon:before,
.ReportViewerHeader .btn-toolbar a.btn:focus .glyphicon,
.ReportViewerHeader .btn-toolbar a.btn:focus .material-symbols-outlined,
.ReportViewerHeader .btn-toolbar a.btn:focus .vision-report-toolbar-icon {
    color: #fff !important;
}

.ReportViewerHeader .btn-toolbar .vision-report-toolbar-icon.icon:before {
    font-size: 18px;
    top: 0;
}

.ReportViewerHeader .btn-toolbar .material-symbols-outlined.vision-report-toolbar-icon {
    font-size: 20px;
    line-height: 1;
    font-variation-settings: 'FILL' 0, 'wght' 400, 'GRAD' 0, 'opsz' 24;
}

.ReportViewerHeader .btn-toolbar .dropdown-toggle.Export::after {
    display: inline-block;
    margin-inline-start: 0.2em;
    border-top-color: #374d81;
}

.ReportViewerHeader .btn-toolbar a.btn:hover.dropdown-toggle.Export::after,
.ReportViewerHeader .btn-toolbar a.btn:focus.dropdown-toggle.Export::after {
    border-top-color: #fff;
}

/* Beat global dark-theme outline button rule (white text on this light panel). */
[data-bs-theme="dark"] .ReportViewerHeader .btn-toolbar a.btn,
[data-bs-theme="dark"] .ReportViewerHeader .btn-toolbar a.btn.btn-primary-outline,
[data-bs-theme="dark"] .ReportViewerHeader .btn-toolbar a.btn.btn-default {
    color: #374d81 !important;
    background-color: #fff !important;
    border-color: #374d81 !important;
}

[data-bs-theme="dark"] .ReportViewerHeader .btn-toolbar a.btn .icon,
[data-bs-theme="dark"] .ReportViewerHeader .btn-toolbar a.btn .icon:before,
[data-bs-theme="dark"] .ReportViewerHeader .btn-toolbar a.btn .glyphicon,
[data-bs-theme="dark"] .ReportViewerHeader .btn-toolbar a.btn .material-symbols-outlined,
[data-bs-theme="dark"] .ReportViewerHeader .btn-toolbar a.btn .vision-report-toolbar-icon {
    color: #374d81 !important;
}

/* Ssrs Report Viewer - Report frame (border only; size/visibility in report-viewer-toolbar.css). */
.ReportViewerContentContainer {
    margin: 0;
    width: 100%;
    padding: 0;
    border: 2px solid #374D81;
    -ms-border-radius: 4px;
    border-radius: 4px;
    overflow: hidden;
    position: relative;
    box-sizing: border-box;
    overflow: -moz-scrollbars-none !important;
}

.ReportViewerContent {
    height: 100%;
    width: 100%;
    border: 0;
}

#oReportDiv {
    overflow: -moz-scrollbars-none !important;
    overflow-y: hidden !important;
    overflow-x: hidden !important;
}

.assessmentStatusGreen {
    height: 50px;
    width: 50px;
    background-color: green;
    color: white;
    border-radius: 50%;
    display: inline-block;
    box-shadow: 2px 2px 8px #888888;
}

.assessmentStatusYellow {
    height: 50px;
    width: 50px;
    background-color: yellow;
    color: dimgrey;
    border-radius: 50%;
    display: inline-block;
    box-shadow: 2px 2px 8px #888888;
}

.assessmentStatusRed {
    height: 50px;
    width: 50px;
    background-color: red;
    color: white;
    border-radius: 50%;
    display: inline-block;
    box-shadow: 2px 2px 8px #888888;
}

.confidentialRow {
    background-color: orange;
}


/* X-Larger modal window */
@media (min-width: 768px) {
    .modal-xl {
        width: 90%;
        max-width: 1050px;
    }
}

/* Employee / user picker (Group Members, task assign, etc.): wide dialog + scrollable results */
@media (min-width: 768px) {
    #search-employee-modal .modal-dialog.modal-xl {
        width: min(98vw, 1600px);
        max-width: min(98vw, 1600px);
    }
}

#search-employee-modal .employee-search-criteria {
    padding-bottom: 1.5rem;
}

#search-employee-modal .employee-search-results {
    padding-top: 1.25rem;
    border-top: 1px solid var(--bs-modal-footer-border-color, #dee2e6);
    max-height: min(560px, calc(100vh - 11rem));
    overflow-y: auto;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

#search-employee-modal .employee-search-results #totalRecords {
    margin-bottom: 1rem;
}

#search-employee-modal .employee-search-results .table-responsive {
    margin-top: 0.5rem;
    margin-bottom: 0;
}

/*
 * Bootstrap 5 modal compatibility shims.
 *
 * The toolkit-driven shims (overriding `.fade { opacity: 0 }`,
 * `.modal-dialog { transform: translate(0,-25%) }`, etc.) were removed when
 * `theme-dashboard` was unloaded. The shims kept below are NOT toolkit-driven
 * - they fight BS5 behaviour or BS3-era markup that still ships in our views,
 * and become removable only as the underlying markup migrates.
 *
 * z-index forcing: jQuery UI overlays sit at z-index 9999. Keep modal + dimmer
 * above them. Drop these once jQuery UI is removed/replaced.
 */
.modal.show {
    z-index: 12000 !important;
}

.modal-backdrop,
.modal-backdrop.show {
    z-index: 11950 !important;
}

/* TinyMCE toolbars/menus/dialogs append to body; default z-index (~1300) sits under .modal.show (12000). */
.tox-tinymce-aux,
.tox-dialog-wrap {
    z-index: 12400 !important;
}

/*
 * BS5 `.modal-header` is `display: flex`; keep our dark header visuals and
 * ensure the BS3-era `<button class="close">&times;</button>` aligns right.
 * Migrate to BS5 `<button type="button" class="btn-close" data-bs-dismiss="modal">`
 * when revisiting Razor.
 */
.modal-header .close {
    float: none;
    flex-shrink: 0;
    order: 99;
    margin-left: auto;
    margin-top: 0;
}

/* BS5 semantic close on dark `#444` headers — invert SVG to white */
.modal-header .btn-close {
    flex-shrink: 0;
    order: 99;
    margin-left: auto;
    margin-top: 0;
    opacity: 0.92;
    filter: invert(1) grayscale(100%) brightness(200%);
}

.modal-header .btn-close:hover {
    opacity: 1;
}

/*
 * Disable BS5's scrollbar compensation. ScrollBarHelper writes inline
 * `padding-right: <scrollbar-width>` onto <body> and every fixed/sticky
 * element (navbar, sidebar) when a modal opens, so layout doesn't jump
 * horizontally as the body scrollbar disappears. We keep the body scrollbar
 * visible (`overflow: visible`), so the compensation just reflows the navbar,
 * grows it, and pushes the sidebar down ~20px every modal open. !important
 * defeats the inline style BS5 writes.
 */
body.modal-open {
    overflow: visible !important;
    padding-right: 0 !important;
}

body.modal-open .fixed-top,
body.modal-open .fixed-bottom,
body.modal-open .sticky-top,
body.modal-open #sidebar {
    padding-right: 0 !important;
    margin-right: 0 !important;
}

/*
 * Do not zero `.navbar` / `.navbar-fixed-top` padding here: that rule was meant to mirror
 * Bootstrap's modal scrollbar compensation, but it overrides our combined
 * `.navbar.navbar-fixed-top { padding-right: max(...) }` (same !important; loses on
 * specificity) and clips the right-hand nav (help, user menu) on short pages.
 */
body.modal-open .navbar.navbar-fixed-top {
    padding-right: max(
        var(--vision-navbar-inset-right),
        calc(var(--vision-main-content-padding-x) + max(18px, calc(100vw - 100% + 14px)))
    ) !important;
    margin-right: 0 !important;
}

.modal {
    padding-right: 0 !important;
}

@media print {
    .no-print, .no-print * {
        display: none !important;
    }

    .print-body {
        position: absolute;
        top: 0;
        left: 0;
        width: 100%;
        margin: 0;
        padding: 0;
    }
}


@-webkit-keyframes spinner-border {
    to {
        -webkit-transform: rotate(360deg);
        transform: rotate(360deg);
    }
}

@keyframes spinner-border {
    to {
        -webkit-transform: rotate(360deg);
        transform: rotate(360deg);
    }
}

.spinner-border {
    display: inline-block;
    width: 2rem;
    height: 2rem;
    vertical-align: text-bottom;
    border: 0.25em solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    -webkit-animation: .75s linear infinite spinner-border;
    animation: .75s linear infinite spinner-border;
}

.spinner-border-sm {
    width: 1rem;
    height: 1rem;
    border-width: 0.2em;
}

/*Grey Table header inside accordion  */
.grey.lighten-2 {
    background-color: #B3BAC9 !important;
    color: white;
    border: 4px solid;
}

.column-container {
    margin: 0px;
}

/* shorthand classes */

.pad15 {
    padding: 15px;
}

.pad20 {
    padding: 20px;
}

.left20 {
    position: absolute;
    left: 20px;
}

.clear {
    clear: both;
}

/* Toggleable tabs */
.tab-content {
    border: 1px solid #ddd;
}

/* Applicant documents grid: uses same compact panel table + .btn-sm rules above.
   Strip all four `.tab-content` borders so the table only shows BS3 horizontal row
   borders, matching every other in-panel grid. */
.applicant-tracking-docs-tab-body.tab-content {
    border: 0;
}

/* Personnel Jacket (Bootstrap tabs): ensure only one pane is visible. Inner accordions use
   .collapse.show { display:block !important }; without a stronger rule, inactive .tab-pane
   subtrees can still paint. ApplicantTracking document control has no .tab-pane children. */
.applicant-tracking-docs-tab-body.tab-content > .tab-pane:not(.active) {
    display: none !important;
}
.applicant-tracking-docs-tab-body.tab-content > .tab-pane.active {
    display: block !important;
}

/* PJ tab row: do not inherit global .nav-tabs pill rounding (15px) from site.2.0.0.css */
.applicant-tracking-doc-tabs.nav-tabs {
    border-radius: 0;
}

.applicant-tracking-doc-tabs.nav-tabs > li > a,
.applicant-tracking-doc-tabs.nav-tabs > li > a.nav-link {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}

/* Documents panel filter tabs: spread evenly across the panel width and separate with
   a thin divider so the filters read as distinct buckets instead of a row of links. */
.applicant-tracking-doc-tabs {
    display: flex;
    flex-wrap: wrap;
    padding: 0;
    list-style: none;
    border-bottom: 1px solid #ddd;
}

.applicant-tracking-doc-tabs > li {
    flex: 1 1 0;
    min-width: 0;
    text-align: center;
    margin: 0;
    padding: 0;
}

.applicant-tracking-doc-tabs > li > a {
    display: block;
    padding: 8px 10px;
    color: #374D81;
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    border-radius: 0;
    background-color: transparent;
}

/* BS5 Tab moves .active onto the trigger <a> (e.g. Personnel Jacket real tabs); applicant filter tabs keep .active on <li>. */
.applicant-tracking-doc-tabs > li > a.nav-link {
    border: none;
    margin-bottom: 0;
}

/* Divider on the <a> (not the <li>) so it only spans the actual tab height. */
.applicant-tracking-doc-tabs > li + li > a {
    border-left: 1px solid #ddd;
}

.applicant-tracking-doc-tabs > li > a:hover,
.applicant-tracking-doc-tabs > li > a:focus {
    background-color: rgba(55, 77, 129, 0.08);
    color: #374D81;
}

.applicant-tracking-doc-tabs > li.active > a,
.applicant-tracking-doc-tabs > li.active > a:hover,
.applicant-tracking-doc-tabs > li.active > a:focus,
.applicant-tracking-doc-tabs > li > a.nav-link.active,
.applicant-tracking-doc-tabs > li > a.nav-link.active:hover,
.applicant-tracking-doc-tabs > li > a.nav-link.active:focus {
    background-color: #374D81;
    color: #ffffff;
    font-weight: 600;
}

.nav-tabs {
    border-bottom: none;
    border-radius: 15px;
}

.margin-horizontal {
    margin-left: 20px;
    margin-right: 20px;
}

.required.VisionInput {
    border-color: red;
}

#profileImage {
    width: 100%;
    height: auto;
    max-width: 200px;
    max-height: 200px;
    min-width: 120px;
    object-fit: cover;
    object-position: center;
    border: 2px solid rgba(224, 224, 224, 0.71);
    border-radius: 4px;
    padding: 4px;
    background-color: white;
}

/* Side Application Module Menu Base Styles */

.menu-separator {
    border-bottom: 2px solid #bfbfbf;
    width: 100%;
}

.modules-pane {
    position: -webkit-sticky;
    position: sticky;
    top: var(--vision-navbar-fixed-clearance);
    align-self: flex-start;
    flex-shrink: 0;
    width: 200px;
    max-height: calc(100vh - var(--vision-navbar-fixed-clearance));
    overflow-y: auto;
    background-color: #f8f9fa;
    box-shadow: 0 0 2px rgba(0,0,0,0.12), 0px 2px 4px rgba(0,0,0,0.14);
    transition: width 0.2s ease-in-out;
    font-size: 13px;
    color: #201f1e;
    z-index: 21;
    margin-top: 0;
    margin-left: -1px;
    box-sizing: border-box;
}

.gutter-pane-link {
    color: #000;
    white-space: nowrap;
    text-overflow: ellipsis;
}

/* Collapsed State */
.modules-pane.collapsed {
    width: 48px;
}

/* Hide text when collapsed */
.modules-pane.collapsed .gutter-pane-text,
.modules-pane.collapsed .group-text,
.modules-pane.collapsed .pin-icon {
    display: none;
}

/* Navigation List (positioned for .modules-pane-flyout containment) */
.gutter-list {
    position: relative;
    display: flex;
    flex-direction: column;
}

/* Navigation Items */
.gutter-pane-link,
.modules-pane-group {
    display: flex;
    align-items: center;
    padding: 0 12px;
    height: 36px;
    cursor: pointer;
    position: relative;
    user-select: none;
}

.gutter-pane-link:hover,
.modules-pane-group:hover {
    background-color: #bfbfbf;
}

.gutter-pane-link:hover .gutter-pane-text,
.modules-pane-group:hover .gutter-pane-text {
    color: inherit;
}

.gutter-pane-link:hover,
.modules-pane-group:hover {
    background-color: #bfbfbf;
    color: #000;
}

.gutter-pane-link:hover .gutter-pane-text,
.modules-pane-group:hover .gutter-pane-text {
    color: #000;
}

a:focus, a:active {
    text-decoration: none;
    outline: none;
    color: inherit;
}

/* Fixed width for icon container */
.workspace-icon {
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-right: 8px;
    flex-shrink: 0; /* Prevent shrinking */
}

.workspace-icon i {
    font-size: 16px;
    color: #605e5c;
}

/* Selection Indicators */
.gutter-pane-selected,
.modules-pane-group-selected {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 3px;
    background-color: #0078d4;
    opacity: 0;
}

[data-selected="true"] .gutter-pane-selected,
[data-selected="true"] .modules-pane-group-selected {
    opacity: 1;
}

/* Pin Button */
.modules-pane-pin {
    position: absolute;
    top: 8px;
    right: 8px;
    width: 32px;
    height: 32px;
    border: none;
    background: transparent;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 2px;
}

.modules-pane-opener {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 12px;
    height: 36px;
    cursor: pointer;
    position: relative;
    user-select: none;
}

.modules-pane-pin {
    width: 24px;
    height: 24px;
    border: none;
    background: transparent;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 2px;
}

.material-symbols-outlined {
    font-variation-settings: 'FILL' 0,
    'wght' 400,
    'GRAD' 0,
    'opsz' 24
}

.tooltip {
    pointer-events: none;
    z-index: 1100;
}

/* BS3 (.right/.bottom) and BS5 (.bs-tooltip-end, etc.) placement classes */
.tooltip.right,
.tooltip.bs-tooltip-end,
.tooltip[data-popper-placement^="right"] {
    position: fixed;
    margin-left: 0;
}

.tooltip-inner {
    background-color: #bfbfbf;
    color: black;
    padding: 5px 10px;
    border-radius: 4px;
    font-size: 12px;
    max-width: none;
    white-space: nowrap;
}

.tooltip.right .tooltip-arrow,
.tooltip.bs-tooltip-end .tooltip-arrow::before,
.tooltip[data-popper-placement^="right"] .tooltip-arrow::before {
    border-right-color: #bfbfbf;
}

.tooltip.bottom .tooltip-arrow,
.tooltip.bs-tooltip-bottom .tooltip-arrow::before,
.tooltip[data-popper-placement^="bottom"] .tooltip-arrow::before {
    border-bottom-color: #bfbfbf;
}

.no-transition {
    transition: none !important;
}

/* Flyout */
.modules-pane-flyout {
    position: absolute;
    left: 100%;
    top: 0;
    height: 100%;
    background-color: #fff;
    box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0px 2px 4px rgba(0, 0, 0, 0.14);
    display: none;
}

.slide-in-left {
    -webkit-animation: slideInLeft 0.2s ease-in-out;
    animation: slideInLeft 0.2s ease-in-out;
}


@-webkit-keyframes slideInLeft {
    from {
        -webkit-transform: translateX(-100%);
        transform: translateX(-100%);
    }
    to {
        -webkit-transform: translateX(0);
        transform: translateX(0);
    }
}


@keyframes slideInLeft {
    from {
        -webkit-transform: translateX(-100%);
        transform: translateX(-100%);
    }
    to {
        -webkit-transform: translateX(0);
        transform: translateX(0);
    }
}

/* Custom btn-outline-primary styles - High specificity to override Bootstrap */
.btn.btn-outline-primary,
button.btn-primary-outline,
input[type="button"].btn-primary-outline,
input[type="submit"].btn-primary-outline,
a.btn.btn-primary-outline {
    color: #374D81 !important;
    border-color: #374D81 !important;
    background-color: transparent !important;
}

.btn.btn-primary-outline:hover,
.btn.btn-primary-outline:focus,
.btn.btn-primary-outline:focus-visible,
.btn.btn-primary-outline:active,
.btn.btn-primary-outline.active,
.btn.btn-primary-outline:not(:disabled):not(.disabled):active,
button.btn-primary-outline:hover,
button.btn-primary-outline:focus,
button.btn-primary-outline:focus-visible,
button.btn-primary-outline:active,
input[type="button"].btn-primary-outline:hover,
input[type="button"].btn-primary-outline:focus,
input[type="button"].btn-primary-outline:focus-visible,
input[type="button"].btn-primary-outline:active,
input[type="submit"].btn-primary-outline:hover,
input[type="submit"].btn-primary-outline:focus,
input[type="submit"].btn-primary-outline:focus-visible,
input[type="submit"].btn-primary-outline:active,
a.btn.btn-primary-outline:hover,
a.btn.btn-primary-outline:focus,
a.btn.btn-primary-outline:focus-visible,
a.btn.btn-primary-outline:active {
    color: white !important;
    background-color: #374D81 !important;
    border-color: #374D81 !important;
}

/* Additional specificity to override Bootstrap defaults */
.btn-primary-outline:not(:disabled):not(.disabled) {
    color: #374D81 !important;
    border-color: #374D81 !important;
}

/* Ensure text decoration is removed for anchor buttons */
a.btn.btn-primary-outline,
a.btn.btn-primary-outline:hover,
a.btn.btn-primary-outline:focus,
a.btn.btn-primary-outline:active {
    text-decoration: none !important;
}

button.btn.btn-primary-outline:hover,
button.btn.btn-primary-outline:hover span,
button.btn.btn-primary-outline:focus,
button.btn.btn-primary-outline:focus span,
button.btn.btn-primary-outline:active,
button.btn.btn-primary-outline:active span {
    color: white !important;
    background-color: #374D81 !important;
    border-color: #374D81 !important;
}

.bg-primary {
    background-color: #374D81 !important;
}

/* BS5 `.table` inset box-shadow covers `thead.bg-primary`; paint panel subgrid headers explicitly. */
html:not([data-bs-theme="dark"]) thead.bg-primary > tr > th,
html:not([data-bs-theme="dark"]) thead.bg-primary > tr > td,
html:not([data-bs-theme="dark"]) .panel .panel-body table.table thead.bg-primary > tr > th,
html:not([data-bs-theme="dark"]) .panel .panel-body table.table thead.bg-primary > tr > td {
    background-color: #fff !important;
    color: #000 !important;
    box-shadow: none !important;
}

html[data-bs-theme="dark"] thead.bg-primary > tr > th,
html[data-bs-theme="dark"] thead.bg-primary > tr > td,
html[data-bs-theme="dark"] .panel .panel-body table.table thead.bg-primary > tr > th,
html[data-bs-theme="dark"] .panel .panel-body table.table thead.bg-primary > tr > td {
    background-color: transparent !important;
    color: #fff !important;
    box-shadow: none !important;
}

/* Chron log panel only: distinct header bar (not the default white subgrid header). */
html:not([data-bs-theme="dark"]) #chronDetail .table thead > tr > th {
    background-color: #337ab7 !important;
    color: #fff !important;
    box-shadow: none !important;
    position: relative;
    z-index: 2;
}

html[data-bs-theme="dark"] #chronDetail .table thead > tr > th {
    background-color: #337ab7 !important;
    color: #fff !important;
    box-shadow: none !important;
    position: relative;
    z-index: 2;
}

.nav-pills > .nav-item.no-print.active > a {
    background-color: #374D81 !important;
    color: white !important;
}

/* VisionMenu secondary row (e.g. SYSADMIN Security Admin): compact pill links */
.vision-submenu-nav {
    margin: 0;
}

.vision-submenu-pills {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    padding: 0;
    margin: 0;
    list-style: none;
    border: none;
}

.vision-submenu-pills > .vision-submenu-pill {
    float: none;
    margin-right: 0.5rem;
    margin-bottom: 0.35rem;
}

.vision-submenu-pills > .vision-submenu-pill > .nav-link {
    display: inline-block;
    border-radius: 999px;
    padding: 0.35rem 1rem;
    font-size: 0.95rem;
    font-weight: 500;
    line-height: 1.35;
    text-decoration: none;
    border: 1px solid transparent;
    color: #374d81;
    background-color: rgba(55, 77, 129, 0.1);
}

.vision-submenu-pills > .vision-submenu-pill > .nav-link:hover,
.vision-submenu-pills > .vision-submenu-pill > .nav-link:focus {
    color: #2a4070;
    background-color: rgba(55, 77, 129, 0.16);
    text-decoration: none;
}

.vision-submenu-pills > .vision-submenu-pill > .nav-link.active,
.vision-submenu-pills > .vision-submenu-pill > .nav-link.active:hover,
.vision-submenu-pills > .vision-submenu-pill > .nav-link.active:focus {
    color: #ffffff !important;
    background-color: #374d81 !important;
    border-color: #374d81;
}

html[data-bs-theme="dark"] .vision-submenu-pills > .vision-submenu-pill > .nav-link {
    color: #e8ecf7;
    background-color: rgba(255, 255, 255, 0.08);
    border-color: rgba(255, 255, 255, 0.2);
}

html[data-bs-theme="dark"] .vision-submenu-pills > .vision-submenu-pill > .nav-link:hover,
html[data-bs-theme="dark"] .vision-submenu-pills > .vision-submenu-pill > .nav-link:focus {
    color: #ffffff;
    background-color: rgba(255, 255, 255, 0.14);
}

html[data-bs-theme="dark"] .vision-submenu-pills > .vision-submenu-pill > .nav-link.active,
html[data-bs-theme="dark"] .vision-submenu-pills > .vision-submenu-pill > .nav-link.active:hover,
html[data-bs-theme="dark"] .vision-submenu-pills > .vision-submenu-pill > .nav-link.active:focus {
    color: #ffffff !important;
    background-color: #374d81 !important;
    border-color: #374d81;
}

/* Brand “info” strip: navy background — must override BS5 --bs-alert-* or text stays dark on blue (light theme). */
.alert-dark {
    --bs-alert-color: #ffffff;
    --bs-alert-bg: #374d81;
    --bs-alert-border-color: #2a4070;
    --bs-alert-link-color: #e8ecf7;
    background-color: #374d81 !important;
    border-color: #2a4070 !important;
    color: #ffffff !important;
}

.alert-dark .alert-link {
    color: #e8ecf7 !important;
}

.alert-dark .material-symbols-outlined {
    color: #ffffff;
}

.ul.li.nav-item.no-print.active > a {
    background-color: #374D81 !important;
}
/* App title — white on brand bar; vertically centered in header row */
.navbar-header.navbar-title > h1.navbar-brand.app-title {
    margin: 0 0 0 2px;
    padding: 0 10px;
    min-height: 44px;
    font-size: 19px;
    font-weight: bold;
    display: inline-flex;
    align-items: center;
    line-height: 1.25;
    box-sizing: border-box;
    text-decoration: none;
    color: #ffffff !important;
}

.select2-container--classic .select2-selection--multiple .select2-selection__choice {
    background-color: rgba(228, 228, 228, 0.32) !important;
}

#pagin > li > a {
    color: black;
}

/* Notification Bell Styles */
#notification-bell {
    position: relative;
    flex-shrink: 0;
    visibility: visible !important;
    opacity: 1 !important;
}

#notification-bell > a,
#notification-bell > a.notification-bell-link {
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    min-height: 2rem;
    padding: 2px 8px !important;
    top: 0 !important;
    font-size: 16px;
    line-height: 1;
    color: #ffffff !important;
    margin-right: 10px;
}

#notification-bell .icon-bell:before {
    font-size: 1.25rem;
}

.notification-badge {
    position: absolute;
    top: -2px;
    right: -8px;
    background-color: #dc3545;
    color: white;
    border-radius: 50%;
    padding: 2px 6px;
    font-size: 10px;
    font-weight: bold;
    line-height: 1;
    min-width: 18px;
    text-align: center;
    z-index: 1000;
}

/* Bell trigger (not a Bootstrap dropdown-toggle — panel is toggled in JS) */
.notification-bell-link {
    cursor: pointer;
}

/* Notification Dropdown Styles */
.notification-dropdown {
    min-width: 350px;
    max-width: 380px;
    width: 365px;
    max-height: 450px;
    overflow-y: auto;
    border: 1px solid #dee2e6;
    border-radius: 4px;
    box-shadow: 0 2px 10px rgba(0,0,0,0.1);
    font-size: 14px;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
    padding: 0 !important; /* Remove default Bootstrap padding */
    margin: 0 !important; /* Remove default Bootstrap margin */
}

.notification-dropdown .dropdown-header {
    padding: 12px 16px;
    background: #f8f9fa;
    border-bottom: 1px solid #dee2e6;
    font-size: 14px;
    font-weight: 600;
    color: #495057;
    margin-top: 0 !important; /* Remove any top margin */
    border-top-left-radius: 4px;
    border-top-right-radius: 4px;
}

.notification-dropdown .dropdown-header:first-child {
    margin-top: 0 !important;
    padding-top: 12px !important;
}

.notification-dropdown .dropdown-footer {
    padding: 12px 16px;
    background: #f8f9fa;
    border-top: 1px solid #dee2e6;
    text-align: center;
}

.notification-dropdown .dropdown-footer a {
    font-size: 13px;
    color: #007bff;
    text-decoration: none;
    font-weight: 500;
}

.notification-dropdown .dropdown-footer a:hover {
    text-decoration: underline;
}

.notification-item {
    padding: 12px 16px !important;
    border-bottom: 1px solid #f1f3f4 !important;
    cursor: pointer !important;
    background: white !important;
    min-height: 60px;
    transition: background-color 0.2s ease;
}

.notification-item:hover {
    background-color: #f8f9fa !important;
}

.notification-item:last-child {
    border-bottom: none !important;
}

.notification-loading, .notification-empty {
    text-align: center;
    padding: 20px 16px;
    color: #6c757d;
    font-style: italic;
    font-size: 13px;
    background: white;
}

.notification-empty {
    color: #495057;
}

/* Notifications panel visibility is controlled in notifications.1.0.0.js (do not force open via .open / !important — it overrides inline hide and fights Bootstrap 5). */

/* Close dropdown when clicking outside */
.notification-dropdown-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: 999;
}

/* jQuery UI Autocomplete Styles */
.ui-autocomplete {
    max-height: 300px;
    overflow-y: auto;
    overflow-x: hidden;
    z-index: 10050 !important;
    background-color: #fff;
    border: 1px solid #ccc;
    border-radius: 4px;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
    padding: 0;
    list-style: none;
    margin: 0;
    font-size: 14px;
}

.ui-autocomplete .ui-menu-item {
    margin: 0;
    padding: 0;
    border: none;
}

.ui-autocomplete .ui-menu-item-wrapper {
    display: block;
    padding: 10px 12px;
    cursor: pointer;
    color: #333;
    text-decoration: none;
    border-bottom: 1px solid #f0f0f0;
}

.ui-autocomplete .ui-menu-item:last-child .ui-menu-item-wrapper {
    border-bottom: none;
}

.ui-autocomplete .ui-menu-item-wrapper:hover,
.ui-autocomplete .ui-state-focus {
    background-color: #374D81;
    color: #fff;
    border-color: #374D81;
}

.ui-helper-hidden-accessible {
    position: absolute;
    left: -9999px;
    clip: rect(0, 0, 0, 0);
}

/* Applicant Tracking edit modals: first label column right-aligns to its field. */
#edit-application-review-modal .control-label,
#edit-employment-history-modal .control-label,
#edit-pre-screen-review-modal .control-label,
#edit-psychological-testing-modal .control-label,
#edit-polygraph-exam-modal .control-label,
#edit-physical-testing-modal .control-label,
#edit-background-investigation-modal .control-label,
#edit-recruiting-interview-modal .control-label,
#edit-selection-modal .control-label,
#edit-disclosure-interview-modal .control-label,
#edit-fitness-test-modal .control-label,
#edit-conditional-offer-of-employment-modal .control-label,
#edit-medical-clearance-modal .control-label,
#edit-panel-interview-modal .control-label,
#edit-applicant-notes-modal .control-label,
#edit-reference-modal .control-label,
#edit-application-final-step-modal .control-label,
#edit-command-staff-approval-modal .control-label,
#edit-pre-selection-modal .control-label,
#edit-polygraph-test-results-modal .control-label,
#writtenExamModal .control-label {
    text-align: right;
}

/* Two-pair rows (label | field | label | field): label columns left-align in narrow col-md-2. */
#edit-application-review-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-application-review-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-employment-history-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-employment-history-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-pre-screen-review-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-pre-screen-review-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-psychological-testing-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-psychological-testing-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-polygraph-exam-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-polygraph-exam-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-physical-testing-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-physical-testing-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-background-investigation-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-background-investigation-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-recruiting-interview-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-recruiting-interview-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-selection-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-selection-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-disclosure-interview-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-disclosure-interview-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-fitness-test-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-fitness-test-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-conditional-offer-of-employment-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-conditional-offer-of-employment-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-medical-clearance-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-medical-clearance-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-panel-interview-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-panel-interview-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-applicant-notes-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-applicant-notes-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-reference-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-reference-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-application-final-step-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-application-final-step-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-command-staff-approval-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-command-staff-approval-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-pre-selection-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-pre-selection-modal .modal-body > .row.form-group > *:nth-child(3) .control-label,
#edit-polygraph-test-results-modal .modal-body > .row.form-group > *:nth-child(1) .control-label,
#edit-polygraph-test-results-modal .modal-body > .row.form-group > *:nth-child(3) .control-label {
    text-align: left;
}

/* Written exam modal: right column in each half (nested col-sm-6 layout). */
#writtenExamModal .col-sm-6 + .col-sm-6 .control-label {
    text-align: left;
}

/* Modal forms: left-align labels (legacy horizontal-form pull-right beside fields). */
.modal .modal-body .control-label.pull-right,
.modal .modal-body label.pull-right,
.modal .modal-body span.control-label.pull-right {
    float: none !important;
    text-align: left !important;
}

/* Row hover for all Bootstrap data tables (including tables without .table-hover). */
html[data-bs-theme="light"] .table > tbody > tr:hover > td,
html[data-bs-theme="light"] .table > tbody > tr:hover > th,
html[data-bs-theme="light"] .table > tfoot > tr:hover > td,
html[data-bs-theme="light"] .table > tfoot > tr:hover > th {
    background-color: #e9ecef;
}

html[data-bs-theme="dark"] .table > tbody > tr:hover > td,
html[data-bs-theme="dark"] .table > tbody > tr:hover > th,
html[data-bs-theme="dark"] .table > tfoot > tr:hover > td,
html[data-bs-theme="dark"] .table > tfoot > tr:hover > th {
    background-color: #3d4147;
}

/* ============================================================================
 * Dark theme overrides
 *
 * Activated by `<html data-bs-theme="dark">`, which the layouts set when the
 * user toggles Light/Dark via Home/SwitchTheme. BS5.3 auto-swaps its own
 * --bs-* tokens for dark, but many rules in this file (and theme-shims) use
 * hardcoded colors with `!important` that beat those tokens. The overrides
 * below give dark mode a usable starting point; expect to refine these as
 * the BS3 -> BS5 migration progresses.
 * ========================================================================== */

/* Force body bg/color in dark mode. Use explicit hex values (not BS5 tokens)
   so the rule does not depend on --bs-body-bg resolving correctly through the
   cascade. `!important` because some legacy rules in this codebase set body
   styles aggressively. Keep this exhaustive: html + body covers both the
   viewport bg (visible during scroll bounce on some browsers) and the body
   surface itself. */
html[data-bs-theme="dark"],
html[data-bs-theme="dark"] body {
    background-color: #212529 !important;
    color: #dee2e6 !important;
}

/* Ensure main content layers stay transparent so the dark body bg shows
   through. .panel is already transparent in theme-shims; restate for safety. */
[data-bs-theme="dark"] .body-content,
[data-bs-theme="dark"] .wrapper,
[data-bs-theme="dark"] .container,
[data-bs-theme="dark"] .container-fluid,
[data-bs-theme="dark"] .panel,
[data-bs-theme="dark"] .panel-body,
[data-bs-theme="dark"] .panel-group {
    background-color: transparent !important;
}

/* Table body cells: file hardcodes `color: #000 !important`. */
[data-bs-theme="dark"] tbody tr td {
    color: var(--bs-body-color) !important;
}

/* Form labels (hardcoded #555). */
[data-bs-theme="dark"] .form-group .control-label,
[data-bs-theme="dark"] .form-group.required,
[data-bs-theme="dark"] .control-label {
    color: var(--bs-body-color);
}

/* Hand-rolled .form-control-inline* shims hardcode white bg + dark text. */
[data-bs-theme="dark"] .form-control-inline,
[data-bs-theme="dark"] .form-control-inline-100 {
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}

/* .perceptionInput defaults to transparent + #000 (BS3 panels). Under dark theme,
   text inputs and textareas must use body tokens or they ignore the switch. */
[data-bs-theme="dark"] input.perceptionInput:not([readonly]):not([disabled]),
[data-bs-theme="dark"] textarea.perceptionInput:not([readonly]):not([disabled]),
[data-bs-theme="dark"] select.perceptionInput:not([disabled]) {
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}

[data-bs-theme="dark"] input.perceptionInput:focus:not([readonly]):not([disabled]),
[data-bs-theme="dark"] textarea.perceptionInput:focus:not([readonly]):not([disabled]),
[data-bs-theme="dark"] select.perceptionInput:focus:not([disabled]) {
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
}

/* Readonly/disabled inputs hardcode #f5f5f5 backgrounds. */
[data-bs-theme="dark"] .required.perceptionInput[readonly],
[data-bs-theme="dark"] .required.perceptionInput[disabled],
[data-bs-theme="dark"] .required.perceptionInput[readonly]:focus {
    background-color: var(--bs-tertiary-bg);
    color: var(--bs-body-color);
}

/* Sidebars (two flavours): Calgary uses .modules-pane, Platform uses #sidebar.
   Both layouts share the dark body, so give the rail a visibly different shade
   (BS5 --bs-secondary-bg, #343a40) plus a right border so it stands out — the
   original soft shadow is invisible against the dark body. */
[data-bs-theme="dark"] .modules-pane,
[data-bs-theme="dark"] .modules-pane-flyout,
[data-bs-theme="dark"] #sidebar {
    background-color: #343a40;
    color: #e9ecef;
    border-right: 1px solid #495057;
    box-shadow: none;
}

/* Platform #sidebar nav items use inline `background-color: transparent` on
   the <li> and <a>, which is fine; they hold icon PNGs designed for a light
   surface. Lift the icons with a subtle hover so the rail is interactive. */
[data-bs-theme="dark"] #sidebar .nav-item:hover,
[data-bs-theme="dark"] #sidebar .nav-item a:hover {
    background-color: #495057 !important;
}

[data-bs-theme="dark"] .gutter-pane-link,
[data-bs-theme="dark"] .modules-pane-group {
    color: #e9ecef;
}

[data-bs-theme="dark"] .gutter-pane-link:hover,
[data-bs-theme="dark"] .modules-pane-group:hover {
    background-color: #3d4147;
    color: #ffffff;
}

[data-bs-theme="dark"] .gutter-pane-link:hover .gutter-pane-text,
[data-bs-theme="dark"] .modules-pane-group:hover .gutter-pane-text {
    color: #ffffff;
}

[data-bs-theme="dark"] .workspace-icon i {
    color: #adb5bd;
}

/* Tooltips (base rule uses light-gray bg + black text). */
[data-bs-theme="dark"] .tooltip-inner {
    background-color: #495057;
    color: #fff;
}

[data-bs-theme="dark"] .tooltip.right .tooltip-arrow,
[data-bs-theme="dark"] .tooltip.bs-tooltip-end .tooltip-arrow::before,
[data-bs-theme="dark"] .tooltip[data-popper-placement^="right"] .tooltip-arrow::before {
    border-right-color: #495057;
}

[data-bs-theme="dark"] .tooltip.bottom .tooltip-arrow,
[data-bs-theme="dark"] .tooltip.bs-tooltip-bottom .tooltip-arrow::before,
[data-bs-theme="dark"] .tooltip[data-popper-placement^="bottom"] .tooltip-arrow::before {
    border-bottom-color: #495057;
}

/* BS3 panel heading (theme-shims hardcodes light bg + slate text). */
[data-bs-theme="dark"] .panel-default > .panel-heading,
[data-bs-theme="dark"] .panel-footer {
    background-color: var(--bs-secondary-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}

/* BS3 .panel-title (this file forces #000 !important above). Beats both the
   bare .panel-title rule and the .panel-title > a variant so headings inside
   .panel-default (e.g. the Analytics card on the Applicant Tracking landing
   page) follow the dark theme instead of staying black on the dark surface.
   Excludes .panel-aqua* variants which intentionally use a colored heading
   with white text on both themes. */
[data-bs-theme="dark"] .panel-default > .panel-heading .panel-title,
[data-bs-theme="dark"] .panel-default > .panel-heading .panel-title > a {
    color: var(--bs-body-color) !important;
}

/* .toggle-accordion lives in .panel-body (e.g. Applicant Tracking) — outside
   .panel-heading so it still picks up default link / :visited purple. */
[data-bs-theme="dark"] a.toggle-accordion,
[data-bs-theme="dark"] a.toggle-accordion:link,
[data-bs-theme="dark"] a.toggle-accordion:visited,
[data-bs-theme="dark"] a.toggle-accordion:hover,
[data-bs-theme="dark"] a.toggle-accordion:focus {
    color: var(--bs-body-color) !important;
}

/* Navbar dropdown items (this file forces #000 !important on light theme). */
[data-bs-theme="dark"] .dropdown > .dropdown-menu > li > a,
[data-bs-theme="dark"] .dropdown > .dropdown-menu > .dropdown-menu-release > a {
    color: var(--bs-body-color) !important;
}

[data-bs-theme="dark"] .navbar .dropdown-menu > li > a:hover,
[data-bs-theme="dark"] .navbar .dropdown-menu > li > a:focus {
    background-color: #3d4147;
}

/* Notification dropdown: this file hardcodes a light surface, white item
   backgrounds, a soft-gray header/footer (#f8f9fa) and light borders (#dee2e6),
   some with !important. BS5.3 dark tokens can't beat !important so each
   property is restated at matching specificity. */
[data-bs-theme="dark"] .notification-dropdown {
    background-color: var(--bs-body-bg);
    border-color: var(--bs-border-color);
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.35);
}

[data-bs-theme="dark"] .notification-dropdown .dropdown-header,
[data-bs-theme="dark"] .notification-dropdown .dropdown-footer {
    background-color: var(--bs-secondary-bg);
    color: var(--bs-body-color);
    border-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .notification-dropdown .notification-item {
    background-color: var(--bs-body-bg) !important;
    border-color: var(--bs-border-color) !important;
    color: var(--bs-body-color) !important;
}

[data-bs-theme="dark"] .notification-dropdown .notification-item:hover {
    background-color: var(--bs-tertiary-bg) !important;
}

[data-bs-theme="dark"] .notification-dropdown .notification-loading,
[data-bs-theme="dark"] .notification-dropdown .notification-empty {
    background-color: var(--bs-body-bg);
    color: var(--bs-body-color);
}

/* Outline-primary buttons at rest. This file hardcodes color: #374D81 at the
   rest state (lines ~1948 and ~1983) and color: white only on :hover/:focus/
   :active. #374D81 is a dark navy that on the dark body background reads as
   an unreadable purple/indigo blob (user description). The hover state's
   white text is already legible against the filled #374D81 background, so
   we only override the rest state. The selectors mirror the !important rules
   above; the [data-bs-theme="dark"] attribute selector adds enough
   specificity to win between two !important declarations.
   Icon color is intentionally not addressed separately: the existing rules
   set `color` (not a child rule), and the inline icons inherit it. */
[data-bs-theme="dark"] .btn.btn-outline-primary,
[data-bs-theme="dark"] button.btn-primary-outline,
[data-bs-theme="dark"] input[type="button"].btn-primary-outline,
[data-bs-theme="dark"] input[type="submit"].btn-primary-outline,
[data-bs-theme="dark"] a.btn.btn-primary-outline,
[data-bs-theme="dark"] .btn-primary-outline:not(:disabled):not(.disabled) {
    color: white !important;
}

/* Progress stepper (Applicant Tracking / Application page).
   progressStepper.1.0.0.js injects a <style id="stepperStyles"> block into
   <head> at runtime with hardcoded light-theme colors (#f5f5f5 container,
   #fff circles, #000 borders/icons/lines, #888 description text). That
   <style> is appended AFTER our <link>s load so equal-specificity rules in
   site.2.0.0.css lose. The [data-bs-theme="dark"] attribute selector adds
   one to specificity, which is enough to win.
   Active / completed / in-progress / failed steps deliberately keep their
   bright status colors (blue/green/red with white text) — they're status
   indicators and read correctly on either theme. */
[data-bs-theme="dark"] #stepper-container.sticky-stepper {
    background-color: var(--bs-secondary-bg);
    border-color: var(--bs-border-color);
    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.35);
    z-index: 1020;
}

[data-bs-theme="dark"] .wizard-progress .step:before {
    background: var(--bs-body-bg);
    border-color: var(--bs-body-color);
}

[data-bs-theme="dark"] .wizard-progress .step:after {
    background: var(--bs-border-color);
}

[data-bs-theme="dark"] .wizard-progress .step .material-symbols-outlined {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .wizard-progress .step .step-title {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .wizard-progress .step .step-description {
    color: var(--bs-secondary-color);
}

/* Panel-aqua headings (hardcoded light blue + white text) — keep as is; they
   stay legible on either theme. Same for .subSection-header / .modal-header. */

