/* Theme tokens and shared Bootstrap components. Light remains proposal A. */
:root {
  color-scheme: light;
  --app-bg: #f4f6f9;
  --app-surface: #fff;
  --app-surface-muted: #f3f5f8;
  --app-border: #e5e9ef;
  --app-text: #213047;
  --app-muted: #687589;
  --app-primary: #245bd6;
  --app-primary-soft: #eaf0ff;
  --app-warning-soft: #fff1d2;
  --app-card-bg: var(--app-surface, #fff);
  --app-field: #fff;
  --app-primary-fill: #245bd6;
  --app-on-primary: #fff;
  --app-success-soft: #edf7f1;
  --app-success-text: #286447;
  --app-warning-text: #885811;
  --app-info-soft: #eaf3ff;
  --app-info-text: #244d80;
  --app-danger-soft: #fff0f1;
  --app-danger-text: #a52d3e;
}

.app-theme-controls { padding: .45rem 1rem .65rem; min-width: 246px; }
.app-theme-label { display: block; margin-bottom: .5rem; color: var(--app-text); font-size: .8125rem; font-weight: 600; }
.app-theme-options { display: flex; gap: 4px; padding: 4px; background: var(--app-surface-muted); border-radius: 8px; }
.app-theme-choice { flex: 1 1 0; display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-height: 36px; padding: 6px 7px; border: 1px solid transparent; border-radius: 6px; color: var(--app-muted); background: transparent; font-size: .75rem; white-space: nowrap; }
.app-theme-choice:hover { color: var(--app-text); background: var(--app-surface); }
.app-theme-choice[aria-pressed="true"] { color: var(--app-primary); background: var(--app-surface); border-color: var(--app-border); box-shadow: 0 1px 2px rgb(16 24 40 / 5%); font-weight: 600; }
.app-theme-choice:focus-visible { outline: 2px solid var(--app-primary); outline-offset: 2px; }
.app-theme-status { display: block; margin-top: .5rem; color: var(--app-muted); font-size: .6875rem; }
.app-theme-controls[hidden] { display: none !important; }

@media screen {
  :root[data-bs-theme="dark"] {
    color-scheme: dark;
    --app-bg: #101827;
    --app-surface: #182337;
    --app-surface-muted: #223048;
    --app-field: #111c2d;
    --app-border: #394a63;
    --app-text: #e7edf7;
    --app-muted: #abb9cd;
    --app-primary: #94b8ff;
    --app-primary-fill: #315fca;
    --app-primary-soft: #243b60;
    --app-success-soft: #163d32;
    --app-success-text: #9ddbbb;
    --app-warning-soft: #42351f;
    --app-warning-text: #f2cc82;
    --app-danger-soft: #442833;
    --app-danger-text: #ffb5bd;
    --app-info-soft: #183a50;
    --app-info-text: #a4d9f5;
    --bs-body-bg: var(--app-bg);
    --bs-body-bg-rgb: 16, 24, 39;
    --bs-body-color: var(--app-text);
    --bs-body-color-rgb: 231, 237, 247;
    --bs-emphasis-color: #f4f7fc;
    --bs-emphasis-color-rgb: 244, 247, 252;
    --bs-secondary-color: var(--app-muted);
    --bs-secondary-color-rgb: 171, 185, 205;
    --bs-secondary-bg: var(--app-surface-muted);
    --bs-secondary-bg-rgb: 34, 48, 72;
    --bs-tertiary-color: #a1afc4;
    --bs-tertiary-color-rgb: 161, 175, 196;
    --bs-tertiary-bg: var(--app-surface);
    --bs-tertiary-bg-rgb: 24, 35, 55;
    --bs-border-color: var(--app-border);
    --bs-border-color-translucent: rgb(171 185 205 / 22%);
    --bs-link-color: var(--app-primary);
    --bs-link-color-rgb: 148, 184, 255;
    --bs-link-hover-color: #bdd3ff;
    --bs-link-hover-color-rgb: 189, 211, 255;
    --bs-primary-rgb: 148, 184, 255;
    --bs-success-rgb: 157, 219, 187;
    --bs-danger-rgb: 255, 181, 189;
    --bs-warning-rgb: 242, 204, 130;
    --bs-info-rgb: 164, 217, 245;
  }

  html[data-bs-theme="dark"] body.app-shell { background: var(--app-bg); color: var(--app-text); }
  html[data-bs-theme="dark"] :is(.card, .modal-content, .offcanvas, .toast, .popover) { background-color: var(--app-surface); color: var(--app-text); border-color: var(--app-border); }
  html[data-bs-theme="dark"] .card { --bs-card-bg: var(--app-surface); --bs-card-cap-bg: var(--app-surface-muted); --bs-card-border-color: var(--app-border); }
  html[data-bs-theme="dark"] .dropdown-menu { --bs-dropdown-bg: var(--app-surface); --bs-dropdown-color: var(--app-text); --bs-dropdown-header-color: var(--app-muted); --bs-dropdown-link-color: var(--app-text); --bs-dropdown-link-hover-color: var(--app-text); --bs-dropdown-link-hover-bg: var(--app-surface-muted); --bs-dropdown-border-color: var(--app-border); }
  html[data-bs-theme="dark"] .list-group { --bs-list-group-bg: var(--app-surface); --bs-list-group-color: var(--app-text); --bs-list-group-border-color: var(--app-border); --bs-list-group-action-color: var(--app-text); --bs-list-group-action-hover-bg: var(--app-surface-muted); --bs-list-group-action-hover-color: var(--app-text); }
  html[data-bs-theme="dark"] .accordion { --bs-accordion-bg: var(--app-surface); --bs-accordion-color: var(--app-text); --bs-accordion-btn-color: var(--app-text); --bs-accordion-btn-bg: var(--app-surface); --bs-accordion-active-bg: var(--app-primary-soft); --bs-accordion-active-color: var(--app-primary); }
  html[data-bs-theme="dark"] :is(.form-control, .form-select) { background-color: var(--app-field); color: var(--app-text); border-color: var(--app-border); }
  html[data-bs-theme="dark"] :is(.form-control, .form-select):focus { background-color: var(--app-field); color: var(--app-text); border-color: var(--app-primary); }
  html[data-bs-theme="dark"] :is(.form-control, .form-select):disabled,
  html[data-bs-theme="dark"] .form-control[readonly] { background-color: var(--app-surface-muted); color: var(--app-muted); }
  html[data-bs-theme="dark"] .form-control::placeholder { color: var(--app-muted); opacity: .85; }
  html[data-bs-theme="dark"] .input-group-text { background-color: var(--app-surface-muted); color: var(--app-muted); border-color: var(--app-border); }
  html[data-bs-theme="dark"] .form-check-input:not(:checked) { background-color: var(--app-field); border-color: #70829c; }
  html[data-bs-theme="dark"] :is(.bg-white, .bg-light) { background-color: var(--app-surface) !important; }
  html[data-bs-theme="dark"] .text-bg-light { background-color: var(--app-surface-muted) !important; color: var(--app-text) !important; }
  html[data-bs-theme="dark"] :is(.text-dark, .text-black) { color: var(--app-text) !important; }
  html[data-bs-theme="dark"] :is(.text-secondary, .link-secondary) { color: var(--app-muted) !important; }
  html[data-bs-theme="dark"] .link-secondary:hover { color: var(--app-text) !important; }
  html[data-bs-theme="dark"] .border-light { border-color: var(--app-border) !important; }
  html[data-bs-theme="dark"] :is(.bg-warning, .bg-info).text-dark,
  html[data-bs-theme="dark"] :is(.bg-warning, .bg-info) .text-dark { color: #17243b !important; }
  /* Semantic filled badges keep their original dark fill and white labels. */
  html[data-bs-theme="dark"] :is(.bg-primary, .text-bg-primary) { --bs-primary-rgb: 37, 99, 235; }
  html[data-bs-theme="dark"] :is(.bg-success, .text-bg-success) { --bs-success-rgb: 25, 115, 82; }
  html[data-bs-theme="dark"] :is(.bg-danger, .text-bg-danger) { --bs-danger-rgb: 185, 48, 68; }
  html[data-bs-theme="dark"] .btn-outline-primary { --bs-btn-color: var(--app-primary); --bs-btn-border-color: #6a91da; --bs-btn-hover-color: #101827; --bs-btn-hover-bg: #94b8ff; --bs-btn-hover-border-color: #94b8ff; --bs-btn-active-color: #101827; --bs-btn-active-bg: #94b8ff; --bs-btn-disabled-color: #8094b6; --bs-btn-disabled-border-color: #536882; }
  html[data-bs-theme="dark"] :is(.btn-outline-secondary, .btn-outline-dark) { --bs-btn-color: var(--app-muted); --bs-btn-border-color: #667a95; --bs-btn-hover-bg: #33465f; --bs-btn-hover-color: #f4f7fc; --bs-btn-active-bg: #33465f; --bs-btn-active-color: #f4f7fc; }
  html[data-bs-theme="dark"] .btn-outline-success { --bs-btn-color: var(--app-success-text); --bs-btn-border-color: #478468; }
  html[data-bs-theme="dark"] .btn-outline-danger { --bs-btn-color: var(--app-danger-text); --bs-btn-border-color: #b06173; }
  html[data-bs-theme="dark"] .btn-light { --bs-btn-color: var(--app-text); --bs-btn-bg: var(--app-surface-muted); --bs-btn-border-color: var(--app-border); --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #33465f; --bs-btn-hover-border-color: #667a95; --bs-btn-active-color: #fff; --bs-btn-active-bg: #33465f; }
  html[data-bs-theme="dark"] .table { --bs-table-color: var(--app-text); --bs-table-bg: var(--app-surface); --bs-table-border-color: var(--app-border); --bs-table-striped-color: var(--app-text); --bs-table-striped-bg: rgb(171 185 205 / 5%); --bs-table-hover-color: var(--app-text); --bs-table-hover-bg: rgb(148 184 255 / 9%); --bs-table-active-color: var(--app-text); --bs-table-active-bg: rgb(148 184 255 / 14%); }
  html[data-bs-theme="dark"] .table-light { --bs-table-bg: var(--app-surface-muted); --bs-table-color: var(--app-text); --bs-table-border-color: var(--app-border); }
  html[data-bs-theme="dark"] .table-primary { --bs-table-bg: var(--app-primary-soft); --bs-table-color: var(--app-text); --bs-table-border-color: var(--app-border); }
  html[data-bs-theme="dark"] .table-success { --bs-table-bg: var(--app-success-soft); --bs-table-color: var(--app-success-text); --bs-table-border-color: var(--app-border); }
  html[data-bs-theme="dark"] .table-warning { --bs-table-bg: var(--app-warning-soft); --bs-table-color: var(--app-warning-text); --bs-table-border-color: var(--app-border); }
  html[data-bs-theme="dark"] .table-danger { --bs-table-bg: var(--app-danger-soft); --bs-table-color: var(--app-danger-text); --bs-table-border-color: var(--app-border); }
  html[data-bs-theme="dark"] .table-info { --bs-table-bg: var(--app-info-soft); --bs-table-color: var(--app-info-text); --bs-table-border-color: var(--app-border); }
  html[data-bs-theme="dark"] #sidebarMenu { scrollbar-color: #526780 transparent; }
  html[data-bs-theme="dark"] #sidebarMenu .app-nav-action > .nav-link { color: var(--app-success-text); }
  html[data-bs-theme="dark"] #sidebarMenu .badge.bg-warning { color: var(--app-warning-text) !important; }
  html[data-bs-theme="dark"] .app-brand-logo { background: #fff; border-radius: 4px; padding: 4px 6px; }
  html[data-bs-theme="dark"] #appSidebarBackdrop:not([hidden]) { background: rgb(2 6 15 / 62%); }

  /* Third-party editors and selectors embedded by operational pages. */
  html[data-bs-theme="dark"] :is(.select2-dropdown, .select2-container--default .select2-selection--single, .select2-container--default .select2-selection--multiple, .flatpickr-calendar, .ql-toolbar.ql-snow, .ql-container.ql-snow) { color: var(--app-text); background: var(--app-surface); border-color: var(--app-border); }
  html[data-bs-theme="dark"] :is(.select2-container--default .select2-selection--single .select2-selection__rendered, .select2-container--default .select2-results__option, .ql-editor) { color: var(--app-text); }
  html[data-bs-theme="dark"] .select2-container--default .select2-results__option--selected { background: var(--app-primary-soft); }
  html[data-bs-theme="dark"] .select2-container--default .select2-selection--multiple .select2-selection__choice { background: var(--app-surface-muted); border-color: var(--app-border); color: var(--app-text); }
  html[data-bs-theme="dark"] .select2-search__field { color: var(--app-text); background: var(--app-field); }
  html[data-bs-theme="dark"] .ql-snow .ql-stroke { stroke: var(--app-muted); }
  html[data-bs-theme="dark"] .ql-snow .ql-fill { fill: var(--app-muted); }
  html[data-bs-theme="dark"] .ql-snow .ql-picker { color: var(--app-text); }
  html[data-bs-theme="dark"] .ql-snow .ql-picker-options { color: var(--app-text); background: var(--app-surface); border-color: var(--app-border); }
}

@media print {
  :root[data-bs-theme] {
    color-scheme: light !important;
    --bs-body-color: #213047; --bs-body-color-rgb: 33, 48, 71;
    --bs-body-bg: #fff; --bs-body-bg-rgb: 255, 255, 255;
    --bs-emphasis-color: #213047; --bs-emphasis-color-rgb: 33, 48, 71;
    --bs-secondary-color: #687589; --bs-secondary-color-rgb: 104, 117, 137;
    --bs-secondary-bg: #e9ecef; --bs-secondary-bg-rgb: 233, 236, 239;
    --bs-tertiary-color: #687589; --bs-tertiary-color-rgb: 104, 117, 137;
    --bs-tertiary-bg: #f8f9fa; --bs-tertiary-bg-rgb: 248, 249, 250;
    --bs-border-color: #e5e9ef; --bs-border-color-translucent: rgb(0 0 0 / 17.5%);
    --bs-link-color: #245bd6; --bs-link-color-rgb: 36, 91, 214;
    --bs-link-hover-color: #19439f; --bs-link-hover-color-rgb: 25, 67, 159;
    --bs-primary-text-emphasis: #052c65; --bs-primary-bg-subtle: #cfe2ff; --bs-primary-border-subtle: #9ec5fe;
    --bs-secondary-text-emphasis: #2b2f32; --bs-secondary-bg-subtle: #e2e3e5; --bs-secondary-border-subtle: #c4c8cb;
    --bs-success-text-emphasis: #0a3622; --bs-success-bg-subtle: #d1e7dd; --bs-success-border-subtle: #a3cfbb;
    --bs-info-text-emphasis: #055160; --bs-info-bg-subtle: #cff4fc; --bs-info-border-subtle: #9eeaf9;
    --bs-warning-text-emphasis: #664d03; --bs-warning-bg-subtle: #fff3cd; --bs-warning-border-subtle: #ffe69c;
    --bs-danger-text-emphasis: #58151c; --bs-danger-bg-subtle: #f8d7da; --bs-danger-border-subtle: #f1aeb5;
    --bs-light-text-emphasis: #495057; --bs-light-bg-subtle: #fcfcfd; --bs-light-border-subtle: #e9ecef;
    --bs-dark-text-emphasis: #495057; --bs-dark-bg-subtle: #ced4da; --bs-dark-border-subtle: #adb5bd;
    --bs-form-valid-color: #198754; --bs-form-valid-border-color: #198754;
    --bs-form-invalid-color: #dc3545; --bs-form-invalid-border-color: #dc3545;
  }
  .app-theme-controls { display: none !important; }
}
