.btn {
  --bs-btn-border-radius: var(--rm-radius-sm);
  --bs-btn-font-weight: 650;
  min-height: var(--rm-control-height);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--rm-space-2);
}

.btn-sm {
  --bs-btn-border-radius: var(--rm-radius-xs);
  min-height: var(--rm-control-height-sm);
}

.btn-lg {
  --bs-btn-border-radius: var(--rm-radius-md);
  min-height: var(--rm-control-height-lg);
}

.btn-primary {
  --bs-btn-color: var(--rm-on-accent);
  --bs-btn-bg: var(--rm-accent);
  --bs-btn-border-color: var(--rm-accent);
  --bs-btn-hover-color: var(--rm-on-accent);
  --bs-btn-hover-bg: var(--rm-accent-strong);
  --bs-btn-hover-border-color: var(--rm-accent-strong);
  --bs-btn-focus-shadow-rgb: var(--rm-focus-ring-rgb);
  --bs-btn-active-color: var(--rm-on-accent);
  --bs-btn-active-bg: var(--rm-accent-strong);
  --bs-btn-active-border-color: var(--rm-accent-strong);
  --bs-btn-disabled-color: var(--rm-on-accent);
  --bs-btn-disabled-bg: var(--rm-accent);
  --bs-btn-disabled-border-color: var(--rm-accent);
  box-shadow: 0 6px 14px rgba(var(--rm-accent-rgb), 0.2);
}

.btn-outline-primary {
  --bs-btn-color: var(--rm-accent);
  --bs-btn-border-color: var(--rm-accent);
  --bs-btn-hover-color: var(--rm-on-accent);
  --bs-btn-hover-bg: var(--rm-accent);
  --bs-btn-hover-border-color: var(--rm-accent);
  --bs-btn-focus-shadow-rgb: var(--rm-focus-ring-rgb);
  --bs-btn-active-color: var(--rm-on-accent);
  --bs-btn-active-bg: var(--rm-accent-strong);
  --bs-btn-active-border-color: var(--rm-accent-strong);
  --bs-btn-disabled-color: var(--rm-text-muted);
  --bs-btn-disabled-border-color: var(--rm-border);
}

.btn-secondary,
.btn-outline-secondary {
  --bs-btn-color: var(--rm-text);
  --bs-btn-bg: var(--rm-surface-soft);
  --bs-btn-border-color: var(--rm-border);
  --bs-btn-hover-color: var(--rm-text);
  --bs-btn-hover-bg: var(--rm-surface-hover);
  --bs-btn-hover-border-color: var(--rm-border-strong);
  --bs-btn-active-color: var(--rm-text);
  --bs-btn-active-bg: var(--rm-accent-soft);
  --bs-btn-active-border-color: var(--rm-accent);
  --bs-btn-disabled-color: var(--rm-text-muted);
  --bs-btn-disabled-bg: var(--rm-surface-soft);
  --bs-btn-disabled-border-color: var(--rm-border);
}

.btn-outline-secondary {
  --bs-btn-bg: transparent;
}

.btn-danger {
  --bs-btn-color: #ffffff;
  --bs-btn-bg: var(--rm-danger-solid);
  --bs-btn-border-color: var(--rm-danger-solid);
  --bs-btn-hover-color: #ffffff;
  --bs-btn-hover-bg: var(--rm-danger-solid);
  --bs-btn-hover-border-color: var(--rm-danger-border);
  --bs-btn-focus-shadow-rgb: var(--rm-danger-solid-rgb);
  --bs-btn-active-color: #ffffff;
  --bs-btn-active-bg: var(--rm-danger-solid);
  --bs-btn-active-border-color: var(--rm-danger-border);
}

.btn-success {
  --bs-btn-color: #ffffff;
  --bs-btn-bg: var(--rm-success-solid);
  --bs-btn-border-color: var(--rm-success-solid);
  --bs-btn-hover-color: #ffffff;
  --bs-btn-hover-bg: var(--rm-success-solid);
  --bs-btn-hover-border-color: var(--rm-success-border);
  --bs-btn-focus-shadow-rgb: var(--rm-success-solid-rgb);
  --bs-btn-active-color: #ffffff;
  --bs-btn-active-bg: var(--rm-success-solid);
  --bs-btn-active-border-color: var(--rm-success-border);
}

.btn-info {
  --bs-btn-color: #ffffff;
  --bs-btn-bg: var(--rm-info-solid);
  --bs-btn-border-color: var(--rm-info-solid);
  --bs-btn-hover-color: #ffffff;
  --bs-btn-hover-bg: var(--rm-info-solid);
  --bs-btn-hover-border-color: var(--rm-info-border);
  --bs-btn-focus-shadow-rgb: var(--rm-info-solid-rgb);
  --bs-btn-active-color: #ffffff;
  --bs-btn-active-bg: var(--rm-info-solid);
  --bs-btn-active-border-color: var(--rm-info-border);
}

.btn-warning {
  --bs-btn-color: var(--rm-warning-button-text);
  --bs-btn-bg: var(--rm-warning-solid);
  --bs-btn-border-color: var(--rm-warning-border);
  --bs-btn-hover-color: var(--rm-warning-button-text);
  --bs-btn-hover-bg: var(--rm-warning-solid);
  --bs-btn-hover-border-color: var(--rm-warning-text);
  --bs-btn-focus-shadow-rgb: var(--rm-warning-solid-rgb);
  --bs-btn-active-color: var(--rm-warning-button-text);
  --bs-btn-active-bg: var(--rm-warning-solid);
  --bs-btn-active-border-color: var(--rm-warning-text);
}

.btn-link {
  --bs-btn-color: var(--rm-accent);
  --bs-btn-hover-color: var(--rm-accent-strong);
  text-underline-offset: 0.18em;
}

.btn:focus-visible,
.form-control:focus-visible,
.form-select:focus-visible,
.form-check-input:focus-visible,
.page-link:focus-visible,
.dropdown-item:focus-visible,
.nav-link:focus-visible {
  outline: var(--rm-focus-width) solid rgba(var(--rm-focus-ring-rgb), 0.42);
  outline-offset: 2px;
  box-shadow: none;
}

.card {
  --bs-card-color: var(--rm-text);
  --bs-card-bg: var(--rm-surface);
  --bs-card-border-color: var(--rm-border);
  --bs-card-border-radius: var(--rm-radius-lg);
  --bs-card-cap-color: var(--rm-text);
  --bs-card-cap-bg: var(--rm-surface-soft);
  background: var(--rm-surface-gloss);
  box-shadow: var(--rm-shadow-sm);
}

.card-header,
.card-footer {
  border-color: var(--rm-border);
}

.form-control,
.form-select,
.input-group-text {
  min-height: var(--rm-control-height);
  color: var(--rm-text);
  background-color: var(--rm-surface);
  border-color: var(--rm-border-strong);
  border-radius: var(--rm-radius-sm);
}

.input-group > :not(:first-child) {
  margin-left: calc(var(--bs-border-width) * -1);
}

.form-control::placeholder {
  color: var(--rm-text-muted);
  opacity: 0.82;
}

.form-control:focus,
.form-select:focus,
.form-check-input:focus {
  color: var(--rm-text);
  background-color: var(--rm-surface);
  border-color: var(--rm-focus-ring);
  box-shadow: 0 0 0 0.2rem rgba(var(--rm-focus-ring-rgb), 0.2);
}

.form-control:disabled,
.form-select:disabled,
.form-control[readonly] {
  color: var(--rm-text-muted);
  background-color: var(--rm-surface-soft);
  border-color: var(--rm-border);
  opacity: 1;
}

.form-check-input {
  background-color: var(--rm-surface);
  border-color: var(--rm-border-strong);
}

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

.form-label,
.col-form-label {
  color: var(--rm-text);
  font-weight: 650;
}

.form-text {
  color: var(--rm-text-muted);
}

.table {
  --bs-table-color: var(--rm-text);
  --bs-table-bg: transparent;
  --bs-table-border-color: var(--rm-border);
  --bs-table-striped-color: var(--rm-text);
  --bs-table-striped-bg: rgba(var(--rm-accent-rgb), 0.035);
  --bs-table-active-color: var(--rm-text);
  --bs-table-active-bg: var(--rm-accent-soft);
  --bs-table-hover-color: var(--rm-text);
  --bs-table-hover-bg: var(--rm-surface-hover);
  margin-bottom: 0;
}

.table > :not(caption) > * > * {
  border-bottom-color: var(--rm-border);
}

.table thead th,
.table-light {
  --bs-table-color: var(--rm-text-muted);
  --bs-table-bg: var(--rm-surface-soft);
  --bs-table-border-color: var(--rm-border);
  color: var(--rm-text-muted);
}

.dropdown-menu {
  --bs-dropdown-color: var(--rm-text);
  --bs-dropdown-bg: var(--rm-surface-raised);
  --bs-dropdown-border-color: var(--rm-border);
  --bs-dropdown-border-radius: var(--rm-radius-md);
  --bs-dropdown-link-color: var(--rm-text);
  --bs-dropdown-link-hover-color: var(--rm-text);
  --bs-dropdown-link-hover-bg: var(--rm-surface-hover);
  --bs-dropdown-link-active-color: var(--rm-on-accent);
  --bs-dropdown-link-active-bg: var(--rm-accent);
  --bs-dropdown-link-disabled-color: var(--rm-text-muted);
  --bs-dropdown-header-color: var(--rm-text-muted);
  box-shadow: var(--rm-shadow-md);
}

.dropdown-item {
  border-radius: var(--rm-radius-xs);
}

.modal-content,
.offcanvas,
.toast {
  color: var(--rm-text);
  background: var(--rm-surface-raised);
  border-color: var(--rm-border);
  box-shadow: var(--rm-shadow-lg);
}

.modal-content {
  border-radius: var(--rm-radius-xl);
}

/* Keep every Bootstrap popup above its blocker, including modals launched
   from full-view panels or legacy transformed feature containers. */
.modal-backdrop {
  z-index: calc(var(--rm-z-dialog) + 20) !important;
}

.modal {
  z-index: calc(var(--rm-z-dialog) + 30) !important;
}

.modal-header,
.modal-footer,
.offcanvas-header,
.toast-header {
  color: var(--rm-text);
  background: transparent;
  border-color: var(--rm-border);
}

.modal-backdrop.show,
.offcanvas-backdrop.show {
  opacity: 1;
  background-color: var(--rm-overlay);
}

.nav-tabs {
  --bs-nav-tabs-border-color: var(--rm-border);
  --bs-nav-tabs-link-hover-border-color: var(--rm-border) var(--rm-border) transparent;
  --bs-nav-tabs-link-active-color: var(--rm-accent);
  --bs-nav-tabs-link-active-bg: var(--rm-surface);
  --bs-nav-tabs-link-active-border-color: var(--rm-border) var(--rm-border) var(--rm-surface);
}

.nav-pills {
  --bs-nav-pills-link-active-color: var(--rm-on-accent);
  --bs-nav-pills-link-active-bg: var(--rm-accent);
}

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

.nav-link:hover,
.nav-link:focus {
  color: var(--rm-accent);
}

.pagination {
  --bs-pagination-color: var(--rm-accent);
  --bs-pagination-bg: var(--rm-surface);
  --bs-pagination-border-color: var(--rm-border);
  --bs-pagination-hover-color: var(--rm-accent-strong);
  --bs-pagination-hover-bg: var(--rm-surface-hover);
  --bs-pagination-hover-border-color: var(--rm-border-strong);
  --bs-pagination-focus-color: var(--rm-accent-strong);
  --bs-pagination-focus-bg: var(--rm-surface-hover);
  --bs-pagination-focus-box-shadow: 0 0 0 0.2rem rgba(var(--rm-focus-ring-rgb), 0.2);
  --bs-pagination-active-color: var(--rm-on-accent);
  --bs-pagination-active-bg: var(--rm-accent);
  --bs-pagination-active-border-color: var(--rm-accent);
  --bs-pagination-disabled-color: var(--rm-text-muted);
  --bs-pagination-disabled-bg: var(--rm-surface-soft);
  --bs-pagination-disabled-border-color: var(--rm-border);
}

.page-link {
  border-radius: var(--rm-radius-xs);
}

.list-group {
  --bs-list-group-color: var(--rm-text);
  --bs-list-group-bg: var(--rm-surface);
  --bs-list-group-border-color: var(--rm-border);
  --bs-list-group-action-color: var(--rm-text-muted);
  --bs-list-group-action-hover-color: var(--rm-text);
  --bs-list-group-action-hover-bg: var(--rm-surface-hover);
  --bs-list-group-active-color: var(--rm-on-accent);
  --bs-list-group-active-bg: var(--rm-accent);
  --bs-list-group-active-border-color: var(--rm-accent);
}

.alert-success,
.text-bg-success,
.badge.bg-success {
  color: var(--rm-success-text) !important;
  background-color: var(--rm-success-bg) !important;
  border-color: var(--rm-success-border) !important;
}

.alert-info,
.text-bg-info,
.badge.bg-info,
.bg-info.text-dark {
  color: var(--rm-info-text) !important;
  background-color: var(--rm-info-bg) !important;
  border-color: var(--rm-info-border) !important;
}

.alert-warning,
.text-bg-warning,
.badge.bg-warning,
.bg-warning.text-dark {
  color: var(--rm-warning-text) !important;
  background-color: var(--rm-warning-bg) !important;
  border-color: var(--rm-warning-border) !important;
}

.alert-danger,
.text-bg-danger,
.badge.bg-danger {
  color: var(--rm-danger-text) !important;
  background-color: var(--rm-danger-bg) !important;
  border-color: var(--rm-danger-border) !important;
}

.badge {
  font-weight: 700;
  letter-spacing: 0.01em;
}

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

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

.bg-light,
.bg-light-subtle {
  background-color: var(--rm-surface-soft) !important;
}

.text-dark,
.text-body {
  color: var(--rm-text) !important;
}

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

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

.progress {
  --bs-progress-bg: var(--rm-surface-soft);
  --bs-progress-bar-bg: var(--rm-accent);
  border: 1px solid var(--rm-border);
}

.accordion {
  --bs-accordion-color: var(--rm-text);
  --bs-accordion-bg: var(--rm-surface);
  --bs-accordion-border-color: var(--rm-border);
  --bs-accordion-btn-color: var(--rm-text);
  --bs-accordion-btn-bg: var(--rm-surface);
  --bs-accordion-active-color: var(--rm-accent);
  --bs-accordion-active-bg: var(--rm-accent-soft);
  --bs-accordion-btn-focus-border-color: var(--rm-focus-ring);
  --bs-accordion-btn-focus-box-shadow: 0 0 0 0.2rem rgba(var(--rm-focus-ring-rgb), 0.2);
}

.breadcrumb {
  --bs-breadcrumb-divider-color: var(--rm-text-muted);
  --bs-breadcrumb-item-active-color: var(--rm-text-muted);
}

.popover,
.tooltip {
  --bs-popover-bg: var(--rm-surface-raised);
  --bs-popover-border-color: var(--rm-border);
  --bs-popover-header-bg: var(--rm-surface-soft);
  --bs-popover-header-color: var(--rm-text);
  --bs-popover-body-color: var(--rm-text);
}
