/* 框架提供组件外观与状态样式，这里接到原有配色和尺寸。 */
:root {
  --bs-primary: var(--accent);
  --bs-primary-rgb: 121, 87, 66;
  --bs-secondary: var(--muted);
  --bs-secondary-rgb: 139, 129, 119;
  --bs-danger: var(--danger);
  --bs-danger-rgb: 169, 66, 53;
  --bs-light: var(--surface);
  --bs-light-rgb: 255, 253, 249;
  --bs-dark: var(--ink);
  --bs-dark-rgb: 51, 44, 38;
  --bs-body-font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --bs-body-font-size: 15px;
  --bs-body-line-height: 1.55;
  --bs-body-color: var(--ink);
  --bs-body-color-rgb: 51, 44, 38;
  --bs-body-bg: var(--paper);
  --bs-body-bg-rgb: 246, 243, 237;
  --bs-heading-color: var(--ink);
  --bs-emphasis-color: var(--ink);
  --bs-emphasis-color-rgb: 51, 44, 38;
  --bs-secondary-color: var(--muted);
  --bs-secondary-color-rgb: 139, 129, 119;
  --bs-secondary-bg: var(--paper);
  --bs-secondary-bg-rgb: 246, 243, 237;
  --bs-tertiary-color: var(--muted);
  --bs-tertiary-color-rgb: 139, 129, 119;
  --bs-tertiary-bg: var(--surface);
  --bs-tertiary-bg-rgb: 255, 253, 249;
  --bs-primary-text-emphasis: var(--accent-hover);
  --bs-primary-bg-subtle: var(--accent-soft);
  --bs-primary-border-subtle: var(--line);
  --bs-danger-text-emphasis: var(--danger);
  --bs-danger-bg-subtle: #fff7f2;
  --bs-danger-border-subtle: #e6c9bc;
  --bs-link-color: var(--accent);
  --bs-link-color-rgb: 121, 87, 66;
  --bs-link-hover-color: var(--accent-hover);
  --bs-link-hover-color-rgb: 96, 65, 47;
  --bs-border-color: var(--line);
  --bs-border-color-translucent: var(--line);
  --bs-border-radius: 6px;
  --bs-focus-ring-color: rgba(var(--bs-primary-rgb), .25);
  --bs-form-invalid-color: var(--danger);
  --bs-form-invalid-border-color: var(--danger);
}

.btn {
  --bs-btn-padding-x: 18px;
  --bs-btn-padding-y: 11px;
  --bs-btn-font-family: inherit;
  --bs-btn-font-size: 14px;
  --bs-btn-font-weight: 500;
  --bs-btn-line-height: 1.5;
  --bs-btn-border-radius: 6px;
  --bs-btn-color: var(--ink);
  --bs-btn-bg: var(--surface);
  --bs-btn-border-color: var(--line);
  --bs-btn-hover-color: var(--ink);
  --bs-btn-hover-bg: var(--accent-soft);
  --bs-btn-hover-border-color: var(--accent);
  --bs-btn-active-color: var(--ink);
  --bs-btn-active-bg: var(--accent-soft);
  --bs-btn-active-border-color: var(--accent);
  --bs-btn-disabled-color: var(--muted);
  --bs-btn-disabled-bg: var(--surface);
  --bs-btn-disabled-border-color: var(--line);
  --bs-btn-disabled-opacity: .55;
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
  --bs-btn-focus-box-shadow: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
}

.btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }

.btn-primary {
  --bs-btn-color: #fff;
  --bs-btn-bg: var(--accent);
  --bs-btn-border-color: var(--accent);
  --bs-btn-hover-color: #fff;
  --bs-btn-hover-bg: var(--accent-hover);
  --bs-btn-hover-border-color: var(--accent-hover);
  --bs-btn-active-color: #fff;
  --bs-btn-active-bg: var(--accent-hover);
  --bs-btn-active-border-color: var(--accent-hover);
  --bs-btn-disabled-color: #fff;
  --bs-btn-disabled-bg: var(--accent);
  --bs-btn-disabled-border-color: var(--accent);
}

.btn-outline-secondary {
  --bs-btn-color: var(--ink);
  --bs-btn-bg: transparent;
  --bs-btn-border-color: var(--line);
  --bs-btn-hover-color: var(--ink);
  --bs-btn-hover-bg: var(--accent-soft);
  --bs-btn-hover-border-color: var(--accent);
  --bs-btn-active-color: var(--ink);
  --bs-btn-active-bg: var(--accent-soft);
  --bs-btn-active-border-color: var(--accent);
  --bs-btn-disabled-color: var(--muted);
  --bs-btn-disabled-bg: transparent;
  --bs-btn-disabled-border-color: var(--line);
}

.btn-outline-danger {
  --bs-btn-color: var(--danger);
  --bs-btn-bg: #fff9f6;
  --bs-btn-border-color: #ead0c8;
  --bs-btn-hover-color: var(--danger);
  --bs-btn-hover-bg: #fbeae5;
  --bs-btn-hover-border-color: #d8a397;
  --bs-btn-active-color: var(--danger);
  --bs-btn-active-bg: #fbeae5;
  --bs-btn-active-border-color: var(--danger);
  --bs-btn-disabled-color: var(--danger);
  --bs-btn-disabled-bg: #fff9f6;
  --bs-btn-disabled-border-color: #ead0c8;
}

.form-control, .form-select {
  min-height: 48px;
  padding: 11px 13px;
  background-color: var(--surface);
  color: var(--ink);
  font-size: 16px;
  line-height: 1.5;
  /* 输入时立即显示当前焦点，沿用原表单的单条内侧边缘。 */
  transition: none;
}
.form-select, .field .form-select { padding-right: 40px; }
.form-control:focus, .form-select:focus {
  background-color: var(--surface);
  color: var(--ink);
  border-color: var(--accent);
  outline: none;
  outline-offset: 0;
  box-shadow: inset 0 0 0 1px var(--accent);
}
/* 搜索输入框的内侧焦点由外层搜索栏绘制，避免两层边框。 */
.search-field .form-control:focus { box-shadow: none; }
input[type=checkbox], input[type=radio] { accent-color: var(--accent); }
.form-check-input { --bs-form-check-bg: var(--surface); }
.form-check-input:checked, .form-check-input[type=checkbox]:indeterminate {
  background-color: var(--accent);
  border-color: var(--accent);
}
.form-check-input:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(var(--bs-primary-rgb), .25);
}
.form-range::-webkit-slider-thumb { background-color: var(--accent); }
.form-range::-moz-range-thumb { background-color: var(--accent); }
.form-range::-webkit-slider-thumb:active { background-color: var(--accent-hover); }
.form-range::-moz-range-thumb:active { background-color: var(--accent-hover); }
.form-range:focus::-webkit-slider-thumb { box-shadow: 0 0 0 1px var(--surface), 0 0 0 3px rgba(var(--bs-primary-rgb), .25); }
.form-range:focus::-moz-range-thumb { box-shadow: 0 0 0 1px var(--surface), 0 0 0 3px rgba(var(--bs-primary-rgb), .25); }

.card {
  --bs-card-color: var(--ink);
  --bs-card-bg: var(--surface);
  --bs-card-border-color: var(--line);
  --bs-card-border-radius: 6px;
  --bs-card-cap-bg: var(--paper);
}
.list-group {
  --bs-list-group-color: var(--ink);
  --bs-list-group-bg: var(--surface);
  --bs-list-group-border-color: var(--line);
  --bs-list-group-border-radius: 6px;
  --bs-list-group-action-color: var(--ink);
  --bs-list-group-action-hover-color: var(--ink);
  --bs-list-group-action-hover-bg: var(--accent-soft);
  --bs-list-group-action-active-color: var(--ink);
  --bs-list-group-action-active-bg: var(--accent-soft);
  --bs-list-group-active-color: var(--surface);
  --bs-list-group-active-bg: var(--accent);
  --bs-list-group-active-border-color: var(--accent);
  --bs-list-group-disabled-color: var(--muted);
  --bs-list-group-disabled-bg: var(--paper);
}
.list-group-item-action { min-height: 44px; }
.badge { --bs-badge-font-weight: 500; --bs-badge-color: var(--muted); --bs-badge-border-radius: 4px; }
.alert {
  --bs-alert-color: var(--ink);
  --bs-alert-bg: var(--paper);
  --bs-alert-border-color: var(--line);
  --bs-alert-border-radius: 6px;
}
.alert-danger {
  --bs-alert-color: var(--danger);
  --bs-alert-bg: var(--bs-danger-bg-subtle);
  --bs-alert-border-color: var(--bs-danger-border-subtle);
  --bs-alert-link-color: var(--danger);
}

/* 原生弹窗继续管理开关；框架的标题、正文和页脚只提供分区样式。 */
.admin-dialog {
  --bs-modal-padding: 28px;
  --bs-modal-inner-border-radius: 5px;
  --bs-modal-header-padding: 20px 28px;
  --bs-modal-header-border-width: 1px;
  --bs-modal-header-border-color: var(--line);
  --bs-modal-footer-gap: 10px;
  --bs-modal-footer-bg: var(--surface);
  --bs-modal-footer-border-width: 1px;
  --bs-modal-footer-border-color: var(--line);
}
.modal-footer > * { margin: 0; }
.toast {
  --bs-toast-max-width: 560px;
  width: max-content;
  max-width: min(92vw, var(--bs-toast-max-width));
  border: 0;
  overflow-wrap: anywhere;
}
