:root{color-scheme:light dark}
body{margin:0;min-height:100vh;background:var(--bs-body-bg,#fff);color:var(--bs-body-color,#212529)}
#topbar{min-height:56px;background:var(--bs-tertiary-bg,#f8f9fa);position:sticky;top:0;z-index:1040}
#identity{max-width:35vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.jc-avatar{width:34px;height:34px;display:grid;place-items:center;border-radius:50%;background:var(--bs-success-bg-subtle,#e2edda);color:var(--bs-success-text-emphasis,#285738);font-weight:600;font-size:.8rem;overflow:hidden;flex:none}
.jc-avatar img{width:100%;height:100%;object-fit:cover}
#signinPage{padding:6vh 16px}#loginForm{max-width:400px}
#workspace{display:flex;min-height:calc(100vh - 56px)}
#sidebar{width:244px;flex:none;background:var(--bs-tertiary-bg,#f8f9fa);border-right:1px solid var(--bs-border-color,#ddd);padding:12px;transition:transform .2s ease;overflow-y:auto}
#mainPage{flex:1;min-width:0;padding:20px;overflow-x:auto}
.jc-nav-list{list-style:none;margin:0;padding:0}.jc-nav-list .jc-nav-list{padding-left:15px}
.jc-nav-link{display:flex;align-items:center;gap:10px;width:100%;border:0;border-radius:.375rem;background:transparent;color:var(--bs-body-color);text-align:left;text-decoration:none;padding:.55rem .65rem;font-size:.93rem;cursor:pointer}
.jc-nav-link i{min-width:18px;text-align:center}.jc-nav-link:hover{background:var(--bs-secondary-bg,#eee)}.jc-nav-link.active{background:var(--bs-primary-bg-subtle,#cfe2ff);color:var(--bs-primary-text-emphasis,#084298)}.jc-chevron{margin-left:auto;display:inline-block;transition:transform .18s ease;transform:rotate(0deg)}
.jc-nav-link[aria-expanded="true"] .jc-chevron{transform:rotate(180deg)}
@media(prefers-reduced-motion:reduce){.jc-chevron{transition:none}}
#sidebarToggle{display:none}
[hidden]{display:none!important}
@media(max-width:767.98px){#sidebarToggle{display:inline-flex}#workspace{display:block}#sidebar{position:fixed;top:56px;bottom:0;left:0;z-index:1035;transform:translateX(-105%);box-shadow:4px 0 15px #0002}body.jc-sidebar-open #sidebar{transform:translateX(0)}#sidebarBackdrop{position:fixed;inset:56px 0 0;z-index:1030;background:#0007}body.jc-sidebar-open #sidebarBackdrop{display:block!important}#mainPage{padding:14px}}
[data-bs-theme="dark"]{color-scheme:dark;--bs-body-bg:#181c20;--bs-body-color:#e9ecef;--bs-secondary-bg:#252b30;--bs-tertiary-bg:#212529}
[data-bs-theme="dark"] .card{background-color:var(--bs-secondary-bg);color:var(--bs-body-color);border-color:#3f464d}

/* Bootstrap utility classes must not override application authentication state. */
#topbar[hidden],#signinPage[hidden],#workspace[hidden],#sidebarBackdrop[hidden]{display:none!important}
#topbar:not([hidden]){display:flex!important}
.jc-nav-link .fa-solid,.jc-nav-link .fa-regular,.jc-nav-link .fa-brands{min-width:1.25rem;text-align:center}
/* Runtime notification outlet */
.jc4-notifications {position:fixed;bottom:1rem;right:1rem;z-index:2000;max-width:min(420px,calc(100vw - 2rem));}
.jc4-notifications .alert {margin-bottom:.5rem;}

/* Module action bar is left-aligned with the main content edge. */
#topbar{width:100%;}
#appBrand{flex:0 0 calc(244px - 24px);white-space:nowrap;}
@media(max-width:767.98px){#appBrand{display:none!important;}}
#jc-header-actions{flex:0 1 auto;min-width:0;margin-left:0!important;justify-content:flex-start;overflow-x:auto;scrollbar-width:thin;}
#moduleToolbar:empty{display:none;}
#moduleToolbar{flex:0 0 auto;width:max-content;}
#moduleToolbar > section{width:max-content!important;margin:0!important;}
#moduleToolbar .btn-group{white-space:nowrap;}
#profileMenu{flex:0 0 auto;margin-left:auto;}
#profileTrigger{white-space:nowrap;}
#topbar.jc-compact-identity #identity{display:none!important;}
/* Tabulator 6 selected rows on dark and light themes. */
.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-selected,
.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-selected:hover{background:var(--bs-primary-bg-subtle,#cfe2ff)!important;color:var(--bs-primary-text-emphasis,#084298)!important}
.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-selected .tabulator-cell{background:transparent!important}

/* v3-compatible compact buttons */
.buttonSmall {
    line-height: 1.28rem;
    padding: .05rem .5rem .05rem .5rem !important;
    border-radius: .5rem;
}
.buttonSmall span {
    font-size: 0.75rem;
    font-weight: bold !important;
}
.buttonDefault div,
.buttonDefault span {
    display: none;
}

/* Desktop sidebar stays in place while long lists scroll. */
@media (min-width:768px){
 #sidebar{position:sticky;top:56px;height:calc(100vh - 56px);align-self:flex-start;overscroll-behavior:contain;}
}
/* The branding column matches the actual sidebar width, including header padding. */
#topbar{padding-left:0!important;}
#appBrand{flex:0 0 244px;width:244px;min-width:244px;max-width:244px;display:flex;align-items:center;justify-content:center;min-height:56px;padding:6px 14px;overflow:hidden;text-align:center;white-space:normal;}
#appBrand img{display:block;max-width:65%;max-height:43px;width:auto;height:auto;object-fit:contain;}
#jc-header-actions{padding-left:12px;}
#profileTrigger{gap:.65rem!important;}
.jc-account-chevron{font-size:.7rem;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:transform .18s ease;transform-origin:center;}
#profileTrigger[aria-expanded="true"] .jc-account-chevron{transform:rotate(180deg);}
#profileMenu .dropdown-menu .dropdown-item i{width:1.1rem;text-align:center;}
@media(max-width:767.98px){#appBrand{display:none!important}#topbar{padding-left:10px!important}#jc-header-actions{padding-left:0}}
@media(prefers-reduced-motion:reduce){.jc-account-chevron{transition:none}}
/* Tabulator: condensed rows and theme-aware treatment */
.tabulator{font-size:.86rem!important;background:var(--bs-body-bg)!important;color:var(--bs-body-color)!important;border-color:var(--bs-border-color)!important;}
.tabulator .tabulator-header{background:var(--bs-tertiary-bg)!important;color:var(--bs-body-color)!important;border-bottom-color:var(--bs-border-color)!important;}
.tabulator .tabulator-header .tabulator-col{background:transparent!important;border-right-color:var(--bs-border-color)!important;}
.tabulator .tabulator-header .tabulator-col .tabulator-col-content{padding:5px 8px!important;}
.tabulator .tabulator-row{min-height:28px!important;background:var(--bs-body-bg)!important;color:var(--bs-body-color)!important;border-bottom:1px solid var(--bs-border-color)!important;}
.tabulator .tabulator-row.tabulator-row-even{background:var(--bs-tertiary-bg)!important;}
.tabulator .tabulator-row:hover{background:var(--bs-secondary-bg)!important;}
.tabulator .tabulator-row .tabulator-cell{padding:4px 8px!important;border-right-color:var(--bs-border-color)!important;}
.tabulator .tabulator-footer{background:var(--bs-tertiary-bg)!important;color:var(--bs-body-color)!important;border-top-color:var(--bs-border-color)!important;}
.tabulator .tabulator-footer .tabulator-page{color:var(--bs-body-color)!important;border-color:var(--bs-border-color)!important;}
.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-selected,
.tabulator .tabulator-tableholder .tabulator-table .tabulator-row.tabulator-selected:hover{background:var(--bs-primary-bg-subtle)!important;color:var(--bs-primary-text-emphasis)!important;}

/* The login and header logos share the trusted appBrandHtml deployment setting. */
.jc-signin-brand{display:flex;align-items:center;justify-content:center;text-align:center;width:100%;padding:12px 8px;min-height:72px;overflow:hidden;}
.jc-signin-brand img{display:block;max-width:65%;max-height:88px;width:auto;height:auto;object-fit:contain;}

/* v3 list filters start collapsed; toolbar toggles jc-filter-open. */
#objListFilters:not(.jc-filter-open){display:none!important;}
#objListFilters.jc-filter-open{display:block;}

/* Per-module contextual help beside the avatar. */
#profileMenu{display:flex;align-items:center;gap:.35rem;}
#moduleHelpButton{font-size:1.1rem;line-height:1;flex:none;}
#moduleHelpButton:hover{color:var(--bs-primary)!important;}
/* Help is a top-level viewport BOTTOM OVERLAY, outside #workspace.
   All other module content retains its original width and scrolling behavior. */
body > .jc-module-help[hidden]{display:none!important;}
body > .jc-module-help{
 position:fixed;left:0;right:0;bottom:0;top:auto;
 width:auto;max-width:none;height:50%;
 display:flex;flex-direction:column;min-width:0;overflow:hidden;
 color:var(--bs-body-color);background:var(--bg-helper-panel);
 border-top:1px solid var(--bs-border-color);
 z-index:1020;box-shadow:0 -6px 24px rgba(0,0,0,.18);
}
.jc-module-help .jc-help-header{flex:none;min-width:0;flex-wrap:wrap;align-items:center!important;}
.jc-module-help .jc-help-body{overflow:auto;overscroll-behavior:contain;overflow-anchor:none;min-height:0;flex:1;}
.jc-module-help .jc-help-body > :last-child{margin-bottom:0;}
.jc-module-help .jc-help-controls{min-width:0;margin-left:auto;flex-wrap:wrap;justify-content:flex-end;}
.jc-module-help .jc-help-controls .form-check-label{white-space:normal;}
/* Explicit close glyph, independent of Bootstrap's btn-close image/theme rules. */
#moduleHelpClose{display:inline-flex;align-items:center;justify-content:center;
 flex:0 0 auto;width:32px;height:32px;min-width:32px;padding:0;
 border:1px solid var(--bs-border-color);border-radius:.375rem;
 background:var(--bs-tertiary-bg);color:var(--bs-body-color);
 font-size:1.65rem;line-height:1;cursor:pointer;opacity:1;}
#moduleHelpClose:hover,#moduleHelpClose:focus-visible{background:var(--bs-secondary-bg);color:var(--bs-body-color);}
@media(max-width:767.98px){
 body > .jc-module-help{left:0;height:50%;}
 .jc-module-help .jc-help-header{padding:.65rem!important;}
 .jc-module-help .jc-help-body{padding:.75rem!important;}
}
@media(max-width:575.98px){
 .jc-module-help .jc-help-controls{gap:.5rem!important;}
 .jc-module-help .jc-help-controls .form-check-label{font-size:.75rem;}
}

/* Module-controlled loading screen; stays visible until explicitly closed. */
.jc-loading-overlay[hidden],.jc-loading-overlay [hidden]{display:none!important;}
.jc-loading-overlay{position:fixed;inset:0;z-index:2100;display:flex;align-items:center;justify-content:center;padding:24px;background:rgba(0,0,0,.58);color:var(--bs-body-color,#212529);}
.jc-loading-card{position:relative;width:min(440px,100%);padding:44px 28px 30px;border-radius:12px;background:var(--bs-body-bg,#fff);border:1px solid var(--bs-border-color,#ddd);box-shadow:0 12px 48px rgba(0,0,0,.25);text-align:center;}
.jc-loading-actions{position:absolute;top:8px;right:10px;display:flex;gap:8px;}
.jc-loading-action{background:transparent;border:1px solid var(--bs-border-color,#ddd);border-radius:6px;color:inherit;cursor:pointer;font-size:24px;line-height:1;width:34px;height:34px;}
.jc-loading-action:hover{background:var(--bs-secondary-bg,#eee);}
.jc-loading-spinner{width:52px;height:52px;margin:0 auto;border:5px solid var(--bs-border-color,#ddd);border-top-color:var(--bs-primary,#308a30);border-radius:50%;animation:jc-loading-spin .8s linear infinite;}
.jc-loading-progress{margin-top:10px;}
.jc-loading-progress-track{height:14px;overflow:hidden;background:var(--bs-secondary-bg,#eee);border-radius:999px;}
.jc-loading-progress-fill{height:100%;background:var(--bs-primary,#308a30);border-radius:999px;transition:width .2s ease;}
.jc-loading-indeterminate{animation:jc-loading-slide 1.5s ease-in-out infinite;}
.jc-loading-percentage{margin-top:12px;font-weight:600;font-variant-numeric:tabular-nums;}
.jc-loading-message{margin-top:16px;min-height:1.5em;white-space:pre-wrap;overflow-wrap:anywhere;}
@keyframes jc-loading-spin{to{transform:rotate(360deg);}}
@keyframes jc-loading-slide{0%{transform:translateX(-120%)}100%{transform:translateX(320%)}}
@media(prefers-reduced-motion:reduce){.jc-loading-spinner,.jc-loading-indeterminate{animation-duration:3s;}.jc-loading-progress-fill{transition:none;}}
