/* ==========================================================================
   Hengzhen unified status badges
   Scope: all legacy badge/status classes across dashboard, lists, details,
   forms and system pages. Loaded after page-level CSS to keep badge visuals
   consistent even where old templates define local badge styles.
   ========================================================================== */

:root {
  --hz-badge-radius: 999px;
  --hz-badge-height: 1.75rem;
  --hz-badge-pad-x: 0.72rem;
  --hz-badge-font: 0.76rem;
  --hz-badge-weight: 850;
  --hz-badge-shadow: inset 0 0 0 1px rgba(7, 91, 136, 0.045);

  --hz-badge-info-bg: #e8f4fb;
  --hz-badge-info-fg: #075b88;
  --hz-badge-success-bg: #eaf8ef;
  --hz-badge-success-fg: #1f7b45;
  --hz-badge-warning-bg: #fff5d9;
  --hz-badge-warning-fg: #8a6200;
  --hz-badge-danger-bg: #fdeeee;
  --hz-badge-danger-fg: #ba4a4a;
  --hz-badge-muted-bg: #f1f4f6;
  --hz-badge-muted-fg: #667b89;
  --hz-badge-purple-bg: #eef1ff;
  --hz-badge-purple-fg: #3156b7;
}

.badge,
.soft-badge,
.receipt-status,
.recommend-badge,
.workflow-badge,
.workflow-pill,
.state-badge,
.role-badge,
.profile-badge,
.station-section-badge,
.entry-section-badge,
.sys-section-badge,
.station-list-filter-badge,
.station-guide-pill,
.entry-guide-pill,
.workflow-step-pill,
.workflow-count-badge,
.attachment-guide-pill,
.attachment-count-badge,
.entry-soft-badge,
.allocation-soft-badge,
.receipt-status-pill {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  gap: 0.28rem !important;
  min-height: var(--hz-badge-height) !important;
  padding: 0.32rem var(--hz-badge-pad-x) !important;
  border-radius: var(--hz-badge-radius) !important;
  border: 1px solid transparent !important;
  font-size: var(--hz-badge-font) !important;
  font-weight: var(--hz-badge-weight) !important;
  line-height: 1 !important;
  letter-spacing: 0 !important;
  white-space: nowrap !important;
  text-decoration: none !important;
  box-shadow: var(--hz-badge-shadow) !important;
}

/* Info / brand blue -------------------------------------------------------- */
.soft-badge.blue,
.recommend-badge.info,
.station-section-badge,
.entry-section-badge,
.sys-section-badge,
.profile-badge,
.station-list-filter-badge,
.station-guide-pill,
.entry-guide-pill,
.workflow-step-pill,
.attachment-guide-pill,
.entry-soft-badge,
.allocation-soft-badge.blue,
.text-bg-info,
.badge.text-bg-info {
  background: var(--hz-badge-info-bg) !important;
  color: var(--hz-badge-info-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-info-fg) !important;
  border-color: rgba(7, 91, 136, 0.08) !important;
}

/* Success / completed ------------------------------------------------------ */
.soft-badge.green,
.receipt-status.success,
.receipt-status-pill.done,
.state-badge.state-on,
.workflow-badge.workflow-closed,
.workflow-pill.workflow-closed,
.allocation-soft-badge.green,
.text-bg-success,
.badge.text-bg-success {
  background: var(--hz-badge-success-bg) !important;
  color: var(--hz-badge-success-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-success-fg) !important;
  border-color: rgba(31, 123, 69, 0.10) !important;
}

/* Warning / pending -------------------------------------------------------- */
.soft-badge.gold,
.receipt-status.warning,
.receipt-status-pill.partial,
.workflow-badge.workflow-review,
.workflow-pill.workflow-review,
.allocation-soft-badge.gold,
.text-bg-warning,
.badge.text-bg-warning {
  background: var(--hz-badge-warning-bg) !important;
  color: var(--hz-badge-warning-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-warning-fg) !important;
  border-color: rgba(138, 98, 0, 0.12) !important;
}

/* Danger / risk ------------------------------------------------------------ */
.soft-badge.red,
.receipt-status.danger,
.receipt-status-pill.pending,
.unpaid-status,
.text-bg-danger,
.badge.text-bg-danger,
.text-bg-danger-subtle,
.badge.text-bg-danger-subtle {
  background: var(--hz-badge-danger-bg) !important;
  color: var(--hz-badge-danger-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-danger-fg) !important;
  border-color: rgba(186, 74, 74, 0.12) !important;
}

/* Muted / inactive --------------------------------------------------------- */
.soft-badge.gray,
.recommend-badge.muted,
.state-badge.state-off,
.allocation-soft-badge.gray,
.text-bg-secondary,
.badge.text-bg-secondary,
.text-bg-light,
.badge.text-bg-light {
  background: var(--hz-badge-muted-bg) !important;
  color: var(--hz-badge-muted-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-muted-fg) !important;
  border-color: rgba(102, 123, 137, 0.10) !important;
}

/* Workflow-specific mapping ----------------------------------------------- */
.workflow-badge.workflow-draft,
.workflow-pill.workflow-draft {
  background: var(--hz-badge-muted-bg) !important;
  color: var(--hz-badge-muted-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-muted-fg) !important;
}

.workflow-badge.workflow-invoicing,
.workflow-pill.workflow-invoicing {
  background: var(--hz-badge-purple-bg) !important;
  color: var(--hz-badge-purple-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-purple-fg) !important;
  border-color: rgba(49, 86, 183, 0.10) !important;
}

.workflow-badge.workflow-collecting,
.workflow-pill.workflow-collecting {
  background: var(--hz-badge-info-bg) !important;
  color: var(--hz-badge-info-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-info-fg) !important;
}

.workflow-pill.active,
.workflow-pill-group .workflow-pill.active {
  background: linear-gradient(135deg, #075b88 0%, #1194c3 100%) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
  border-color: transparent !important;
  box-shadow: 0 10px 20px rgba(7, 91, 136, 0.16) !important;
}

.workflow-pill.disabled,
.workflow-pill:disabled,
.workflow-pill.disabled:hover {
  opacity: 0.55 !important;
  transform: none !important;
  box-shadow: var(--hz-badge-shadow) !important;
}

/* Role badges keep the same shape but use restrained semantic colors. */
.role-badge.role-admin,
.role-badge.role-superadmin {
  background: var(--hz-badge-info-bg) !important;
  color: var(--hz-badge-info-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-info-fg) !important;
}

.role-badge.role-finance {
  background: var(--hz-badge-success-bg) !important;
  color: var(--hz-badge-success-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-success-fg) !important;
}

.role-badge.role-boss,
.role-badge.role-partner {
  background: var(--hz-badge-purple-bg) !important;
  color: var(--hz-badge-purple-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-purple-fg) !important;
}

/* Number and count badges should not become oversized. */
.badge.rounded-pill,
.account-tabs .badge,
.workflow-count-badge,
.attachment-count-badge {
  min-height: 1.45rem !important;
  padding: 0.22rem 0.55rem !important;
  font-size: 0.72rem !important;
}

/* Guide badges can be slightly wider and softer because they carry sentences. */
.station-guide-pill,
.entry-guide-pill,
.workflow-step-pill,
.attachment-guide-pill {
  min-height: 2rem !important;
  padding-inline: 0.78rem !important;
  font-weight: 780 !important;
}

.station-guide-pill strong,
.entry-guide-pill strong {
  color: var(--hz-badge-info-fg) !important;
  -webkit-text-fill-color: var(--hz-badge-info-fg) !important;
  font-weight: 900 !important;
}

@media (max-width: 767.98px) {
  .badge,
  .soft-badge,
  .receipt-status,
  .recommend-badge,
  .workflow-badge,
  .state-badge,
  .role-badge,
  .profile-badge,
  .station-section-badge,
  .entry-section-badge,
  .sys-section-badge {
    min-height: 1.62rem !important;
    padding: 0.26rem 0.62rem !important;
    font-size: 0.72rem !important;
  }
}

/* 2026-07-12 状态文字最终兜底
   说明：部分表格/品牌样式使用了 -webkit-text-fill-color，会覆盖 Bootstrap 的
   text-danger/text-success/text-warning 实际显示颜色；这里统一在最后加载的按钮
   样式文件中恢复状态文字语义，避免金额、风险、成功状态显示成默认深色。 */
.text-danger,
.table .text-danger,
.table td.text-danger,
.hz-table-panel .text-danger,
.settlement-table-card .text-danger,
.receipt-table-panel .text-danger,
.station-list-table-card .text-danger,
.account-table-panel .text-danger,
.dashboard-page .text-danger,
.card-panel .text-danger {
  color: #b94848 !important;
  -webkit-text-fill-color: #b94848 !important;
}

.text-success,
.table .text-success,
.table td.text-success,
.hz-table-panel .text-success,
.settlement-table-card .text-success,
.receipt-table-panel .text-success,
.station-list-table-card .text-success,
.account-table-panel .text-success,
.dashboard-page .text-success,
.card-panel .text-success {
  color: #16804f !important;
  -webkit-text-fill-color: #16804f !important;
}

.text-warning,
.table .text-warning,
.table td.text-warning,
.hz-table-panel .text-warning,
.settlement-table-card .text-warning,
.receipt-table-panel .text-warning,
.station-list-table-card .text-warning,
.account-table-panel .text-warning,
.dashboard-page .text-warning,
.card-panel .text-warning {
  color: #b98418 !important;
  -webkit-text-fill-color: #b98418 !important;
}

.text-danger *,
.text-success *,
.text-warning * {
  color: inherit !important;
  -webkit-text-fill-color: inherit !important;
}

/* 2026-07-12 button contrast hotfix
   放在文件末尾，专门处理旧页面样式覆盖后的按钮文字对比度问题。 */
.settlement-row-action.primary,
.settlement-row-action.primary:hover,
.settlement-row-action.primary:focus,
.receipt-allocation-action,
.receipt-allocation-action:hover,
.receipt-allocation-action:focus,
.btn-primary,
.btn-primary:hover,
.btn-primary:focus,
.btn-success,
.btn-success:hover,
.btn-success:focus,
.action-btn-create,
.action-btn-create:hover,
.action-btn-create:focus,
.hz-list-action.primary,
.hz-list-action.primary:hover,
.hz-list-action.primary:focus,
.quick-chip.active,
.quick-chip[aria-selected="true"],
.account-tabs .nav-link.active,
.nav-pills .nav-link.active,
.audit-tabs .btn.active,
.workflow-upload-box .btn-primary,
.workflow-upload-box .btn-primary:hover,
.workflow-upload-box .btn-primary:focus,
.import-upload-panel .btn-primary,
.import-upload-panel .btn-primary:hover,
.import-upload-panel .btn-primary:focus,
.import-template-card .btn-primary,
.import-template-card .btn-primary:hover,
.import-template-card .btn-primary:focus {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

.settlement-row-action.primary *,
.receipt-allocation-action *,
.btn-primary *,
.btn-success *,
.action-btn-create *,
.hz-list-action.primary *,
.quick-chip.active *,
.quick-chip[aria-selected="true"] *,
.account-tabs .nav-link.active *,
.nav-pills .nav-link.active *,
.audit-tabs .btn.active *,
.workflow-upload-box .btn-primary *,
.import-upload-panel .btn-primary *,
.import-template-card .btn-primary * {
  color: inherit !important;
  -webkit-text-fill-color: inherit !important;
}

.btn-danger {
  border-color: var(--hz-btn-danger) !important;
  background: linear-gradient(135deg, var(--hz-btn-danger), var(--hz-btn-danger-2)) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

.btn-danger:hover,
.btn-danger:focus {
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

.receipt-delete-btn,
.receipt-delete-btn:disabled {
  border-color: rgba(185, 72, 72, .24) !important;
  background: #fff5f5 !important;
  color: var(--hz-btn-danger) !important;
  -webkit-text-fill-color: var(--hz-btn-danger) !important;
}

.receipt-delete-btn:hover,
.receipt-delete-btn:focus {
  border-color: var(--hz-btn-danger) !important;
  background: linear-gradient(135deg, var(--hz-btn-danger), var(--hz-btn-danger-2)) !important;
  color: #ffffff !important;
  -webkit-text-fill-color: #ffffff !important;
}

.btn:disabled,
.btn.disabled,
.hz-list-action:disabled,
.hz-list-action.disabled {
  opacity: .58;
  cursor: not-allowed;
  transform: none !important;
  box-shadow: none !important;
}

