:root {
  color-scheme: light;
  --dp-page-bg: #f3eedf;
  --dp-surface: #fffaf0;
  --dp-surface-muted: #e9e0cc;
  --dp-text: #1d2b24;
  --dp-text-muted: #667168;
  --dp-border: #d6c7a5;
  --dp-row-hover: rgba(31, 107, 79, 0.08);
  --dp-header-bg: rgba(246, 240, 224, 0.96);
  --dp-header-border: #cdb98d;
  --dp-input-bg: #fffdf7;
  --dp-input-text: #1d2b24;
  --dp-input-border: #c7b98f;
  --dp-jade: #1f6b4f;
  --dp-jade-strong: #17553e;
  --dp-gold: #a97b2d;
  --dp-gold-soft: #d8bb79;
  --dp-ink: #15211c;
  --dp-focus: #0d7d57;
}

html[data-theme="dark"] {
  color-scheme: dark;
  --dp-page-bg: #08130f;
  --dp-surface: #102019;
  --dp-surface-muted: #192c23;
  --dp-text: #f1ead8;
  --dp-text-muted: #aab7ad;
  --dp-border: #31483b;
  --dp-row-hover: rgba(77, 166, 124, 0.12);
  --dp-header-bg: rgba(9, 24, 18, 0.96);
  --dp-header-border: #294236;
  --dp-input-bg: #0c1813;
  --dp-input-text: #f1ead8;
  --dp-input-border: #3a5547;
  --dp-jade: #4da67c;
  --dp-jade-strong: #79c49d;
  --dp-gold: #c69a4c;
  --dp-gold-soft: #e0c485;
  --dp-ink: #07100c;
  --dp-focus: #79c49d;
}

html,
body {
  min-height: 100%;
  background-color: var(--dp-page-bg);
  color: var(--dp-text);
}

body,
main,
main .features,
main .table-responsive {
  color: var(--dp-text);
}

a {
  color: var(--dp-jade);
}

a:hover,
a:focus {
  color: var(--dp-jade-strong);
}

:focus-visible {
  outline: 3px solid var(--dp-focus);
  outline-offset: 3px;
}

.theme-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .45rem;
  padding: .45rem .7rem;
  border: 1px solid var(--dp-border);
  border-radius: 999px;
  color: var(--dp-text);
  background: var(--dp-surface);
  line-height: 1.2;
}

.theme-toggle:hover,
.theme-toggle:focus {
  color: var(--dp-text);
  background: var(--dp-surface-muted);
}

.theme-toggle-icon {
  width: 1.1rem;
  text-align: center;
}

.table {
  --bs-table-bg: var(--dp-surface);
  --bs-table-color: var(--dp-text);
  --bs-table-border-color: var(--dp-border);
  --bs-table-hover-bg: var(--dp-row-hover);
  --bs-table-hover-color: var(--dp-text);
  color: var(--dp-text);
  border-color: var(--dp-border);
}

.table > :not(caption) > * > * {
  color: var(--dp-text);
  background-color: var(--dp-surface);
  border-bottom-color: var(--dp-border);
}

.table-hover > tbody > tr:hover > * {
  color: var(--dp-text);
  background-color: var(--dp-row-hover);
}

.table-light,
.table-light > th,
.table-light > td,
.table-light > tr > th,
.table-light > tr > td {
  color: var(--dp-text) !important;
  background-color: var(--dp-surface-muted) !important;
  border-color: var(--dp-border) !important;
}

.text-muted {
  color: var(--dp-text-muted) !important;
}

.form-control,
.form-select {
  color: var(--dp-input-text);
  background-color: var(--dp-input-bg);
  border-color: var(--dp-input-border);
}

.form-control:focus,
.form-select:focus {
  color: var(--dp-input-text);
  background-color: var(--dp-input-bg);
  border-color: var(--dp-jade);
  box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--dp-jade) 22%, transparent);
}

.form-floating > label {
  color: var(--dp-text-muted);
}

.btn-primary {
  --bs-btn-bg: var(--dp-jade);
  --bs-btn-border-color: var(--dp-jade);
  --bs-btn-hover-bg: var(--dp-jade-strong);
  --bs-btn-hover-border-color: var(--dp-jade-strong);
  --bs-btn-active-bg: var(--dp-jade-strong);
  --bs-btn-active-border-color: var(--dp-jade-strong);
}

.template-status {
  min-width: 5.7rem;
  padding: .38rem .55rem;
  border: 1px solid transparent;
  font-weight: 700;
  letter-spacing: .01em;
}

.table .template-status-active {
  color: #0b4d32 !important;
  background: #d9f0e3 !important;
  border-color: #72a98b;
}

.table .template-status-inactive {
  color: #8a1f27 !important;
  background: #fde2e4 !important;
  border-color: #d88489;
}

html[data-theme="dark"] .table .template-status-active {
  color: #d6f5e3 !important;
  background: #1d5039 !important;
  border-color: #4d9a70;
}

html[data-theme="dark"] .table .template-status-inactive {
  color: #ffd8db !important;
  background: #682c33 !important;
  border-color: #b85b64;
}

.template-run-toast {
  position: fixed;
  top: 5.25rem;
  left: 50%;
  z-index: 1100;
  width: min(42rem, calc(100% - 2rem));
  padding: .8rem 1rem;
  border: 1px solid var(--dp-border);
  border-radius: .7rem;
  box-shadow: 0 12px 36px rgba(0, 0, 0, .22);
  opacity: 0;
  transform: translate(-50%, -.5rem);
  transition: opacity .18s ease, transform .18s ease;
  pointer-events: none;
  font-weight: 600;
}

.template-run-toast.is-visible {
  opacity: .98;
  transform: translate(-50%, 0);
}

.template-run-toast-success {
  color: #0b4d32;
  background: #d9f0e3;
  border-color: #72a98b;
}

.template-run-toast-warning {
  color: #674c05;
  background: #fff0b8;
  border-color: #d1aa3d;
}

.template-run-toast-danger {
  color: #811f26;
  background: #fde2e4;
  border-color: #d88489;
}

html[data-theme="dark"] .template-run-toast-success {
  color: #d6f5e3;
  background: #1d5039;
  border-color: #4d9a70;
}

html[data-theme="dark"] .template-run-toast-warning {
  color: #ffe8a5;
  background: #4b3a16;
  border-color: #8d711f;
}

html[data-theme="dark"] .template-run-toast-danger {
  color: #ffd8db;
  background: #682c33;
  border-color: #b85b64;
}

html[data-theme="dark"] .alert-success {
  color: #bce8cf;
  background-color: #173728;
  border-color: #2c5b44;
}

html[data-theme="dark"] .alert-info {
  color: #c6e5f5;
  background-color: #173140;
  border-color: #2d5162;
}

html[data-theme="dark"] .alert-warning {
  color: #ffe6a7;
  background-color: #473713;
  border-color: #67531c;
}

html[data-theme="dark"] .alert-danger {
  color: #ffd1d1;
  background-color: #482026;
  border-color: #693038;
}

.login-theme-toggle {
  position: fixed;
  top: 1rem;
  right: 1rem;
  z-index: 30;
}