:root,
[data-bs-theme="light"] {
  /* Portal Palette Definitions */
  --portal-steel: #3D5A80;
  --portal-steel-rgb: 61, 90, 128;
  --portal-dark: #293241;
  --portal-dark-rgb: 41, 50, 65;
  --portal-deep-steel: #2B4257;
  --portal-deep-steel-rgb: 43, 66, 87;
  --portal-wcag-steel: #2F4F6F;
  --portal-wcag-steel-rgb: 47, 79, 111;
  --portal-light-steel: #98C1D9;
  --portal-light-steel-rgb: 152, 193, 217;
  --portal-accent-blue: #5B8FB9;
  --portal-accent-blue-rgb: 91, 143, 185;
  --portal-sky: #E0EBFA;
  --portal-sky-rgb: 224, 235, 250;
  --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: #FAFBFC;
  --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-steel);
  --portal-primary-rgb: var(--portal-steel-rgb);
  --portal-primary-gradient: var(--portal-accent-blue);
  --portal-primary-hover: var(--portal-wcag-steel);
  --portal-primary-hover-rgb: var(--portal-wcag-steel-rgb);
  --portal-primary-subtle: var(--portal-sky);
  --portal-primary-active: var(--portal-deep-steel);

  /* Typography */
  --portal-font-family: var(--bs-font-sans-serif);

  /* Bootstrap Variable Overrides */
  --bs-primary: var(--portal-primary);
  --bs-primary-rgb: var(--portal-primary-rgb);
  --bs-secondary: var(--portal-dark);
  --bs-secondary-rgb: var(--portal-dark-rgb);
  --bs-body-font-family: var(--portal-font-family);

  --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-primary-hover);
  --bs-link-hover-color-rgb: var(--portal-primary-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;
}

.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-primary-hover);
  --bs-btn-hover-border-color: var(--portal-primary-hover);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-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-primary);
  --bs-btn-disabled-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-primary-hover);
  --bs-btn-active-border-color: var(--portal-primary-hover);
  --bs-btn-disabled-color: var(--bs-primary);
  --bs-btn-disabled-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-steel { color: var(--portal-steel) !important; }
.bg-portal-steel { background-color: var(--portal-steel) !important; }

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

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

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

.text-portal-light-steel { color: var(--portal-light-steel) !important; }
.bg-portal-light-steel { background-color: var(--portal-light-steel) !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-primary-hover);
}

/* --- Pagination --- */

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

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

.page-link:focus {
  color: var(--portal-primary-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-primary-hover);
}
.form-range::-moz-range-thumb {
  background: var(--bs-primary);
}
.form-range::-moz-range-thumb:active {
  background: var(--portal-primary-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
  ================================================================*/
  