:root,
[data-bs-theme=light] {
  /* Primary Colors */
  --bs-primary: #2b7093;
  --bs-primary-rgb: 43, 112, 147;
  --bs-primary-text-emphasis: #112c3a;
  --bs-primary-bg-subtle: #d8e3ea;
  --bs-primary-border-subtle: #b1c6d5;

  /* Secondary Colors */
  --bs-secondary: #6c757d;
  --bs-secondary-rgb: 108, 117, 125;
  --bs-secondary-text-emphasis: #2b2f32;
  --bs-secondary-bg-subtle: #e2e3e5;
  --bs-secondary-border-subtle: #c4c8cb;

  /* Success Colors */
  --bs-success: #28a745;
  --bs-success-rgb: 40, 167, 69;
  --bs-success-text-emphasis: #10431c;
  --bs-success-bg-subtle: #d9efe0;
  --bs-success-border-subtle: #b3dec0;

  /* Danger Colors */
  --bs-danger: #ff4136;
  --bs-danger-rgb: 255, 65, 54;
  --bs-danger-text-emphasis: #661a15;
  --bs-danger-bg-subtle: #ffdddb;
  --bs-danger-border-subtle: #ffbbb7;

  /* Warning Colors */
  --bs-warning: #ffc107;
  --bs-warning-rgb: 255, 193, 7;
  --bs-warning-text-emphasis: #664d03;
  --bs-warning-bg-subtle: #fff3cd;
  --bs-warning-border-subtle: #ffe69c;

  /* Info Colors */
  --bs-info: #17a2b8;
  --bs-info-rgb: 23, 162, 184;
  --bs-info-text-emphasis: #0a414a;
  --bs-info-bg-subtle: #d1ecf1;
  --bs-info-border-subtle: #a3dae3;

  /* Dark Colors */
  --bs-dark: #343a40;
  --bs-dark-rgb: 52, 58, 64;
  --bs-dark-text-emphasis: #14171a;
  --bs-dark-bg-subtle: #d8d9da;
  --bs-dark-border-subtle: #b1b3b6;

  /* Light Colors */
  --bs-light: #f8f9fa;
  --bs-light-rgb: 248, 249, 250;
  --bs-light-text-emphasis: #495057;
  --bs-light-bg-subtle: #fcfcfd;
  --bs-light-border-subtle: #e9ecef;

  /* Body */
  --bs-body-color: #102c3a;
  --bs-body-color-rgb: 16, 44, 58;
  --bs-body-bg: #fff;
  --bs-body-bg-rgb: 255, 255, 255;
  --bs-emphasis-color: #000;
  --bs-emphasis-color-rgb: 0, 0, 0;

  /* Link Colors */
  --bs-link-color: #2b7093;
  --bs-link-color-rgb: 43, 112, 147;
  --bs-link-hover-color: #225a76;
  --bs-link-hover-color-rgb: 34, 90, 118;
  --bs-code-color: #d63384;

  /* Border & Focus */
  --bs-border-color: #dee2e6;
  --bs-border-color-translucent: rgba(0, 0, 0, 0.175);
  --bs-border-radius: 0.375rem;
  --bs-border-radius-sm: 0.25rem;
  --bs-border-radius-lg: 0.5rem;
  --bs-border-radius-xl: 1rem;
  --bs-border-radius-2xl: 2rem;
  --bs-border-radius-pill: 50rem;
  --bs-focus-ring-color: rgba(43, 112, 147, 0.25);
}

[data-bs-theme=dark] {
  /* Base colors */
  --bs-body-color: #ddedf6;
  --bs-body-color-rgb: 221, 237, 246;
  --bs-body-bg: #000;
  --bs-body-bg-rgb: 0, 0, 0;
  --bs-emphasis-color: #fff;
  --bs-emphasis-color-rgb: 255, 255, 255;
  --bs-secondary-color: rgba(221, 237, 246, 0.75);
  --bs-secondary-color-rgb: 221, 237, 246;
  --bs-secondary-bg: #151515;
  --bs-tertiary-color: rgba(221, 237, 246, 0.5);
  --bs-tertiary-color-rgb: 221, 237, 246;
  --bs-tertiary-bg: #282828;
  --bs-border-color: #495057;
  --bs-border-color-translucent: rgba(255, 255, 255, 0.15);
  --bs-focus-ring-color: rgba(59, 140, 175, 0.5);

  /* Primary Colors */
  --bs-primary: #3b8caf;
  --bs-primary-rgb: 59, 140, 175;
  --bs-primary-text-emphasis: #8ebbce;
  --bs-primary-bg-subtle: #081c25;
  --bs-primary-border-subtle: #193849;

  /* Secondary Colors */
  --bs-secondary: #868e96;
  --bs-secondary-rgb: 134, 142, 150;
  --bs-secondary-text-emphasis: #ced3d8;
  --bs-secondary-bg-subtle: #212529;
  --bs-secondary-border-subtle: #343a40;

  /* Success Colors */
  --bs-success: #2fb74d;
  --bs-success-rgb: 47, 183, 77;
  --bs-success-text-emphasis: #88d197;
  --bs-success-bg-subtle: #092210;
  --bs-success-border-subtle: #174420;

  /* Danger Colors */
  --bs-danger: #ff544a;
  --bs-danger-rgb: 255, 84, 74;
  --bs-danger-text-emphasis: #ffa7a1;
  --bs-danger-bg-subtle: #33100d;
  --bs-danger-border-subtle: #661f19;

  /* Warning Colors */
  --bs-warning: #ffca2c;
  --bs-warning-rgb: 255, 202, 44;
  --bs-warning-text-emphasis: #ffe68a;
  --bs-warning-bg-subtle: #332701;
  --bs-warning-border-subtle: #664d03;

  /* Info Colors */
  --bs-info: #1cb3ca;
  --bs-info-rgb: 28, 179, 202;
  --bs-info-text-emphasis: #7ed7e4;
  --bs-info-bg-subtle: #072428;
  --bs-info-border-subtle: #0e4950;

  /* Dark Colors */
  --bs-dark: #42484e;
  --bs-dark-rgb: 66, 72, 78;
  --bs-dark-text-emphasis: #9fa2a6;
  --bs-dark-bg-subtle: #0e0f10;
  --bs-dark-border-subtle: #1a1d20;

  /* Light Colors */
  --bs-light: #e9ecef;
  --bs-light-rgb: 233, 236, 239;
  --bs-light-text-emphasis: #f8f9fa;
  --bs-light-bg-subtle: #282828;
  --bs-light-border-subtle: #545454;

  /* Link Colors */
  --bs-link-color: #64aed2;
  --bs-link-color-rgb: 100, 174, 210;
  --bs-link-hover-color: #8cc3d1;
  --bs-link-hover-color-rgb: 140, 195, 209;
  --bs-code-color: #e685b5;
}

/* Override button colors */
.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: #226786;
  --bs-btn-hover-border-color: #1f5d7a;
  --bs-btn-focus-shadow-rgb: 49, 132, 163;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: #1f5d7a;
  --bs-btn-active-border-color: #1c576f;
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: var(--bs-primary);
  --bs-btn-disabled-border-color: var(--bs-primary);
}

/* Primary outline button */
.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: 43, 112, 147;
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--bs-primary);
  --bs-btn-active-border-color: var(--bs-primary);
  --bs-btn-disabled-color: var(--bs-primary);
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: var(--bs-primary);
}

/* Links */
a {
  color: var(--bs-link-color);
  text-decoration-color: rgba(var(--bs-link-color-rgb), 0.5);
}

a:hover {
  color: var(--bs-link-hover-color);
  text-decoration-color: rgba(var(--bs-link-hover-color-rgb), 0.5);
}

/* Form controls */
.form-control:focus,
.form-select:focus {
  border-color: #6ea8c1;
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), 0.25);
}

/* Navbar colors */
.navbar-light .navbar-nav .nav-link.active,
.navbar-light .navbar-nav .show > .nav-link {
  color: var(--bs-primary);
}

/* Override colors for common components */
.bg-primary {
  background-color: var(--bs-primary) !important;
}

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

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

/* Card component */
.card-header {
  background-color: rgba(var(--bs-primary-rgb), 0.1);
}

/* List group */
.list-group-item.active {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}

/* Dropdown */
.dropdown-item.active, 
.dropdown-item:active {
  background-color: var(--bs-primary);
}

/* Accordion */
.accordion-button:not(.collapsed) {
  background-color: rgba(var(--bs-primary-rgb), 0.1);
  color: var(--bs-primary);
}

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

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

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

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

/* Progress bars */
.progress-bar {
  background-color: var(--bs-primary);
}

/* Inline form checkboxes/radios */
/* Apply to expanded choice fields with form-check-inline class on container */
.form-check-inline .form-check {
  display: inline-block;
  margin-right: 1rem;
}