/* ============================================
   Bootstrap 5 自定义样式
   覆盖 BS5 变量以保持项目风格一致

   设计规范参考: 认证模块 (/dashboard/certification)

   间距规范:
   - 页面垂直内边距: 40px
   - 卡片内边距: 24px
   - 表单字段间距: 12px
   - 表单区块间距: 16px
   - 标题与内容间距: 24px
   ============================================ */

/* ============================================
   [1] 基础变量与配置
   ============================================ */

/* --- body 基础样式 --- */
body {
  background-color: #F7F7F7;
  margin: 0;
  padding: 0;
}

/* --- 主菜单容器 --- */
.main-menu-container {
  padding-left: 15px !important;
  padding-right: 15px !important;
  z-index: 1040 !important;
}

/* --- 页面容器 --- */
.page-container {
  padding: var(--spacing-4xl) var(--spacing-lg);
}

.dash-container {
  max-width: 820px;
  margin: 0 auto;
  padding: var(--spacing-4xl) 0;
}

.page-container-center {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: var(--spacing-4xl) var(--spacing-lg);
}

.page-container-center h1 {
  font-size: 28px;
  font-weight: 400;
  color: var(--bs-body-color);
  text-align: center;
  margin-bottom: var(--spacing-4xl);
}

/* --- 表单容器 --- */
.form-container {
  width: min(100%, 820px);
  max-width: 820px;
  min-width: 0;
}

/* --- 按钮组容器 --- */
.btn-group-container {
  display: flex;
  gap: var(--spacing-lg);
  justify-content: center;
  margin-top: var(--spacing-2xl);
}

/* --- 间距变量 --- */
:root {
  /* 基础间距单位 */
  --spacing-xs: 4px;
  --spacing-sm: 8px;
  --spacing-md: 12px;
  --spacing-lg: 16px;
  --spacing-xl: 20px;
  --spacing-2xl: 24px;
  --spacing-3xl: 30px;
  --spacing-4xl: 40px;
  --spacing-5xl: 50px;
  --spacing-6xl: 60px;
}

/* --- 颜色变量覆盖 --- */
:root {
  /* 主色（红）- 用于警告、错误、强调 */
  --bs-primary: #F63756;
  --bs-primary-rgb: 246, 55, 86;
  --bs-primary-hover: #E02847;
  --bs-primary-bg: #FFF5F6;
  --bs-primary-bg-subtle: rgba(246, 55, 86, 0.1);

  /* 副色（橙） */
  --bs-secondary: #FF6C25;
  --bs-secondary-rgb: 255, 108, 37;
  --bs-secondary-bg: #FFF7F2;

  /* 成功色 */
  --bs-success: #28a745;

  /* 文字颜色 */
  --bs-body-color: #333;
  --bs-body-color-rgb: 51, 51, 51;
  --bs-secondary-color: #666;
  --bs-tertiary-color: #999;

  /* 边框/背景 */
  --bs-border-color: #E1E3E5;
  --bs-border-color-translucent: rgba(225, 227, 229, 0.75);
  --bs-body-bg: #F7F7F7;
  --bs-table-striped-bg: #F7F7F7;
  --bs-table-striped-color: #333;
  --bs-tertiary-bg: #FFF5F6;

  /* 圆角 */
  --bs-border-radius: 5px;
  --bs-border-radius-sm: 5px;
  --bs-border-radius-lg: 10px;
  --bs-border-radius-pill: 50px;
}

/* ============================================
   [2] 卡片组件 (Card Components)
   ============================================ */

/* --- 通用卡片 --- */
.card {
  background: #fff;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
  transition: box-shadow 0.2s ease;
}

.card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}

/* 卡片标题 */
.card-header {
  background: transparent;
  border-bottom: none;
  padding-left: 0;
  padding-right: 0;
  padding-bottom: 0;
  font-weight: 600;
  margin-bottom: var(--spacing-lg);
  color: var(--bs-body-color);
}

.card-body {
  padding: 0;
}

/* ============================================
   [3] 按钮组件 (Button Components)
   ============================================ */

/* --- 通用按钮 --- */
.btn {
  border-radius: var(--bs-border-radius-pill);
  padding: var(--spacing-md) var(--spacing-3xl);
  font-weight: 500;
  transition: all 0.2s ease;
  border: 1px solid transparent;
  width: var(--btn-w, auto);
  white-space: nowrap;
}

.btn-danger {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}

.btn-danger:hover {
  background-color: var(--bs-primary-hover);
  border-color: var(--bs-primary-hover);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(246, 55, 86, 0.25);
}

.btn-outline-danger {
  border-color: var(--bs-primary);
  color: var(--bs-primary);
}

.btn-outline-danger:hover {
  background-color: var(--bs-primary);
  color: #fff;
  transform: translateY(-1px);
}

/* ============================================
   [4] 表单组件 (Form Components)
   ============================================ */

/* --- 表单字段 --- */
.form-field {
  margin-bottom: var(--spacing-3xl) !important;
}

.form-field:last-child {
  margin-bottom: 0 !important;
}

.form-field-header {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
  margin-bottom: var(--spacing-md);
}

/* form-field-header 内的 label 不需要额外下边距 */
.form-field-header .form-label {
  margin-bottom: 0;
}

.form-label {
  font-weight: 500;
  color: var(--bs-body-color);
  margin-bottom: var(--spacing-md);
  display: inline-block;
}

.form-field-error {
  display: none;
  margin: calc(var(--spacing-sm) * -1) 0 var(--spacing-sm);
  font-size: 13px;
  line-height: 1.5;
  color: var(--bs-primary);
}

/* 内联错误（显示在标题右侧） */
.form-label-inline-error {
  display: flex;
  align-items: center;
  margin-bottom: var(--spacing-md);
}

.form-label-inline-error .form-label {
  margin-bottom: 0;
}

.form-label-inline-error .form-field-error {
  display: none;
  margin: 0 0 0 var(--spacing-sm);
  font-size: 13px;
  line-height: 1.5;
  color: var(--bs-primary);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex-shrink: 1;
  min-width: 0;
}

/* 统一输入框高度: 48px */
.form-control {
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  padding: var(--spacing-md) var(--spacing-md);
  font-size: 16px;
  height: 48px;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  background-color: #fff;
}

.form-control:focus {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px rgba(246, 55, 86, 0.1);
  background-color: #fff;
}

.form-control::placeholder {
  color: var(--bs-tertiary-color);
}

/* 文本输入框禁用态使用淡灰底，和 select 保持一致 */
.form-control:disabled,
textarea.form-control:disabled {
  background-color: #F5F5F5;
  color: var(--bs-tertiary-color);
  border-color: var(--bs-border-color);
  opacity: 1;
  cursor: not-allowed;
}

.form-control.is-invalid,
.form-select.is-invalid,
.form-field-invalid .form-control,
.form-field-invalid .form-select,
.tags-input.is-invalid,
.single-select.is-invalid .single-select-trigger,
.multi-select.is-invalid .multi-select-trigger,
.year-picker.is-invalid .date-picker-trigger,
.date-picker.is-invalid .date-picker-trigger,
.datetime-picker.is-invalid .datetime-picker-trigger,
.image-upload.is-invalid .upload-zone,
.image-upload.is-invalid .upload-preview,
.salary-input.is-invalid .form-control,
.edui-default.is-invalid .edui-editor,
.btn-check.is-invalid + .cert-card-radio,
.btn-check.is-invalid + .cert-card-radio-simple {
  border-color: var(--bs-primary) !important;
  box-shadow: 0 0 0 3px rgba(246, 55, 86, 0.1) !important;
}

/* 输入框错误图标 */
.form-field-invalid .form-control,
.form-field-invalid textarea.form-control {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23F63756' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='12' y1='8' x2='12' y2='12'/%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 12px center;
  background-size: 16px 16px;
  padding-right: 40px;
}

/* 失焦触发验证但不显示错误icon */
.form-field-invalid .form-control[data-no-error-icon],
.form-field-invalid textarea.form-control[data-no-error-icon] {
  background-image: none;
  padding-right: 12px;
}

.form-field-invalid textarea.form-control {
  background-position: right 12px top 12px;
}

.image-upload.is-invalid .upload-zone {
  background: #FFF5F6;
}

.image-upload.is-invalid .upload-preview {
  border-width: 2px;
}

.salary-input.is-invalid .salary-unit,
.salary-input.is-invalid .salary-separator {
  color: var(--bs-primary);
}

.form-check-input.is-invalid {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px rgba(246, 55, 86, 0.1);
}

/* 多行输入框 textarea 保持自动高度 */
textarea.form-control {
  height: auto;
  min-height: 48px;
}

/* 字符计数 */
.char-count {
  font-size: 0.8em;
  transition: opacity 0.2s, color 0.2s;
  opacity: 0;
  color: var(--bs-tertiary-color);
  pointer-events: none;
}

.char-count.visible {
  opacity: 1;
}

.char-count.over-limit {
  opacity: 1;
  color: var(--bs-primary);
  font-weight: 600;
}

/* 单行输入框：字符统计显示时右侧留空间 */
input.form-control[data-max].has-char-count {
  padding-right: 70px;
}

/* 多行文本框：字符统计显示时底部留空间 */
textarea.form-control[data-max].has-char-count {
  padding-bottom: 30px;
}

/* 多行文本框的字符统计：白色遮罩条，横跨整个宽度 */
textarea.form-control[data-max] + .char-count {
  left: 1px !important;
  right: 1px !important;
  bottom: 1px !important;;
  height: 30px;
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding-right: 12px;
  border-radius: 0 0 var(--bs-border-radius-lg) var(--bs-border-radius-lg);
}

/* 输入框内按钮 + 验证成功态 */
.form-control-with-action {
  position: relative;
}

.form-control-with-action .form-control {
  padding-right: 148px;
}

.form-control-with-action.verified .form-control {
  padding-right: 40px;
}

.form-control-inline-btn {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  height: 32px;
  min-height: auto;
  padding: 4px 12px;
  font-size: 13px;
  line-height: 1;
  --btn-w: 112px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  white-space: nowrap;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.form-control-with-action.verified .form-control-inline-btn {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.form-control-inline-btn:hover,
.form-control-inline-btn:focus,
.form-control-inline-btn:active,
.form-control-inline-btn:disabled {
  transform: translateY(-50%) !important;
  box-shadow: none !important;
}

.form-control-inline-status {
  position: absolute;
  right: 12px;
  top: 50%;
  transform: translateY(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  color: var(--bs-secondary);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s ease, visibility 0.2s ease;
}

.form-control-inline-status.is-visible {
  opacity: 1;
  visibility: visible;
}

.form-control-inline-status svg,
.form-control-inline-status i[data-lucide] {
  width: 18px;
  height: 18px;
  stroke-width: 2.25;
}

/* 字段提示图标 */
.form-field-tooltip {
  color: var(--bs-tertiary-color);
  cursor: help;
  font-size: 0.9em;
}

/* 下拉选择框: 统一高度 48px */
.form-select {
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  height: 48px;
  padding: var(--spacing-md) var(--spacing-md);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  background-color: #fff;
}

.form-select:focus {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px rgba(246, 55, 86, 0.1);
  background-color: #fff;
}

/* 下拉选项样式 - 与多选下拉一致 */
.form-select option {
  padding: 12px 14px;
  min-height: 44px;
  line-height: 2;
  font-size: 16px;
}

.form-select optgroup {
  font-weight: 600;
  color: var(--bs-body-color);
}

/* 禁用状态的 select 用淡灰色，不用橙色 */
.form-select:disabled {
  background-color: #F5F5F5;
  color: var(--bs-tertiary-color);
  border-color: var(--bs-border-color);
  opacity: 1;
}

/* 标签输入 */
.tags-input {
  padding: 6px 12px !important;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--spacing-sm);
  padding: var(--spacing-sm);
  height: 48px;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius);
  background: #fff;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}

/* 当有标签时，允许高度自动扩展 */
.tags-input.has-tags {
  height: auto;
  min-height: 48px;
}

.tags-input:focus-within {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px rgba(246, 55, 86, 0.1);
  background-color: #fff;
}

.tags-input .form-control {
  flex: 1;
  min-width: 100px;
  border: none;
  background: transparent;
  box-shadow: none;
  height: auto;
  padding: 0;
  line-height: 1.5;
}

.tags-input .form-control:focus {
  background: transparent;
  box-shadow: none;
}

.tags-input .badge {
  display: inline-flex;
  align-items: center;
  font-size: 14px;
  padding: 6px 10px;
  font-weight: 500;
  background: var(--bs-primary-bg) !important;
  color: var(--bs-primary) !important;
  max-width: 150px;
  border-radius: var(--bs-border-radius-pill);
}

.tags-input .badge .badge-text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 120px;
  display: inline-block;
  vertical-align: middle;
  cursor: default;
}

/* 标签的关闭按钮 */
.tags-input .badge-close {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 6px;
  cursor: pointer;
  color: var(--bs-primary);
  opacity: 0.8;
  transition: opacity 0.2s;
  width: 18px;
  height: 18px;
  flex-shrink: 0;
}

.tags-input .badge-close svg {
  display: block;
}

.tags-input .badge-close:hover {
  opacity: 1;
}

/* --- 标签库 --- */
.tag-actions {
  display: flex;
  gap: var(--spacing-sm);
}

.tag-library {
  margin-bottom: var(--spacing-md);
  padding: var(--spacing-md);
  background: #FAFAFA;
  border-radius: var(--bs-border-radius);
}

.tag-library-body {
  display: flex;
  flex-wrap: wrap;
  gap: var(--spacing-sm);
}

.tag-library-item {
  --btn-w: auto;
  padding: 4px 12px !important;
  font-size: 13px !important;
}

.tag-library-item:hover {
  background-color: #F5F5F5 !important;
  border-color: transparent !important;
  color: var(--bs-body-color) !important;
}

.tag-library-item.selected {
  background-color: var(--bs-secondary-bg) !important;
  border-color: transparent !important;
  color: var(--bs-secondary) !important;
}

.tag-library-item.selected:hover {
  background-color: rgba(255, 108, 37, 0.15) !important;
  border-color: transparent !important;
  color: var(--bs-secondary) !important;
}

/* --- 单选和复选框 --- */
.form-check {
  display: flex;
  align-items: center;
  gap: var(--spacing-md);
  cursor: pointer;
  margin-right: var(--spacing-2xl);
}

.form-check:last-child {
  margin-right: 0;
}

/* 确保输入框和标签垂直居中对齐 */
.form-check-input {
  width: 20px;
  height: 20px;
  border: 2px solid var(--bs-border-color);
  border-radius: 4px;
  transition: all 0.2s ease;
  flex-shrink: 0;
  margin-top: 0;
  margin-bottom: 0;
  background-color: #fff;
}

.form-check-input[type="radio"] {
  border-radius: 50%;
}

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

.form-check-input[type="radio"]:checked {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='2.5' fill='%23fff'/%3E%3C/svg%3E");
  background-size: 12px;
}

.form-check-input[type="checkbox"]:checked {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='m6 10 3 3 6-6'/%3E%3C/svg%3E");
}

.form-check-input:hover {
  border-color: var(--bs-primary);
}

.form-check-input:focus {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px rgba(246, 55, 86, 0.1);
  transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

/* focus ring 仅在键盘导航时保留，鼠标点击后立即消失 */
.form-check-input:focus:not(:focus-visible) {
  box-shadow: none;
  border-color: var(--bs-border-color);
}

.form-check-input:checked:focus:not(:focus-visible) {
  box-shadow: none;
  border-color: var(--bs-primary);
}

.form-check-input:checked:focus {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px rgba(246, 55, 86, 0.1);
}

.form-check-label {
  cursor: pointer;
  user-select: none;
  font-size: 16px;
  line-height: 20px;
  margin-top: 0;
  margin-bottom: 0;
}

/* 协议确认样式 */
.form-check-agreement .form-check-label {
  font-size: 14px;
  color: var(--bs-secondary-color);
}

.form-check-agreement .form-check-label a {
  color: var(--bs-body-color);
  text-decoration: none;
}

.form-check-agreement .form-check-label a:hover {
  color: var(--bs-primary);
}

/* 卡片式 Radio */
.cert-card-radio {
  text-align: left;
  height: 100%;
  border-radius: var(--bs-border-radius);
  transition: all 0.2s;
  border: 1px solid var(--bs-border-color);
  padding: var(--spacing-lg);
}

.cert-card-radio:has(:checked) {
  background: var(--bs-primary-bg);
  border-color: var(--bs-primary);
}

/* 未选中状态：标题和描述用正常黑字 */
.cert-card-radio h5 {
  margin-bottom: var(--spacing-sm);
  font-weight: 600;
  color: var(--bs-body-color);
}

.cert-card-radio .text-muted {
  color: var(--bs-secondary-color) !important;
}

/* 选中状态下标题和描述用主题色 */
.cert-card-radio:has(:checked) h5 {
  color: var(--bs-primary) !important;
}

.cert-card-radio:has(:checked) .text-muted {
  color: var(--bs-primary) !important;
  opacity: 0.8;
}

/* 卡片式 Radio - 覆盖 BS5 btn-check 默认样式 */
.btn-check:checked + .cert-card-radio,
.btn-check:active + .cert-card-radio {
  background: var(--bs-primary-bg) !important;
  border-color: var(--bs-primary) !important;
  color: var(--bs-body-color) !important;
  box-shadow: none !important;
}

.btn-check:checked + .cert-card-radio h5 {
  color: var(--bs-primary) !important;
}

.btn-check:checked + .cert-card-radio .text-muted {
  color: var(--bs-primary) !important;
  opacity: 0.8;
}

.btn-check:checked + .cert-card-radio-simple,
.btn-check:active + .cert-card-radio-simple {
  background: var(--bs-primary-bg) !important;
  border-color: var(--bs-primary) !important;
  color: var(--bs-primary) !important;
  box-shadow: none !important;
}

/* 简洁卡片式 Radio（无描述文字） */
.cert-card-radio-simple {
  text-align: center;
  height: 100%;
  border-radius: var(--bs-border-radius);
  transition: all 0.2s;
  border: 1px solid var(--bs-border-color);
  padding: var(--spacing-md) var(--spacing-lg);
  display: flex;
  align-items: center;
  justify-content: center;
}

.cert-card-radio-simple:has(:checked) {
  background: var(--bs-primary-bg);
  border-color: var(--bs-primary);
  color: var(--bs-primary);
}

.cert-card-radio-simple span {
  font-weight: 600;
  font-size: 16px;
  color: var(--bs-body-color);
}

/* span 单独写了 body 色，会盖住 label 的继承色；选中态必须再声明主题红 */
.btn-check:checked + .cert-card-radio-simple span,
.btn-check:active + .cert-card-radio-simple span {
  color: var(--bs-primary) !important;
}

/* ============================================
   [5] 认证页面特定样式
   ============================================ */

/* --- 认证卡片 --- */
.cert-card,
.card.cert-card {
  background: #fff;
  border: none;
  border-radius: var(--bs-border-radius-lg);
  padding: var(--spacing-2xl);
  box-shadow: none;
  margin-bottom: var(--spacing-2xl);
}

.cert-card.basic,
.cert-card-basic {
  border: 1px solid #B7B7B7;
}

.cert-card.premium,
.cert-card.cert-card-premium {
  border: 2px solid var(--bs-primary);
  background: linear-gradient(to bottom, #FBF5F6 0%, #FFFFFF 100%);
}

/* --- 认证头部 --- */
.cert-header {
  text-align: center;
  margin-bottom: var(--spacing-5xl);
}

.cert-header h1 {
  font-size: 28px;
  font-weight: 400;
  color: #333;
  margin: 0;
}

/* --- 认证卡片容器 --- */
.cert-cards-container {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
  max-width: 820px;
  margin: 0 auto;
}

/* 支付页白底板块垂直间距：按组件规范提升到 30px */
.cert-payment-page .cert-payment-section {
  margin-bottom: var(--spacing-3xl) !important;
}

.cert-payment-page .cert-payment-section:last-child {
  margin-bottom: 0 !important;
}

/* 支付信息 + 支付方式：桌面端 3:2 并排 */
.cert-payment-grid {
  display: grid;
  grid-template-columns: 3fr 2fr;
  gap: var(--spacing-2xl);
}

.cert-payment-grid .cert-card {
  height: 100%;
  padding: 0;
}

/* 公司简称与公司全称垂直间距 */
.cert-company-name-row {
  margin-bottom: var(--spacing-lg);
}

/* 公司简称超过一行时显示省略号 */
.cert-company-name-row h5 {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 390px;
}

/* --- 公司信息卡片行（dashboard + certification 共用） --- */
.dash-company-row {
  display: flex;
  align-items: center;
  gap: var(--spacing-xl);
}

.dash-company-info {
  flex: 1;
  min-width: 0;
}

.dash-company-actions {
  flex-shrink: 0;
  text-align: right;
}

/* 公司全称也限制宽度并显示省略号 */
.cert-company-name-row + small {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 390px;
}

/* --- 卡片标题 --- */
.cert-card-title {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 var(--spacing-xl) 0;
}

.cert-card-title h2 {
  font-size: 28px;
  font-weight: 400;
  color: #333;
  margin: 0;
  line-height: 1;
}

.cert-blue-v {
  width: 28px;
  height: 28px;
}

/* --- 价格展示 --- */
.cert-price-amount {
  font-size: 48px;
  font-weight: 400;
  color: #333;
  line-height: 1;
  margin-bottom: var(--spacing-sm);
}

.cert-price-amount .currency {
  font-size: 16px;
  margin-right: 2px;
}

.cert-price-amount .period {
  font-size: 14px;
  font-weight: 400;
  color: var(--bs-tertiary-color);
  margin-left: var(--spacing-sm);
}

.cert-price-note {
  font-size: 16px;
  color: #000;
  margin-top: var(--spacing-lg);
  margin-bottom: var(--spacing-3xl);
}

.cert-price-note.cert-note-red {
  color: var(--bs-primary);
  margin-bottom: var(--spacing-3xl);
}

/* --- 认证按钮 --- */
.cert-btn {
  width: 100%;
  box-sizing: border-box;
  padding: 0 32px;
  height: var(--spacing-5xl);
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px solid #E1E3E5;
  background: #fff;
  border-radius: var(--bs-border-radius-pill);
  font-size: 20px;
  font-weight: 400;
  cursor: not-allowed;
  margin-bottom: var(--spacing-3xl);
  color: #999999;
  text-decoration: none;
  transition: all 0.2s ease;
}

/* 主按钮样式（可点击状态）*/
.cert-btn.cert-btn-primary {
  background: var(--bs-primary) !important;
  color: #fff !important;
  border: none !important;
  cursor: pointer !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
}

.cert-btn.cert-btn-primary:hover {
  background: var(--bs-primary-hover) !important;
  box-shadow: 0 4px 15px rgba(246, 55, 86, 0.3);
  transform: translateY(-2px);
}

/* 当前权益（右侧按钮已生效状态）*/
.cert-btn-current {
  background: rgba(255, 255, 255, 0.6);
}

/* --- 功能列表 --- */
.cert-features {
  list-style: none;
  padding: 0;
  margin: 0;
}

.cert-feature {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 8px 0;
}

.cert-feature-icon {
  flex-shrink: 0;
  width: 18px;
  height: 18px;
  display: flex;
  align-items: center;
  justify-content: center;
  align-self: center;
}

.cert-feature-icon img {
  width: 100%;
  height: 100%;
  display: block;
}

.cert-feature-text {
  flex: 1;
  font-size: 16px;
  color: var(--bs-body-color);
  line-height: 1.6;
}

/* --- 灰色权益项样式 --- */
.cert-feature-gray .cert-feature-text {
  color: var(--bs-tertiary-color) !important;
}

.cert-feature-gray .cert-feature-icon img {
  filter: grayscale(100%);
  opacity: 0.5;
}

.cert-feature-gray .cert-feature-icon svg {
  width: 18px;
  height: 18px;
  color: var(--bs-tertiary-color);
}

/* --- 提示图标 --- */
.cert-tooltip-icon {
  position: relative;
  display: inline-flex;
  align-items: center;
  margin-left: 4px;
  color: var(--bs-tertiary-color);
  cursor: pointer;
}

.cert-tooltip-icon::after {
  content: '仅排名前100的认证代理公司上榜';
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: 130%;
  background: rgba(0, 0, 0, 0.75);
  color: #fff;
  padding: 6px 10px;
  border-radius: 4px;
  font-size: 14px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity 0.15s ease;
  z-index: 10;
}

.cert-tooltip-icon::before {
  content: '';
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: 120%;
  border-width: 5px;
  border-style: solid;
  border-color: rgba(0, 0, 0, 0.75) transparent transparent transparent;
  opacity: 0;
  transition: opacity 0.15s ease;
  z-index: 9;
}

.cert-tooltip-icon:hover::after,
.cert-tooltip-icon:hover::before {
  opacity: 1;
}

/* ============================================
   [6] 支付成功页面样式
   ============================================ */

.success-container {
  text-align: center;
  padding: var(--spacing-5xl) 0;
  background: #fff;
  border-radius: var(--bs-border-radius-lg);
  box-shadow: 0 4px 20px rgba(0,0,0,0.05);
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}

.success-icon {
  font-size: 80px;
  color: var(--bs-success);
  margin-bottom: var(--spacing-xl);
  animation: scaleIn 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.success-title {
  font-size: 28px;
  font-weight: bold;
  color: #333;
  margin-bottom: var(--spacing-lg);
}

.success-desc {
  font-size: 16px;
  color: var(--bs-secondary-color);
  margin-bottom: var(--spacing-3xl);
}

.btn-next {
  padding: var(--spacing-md) 40px;
  font-size: 16px;
  border-radius: 30px;
  background: var(--bs-primary);
  color: #fff;
  border: none;
  font-weight: bold;
  transition: all 0.3s;
  text-decoration: none;
  display: inline-block;
}

.btn-next:hover {
  background: var(--bs-primary-hover);
  transform: translateY(-2px);
  box-shadow: 0 4px 15px rgba(246, 55, 86, 0.3);
  color: #fff;
}

@keyframes scaleIn {
  from { transform: scale(0); opacity: 0; }
  to { transform: scale(1); opacity: 1; }
}

/* ============================================
   [7] Toast 与 Modal 组件
   ============================================ */

/* --- Toast（中间黑底） --- */
.toast-container-center {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 1090;
}

.toast-center {
  background: rgba(0, 0, 0, 0.75);
  color: #fff;
  border: none;
  border-radius: 8px;
  padding: 12px 24px;
}

/* ============================================
   [8] 按钮层级样式（7级 + 禁用）
   ============================================ */

/* 一级：主按钮（红色填充） */
.btn-lv1 {
  background-color: var(--bs-primary) !important;
  border-color: var(--bs-primary) !important;
  color: #fff !important;
}
.btn-lv1:hover {
  background-color: var(--bs-primary-hover) !important;
  border-color: var(--bs-primary-hover) !important;
  color: #fff !important;
  box-shadow: 0 4px 12px rgba(246, 55, 86, 0.25);
}
.btn-lv1:active {
  background-color: #CC2240 !important;
  border-color: #CC2240 !important;
  color: #fff !important;
  transform: none;
  box-shadow: none;
}

/* 二级：次要按钮（橙色填充） */
.btn-lv2 {
  background-color: var(--bs-secondary) !important;
  border-color: var(--bs-secondary) !important;
  color: #fff !important;
}
.btn-lv2:hover {
  background-color: #E55A1A !important;
  border-color: #E55A1A !important;
  color: #fff !important;
  box-shadow: 0 4px 12px rgba(255, 108, 37, 0.25);
}
.btn-lv2:active {
  background-color: #CC4E14 !important;
  border-color: #CC4E14 !important;
  color: #fff !important;
  transform: none;
  box-shadow: none;
}

/* 三级：主题红色描边 + 红色字 */
.btn-lv3 {
  background-color: transparent !important;
  border-color: var(--bs-primary) !important;
  color: var(--bs-primary) !important;
}
.btn-lv3:hover {
  background-color: var(--bs-primary) !important;
  border-color: var(--bs-primary) !important;
  color: #fff !important;
}
.btn-lv3:active {
  background-color: var(--bs-primary-hover) !important;
  border-color: var(--bs-primary-hover) !important;
  color: #fff !important;
  transform: none;
}

/* 四级：橙色描边 + 橙色字 */
.btn-lv4 {
  background-color: transparent !important;
  border-color: var(--bs-secondary) !important;
  color: var(--bs-secondary) !important;
}
.btn-lv4:hover {
  background-color: var(--bs-secondary) !important;
  border-color: var(--bs-secondary) !important;
  color: #fff !important;
}
.btn-lv4:active {
  background-color: #E55A1A !important;
  border-color: #E55A1A !important;
  color: #fff !important;
  transform: none;
}

/* 五级：黑色描边 + 黑色字，悬浮/点击切换为面型 */
.btn-lv5 {
  background-color: transparent !important;
  border-color: var(--bs-body-color) !important;
  color: var(--bs-body-color) !important;
}
.btn-lv5:hover {
  background-color: var(--bs-body-color) !important;
  border-color: var(--bs-body-color) !important;
  color: #fff !important;
}
.btn-lv5:active {
  background-color: #222 !important;
  border-color: #222 !important;
  color: #fff !important;
  transform: none;
}

/* 六级：淡主题红色底 + 红色字 */
.btn-lv6 {
  background-color: var(--bs-primary-bg) !important;
  border-color: transparent !important;
  color: var(--bs-primary) !important;
}
.btn-lv6:hover {
  background-color: rgba(246, 55, 86, 0.15) !important;
  border-color: transparent !important;
  color: var(--bs-primary) !important;
}
.btn-lv6:focus,
.btn-lv6:focus-visible {
  background-color: var(--bs-primary-bg) !important;
  border-color: transparent !important;
  color: var(--bs-primary) !important;
  box-shadow: none !important;
  outline: none !important;
}
.btn-lv6:active,
.btn-lv6.active,
.show > .btn-lv6.dropdown-toggle {
  background-color: var(--bs-primary) !important;
  border-color: transparent !important;
  color: #fff !important;
  transform: none;
  box-shadow: none !important;
  outline: none !important;
}

/* 七级：淡主题橙色底 + 橙色字 */
.btn-lv7 {
  background-color: var(--bs-secondary-bg) !important;
  border-color: transparent !important;
  color: var(--bs-secondary) !important;
}
.btn-lv7:hover {
  background-color: rgba(255, 108, 37, 0.15) !important;
  border-color: transparent !important;
  color: var(--bs-secondary) !important;
}
.btn-lv7:focus,
.btn-lv7:focus-visible {
  background-color: var(--bs-secondary-bg) !important;
  border-color: transparent !important;
  color: var(--bs-secondary) !important;
  box-shadow: none !important;
  outline: none !important;
}
.btn-lv7:active,
.btn-lv7.active,
.show > .btn-lv7.dropdown-toggle {
  background-color: var(--bs-secondary) !important;
  border-color: transparent !important;
  color: #fff !important;
  transform: none;
  box-shadow: none !important;
  outline: none !important;
}

.btn-lv8 {
  background-color: #F5F5F5 !important;
  border-color: transparent !important;
  color: var(--bs-body-color) !important;
}
.btn-lv8:hover {
  background-color: var(--bs-secondary-bg) !important;
  border-color: transparent !important;
  color: var(--bs-secondary) !important;
}
.btn-lv8:active {
  background-color: rgba(255, 108, 37, 0.15) !important;
  border-color: transparent !important;
  color: var(--bs-secondary) !important;
  transform: none;
}

.btn-lv9 {
  background-color: #fff !important;
  border-color: transparent !important;
  color: var(--bs-body-color) !important;
}
.btn-lv9:hover {
  background-color: #fff !important;
  border-color: transparent !important;
  color: var(--bs-secondary) !important;
}
.btn-lv9:active {
  background-color: #EBEBEB !important;
  border-color: transparent !important;
  color: var(--bs-body-color) !important;
  transform: none;
}

/* 标签库项选中态（淡橙底 + 橙字） */
.tag-library-item.selected {
  background-color: var(--bs-secondary-bg) !important;
  border-color: transparent !important;
  color: var(--bs-secondary) !important;
}

/* 按钮 Loading 状态 */
.btn-loading {
  pointer-events: none;
  position: relative;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  opacity: 0.6;
}

.btn-loading .btn-loading-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  width: 20px;
  height: 20px;
  margin-right: 6px;
  animation: btn-spin 1s linear infinite;
}

/* Lucide 渲染为 svg；未初始化时仍为 i */
.btn-loading .btn-loading-icon svg,
.btn-loading .btn-loading-icon i[data-lucide] {
  width: 20px !important;
  height: 20px !important;
  display: block;
}

@keyframes btn-spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}

/* 表格操作按钮（7级淡底色，搭配主题色系） */

.btn-tbl-green,
.btn-tbl-blue,
.btn-tbl-purple,
.btn-tbl-teal,
.btn-tbl-gold,
.btn-lv6,
.btn-lv7 {
  text-decoration: none !important;
}

/* 绿色：通过/完成 */
.btn-tbl-green {
  background-color: #F0FBF4 !important;
  border-color: transparent !important;
  color: #1A9E4A !important;
}
.btn-tbl-green:hover {
  background-color: #D6F5E3 !important;
  border-color: transparent !important;
  color: #1A9E4A !important;
}
.btn-tbl-green:focus,
.btn-tbl-green:focus-visible {
  background-color: #F0FBF4 !important;
  border-color: transparent !important;
  color: #1A9E4A !important;
  box-shadow: none !important;
  outline: none !important;
}
.btn-tbl-green:active,
.btn-tbl-green.active,
.show > .btn-tbl-green.dropdown-toggle {
  background-color: #1A9E4A !important;
  border-color: transparent !important;
  color: #fff !important;
  box-shadow: none !important;
  outline: none !important;
}

/* 蓝色：查看/详情 */
.btn-tbl-blue {
  background-color: #EFF6FF !important;
  border-color: transparent !important;
  color: #2563EB !important;
}
.btn-tbl-blue:hover {
  background-color: #DBEAFE !important;
  border-color: transparent !important;
  color: #2563EB !important;
}
.btn-tbl-blue:focus,
.btn-tbl-blue:focus-visible {
  background-color: #EFF6FF !important;
  border-color: transparent !important;
  color: #2563EB !important;
  box-shadow: none !important;
  outline: none !important;
}
.btn-tbl-blue:active,
.btn-tbl-blue.active,
.show > .btn-tbl-blue.dropdown-toggle {
  background-color: #2563EB !important;
  border-color: transparent !important;
  color: #fff !important;
  box-shadow: none !important;
  outline: none !important;
}

/* 紫色：备用 */
.btn-tbl-purple {
  background-color: #F5F0FB !important;
  border-color: transparent !important;
  color: #7B3FD4 !important;
}
.btn-tbl-purple:hover {
  background-color: #EAE0F7 !important;
  border-color: transparent !important;
  color: #7B3FD4 !important;
}
.btn-tbl-purple:focus,
.btn-tbl-purple:focus-visible {
  background-color: #F5F0FB !important;
  border-color: transparent !important;
  color: #7B3FD4 !important;
  box-shadow: none !important;
  outline: none !important;
}
.btn-tbl-purple:active,
.btn-tbl-purple.active,
.show > .btn-tbl-purple.dropdown-toggle {
  background-color: #7B3FD4 !important;
  border-color: transparent !important;
  color: #fff !important;
  box-shadow: none !important;
  outline: none !important;
}

/* 青色：编辑/修改 */
.btn-tbl-teal {
  background-color: #F0FAFA !important;
  border-color: transparent !important;
  color: #0E8A8A !important;
}
.btn-tbl-teal:hover {
  background-color: #D6F2F2 !important;
  border-color: transparent !important;
  color: #0E8A8A !important;
}
.btn-tbl-teal:focus,
.btn-tbl-teal:focus-visible {
  background-color: #F0FAFA !important;
  border-color: transparent !important;
  color: #0E8A8A !important;
  box-shadow: none !important;
  outline: none !important;
}
.btn-tbl-teal:active,
.btn-tbl-teal.active,
.show > .btn-tbl-teal.dropdown-toggle {
  background-color: #0E8A8A !important;
  border-color: transparent !important;
  color: #fff !important;
  box-shadow: none !important;
  outline: none !important;
}

/* 金色：待处理/警示 */
.btn-tbl-gold {
  background-color: #FFFBF0 !important;
  border-color: transparent !important;
  color: #B07D00 !important;
}
.btn-tbl-gold:hover {
  background-color: #FFF3D0 !important;
  border-color: transparent !important;
  color: #B07D00 !important;
}
.btn-tbl-gold:focus,
.btn-tbl-gold:focus-visible {
  background-color: #FFFBF0 !important;
  border-color: transparent !important;
  color: #B07D00 !important;
  box-shadow: none !important;
  outline: none !important;
}
.btn-tbl-gold:active,
.btn-tbl-gold.active,
.show > .btn-tbl-gold.dropdown-toggle {
  background-color: #B07D00 !important;
  border-color: transparent !important;
  color: #fff !important;
  box-shadow: none !important;
  outline: none !important;
}

.btn-tbl-green:hover,
.btn-tbl-green:focus,
.btn-tbl-blue:hover,
.btn-tbl-blue:focus,
.btn-tbl-purple:hover,
.btn-tbl-purple:focus,
.btn-tbl-teal:hover,
.btn-tbl-teal:focus,
.btn-tbl-gold:hover,
.btn-tbl-gold:focus,
.btn-lv6:hover,
.btn-lv6:focus,
.btn-lv7:hover,
.btn-lv7:focus {
  text-decoration: none !important;
}

/* 灰色：禁用/不可点击（等待审核等） */
.btn-tbl-gray {
  background-color: #F5F5F5;
  border-color: transparent;
  color: #999;
  cursor: not-allowed;
  pointer-events: none;
}

/* 禁用 - 面型（填充） */
.btn-disabled-filled {
  background-color: #F0F0F0;
  border-color: transparent;
  color: #ABABAB;
  cursor: not-allowed;
  pointer-events: none;
}

/* 禁用 - 线型（描边） */
.btn-disabled-outlined {
  background-color: transparent;
  border-color: #E1E3E5;
  color: #ABABAB;
  cursor: not-allowed;
  pointer-events: none;
}

/* 7级按钮禁用状态：1、2、6、7级用面型灰色，3、4、5级用线型灰色 */
.btn-lv1:disabled,
.btn-lv2:disabled,
.btn-lv6:disabled,
.btn-lv7:disabled {
  background-color: #F0F0F0 !important;
  border-color: transparent !important;
  color: #ABABAB !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
  transform: none !important;
  box-shadow: none !important;
}

.btn-lv8:disabled,
.btn-lv9:disabled {
  background-color: #F0F0F0 !important;
  border-color: transparent !important;
  color: #ABABAB !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
  transform: none !important;
  box-shadow: none !important;
}

.btn-lv3:disabled,
.btn-lv4:disabled,
.btn-lv5:disabled {
  background-color: transparent !important;
  border-color: #E1E3E5 !important;
  color: #ABABAB !important;
  cursor: not-allowed !important;
  pointer-events: none !important;
  transform: none !important;
  box-shadow: none !important;
}

/* ============================================
   [8.1] 多选下拉组件 (Multi-Select)
   ============================================ */

.multi-select {
  position: relative;
  width: 100%;
}

.multi-select-trigger {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px;
  min-height: 48px;
  padding: 6px 36px 6px 12px;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  background: #fff;
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  position: relative;
}

/* 统一箭头样式（多选 & 单选下拉共用） */
.multi-select-trigger::after,
.single-select-trigger::after {
  content: '';
  position: absolute;
  right: 14px;
  top: 50%;
  width: 8px;
  height: 8px;
  border-right: 2px solid #666;
  border-bottom: 2px solid #666;
  transform: translateY(-70%) rotate(45deg);
  transition: transform 0.2s ease;
  pointer-events: none;
}

.multi-select.open .multi-select-trigger::after,
.single-select.open .single-select-trigger::after {
  transform: translateY(-30%) rotate(-135deg);
}

.multi-select-trigger:hover {
  border-color: var(--bs-primary);
}

.multi-select.open .multi-select-trigger {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px rgba(246, 55, 86, 0.1);
}

.multi-select-placeholder {
  color: var(--bs-tertiary-color);
  font-size: 16px;
}

.multi-select-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 8px;
  background: var(--bs-primary-bg);
  color: var(--bs-primary);
  border-radius: var(--bs-border-radius-pill);
  font-size: 14px;
  font-weight: 500;
  max-width: 120px;
}

.multi-select-tag span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.multi-select-tag-close {
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
  opacity: 0.7;
}

.multi-select-tag-close:hover {
  opacity: 1;
}

.multi-select-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  background: #fff;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
  z-index: 1050;
  max-height: 280px;
  overflow-y: auto;
  display: none;
}

.multi-select.open .multi-select-dropdown {
  display: block;
}

.multi-select-group-label {
  padding: 8px 12px 4px;
  font-size: 12px;
  font-weight: 600;
  color: var(--bs-tertiary-color);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 1;
  border-bottom: 1px solid #F0F0F0;
}

.multi-select-option {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  cursor: pointer;
  font-size: 16px;
  transition: background 0.15s;
}

.multi-select-option:hover {
  background: var(--bs-primary-bg);
}

.multi-select-option.selected {
  color: var(--bs-primary);
  font-weight: 500;
}

.multi-select-option.disabled {
  opacity: 0.4;
  cursor: not-allowed;
  pointer-events: none;
}

.multi-select-option .check-icon {
  width: 4px;
  height: 1em;
  border: none;
  border-radius: 2px;
  background: #D9D9D9;
  flex-shrink: 0;
  transition: all 0.2s;
}

.multi-select-option .check-icon svg {
  display: none;
}

.multi-select-option.selected .check-icon {
  background: var(--bs-primary);
}

/* ============================================
   [8.1.1] 单选下拉组件 (Single-Select)
   ============================================ */

.single-select {
  position: relative;
  width: 100%;
}

.single-select-trigger {
  display: flex;
  align-items: center;
  min-height: 48px;
  padding: 6px 36px 6px 12px;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  background: #fff;
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  position: relative;
  font-size: 16px;
}

.single-select-trigger:hover {
  border-color: var(--bs-primary);
}

.single-select.open .single-select-trigger {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px rgba(246, 55, 86, 0.1);
}

.single-select-placeholder {
  color: var(--bs-tertiary-color);
  font-size: 16px;
}

.single-select-value {
  color: var(--bs-body-color);
  font-size: 16px;
}

.single-select-dropdown {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  background: #fff;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
  z-index: 1050;
  max-height: 280px;
  overflow-y: auto;
  display: none;
}

.single-select.open .single-select-dropdown {
  display: block;
}

.single-select-group-label {
  padding: 8px 12px 4px;
  font-size: 12px;
  font-weight: 600;
  color: var(--bs-tertiary-color);
  text-transform: uppercase;
  letter-spacing: 0.5px;
  position: sticky;
  top: 0;
  background: #fff;
  z-index: 1;
  border-bottom: 1px solid #F0F0F0;
}

.single-select-option {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 14px;
  cursor: pointer;
  font-size: 16px;
  transition: background 0.15s;
}

.single-select-option:hover {
  background: var(--bs-primary-bg);
}

.single-select-option.selected {
  color: var(--bs-primary);
  font-weight: 500;
}

.single-select-option .check-icon {
  width: 4px;
  height: 1em;
  border: none;
  border-radius: 2px;
  background: #D9D9D9;
  flex-shrink: 0;
  transition: all 0.2s;
}

.single-select-option.selected .check-icon {
  background: var(--bs-primary);
}

/* ============================================
   [8.2] 图片上传组件 (Image Upload)
   ============================================ */

.upload-zone {
  border: 2px dashed #CCC;
  border-radius: var(--bs-border-radius-lg);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  padding: var(--spacing-3xl);
  transition: border-color 0.2s, background 0.2s;
  background: #FAFAFA;
  min-height: 180px;
  position: relative;
}

.upload-zone:hover {
  border-color: var(--bs-primary);
  background: var(--bs-primary-bg);
}

.upload-zone-icon {
  width: 40px;
  height: 40px;
  color: #CCC;
  margin-bottom: var(--spacing-md);
}

.upload-zone:hover .upload-zone-icon {
  color: var(--bs-primary);
}

.upload-zone:hover .upload-zone-text {
  color: var(--bs-primary);
}

.upload-zone-text {
  font-size: 18px;
  color: var(--bs-secondary-color);
  text-align: center;
  transition: color 0.2s;
}

.upload-zone-hint {
  font-size: 12px;
  color: var(--bs-tertiary-color);
  margin-top: var(--spacing-xs);
}

/* 图片预览 */
.upload-preview {
  --upload-preview-min-width: 180px;
  --upload-preview-max-width: 360px;
  --upload-preview-height: 200px;
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: min(100%, var(--upload-preview-max-width));
  min-width: min(100%, var(--upload-preview-min-width));
  height: var(--upload-preview-height);
  border-radius: var(--bs-border-radius);
  overflow: hidden;
  border: 1px solid var(--bs-border-color);
  background: #fff;
  box-sizing: border-box;
}

.upload-preview img {
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
  object-position: center;
}

.upload-preview-actions {
  position: absolute;
  top: 8px;
  right: 8px;
  display: flex;
  gap: 6px;
}

.upload-preview-btn {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.5);
  color: #fff;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s;
}

.upload-preview-btn svg {
  width: 14px;
  height: 14px;
}

.upload-preview-btn:hover {
  background: rgba(0, 0, 0, 0.75);
}

/* 裁剪弹窗 */
.crop-modal .modal-body {
  padding: 0;
  max-height: 70vh;
  overflow: hidden;
}

.crop-modal .modal-body img {
  display: block;
  max-width: 100%;
}

.crop-modal .modal-footer {
  justify-content: space-between;
  gap: 12px;
}

.crop-modal-status {
  flex: 1 1 auto;
  min-width: 0;
  font-size: 13px;
  color: var(--bs-secondary-color);
}

.crop-modal.is-crop-invalid .crop-modal-status {
  color: var(--bs-danger);
}

.crop-modal.is-crop-invalid .cropper-view-box,
.crop-modal.is-crop-invalid .cropper-face {
  outline: 2px solid rgba(var(--bs-danger-rgb), 0.9);
  outline-offset: -2px;
}

.crop-modal.is-crop-invalid .cropper-line,
.crop-modal.is-crop-invalid .cropper-point {
  background-color: rgba(var(--bs-danger-rgb), 0.95);
}

/* ============================================
   [8.3] 表格样式 (Table)
   ============================================ */

.table-themed {
  width: 100%;
  border-collapse: collapse;
  font-size: 14px;
}

.table-themed-scroller {
  width: 100%;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
}

.table-themed-scroller .table-themed {
  min-width: 720px;
}

.table-themed thead th {
  background: var(--bs-secondary-bg);
  color: var(--bs-body-color);
  font-weight: 400;
  padding: 12px 16px;
  text-align: left;
  border: none;
}

.table-themed thead th:first-child {
  border-radius: var(--bs-border-radius) 0 0 0;
}

.table-themed thead th:last-child {
  border-radius: 0 var(--bs-border-radius) 0 0;
}

.table-themed tbody td {
  padding: 12px 16px;
  border-bottom: none;
  color: var(--bs-body-color);
}

.table-themed tbody tr:nth-child(even) {
  background: #FAFAFA;
}

.table-themed tbody tr:hover {
  background: #FFFBF8;
}

.table-pagination-demo {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-lg);
}

.table-pagination-bar {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--spacing-lg);
  flex-wrap: wrap;
}

.table-pagination-controls {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  flex-wrap: wrap;
  flex: 0 1 auto;
  min-width: 0;
  margin-left: auto;
}

.cert-pagination {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.cert-pagination-btn,
.cert-pagination-ellipsis {
  min-width: 36px;
  height: 36px;
  padding: 0 12px;
  border-radius: var(--bs-border-radius);
  font-size: 13px;
  line-height: 1;
}

.cert-pagination-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--bs-border-color);
  background: #fff;
  color: var(--bs-body-color);
  transition: all 0.2s ease;
}

.cert-pagination-btn:hover:not(:disabled) {
  border-color: rgba(var(--bs-secondary-rgb), 0.35);
  color: var(--bs-secondary);
  background: #fff;
}

.cert-pagination-btn:disabled {
  background: #F5F5F5;
  border-color: #EBEBEB;
  color: #B8B8B8;
  cursor: not-allowed;
}

.cert-pagination-btn.is-active {
  border-color: var(--bs-secondary);
  background: var(--bs-secondary);
  color: #fff;
  box-shadow: 0 6px 16px rgba(var(--bs-secondary-rgb), 0.18);
}

.cert-pagination-btn.is-icon {
  width: 36px;
  min-width: 36px;
  padding: 0;
}

.cert-pagination-btn svg,
.cert-pagination-btn i[data-lucide] {
  width: 16px;
  height: 16px;
  display: block;
}

.cert-pagination-ellipsis {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--bs-tertiary-color);
}

.cert-pagination-jump-compact {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding-left: 12px;
  margin-left: 4px;
  border-left: 1px solid var(--bs-border-color);
}

.cert-pagination-jump-compact.is-hidden {
  display: none;
}

.cert-pagination-jump-compact .form-control {
  width: 58px;
  min-width: 58px;
  height: 36px;
  padding: 6px 8px;
  text-align: center;
  font-size: 13px;
}

.cert-pagination-jump-compact .form-control.is-invalid {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 0.15rem rgba(var(--bs-primary-rgb), 0.12);
}

/* ============================================
   [8.4] 薪水输入框 (Salary Input)
   ============================================ */

.salary-input {
  display: flex;
  align-items: center;
  gap: var(--spacing-sm);
  width: 50%;
  max-width: 100%;
  box-sizing: border-box;
}

.salary-input .form-control {
  flex: 1;
  min-width: 120px;
  text-align: center;
}

.salary-input .salary-unit {
  font-size: 14px;
  color: var(--bs-secondary-color);
  white-space: nowrap;
}

.salary-input .salary-separator {
  font-size: 16px;
  color: var(--bs-tertiary-color);
  padding: 0 4px;
}

/* ============================================
   [8.5] 省市区联动选择器 (Region Selector)
   ============================================ */

.region-selector {
  display: flex;
  gap: var(--spacing-md);
}

.region-selector .form-select,
.region-selector .single-select {
  flex: 1;
}

.region-selector .single-select.disabled {
  opacity: 0.6;
  pointer-events: none;
}

.address-group {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-md);
}

/* ============================================
   [8.6] 联动下拉 (Cascade Select)
   ============================================ */

.cascade-select {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-md);
}

.cascade-child {
  display: none;
  animation: fadeSlideDown 0.2s ease;
}

.cascade-child.active {
  display: block;
}

@keyframes fadeSlideDown {
  from { opacity: 0; transform: translateY(-8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* ============================================
   [8.7] 文字说明块
   ============================================ */

/* 纯文字说明 */
.text-block {
  padding: var(--spacing-lg);
  color: var(--bs-secondary-color);
  font-size: 14px;
  line-height: 1.8;
  background: #FAFAFA;
  border-radius: var(--bs-border-radius);
}

/* 通知条 */
.notice-bar {
  display: flex;
  align-items: flex-start;
  max-width: 1000px;
  gap: var(--spacing-md);
  background: var(--bs-primary-bg);
  border-left: 4px solid var(--bs-primary);
  padding: var(--spacing-md) var(--spacing-lg);
  border-radius: 0 var(--bs-border-radius) var(--bs-border-radius) 0;
  font-size: 14px;
  color: var(--bs-body-color);
  line-height: 1.6;
}

.notice-bar-icon {
  flex-shrink: 0;
  color: var(--bs-primary);
  margin-top: 2px;
}

/* ============================================
   [9] 辅助类
   ============================================ */

/* --- form-label 帮助图标 & Tooltip --- */
.form-help-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  margin-left: 5px;
  color: #AAAAAA;
  cursor: help;
  vertical-align: middle;
  position: relative;
  top: -2px;
  flex-shrink: 0;
}

.form-help-icon svg {
  width: 15px;
  height: 15px;
  display: block;
}

.form-help-icon:hover {
  color: #666;
}

.form-help-tooltip {
  position: absolute;
  bottom: calc(100% + 8px);
  left: 50%;
  transform: translateX(-50%);
  background: #1a1a1a;
  color: #fff;
  font-size: 14px;
  font-weight: 400;
  line-height: 1.6;
  padding: 10px 14px;
  border-radius: 6px;
  width: max-content;
  max-width: 300px;
  white-space: normal;
  word-break: break-word;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.15s ease, visibility 0.15s ease;
  z-index: 9999;
  text-align: left;
  box-shadow: 0 4px 16px rgba(0,0,0,0.25);
}

/* 向下箭头 */
.form-help-tooltip::after {
  content: '';
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: #1a1a1a;
}

/* 显示时 */
.form-help-icon:hover .form-help-tooltip {
  opacity: 1;
  visibility: visible;
}

/* 超出左边缘时右对齐 */
.form-help-tooltip.tooltip-right {
  left: auto;
  right: 0;
  transform: none;
}
.form-help-tooltip.tooltip-right::after {
  left: auto;
  right: 8px;
  transform: none;
}

/* 超出右边缘时左对齐 */
.form-help-tooltip.tooltip-left {
  left: 0;
  transform: none;
}
.form-help-tooltip.tooltip-left::after {
  left: 10px;
  transform: none;
}

/* tooltip 内富文本样式 */
.form-help-tooltip b,
.form-help-tooltip strong {
  font-weight: 700;
  color: #fff;
}

.form-help-tooltip a {
  color: #aad4ff;
}

/* 加宽的 tooltip（用于较长文本） */
.form-help-tooltip-wide {
  max-width: 360px;
}

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

.bg-primary-custom {
  background-color: var(--bs-primary) !important;
}

.border-primary-custom {
  border-color: var(--bs-primary) !important;
}

/* ============================================
   [9.1] 日期选择器 (Date Picker)
   ============================================ */

.year-picker,
.date-picker,
.datetime-picker {
  position: relative;
  width: 100%;
}

/* 触发器 */
.date-picker-trigger,
.datetime-picker-trigger {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 48px;
  padding: 6px 36px 6px 12px;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  background: #fff;
  cursor: pointer;
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
  position: relative;
  font-size: 16px;
  color: var(--bs-body-color);
  user-select: none;
}

.date-picker-trigger::after,
.datetime-picker-trigger::after {
  content: '';
  position: absolute;
  right: 14px;
  top: 50%;
  width: 8px;
  height: 8px;
  border-right: 2px solid #666;
  border-bottom: 2px solid #666;
  transform: translateY(-70%) rotate(45deg);
  transition: transform 0.2s ease;
  pointer-events: none;
}

.year-picker.open .date-picker-trigger::after,
.date-picker.open .date-picker-trigger::after,
.datetime-picker.open .datetime-picker-trigger::after {
  transform: translateY(-30%) rotate(-135deg);
}

.date-picker-trigger:hover,
.datetime-picker-trigger:hover {
  border-color: var(--bs-primary);
}

.year-picker.open .date-picker-trigger,
.date-picker.open .date-picker-trigger,
.datetime-picker.open .datetime-picker-trigger {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 3px rgba(246, 55, 86, 0.1);
}

.date-picker-placeholder,
.datetime-picker-placeholder {
  color: var(--bs-tertiary-color);
}

.date-picker-value,
.datetime-picker-value {
  color: var(--bs-body-color);
}

/* 下拉面板 */
.date-picker-panel,
.datetime-picker-panel {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  background: #fff;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
  z-index: 1050;
  display: none;
  padding: 16px;
  min-width: 260px;
}

.year-picker.open .date-picker-panel,
.date-picker.open .date-picker-panel,
.datetime-picker.open .datetime-picker-panel {
  display: block;
}

/* 面板内的滚动列 */
.dp-columns {
  display: flex;
  gap: 8px;
  align-items: flex-start;
}

.dp-col {
  display: flex;
  flex-direction: column;
  flex: 1;
}

.dp-col-label {
  font-size: 11px;
  font-weight: 600;
  color: var(--bs-tertiary-color);
  text-align: center;
  margin-bottom: 6px;
  letter-spacing: 0.5px;
}

.dp-scroll {
  height: 260px !important;
  overflow-y: auto;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  scrollbar-width: thin;
  scrollbar-color: #ddd transparent;
}

.dp-scroll::-webkit-scrollbar {
  width: 4px;
}

.dp-scroll::-webkit-scrollbar-thumb {
  background: #ddd;
  border-radius: 2px;
}

.dp-item {
  padding: 9px 12px;
  font-size: 14px;
  cursor: pointer;
  text-align: center;
  transition: background 0.15s, color 0.15s;
  color: var(--bs-body-color);
  white-space: nowrap;
}

.dp-item:hover {
  background: var(--bs-primary-bg);
  color: var(--bs-primary);
}

.dp-item.selected {
  background: var(--bs-primary-bg);
  color: var(--bs-primary);
  font-weight: 600;
}

.dp-item.disabled {
  color: #ccc;
  cursor: not-allowed;
  pointer-events: none;
}

/* 面板底部按钮 */
.dp-footer {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid #F0F0F0;
}

.dp-btn-clear {
  background: transparent;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-pill);
  padding: 5px 14px;
  font-size: 13px;
  cursor: pointer;
  color: var(--bs-secondary-color);
  transition: all 0.15s;
}

.dp-btn-clear:hover {
  border-color: var(--bs-primary);
  color: var(--bs-primary);
}

.dp-btn-confirm {
  background: var(--bs-primary);
  border: none;
  border-radius: var(--bs-border-radius-pill);
  padding: 5px 16px;
  font-size: 13px;
  cursor: pointer;
  color: #fff;
  transition: background 0.15s;
}

.dp-btn-confirm:hover {
  background: var(--bs-primary-hover);
}

/* 日历面板布局 */
.dp-calendar-panel {
  --dp-calendar-width: 352px;
  --dp-time-col-width: 90px;
  --dp-time-col-gap: 6px;
  --dp-panel-gap: 10px;
  --dp-panel-padding: 14px;
  padding: var(--dp-panel-padding);
  box-sizing: border-box;
}

.date-picker-panel.dp-calendar-panel {
  width: calc(var(--dp-calendar-width) + (var(--dp-panel-padding) * 2));
}

/* 日历 + 时间并排（datetime-picker） */
.datetime-picker-panel.dp-calendar-panel {
  width: calc(var(--dp-calendar-width) + (var(--dp-time-col-width) * 2) + var(--dp-time-col-gap) + 14px + var(--dp-panel-gap) + (var(--dp-panel-padding) * 2));
}

.datetime-picker.open .datetime-picker-panel.dp-desktop-datetime-panel {
  display: grid;
  grid-template-columns: var(--dp-calendar-width) calc((var(--dp-time-col-width) * 2) + var(--dp-time-col-gap) + 14px);
  column-gap: var(--dp-panel-gap);
  align-items: flex-start;
}

.datetime-picker-panel.dp-desktop-datetime-panel .dp-footer-full {
  grid-column: 1 / -1;
  width: auto;
}

.dp-cal-side {
  flex: 0 0 var(--dp-calendar-width);
  width: var(--dp-calendar-width);
}

.dp-time-side {
  flex: 0 0 calc((var(--dp-time-col-width) * 2) + var(--dp-time-col-gap) + 14px);
  width: calc((var(--dp-time-col-width) * 2) + var(--dp-time-col-gap) + 14px);
  margin-left: 0;
  border-left: 1px solid #F0F0F0;
  padding-left: 14px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  align-self: flex-start;
  box-sizing: border-box;
  height: var(--dp-time-side-height, 320px);
  max-height: var(--dp-time-side-height, 320px);
}

.dp-time-side .dp-columns {
  width: auto;
  gap: var(--dp-time-col-gap);
  flex: 1;
  height: 100%;
  min-height: 0;
  overflow: hidden;
  align-items: stretch;
}

.dp-time-side .dp-col {
  flex: 0 0 var(--dp-time-col-width);
  display: flex;
  flex-direction: column;
  width: var(--dp-time-col-width);
  min-width: 0;
  min-height: 0;
  overflow: hidden;
}

.dp-time-side .dp-scroll {
  flex: 1;
  width: 100%;
  height: 100% !important;
  max-height: 100%;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
}

.dp-time-side .dp-item {
  font-size: 16px;
}

.datetime-picker-panel.dp-mobile-wheel-panel {
  width: min(375px, calc(100vw - 32px));
}

.dp-mobile-wheel-wrap {
  width: 100%;
}

.dp-mobile-wheel-columns {
  position: relative;
  display: grid;
  grid-template-columns: 1.35fr repeat(4, 1fr);
  gap: 8px;
  align-items: stretch;
}

.dp-mobile-wheel-col {
  min-width: 0;
}

.dp-mobile-wheel-scroll {
  height: 244px !important;
  border: none;
  border-radius: 12px;
  background: linear-gradient(180deg, #f6f7f8 0%, #f2f4f6 100%);
  padding: 16px 0;
  scrollbar-width: none;
  position: relative;
  z-index: 1;
}

.dp-mobile-wheel-scroll::-webkit-scrollbar {
  display: none;
}

.dp-mobile-wheel-scroll .dp-item {
  min-height: 42px;
  padding: 10px 8px;
  font-size: 16px;
  border-radius: 10px;
  cursor: pointer;
}

.dp-mobile-wheel-scroll .dp-item.selected {
  background: rgba(255, 255, 255, 0.86);
  color: var(--bs-primary);
  font-weight: 700;
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.03);
}

/* 年份选择器：大气样式 */
.year-picker-panel {
  min-width: 150px !important;
  padding: 14px !important;
}

.year-picker-panel .dp-col-label {
  font-size: 13px;
  text-align: center;
  margin-bottom: 8px;
}

.year-picker-panel .dp-scroll {
  height: 240px;
  border: none;
  border-radius: 8px;
}

.year-picker-panel .dp-item {
  padding: 11px 16px;
  font-size: 15px;
  text-align: center;
  border-radius: 6px;
  margin: 1px 4px;
}

.year-picker-panel .dp-footer {
  margin-top: 16px;
  border-top: none;
  padding-top: 0;
}

/* 底部按钮横跨全宽（datetime） */
.dp-footer-full {
  width: 100%;
  flex: 0 0 100%;
  order: 99;
  margin-top: 10px;
}

/* 日历头部 */
.dp-cal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 10px;
  gap: 8px;
}

/* 年份下拉按钮 */
.dp-cal-year-wrap {
  position: relative;
}

.dp-cal-year-btn {
  background: transparent;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  padding: 6px 12px;
  font-size: 16px;
  font-weight: 600;
  cursor: pointer;
  color: var(--bs-body-color);
  transition: border-color 0.15s;
}

.dp-cal-year-btn:hover {
  border-color: var(--bs-primary);
  color: var(--bs-primary);
}

.dp-cal-year-drop {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  background: #fff;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  box-shadow: 0 4px 16px rgba(0,0,0,0.1);
  z-index: 1060;
  width: 100px;
  max-height: 200px;
  overflow-y: auto;
  display: none;
  scrollbar-width: thin;
  scrollbar-color: #ddd transparent;
}

.dp-cal-year-drop::-webkit-scrollbar { width: 4px; }
.dp-cal-year-drop::-webkit-scrollbar-thumb { background: #ddd; border-radius: 2px; }

.dp-cal-year-wrap.open .dp-cal-year-drop {
  display: block;
}

/* 月份导航 */
.dp-cal-month-nav {
  display: flex;
  align-items: center;
  gap: 6px;
}

.dp-cal-month-label {
  font-size: 16px;
  font-weight: 600;
  color: var(--bs-body-color);
  min-width: 36px;
  text-align: center;
}

.dp-cal-nav-btn {
  background: transparent;
  border: 1px solid var(--bs-border-color);
  border-radius: var(--bs-border-radius-sm);
  width: 30px;
  height: 30px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--bs-secondary-color);
  transition: border-color 0.15s, color 0.15s;
  padding: 0;
}

.dp-cal-nav-btn:hover {
  border-color: var(--bs-primary);
  color: var(--bs-primary);
}

/* 星期行 */
.dp-cal-week-row {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  margin-bottom: 4px;
}

.dp-cal-week-cell {
  text-align: center;
  font-size: 11px;
  font-weight: 600;
  color: var(--bs-tertiary-color);
  padding: 4px 0;
}

/* 日期格子 */
.dp-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 4px;
}

.dp-cal-cell {
  text-align: center;
  font-size: 16px;
  padding: 8px 4px;
  border-radius: var(--bs-border-radius-sm);
  cursor: pointer;
  color: var(--bs-body-color);
  transition: background 0.12s, color 0.12s;
  line-height: 1.4;
}

.dp-cal-cell:hover:not(.dp-cal-empty):not(.dp-cal-disabled) {
  background: var(--bs-primary-bg);
  color: var(--bs-primary);
}

.dp-cal-cell.dp-cal-empty {
  cursor: default;
}

.dp-cal-cell.dp-cal-disabled {
  color: #ccc;
  cursor: not-allowed;
}

.dp-cal-cell.dp-cal-today {
  font-weight: 700;
  color: var(--bs-primary);
}

.dp-cal-cell.dp-cal-selected {
  background: var(--bs-primary) !important;
  color: #fff !important;
  font-weight: 600;
}

/* ============================================
   [10] 响应式设计
   ============================================ */

/* ============================================
   [Toast 提示]
   ============================================ */

#toast-container {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 9999;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: center;
}

#toast-container-top {
  position: fixed;
  top: 24px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 9999;
  pointer-events: none;
  display: flex;
  flex-direction: column;
  align-items: center;
}

.sg-toast {
  padding: 12px 24px;
  border-radius: 8px;
  color: #fff;
  font-size: 16px;
  text-align: center;
  opacity: 0;
  transform: translateY(-20px);
  transition: all 0.3s ease;
  margin-bottom: 10px;
  white-space: nowrap;
  pointer-events: auto;
  width: auto;
  display: inline-block;
}

.sg-toast.show {
  opacity: 1;
  transform: translateY(0);
}

.sg-toast-normal {
  background: rgba(0, 0, 0, 0.75);
}

.sg-toast-error {
  background: rgba(246, 55, 86, 0.9);
}

.sg-toast-warning {
  background: rgba(var(--bs-primary-rgb), 0.92);
  color: #fff;
}

.sg-toast-success {
  background: rgba(var(--bs-secondary-rgb), 0.92);
  color: #fff;
}

/* ============================================
   [Modal 弹窗]
   ============================================ */

.sg-modal {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 9998;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 16px;
  box-sizing: border-box;
}

.sg-modal.show {
  display: flex;
}

.sg-modal-overlay {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.5);
}

.sg-modal-content {
  position: relative;
  background: #fff;
  border-radius: 10px;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
  display: flex;
  flex-direction: column;
  width: min(var(--sg-modal-width, 100%), calc(100vw - 32px));
  max-width: calc(100vw - 32px);
  max-height: 90vh;
  animation: modalSlideIn 0.3s ease;
  box-sizing: border-box;
}

@keyframes modalSlideIn {
  from {
    opacity: 0;
    transform: translateY(-30px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.sg-modal-small {
  --sg-modal-width: 400px;
  width: min(400px, calc(100vw - 32px));
}

.sg-modal-large {
  --sg-modal-width: 600px;
  width: min(600px, calc(100vw - 32px));
}

.sg-modal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 24px 24px 20px;
}

.sg-modal-title {
  font-size: 18px;
  font-weight: 600;
  color: var(--bs-body-color);
  margin: 0;
}

.sg-modal-close {
  position: absolute;
  top: 20px;
  right: 20px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
  color: #333333;
  transition: background-color 0.2s;
  border-radius: 4px;
  width: 28px;
  height: 28px;
  line-height: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

.sg-modal-close:hover {
  background-color: #F7F7F7;
}

.sg-modal-close svg {
  width: 20px;
  height: 20px;
  stroke: currentColor;
}

.sg-modal-body {
  padding: 0 24px 20px;
  overflow-y: auto;
  flex: 1;
}

.sg-modal-body p {
  margin: 0 0 12px;
  color: var(--bs-body-color);
  line-height: 1.6;
  font-size: 16px;
}

.sg-modal-body p:last-child {
  margin-bottom: 0;
}

.sg-modal-body ul {
  margin: 12px 0;
  padding-left: 24px;
}

.sg-modal-body li {
  margin-bottom: 8px;
  color: var(--bs-body-color);
  font-size: 16px;
}

.sg-modal-footer {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 12px;
  padding: 24px;
}

.sg-modal-footer .btn {
  font-size: 16px;
  min-width: 100px;
}

.ui-code-verify-modal {
  --ui-code-verify-slot-width: 56px;
  --ui-code-verify-slot-height: 78px;
  --ui-code-verify-slot-gap: 16px;
  --ui-code-verify-body-padding-x: 24px;
  width: fit-content;
  max-width: calc(100vw - 32px);
  border: 1px solid rgba(15, 23, 42, 0.08);
  border-radius: 16px;
  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.14), inset 0 1px 0 rgba(255, 255, 255, 0.8);
}

/* 6 位总宽为桌面基准：464 = 6*56 + 5*16 + 24*2，4 位宽度按同一格宽与间距缩至 320 */
.ui-code-verify-modal[data-code-length="4"] {
  width: 464px;
}

.ui-code-verify-modal[data-code-length="6"] {
  width: 464px;
}

.ui-code-verify-modal .sg-modal-header {
  padding: 26px var(--ui-code-verify-body-padding-x) 14px;
}

.ui-code-verify-modal .sg-modal-body {
  padding: 0 var(--ui-code-verify-body-padding-x) 28px;
}

.ui-code-verify-title {
  font-size: 20px;
  font-weight: 600;
  letter-spacing: -0.01em;
}

.ui-code-verify-target {
  margin-top: 2px;
  margin-bottom: 14px;
  font-size: 14px;
  line-height: 1.6;
  color: var(--bs-secondary-color);
}

.ui-code-verify-target.hidden {
  display: none;
}

.ui-code-verify-meta {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  margin-bottom: 18px;
  margin-top: 0;
  font-size: 13px;
  color: var(--bs-secondary-color);
  min-height: 20px;
  letter-spacing: 0.01em;
}

.ui-code-verify-hint {
  flex-shrink: 0;
}

.ui-code-verify-resend {
  padding: 0;
  border: none;
  background: transparent;
  color: var(--bs-primary);
  font-size: 14px;
  font-weight: 500;
  cursor: pointer;
  transition: opacity 0.2s ease;
  flex-shrink: 0;
}

.ui-code-verify-resend:hover:not(:disabled) {
  opacity: 0.8;
}

.ui-code-verify-resend:disabled {
  color: var(--bs-secondary-color);
  cursor: not-allowed;
  opacity: 0.6;
}

.ui-code-verify-resend.hidden {
  display: none;
}

.ui-code-verify-inputs {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--ui-code-verify-slot-gap);
}

.ui-code-verify-slot {
  flex: 0 0 var(--ui-code-verify-slot-width);
  width: var(--ui-code-verify-slot-width);
  height: var(--ui-code-verify-slot-height);
  padding: 0;
  border: 1px solid #d0d7de;
  border-radius: 10px;
  background: #ffffff;
  box-shadow: inset 0 1px 0 rgba(208, 215, 222, 0.2);
  text-align: center;
  font-size: 34px;
  line-height: 1;
  font-weight: 500;
  font-variant-numeric: tabular-nums;
  color: #1f2328;
  caret-color: var(--bs-primary);
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.ui-code-verify-slot:hover:not(:disabled) {
  border-color: #afb8c1;
}

.ui-code-verify-slot.is-filled {
  border-color: #8c959f;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85);
}

.ui-code-verify-slot:focus {
  outline: none;
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 4px rgba(246, 55, 86, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.85);
  transform: translateY(-1px);
}

.ui-code-verify-slot:disabled {
  background: #f6f8fa;
  color: #57606a;
}

/* ============================================
   [10] 响应式设计
   ============================================ */

@media (max-width: 768px) {
  .dash-container,
  .page-container,
  .page-container-center {
    padding: 24px 16px;
  }

  .dash-container {
    max-width: 100%;
  }

  .page-container-center {
    align-items: stretch;
  }

  .page-container-center h1 {
    font-size: 24px;
    margin-bottom: 24px;
  }

  .form-container {
    max-width: 100%;
    width: 100%;
  }

  .cert-card {
    padding: var(--spacing-2xl);
    width: 100%;
    min-width: 0;
  }

  /* 1. 帮助图标tooltip不超出屏幕 */
  .form-help-tooltip {
    max-width: calc(100vw - 40px);
    left: 50%;
    transform: translateX(-50%);
  }

  .form-help-tooltip.tooltip-right,
  .form-help-tooltip.tooltip-left {
    left: 50%;
    right: auto;
    transform: translateX(-50%);
  }

  .form-help-tooltip.tooltip-right::after,
  .form-help-tooltip.tooltip-left::after {
    left: 50%;
    right: auto;
    transform: translateX(-50%);
  }

  /* 2. 单选按钮水平排列换行 */
  .d-flex.gap-4 {
    flex-wrap: wrap;
  }

  .form-check {
    min-width: fit-content;
  }

  /* 3. 表格横向滚动 */
  .table-themed-scroller {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }

  .table-themed {
    min-width: 600px;
  }

  .table-pagination-bar {
    align-items: flex-start;
  }

  .table-pagination-controls {
    justify-content: flex-start;
    width: 100%;
    margin-left: 0;
  }

  .cert-pagination-jump-compact {
    padding-left: 0;
    margin-left: 0;
    border-left: none;
  }

  /* 4. 年份选择器按钮调整 */
  .year-picker-panel .dp-footer .btn {
    min-height: 40px;
    padding: 8px 16px;
  }

  /* 5. 日期选择器按钮调整 */
  .date-picker-panel .dp-footer .btn {
    min-height: 40px;
    padding: 8px 16px;
  }

  /* 6. 年月日时分选择器宽度限制 */
  .datetime-picker-panel {
    max-width: calc(100vw - 32px);
    left: 50%;
    transform: translateX(-50%);
  }

  .datetime-picker-panel.dp-calendar-panel {
    width: min(375px, calc(100vw - 32px));
  }

  .datetime-picker.open .datetime-picker-panel.dp-mobile-wheel-panel {
    display: block;
  }

  .datetime-picker-panel.dp-mobile-wheel-panel {
    padding: 14px 12px;
  }

  .dp-mobile-wheel-columns {
    gap: 6px;
    grid-template-columns: 1.3fr repeat(4, 1fr);
  }

  .dp-mobile-wheel-scroll {
    height: 220px !important;
    padding: 0 0;
  }

  .date-picker-panel,
  .year-picker-panel {
    max-width: calc(100vw - 32px);
    left: 50%;
    transform: translateX(-50%);
  }

  .dp-btn-clear,
  .dp-btn-confirm {
    padding: 8px 16px;
    font-size: 14px;
    min-height: 36px;
  }

  /* 7. 所有弹窗居中 */
  .sg-modal {
    align-items: center;
    justify-content: center;
  }

  .sg-modal-content {
    margin: 0 auto;
  }

  .form-control-with-action .form-control {
    padding-right: 132px;
  }

  .form-control-inline-btn {
    --btn-w: 96px;
    font-size: 12px;
  }

  .form-control-inline-status {
    right: 112px;
  }

  .ui-code-verify-modal {
    --ui-code-verify-slot-width: 42px;
    --ui-code-verify-slot-height: 60px;
    --ui-code-verify-slot-gap: 8px;
    --ui-code-verify-body-padding-x: 20px;
  }

  .ui-code-verify-modal[data-code-length="4"] {
    width: min(232px, calc(100vw - 32px));
  }

  .ui-code-verify-modal[data-code-length="6"] {
    width: min(332px, calc(100vw - 32px));
  }

  .ui-code-verify-slot {
    font-size: 26px;
  }

  .cert-btn.cert-btn-primary {
    padding: 0 24px !important;
    height: 44px !important;
    line-height: 44px !important;
    font-size: 18px !important;
  }

  .btn-group-container {
    flex-wrap: wrap;
  }

  .cert-cards-container {
    grid-template-columns: 1fr;
  }

  .success-container {
    margin: 20px auto !important;
  }

  .region-selector {
    flex-direction: column;
  }

  .salary-input {
    width: 100%;
  }

  .salary-input .form-control {
    min-width: 80px;
  }

  .notice-bar {
    padding: 12px 14px;
  }

  .multi-select-tag {
    max-width: 120px;
  }
}

@media (max-width: 389px) {
  .ui-code-verify-modal {
    --ui-code-verify-slot-width: 38px;
    --ui-code-verify-slot-height: 56px;
    --ui-code-verify-slot-gap: 4px;
    --ui-code-verify-body-padding-x: 16px;
  }

  .ui-code-verify-modal[data-code-length="4"] {
    width: min(196px, calc(100vw - 32px));
  }

  .ui-code-verify-modal[data-code-length="6"] {
    width: min(280px, calc(100vw - 32px));
  }

  .ui-code-verify-slot {
    font-size: 24px;
  }
}

/* ============================================
   [11] 支付页面样式
   ============================================ */

.cert-payment-page {
  max-width: 820px;
  margin: 0 auto;
}

.cert-payment-title {
  font-size: 28px;
  font-weight: 400;
  color: var(--bs-body-color);
  text-align: center;
  margin-bottom: var(--spacing-4xl);
}

.cert-company-logo {
  width: 80px;
  height: 80px;
  border-radius: var(--bs-border-radius);
  border: 1px solid var(--bs-border-color);
  object-fit: cover;
}

.cert-payment-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--spacing-md) 0;
  font-size: 16px;
  color: var(--bs-body-color);
}

.cert-payment-total {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--spacing-lg) 0 0;
  margin-top: var(--spacing-md);
  border-top: 1px solid var(--bs-border-color);
  font-size: 16px;
  font-weight: 600;
}

/* 金额展示：数字放大，货币符号略小 */
.cert-amount {
  display: inline-flex;
  align-items: baseline;
  line-height: 1;
}

.cert-payment-item .cert-amount-number {
  font-size: 24px;
  font-weight: 600;
}

.cert-payment-total .cert-amount-number {
  font-size: 24px;
  font-weight: 600;
}

.cert-amount-currency {
  font-size: 14px;
  margin-right: 2px;
}

.cert-amount-sign {
  font-size: 16px;
  margin-right: 1px;
}

.cert-amount-modal .cert-amount-number {
  font-size: 24px;
  font-weight: 700;
}

#wechatQrCode {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 200px;
  margin-top: 18px;
}

.cert-payment-btn-wrapper {
  max-width: 820px;
  margin: var(--spacing-2xl) auto 0;
}

.cert-payment-btn-wrapper .btn {
  max-width: 400px;
  margin: 0 auto;
  display: block;
}

.cert-payment-grid-method .card-body {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  height: 100%;
}

.cert-pay-method-list {
  margin-bottom: var(--spacing-lg);
  padding-top: 12px;
  row-gap: 18px !important;
}

.cert-pay-method {
  justify-content: flex-start;
  gap: var(--spacing-md);
  min-height: 50px;
  color: var(--bs-body-color) !important;
  border-color: var(--bs-border-color) !important;
  background: #fff !important;
  padding: 10px var(--spacing-md);
  transition: border-color 0.2s ease, background-color 0.2s ease !important;
}

.cert-pay-method span {
  color: inherit !important;
}

.cert-pay-method-icon {
  display: inline-flex;
  width: 24px;
  height: 24px;
  color: #999;
  flex-shrink: 0;
  transition: none;
}

.cert-pay-method-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

/* 微信原始图形留白略大，做轻微视觉补偿 */
.cert-pay-method-wechat .cert-pay-method-icon svg {
  transform: scale(1.08);
  transform-origin: center;
}

.btn-check:checked + .cert-pay-method {
  color: var(--bs-body-color) !important;
}

.btn-check:checked + .cert-pay-method-wechat .cert-pay-method-icon svg path {
  fill: var(--bs-primary);
}

.btn-check:checked + .cert-pay-method-alipay .cert-pay-method-icon svg path {
  fill: var(--bs-primary);
}

/* 待审核提示（认证信息提交成功，等待平台审核） */
.cert-pending-review-success-icon {
  width: 80px;
  height: 80px;
  object-fit: contain;
  display: block;
  margin: 0 auto var(--spacing-md);
}

.cert-pending-review-success-text1 {
  font-size: 20px;
  color: var(--bs-body-color);
  font-weight: 400;
  line-height: 1.6;
}

.cert-pending-review-success-text2 {
  font-size: 16px;
  color: var(--bs-tertiary-color);
  font-weight: 400;
  line-height: 1.6;
}

@media (max-width: 768px) {
  .cert-payment-grid {
    grid-template-columns: 1fr;
    gap: var(--spacing-lg);
  }

  .cert-payment-page {
    max-width: 100%;
  }

  .cert-payment-title {
    font-size: 24px;
    margin-bottom: var(--spacing-2xl);
  }

  .cert-company-logo {
    width: 60px;
    height: 60px;
  }

  /* 公司信息卡片行响应式 */
  .dash-company-row {
    flex-wrap: wrap;
  }

  .dash-company-info {
    flex: 1 1 auto;
    min-width: 0;
  }

  .dash-company-actions {
    flex: 1 1 100%;
    width: 100%;
    text-align: left;
    margin-top: var(--spacing-lg);
  }

  .dash-company-actions .btn {
    width: 100% !important;
  }
}
