html {
  font-size: 14px;
}

@media (min-width: 768px) {
  html {
    font-size: 16px;
  }
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.1rem white, 0 0 0 0.25rem #258cfb;
}

html {
  position: relative;
  min-height: 100%;
}

body {
  margin-bottom: 60px;
  background: #f5f7fa;
}

.card {
  border-color: #dce2e8;
}

.metric-card {
  color: inherit;
  transition: transform .12s ease, box-shadow .12s ease;
}

.metric-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 .5rem 1rem rgba(20, 45, 70, .08);
}

.metric-value {
  color: #0d6efd;
  font-size: 2rem;
  font-weight: 700;
  line-height: 1.1;
}

table thead th {
  color: #52606d;
  font-size: .8rem;
  letter-spacing: .025em;
  text-transform: uppercase;
  white-space: nowrap;
}

.association-list {
  max-height: 22rem;
  overflow-y: auto;
}

.association-list .form-check:last-child {
  border-bottom: 0 !important;
}

.association-list .association-option {
  padding-left: 2rem !important;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
  color: var(--bs-secondary-color);
  text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
  text-align: start;
}

/* Navbar */
.navbar .nav-link {
  color: rgba(255, 255, 255, .65);
}

.navbar .nav-link:hover,
.navbar .nav-link:focus,
.navbar .nav-item.dropdown.show > .nav-link {
  color: #fff;
}

/* Narrow screen tables */
@media (max-width: 575.98px) {
  .table-responsive table {
    font-size: .85rem;
  }
  .table-responsive .table > :not(caption) > * > * {
    padding: .35rem .5rem;
  }
}

/* Narrow screen filter form */
@media (max-width: 575.98px) {
  .filter-form .row {
    --bs-gutter-y: .5rem;
  }
  .filter-form .btn {
    width: 100%;
  }
}

/* Filter accordion */
.filter-form .card-header {
  cursor: pointer;
  user-select: none;
  background: #f8f9fa;
}

.filter-form .card-header:hover {
  background: #e9ecef;
}

.filter-toggle-icon {
  font-size: .75rem;
  transition: transform .2s ease;
}

.filter-form .card-header[aria-expanded="true"] .filter-toggle-icon {
  transform: rotate(0deg);
}

.filter-form .card-header[aria-expanded="false"] .filter-toggle-icon {
  transform: rotate(180deg);
}

/* Checkbox filter dropdown */
.filter-dropdown .dropdown-menu {
  min-width: 250px;
}

.filter-dropdown .dropdown-menu .form-check {
  white-space: nowrap;
}

.filter-dropdown .dropdown-menu .form-check-label {
  cursor: pointer;
}

/* Filter summary badges in the collapsed header are visible even when collapsed */
.filter-summary .badge {
  vertical-align: middle;
}

/* ---------------------------------------------------------------- */
/* Dark theme overrides — anything hardcoded above that Bootstrap's */
/* data-bs-theme repaint doesn't reach (custom colors, third-party  */
/* widgets like Flatpickr).                                         */
/* ---------------------------------------------------------------- */
[data-bs-theme="dark"] body {
  background: #14181d;
}

[data-bs-theme="dark"] .card {
  border-color: #343a40;
}

[data-bs-theme="dark"] .metric-value {
  color: #6ea8fe;
}

[data-bs-theme="dark"] table thead th {
  color: #adb5bd;
}

[data-bs-theme="dark"] .filter-form .card-header {
  background: #1c2128;
}

[data-bs-theme="dark"] .filter-form .card-header:hover {
  background: #262c34;
}

[data-bs-theme="dark"] .footer.bg-light {
  background-color: #1c2128 !important;
}

[data-bs-theme="dark"] .card-header.bg-white {
  background-color: var(--bs-card-cap-bg) !important;
  color: var(--bs-card-color) !important;
}

/* Flatpickr ships only a light theme in this project — hand-rolled dark overrides */
[data-bs-theme="dark"] .flatpickr-calendar {
  background: #1c2128;
  border-color: #343a40;
  box-shadow: 0 3px 13px rgba(0, 0, 0, .4);
  color: #dee2e6;
}

[data-bs-theme="dark"] .flatpickr-calendar.arrowTop::before,
[data-bs-theme="dark"] .flatpickr-calendar.arrowTop::after {
  border-bottom-color: #1c2128;
}

[data-bs-theme="dark"] .flatpickr-months .flatpickr-month,
[data-bs-theme="dark"] .flatpickr-current-month .flatpickr-monthDropdown-months,
[data-bs-theme="dark"] .flatpickr-weekdays {
  background: #1c2128;
  color: #dee2e6;
  fill: #dee2e6;
}

[data-bs-theme="dark"] span.flatpickr-weekday {
  color: #adb5bd;
}

[data-bs-theme="dark"] .flatpickr-day {
  color: #dee2e6;
}

[data-bs-theme="dark"] .flatpickr-day.flatpickr-disabled,
[data-bs-theme="dark"] .flatpickr-day.prevMonthDay,
[data-bs-theme="dark"] .flatpickr-day.nextMonthDay {
  color: #495057;
}

[data-bs-theme="dark"] .flatpickr-day:hover {
  background: #343a40;
  border-color: #343a40;
}

[data-bs-theme="dark"] .flatpickr-day.selected,
[data-bs-theme="dark"] .flatpickr-day.selected:hover {
  background: #0d6efd;
  border-color: #0d6efd;
  color: #fff;
}

[data-bs-theme="dark"] .flatpickr-day.today {
  border-color: #6ea8fe;
}

[data-bs-theme="dark"] .flatpickr-time {
  background: #1c2128;
  color: #dee2e6;
}

[data-bs-theme="dark"] .flatpickr-time input,
[data-bs-theme="dark"] .flatpickr-time .flatpickr-time-separator,
[data-bs-theme="dark"] .flatpickr-time .flatpickr-am-pm {
  color: #dee2e6;
}

[data-bs-theme="dark"] .numInputWrapper span.arrowUp:after {
  border-bottom-color: #dee2e6;
}

[data-bs-theme="dark"] .numInputWrapper span.arrowDown:after {
  border-top-color: #dee2e6;
}
