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 rgba(255, 255, 255, 0.2), 0 0 0 0.25rem #4da3ff;
}

html {
  position: relative;
  min-height: 100%;
}

body {
  margin-bottom: 60px;
}

/* -------- Theme (default dark for accessibility) -------- */
:root,
html[data-theme="dark"] {
  --pb-bg: #121418;
  --pb-surface: #1c1f26;
  --pb-text: #f1f3f5;
  --pb-muted: #adb5bd;
  --pb-border: #3a3f4b;
  --pb-link: #7ec1ff;
  --pb-navbar-bg: #0f1115;
  --pb-input-bg: #2a2f3a;
  --pb-input-text: #f1f3f5;
  --pb-table-stripe: #222733;
  --pb-success-bg: #0f2a1a;
  --pb-danger-bg: #2a1014;
  --pb-secondary-bg: #252a33;
  --pb-info-bg: #0f1f3a;
  --pb-highlight-bg: #2a2410;
}

html[data-theme="light"] {
  --pb-bg: #ffffff;
  --pb-surface: #ffffff;
  --pb-text: #212529;
  --pb-muted: #6c757d;
  --pb-border: #dee2e6;
  --pb-link: #0d6efd;
  --pb-navbar-bg: #ffffff;
  --pb-input-bg: #ffffff;
  --pb-input-text: #212529;
  --pb-table-stripe: #f8f9fa;
  --pb-success-bg: #d1e7dd;
  --pb-danger-bg: #f8d7da;
  --pb-secondary-bg: #e9ecef;
  --pb-info-bg: #cfe2ff;
  --pb-highlight-bg: #fff3cd;
}

body {
  background-color: var(--pb-bg);
  color: var(--pb-text);
}

a {
  color: var(--pb-link);
}

.site-navbar {
  background-color: var(--pb-navbar-bg) !important;
  border-color: var(--pb-border) !important;
}

.navbar-brand,
.nav-link,
.btn-link {
  color: var(--pb-text) !important;
}

.nav-link:hover,
.btn-link:hover {
  color: var(--pb-link) !important;
}

.footer {
  color: var(--pb-muted) !important;
  border-color: var(--pb-border) !important;
}

.card,
.table,
.form-control,
.form-select,
.alert {
  background-color: var(--pb-surface);
  color: var(--pb-text);
  border-color: var(--pb-border);
}

.form-control,
.form-select {
  background-color: var(--pb-input-bg);
  color: var(--pb-input-text);
}

.form-control:focus,
.form-select:focus {
  background-color: var(--pb-input-bg);
  color: var(--pb-input-text);
}

.table {
  --bs-table-bg: var(--pb-surface);
  --bs-table-striped-bg: var(--pb-table-stripe);
  --bs-table-color: var(--pb-text);
  --bs-table-striped-color: var(--pb-text);
  --bs-table-border-color: var(--pb-border);
  color: var(--pb-text);
}

.table thead th {
  background-color: var(--pb-surface);
  color: var(--pb-text);
  border-color: var(--pb-border);
}

/* Force readable row colours (Bootstrap paints the cells, not just the tr) */
.table > tbody > tr.table-success > *,
.table > tbody > tr.table-danger > *,
.table > tbody > tr.table-secondary > *,
.table > tbody > tr.table-primary > *,
.table > tbody > tr.table-warning > * {
  --bs-table-accent-bg: transparent;
  color: var(--pb-text) !important;
  border-color: var(--pb-border) !important;
}

.table > tbody > tr.table-success > * {
  background-color: var(--pb-success-bg) !important;
}

.table > tbody > tr.table-danger > * {
  background-color: var(--pb-danger-bg) !important;
}

.table > tbody > tr.table-secondary > * {
  background-color: var(--pb-secondary-bg) !important;
}

.table > tbody > tr.table-primary > * {
  background-color: var(--pb-info-bg) !important;
}

.table > tbody > tr.table-warning > * {
  background-color: var(--pb-highlight-bg) !important;
}

html[data-theme="dark"] .table > tbody > tr.table-success > * {
  color: #d8f3df !important;
}

html[data-theme="dark"] .table > tbody > tr.table-danger > * {
  color: #f5d6d9 !important;
}

html[data-theme="dark"] .table > tbody > tr.table-primary > *,
html[data-theme="dark"] .table > tbody > tr.table-warning > *,
html[data-theme="dark"] .table > tbody > tr.table-secondary > * {
  color: #eef2f7 !important;
}

html[data-theme="dark"] .table > tbody > tr.table-primary > * .text-muted,
html[data-theme="dark"] .table > tbody > tr.table-warning > * .text-muted,
html[data-theme="dark"] .table > tbody > tr.table-success > * .text-muted,
html[data-theme="dark"] .table > tbody > tr.table-danger > * .text-muted {
  color: #b8c0cc !important;
}

.text-muted {
  color: var(--pb-muted) !important;
}

.border,
.border-top,
.border-bottom,
.border-danger {
  border-color: var(--pb-border) !important;
}

.pagination .page-link {
  background-color: var(--pb-surface);
  color: var(--pb-text);
  border-color: var(--pb-border);
}

.pagination .page-item.active .page-link {
  background-color: #0d6efd;
  border-color: #0d6efd;
}

.pagination .page-item.disabled .page-link {
  background-color: var(--pb-surface);
  color: var(--pb-muted);
}

.sort-link {
  color: var(--pb-text);
  text-decoration: none;
  font-weight: 600;
}

.sort-link:hover {
  color: var(--pb-link);
  text-decoration: underline;
}

/* Larger controls help with zoom / motor strain */
.btn-sm {
  min-width: 2.5rem;
  min-height: 2rem;
}

#themeToggle {
  min-height: 2.25rem;
  font-weight: 600;
}
