:root {
  color-scheme: light;
  --th-font-sans: "Be Vietnam Pro", "Segoe UI", sans-serif;

  --th-primary: #1e6f5c;
  --th-primary-rgb: 30, 111, 92;
  --th-primary-hover: #185949;
  --th-primary-soft: rgba(30, 111, 92, 0.1);
  --th-secondary: #6a776f;
  --th-secondary-rgb: 106, 119, 111;
  --th-secondary-hover: #55625b;
  --th-success: #2e7d63;
  --th-success-rgb: 46, 125, 99;
  --th-info: #147d76;
  --th-info-rgb: 20, 125, 118;
  --th-warning: #c18a2d;
  --th-warning-rgb: 193, 138, 45;
  --th-danger: #ba4a4a;
  --th-danger-rgb: 186, 74, 74;
  --th-heading: #101714;
  --th-text: #1d2722;
  --th-text-muted: #607068;
  --th-text-soft: #7f8c86;
  --th-bg: #f3f5f2;
  --th-bg-muted: #edf1ed;
  --th-surface: #ffffff;
  --th-surface-alt: #f7faf7;
  --th-surface-tint: #f1f8f4;
  --th-surface-contrast: #e6efe9;
  --th-border: #d6e0d9;
  --th-border-strong: #bfd0c5;
  --th-footer-bg: #e6efe8;
  --th-footer-text: #14201b;
  --th-footer-muted: #5b6a63;
  --th-footer-panel-bg: rgba(255, 255, 255, 0.62);
  --th-footer-panel-border: rgba(30, 111, 92, 0.12);
  --th-footer-divider: rgba(30, 111, 92, 0.16);
  --th-topbar-bg: rgba(247, 250, 247, 0.88);
  --th-topbar-shadow: 0 10px 28px rgba(17, 24, 20, 0.06);
  --th-on-primary: #f7fbf9;
  --th-on-secondary: #ffffff;
  --th-on-success: #f7fbf9;
  --th-on-info: #f5fefd;
  --th-on-warning: #201608;
  --th-on-danger: #fff7f7;
  --th-shadow-sm: 0 14px 30px rgba(17, 24, 20, 0.07);
  --th-shadow-md: 0 18px 40px rgba(17, 24, 20, 0.1);
  --th-shadow-lg: 0 24px 60px rgba(17, 24, 20, 0.14);
  --th-focus-ring: 0 0 0 0.2rem rgba(30, 111, 92, 0.16);
  --th-hero-gradient:
    linear-gradient(
      135deg,
      rgba(30, 111, 92, 0.11),
      rgba(20, 125, 118, 0.07),
      rgba(193, 138, 45, 0.07)
    );
  --th-panel-gradient:
    linear-gradient(
      180deg,
      rgba(255, 255, 255, 0.98),
      rgba(247, 250, 247, 0.94)
    );
  --th-public-bg: #f0ebe3;
  --th-public-surface: rgba(255, 252, 247, 0.78);
  --th-public-surface-strong: #fffdf8;
  --th-public-heading: #16130f;
  --th-public-text: #322d27;
  --th-public-muted: #6f6559;
  --th-public-border: rgba(64, 56, 46, 0.14);
  --th-public-grid-line: rgba(94, 82, 65, 0.08);
  --th-public-accent: #b37a2f;
  --th-public-accent-rgb: 179, 122, 47;
  --th-public-accent-hover: #946124;
  --th-public-accent-soft: rgba(179, 122, 47, 0.12);
  --th-public-topbar-bg: rgba(247, 243, 237, 0.82);
  --th-public-footer-bg: #14110e;
  --th-public-footer-surface: rgba(255, 255, 255, 0.05);
  --th-public-footer-text: #f1e8db;
  --th-public-footer-muted: #b4a694;
  --th-public-shadow: 0 22px 60px rgba(32, 24, 15, 0.12);
  --th-public-shadow-lg: 0 30px 90px rgba(32, 24, 15, 0.18);

  --bs-body-bg: var(--th-bg);
  --bs-body-color: var(--th-text);
  --bs-emphasis-color: var(--th-heading);
  --bs-secondary-color: var(--th-text-muted);
  --bs-secondary-bg: var(--th-bg-muted);
  --bs-tertiary-bg: var(--th-surface-alt);
  --bs-border-color: var(--th-border);
  --bs-border-color-translucent: rgba(191, 208, 197, 0.45);
  --bs-link-color: var(--th-primary);
  --bs-link-hover-color: var(--th-primary-hover);
  --bs-primary: var(--th-primary);
  --bs-secondary: var(--th-secondary);
  --bs-success: var(--th-success);
  --bs-info: var(--th-info);
  --bs-warning: var(--th-warning);
  --bs-danger: var(--th-danger);
}

::selection {
  background-color: rgba(var(--th-primary-rgb), 0.18);
  color: var(--th-heading);
}

html,
body {
  background-color: var(--th-bg);
  color: var(--th-text);
}

body {
  accent-color: var(--th-primary);
}

a {
  color: var(--th-primary);
}

a:hover,
a:focus {
  color: var(--th-primary-hover);
}

hr,
.border,
.border-top,
.border-end,
.border-bottom,
.border-start {
  border-color: var(--th-border) !important;
}

.bg-white {
  background-color: var(--th-surface) !important;
}

.bg-light,
.table-light,
.alert-secondary {
  background-color: var(--th-surface-alt) !important;
}

.bg-dark {
  background-color: var(--th-footer-bg) !important;
}

.text-dark {
  color: var(--th-heading) !important;
}

.text-light {
  color: var(--th-footer-text) !important;
}

.text-secondary,
.text-muted,
.link-secondary {
  color: var(--th-text-muted) !important;
}

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

.text-success {
  color: var(--th-success) !important;
}

.text-info {
  color: var(--th-info) !important;
}

.text-warning {
  color: var(--th-warning) !important;
}

.text-danger {
  color: var(--th-danger) !important;
}

.shadow-sm {
  box-shadow: var(--th-shadow-sm) !important;
}

.shadow,
.shadow-lg {
  box-shadow: var(--th-shadow-md) !important;
}

.navbar,
.dropdown-menu,
.card,
.modal-content,
.offcanvas,
.list-group-item,
.accordion-item {
  background-color: var(--th-surface);
  border-color: var(--th-border);
  color: var(--th-text);
}

.card,
.modal-content,
.offcanvas,
.dropdown-menu {
  box-shadow: var(--th-shadow-sm);
}

.card-header,
.card-footer,
.accordion-button,
.input-group-text {
  background-color: var(--th-surface-alt);
  border-color: var(--th-border);
  color: var(--th-heading);
}

.accordion-button {
  color: var(--th-heading);
}

.accordion-button:not(.collapsed) {
  background-color: var(--th-surface-tint);
  color: var(--th-heading);
  box-shadow: inset 0 -1px 0 var(--th-border);
}

.table {
  --bs-table-color: var(--th-text);
  --bs-table-bg: transparent;
  --bs-table-border-color: var(--th-border);
  --bs-table-accent-bg: transparent;
  --bs-table-striped-color: var(--th-text);
  --bs-table-striped-bg: var(--th-surface-alt);
  --bs-table-active-color: var(--th-heading);
  --bs-table-active-bg: var(--th-surface-tint);
  --bs-table-hover-color: var(--th-heading);
  --bs-table-hover-bg: var(--th-surface-tint);
}

.table thead th,
.table-light th {
  background-color: var(--th-surface-alt) !important;
  color: var(--th-heading);
}

.form-control,
.form-select,
.input-group-text {
  background-color: var(--th-surface);
  border-color: var(--th-border);
  color: var(--th-text);
}

.form-control::placeholder,
.form-select::placeholder {
  color: var(--th-text-soft);
}

.form-control:focus,
.form-select:focus,
.btn:focus,
.btn:focus-visible,
.page-link:focus,
.form-check-input:focus {
  border-color: rgba(var(--th-primary-rgb), 0.42);
  box-shadow: var(--th-focus-ring);
}

.form-check-input {
  border-color: var(--th-border-strong);
}

.form-check-input:checked {
  background-color: var(--th-primary);
  border-color: var(--th-primary);
}

.btn {
  border-radius: 0.9rem;
  font-weight: 600;
}

.btn-primary {
  --bs-btn-color: var(--th-on-primary);
  --bs-btn-bg: var(--th-primary);
  --bs-btn-border-color: var(--th-primary);
  --bs-btn-hover-color: var(--th-on-primary);
  --bs-btn-hover-bg: var(--th-primary-hover);
  --bs-btn-hover-border-color: var(--th-primary-hover);
  --bs-btn-focus-shadow-rgb: var(--th-primary-rgb);
  --bs-btn-active-color: var(--th-on-primary);
  --bs-btn-active-bg: var(--th-primary-hover);
  --bs-btn-active-border-color: var(--th-primary-hover);
}

.btn-outline-primary {
  --bs-btn-color: var(--th-primary);
  --bs-btn-border-color: var(--th-primary);
  --bs-btn-hover-color: var(--th-on-primary);
  --bs-btn-hover-bg: var(--th-primary);
  --bs-btn-hover-border-color: var(--th-primary);
  --bs-btn-focus-shadow-rgb: var(--th-primary-rgb);
  --bs-btn-active-color: var(--th-on-primary);
  --bs-btn-active-bg: var(--th-primary-hover);
  --bs-btn-active-border-color: var(--th-primary-hover);
}

.btn-secondary,
.btn-outline-secondary:hover {
  --bs-btn-color: var(--th-on-secondary);
  --bs-btn-bg: var(--th-secondary);
  --bs-btn-border-color: var(--th-secondary);
  --bs-btn-hover-color: var(--th-on-secondary);
  --bs-btn-hover-bg: var(--th-secondary-hover);
  --bs-btn-hover-border-color: var(--th-secondary-hover);
  --bs-btn-focus-shadow-rgb: var(--th-secondary-rgb);
  --bs-btn-active-color: var(--th-on-secondary);
  --bs-btn-active-bg: var(--th-secondary-hover);
  --bs-btn-active-border-color: var(--th-secondary-hover);
}

.btn-outline-secondary {
  --bs-btn-color: var(--th-secondary);
  --bs-btn-border-color: var(--th-border-strong);
  --bs-btn-hover-color: var(--th-on-secondary);
  --bs-btn-hover-bg: var(--th-secondary);
  --bs-btn-hover-border-color: var(--th-secondary);
  --bs-btn-focus-shadow-rgb: var(--th-secondary-rgb);
  --bs-btn-active-color: var(--th-on-secondary);
  --bs-btn-active-bg: var(--th-secondary-hover);
  --bs-btn-active-border-color: var(--th-secondary-hover);
}

.btn-success {
  --bs-btn-color: var(--th-on-success);
  --bs-btn-bg: var(--th-success);
  --bs-btn-border-color: var(--th-success);
  --bs-btn-hover-color: var(--th-on-success);
  --bs-btn-hover-bg: #276c55;
  --bs-btn-hover-border-color: #276c55;
  --bs-btn-focus-shadow-rgb: var(--th-success-rgb);
  --bs-btn-active-color: var(--th-on-success);
  --bs-btn-active-bg: #276c55;
  --bs-btn-active-border-color: #276c55;
}

.btn-outline-success {
  --bs-btn-color: var(--th-success);
  --bs-btn-border-color: rgba(var(--th-success-rgb), 0.55);
  --bs-btn-hover-color: var(--th-on-success);
  --bs-btn-hover-bg: var(--th-success);
  --bs-btn-hover-border-color: var(--th-success);
  --bs-btn-focus-shadow-rgb: var(--th-success-rgb);
}

.btn-warning {
  --bs-btn-color: var(--th-on-warning);
  --bs-btn-bg: var(--th-warning);
  --bs-btn-border-color: var(--th-warning);
  --bs-btn-hover-color: var(--th-on-warning);
  --bs-btn-hover-bg: #ad7b25;
  --bs-btn-hover-border-color: #ad7b25;
  --bs-btn-focus-shadow-rgb: var(--th-warning-rgb);
  --bs-btn-active-color: var(--th-on-warning);
  --bs-btn-active-bg: #ad7b25;
  --bs-btn-active-border-color: #ad7b25;
}

.btn-outline-warning {
  --bs-btn-color: var(--th-warning);
  --bs-btn-border-color: rgba(var(--th-warning-rgb), 0.58);
  --bs-btn-hover-color: var(--th-on-warning);
  --bs-btn-hover-bg: var(--th-warning);
  --bs-btn-hover-border-color: var(--th-warning);
  --bs-btn-focus-shadow-rgb: var(--th-warning-rgb);
}

.btn-danger {
  --bs-btn-color: var(--th-on-danger);
  --bs-btn-bg: var(--th-danger);
  --bs-btn-border-color: var(--th-danger);
  --bs-btn-hover-color: var(--th-on-danger);
  --bs-btn-hover-bg: #a33c3c;
  --bs-btn-hover-border-color: #a33c3c;
  --bs-btn-focus-shadow-rgb: var(--th-danger-rgb);
  --bs-btn-active-color: var(--th-on-danger);
  --bs-btn-active-bg: #a33c3c;
  --bs-btn-active-border-color: #a33c3c;
}

.btn-outline-danger {
  --bs-btn-color: var(--th-danger);
  --bs-btn-border-color: rgba(var(--th-danger-rgb), 0.55);
  --bs-btn-hover-color: var(--th-on-danger);
  --bs-btn-hover-bg: var(--th-danger);
  --bs-btn-hover-border-color: var(--th-danger);
  --bs-btn-focus-shadow-rgb: var(--th-danger-rgb);
}

.btn-light {
  --bs-btn-color: var(--th-heading);
  --bs-btn-bg: var(--th-surface);
  --bs-btn-border-color: var(--th-border);
  --bs-btn-hover-color: var(--th-heading);
  --bs-btn-hover-bg: var(--th-surface-alt);
  --bs-btn-hover-border-color: var(--th-border-strong);
  --bs-btn-focus-shadow-rgb: var(--th-primary-rgb);
  --bs-btn-active-color: var(--th-heading);
  --bs-btn-active-bg: var(--th-surface-alt);
  --bs-btn-active-border-color: var(--th-border-strong);
}

.page-link {
  color: var(--th-primary);
  background-color: var(--th-surface);
  border-color: var(--th-border);
}

.page-link:hover {
  color: var(--th-primary-hover);
  background-color: var(--th-surface-alt);
  border-color: var(--th-border-strong);
}

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

.page-item.disabled .page-link {
  color: var(--th-text-soft);
  background-color: var(--th-surface-alt);
  border-color: var(--th-border);
}

.badge.text-bg-primary,
.text-bg-primary,
.bg-primary {
  background-color: var(--th-primary) !important;
  color: var(--th-on-primary) !important;
}

.badge.text-bg-secondary,
.text-bg-secondary,
.bg-secondary {
  background-color: var(--th-secondary) !important;
  color: var(--th-on-secondary) !important;
}

.badge.text-bg-success,
.text-bg-success,
.bg-success {
  background-color: var(--th-success) !important;
  color: var(--th-on-success) !important;
}

.badge.text-bg-info,
.text-bg-info,
.bg-info {
  background-color: var(--th-info) !important;
  color: var(--th-on-info) !important;
}

.badge.text-bg-warning,
.text-bg-warning,
.bg-warning {
  background-color: var(--th-warning) !important;
  color: var(--th-on-warning) !important;
}

.badge.text-bg-danger,
.text-bg-danger,
.bg-danger {
  background-color: var(--th-danger) !important;
  color: var(--th-on-danger) !important;
}

.badge.text-bg-light,
.text-bg-light {
  background-color: var(--th-surface-alt) !important;
  color: var(--th-heading) !important;
}

.alert-success {
  color: var(--th-heading);
  background-color: rgba(var(--th-success-rgb), 0.1);
  border-color: rgba(var(--th-success-rgb), 0.25);
}

.alert-danger {
  color: var(--th-heading);
  background-color: rgba(var(--th-danger-rgb), 0.1);
  border-color: rgba(var(--th-danger-rgb), 0.24);
}

.alert-secondary {
  color: var(--th-text-muted);
  background-color: var(--th-surface-alt);
  border-color: var(--th-border);
}

.alert-warning {
  color: var(--th-heading);
  background-color: rgba(var(--th-warning-rgb), 0.12);
  border-color: rgba(var(--th-warning-rgb), 0.24);
}

.nav-link {
  color: var(--th-text-muted);
}

.nav-link:hover,
.nav-link:focus,
.nav-link.active,
.navbar .nav-link.active {
  color: var(--th-primary);
}

.link-body-emphasis {
  color: var(--th-heading) !important;
}

.navbar-toggler {
  border-color: var(--th-border);
}
