:root,
[data-bs-theme="light"] {
  /* Portal Palette Definitions */
  --portal-navy: #29526E;
  --portal-navy-rgb: 41, 82, 110;
  --portal-dark: #383b42;
  --portal-dark-rgb: 56, 59, 66;
  --portal-deep-blue: #1A3355;
  --portal-deep-blue-rgb: 26, 51, 85;
  --portal-wcag-blue: #1F4E79;
  --portal-wcag-blue-rgb: 31, 78, 121;
  --portal-light-blue: #5B8DB8;
  --portal-light-blue-rgb: 91, 141, 184;
  --portal-steel-blue: #3A6B9F;
  --portal-steel-blue-rgb: 58, 107, 159;
  --portal-light-sky: #D6E6F5;
  --portal-light-sky-rgb: 214, 230, 245;
  --portal-accent: #008FC4;
  --portal-accent-rgb: 0, 143, 196;
  --portal-accent-hover: #0079A5;
  --portal-accent-hover-rgb: 0, 121, 165;
  --portal-accent-active: #00698F;
  --portal-accent-active-rgb: 0, 105, 143;
  --portal-accent-subtle: #D7EEF7;
  --portal-accent-subtle-rgb: 215, 238, 247;
  --portal-white: #ffffff;
  --portal-white-rgb: 255, 255, 255;
  --portal-gray: #6c757d;
  --portal-gray-rgb: 108, 117, 125;
  --portal-silver: #C3C4CB;
  --portal-silver-rgb: 195, 196, 203;
  --portal-black: #000000;
  --portal-black-rgb: 0, 0, 0;

  /* Portal Semantic Colors */
  --portal-success: #198754;
  --portal-success-rgb: 25, 135, 84;
  --portal-warning: #fd7e14;
  --portal-warning-rgb: 253, 126, 20;
  --portal-danger: #dc3545;
  --portal-danger-rgb: 220, 53, 69;

  /* Portal UI Chrome */
  --portal-page-bg: var(--portal-navy);
  --portal-border: #DEE2E8;
  --portal-muted: #8B909E;
  --portal-label: #4B5563;
  --portal-placeholder: #C0C5CE;
  --portal-notice-bg: #FEF3CD;
  --portal-notice-text: #856404;


  /* Portal Role Assignments — update these when setting up a new portal */
  --portal-primary: var(--portal-navy);
  --portal-primary-rgb: var(--portal-navy-rgb);
  --portal-primary-gradient: var(--portal-steel-blue);
  --portal-primary-hover: var(--portal-wcag-blue);
  --portal-primary-hover-rgb: var(--portal-wcag-blue-rgb);
  --portal-primary-subtle: var(--portal-light-sky);
  --portal-primary-active: var(--portal-deep-blue);

  /* Typography */
  --portal-font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif;

  /* Bootstrap Variable Overrides */
  --bs-primary: var(--portal-accent);
  --bs-primary-rgb: var(--portal-accent-rgb);
  --bs-primary-text-emphasis: var(--portal-accent-active);
  --bs-primary-bg-subtle: var(--portal-accent-subtle);
  --bs-primary-border-subtle: #9FD9EB;
  --bs-secondary: var(--portal-dark);
  --bs-secondary-rgb: var(--portal-dark-rgb);
  --bs-body-font-family: var(--portal-font-family);
  --bs-focus-ring-color: rgba(var(--portal-accent-rgb), 0.25);

  --bs-success: var(--portal-success);
  --bs-success-rgb: var(--portal-success-rgb);
  --bs-warning: var(--portal-warning);
  --bs-warning-rgb: var(--portal-warning-rgb);
  --bs-danger: var(--portal-danger);
  --bs-danger-rgb: var(--portal-danger-rgb);

  /* Body text */
  --bs-body-color: var(--portal-dark);
  --bs-body-color-rgb: var(--portal-dark-rgb);

  /* Links */
  --bs-link-color: var(--bs-primary);
  --bs-link-color-rgb: var(--bs-primary-rgb);
  --bs-link-hover-color: var(--portal-accent-hover);
  --bs-link-hover-color-rgb: var(--portal-accent-hover-rgb);

  /* Dropdowns */
  --bs-dropdown-link-active-bg: var(--bs-primary);
  --bs-dropdown-link-active-color: #fff;
}

/* Explicit Override for Dropdown Active State to ensure precedence */
.dropdown-item.active, 
.dropdown-item:active {
  background-color: var(--bs-primary);
  color: #fff;
}

a:not(.btn):not(.dropdown-item):not(.nav-link):not(.page-link):not(.navbar-brand):not(.list-group-item):not(.dropdown-toggle) {
  color: var(--bs-primary);
}

a:not(.btn):not(.dropdown-item):not(.nav-link):not(.page-link):not(.navbar-brand):not(.list-group-item):not(.dropdown-toggle):hover,
a:not(.btn):not(.dropdown-item):not(.nav-link):not(.page-link):not(.navbar-brand):not(.list-group-item):not(.dropdown-toggle):focus {
  color: var(--portal-accent-hover);
}

.text-primary,
.link-primary {
  color: var(--bs-primary) !important;
}

a.text-primary:hover,
a.text-primary:focus,
.link-primary:hover,
.link-primary:focus {
  color: var(--portal-accent-hover) !important;
}

.bg-primary {
  background-color: var(--bs-primary) !important;
}

.border-primary {
  border-color: var(--bs-primary) !important;
}

.text-bg-primary {
  color: #fff !important;
  background-color: var(--bs-primary) !important;
}

.btn-primary {
  --bs-btn-color: #fff;
  --bs-btn-bg: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--portal-accent-hover);
  --bs-btn-hover-border-color: var(--portal-accent-hover);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--portal-accent-active);
  --bs-btn-active-border-color: var(--portal-accent-active);
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: var(--bs-primary);
  --bs-btn-disabled-border-color: var(--bs-primary);
  color: #fff;
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}

.btn-primary:hover {
  color: #fff;
  background-color: var(--portal-accent-hover);
  border-color: var(--portal-accent-hover);
}

.btn-check:focus + .btn-primary,
.btn-primary:focus {
  color: #fff;
  background-color: var(--portal-accent-hover);
  border-color: var(--portal-accent-hover);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}

.btn-check:checked + .btn-primary,
.btn-check:active + .btn-primary,
.btn-primary:active,
.btn-primary.active,
.show > .btn-primary.dropdown-toggle {
  color: #fff;
  background-color: var(--portal-accent-active);
  border-color: var(--portal-accent-active);
}

.btn-check:checked + .btn-primary:focus,
.btn-check:active + .btn-primary:focus,
.btn-primary:active:focus,
.btn-primary.active:focus,
.show > .btn-primary.dropdown-toggle:focus {
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}

.btn-primary:disabled,
.btn-primary.disabled {
  color: #fff;
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}

.btn-outline-primary {
  --bs-btn-color: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--bs-primary);
  --bs-btn-hover-border-color: var(--bs-primary);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--portal-accent-hover);
  --bs-btn-active-border-color: var(--portal-accent-hover);
  --bs-btn-disabled-color: var(--bs-primary);
  --bs-btn-disabled-border-color: var(--bs-primary);
  color: var(--bs-primary);
  border-color: var(--bs-primary);
}

.btn-outline-primary:hover {
  color: #fff;
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}

.btn-check:focus + .btn-outline-primary,
.btn-outline-primary:focus {
  color: #fff;
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}

.btn-check:checked + .btn-outline-primary,
.btn-check:active + .btn-outline-primary,
.btn-outline-primary:active,
.btn-outline-primary.active,
.btn-outline-primary.dropdown-toggle.show {
  color: #fff;
  background-color: var(--portal-accent-hover);
  border-color: var(--portal-accent-hover);
}

.btn-check:checked + .btn-outline-primary:focus,
.btn-check:active + .btn-outline-primary:focus,
.btn-outline-primary:active:focus,
.btn-outline-primary.active:focus,
.btn-outline-primary.dropdown-toggle.show:focus {
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}

.btn-outline-primary:disabled,
.btn-outline-primary.disabled {
  color: var(--bs-primary);
  background-color: transparent;
  border-color: var(--bs-primary);
}

.btn-secondary {
  --bs-btn-color: #fff;
  --bs-btn-bg: var(--bs-secondary);
  --bs-btn-border-color: var(--bs-secondary);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--portal-primary);
  --bs-btn-hover-border-color: var(--portal-primary);
  --bs-btn-focus-shadow-rgb: var(--bs-secondary-rgb);
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--portal-primary-active);
  --bs-btn-active-border-color: var(--portal-primary-active);
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: var(--bs-secondary);
  --bs-btn-disabled-border-color: var(--bs-secondary);
}

.btn-outline-secondary {
  --bs-btn-color: var(--bs-secondary);
  --bs-btn-border-color: var(--bs-secondary);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--bs-secondary);
  --bs-btn-hover-border-color: var(--bs-secondary);
  --bs-btn-focus-shadow-rgb: var(--bs-secondary-rgb);
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--portal-primary);
  --bs-btn-active-border-color: var(--portal-primary);
  --bs-btn-disabled-color: var(--bs-secondary);
  --bs-btn-disabled-border-color: var(--bs-secondary);
}

/* Portal Custom Utility Classes */
.text-portal-navy { color: var(--portal-navy) !important; }
.bg-portal-navy { background-color: var(--portal-navy) !important; }

.text-portal-dark { color: var(--portal-dark) !important; }
.bg-portal-dark { background-color: var(--portal-dark) !important; }

.text-portal-deep-blue { color: var(--portal-deep-blue) !important; }
.bg-portal-deep-blue { background-color: var(--portal-deep-blue) !important; }

.text-portal-wcag-blue { color: var(--portal-wcag-blue) !important; }
.bg-portal-wcag-blue { background-color: var(--portal-wcag-blue) !important; }

.text-portal-light-blue { color: var(--portal-light-blue) !important; }
.bg-portal-light-blue { background-color: var(--portal-light-blue) !important; }

.text-portal-gray { color: var(--portal-gray) !important; }
.bg-portal-gray { background-color: var(--portal-gray) !important; }

.text-portal-silver { color: var(--portal-silver) !important; }
.bg-portal-silver { background-color: var(--portal-silver) !important; }

.text-portal-black { color: var(--portal-black) !important; }
.bg-portal-black { background-color: var(--portal-black) !important; }


/* --- Form Components (Inputs, Selects, Checks, Radios, Switches) --- */

/* Focus states for text inputs and selects */
.form-control:focus, 
.form-select:focus {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}

/* Checkboxes and Radios */
.form-check-input:checked {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}

.form-check-input:focus {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}

/* --- Navigation --- */

/* Nav Pills */
.nav-pills .nav-link.active, 
.nav-pills .show > .nav-link {
  background-color: var(--bs-primary);
  color: #fff;
}

/* Nav Tabs */
.nav-tabs .nav-link.active, 
.nav-tabs .nav-item.show .nav-link {
  color: var(--bs-primary);
}

.nav-link {
  color: var(--bs-primary);
}

.nav-link:hover, .nav-link:focus {
  color: var(--portal-accent-hover);
}

/* --- Pagination --- */

.page-link {
  color: var(--bs-primary);
}

.page-link:hover {
  color: var(--portal-accent-hover);
  border-color: var(--bs-border-color);
}

.page-link:focus {
  color: var(--portal-accent-hover);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}

.active > .page-link, 
.page-item.active .page-link {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
  color: #fff;
}

/* --- List Group --- */

.list-group-item.active {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
  color: #fff;
}

/* --- Progress Bars --- */

.progress-bar {
  background-color: var(--bs-primary);
}

/* --- Accordion --- */

.accordion-button:not(.collapsed) {
  color: var(--bs-primary);
  background-color: rgba(var(--bs-primary-rgb), 0.1); 
  box-shadow: inset 0 -1px 0 rgba(0,0,0,0.125); 
}

.accordion-button:focus {
    border-color: var(--bs-primary);
    box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}

/* --- Range Inputs --- */
.form-range::-webkit-slider-thumb {
  background: var(--bs-primary);
}
.form-range::-webkit-slider-thumb:active {
  background: var(--portal-accent-hover);
}
.form-range::-moz-range-thumb {
  background: var(--bs-primary);
}
.form-range::-moz-range-thumb:active {
  background: var(--portal-accent-hover);
}
.form-range:focus::-webkit-slider-thumb {
  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}
.form-range:focus::-moz-range-thumb {
  box-shadow: 0 0 0 1px #fff, 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}

/*================================================================
  JExcel Style Overrides
  ================================================================*/

/* General table styling */
/* .jexcel {
    border-right: 1px solid var(--portal-silver) !important;
    border-bottom: 1px solid var(--portal-silver) !important;
    font-family: inherit !important;
    font-size: 0.875rem !important;
    color: var(--portal-black) !important;
} */

/* Header Cells styling */
/* .jexcel > thead > tr > td {
    background-color: var(--bs-tertiary-bg, #f8f8f8) !important;
    color: var(--portal-black) !important;
    font-size: var(--bs-body-font-size, 0.875rem) !important;
    font-family: var(--bs-body-font-family, inherit) !important;
    font-weight: 600 !important;
    border-top: 1px solid var(--portal-silver) !important;
    border-left: 1px solid var(--portal-silver) !important;
    padding: 8px 12px !important;
} */

/* Row-header (first-child) */
/* .jexcel > tbody > tr > td:first-child {
    background-color: var(--bs-tertiary-bg, #f8f8f8) !important;
    font-weight: 600 !important;
    color: var(--portal-gray) !important;
} */

/* Base Data Cells */
/* .jexcel > tbody > tr > td {
    color: var(--portal-black) !important;
    font-size: var(--bs-body-font-size, 0.875rem) !important;
    font-family: var(--bs-body-font-family, inherit) !important;
    border-top: 1px solid var(--portal-silver) !important;
    border-left: 1px solid var(--portal-silver) !important;
    padding: 6px 12px !important;
    vertical-align: middle !important;
} */

/* Row zebra-striping and hover styling */
/* .jexcel > tbody > tr:nth-child(even) > td {
    background-color: rgba(var(--portal-silver-rgb), 0.05);
}

.jexcel > tbody > tr:hover > td {
    background-color: rgba(var(--portal-primary-rgb), 0.1) !important;
}

.jexcel > tbody > tr:hover > td.highlight {
    background-color: rgba(var(--portal-primary-rgb), 0.2) !important;
} */

/* Selection Highlight overrides */
/* .jexcel_container .jexcel .highlight-top { border-top: 2px solid var(--portal-primary) !important; box-shadow: none !important; }
.jexcel_container .jexcel .highlight-left { border-left: 2px solid var(--portal-primary) !important; box-shadow: none !important; }
.jexcel_container .jexcel .highlight-right { border-right: 2px solid var(--portal-primary) !important; }
.jexcel_container .jexcel .highlight-bottom { border-bottom: 2px solid var(--portal-primary) !important; }
.jexcel_container .jexcel .highlight { background-color: rgba(var(--portal-primary-rgb), 0.1) !important; }
.jexcel_container .jexcel .highlight-top.highlight-left { box-shadow: none !important; } */

/* Selection Range outline */
/* .jexcel_container .jexcel .selection-top { border-top: 1px solid var(--portal-primary) !important; }
.jexcel_container .jexcel .selection-left { border-left: 1px solid var(--portal-primary) !important; }
.jexcel_container .jexcel .selection-right { border-right: 1px solid var(--portal-primary) !important; }
.jexcel_container .jexcel .selection-bottom { border-bottom: 1px solid var(--portal-primary) !important; }
.jexcel_container .jexcel .selection { background-color: rgba(var(--portal-primary-rgb), 0.05) !important; } */

/* The little fill handle square in the bottom right corner */
/* .jexcel_corner {
    background-color: var(--portal-primary) !important;
    border: 1px solid #fff !important;
} */

/* Readonly cells styling */
/* .jexcel > tbody > tr > td.readonly {
    background-color: #fafafa !important;
    color: #68686a !important;
} */

/* Make JExcel fill container width but allow horizontal scroll on wide tables */
/* .jexcel_container,
.jexcel_content {
    min-width: 100% !important;
} */
