@charset "UTF-8";.slider-captcha {
  width: 320px;
  user-select: none;
}

/* ─── Image area ─── */

.slider-captcha__image {
  position: relative;
  overflow: hidden;
  border-radius: 4px;
  background: #f0f0f0;
  margin-bottom: 12px;
}

.slider-captcha__bg {
  display: block;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.slider-captcha__piece {
  position: absolute;
  pointer-events: none;
}

.slider-captcha__loading {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(255, 255, 255, 0.7);
  color: #666;
  font-size: 14px;
}

.slider-captcha__refresh {
  position: absolute;
  top: 6px;
  right: 6px;
  width: 28px;
  height: 28px;
  display: grid;
  place-items: center;
  border: none;
  border-radius: 50%;
  background: rgba(0, 0, 0, 0.35);
  color: #fff;
  font-size: 14px;
  cursor: pointer;
  transition: background 0.2s;
}

.slider-captcha__refresh:hover:not(:disabled) {
  background: rgba(0, 0, 0, 0.55);
}

.slider-captcha__refresh:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}

/* ─── Slider track ─── */

.slider-captcha__track {
  position: relative;
  height: 40px;
  border-radius: 20px;
  background: #f5f5f5;
  border: 1px solid #e8e8e8;
  overflow: hidden;
}

.slider-captcha__track-fill {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  border-radius: 20px 0 0 20px;
  opacity: 0.2;
  transition: background 0.2s;
}

.slider-captcha__track-text {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  font-size: 13px;
  color: #999;
  pointer-events: none;
  white-space: nowrap;
}

/* ─── Handle ─── */

.slider-captcha__handle {
  position: absolute;
  top: -1px;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  border: 2px solid #e8e8e8;
  background: #fff;
  cursor: grab;
  display: grid;
  place-items: center;
  box-shadow: 0 2px 6px rgba(0, 0, 0, 0.12);
  transition: border-color 0.2s, background 0.2s, box-shadow 0.2s;
  z-index: 1;
  touch-action: none;
}

.slider-captcha__handle:hover {
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2);
}

.slider-captcha__handle:active {
  cursor: grabbing;
}

.slider-captcha__handle--success {
  animation: slider-shake-none 0s;
}

.slider-captcha__handle--fail {
  animation: slider-shake 0.4s ease-in-out;
}

.slider-captcha__handle-icon {
  font-size: 16px;
  font-weight: bold;
  color: #999;
  line-height: 1;
}

.slider-captcha__handle--success .slider-captcha__handle-icon {
  color: #fff;
}

.slider-captcha__handle--fail .slider-captcha__handle-icon {
  color: #fff;
}

/* ─── Shake animation ─── */

@keyframes slider-shake {
  0%, 100% { transform: translateX(0); }
  20% { transform: translateX(-8px); }
  40% { transform: translateX(8px); }
  60% { transform: translateX(-6px); }
  80% { transform: translateX(6px); }
}
/* 细目表管理页样式 */

/* 上传解析中提示文字：闪烁动画，提示用户系统正在处理 */
@keyframes xmb-uploading-blink {
  0%,
  100% {
    opacity: 1;
  }
  50% {
    opacity: 0.25;
  }
}

.xmb-uploading-hint {
  animation: xmb-uploading-blink 1.2s ease-in-out infinite;
  color: #1677ff;
  font-size: 12px;
  white-space: nowrap;
}

/* AI 概括进行中：待审/总数数字蓝色脉冲（呼吸缩放） */
@keyframes xmb-leaf-pulse {
  0%,
  100% {
    opacity: 1;
    transform: scale(1);
  }
  50% {
    opacity: 0.55;
    transform: scale(1.06);
  }
}

.xmb-leaf-pulse {
  display: inline-block;
  color: #1677ff;
  font-weight: 600;
  animation: xmb-leaf-pulse 1.2s ease-in-out infinite;
}

/* AI 概括进行中：leafTotal 增量「+N」绿色浮现后渐隐（约 2.5s 一轮） */
@keyframes xmb-delta-fade {
  0% {
    opacity: 0;
    transform: translateY(2px);
  }
  15% {
    opacity: 1;
    transform: translateY(0);
  }
  70% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

.xmb-leaf-delta {
  display: inline-block;
  color: #52c41a;
  font-size: 12px;
  font-weight: 600;
  animation: xmb-delta-fade 2.5s ease-out forwards;
}

/* AI 概括弹窗：工种×等级矩阵 */
.xmb-scope-matrix {
  border-collapse: collapse;
  width: 100%;
}

.xmb-scope-matrix th,
.xmb-scope-matrix td {
  border: 1px solid #f0f0f0;
  padding: 4px 8px;
  text-align: center;
  font-size: 12px;
}

.xmb-scope-matrix th {
  background: #fafafa;
  font-weight: 600;
}

.xmb-scope-matrix td:first-child {
  text-align: left;
  white-space: nowrap;
}

.xmb-scope-na {
  color: #bfbfbf;
}

/* 生成批次「等待中」徽标：文字/边框/底色持续变色循环，让"后端排队处理中"可被看见 */
@keyframes xmb-status-color-cycle {
  0%,
  100% {
    color: #1677ff;
    background: #e6f4ff;
    border-color: #91caff;
  }
  25% {
    color: #722ed1;
    background: #f9f0ff;
    border-color: #d3adf7;
  }
  50% {
    color: #d46b08;
    background: #fff7e6;
    border-color: #ffd591;
  }
  75% {
    color: #c41d7f;
    background: #fff0f6;
    border-color: #ffadd2;
  }
}

.xmb-status-waiting {
  animation: xmb-status-color-cycle 3s ease-in-out infinite;
}

/* 生成批次「生成中」徽标：蓝色呼吸光晕 */
@keyframes xmb-status-breath {
  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(22, 119, 255, 0);
  }
  50% {
    box-shadow: 0 0 6px 2px rgba(22, 119, 255, 0.35);
  }
}

.xmb-status-running {
  animation: xmb-status-breath 1.6s ease-in-out infinite;
}
/* 生成工作台样式：动效类从 XiMuBiaoGuanLiPage.css 迁入（页面耦合解除），并新增完成行闪烁 */

/* 「等待中」徽标：文字/边框/底色持续变色循环，让"后端排队处理中"可被看见 */
@keyframes xmb-status-color-cycle {
  0%,
  100% {
    color: #1677ff;
    background: #e6f4ff;
    border-color: #91caff;
  }
  25% {
    color: #722ed1;
    background: #f9f0ff;
    border-color: #d3adf7;
  }
  50% {
    color: #d46b08;
    background: #fff7e6;
    border-color: #ffd591;
  }
  75% {
    color: #c41d7f;
    background: #fff0f6;
    border-color: #ffadd2;
  }
}

.xmb-status-waiting {
  animation: xmb-status-color-cycle 3s ease-in-out infinite;
}

/* 「生成中」徽标：蓝色呼吸光晕 */
@keyframes xmb-status-breath {
  0%,
  100% {
    box-shadow: 0 0 0 0 rgba(22, 119, 255, 0);
  }
  50% {
    box-shadow: 0 0 6px 2px rgba(22, 119, 255, 0.35);
  }
}

.xmb-status-running {
  animation: xmb-status-breath 1.6s ease-in-out infinite;
}

/* 批次完成：该行高亮闪烁一次（约 2.4s），提示"刚完成" */
@keyframes xmb-row-flash {
  0% {
    background: rgba(82, 196, 26, 0.22);
  }
  100% {
    background: transparent;
  }
}

.gen-row-flash > td {
  animation: xmb-row-flash 2.4s ease-out 1;
}

/* 工作台布局 */
.gen-workbench {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.gen-workbench .gen-start-bar {
  padding: 12px 12px 4px;
  background: #fafafa;
  border: 1px solid #f0f0f0;
  border-radius: 6px;
}

.gen-workbench .gen-section-title {
  display: flex;
  align-items: center;
  gap: 6px;
  margin: 4px 0 8px;
  font-size: 14px;
  font-weight: 600;
  color: #262626;
}

.gen-workbench .gen-active-wrap {
  border: 1px solid #f0f0f0;
  border-radius: 6px;
  padding: 8px 12px 12px;
  background: #fff;
}
.training-dashboard {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.training-dashboard .page-heading {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 16px;
}

.training-dashboard .page-title-line {
  display: flex;
  align-items: center;
  gap: 12px;
}

.training-dashboard .page-title-icon {
  width: 40px;
  height: 40px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(145deg, #2f6bff 0%, #5b8cff 100%);
  color: #fff;
  font-size: 18px;
}

.training-dashboard-live {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #64748b;
  font-size: 13px;
}

.training-dashboard-live-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #10b981;
  box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.7);
  animation: training-dashboard-pulse 1.6s infinite;
}

@keyframes training-dashboard-pulse {
  0% {
    box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.55);
  }
  70% {
    box-shadow: 0 0 0 8px rgba(16, 185, 129, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(16, 185, 129, 0);
  }
}

.training-dashboard-kpis {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
}

.training-dashboard-kpi {
  min-height: 118px;
  border: 1px solid #e8edf5;
  border-radius: 12px;
  background: linear-gradient(145deg, #ffffff 0%, #f8fbff 100%);
  padding: 16px;
}

.training-dashboard-kpi-label {
  color: #64748b;
  font-size: 13px;
}

.training-dashboard-kpi-value {
  margin-top: 8px;
  color: #172033;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.2;
}

.training-dashboard-kpi-foot {
  margin-top: 10px;
  color: #7b8798;
  font-size: 12px;
}

.training-dashboard-modules {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.training-dashboard-module {
  border: 1px solid #e6ebf2;
  border-radius: 12px;
  padding: 16px;
  background: #fff;
}

.training-dashboard-module-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
  color: #64748b;
  font-size: 13px;
}

.training-dashboard-module-value {
  color: #172033;
  font-size: 26px;
  font-weight: 700;
  line-height: 1.2;
}

.training-dashboard-module-hint {
  margin-top: 8px;
  color: #94a3b8;
  font-size: 12px;
}

.training-dashboard-chart-grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: 16px;
}

.training-dashboard-chart {
  height: 320px;
}

@media (max-width: 1400px) {
  .training-dashboard-kpis {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .training-dashboard-modules {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 1000px) {
  .training-dashboard-chart-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 720px) {
  .training-dashboard-kpis,
  .training-dashboard-modules {
    grid-template-columns: 1fr 1fr;
  }
}

/* ===== 同步练习（AI 同步学）统计面板 ===== */
.review-sync-group-title {
  margin: 2px 0 6px;
  color: #475569;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 1px;
}

.review-sync-group-title + .review-sync-kpi-row {
  margin-bottom: 12px;
}

.review-sync-kpi-row {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 12px;
}

.review-sync-kpi {
  border: 1px solid #edf0f5;
  border-radius: 10px;
  background: #fff;
  padding: 8px 12px;
}

.review-sync-kpi-label {
  color: #64748b;
  font-size: 12px;
}

.review-sync-kpi-value {
  margin-top: 4px;
  color: #172033;
  font-size: 19px;
  font-weight: 700;
  line-height: 1.3;
}

.review-sync-kpi-foot {
  margin-top: 4px;
  color: #94a3b8;
  font-size: 12px;
}

@media (max-width: 1400px) {
  .review-sync-kpi-row {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 720px) {
  .review-sync-kpi-row {
    grid-template-columns: 1fr 1fr;
  }
}
.training-process-steps .ant-steps-item-container {
  cursor: pointer;
}

.training-process-steps .ant-steps-item-title {
  transition: color 0.2s;
}

.training-process-steps .ant-steps-item:not(.ant-steps-item-active):hover .ant-steps-item-title {
  color: #1677ff;
}
.training-follow-class-page .page-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
}

.training-follow-class-page .follow-workbench-header {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin-bottom: 16px;
}

.training-follow-class-page .follow-class-card-grid {
  min-height: 120px;
}

.training-follow-class-page .follow-class-card {
  display: flex;
  align-items: flex-start;
  width: 100%;
  min-height: 72px;
  height: 100%;
  padding: 16px;
  border: 1px solid #e8eef5;
  border-radius: 10px;
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
  cursor: pointer;
  text-align: left;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.training-follow-class-page .follow-class-card:hover {
  border-color: #91caff;
  box-shadow: 0 6px 18px rgba(22, 119, 255, 0.12);
  transform: translateY(-1px);
}

.training-follow-class-page .follow-class-card:focus-visible {
  outline: 2px solid #1677ff;
  outline-offset: 2px;
}

.training-follow-class-page .follow-class-card-body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
  flex: 1;
}

.training-follow-class-page .follow-class-card-title {
  display: block;
  font-size: 15px;
  font-weight: 600;
  color: #1f2937;
  line-height: 1.4;
  white-space: normal;
  word-break: break-word;
  overflow-wrap: anywhere;
}

.training-follow-class-page .follow-class-card-company {
  display: block;
  font-size: 13px;
  line-height: 1.4;
}

.training-follow-class-page .follow-class-card-worktype {
  display: block;
  font-size: 12px;
  line-height: 1.4;
  color: #475569;
}

.training-follow-class-page .follow-class-card-meta {
  display: block;
  font-size: 12px;
  line-height: 1.4;
  color: #64748b;
}

.training-follow-class-page .follow-class-card-pagination {
  display: flex;
  justify-content: flex-end;
  margin-top: 16px;
}

/* 概览：近日出勤率 / 学员预警 — 默认隐藏滚动条，悬停再显示 */
.training-follow-class-page .follow-overview-scroll-card .ant-card-body {
  max-height: 280px;
  overflow: auto;
  padding-top: 8px;
  scrollbar-width: none;
  -ms-overflow-style: none;
}

.training-follow-class-page .follow-overview-scroll-card .ant-card-body::-webkit-scrollbar {
  width: 0;
  height: 0;
}

.training-follow-class-page .follow-overview-scroll-card .ant-card-body:hover,
.training-follow-class-page .follow-overview-scroll-card .ant-card-body:focus-within {
  scrollbar-width: thin;
  scrollbar-color: rgba(0, 0, 0, 0.35) transparent;
}

.training-follow-class-page .follow-overview-scroll-card .ant-card-body:hover::-webkit-scrollbar,
.training-follow-class-page .follow-overview-scroll-card .ant-card-body:focus-within::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

.training-follow-class-page .follow-overview-scroll-card .ant-card-body:hover::-webkit-scrollbar-thumb,
.training-follow-class-page .follow-overview-scroll-card .ant-card-body:focus-within::-webkit-scrollbar-thumb {
  background: rgba(0, 0, 0, 0.28);
  border-radius: 6px;
}

.training-follow-class-page .follow-overview-scroll-card .ant-card-body:hover::-webkit-scrollbar-track,
.training-follow-class-page .follow-overview-scroll-card .ant-card-body:focus-within::-webkit-scrollbar-track {
  background: transparent;
}

.training-follow-class-page .follow-schedule-row-today > td {
  background: #e6f4ff !important;
}
.training-follow-exam-page .page-heading {
  margin-bottom: 16px;
}

.training-follow-exam-page .exam-company-card-grid {
  min-height: 120px;
}

.training-follow-exam-page .exam-company-card {
  display: flex;
  align-items: stretch;
  width: 100%;
  min-height: 108px;
  padding: 16px;
  border: 1px solid #e8eef5;
  border-radius: 10px;
  background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
  cursor: pointer;
  text-align: left;
  transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
}

.training-follow-exam-page .exam-company-card:hover {
  border-color: #91caff;
  box-shadow: 0 6px 18px rgba(22, 119, 255, 0.12);
  transform: translateY(-1px);
}

.training-follow-exam-page .exam-company-card:focus-visible {
  outline: 2px solid #1677ff;
  outline-offset: 2px;
}

.training-follow-exam-page .exam-company-card.has-classes {
  border-color: #c6e0ff;
}

.training-follow-exam-page .exam-company-card.is-unassigned {
  background: linear-gradient(180deg, #fffbf0 0%, #fff7e6 100%);
  border-color: #ffe58f;
}

.training-follow-exam-page .exam-company-card-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
  flex: 1;
}

.training-follow-exam-page .exam-company-card-title {
  display: block;
  font-size: 15px;
  font-weight: 600;
  color: #1f2937;
  line-height: 1.4;
}

.training-follow-exam-page .exam-company-card-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 16px;
  font-size: 12px;
  color: #64748b;
}

.training-follow-exam-page .exam-company-card-stats em {
  font-style: normal;
  font-weight: 600;
  font-size: 16px;
  color: #1677ff;
  margin-right: 2px;
}

.training-follow-exam-page .exam-company-card-action {
  display: block;
  margin-top: auto;
  font-size: 12px;
  color: #1677ff;
}

.training-follow-exam-page .exam-company-card-pagination {
  display: flex;
  justify-content: flex-end;
  margin-top: 16px;
}

.training-follow-exam-page .exam-score-import-warn-row > td {
  background: #fffbe6;
}

.training-follow-exam-roster-drawer .exam-roster-stats,
.training-follow-exam-page .exam-roster-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  padding: 10px 12px;
  background: #fafafa;
  border: 1px solid #f0f0f0;
  border-radius: 6px;
}

.training-follow-exam-roster-drawer .exam-roster-stats .stat-item,
.training-follow-exam-page .exam-roster-stats .stat-item {
  white-space: nowrap;
}

.training-follow-exam-roster-drawer .exam-roster-pass-row > td {
  background: #f6ffed;
}

.training-follow-exam-roster-drawer .exam-roster-fail-row > td {
  background: #fff2f0;
}

.training-follow-exam-roster-drawer .exam-roster-absent-row > td {
  background: #f5f5f5;
  color: rgba(0, 0, 0, 0.45);
}

.training-follow-exam-roster-drawer .exam-score-fail {
  color: #cf1322;
  font-weight: 600;
}

.training-follow-exam-roster-drawer .exam-score-pass {
  color: #389e0d;
}
.training-subsidy-declare-page .page-heading {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  margin-bottom: 8px;
}

.training-subsidy-declare-page .subsidy-filter-bar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
  margin-bottom: 12px;
}

.training-subsidy-declare-page .subsidy-phase-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}

.training-subsidy-declare-page .subsidy-phase-chip {
  cursor: pointer;
  user-select: none;
}

.training-subsidy-declare-page .subsidy-stat-row {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 12px;
}

.training-subsidy-declare-page .subsidy-stat-card {
  background: #fafafa;
  border: 1px solid #f0f0f0;
  border-radius: 8px;
  padding: 12px 14px;
}

.training-subsidy-declare-page .subsidy-stat-card .label {
  color: #8c8c8c;
  font-size: 12px;
}

.training-subsidy-declare-page .subsidy-stat-card .value {
  margin-top: 4px;
  font-size: 22px;
  font-weight: 600;
  line-height: 1.2;
  color: #1f1f1f;
}

.training-subsidy-declare-page .subsidy-detail-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}

.training-subsidy-declare-page .slot-file-name {
  color: #8c8c8c;
  font-size: 12px;
  max-width: 140px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.training-subsidy-declare-page .profile-hint {
  background: #f6ffed;
  border: 1px solid #b7eb8f;
  border-radius: 6px;
  padding: 8px 12px;
  margin-bottom: 12px;
  font-size: 13px;
}

.training-subsidy-declare-page .subsidy-workbench-header {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-bottom: 12px;
}

.training-subsidy-declare-page .subsidy-material-kit-layout {
  display: grid;
  grid-template-columns: minmax(300px, 360px) minmax(0, 1fr);
  gap: 12px;
  align-items: stretch;
  min-height: 420px;
}

.training-subsidy-declare-page .subsidy-material-kit-left,
.training-subsidy-declare-page .subsidy-material-kit-right {
  height: 100%;
}

.training-subsidy-declare-page .subsidy-material-kit-right .ant-card-body {
  min-height: 360px;
}

.training-subsidy-declare-page .material-tree-panel {
  max-height: 520px;
  overflow: auto;
}

.training-subsidy-declare-page .material-tree-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
  padding-bottom: 8px;
  border-bottom: 1px solid #f0f0f0;
}

.training-subsidy-declare-page .material-tree-group {
  margin-bottom: 10px;
}

.training-subsidy-declare-page .material-tree-group-title {
  font-size: 12px;
  color: #8c8c8c;
  margin-bottom: 4px;
  font-weight: 600;
}

.training-subsidy-declare-page .material-tree-item {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  padding: 6px 4px;
  border-radius: 6px;
}

.training-subsidy-declare-page .material-tree-item--active {
  background: #e6f4ff;
}

.training-subsidy-declare-page .material-tree-item-body {
  flex: 1;
  border: none;
  background: transparent;
  text-align: left;
  cursor: pointer;
  padding: 0;
}

.training-subsidy-declare-page .material-tree-item-title {
  font-size: 13px;
  line-height: 1.4;
  margin-bottom: 2px;
}

.training-subsidy-declare-page .material-tree-item-actions {
  display: flex;
  flex-direction: row;
  align-items: center;
  flex-shrink: 0;
  gap: 0;
  white-space: nowrap;
}

.training-subsidy-declare-page .material-tree-item-actions .ant-btn-link {
  padding-inline: 4px;
  height: auto;
}

.training-subsidy-declare-page .material-required-dot {
  color: #ff4d4f;
  margin-right: 2px;
}

.training-subsidy-declare-page .material-workspace-panel {
  min-height: 320px;
}

.training-subsidy-declare-page .material-workspace-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 12px;
  margin-bottom: 12px;
  flex-wrap: wrap;
}

.training-subsidy-declare-page .material-workspace-actions {
  flex: 1 1 auto;
  justify-content: flex-end;
}

.training-subsidy-declare-page .material-preview-frame {
  width: 100%;
  height: 480px;
  border: 1px solid #f0f0f0;
  border-radius: 6px;
}

.training-subsidy-declare-page .material-preview-image {
  max-width: 100%;
  max-height: 480px;
  border: 1px solid #f0f0f0;
  border-radius: 6px;
}

.training-subsidy-declare-page .material-preview-fallback {
  padding: 12px;
  background: #fafafa;
  border-radius: 6px;
  border: 1px solid #f0f0f0;
}

.training-subsidy-declare-page .material-file-list {
  max-height: 560px;
  overflow: auto;
}

.training-subsidy-declare-page .material-file-list-item {
  cursor: pointer;
}

.training-subsidy-declare-page .material-file-list-item:hover {
  background: #f5f9ff;
}

.training-subsidy-declare-page .material-file-preview-body {
  min-height: 360px;
  max-height: 640px;
  overflow: auto;
  border: 1px solid #f0f0f0;
  border-radius: 6px;
  background: #fff;
  padding: 8px;
}

.training-subsidy-declare-page .material-spreadsheet-editor-toolbar {
  margin-bottom: 8px;
}

.training-subsidy-declare-page .material-spreadsheet-edit-body {
  max-height: 560px;
}

.training-subsidy-declare-page .material-edit-spreadsheet-table {
  border-collapse: collapse;
  width: 100%;
  font-size: 13px;
}

.training-subsidy-declare-page .material-edit-spreadsheet-table td {
  border: 1px solid #d9d9d9;
  padding: 4px 8px;
  white-space: pre-wrap;
  min-width: 48px;
  outline: none;
}

.training-subsidy-declare-page .material-edit-spreadsheet-table td:focus {
  box-shadow: inset 0 0 0 2px #1677ff;
  background: #f0f7ff;
}

.training-subsidy-declare-page .material-edit-sheet-hint {
  color: #888;
  margin-top: 8px;
  font-size: 12px;
}

.training-subsidy-declare-page .material-spreadsheet-preview,
.training-subsidy-declare-page .material-docx-preview {
  width: 100%;
  overflow: auto;
}

.training-subsidy-declare-page .material-docx-preview .docx-preview-container {
  padding: 8px;
  background: #fff;
}

.training-subsidy-declare-page .material-office-editor-wrap {
  position: relative;
  /* 必须写死 height：OnlyOffice 会把占位节点替换成 height=100% 的 iframe；
     若父级只有 min-height，百分比无法解析，iframe 会落回浏览器默认约 150px，
     下方大片白底看起来像「空白页」。 */
  height: 560px;
  min-height: 560px;
  border: 1px solid #f0f0f0;
  border-radius: 6px;
  overflow: hidden;
  background: #fff;
}

.training-subsidy-declare-page .material-office-editor-host {
  width: 100%;
  height: 100%;
}

.training-subsidy-declare-page .material-office-editor-wrap > iframe {
  display: block;
  width: 100% !important;
  height: 100% !important;
  border: 0;
}

.training-subsidy-declare-page .material-office-editor-loading {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.72);
  z-index: 2;
}

.training-subsidy-declare-page .subsidy-export-dock {
  position: sticky;
  bottom: 0;
  margin-top: 12px;
  padding: 12px 16px;
  background: #fff;
  border: 1px solid #f0f0f0;
  border-radius: 8px;
  box-shadow: 0 -2px 8px rgba(0, 0, 0, 0.04);
  z-index: 2;
}

@media (max-width: 900px) {
  .training-subsidy-declare-page .subsidy-material-kit-layout {
    grid-template-columns: 1fr;
  }

  .training-subsidy-declare-page .subsidy-stat-row {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
/* 对齐 yun_shang classMembers.vue / 班级人员截图 */
.training-class-people-page {
  padding: 20px;
}

.training-class-people-page .search-filter-bar {
  margin-bottom: 0;
}

.training-class-people-page .filter-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.training-class-people-page .filter-actions .filter-select {
  width: 200px;
  min-width: 200px;
  flex: 0 0 200px;
}

.training-class-people-page .filter-actions .filter-keyword {
  width: 260px;
  min-width: 260px;
  flex: 0 0 260px;
}

.training-class-people-page .class-people-table {
  margin-top: 4px;
}

.training-class-people-page .class-people-table .class-wrap-cell {
  white-space: normal !important;
  word-break: break-word;
  overflow-wrap: anywhere;
  line-height: 1.5;
}

.training-class-people-page .ant-table-thead > tr > th {
  background: #f8f9fa !important;
  color: #909399;
  font-weight: 500;
}

.training-class-people-page .class-people-pagination {
  margin-top: 16px;
  display: flex;
  justify-content: flex-end;
}

.training-class-people-page .class-row-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  line-height: 1.5;
}

.training-class-people-page .class-row-actions-line {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 0 12px;
}

.training-class-people-page .class-action-link {
  padding: 0;
  border: none;
  background: transparent;
  color: #409eff;
  font-size: 14px;
  line-height: 1.5;
  cursor: pointer;
}

.training-class-people-page .class-action-link:hover {
  color: #66b1ff;
}

.training-class-people-page .class-action-link-danger {
  color: #ff7875;
}

.training-class-people-page .class-action-link-danger:hover {
  color: #ff9c99;
}

.training-class-people-page .link-action {
  color: #409eff;
  padding: 0;
}

.training-class-people-page .link-action-danger {
  color: #ff7875;
  padding: 0;
}

/* 学员列表证件照 — 对齐 yun_shang classMembers.vue 120×168 */
.training-class-people-page .student-id-photo {
  width: 120px;
  height: 168px;
  object-fit: cover;
  display: block;
  margin: 0 auto;
}

.training-class-people-page .mar-b10 {
  margin-bottom: 10px;
}

.training-class-people-page .mar-r20 {
  margin-right: 20px;
}

/* 学员列表弹窗 — 对齐截图 */
.class-student-list-modal .ant-modal-header {
  margin-bottom: 0;
}

.class-student-list-modal .student-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}

.class-student-list-modal .student-toolbar-btn {
  height: 32px;
  padding: 0 15px;
  font-size: 14px;
  color: #606266;
  background: #fff;
  border: 1px solid #dcdfe6;
  border-radius: 4px;
  box-shadow: none;
}

.class-student-list-modal .student-toolbar-btn:hover {
  color: #409eff;
  border-color: #c6e2ff;
  background: #ecf5ff;
}

.class-student-list-modal .student-toolbar-btn.ant-btn-dangerous {
  color: #ff4d4f;
  border-color: #ffccc7;
}

.class-student-list-modal .student-toolbar-btn.ant-btn-dangerous:hover {
  color: #fff;
  border-color: #ff4d4f;
  background: #ff4d4f;
}

.class-student-list-modal .student-toolbar-btn:disabled,
.class-student-list-modal .student-toolbar-btn.ant-btn-dangerous:disabled {
  color: #c0c4cc;
  background: #fff;
  border-color: #ebeef5;
}

.class-student-list-modal .class-student-table-scroll {
  width: 100%;
}

.class-student-list-modal .class-student-table .ant-table-content > table {
  min-width: 1060px;
}

.class-student-list-modal .class-student-table .ant-table {
  font-size: 14px;
  color: #606266;
}

.class-student-list-modal .class-student-table .ant-table-thead > tr > th {
  background: #f8f9fa !important;
  color: #909399;
  font-weight: 500;
  padding: 12px 8px;
  border-bottom: 1px solid #ebeef5 !important;
  border-inline-end: 1px solid #ebeef5 !important;
}

.class-student-list-modal .class-student-table .ant-table-tbody > tr > td {
  padding: 12px 8px;
  border-bottom: 1px solid #ebeef5 !important;
  border-inline-end: 1px solid #ebeef5 !important;
  vertical-align: middle;
}

.class-student-list-modal .class-student-table .ant-table-tbody > tr:hover > td {
  background: #f5f7fa !important;
}

.class-student-list-modal .class-student-table .ant-table-selection-column {
  padding-inline: 12px !important;
}

.class-student-list-modal .student-photo-cell {
  width: 72px;
  min-height: 96px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
  padding: 4px 0;
}

.class-student-list-modal .student-id-photo {
  width: 72px;
  height: 96px;
  object-fit: cover;
  display: block;
  border-radius: 2px;
}

.class-student-list-modal .student-row-actions {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
}

.class-student-list-modal .student-action-link {
  padding: 0;
  border: none;
  background: transparent;
  color: #409eff;
  font-size: 14px;
  line-height: 1.5;
  cursor: pointer;
}

.class-student-list-modal .student-action-link:hover {
  color: #66b1ff;
}

.class-student-list-modal .student-action-link-danger {
  color: #ff7875;
}

.class-student-list-modal .student-action-link-danger:hover {
  color: #ff9c99;
}

.class-student-list-modal .mar-b10 {
  margin-bottom: 10px;
}

.class-student-list-modal .student-pagination {
  margin-top: 16px;
  display: flex;
  justify-content: flex-end;
}

.class-student-list-modal .student-pagination .ant-pagination-total-text {
  color: #606266;
  font-size: 14px;
}

/* 教务人员 / 负责人弹窗 — 对齐截图 */
.class-staff-modal .ant-modal-header {
  margin-bottom: 0;
}

.class-staff-modal .staff-toolbar {
  margin-bottom: 12px;
}

.class-staff-modal .staff-toolbar-btn {
  height: 32px;
  padding: 0 15px;
  font-size: 14px;
  color: #606266;
  background: #fff;
  border: 1px solid #dcdfe6;
  border-radius: 4px;
  box-shadow: none;
}

.class-staff-modal .staff-toolbar-btn:hover {
  color: #409eff;
  border-color: #c6e2ff;
  background: #ecf5ff;
}

.class-staff-modal .class-staff-table .ant-table {
  font-size: 14px;
  color: #606266;
}

.class-staff-modal .class-staff-table .ant-table-thead > tr > th {
  background: #f8f9fa !important;
  color: #909399;
  font-weight: 500;
  padding: 12px 8px;
  border-bottom: 1px solid #ebeef5 !important;
}

.class-staff-modal .class-staff-table .ant-table-tbody > tr > td {
  padding: 12px 8px;
  border-bottom: 1px solid #ebeef5 !important;
  vertical-align: middle;
}

.class-staff-modal .class-staff-table .ant-table-tbody > tr:hover > td {
  background: #f5f7fa !important;
}

.class-staff-modal .class-staff-table .ant-empty-description {
  color: #909399;
}

.class-staff-modal .staff-row-actions {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
}

.class-staff-modal .staff-action-link {
  padding: 0;
  border: none;
  background: transparent;
  color: #409eff;
  font-size: 14px;
  line-height: 1.5;
  cursor: pointer;
}

.class-staff-modal .staff-action-link:hover {
  color: #66b1ff;
}

.class-staff-modal .staff-action-link-danger {
  color: #ff7875;
}

.class-staff-modal .staff-action-link-danger:hover {
  color: #ff9c99;
}

.class-staff-modal .staff-import-actions {
  margin-bottom: 12px;
}

.training-class-people-page .idcard-import-textarea {
  max-width: 480px;
  margin-right: 20px;
}

.training-class-people-page .idcard-import-actions {
  margin-top: 20px;
}

.training-class-people-page .kcbiao-upload-row {
  display: flex;
  align-items: center;
  gap: 12px;
  width: 100%;
}

.training-class-people-page .file-preview-container iframe {
  border: none;
}

.training-class-people-page .bg-ff {
  background-color: #fff;
}
/* 报名人员编辑弹窗 — 对齐 information.vue L199-461 */
.people-edit-modal .ant-modal-body {
  padding-top: 12px;
}

.people-edit-modal-body {
  max-height: 600px;
  overflow-y: auto;
}

.people-edit-section-title {
  height: 30px;
  line-height: 30px;
  background-color: #626262;
  color: #fff;
  padding-left: 10px;
  margin-bottom: 10px;
}

.people-edit-row {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}

.people-edit-fields {
  flex: 1;
  min-width: 320px;
}

.people-edit-images {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: flex-start;
}

.people-edit-image-block {
  padding: 0 12px;
}

.people-edit-image-label {
  margin-bottom: 8px;
}

.people-edit-image-box {
  border: 1px solid #ddd;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  background: #fafafa;
  position: relative;
}

.people-edit-image-box.id-card {
  width: 243px;
  height: 153px;
}

.people-edit-image-box.photo {
  width: 120px;
  height: 168px;
}

.people-edit-image-box.contract {
  width: 243px;
  height: 353px;
}

.people-edit-image-box-editable {
  cursor: pointer;
}

.people-edit-image-box-editable:hover .people-edit-image-mask,
.people-edit-image-box-editable.is-uploading .people-edit-image-mask {
  opacity: 1;
}

.people-edit-image-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;
  color: #999;
  font-size: 12px;
}

.people-edit-image-mask {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.45);
  color: #fff;
  font-size: 13px;
  opacity: 0;
  transition: opacity 0.2s;
  pointer-events: none;
}

.people-edit-images .ant-upload,
.people-edit-contract-row .ant-upload,
.people-edit-cert-row .ant-upload {
  display: block;
}

.people-edit-image-box .ant-image,
.people-edit-image-box img {
  max-width: 100%;
  max-height: 100%;
  object-fit: fill;
}

.people-edit-status-row {
  display: flex;
  flex-wrap: wrap;
  gap: 24px;
}

.people-edit-modal .people-input,
.people-edit-modal .ant-select.people-input {
  width: 400px;
  max-width: 100%;
}

.people-edit-modal .ant-form-item-label {
  width: 160px;
  flex: 0 0 160px;
}

.people-edit-work-exp-item {
  margin-bottom: 8px;
  padding: 8px 12px;
  background: #fafafa;
  border-radius: 4px;
  line-height: 1.6;
}

.people-edit-contract-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.people-edit-cert-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 10px;
}

.people-edit-footer {
  text-align: right;
  margin-top: 10px;
  padding-top: 12px;
  border-top: 1px solid #f0f0f0;
}
/* 对齐 yun_shang company/information.vue */
.training-list-container {
  padding: 20px;
}

.training-list-container .top-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 15px;
}

.training-list-container .pagination-container {
  margin-top: 20px;
  text-align: right;
  display: flex;
  justify-content: flex-end;
}

.training-list-container .ant-table-thead > tr > th {
  background: #f8f9fa !important;
}

.training-list-container .text-C {
  text-align: center;
}

.training-list-container .tools {
  margin-bottom: 16px;
}

.training-list-container .status-tag {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 12px;
  font-weight: 500;
}

.training-list-container .status-tag.approved,
.training-list-container .status-tag.passed,
.training-list-container .status-tag.status-1 {
  background-color: #f0f7ea;
  color: #52c41a;
}

.training-list-container .status-tag.pending,
.training-list-container .status-tag.status-0 {
  background-color: #fffbe6;
  color: #faad14;
}

.training-list-container .status-tag.rejected,
.training-list-container .status-tag.failed,
.training-list-container .status-tag.status-2 {
  background-color: #fff2f0;
  color: #f5222d;
}

.training-list-container .operate-btn {
  padding: 0 6px;
  color: #1890ff;
}

.training-list-container .operate-btn-danger {
  color: #f5222d !important;
}

.training-list-container .cover-table-cell {
  width: 60px;
  height: 40px;
  line-height: 0;
}

.training-list-container .cover-table-thumb {
  width: 60px;
  height: 40px;
  display: block;
  object-fit: cover;
  border-radius: 2px;
}

.training-list-container .cover-uploader .cover {
  width: 178px;
  height: 178px;
  display: block;
  object-fit: cover;
}

.training-list-container .cover-uploader {
  border: 1px dashed #ccc;
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  display: inline-block;
}

.training-list-container .cover-uploader:hover {
  border-color: #409eff;
}

.training-list-container .cover-uploader-icon {
  font-size: 28px;
  color: #8c939d;
  width: 178px;
  height: 178px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.training-list-container .people-input {
  width: 400px;
}

.training-list-container .people-search-row {
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: wrap;
  gap: 0;
}

/* Modal 通过 portal 挂到 body，样式不能依赖 .training-list-container */
.people-modal-body .people-search-row {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  flex-wrap: nowrap;
  gap: 12px;
  margin-bottom: 10px;
}

.people-modal-body .people-search-row .people-search-input,
.people-modal-body .people-search-row .people-search-input.ant-input-affix-wrapper {
  width: 200px;
  flex: 0 0 200px;
}

.people-modal-body .people-search-row .people-search-status,
.people-modal-body .people-search-row .people-search-status.ant-select {
  width: 160px;
  flex: 0 0 160px;
}

.people-modal-body .tools {
  margin-bottom: 16px;
}

.training-list-container .people-search-row .ant-input-affix-wrapper,
.training-list-container .people-search-row .ant-input {
  width: 200px;
  margin-right: 20px;
}

.training-list-container .people-search-row .ant-select {
  width: 200px;
  flex: 0 0 auto;
}

.training-list-container .sign-up-form .ant-form-item-label {
  width: 120px;
  flex: 0 0 120px;
}

.training-list-container .sign-up-form .ant-select,
.training-list-container .sign-up-form .ant-input {
  max-width: 400px;
}

.training-list-container .qrcode-row {
  display: flex;
  justify-content: space-between;
}

/* 报名计划编辑弹窗（portal 渲染，不依赖 .training-list-container） */
.sign-up-form .cover-uploader .cover {
  width: 178px;
  height: 178px;
  display: block;
  object-fit: cover;
}

.sign-up-form .cover-uploader {
  border: 1px dashed #ccc;
  border-radius: 6px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
  display: inline-block;
}

.sign-up-form .cover-uploader:hover {
  border-color: #409eff;
}

.sign-up-form .cover-uploader-icon {
  font-size: 28px;
  color: #8c939d;
  width: 178px;
  height: 178px;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* 二维码弹窗（portal 渲染，不依赖 .training-list-container） */
.qrcode-modal-body .qrcode-row {
  display: flex;
  flex-direction: row;
  justify-content: center;
  align-items: flex-start;
  gap: 32px;
}

.qrcode-modal-body .qrcode-col {
  text-align: center;
  flex: 0 0 auto;
}

.qrcode-modal-body .qrcode-title {
  margin-bottom: 16px;
  text-align: center;
}

.qrcode-modal-body .text-C {
  text-align: center;
  margin-top: 8px;
}

.qrcode-modal-body .wx-qrcode-placeholder {
  width: 120px;
  height: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
}

.training-list-container .qrcode-col {
  text-align: center;
}

.training-list-container .wx-qrcode-placeholder {
  width: 120px;
  height: 120px;
  line-height: 120px;
  text-align: center;
  margin: 0 auto;
}

.training-list-container .people-modal-body {
  background-color: #fff;
}

.training-list-container .tools .ant-btn {
  margin-right: 0;
}

.training-list-container .people-status-text {
  color: rgba(0, 0, 0, 0.88);
}
.training-class-division-page {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.training-class-division-page .division-steps-card .ant-card-body {
  padding: 16px 20px 8px;
}

.training-class-division-page .division-toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
}

.training-class-division-page .division-plan-hint {
  margin-bottom: 16px;
}

.training-class-division-page .division-context {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
  padding: 14px 16px;
  border: 1px solid #e8edf5;
  border-radius: 8px;
  background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
}

.training-class-division-page .division-context-main {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.training-class-division-page .division-context-title {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  color: #1f2937;
}

.training-class-division-page .division-context-meta {
  color: #64748b;
  font-size: 13px;
}

.training-class-division-page .division-config-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
  gap: 12px 16px;
  margin-bottom: 8px;
}

.training-class-division-page .division-config-grid .ant-form-item {
  margin-bottom: 0;
}

.training-class-division-page .division-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin: 16px 0;
  padding-top: 4px;
}

.training-class-division-page .division-result-stats {
  margin-bottom: 16px;
}

.training-class-division-page .division-result-stats .ant-statistic-content {
  font-size: 22px;
}

.training-class-division-page .division-fill {
  display: flex;
  align-items: center;
  gap: 8px;
}

.training-class-division-page .division-fill .ant-progress {
  flex: 1;
  margin: 0;
  max-width: 120px;
}

.training-class-division-page .ant-table-tbody > tr.division-row-ready:hover > td {
  background: #f0f9ff;
}

@media (max-width: 768px) {
  .training-class-division-page .division-config-grid {
    grid-template-columns: 1fr 1fr;
  }
}
/* 对齐 yun_shang classApplication.vue */
.training-class-declare-page {
  padding: 20px;
}

.training-class-declare-page .filter-bar {
  margin-top: 30px;
}

.training-class-declare-page .table-wrap {
  margin-top: 10px;
}

.training-class-declare-page .pagination-bar {
  margin-top: 20px;
  text-align: right;
  display: flex;
  justify-content: flex-end;
}

.training-class-declare-page .ant-table-thead > tr > th {
  background: #f8f9fa !important;
}

.training-class-declare-page .mar-b10 {
  margin-bottom: 10px;
}

.training-class-declare-page .mar-r10 {
  margin-right: 10px;
}

.training-class-declare-page .link-action {
  color: #409eff;
  padding: 0;
}

.training-class-declare-page .upload-demos {
  width: 100%;
}

.training-class-declare-page .upload-demos .ant-upload-drag {
  height: 160px;
  padding: 0;
}

.training-class-declare-page .file-preview-container {
  min-height: 400px;
}

.training-class-declare-page .file-preview-container iframe {
  width: 100%;
  height: 600px;
  border: none;
}
/* 对齐 yun_shang requirementsManagement.vue */
.requirements-management-page {
  padding: 20px;
}

.requirements-management-page .search-filter-bar {
  margin-bottom: 0;
}

.requirements-management-page .filter-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  align-items: center;
}

.requirements-management-page .filter-actions .filter-select {
  min-width: 200px;
}

.requirements-management-page .filter-actions .tab-btn-spacer {
  margin-left: 4px;
}

/* table */
.requirements-management-page .requirements-table {
  margin-top: 4px;
}

.requirements-management-page .ant-table-thead > tr > th {
  background: #f8f9fa !important;
}

/* pagination */
.requirements-management-page .requirements-pagination {
  margin-top: 16px;
  display: flex;
  justify-content: flex-end;
}

/* modal form */
.requirements-management-page .convert-form {
  padding-top: 8px;
}
.enterprise-demand-page {
  padding: 16px;
  background: #fff;
  min-height: 100%;
}

.enterprise-demand-toolbar {
  margin-bottom: 12px;
}

.enterprise-demand-pagination {
  margin-top: 12px;
  display: flex;
  justify-content: flex-end;
}

.program-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-bottom: 12px;
}

.program-body .mar-t10 {
  margin-top: 10px;
}

.enterprise-demand-page .solution-doc-preview {
  margin-top: 12px;
  min-height: 420px;
  border: 1px solid #f0f0f0;
  border-radius: 4px;
  padding: 8px;
  background: #fafafa;
}

.enterprise-demand-page .solution-doc-preview__iframe {
  width: 100%;
  height: 65vh;
  min-height: 420px;
  border: 0;
  background: #fff;
}

.enterprise-demand-page .solution-doc-preview__docx {
  background: #fff;
}

.enterprise-demand-page .solution-doc-preview .docx-wrapper {
  background: #fff;
  padding: 12px;
}
.enterprise-talent-demand-page {
  padding: 16px;
  background: #fff;
  min-height: 100%;
}

.enterprise-talent-demand-toolbar {
  margin-bottom: 12px;
}

.enterprise-talent-demand-pagination {
  margin-top: 12px;
  display: flex;
  justify-content: flex-end;
}
/* 对齐 yun_shang trainingProgram.vue */
.training-program-page {
  padding: 20px;
}

.training-program-page .ant-table-thead > tr > th {
  background: #f8f9fa !important;
}

.training-program-page .pagination-bar {
  margin-top: 20px;
  text-align: right;
  display: flex;
  justify-content: flex-end;
}

.training-program-page .mar-t10 {
  margin-top: 10px;
}

.training-program-page .mar-l5 {
  margin-left: 5px;
}

.training-program-page .mar-l20 {
  margin-left: 20px;
}

.training-program-page .icon-add {
  display: inline-flex;
  align-items: center;
  border: 1px solid #e0e0e0;
  border-radius: 6px;
  font-size: 12px;
  padding: 2px 8px;
  cursor: pointer;
  user-select: none;
}

.training-program-page .icon-add:hover {
  border-color: #409eff;
  color: #409eff;
}

.training-program-page .upload-demos {
  width: 100%;
}

.training-program-page .upload-demos .ant-upload-drag {
  height: 160px;
  padding: 0;
}

.training-program-page .upload-tip-path {
  margin-left: 20px;
  color: rgba(0, 0, 0, 0.45);
  word-break: break-all;
}

.training-program-page .office-box {
  height: 300px;
  overflow-y: auto;
  border: 1px solid #e0e0e0;
}

.training-program-page .solution-doc-preview {
  margin-top: 10px;
  min-height: 300px;
  max-height: 70vh;
  overflow: auto;
  border: 1px solid #e0e0e0;
  background: #525659;
  padding: 12px;
}

.training-program-page .solution-doc-preview__iframe {
  width: 100%;
  min-height: 300px;
  height: 70vh;
  border: none;
  background: #fff;
}

.training-program-page .solution-doc-preview__docx {
  background: #525659;
}

.training-program-page .solution-doc-preview .docx-wrapper {
  margin: 0 auto;
  background: #fff;
  box-shadow: 0 0 8px rgba(0, 0, 0, 0.15);
}

.training-program-page .office-box iframe {
  width: 100%;
  height: 100%;
  border: none;
}

.training-program-page .link-view {
  color: #409eff;
  padding: 0;
}

.training-program-page .link-edit {
  color: #409eff;
  padding: 0;
}

.training-program-page .link-delete {
  color: #ff7875;
  padding: 0;
}

.training-program-page .budget-table {
  margin-top: 10px;
}
.personnel-cert-import-panel .id-card-mask {
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 12px;
  color: #595959;
}
.data-panel-page {
  padding: 24px 20px 48px;
  max-width: 1600px;
  margin: 0 auto;
}

/* KPI grid responsive */
.dp-kpi-grid {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 16px;
  margin-bottom: 28px;
}
@media (max-width: 1400px) { .dp-kpi-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 768px)  { .dp-kpi-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 480px)  { .dp-kpi-grid { grid-template-columns: 1fr; } }

/* KPI card hover */
.dp-kpi-card {
  background: #fff;
  border-radius: 16px;
  padding: 20px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  transition: transform 0.2s, box-shadow 0.2s;
  border: 1px solid transparent;
}
.dp-kpi-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 32px rgba(42, 109, 255, 0.12);
}

/* ===== Sticky Navigation Bar ===== */
.dp-nav-bar {
  position: sticky;
  top: 0;
  z-index: 99;
  display: flex;
  gap: 4px;
  padding: 12px 16px;
  margin-bottom: 28px;
  background: rgba(255, 255, 255, 0.85);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-radius: 16px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.08);
  border: 1px solid #e2e8f0;
}

.dp-nav-btn {
  flex: 1;
  min-width: 80px;
  padding: 12px 20px;
  border: none;
  border-radius: 12px;
  background: transparent;
  font-family: inherit;
  font-size: 14px;
  font-weight: 500;
  color: #64748b;
  cursor: pointer;
  transition: all 0.2s ease;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  white-space: nowrap;
}

.dp-nav-btn:hover {
  background: #f0f6ff;
  color: #2A6DFF;
}

.dp-nav-btn.active {
  background: #2A6DFF;
  color: #fff;
  font-weight: 600;
  box-shadow: 0 4px 16px rgba(42, 109, 255, 0.35);
}

@media (max-width: 768px) {
  .dp-nav-bar {
    flex-wrap: wrap;
    gap: 6px;
    padding: 8px 10px;
    border-radius: 12px;
  }
  .dp-nav-btn {
    flex: 1 1 calc(50% - 6px);
    min-width: 0;
    padding: 10px 12px;
    font-size: 13px;
  }
}

/* Section */
.dp-section {
  background: #fff;
  border-radius: 20px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  padding: 24px 28px;
  margin-bottom: 28px;
  border: 1px solid #e2e8f0;
}

/* Grid responsive */
.dp-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.dp-grid-3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
.dp-grid-23 { display: grid; grid-template-columns: 2fr 1fr; gap: 20px; }
.dp-grid-32 { display: grid; grid-template-columns: 1fr 1.2fr; gap: 20px; }
@media (max-width: 1100px) {
  .dp-grid-2, .dp-grid-3, .dp-grid-23, .dp-grid-32 { grid-template-columns: 1fr; }
}

/* Resource grid responsive */
.dp-resource-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: 16px;
}
@media (max-width: 1200px) { .dp-resource-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px)  { .dp-resource-grid { grid-template-columns: 1fr; } }

/* Resource card hover */
.dp-res-card {
  background: #f5f7fa;
  border-radius: 14px;
  padding: 20px;
  transition: transform 0.2s;
}
.dp-res-card:hover {
  transform: translateY(-2px);
}

/* Sub card */
.dp-sub-card {
  background: #f5f7fa;
  border-radius: 14px;
  padding: 18px;
  height: 100%;
}

/* Project card hover */
.dp-project-card {
  background: #f5f7fa;
  border-radius: 14px;
  padding: 20px;
  margin-bottom: 16px;
  border: 1px solid #e2e8f0;
  transition: box-shadow 0.2s;
}
.dp-project-card:hover {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.06);
}
/* Tab 按钮 */
.tp-tab-btn {
  padding: 12px 28px;
  border: none;
  background: #fff;
  border-radius: 12px;
  font-family: inherit;
  font-size: 14px;
  font-weight: 500;
  color: #64748b;
  cursor: pointer;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  transition: all 0.2s;
}

.tp-tab-btn:hover {
  color: #2A6DFF;
}

.tp-tab-btn.active {
  background: #2A6DFF;
  color: #fff;
  box-shadow: 0 4px 16px rgba(42, 109, 255, 0.35);
}

/* 入口卡片 hover 效果 */
.tp-entry-card:hover {
  border-color: #2A6DFF !important;
  box-shadow: 0 12px 40px rgba(42, 109, 255, 0.12);
  transform: translateY(-2px);
}

/* 响应式 */
@media (max-width: 768px) {
  .tp-tab-btn {
    flex: 1;
    padding: 10px 16px;
    font-size: 13px;
    text-align: center;
  }
}
/* ============================================================
   任务档案页 - 复刻原型：任务档案.html
   ============================================================ */

.task-archives-page {
  --ta-primary: #2A6DFF;
  --ta-primary-hover: #1E5AE8;
  --ta-primary-light: #E8F0FF;
  --ta-bg: #F5F7FC;
  --ta-card: #FFFFFF;
  --ta-text: #1A2332;
  --ta-text-secondary: #64748B;
  --ta-border: #E2E8F0;
  --ta-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  --ta-radius-card: 20px;
  --ta-radius-btn: 12px;
  --ta-danger: #EF4444;
  min-height: 100vh;
  background: var(--ta-bg);
  color: var(--ta-text);
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

.ta-topbar {
  background: var(--ta-card);
  box-shadow: var(--ta-shadow);
  padding: 16px 32px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: sticky;
  top: 0;
  z-index: 50;
}

.ta-topbar-left {
  display: flex;
  align-items: center;
  gap: 16px;
}

.ta-back-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--ta-text-secondary);
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
  padding: 8px 14px;
  border-radius: var(--ta-radius-btn);
  cursor: pointer;
  transition: all 0.2s;
}

.ta-back-link:hover {
  background: var(--ta-primary-light);
  color: var(--ta-primary);
}

.ta-title {
  font-size: 20px;
  font-weight: 700;
  margin: 0;
}

.ta-sub {
  font-size: 13px;
  color: var(--ta-text-secondary);
  font-weight: 400;
}

.ta-topbar-actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
}

.ta-page {
  max-width: 1280px;
  margin: 0 auto;
  padding: 28px 24px 64px;
}

.ta-stat-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 16px;
  margin-bottom: 24px;
}

.ta-stat-card {
  background: var(--ta-card);
  border-radius: var(--ta-radius-card);
  padding: 20px 22px;
  box-shadow: var(--ta-shadow);
  cursor: pointer;
  border: 2px solid transparent;
  transition: all 0.2s;
}

.ta-stat-card:hover,
.ta-stat-card.active {
  border-color: var(--ta-primary);
  background: var(--ta-primary-light);
}

.ta-stat-val {
  font-size: 26px;
  font-weight: 700;
  color: var(--ta-primary);
}

.ta-stat-lbl {
  font-size: 13px;
  color: var(--ta-text-secondary);
  margin-top: 4px;
}

.ta-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  margin-bottom: 20px;
}

.ta-search-box {
  flex: 1;
  min-width: 200px;
  position: relative;
}

.ta-search-box .anticon {
  position: absolute;
  left: 14px;
  top: 50%;
  transform: translateY(-50%);
  color: var(--ta-text-secondary);
}

.ta-search-box input,
.ta-filter-select {
  border: 1px solid var(--ta-border);
  border-radius: var(--ta-radius-btn);
  font-family: inherit;
  font-size: 14px;
  outline: none;
  background: var(--ta-card);
}

.ta-search-box input {
  width: 100%;
  padding: 11px 16px 11px 40px;
}

.ta-filter-select {
  min-width: 120px;
  padding: 11px 14px;
}

.ta-btn {
  padding: 11px 22px;
  border: none;
  border-radius: var(--ta-radius-btn);
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  transition: all 0.2s;
  text-decoration: none;
  white-space: nowrap;
}

.ta-btn-primary {
  background: var(--ta-primary);
  color: #fff;
}

.ta-btn-primary:hover {
  background: var(--ta-primary-hover);
}

.ta-btn-secondary {
  background: var(--ta-card);
  color: var(--ta-text);
  border: 1px solid var(--ta-border);
}

.ta-btn-secondary:hover {
  background: var(--ta-bg);
}

.ta-card {
  background: var(--ta-card);
  border-radius: var(--ta-radius-card);
  box-shadow: var(--ta-shadow);
  overflow: hidden;
}

.ta-table-wrap {
  overflow-x: auto;
}

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

.ta-table th {
  text-align: left;
  padding: 14px 16px;
  font-weight: 600;
  color: var(--ta-text-secondary);
  font-size: 12px;
  background: #FAFBFD;
  border-bottom: 2px solid var(--ta-border);
  white-space: nowrap;
}

.ta-table td {
  padding: 16px;
  border-bottom: 1px solid var(--ta-border);
  vertical-align: middle;
}

.ta-table tr:hover td {
  background: rgba(42, 109, 255, 0.02);
}

.ta-table tr.clickable {
  cursor: pointer;
}

.task-name {
  font-weight: 500;
  color: var(--ta-text);
}

.task-code {
  font-size: 11px;
  color: var(--ta-text-secondary);
  margin-top: 2px;
}

.priority-badge,
.status-badge {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 20px;
  font-size: 12px;
  font-weight: 500;
  white-space: nowrap;
}

.priority-high { background: #FEE2E2; color: #DC2626; }
.priority-medium { background: #FEF3C7; color: #D97706; }
.priority-low { background: #D1FAE5; color: #059669; }
.status-active { background: #D1FAE5; color: #059669; }
.status-draft { background: #F1F5F9; color: #64748B; }
.status-pending { background: #FEF3C7; color: #D97706; }
.status-done { background: #DBEAFE; color: #2563EB; }

.overdue-text {
  color: var(--ta-danger);
  font-weight: 500;
}

.overdue-text .anticon {
  margin-left: 6px;
  color: var(--ta-danger);
}

.progress-wrap {
  min-width: 80px;
}

.progress-text {
  font-size: 11px;
  color: var(--ta-text-secondary);
}

.progress-bar {
  height: 6px;
  background: var(--ta-bg);
  border-radius: 3px;
  overflow: hidden;
  margin-top: 4px;
}

.progress-fill {
  height: 100%;
  background: var(--ta-primary);
  border-radius: 3px;
}

.action-btns {
  display: flex;
  gap: 6px;
  flex-wrap: nowrap;
  white-space: nowrap;
}

.action-btn {
  width: 34px;
  height: 34px;
  flex: 0 0 34px;
  border: none;
  border-radius: 8px;
  background: var(--ta-bg);
  color: var(--ta-text-secondary);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  transition: all 0.2s;
}

.action-btn:hover {
  background: var(--ta-primary-light);
  color: var(--ta-primary);
}

.action-btn.delete:hover {
  background: #FEE2E2;
  color: var(--ta-danger);
}

.ta-empty {
  text-align: center;
  padding: 60px 24px;
  color: var(--ta-text-secondary);
}

.ta-empty .anticon {
  font-size: 48px;
  color: var(--ta-border);
  margin-bottom: 16px;
}

.ta-empty p {
  margin: 0 0 16px;
}

.ta-drawer-overlay {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.35);
  z-index: 200;
}

.ta-drawer-overlay.show {
  display: block;
}

.ta-drawer {
  position: fixed;
  top: 0;
  right: -480px;
  width: 100%;
  max-width: 460px;
  height: 100vh;
  background: var(--ta-card);
  box-shadow: -8px 0 40px rgba(0, 0, 0, 0.12);
  z-index: 201;
  transition: right 0.3s ease;
  overflow-y: auto;
}

.ta-drawer-overlay.show .ta-drawer {
  right: 0;
}

.ta-drawer-head {
  padding: 24px;
  border-bottom: 1px solid var(--ta-border);
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
}

.ta-drawer-head h2 {
  font-size: 18px;
  margin: 0 0 6px;
  padding-right: 16px;
}

.ta-drawer-close {
  border: none;
  background: var(--ta-bg);
  width: 36px;
  height: 36px;
  border-radius: 10px;
  cursor: pointer;
  color: var(--ta-text-secondary);
}

.ta-drawer-body {
  padding: 24px;
}

.ta-detail-section {
  margin-bottom: 24px;
}

.ta-detail-section h4 {
  font-size: 13px;
  color: var(--ta-text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin: 0 0 12px;
}

.ta-detail-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  font-size: 14px;
}

.ta-detail-item label {
  display: block;
  font-size: 12px;
  color: var(--ta-text-secondary);
  margin-bottom: 4px;
}

.ta-detail-item span {
  font-weight: 500;
}

.ta-detail-description {
  margin: 12px 0 0;
  font-size: 13px;
  color: var(--ta-text-secondary);
}

.ta-config-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.ta-config-tag {
  font-size: 12px;
  padding: 6px 12px;
  border-radius: 8px;
  background: var(--ta-bg);
}

.ta-config-tag.done {
  background: #D1FAE5;
  color: #059669;
}

.ta-drawer-actions {
  padding: 16px 24px 24px;
  display: flex;
  gap: 10px;
  border-top: 1px solid var(--ta-border);
}

@media (max-width: 768px) {
  .ta-topbar {
    padding: 14px 18px;
    align-items: flex-start;
    gap: 12px;
    flex-direction: column;
  }

  .ta-page {
    padding: 20px 16px 48px;
  }

  .ta-detail-grid {
    grid-template-columns: 1fr;
  }

  .ta-drawer {
    max-width: 100%;
  }
}
/* ============================================================
   培训流程页 - TrainingProcessPage.css
   ============================================================ */

.tp-page { max-width: 1280px; margin: 0 auto; padding: 28px 24px 64px; }

/* ---- header ---- */
.tp-header { margin-bottom: 28px; }
.tp-header h2 { font-size: 26px; font-weight: 700; margin-bottom: 6px; }
.tp-header p { color: #64748B; font-size: 14px; }

/* ---- steps nav ---- */
.tp-steps-nav {
  display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 28px;
  background: #fff; padding: 16px 20px; border-radius: 20px;
  box-shadow: 0 4px 24px rgba(42,109,255,.06);
}
.tp-step-item {
  flex: 1; min-width: 80px; text-align: center; padding: 12px 8px;
  font-size: 13px; font-weight: 500; color: #64748B; cursor: pointer;
  border-radius: 12px; transition: all 0.2s;
}
.tp-step-item:hover { background: #E8F0FF; color: #2A6DFF; }
.tp-step-item.active {
  background: #2A6DFF; color: #fff; box-shadow: 0 4px 12px rgba(42,109,255,.3);
}
.tp-step-num { display: block; font-size: 11px; opacity: 0.8; margin-bottom: 2px; }

/* ---- card ---- */
.tp-card {
  background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06);
  padding: 24px 28px;
}

/* ---- entry card ---- */
.tp-entry-card {
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  padding: 28px 32px;
  background: linear-gradient(135deg, #E8F0FF 0%, #fff 60%);
  border: 2px dashed rgba(42,109,255,.25);
  border-radius: 20px; text-decoration: none; color: inherit;
  transition: all 0.25s ease; cursor: pointer; margin-bottom: 24px;
}
.tp-entry-card:hover { border-color: #2A6DFF; box-shadow: 0 8px 32px rgba(42,109,255,.12); transform: translateY(-2px); }
.tp-entry-text h3 { font-size: 18px; font-weight: 700; color: #2A6DFF; margin-bottom: 6px; }
.tp-entry-text p { font-size: 13px; color: #64748B; max-width: 520px; }
.tp-entry-btn {
  flex-shrink: 0; padding: 14px 28px; background: #2A6DFF; color: #fff;
  border-radius: 12px; font-weight: 600; font-size: 14px;
  display: inline-flex; align-items: center; gap: 10px;
}

/* ---- desc ---- */
.tp-desc { font-size: 13px; color: #64748B; margin-bottom: 16px; }

/* ---- stat mini ---- */
.tp-stat-mini-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; }
.tp-stat-mini { background: #F5F7FC; border-radius: 14px; padding: 18px; text-align: center; }
.tp-stat-val { font-size: 26px; font-weight: 700; color: #2A6DFF; }
.tp-stat-lbl { font-size: 13px; color: #64748B; margin-top: 4px; }

/* ---- responsive ---- */
@media (max-width: 768px) {
  .tp-steps-nav { flex-direction: column; }
  .tp-step-item { min-width: 100%; }
}
/* ============================================================
   ProjectArchivesPage —— 对照原型 styles 原封不动照搬
   ============================================================ */

.pa-page { max-width: 1280px; margin: 0 auto; padding: 28px 24px 64px; }

/* ---- page-header（原型 .page-header lines 181-194） ---- */
.pa-page .page-header { margin-bottom: 28px; }
.pa-page .page-header h2 {
  font-size: 24px; font-weight: 700; color: #1A2332; margin-bottom: 8px;
}
.pa-page .page-header p {
  font-size: 14px; color: #64748B;
}

/* ---- archive-section-title（原型 .archive-section-title lines 828-837） ---- */
.archive-section-title {
  font-size: 15px; font-weight: 600; color: #1A2332;
  margin-bottom: 14px; display: flex; align-items: center; gap: 8px;
}
.archive-section-title .anticon { color: #2A6DFF; }

/* ---- archive-entry-list（原型 .archive-entry-list lines 947-948） ---- */
.archive-entry-list { display: flex; flex-direction: column; gap: 0; }
.archive-entry-list .pa-entry-card { margin-bottom: 16px; }

/* ---- archive-entry-list-compact（原型 .archive-entry-list-compact lines 949-954） ---- */
.archive-entry-list-compact {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
}
.archive-entry-list-compact .pa-entry-card { margin-bottom: 0; }

/* ---- pa-entry-card（原型 .create-task-entry lines 631-672） ---- */
.pa-entry-card {
  display: flex; align-items: center; justify-content: space-between; gap: 24px;
  padding: 28px 32px;
  background: linear-gradient(135deg, #E8F0FF 0%, #fff 60%);
  border: 2px dashed rgba(42, 109, 255, 0.25);
  border-radius: 20px; text-decoration: none; color: inherit;
  cursor: pointer; transition: all 0.25s ease;
}
.pa-entry-card:hover {
  border-color: #2A6DFF;
  box-shadow: 0 12px 40px rgba(42, 109, 255, 0.12);
  transform: translateY(-2px);
}
.pa-entry-card .entry-text h3 {
  font-size: 18px; font-weight: 700; color: #2A6DFF; margin-bottom: 6px;
}
.pa-entry-card .entry-text h3 .anticon { color: #2A6DFF; }
.pa-entry-card .entry-text p {
  font-size: 13px; color: #64748B; max-width: 520px; margin: 0;
}
.pa-entry-card .entry-btn {
  flex-shrink: 0; padding: 14px 28px; background: #2A6DFF; color: #fff;
  border-radius: 12px; font-weight: 600; font-size: 14px;
  display: inline-flex; align-items: center; gap: 10px; white-space: nowrap;
}

/* ---- pa-entry-card-sm（原型 .create-task-entry-sm lines 955-959） ---- */
.pa-entry-card-sm { padding: 18px 22px; }
.pa-entry-card-sm .entry-text h3 { font-size: 15px; margin-bottom: 0; }
.pa-entry-card-sm .entry-btn { padding: 10px 16px; font-size: 13px; }
/* ============================================================
   资料档案页 - MaterialArchivesPage.css
   ============================================================ */

/* ---- topbar ---- */
.ma-topbar {
  background: #fff;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  padding: 16px 32px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  position: sticky;
  top: 0;
  z-index: 50;
}
.ma-topbar-left {
  display: flex;
  align-items: center;
  gap: 16px;
}
.ma-back-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #64748B;
  text-decoration: none;
  font-size: 14px;
  font-weight: 500;
  padding: 8px 14px;
  border-radius: 12px;
  cursor: pointer;
  transition: all 0.2s;
}
.ma-back-link:hover { background: #E8F0FF; color: #2A6DFF; }
.ma-title { font-size: 20px; font-weight: 700; margin: 0; }
.ma-sub { font-size: 13px; color: #64748B; }
.ma-badge {
  font-size: 12px;
  padding: 6px 12px;
  background: #E8F0FF;
  color: #2A6DFF;
  border-radius: 20px;
  font-weight: 500;
}

/* ---- page ---- */
.ma-page { max-width: 1280px; margin: 0 auto; padding: 28px 24px 64px; }

/* ---- stat ---- */
.ma-stat-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 16px;
  margin-bottom: 24px;
}
.ma-stat-card {
  background: #fff;
  border-radius: 20px;
  padding: 20px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
}
.ma-stat-val {
  font-size: 26px;
  font-weight: 700;
  color: #2A6DFF;
}
.ma-stat-val.success { color: #10B981; }
.ma-stat-val.warn { color: #F59E0B; }
.ma-stat-lbl { font-size: 13px; color: #64748B; margin-top: 4px; }

/* ---- card ---- */
.ma-card {
  background: #fff;
  border-radius: 20px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  padding: 24px 28px;
  margin-bottom: 24px;
}
.ma-card-head {
  font-size: 16px;
  font-weight: 600;
  margin-bottom: 20px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
}
.ma-card-head-title { display: flex; align-items: center; gap: 10px; color: #2A6DFF; }

/* ---- filter ---- */
.ma-filter-bar { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin-bottom: 16px; }
.ma-filter-item { margin: 0; min-width: 140px; flex: 1; }
.ma-filter-item label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }

/* ---- project banner ---- */
.ma-project-banner {
  margin-top: 16px;
  padding: 16px 20px;
  background: #E8F0FF;
  border-radius: 12px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 12px 24px;
  font-size: 13px;
}
.ma-banner-item label { display: block; color: #64748B; font-size: 12px; margin-bottom: 4px; }

/* ---- toolbar ---- */
.ma-toolbar { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }

/* ---- status badges ---- */
.status-badge {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 500;
}
.st-done { background: #D1FAE5; color: #059669; }
.st-pending { background: #FEF3C7; color: #D97706; }
.st-draft { background: #F1F5F9; color: #64748B; }
.st-archived { background: #E8F0FF; color: #2A6DFF; }

/* ---- file icon ---- */
.file-icon {
  width: 36px;
  height: 36px;
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  margin-right: 10px;
}
.file-ppt { background: #FEE2E2; color: #DC2626; }
.file-pdf { background: #FEE2E2; color: #B91C1C; }
.file-doc { background: #DBEAFE; color: #2563EB; }
.file-cert { background: #D1FAE5; color: #059669; }
.file-xls { background: #D1FAE5; color: #047857; }

/* ---- ledger ---- */
.ma-ledger-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 12px;
}
.ma-ledger-item {
  padding: 16px;
  background: #F5F7FC;
  border-radius: 12px;
  font-size: 13px;
}
.ma-ledger-item label { display: block; color: #64748B; font-size: 12px; margin-bottom: 6px; }
.ma-ledger-item strong { font-size: 18px; color: #2A6DFF; }

/* ---- form group ---- */
.ma-form-group label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }

/* ---- approval ---- */
.ma-approval-track { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 16px; }
.approval-node {
  flex: 1;
  min-width: 120px;
  padding: 14px;
  border-radius: 12px;
  background: #F5F7FC;
  text-align: center;
  font-size: 13px;
}
.approval-node.done { background: #D1FAE5; color: #059669; }
.approval-node.active { background: #E8F0FF; color: #2A6DFF; font-weight: 600; }

.ma-archive-summary {
  margin-top: 20px;
  padding: 16px;
  background: #F5F7FC;
  border-radius: 12px;
  font-size: 14px;
}

/* ---- btn-success ---- */
.btn-success {
  background: #10B981;
  color: #fff;
  border-color: #10B981;
}
.btn-success:hover { background: #059669 !important; color: #fff !important; border-color: #059669 !important; }

/* ---- table tweaks ---- */
.ma-card .ant-table-thead > tr > th {
  background: #FAFBFD;
  color: #64748B;
  font-size: 12px;
  font-weight: 600;
}
/* ============================================================
   人才识别页 - TalentIdentificationPage.css
   ============================================================ */

/* ---- topbar ---- */
.ti-topbar {
  background: #fff;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  padding: 16px 32px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  position: sticky;
  top: 0;
  z-index: 50;
}
.ti-topbar-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.ti-back-link {
  display: inline-flex; align-items: center; gap: 8px;
  color: #64748B; text-decoration: none; font-size: 14px; font-weight: 500;
  padding: 8px 14px; border-radius: 10px; cursor: pointer;
}
.ti-back-link:hover { background: #E8F0FF; color: #2A6DFF; }
.ti-title { font-size: 20px; font-weight: 700; margin: 0; }
.ti-sub { font-size: 13px; color: #64748B; }
.ti-process-badge {
  font-size: 12px; padding: 6px 12px;
  background: #FFF7ED; color: #F18F01;
  border-radius: 20px; font-weight: 600;
}

/* ---- page ---- */
.ti-page { max-width: 1400px; margin: 0 auto; padding: 24px 24px 64px; }

/* ---- flow hint ---- */
.ti-flow-hint {
  padding: 14px 18px;
  background: #E8F0FF;
  border-radius: 10px;
  font-size: 13px;
  margin-bottom: 20px;
}
.ti-flow-hint strong { color: #2A6DFF; }

/* ---- stat row ---- */
.ti-stat-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 16px;
  margin-bottom: 24px;
}
@media (max-width: 900px) { .ti-stat-row { grid-template-columns: repeat(2, 1fr); } }
.ti-stat-card {
  background: #fff;
  border-radius: 16px;
  padding: 20px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  border-left: 4px solid #2A6DFF;
}
.ti-stat-card.warn { border-left-color: #F59E0B; }
.ti-stat-card.danger { border-left-color: #EF4444; }
.ti-stat-card.success { border-left-color: #10B981; }
.ti-stat-card.identify { border-left-color: #F18F01; }
.ti-stat-val { font-size: 28px; font-weight: 700; }
.ti-stat-val.red { color: #EF4444; }
.ti-stat-val.yellow { color: #F59E0B; }
.ti-stat-val.green { color: #10B981; }
.ti-stat-lbl { font-size: 13px; color: #64748B; margin-top: 6px; }

/* ---- card ---- */
.ti-card {
  background: #fff;
  border-radius: 16px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  padding: 24px;
  margin-bottom: 24px;
}

/* ---- toolbar ---- */
.ti-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 20px;
}
.ti-toolbar-left { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.ti-form-inline { display: flex; align-items: center; gap: 8px; font-size: 14px; }

/* ---- buttons ---- */
.btn-identify { background: #F18F01; color: #fff; border-color: #F18F01; }
.btn-identify:hover { background: #D97A01 !important; color: #fff !important; border-color: #D97A01 !important; }
.btn-identify:not(:hover) { background: #F18F01; color: #fff; border-color: #F18F01; }

/* ---- status badges ---- */
.status-badge {
  display: inline-block; padding: 4px 10px; border-radius: 6px;
  font-size: 12px; font-weight: 600;
}
.st-audited { background: #D1FAE5; color: #059669; }
.st-confirmed { background: #FEF3C7; color: #D97706; }
.st-pending { background: #FEE2E2; color: #DC2626; }

/* ---- actions ---- */
.ti-actions { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; }

/* ---- footer ---- */
.ti-footer-actions {
  display: flex; justify-content: flex-end; gap: 12px;
  margin-top: 24px; flex-wrap: wrap;
}

/* ---- detail ---- */
.ti-detail-header {
  display: flex; justify-content: space-between; align-items: center;
  margin-bottom: 20px; flex-wrap: wrap; gap: 12px;
}
.ti-detail-header h2 { font-size: 18px; font-weight: 700; margin: 0; }

/* ---- filter tabs ---- */
.ti-filter-tabs { display: flex; gap: 8px; margin-bottom: 16px; flex-wrap: wrap; }
.ti-filter-tab {
  padding: 8px 16px; border: 1px solid #E2E8F0; border-radius: 20px;
  background: #fff; font-size: 13px; cursor: pointer;
}
.ti-filter-tab.active { background: #F18F01; color: #fff; border-color: #F18F01; }

/* ---- form ---- */
.ti-form-group { margin-bottom: 16px; }
.ti-form-group label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }

/* ---- upload ---- */
.ti-upload-zone {
  border: 2px dashed #E2E8F0; border-radius: 10px;
  padding: 32px; text-align: center; cursor: pointer;
  transition: border-color 0.2s;
}
.ti-upload-zone:hover { border-color: #F18F01; background: #FFF7ED; }

.ti-file-preview {
  display: none; margin-top: 12px; padding: 12px;
  background: #F5F7FC; border-radius: 10px; font-size: 13px;
  justify-content: space-between; align-items: center;
}
.ti-file-preview.show { display: flex; }

/* ---- table ---- */
.ti-card .ant-table-thead > tr > th {
  background: #FAFBFD; color: #64748B; font-size: 12px; font-weight: 600;
}
/* ============================================================
   初步方案页 - PreliminaryPlanPage.css
   ============================================================ */

/* ---- topbar ---- */
.pp-topbar {
  background: #fff; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 16px 32px;
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  position: sticky; top: 0; z-index: 50;
}
.pp-topbar-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.pp-back-link {
  display: inline-flex; align-items: center; gap: 8px; color: #64748B;
  text-decoration: none; font-size: 14px; font-weight: 500; padding: 8px 14px; border-radius: 10px; cursor: pointer;
}
.pp-back-link:hover { background: #E8F0FF; color: #2A6DFF; }
.pp-title { font-size: 20px; font-weight: 700; margin: 0; }
.pp-sub { font-size: 13px; color: #64748B; }
.pp-process-badge {
  font-size: 12px; padding: 6px 12px; background: #EEF2FF; color: #6366F1; border-radius: 20px; font-weight: 600;
}

/* ---- page ---- */
.pp-page { max-width: 1280px; margin: 0 auto; padding: 24px 24px 64px; }

/* ---- flow hint ---- */
.pp-flow-hint {
  padding: 14px 18px; background: #E8F0FF; border-radius: 10px; font-size: 13px; margin-bottom: 20px; line-height: 1.6;
}
.pp-flow-hint strong { color: #2A6DFF; }

/* ---- stat ---- */
.pp-stat-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 24px; }
@media (max-width: 900px) { .pp-stat-row { grid-template-columns: repeat(2, 1fr); } }
.pp-stat-card {
  background: #fff; border-radius: 16px; padding: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); border-left: 4px solid #2A6DFF;
}
.pp-stat-card.plan { border-left-color: #6366F1; }
.pp-stat-card.warn { border-left-color: #F59E0B; }
.pp-stat-card.success { border-left-color: #10B981; }
.pp-stat-val { font-size: 26px; font-weight: 700; }
.pp-stat-lbl { font-size: 13px; color: #64748B; margin-top: 6px; }

/* ---- card ---- */
.pp-card { background: #fff; border-radius: 16px; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 24px; margin-bottom: 24px; }
.pp-card-head {
  font-size: 16px; font-weight: 600; margin-bottom: 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
}
.pp-card-head-title { display: flex; align-items: center; gap: 10px; color: #6366F1; }
.pp-hint { font-size: 12px; color: #64748B; font-weight: 400; }

/* ---- form ---- */
.pp-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.pp-form-grid .full { grid-column: 1 / -1; }
.pp-form-group label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }
.pp-form-group { margin-bottom: 0; }

/* ---- project banner ---- */
.pp-project-banner {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 16px; padding: 16px; background: #F5F7FC; border-radius: 10px; margin-top: 16px;
}
.pp-banner-item label { font-size: 11px; color: #64748B; display: block; }
.pp-banner-item strong { font-size: 14px; }

/* ---- empty ---- */
.pp-empty {
  text-align: center; padding: 64px 24px; color: #64748B;
  background: #fff; border-radius: 16px; box-shadow: 0 4px 24px rgba(42,109,255,.06);
}

/* ---- toolbar ---- */
.pp-toolbar { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }

/* ---- buttons ---- */
.btn-plan { background: #6366F1; color: #fff; border-color: #6366F1; }
.btn-plan:hover { background: #4F46E5 !important; color: #fff !important; border-color: #4F46E5 !important; }
.btn-plan:not(:hover) { background: #6366F1; color: #fff; border-color: #6366F1; }

/* ---- sub stats ---- */
.pp-sub-stat-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
.pp-sub-stat { background: #F5F7FC; padding: 14px; border-radius: 10px; text-align: center; }
.pp-sub-stat-v { font-size: 22px; font-weight: 700; color: #2A6DFF; }
.pp-sub-stat-l { font-size: 12px; color: #64748B; margin-top: 4px; }

/* ---- footer ---- */
.pp-footer-actions { display: flex; justify-content: flex-end; gap: 12px; flex-wrap: wrap; margin-top: 8px; }

/* ---- status ---- */
.st-draft { background: #E2E8F0; color: #475569; }

/* ---- table ---- */
.pp-card .ant-table-thead > tr > th { background: #FAFBFD; color: #64748B; font-size: 12px; font-weight: 600; }
/* ===== Topbar ===== */
.ct-topbar {
  background: #fff;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  padding: 16px 32px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  position: sticky;
  top: 0;
  z-index: 50;
}
.ct-topbar-left { display: flex; align-items: center; gap: 16px; }
.ct-back-link {
  display: inline-flex; align-items: center; gap: 8px;
  color: #64748b; text-decoration: none; font-size: 14px; font-weight: 500;
  padding: 8px 14px; border-radius: 12px; cursor: pointer; transition: all 0.2s;
}
.ct-back-link:hover { background: #E8F0FF; color: #2A6DFF; }
.ct-title { font-size: 20px; font-weight: 700; margin: 0; }
.ct-sub { font-size: 13px; color: #64748b; }
.ct-task-code { font-size: 12px; color: #64748b; }

/* ===== Page ===== */
.ct-page { max-width: 1100px; margin: 0 auto; padding: 32px 24px 64px; }
.ct-page.ct-page-wide { max-width: 1280px; }

/* ===== Steps Bar ===== */
.ct-steps-bar { display: flex; gap: 8px; margin-bottom: 28px; flex-wrap: wrap; }
.ct-step-pill {
  flex: 1; min-width: 140px; padding: 14px 16px;
  background: #fff; border-radius: 12px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  font-size: 13px; font-weight: 500; color: #64748b; cursor: pointer;
  border: 2px solid transparent; transition: all 0.2s;
  text-align: center; font-family: inherit;
}
.ct-step-pill.active { border-color: #2A6DFF; color: #2A6DFF; background: #E8F0FF; }
.ct-step-pill.done { color: #10B981; }
.ct-step-pill .num { font-size: 11px; display: block; opacity: 0.7; margin-bottom: 2px; }

/* ===== Section / Card ===== */
.ct-section { animation: ctFadeIn 0.3s ease; }
@keyframes ctFadeIn {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}
.ct-card { border-radius: 20px !important; margin-bottom: 24px; }

/* ===== Form Grid ===== */
.ct-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.ct-form-grid .full { grid-column: 1 / -1; }

/* ===== Config (Step 3) ===== */
.ct-config-header {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 16px; margin-bottom: 20px;
}
.ct-config-progress { flex: 1; min-width: 200px; }
.ct-config-progress-label {
  font-size: 13px; color: #64748b; margin-bottom: 8px;
  display: flex; justify-content: space-between;
}
.ct-config-layout { display: grid; grid-template-columns: 220px 1fr; gap: 20px; min-height: 520px; }

/* Sidebar */
.ct-config-sidebar {
  background: #fff; border-radius: 20px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  padding: 12px; position: sticky; top: 88px; align-self: start;
  max-height: calc(100vh - 120px); overflow-y: auto;
}
.ct-config-nav-group {
  font-size: 11px; font-weight: 600; color: #64748b;
  text-transform: uppercase; letter-spacing: 0.04em; padding: 12px 12px 6px;
}
.ct-config-nav-item {
  display: flex; align-items: center; gap: 10px; width: 100%;
  padding: 11px 12px; border: none; background: transparent;
  border-radius: 10px; font-family: inherit; font-size: 13px;
  font-weight: 500; color: #64748b; cursor: pointer;
  text-align: left; transition: all 0.2s;
}
.ct-config-nav-item:hover { background: #E8F0FF; color: #2A6DFF; }
.ct-config-nav-item.active { background: #E8F0FF; color: #2A6DFF; font-weight: 600; }
.ct-config-nav-item .nav-dot {
  width: 8px; height: 8px; border-radius: 50%;
  background: #e2e8f0; flex-shrink: 0;
}
.ct-config-nav-item.done .nav-dot { background: #10B981; }

/* Main panel */
.ct-config-main {
  background: #fff; border-radius: 20px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  padding: 28px 32px;
}
.ct-config-panel { animation: ctFadeIn 0.25s ease; }
.ct-config-panel-head { margin-bottom: 24px; padding-bottom: 16px; border-bottom: 1px solid #e2e8f0; }
.ct-config-panel-head h3 { font-size: 18px; font-weight: 700; margin: 0 0 6px; display: flex; align-items: center; gap: 10px; color: #1a2332; }
.ct-config-panel-head h3 :global(.anticon) { color: #2A6DFF; }
.ct-config-panel-head p { font-size: 13px; color: #64748b; margin: 0; }

/* Config form grid */
.config-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 18px; }
.config-form-grid .full { grid-column: 1 / -1; }

/* Panel actions */
.ct-panel-actions {
  margin-top: 24px; padding-top: 20px;
  border-top: 1px solid #e2e8f0;
  display: flex; justify-content: space-between; align-items: center;
}
.ct-panel-actions .hint { font-size: 12px; color: #64748b; }

/* Check list */
.check-list { list-style: none; padding: 0; margin: 0; }
.check-list li {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 0; font-size: 14px;
  border-bottom: 1px solid #e2e8f0;
}
.check-list li:last-child { border-bottom: none; }
.check-list li .ant-form-item { margin: 0; }

/* ===== Responsive ===== */
@media (max-width: 900px) {
  .ct-config-layout { grid-template-columns: 1fr; }
  .ct-config-sidebar { position: static; max-height: none; }
  .ct-form-grid, .config-form-grid { grid-template-columns: 1fr; }
  .ct-form-grid .full, .config-form-grid .full { grid-column: 1; }
  .ct-topbar { padding: 12px 16px; }
  .ct-step-pill { min-width: 120px; font-size: 12px; padding: 10px 12px; }
}
/* ============================================================
   最终方案页 - FinalPlanPage.css
   ============================================================ */

/* ---- topbar ---- */
.fp-topbar {
  background: #fff; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 16px 32px;
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  position: sticky; top: 0; z-index: 50;
}
.fp-topbar-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.fp-back-link {
  display: inline-flex; align-items: center; gap: 8px; color: #64748B;
  text-decoration: none; font-size: 14px; font-weight: 500; padding: 8px 14px; border-radius: 10px; cursor: pointer;
}
.fp-back-link:hover { background: #D1FAE5; color: #059669; }
.fp-title { font-size: 20px; font-weight: 700; margin: 0; }
.fp-sub { font-size: 13px; color: #64748B; }
.fp-process-badge {
  font-size: 12px; padding: 6px 12px; background: #D1FAE5; color: #059669; border-radius: 20px; font-weight: 600;
}

/* ---- page ---- */
.fp-page { max-width: 1280px; margin: 0 auto; padding: 24px 24px 64px; }

/* ---- flow hint ---- */
.fp-flow-hint {
  padding: 14px 18px; background: #D1FAE5; border-radius: 10px; font-size: 13px; margin-bottom: 20px; line-height: 1.6;
}
.fp-flow-hint strong { color: #059669; }

/* ---- stat ---- */
.fp-stat-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 24px; }
@media (max-width: 900px) { .fp-stat-row { grid-template-columns: repeat(2, 1fr); } }
.fp-stat-card {
  background: #fff; border-radius: 16px; padding: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); border-left: 4px solid #2A6DFF;
}
.fp-stat-card.final { border-left-color: #059669; }
.fp-stat-card.warn { border-left-color: #F59E0B; }
.fp-stat-card.danger { border-left-color: #EF4444; }
.fp-stat-val { font-size: 26px; font-weight: 700; }
.fp-stat-lbl { font-size: 13px; color: #64748B; margin-top: 6px; }

/* ---- card ---- */
.fp-card { background: #fff; border-radius: 16px; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 24px; margin-bottom: 24px; }
.fp-card-head {
  font-size: 16px; font-weight: 600; margin-bottom: 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
}
.fp-card-head-title { display: flex; align-items: center; gap: 10px; color: #059669; }
.fp-hint { font-size: 12px; color: #64748B; font-weight: 400; }

/* ---- form ---- */
.fp-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.fp-form-grid .full { grid-column: 1 / -1; }
.fp-form-group label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }
.fp-form-group { margin-bottom: 0; }

/* ---- project banner ---- */
.fp-project-banner {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
  gap: 16px; padding: 16px; background: #F5F7FC; border-radius: 10px; margin-top: 16px;
}
.fp-banner-item label { font-size: 11px; color: #64748B; display: block; }
.fp-banner-item strong { font-size: 14px; }

/* ---- empty ---- */
.fp-empty {
  text-align: center; padding: 64px 24px; color: #64748B;
  background: #fff; border-radius: 16px; box-shadow: 0 4px 24px rgba(42,109,255,.06);
}

/* ---- toolbar ---- */
.fp-toolbar { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }

/* ---- locked banner ---- */
.fp-locked-banner {
  padding: 12px 16px; background: #D1FAE5; border-radius: 10px;
  font-size: 13px; margin-bottom: 16px; display: flex; align-items: center; gap: 10px;
}

/* ---- grid-2 ---- */
.fp-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
@media (max-width: 900px) { .fp-grid-2 { grid-template-columns: 1fr; } }

/* ---- checklist ---- */
.fp-checklist { list-style: none; }
.fp-checklist li {
  padding: 12px 0; border-bottom: 1px solid #E2E8F0;
  display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
}
.fp-checklist li:last-child { border-bottom: none; }

/* ---- sub stats ---- */
.fp-sub-stat-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
.fp-sub-stat { background: #F5F7FC; padding: 14px; border-radius: 10px; text-align: center; }
.fp-sub-stat-v { font-size: 22px; font-weight: 700; color: #2A6DFF; }
.fp-sub-stat-l { font-size: 12px; color: #64748B; margin-top: 4px; }

/* ---- footer ---- */
.fp-footer-actions { display: flex; justify-content: flex-end; gap: 12px; flex-wrap: wrap; margin-top: 8px; }

/* ---- buttons ---- */
.btn-final { background: #059669; color: #fff; border-color: #059669; }
.btn-final:hover { background: #047857 !important; color: #fff !important; border-color: #047857 !important; }
.btn-final:not(:hover) { background: #059669; color: #fff; border-color: #059669; }

/* ---- status ---- */
.st-ok { background: #D1FAE5; color: #059669; }
.st-warn { background: #FEF3C7; color: #D97706; }
.st-no { background: #FEE2E2; color: #DC2626; }

/* ---- table ---- */
.fp-card .ant-table-thead > tr > th { background: #FAFBFD; color: #64748B; font-size: 12px; font-weight: 600; }
/* ============================================================
   开班申报页 - ClassDeclarationPage.css
   ============================================================ */

/* ---- topbar ---- */
.kb-topbar {
  background: #fff; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 16px 32px;
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  position: sticky; top: 0; z-index: 50;
}
.kb-topbar-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.kb-back-link {
  display: inline-flex; align-items: center; gap: 8px; color: #64748B;
  text-decoration: none; font-size: 14px; font-weight: 500; padding: 8px 14px; border-radius: 10px; cursor: pointer;
}
.kb-back-link:hover { background: #E8F0FF; color: #2A6DFF; }
.kb-title { font-size: 20px; font-weight: 700; margin: 0; }
.kb-sub { font-size: 13px; color: #64748B; }
.kb-process-badge {
  font-size: 12px; padding: 6px 12px; background: #E8F0FF; color: #2A6DFF; border-radius: 20px; font-weight: 500;
}

/* ---- page ---- */
.kb-page-body { max-width: 1280px; margin: 0 auto; padding: 28px 24px 64px; }

/* ---- stat ---- */
.kb-stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; margin-bottom: 24px; }
.kb-stat-card { background: #fff; border-radius: 20px; padding: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); }
.kb-stat-val { font-size: 26px; font-weight: 700; color: #2A6DFF; }
.kb-stat-val.success { color: #10B981; }
.kb-stat-val.warn { color: #F59E0B; }
.kb-stat-lbl { font-size: 13px; color: #64748B; margin-top: 4px; }

/* ---- card ---- */
.kb-card { background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 24px 28px; margin-bottom: 24px; }
.kb-card-head {
  font-size: 16px; font-weight: 600; margin-bottom: 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
}
.kb-card-head-title { display: flex; align-items: center; gap: 10px; color: #2A6DFF; }
.kb-hint { font-size: 12px; color: #64748B; font-weight: 400; }

/* ---- form ---- */
.kb-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.kb-form-group label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }
.kb-form-group-full { margin-bottom: 0; }
.kb-form-group-full label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }

/* ---- project banner ---- */
.kb-project-banner {
  margin-top: 16px; padding: 16px 20px; background: #E8F0FF; border-radius: 12px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px 24px; font-size: 13px;
}
.kb-banner-item label { display: block; color: #64748B; font-size: 12px; margin-bottom: 4px; }
.kb-banner-item strong { font-weight: 600; }

/* ---- empty ---- */
.kb-empty {
  text-align: center; padding: 48px 24px; color: #64748B;
  background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); margin-bottom: 24px;
}

/* ---- alert ---- */
.kb-alert {
  padding: 14px 18px; border-radius: 12px; font-size: 14px; margin-bottom: 20px;
  display: flex; align-items: flex-start; gap: 12px;
}
.kb-alert.warn { background: #FEF3C7; color: #92400E; }

/* ---- flow steps ---- */
.kb-flow-steps { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.kb-flow-step {
  flex: 1; min-width: 120px; text-align: center; padding: 12px 8px;
  border-radius: 12px; background: #F5F7FC; font-size: 12px; color: #64748B; position: relative;
}
.kb-flow-step.done { background: #D1FAE5; color: #059669; font-weight: 600; }
.kb-flow-step.active { background: #E8F0FF; color: #2A6DFF; font-weight: 600; }

/* ---- toolbar ---- */
.kb-toolbar { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }

/* ---- footer ---- */
.kb-footer-actions { display: flex; gap: 12px; justify-content: flex-end; flex-wrap: wrap; }

/* ---- status ---- */
.st-draft { background: #F1F5F9; color: #64748B; }
.st-prep { background: #E8F0FF; color: #2A6DFF; }
.st-submit { background: #FEF3C7; color: #D97706; }
.st-review { background: #EDE9FE; color: #7C3AED; }
.st-approved { background: #D1FAE5; color: #059669; }
.st-open { background: #059669; color: #fff; }

/* ---- action buttons ---- */
.action-btns { display: flex; gap: 6px; flex-wrap: wrap; }
.action-btn {
  width: 32px; height: 32px; border: none; border-radius: 8px;
  background: #F5F7FC; color: #64748B; cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
}
.action-btn:hover { background: #E8F0FF; color: #2A6DFF; }

/* ---- material grid ---- */
.kb-material-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px; }
.kb-material-item {
  display: flex; align-items: center; gap: 10px; padding: 10px 12px;
  background: #F5F7FC; border-radius: 12px; font-size: 13px; cursor: pointer;
}
.kb-material-item.done { background: #D1FAE5; }
.kb-material-item input { width: auto; }

/* ---- check row ---- */
.kb-check-row { display: flex; align-items: center; gap: 8px; margin-top: 12px; font-size: 14px; }
.kb-check-row label { margin: 0; }

/* ---- modal form ---- */
.kb-modal-form .kb-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }

/* ---- table ---- */
.kb-card .ant-table-thead > tr > th { background: #FAFBFD; color: #64748B; font-size: 12px; font-weight: 600; }
/* ============================================================
   培训实施页 - TrainingImplementationPage.css
   ============================================================ */

/* ---- topbar ---- */
.tpx-topbar {
  background: #fff; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 16px 32px;
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  position: sticky; top: 0; z-index: 50;
}
.tpx-topbar-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.tpx-back-link {
  display: inline-flex; align-items: center; gap: 8px; color: #64748B;
  text-decoration: none; font-size: 14px; font-weight: 500; padding: 8px 14px; border-radius: 10px; cursor: pointer;
}
.tpx-back-link:hover { background: #E8F0FF; color: #2A6DFF; }
.tpx-title { font-size: 20px; font-weight: 700; margin: 0; }
.tpx-sub { font-size: 13px; color: #64748B; }
.tpx-process-badge {
  font-size: 12px; padding: 6px 12px; background: #E8F0FF; color: #2A6DFF; border-radius: 20px; font-weight: 500;
}

/* ---- page ---- */
.tpx-page-body { max-width: 1280px; margin: 0 auto; padding: 28px 24px 64px; }

/* ---- stat ---- */
.tpx-stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; margin-bottom: 24px; }
.tpx-stat-card { background: #fff; border-radius: 20px; padding: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); }
.tpx-stat-val { font-size: 26px; font-weight: 700; color: #2A6DFF; }
.tpx-stat-val.success { color: #10B981; }
.tpx-stat-val.warn { color: #F59E0B; }
.tpx-stat-lbl { font-size: 13px; color: #64748B; margin-top: 4px; }

/* ---- card ---- */
.tpx-card { background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 24px 28px; margin-bottom: 24px; }
.tpx-card-head {
  font-size: 16px; font-weight: 600; margin-bottom: 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
}
.tpx-card-head-title { display: flex; align-items: center; gap: 10px; color: #2A6DFF; }
.tpx-hint { font-size: 12px; color: #64748B; font-weight: 400; }

/* ---- form ---- */
.tpx-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.tpx-form-group label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }
.tpx-form-group { margin-bottom: 0; }

/* ---- project banner ---- */
.tpx-project-banner {
  margin-top: 16px; padding: 16px 20px; background: #E8F0FF; border-radius: 12px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px 24px; font-size: 13px;
}
.tpx-banner-item label { display: block; color: #64748B; font-size: 12px; margin-bottom: 4px; }
.tpx-banner-item strong { font-weight: 600; }

/* ---- empty ---- */
.tpx-empty {
  text-align: center; padding: 48px 24px; color: #64748B;
  background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); margin-bottom: 24px;
}

/* ---- alert ---- */
.tpx-alert {
  padding: 14px 18px; border-radius: 12px; font-size: 14px; margin-bottom: 20px;
  display: flex; align-items: flex-start; gap: 12px;
}
.tpx-alert.warn { background: #FEF3C7; color: #92400E; }

/* ---- toolbar ---- */
.tpx-toolbar { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; align-items: flex-end; }

/* ---- footer ---- */
.tpx-footer-actions { display: flex; gap: 12px; justify-content: flex-end; flex-wrap: wrap; }

/* ---- progress bar ---- */
.tpx-progress-bar { height: 8px; background: #F5F7FC; border-radius: 4px; overflow: hidden; min-width: 80px; }
.tpx-progress-fill { height: 100%; background: #2A6DFF; border-radius: 4px; }

/* ---- status ---- */
.st-normal { background: #D1FAE5; color: #059669; }
.st-warn { background: #FEF3C7; color: #D97706; }
.st-danger { background: #FEE2E2; color: #DC2626; }

/* ---- action buttons ---- */
.action-btns { display: flex; gap: 6px; }
.action-btn {
  width: 32px; height: 32px; border: none; border-radius: 8px;
  background: #F5F7FC; color: #64748B; cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
}
.action-btn:hover { background: #E8F0FF; color: #2A6DFF; }

/* ---- attendance ---- */
.tpx-att-card { padding: 16px 20px; margin-bottom: 12px; border: 1px solid #E2E8F0; border-radius: 12px; }
.tpx-att-row { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid #E2E8F0; font-size: 14px; flex-wrap: wrap; }
.tpx-att-row:last-child { border-bottom: none; }
.tpx-check-label { margin: 0; font-size: 14px; cursor: pointer; display: flex; align-items: center; gap: 4px; }
.tpx-check-label input { width: auto; }

/* ---- evidence ---- */
.tpx-evidence-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 12px; }
.tpx-evidence-thumb {
  aspect-ratio: 4/3; background: #F5F7FC; border-radius: 12px;
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 8px; font-size: 12px; color: #64748B; border: 1px dashed #E2E8F0;
}

/* ---- logs & exceptions ---- */
.tpx-log-item, .tpx-exc-item {
  padding: 14px 16px; background: #F5F7FC; border-radius: 12px; margin-bottom: 10px; font-size: 14px;
}
.tpx-log-meta, .tpx-exc-meta { font-size: 12px; color: #64748B; margin-bottom: 6px; }

/* ---- modal ---- */
.tpx-modal-form .tpx-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }

/* ---- table ---- */
.tpx-card .ant-table-thead > tr > th { background: #FAFBFD; color: #64748B; font-size: 12px; font-weight: 600; }
/* ============================================================
   认定准备页 - CertificationPage.css
   ============================================================ */

/* ---- topbar ---- */
.rd-topbar {
  background: #fff; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 16px 32px;
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  position: sticky; top: 0; z-index: 50;
}
.rd-topbar-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.rd-back-link {
  display: inline-flex; align-items: center; gap: 8px; color: #64748B;
  text-decoration: none; font-size: 14px; font-weight: 500; padding: 8px 14px; border-radius: 10px; cursor: pointer;
}
.rd-back-link:hover { background: #E8F0FF; color: #2A6DFF; }
.rd-title { font-size: 20px; font-weight: 700; margin: 0; }
.rd-sub { font-size: 13px; color: #64748B; }
.rd-process-badge {
  font-size: 12px; padding: 6px 12px; background: #E8F0FF; color: #2A6DFF; border-radius: 20px; font-weight: 500;
}

/* ---- page ---- */
.rd-page-body { max-width: 1280px; margin: 0 auto; padding: 28px 24px 64px; }

/* ---- stat ---- */
.rd-stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; margin-bottom: 24px; }
.rd-stat-card { background: #fff; border-radius: 20px; padding: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); }
.rd-stat-val { font-size: 26px; font-weight: 700; color: #2A6DFF; }
.rd-stat-val.success { color: #10B981; }
.rd-stat-val.warn { color: #F59E0B; }
.rd-stat-lbl { font-size: 13px; color: #64748B; margin-top: 4px; }

/* ---- card ---- */
.rd-card { background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 24px 28px; margin-bottom: 24px; }
.rd-card-head {
  font-size: 16px; font-weight: 600; margin-bottom: 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
}
.rd-card-head-title { display: flex; align-items: center; gap: 10px; color: #2A6DFF; }
.rd-hint { font-size: 12px; color: #64748B; font-weight: 400; }

/* ---- form ---- */
.rd-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.rd-form-group label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }
.rd-form-group { margin-bottom: 0; }

/* ---- project banner ---- */
.rd-project-banner {
  margin-top: 16px; padding: 16px 20px; background: #E8F0FF; border-radius: 12px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px 24px; font-size: 13px;
}
.rd-banner-item label { display: block; color: #64748B; font-size: 12px; margin-bottom: 4px; }
.rd-banner-item strong { font-weight: 600; }

/* ---- empty ---- */
.rd-empty {
  text-align: center; padding: 48px 24px; color: #64748B;
  background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); margin-bottom: 24px;
}

/* ---- alert ---- */
.rd-alert {
  padding: 14px 18px; border-radius: 12px; font-size: 14px; margin-bottom: 20px;
  display: flex; align-items: flex-start; gap: 12px;
}
.rd-alert.warn { background: #FEF3C7; color: #92400E; }

/* ---- flow steps ---- */
.rd-flow-steps { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.rd-flow-step {
  flex: 1; min-width: 110px; text-align: center; padding: 12px 8px;
  border-radius: 12px; background: #F5F7FC; font-size: 12px; color: #64748B;
}
.rd-flow-step.done { background: #D1FAE5; color: #059669; font-weight: 600; }
.rd-flow-step.active { background: #E8F0FF; color: #2A6DFF; font-weight: 600; }

/* ---- toolbar ---- */
.rd-toolbar { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }

/* ---- filter ---- */
.rd-filter-bar { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin-bottom: 16px; }

/* ---- footer ---- */
.rd-footer-actions { display: flex; gap: 12px; justify-content: flex-end; flex-wrap: wrap; }

/* ---- status ---- */
.st-pending { background: #F1F5F9; color: #64748B; }
.st-pass { background: #D1FAE5; color: #059669; }
.st-fail { background: #FEE2E2; color: #DC2626; }
.st-ok { background: #E8F0FF; color: #2A6DFF; }
.st-rsb { background: #FEF3C7; color: #D97706; }
.st-cert { background: #059669; color: #fff; }

/* ---- action buttons ---- */
.action-btns { display: flex; gap: 6px; }
.action-btn {
  width: 32px; height: 32px; border: none; border-radius: 8px;
  background: #F5F7FC; color: #64748B; cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
}
.action-btn:hover { background: #E8F0FF; color: #2A6DFF; }

/* ---- table ---- */
.rd-card .ant-table-thead > tr > th { background: #FAFBFD; color: #64748B; font-size: 12px; font-weight: 600; }
/* ============================================================
   申报服务页 - DeclarationServicePage.css
   ============================================================ */

/* ---- topbar ---- */
.sb-topbar {
  background: #fff; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 16px 32px;
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  position: sticky; top: 0; z-index: 50;
}
.sb-topbar-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.sb-back-link {
  display: inline-flex; align-items: center; gap: 8px; color: #64748B;
  text-decoration: none; font-size: 14px; font-weight: 500; padding: 8px 14px; border-radius: 10px; cursor: pointer;
}
.sb-back-link:hover { background: #E8F0FF; color: #2A6DFF; }
.sb-title { font-size: 20px; font-weight: 700; margin: 0; }
.sb-sub { font-size: 13px; color: #64748B; }
.sb-process-badge {
  font-size: 12px; padding: 6px 12px; background: #E8F0FF; color: #2A6DFF; border-radius: 20px; font-weight: 500;
}

/* ---- page ---- */
.sb-page-body { max-width: 1280px; margin: 0 auto; padding: 28px 24px 64px; }

/* ---- stat ---- */
.sb-stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; margin-bottom: 24px; }
.sb-stat-card { background: #fff; border-radius: 20px; padding: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); }
.sb-stat-val { font-size: 26px; font-weight: 700; color: #2A6DFF; }
.sb-stat-val.success { color: #10B981; }
.sb-stat-val.warn { color: #F59E0B; }
.sb-stat-lbl { font-size: 13px; color: #64748B; margin-top: 4px; }

/* ---- card ---- */
.sb-card { background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 24px 28px; margin-bottom: 24px; }
.sb-card-head {
  font-size: 16px; font-weight: 600; margin-bottom: 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
}
.sb-card-head-title { display: flex; align-items: center; gap: 10px; color: #2A6DFF; }
.sb-hint { font-size: 12px; color: #64748B; font-weight: 400; }

/* ---- form ---- */
.sb-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; margin-bottom: 20px; }
.sb-form-group label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }
.sb-form-group { margin-bottom: 0; }

/* ---- project banner ---- */
.sb-project-banner {
  margin-top: 16px; padding: 16px 20px; background: #E8F0FF; border-radius: 12px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px 24px; font-size: 13px;
}
.sb-banner-item label { display: block; color: #64748B; font-size: 12px; margin-bottom: 4px; }
.sb-banner-item strong { font-weight: 600; }

/* ---- empty ---- */
.sb-empty {
  text-align: center; padding: 48px 24px; color: #64748B;
  background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); margin-bottom: 24px;
}

/* ---- flow steps ---- */
.sb-flow-steps { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.sb-flow-step {
  flex: 1; min-width: 120px; text-align: center; padding: 12px 8px;
  border-radius: 12px; background: #F5F7FC; font-size: 12px; color: #64748B;
}
.sb-flow-step.done { background: #D1FAE5; color: #059669; font-weight: 600; }
.sb-flow-step.active { background: #E8F0FF; color: #2A6DFF; font-weight: 600; }

/* ---- toolbar ---- */
.sb-toolbar { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }

/* ---- reject box ---- */
.sb-reject-box {
  margin-top: 0; margin-bottom: 16px; padding: 14px 18px;
  background: #FEF2F2; border-radius: 12px; font-size: 14px; color: #991B1B;
}

/* ---- footer ---- */
.sb-footer-actions { display: flex; gap: 12px; justify-content: flex-end; flex-wrap: wrap; }

/* ---- status ---- */
.st-draft { background: #F1F5F9; color: #64748B; }
.st-ready { background: #E8F0FF; color: #2A6DFF; }
.st-submit { background: #FEF3C7; color: #D97706; }
.st-pass { background: #D1FAE5; color: #059669; }
.st-reject { background: #FEE2E2; color: #DC2626; }

/* ---- table ---- */
.sb-card .ant-table-thead > tr > th { background: #FAFBFD; color: #64748B; font-size: 12px; font-weight: 600; }
/* ============================================================
   培训结业页 - GraduationPage.css
   ============================================================ */

/* ---- topbar ---- */
.jy-topbar {
  background: #fff; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 16px 32px;
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  position: sticky; top: 0; z-index: 50;
}
.jy-topbar-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.jy-back-link {
  display: inline-flex; align-items: center; gap: 8px; color: #64748B;
  text-decoration: none; font-size: 14px; font-weight: 500; padding: 8px 14px; border-radius: 10px; cursor: pointer;
}
.jy-back-link:hover { background: #E8F0FF; color: #2A6DFF; }
.jy-title { font-size: 20px; font-weight: 700; margin: 0; }
.jy-sub { font-size: 13px; color: #64748B; }
.jy-process-badge {
  font-size: 12px; padding: 6px 12px; background: #E8F0FF; color: #2A6DFF; border-radius: 20px; font-weight: 500;
}

/* ---- page ---- */
.jy-page-body { max-width: 1280px; margin: 0 auto; padding: 28px 24px 64px; }

/* ---- stat ---- */
.jy-stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; margin-bottom: 24px; }
.jy-stat-card { background: #fff; border-radius: 20px; padding: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); }
.jy-stat-val { font-size: 26px; font-weight: 700; color: #2A6DFF; }
.jy-stat-val.success { color: #10B981; }
.jy-stat-val.warn { color: #F59E0B; }
.jy-stat-lbl { font-size: 13px; color: #64748B; margin-top: 4px; }

/* ---- card ---- */
.jy-card { background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 24px 28px; margin-bottom: 24px; }
.jy-card-head {
  font-size: 16px; font-weight: 600; margin-bottom: 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
}
.jy-card-head-title { display: flex; align-items: center; gap: 10px; color: #2A6DFF; }
.jy-hint { font-size: 12px; color: #64748B; font-weight: 400; }

/* ---- form ---- */
.jy-form-group label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }
.jy-form-group { margin-bottom: 0; }

/* ---- project banner ---- */
.jy-project-banner {
  margin-top: 16px; padding: 16px 20px; background: #E8F0FF; border-radius: 12px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px 24px; font-size: 13px;
}
.jy-banner-item label { display: block; color: #64748B; font-size: 12px; margin-bottom: 4px; }
.jy-banner-item strong { font-weight: 600; }

/* ---- empty ---- */
.jy-empty {
  text-align: center; padding: 48px 24px; color: #64748B;
  background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); margin-bottom: 24px;
}

/* ---- alert ---- */
.jy-alert {
  padding: 14px 18px; border-radius: 12px; font-size: 14px; margin-bottom: 20px;
  display: flex; align-items: flex-start; gap: 12px;
  background: #FEF3C7; color: #92400E;
}
.jy-alert.warn { background: #FEF3C7; color: #92400E; }

/* ---- flow steps ---- */
.jy-flow-steps { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.jy-flow-step {
  flex: 1; min-width: 120px; text-align: center; padding: 12px 8px;
  border-radius: 12px; background: #F5F7FC; font-size: 12px; color: #64748B;
}
.jy-flow-step.done { background: #D1FAE5; color: #059669; font-weight: 600; }
.jy-flow-step.active { background: #E8F0FF; color: #2A6DFF; font-weight: 600; }

/* ---- toolbar ---- */
.jy-toolbar { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }

/* ---- filter ---- */
.jy-filter-bar { display: flex; flex-wrap: wrap; gap: 12px; align-items: flex-end; margin-bottom: 16px; }

/* ---- footer ---- */
.jy-footer-actions { display: flex; gap: 12px; justify-content: flex-end; flex-wrap: wrap; }

/* ---- status ---- */
.st-pending { background: #FEF3C7; color: #D97706; }
.st-done { background: #D1FAE5; color: #059669; }
.st-draft { background: #F1F5F9; color: #64748B; }

/* ---- table ---- */
.jy-card .ant-table-thead > tr > th { background: #FAFBFD; color: #64748B; font-size: 12px; font-weight: 600; }
/* ============================================================
   项目回款页 - RefundPage.css
   ============================================================ */

/* ---- topbar ---- */
.hk-topbar {
  background: #fff; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 16px 32px;
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
  position: sticky; top: 0; z-index: 50;
}
.hk-topbar-left { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.hk-back-link {
  display: inline-flex; align-items: center; gap: 8px; color: #64748B;
  text-decoration: none; font-size: 14px; font-weight: 500; padding: 8px 14px; border-radius: 10px; cursor: pointer;
}
.hk-back-link:hover { background: #E8F0FF; color: #2A6DFF; }
.hk-title { font-size: 20px; font-weight: 700; margin: 0; }
.hk-sub { font-size: 13px; color: #64748B; }
.hk-process-badge {
  font-size: 12px; padding: 6px 12px; background: #FFF7ED; color: #D97706; border-radius: 20px; font-weight: 500;
}

/* ---- page ---- */
.hk-page-body { max-width: 1280px; margin: 0 auto; padding: 28px 24px 64px; }

/* ---- stat ---- */
.hk-stat-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 16px; margin-bottom: 24px; }
.hk-stat-card { background: #fff; border-radius: 20px; padding: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); }
.hk-stat-val { font-size: 26px; font-weight: 700; color: #2A6DFF; }
.hk-stat-val.success { color: #10B981; }
.hk-stat-val.warn { color: #F59E0B; }
.hk-stat-lbl { font-size: 13px; color: #64748B; margin-top: 4px; }

/* ---- card ---- */
.hk-card { background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); padding: 24px 28px; margin-bottom: 24px; }
.hk-card-head {
  font-size: 16px; font-weight: 600; margin-bottom: 20px; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px;
}
.hk-card-head-title { display: flex; align-items: center; gap: 10px; color: #2A6DFF; }
.hk-hint { font-size: 12px; color: #64748B; font-weight: 400; }

/* ---- form ---- */
.hk-form-group label { display: block; font-size: 13px; font-weight: 500; margin-bottom: 8px; }
.hk-form-group { margin-bottom: 0; }
.hk-form-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; margin-bottom: 20px; }

/* ---- project banner ---- */
.hk-project-banner {
  margin-top: 16px; padding: 16px 20px; background: #E8F0FF; border-radius: 12px;
  display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px 24px; font-size: 13px;
}
.hk-banner-item label { display: block; color: #64748B; font-size: 12px; margin-bottom: 4px; }
.hk-banner-item strong { font-weight: 600; }

/* ---- empty ---- */
.hk-empty {
  text-align: center; padding: 48px 24px; color: #64748B;
  background: #fff; border-radius: 20px; box-shadow: 0 4px 24px rgba(42,109,255,.06); margin-bottom: 24px;
}

/* ---- alert ---- */
.hk-alert {
  padding: 14px 18px; border-radius: 12px; font-size: 14px; margin-bottom: 20px;
  display: flex; align-items: flex-start; gap: 12px;
  background: #FEF3C7; color: #92400E;
}

/* ---- flow steps ---- */
.hk-flow-steps { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.hk-flow-step {
  flex: 1; min-width: 120px; text-align: center; padding: 12px 8px;
  border-radius: 12px; background: #F5F7FC; font-size: 12px; color: #64748B;
}
.hk-flow-step.done { background: #D1FAE5; color: #059669; font-weight: 600; }
.hk-flow-step.active { background: #E8F0FF; color: #2A6DFF; font-weight: 600; }

/* ---- toolbar ---- */
.hk-toolbar { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 16px; }

/* ---- footer ---- */
.hk-footer-actions { display: flex; gap: 12px; justify-content: flex-end; flex-wrap: wrap; }

/* ---- settlement ---- */
.hk-settlement-empty { text-align: center; padding: 32px; color: #64748B; }
.hk-settlement-box {
  padding: 20px; background: #F5F7FC; border-radius: 12px; margin-top: 0;
}
.hk-settlement-row {
  display: flex; justify-content: space-between; padding: 10px 0;
  border-bottom: 1px dashed #E2E8F0; font-size: 14px;
}
.hk-settlement-row:last-child { border-bottom: none; }
.hk-settlement-total { font-weight: 700; font-size: 16px; }

/* ---- approval track ---- */
.hk-approval-track { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 16px; }
.hk-approval-node {
  flex: 1; min-width: 140px; padding: 14px; border-radius: 12px;
  background: #F5F7FC; text-align: center; font-size: 13px;
}
.hk-approval-node.done { background: #D1FAE5; color: #059669; }
.hk-approval-node.active { background: #E8F0FF; color: #2A6DFF; font-weight: 600; }

/* ---- status ---- */
.st-pending { background: #FEF3C7; color: #D97706; }
.st-done { background: #D1FAE5; color: #059669; }
.st-overdue { background: #FEE2E2; color: #DC2626; }
.st-partial { background: #E8F0FF; color: #2A6DFF; }

/* ---- table ---- */
.hk-card .ant-table-thead > tr > th { background: #FAFBFD; color: #64748B; font-size: 12px; font-weight: 600; }
/* ============================================================
   Archive Pages —— 对照原型 archive-page.css 原封不动照搬
   原型: D:\Users\admin\Desktop\培训部新版原型图\HTML\archive-page.css
   ============================================================ */

/* ---- page（原型 .page line 47） ---- */
.pa-page { max-width: 1400px; margin: 0 auto; padding: 28px 24px 64px; }

/* ---- topbar（原型 .topbar lines 21-46） ---- */
.pa-topbar {
  background: #fff;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  padding: 16px 32px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
  position: sticky;
  top: 0;
  z-index: 50;
  margin: -28px -24px 0;
}
.pa-topbar-left { display: flex; align-items: center; gap: 16px; }
.pa-topbar-left h1 { font-size: 20px; font-weight: 700; }
.pa-sub { font-size: 13px; color: #64748B; display: block; margin-top: 2px; }
.pa-topbar-tag {
  font-size: 12px; padding: 6px 12px; background: #E8F0FF;
  color: #2A6DFF; border-radius: 20px; font-weight: 500;
}

/* ---- back-link（原型 .back-link lines 35-40） ---- */
.pa-back-link {
  display: inline-flex; align-items: center; gap: 8px;
  color: #64748B; text-decoration: none; font-size: 14px; font-weight: 500;
  padding: 8px 14px; border-radius: 12px; cursor: pointer; transition: all 0.2s;
}
.pa-back-link:hover { background: #E8F0FF; color: #2A6DFF; }

/* ---- main（原型 page 内部无额外 gap） ---- */
.pa-main { }

/* ---- hint-card（原型 .hint-card lines 48-57） ---- */
.pa-hint-card {
  background: #E8F0FF;
  border-radius: 20px;
  padding: 16px 20px;
  font-size: 13px;
  color: #64748B;
  margin-bottom: 20px;
  line-height: 1.7;
}
.pa-hint-card strong { color: #1A2332; }

/* ---- stat-row（原型 .stat-row lines 58-63） ---- */
.pa-stat-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
  gap: 14px;
  margin-bottom: 20px;
}

/* ---- stat-card（原型 .stat-card lines 64-74） ---- */
.pa-stat-card {
  background: #fff;
  border-radius: 20px;
  padding: 16px 18px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  border-left: 3px solid #2A6DFF;
}
.pa-stat-card.warn { border-left-color: #F59E0B; }
.pa-stat-card.danger { border-left-color: #EF4444; }
.pa-stat-val { font-size: 22px; font-weight: 700; color: #2A6DFF; }
.pa-stat-lbl { font-size: 12px; color: #64748B; margin-top: 4px; }

/* ---- card（原型 .card lines 75-81） ---- */
.pa-card {
  background: #fff;
  border-radius: 20px;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
  padding: 24px 28px;
  margin-bottom: 24px;
}

/* ---- card-head（原型 .card-head lines 82-94） ---- */
.pa-card-head {
  font-size: 16px;
  font-weight: 600;
  margin-bottom: 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px;
}
.pa-card-head .pa-title-wrap { display: flex; align-items: center; gap: 10px; }
.pa-card-head .pa-title-wrap .anticon { color: #2A6DFF; }

/* ---- tab-bar（原型 .tab-bar lines 125-138） ---- */
.pa-tab-bar {
  display: flex; gap: 8px; margin-bottom: 20px; flex-wrap: wrap;
  border-bottom: 1px solid #E2E8F0;
}
.pa-tab-btn {
  padding: 12px 20px; border: none; background: none;
  font-family: inherit; font-size: 14px; font-weight: 500;
  color: #64748B; cursor: pointer;
  border-bottom: 2px solid transparent; margin-bottom: -1px;
  display: flex; align-items: center; gap: 8px; transition: all 0.2s;
}
.pa-tab-btn:hover { color: #2A6DFF; }
.pa-tab-btn.active { color: #2A6DFF; border-bottom-color: #2A6DFF; font-weight: 600; }

/* ---- filter-chips（原型 .filter-chips lines 139-154） ---- */
.pa-filter-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.pa-filter-chip {
  padding: 6px 12px; border: 1px solid #E2E8F0; border-radius: 20px;
  background: #fff; font-size: 12px; cursor: pointer;
  color: #64748B; font-family: inherit; transition: all 0.2s;
  display: inline-flex; align-items: center; gap: 0;
}
.pa-filter-chip:hover { border-color: #2A6DFF; color: #2A6DFF; }
.pa-filter-chip.active {
  border-color: #2A6DFF; background: #E8F0FF; color: #2A6DFF; font-weight: 600;
}
.pa-chip-count {
  display: inline-block; min-width: 18px; padding: 0 5px; margin-left: 4px;
  background: #f1f5f9; border-radius: 10px; font-size: 11px; text-align: center;
}

/* ---- toolbar（原型 .toolbar lines 95-96） ---- */
.pa-toolbar {
  display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 16px;
}
.pa-toolbar-actions { margin-left: auto; display: flex; gap: 8px; flex-wrap: wrap; }

/* ---- search-input（原型 .search-input lines 97-105） ---- */
.pa-search-input {
  min-width: 220px;
}
.pa-search-input .ant-input {
  padding: 10px 14px;
  border: 1px solid #E2E8F0;
  border-radius: 12px;
  font-size: 14px;
}

/* ---- table-wrap（原型 .table-wrap line 155） ---- */
.pa-table-wrap { overflow-x: auto; }

/* ---- Ant Design table overrides (match prototype .data-table) ---- */
.pa-table-wrap .ant-table {
  font-size: 14px;
}
.pa-table-wrap .ant-table-thead > tr > th {
  padding: 12px 14px;
  font-size: 12px;
  color: #64748B;
  background: #FAFBFD;
  border-bottom: 2px solid #E2E8F0;
  white-space: nowrap;
}
.pa-table-wrap .ant-table-tbody > tr > td {
  padding: 14px;
  border-bottom: 1px solid #E2E8F0;
}
.pa-table-wrap .ant-table-tbody > tr:hover > td {
  background: rgba(42, 109, 255, 0.02);
}
.pa-table-wrap .ant-table-tbody tr.row-warn > td {
  background: #FEF2F2;
}

/* ---- link（原型 .link-file lines 190-191） ---- */
.pa-link { color: #2A6DFF; cursor: pointer; text-decoration: none; }
.pa-link:hover { text-decoration: underline; }

/* ---- rule-preview（原型 .rule-preview lines 185-189） ---- */
.pa-rule-preview {
  margin-top: 16px; padding: 16px 20px; background: #F5F7FC;
  border-radius: 12px; font-size: 13px; line-height: 1.8;
}
.pa-rule-preview h4 { font-size: 14px; color: #2A6DFF; margin-bottom: 8px; }
.pa-rule-preview p { margin: 0; }

/* ---- grid-2（原型 .grid-2 lines 183-184） ---- */
.pa-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
@media (max-width: 900px) { .pa-grid-2 { grid-template-columns: 1fr; } }

/* ---- pm-sheet（原型 archive-pm-sheet.css） ---- */
.pa-pm-sheet-wrap { margin-bottom: 24px; }
.pa-pm-section-head {
  background: #c5d9f1;
  color: #1a2332;
  font-weight: 600;
  font-size: 14px;
  padding: 10px 14px;
  border: 1px solid #94a3b8;
  border-bottom: none;
}
.pa-pm-sheet {
  width: 100%;
  border-collapse: collapse;
  font-size: 13px;
  background: #fff;
  margin-bottom: 0;
}
.pa-pm-sheet th,
.pa-pm-sheet td {
  border: 1px solid #94a3b8;
  padding: 10px 12px;
  vertical-align: middle;
}
.pa-pm-sheet th.pa-pm-label {
  background: #e8f0fe;
  font-weight: 600;
  width: 120px;
  text-align: left;
  white-space: nowrap;
}
.pa-pm-sheet input,
.pa-pm-sheet select,
.pa-pm-sheet textarea {
  width: 100%;
  border: 1px solid #E2E8F0;
  border-radius: 6px;
  padding: 8px 10px;
  font-family: inherit;
  font-size: 13px;
}
.pa-pm-sheet textarea { min-height: 72px; resize: vertical; }
.pa-pm-hint {
  font-size: 12px;
  color: #64748B;
  padding: 8px 12px;
  background: #fafbfc;
  border: 1px solid #94a3b8;
  border-top: none;
  line-height: 1.6;
}
.pa-pm-criteria {
  font-size: 12px;
  line-height: 1.8;
  padding: 12px 14px;
  background: #fafbfc;
  border: 1px solid #94a3b8;
  border-top: none;
}
.pa-pm-sub-toolbar {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 8px 0;
}
.pa-list-panel .pa-record-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 16px 20px;
  border: 1px solid #E2E8F0;
  border-radius: 12px;
  margin-bottom: 10px;
  background: #fff;
  transition: all 0.2s;
}
.pa-list-panel .pa-record-card:hover {
  border-color: #2A6DFF;
  box-shadow: 0 4px 24px rgba(42, 109, 255, 0.06);
}
.pa-list-panel .pa-record-card h4 { font-size: 15px; margin-bottom: 4px; }
.pa-list-panel .pa-record-card p { font-size: 12px; color: #64748B; }
.pa-form-actions-bar {
  display: flex;
  gap: 10px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}
/* 组卷计划页 - 工种-科目树视觉调优
 * 解决 antd v5 Tree blockNode=true 时 style.backgroundColor 不生效的问题,
 * 用更高优先级的 .selected 标记 + CSS !important 强制覆盖 antd token
 */

.work-type-tree {
  /* 选中节点:蓝色背景 + 白字 + 微圆角 */
  .ant-tree-node-selected {
    background-color: #1677ff !important;
    border-radius: 6px;
  }

  /* 让整个节点区域(包括 icon)都跟随背景色 */
  .ant-tree-node-selected .ant-tree-node-content-wrapper,
  .ant-tree-node-selected .ant-tree-iconEle {
    background-color: #1677ff !important;
    color: #fff !important;
  }

  /* hover 时给个浅灰提示,避开选中态 */
  .ant-tree-node-content-wrapper:hover {
    background-color: rgba(0, 0, 0, 0.04);
  }
  .ant-tree-node-selected .ant-tree-node-content-wrapper:hover {
    background-color: #4096ff !important;
  }

  /* 工种节点的标题列加粗 */
  .ant-tree-switcher,
  .ant-tree-node-content-wrapper {
    transition: background-color 0.15s ease;
  }

  /* 缩进增加,层级更清楚 */
  .ant-tree-indent-unit {
    width: 16px;
  }

  /* 节点标题列强制单行 + 超出截断,避免「母液蒸发工初 / 级」这种换行 */
  .ant-tree-title {
    display: inline-block;
    max-width: 100%;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: middle;
  }
}.signature-pad {
  display: flex;
  min-width: 0;
  flex: 1;
  flex-direction: column;
  gap: 8px;
  padding: 10px 12px;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  background: #f8fafc;
}

.signature-pad-header {
  display: flex;
  flex: 0 0 auto;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.signature-pad-header h4.ant-typography {
  margin: 0 0 4px;
  font-size: 18px;
  letter-spacing: 0;
}

.signature-pad-canvas-host {
  position: relative;
  flex: 1 1 auto;
  min-height: 460px;
  overflow: hidden;
  border: 2px solid #94a3b8;
  border-radius: 8px;
  background: #ffffff;
  touch-action: none;
}

.signature-pad-canvas {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  background: #ffffff;
  cursor: crosshair;
  touch-action: none;
}

.signature-pad-canvas[aria-disabled='true'] {
  cursor: not-allowed;
}

.signature-pad-hint {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #94a3b8;
  font-size: 22px;
  pointer-events: none;
  user-select: none;
}

.signature-pad-actions {
  display: flex;
  flex: 0 0 auto;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.signature-pad-actions .ant-btn {
  min-height: 28px;
  height: 28px;
  padding-inline: 10px;
  font-size: 13px;
}

.signature-pad-native-panel {
  display: flex;
  justify-content: flex-end;
  min-height: 88px;
  padding: 18px;
  border: 1px solid #d7dee8;
  border-radius: 8px;
  background: #ffffff;
}

.signature-pad-native-panel .ant-btn {
  min-height: 28px;
  height: 28px;
  padding-inline: 10px;
  font-size: 13px;
}

.signature-pad-result {
  display: flex;
  align-items: center;
  gap: 14px;
  min-height: 104px;
  padding: 10px;
  border: 1px solid #d7dee8;
  border-radius: 8px;
  background: #ffffff;
}

.signature-pad-thumbnail {
  width: 220px;
  height: 84px;
  flex: 0 0 auto;
  object-fit: contain;
  border: 1px solid #e5eaf2;
  border-radius: 6px;
  background: #ffffff;
}

@media (max-width: 1100px) {
  .signature-pad {
    padding: 12px;
  }

  .signature-pad-result {
    align-items: flex-start;
    flex-direction: column;
  }

  .signature-pad-thumbnail {
    width: 100%;
    max-width: 360px;
  }
}
.assessor-complete-sign-modal .ant-modal {
  top: 3vh;
  max-width: 1480px;
  padding-bottom: 0;
}

.assessor-complete-sign-modal .ant-modal-content {
  padding: 20px 28px 24px;
}

.assessor-complete-sign-modal .ant-modal-header {
  margin-bottom: 12px;
}

.assessor-complete-sign-modal .ant-modal-title {
  font-size: 22px;
}

.assessor-complete-sign-modal .assessor-complete-sign-intro {
  font-size: 16px;
  line-height: 1.6;
}

.assessor-complete-sign-modal .signature-pad {
  padding: 18px;
}

.assessor-complete-sign-modal .signature-pad-canvas-host {
  min-height: 48vh;
}

.assessor-complete-sign-modal .signature-pad-canvas {
  height: 48vh;
  min-height: 420px;
}

.assessor-complete-sign-modal .signature-pad-hint {
  font-size: 32px;
}

.assessor-complete-sign-modal .signature-pad-actions .ant-btn,
.assessor-complete-sign-modal .signature-pad-native-panel .ant-btn {
  min-height: 56px;
  min-width: 140px;
  padding-inline: 28px;
  font-size: 18px;
}

.assessor-complete-sign-modal .signature-pad-native-panel {
  min-height: 220px;
  align-items: center;
  justify-content: center;
}

@media (max-height: 800px) {
  .assessor-complete-sign-modal .signature-pad-canvas-host {
    min-height: 42vh;
  }

  .assessor-complete-sign-modal .signature-pad-canvas {
    height: 42vh;
    min-height: 360px;
  }
}
.assessor-tablet-shell {
  min-height: 100vh;
  background: #eef3f8;
  color: #172033;
}

.assessor-tablet-header {
  position: sticky;
  z-index: 20;
  top: 0;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
  min-height: 82px;
  padding: 14px 24px;
  border-bottom: 1px solid #dbe4ee;
  background: rgba(255, 255, 255, 0.97);
}

.assessor-tablet-header-main {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.assessor-stage-switch {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 12px;
}

.assessor-stage-select {
  min-width: min(520px, 100%);
  flex: 1 1 280px;
}

.assessor-stage-select .ant-select-selector {
  min-height: 48px !important;
  padding-block: 8px !important;
  border-radius: 12px !important;
}

.assessor-stage-select .ant-select-selection-item {
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
  white-space: normal;
}

.assessor-stage-dropdown .ant-select-item {
  min-height: 44px;
  font-size: 15px;
}

.assessor-stage-dropdown .ant-select-item-option-content {
  white-space: normal;
  line-height: 1.4;
}

.assessor-stage-switch .ant-tag {
  max-width: 100%;
  padding: 6px 12px;
  white-space: normal;
  line-height: 1.4;
  font-size: 15px;
}

.assessor-tablet-header h3.ant-typography {
  margin: 0;
}

.assessor-tablet-main {
  display: grid;
  min-height: calc(100vh - 82px);
  grid-template-columns: 330px minmax(0, 1fr);
}

.assessor-task-list {
  border-right: 1px solid #dbe4ee;
  background: #fff;
}

.assessor-task-list-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 18px;
  border-bottom: 1px solid #edf1f5;
}

.assessor-task-list-title h4.ant-typography {
  margin: 0;
}

.assessor-task-list .ant-list-item {
  min-height: 112px;
  padding: 16px 18px;
  cursor: pointer;
}

.assessor-task-list .ant-list-item.selected {
  border-inline-end: 4px solid #1677ff;
  background: #eaf3ff;
}

.assessor-task-card {
  display: flex;
  width: 100%;
  flex-direction: column;
  gap: 8px;
}

.assessor-task-card small {
  color: #64748b;
}

.assessor-score-workspace {
  padding: 20px 24px 130px;
}

.assessor-candidate-bar,
.assessor-question-card,
.assessor-score-item,
.assessor-note {
  padding: 20px;
  border: 1px solid #dbe4ee;
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 8px 24px rgba(30, 55, 90, 0.05);
}

.assessor-candidate-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
}

.assessor-candidate-bar h3.ant-typography {
  margin: 2px 0;
}

.assessor-live-score {
  min-width: 128px;
  text-align: center;
}

.assessor-exam-stats {
  display: flex;
  align-items: center;
  gap: 22px;
  text-align: center;
}

.assessor-exam-stats > div {
  min-width: 112px;
}

.assessor-live-score span,
.assessor-live-score strong,
.assessor-exam-stats span,
.assessor-exam-stats strong {
  display: block;
}

.assessor-live-score strong {
  color: #1677ff;
  font-size: 42px;
  line-height: 48px;
}

.assessor-live-score small {
  color: #64748b;
  font-size: 20px;
}

.assessor-exam-stats span {
  color: #64748b;
}

.assessor-exam-stats strong {
  color: #172033;
  font-size: 28px;
  line-height: 34px;
}

.assessor-question-card {
  margin: 14px 0;
}

.assessor-question-nav {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(136px, 1fr));
  gap: 10px;
  margin: 14px 0;
}

.assessor-question-nav button {
  display: grid;
  min-height: 118px;
  gap: 6px;
  padding: 12px;
  border: 1px solid #dbe4ee;
  border-radius: 8px;
  background: #fff;
  color: #172033;
  text-align: left;
}

.assessor-question-nav button.active {
  border-color: #1677ff;
  background: #eaf3ff;
  box-shadow: inset 0 0 0 1px #1677ff;
}

.assessor-question-nav span,
.assessor-question-nav small {
  color: #64748b;
}

.assessor-question-nav strong {
  display: -webkit-box;
  min-height: 42px;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  line-height: 21px;
}

.assessor-question-title-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.assessor-question-score {
  min-width: 132px;
  text-align: right;
}

.assessor-question-score span,
.assessor-question-score strong {
  display: block;
}

.assessor-question-score span {
  color: #64748b;
}

.assessor-question-score strong {
  color: #1677ff;
  font-size: 24px;
}

.assessor-start-gate {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  padding: 28px;
  margin-bottom: 20px;
  border: 2px solid #1677ff;
  border-radius: 18px;
  background: #f0f7ff;
  text-align: center;
}

.assessor-start-steps {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
  justify-content: center;
}

.assessor-start-gate .ant-btn {
  min-width: 320px;
  min-height: 56px;
  font-size: 18px;
}

.assessor-question-card h3.ant-typography {
  margin-top: 0;
}

.assessor-prepare-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.assessor-prepare-grid div {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px;
  border-radius: 12px;
  background: #f5f8fc;
}

.assessor-progress-row {
  display: grid;
  grid-template-columns: 160px minmax(0, 1fr);
  align-items: center;
  margin: 20px 0 12px;
}

.assessor-score-items {
  display: grid;
  gap: 14px;
}

.assessor-score-item-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px 16px;
}

.assessor-score-item-head > div {
  display: flex;
  align-items: center;
  flex: 1 1 240px;
  min-width: 0;
  gap: 10px;
}

.assessor-score-item-head h4.ant-typography {
  margin: 0;
  min-width: 0;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.assessor-score-item-head > strong {
  flex: 0 0 auto;
  margin-left: auto;
  color: #1677ff;
  font-size: 24px;
  white-space: nowrap;
}

.assessor-item-no {
  display: grid;
  flex: 0 0 38px;
  width: 38px;
  height: 38px;
  place-items: center;
  border-radius: 10px;
  background: #1677ff;
  color: #fff;
  font-size: 18px;
  font-weight: 700;
}

.assessor-deduction-control {
  display: grid;
  grid-template-columns: minmax(180px, 1fr) 130px minmax(180px, 1fr);
  gap: 14px;
  align-items: stretch;
  margin: 16px 0;
}

.assessor-deduction-control .ant-btn {
  height: 58px;
  font-size: 17px;
  font-weight: 700;
}

.assessor-deduction-control > div {
  display: grid;
  place-items: center;
  border-radius: 12px;
  background: #fff7e6;
}

.assessor-deduction-control span,
.assessor-deduction-control strong {
  display: block;
}

.assessor-deduction-control strong {
  color: #d4380d;
  font-size: 26px;
}

.assessor-note {
  display: grid;
  gap: 10px;
  margin-top: 16px;
}

.assessor-submit-bar {
  position: fixed;
  z-index: 30;
  right: 0;
  bottom: 0;
  left: 330px;
  display: flex;
  min-height: 96px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 28px;
  border-top: 1px solid #dbe4ee;
  background: rgba(255, 255, 255, 0.98);
  box-shadow: 0 -8px 24px rgba(30, 55, 90, 0.08);
}

.assessor-submit-bar span,
.assessor-submit-bar strong {
  display: block;
}

.assessor-submit-bar strong {
  color: #1677ff;
  font-size: 34px;
}

.assessor-submit-bar .ant-btn {
  min-width: 180px;
  height: 58px;
  font-size: 18px;
  font-weight: 700;
}

.assessor-mobile-back {
  display: none;
}

@media (max-width: 900px), (orientation: portrait) {
  .assessor-tablet-header {
    padding: 12px 16px;
  }

  .assessor-tablet-main {
    display: block;
  }

  .assessor-tablet-main.has-selection .assessor-task-list {
    display: none;
  }

  .assessor-tablet-main:not(.has-selection) .assessor-score-workspace {
    display: none;
  }

  .assessor-task-list {
    border-right: 0;
  }

  .assessor-score-workspace {
    padding: 14px 14px 120px;
  }

  .assessor-candidate-bar,
  .assessor-question-title-row,
  .assessor-exam-stats {
    align-items: flex-start;
    flex-direction: column;
  }

  .assessor-exam-stats {
    width: 100%;
    gap: 10px;
    text-align: left;
  }

  .assessor-question-score {
    text-align: left;
  }

  .assessor-question-nav {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .assessor-mobile-back {
    display: inline-flex;
    height: 46px;
    margin-bottom: 12px;
  }

  .assessor-submit-bar {
    left: 0;
    min-height: 88px;
    padding: 10px 16px;
    flex-wrap: wrap;
  }

  .assessor-submit-bar .ant-btn {
    min-width: 0;
    flex: 1 1 150px;
  }

  .assessor-prepare-grid,
  .assessor-deduction-control {
    grid-template-columns: 1fr;
  }

  .assessor-deduction-control > div {
    min-height: 64px;
  }
}
body.defense-review-portrait {
  min-width: 0 !important;
  width: 100% !important;
  background: #0f172a;
}

html:has(body.defense-review-portrait),
body.defense-review-portrait #root {
  min-width: 0 !important;
  width: 100%;
}

.defense-phone-shell {
  display: flex;
  flex-direction: column;
  width: min(720px, 100vw);
  height: 100vh;
  height: 100dvh;
  max-height: 100vh;
  max-height: 100dvh;
  overflow: hidden;
  margin: 0 auto;
  background: #eef3f8;
  color: #172033;
}

.defense-phone-header,
.defense-phone-footer {
  z-index: 20;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  background: rgba(255, 255, 255, 0.97);
}

.defense-phone-header {
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  padding-top: calc(14px + env(safe-area-inset-top));
  border-bottom: 1px solid #dbe4ee;
}

.defense-phone-footer {
  justify-content: stretch;
  gap: 8px;
  padding: 8px 12px calc(8px + env(safe-area-inset-bottom));
  border-top: 1px solid #dbe4ee;
}

.defense-phone-footer .ant-btn {
  flex: 1;
  height: 36px;
  padding: 0 10px;
  font-size: 14px;
}

.defense-phone-title {
  flex: 1;
  min-width: 0;
}

.defense-phone-header h4.ant-typography {
  margin: 0;
}

.defense-phone-actions {
  display: flex;
  flex-shrink: 0;
  gap: 8px;
}

.defense-phone-back {
  flex-shrink: 0;
  height: 36px;
  padding: 0 10px;
}

.defense-phone-list,
.defense-phone-reader {
  flex: 1;
  min-height: 0;
  padding: 12px 12px calc(16px + env(safe-area-inset-bottom));
}

.defense-phone-list {
  overflow: auto;
}

.defense-phone-lanes {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.defense-phone-lane .ant-list-items {
  display: flex;
  flex-direction: column;
}

.defense-phone-lane-bar {
  position: sticky;
  top: 0;
  z-index: 6;
  display: flex;
  align-items: center;
  justify-content: space-between;
  min-height: 40px;
  padding: 0 14px;
  margin-bottom: 10px;
  border-radius: 10px;
  color: #fff;
  font-weight: 700;
  letter-spacing: 0.12em;
  box-shadow: 0 6px 16px rgba(15, 23, 42, 0.16);
}

.defense-phone-lane-label {
  font-size: 15px;
}

.defense-phone-lane-count {
  font-size: 13px;
  letter-spacing: 0;
  font-weight: 600;
  opacity: 0.92;
}

.defense-phone-lane-senior_technician .defense-phone-lane-bar {
  background: linear-gradient(90deg, #9a3412 0%, #ea580c 100%);
}

.defense-phone-lane-technician .defense-phone-lane-bar {
  background: linear-gradient(90deg, #1d4ed8 0%, #2563eb 100%);
}

.defense-phone-lane-empty {
  padding: 18px 12px;
  margin-bottom: 4px;
  border: 1px dashed #c5d0dc;
  border-radius: 12px;
  color: #64748b;
  text-align: center;
  background: rgba(255, 255, 255, 0.7);
}

.defense-phone-reader {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  padding-bottom: 0;
}

.defense-phone-card {
  align-items: center !important;
  gap: 12px;
  padding: 16px !important;
  margin-bottom: 10px;
  border: 1px solid #dbe4ee !important;
  border-radius: 16px;
  background: #fff;
}

.defense-phone-card .ant-list-item-main {
  flex: 1;
  min-width: 0;
}

.defense-phone-card-main {
  min-width: 0;
}

.defense-phone-card .ant-list-item-extra {
  margin-inline-start: 0;
}

.defense-phone-card h5.ant-typography {
  margin: 0 0 4px;
}

.defense-phone-card-actions {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
  flex-shrink: 0;
}

.defense-phone-card-actions .ant-btn {
  height: 40px;
  min-width: 96px;
  padding: 0 12px;
}

.defense-phone-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 8px 0;
}

.defense-phone-candidate {
  margin-bottom: 12px;
}

.defense-phone-candidate h3.ant-typography {
  margin: 0 0 4px;
}

.defense-pdf-wrap {
  position: relative;
  display: flex;
  flex: 1;
  width: 100%;
  min-width: 0;
  min-height: 0;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid #dbe4ee;
  border-radius: 16px;
  background: #525659;
}

.defense-pdf-pages-wrap {
  position: relative;
  display: flex;
  flex: 1;
  width: 100%;
  min-width: 0;
  min-height: 0;
  flex-direction: column;
}

.defense-pdf-pages {
  flex: 1;
  width: 100%;
  min-width: 0;
  min-height: 0;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior: contain;
  background: #525659;
}

.defense-pdf-page {
  display: block;
  width: 100%;
  max-width: 100%;
  margin: 0 auto 8px;
  background: #fff;
}

.defense-pdf-loading {
  position: absolute;
  z-index: 1;
  top: 24px;
  left: 50%;
  transform: translateX(-50%);
}

.defense-phone-spin {
  display: block;
  margin: 48px auto;
}

@media (orientation: landscape) {
  .defense-phone-shell::after {
    position: fixed;
    z-index: 40;
    right: 12px;
    bottom: 12px;
    padding: 8px 12px;
    border-radius: 999px;
    background: rgba(15, 23, 42, 0.85);
    color: #fff;
    font-size: 12px;
    content: '请竖屏阅览业绩评估报告';
    pointer-events: none;
  }

  .defense-phone-shell-score::after {
    content: none;
  }
}

.defense-phone-shell-score {
  width: min(720px, 100vw);
}

.defense-score-page {
  display: flex;
  flex: 1;
  min-height: 0;
  flex-direction: column;
  overflow: hidden;
}

.defense-score-toolbar {
  flex-shrink: 0;
  padding: 8px 12px 0;
}

.defense-score-toolbar .defense-phone-candidate {
  margin-bottom: 0;
}

.defense-score-toolbar .defense-phone-candidate h3.ant-typography {
  margin: 0;
  font-size: 20px;
  line-height: 1.3;
}

.defense-score-toolbar .ant-tabs {
  margin-bottom: 0;
}

.defense-score-toolbar .ant-tabs-nav {
  margin-bottom: 0;
}

.defense-score-toolbar .ant-tabs-tab {
  padding-top: 4px;
  padding-bottom: 8px;
}

.defense-score-tab-tag {
  margin-inline-start: 6px;
}

.defense-score-body {
  flex: 1;
  min-height: 0;
  overflow: auto;
  -webkit-overflow-scrolling: touch;
  padding: 8px 12px 12px;
}

.defense-score-actions {
  z-index: 20;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px calc(8px + env(safe-area-inset-bottom));
  border-top: 1px solid #dbe4ee;
  background: rgba(255, 255, 255, 0.97);
}

.defense-score-actions .ant-btn {
  height: 36px;
  padding: 0 10px;
  font-size: 14px;
}

.defense-score-actions-score {
  flex: 1;
  min-width: 0;
  color: #334155;
}

.defense-score-actions-score span {
  display: block;
  font-size: 12px;
}

.defense-score-actions-score strong {
  font-size: 20px;
  line-height: 1.1;
  color: #0f172a;
}

.defense-paper {
  padding: 12px 10px 16px;
  border: 1px solid #1f2937;
  background: #fffdf7;
  color: #111827;
}

.defense-paper-title {
  margin: 0 0 6px;
  text-align: center;
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 1px;
}

.defense-paper-meta {
  margin: 0 0 10px;
  text-align: center;
  font-size: 12px;
  color: #334155;
}

.defense-paper-meta-gap {
  margin-left: 18px;
}

.defense-paper-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  background: #fff;
}

.defense-paper-table th,
.defense-paper-table td {
  border: 1px solid #111827;
  padding: 6px 6px;
  font-size: 12px;
  line-height: 1.45;
  vertical-align: middle;
  word-break: break-word;
}

.defense-paper-table th {
  font-weight: 700;
  background: #f8fafc;
  text-align: center;
}

.defense-paper-section {
  writing-mode: vertical-rl;
  letter-spacing: 2px;
  font-size: 13px;
}

.defense-paper-section span {
  display: inline;
  letter-spacing: 0;
}

.defense-paper-category {
  text-align: center;
  letter-spacing: 1px;
  line-height: 1.45;
  white-space: normal;
}

.defense-paper-category span {
  display: block;
  margin-top: 4px;
  letter-spacing: 0;
  font-weight: 600;
}

.defense-paper-center {
  text-align: center;
  font-weight: 600;
}

.defense-paper-ticket {
  white-space: nowrap;
  letter-spacing: 0.04em;
  font-variant-numeric: tabular-nums;
}

.defense-paper-subtotal th,
.defense-paper-subtotal td,
.defense-paper-final th,
.defense-paper-final td {
  background: #f1f5f9;
  font-weight: 700;
}

.defense-paper-subtotal .defense-paper-criteria {
  font-weight: 400;
}

.defense-paper-rejects {
  display: flex;
  flex-direction: column;
  gap: 6px;
  text-align: left;
}

.defense-paper-score {
  width: 100%;
}

.defense-paper-score .ant-select-selector {
  min-height: 32px !important;
}

.defense-paper-criteria {
  text-align: left;
  font-weight: 400;
  font-size: 11px;
  line-height: 1.55;
  color: #1f2937;
  vertical-align: top;
}

.defense-paper-disqualify {
  display: block;
  margin-top: 8px;
  color: #b91c1c;
  font-size: 12px;
}

.defense-paper-disqualify .ant-checkbox-wrapper {
  white-space: normal;
  color: #b91c1c;
}

.defense-paper-subtotal.is-rejected th,
.defense-paper-subtotal.is-rejected td {
  background: #fef2f2;
  color: #991b1b;
}

.defense-sign-pad,
.defense-sign-native,
.defense-sign-preview {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.defense-sign-canvas-host {
  position: relative;
  width: 100%;
  height: 200px;
  overflow: hidden;
  border: 1px dashed #94a3b8;
  background: #fff;
  touch-action: none;
}

.defense-sign-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  touch-action: none;
}

.defense-sign-hint {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: #94a3b8;
  pointer-events: none;
}

.defense-sign-actions {
  display: flex;
  justify-content: flex-end;
}

.defense-sign-preview img {
  max-width: 100%;
  max-height: 180px;
  object-fit: contain;
  background: #fff;
}
.practical-collection-shell {
  min-height: 100vh;
  padding: 16px;
  background: #eef2f7;
  color: #172033;
  font-size: 16px;
}

.practical-collection-landing {
  display: grid;
  place-items: center;
}

.collection-landing-panel {
  width: min(680px, 94vw);
  padding: 36px;
  border: 1px solid #d7dee8;
  border-radius: 8px;
  background: #ffffff;
  box-shadow: 0 14px 36px rgba(15, 23, 42, 0.08);
}

.collection-landing-input {
  width: 100%;
}

.collection-workbench {
  display: flex;
  flex-direction: column;
  gap: 12px;
  max-width: 1366px;
  min-width: 0;
  margin: 0 auto;
}

.collection-topline {
  display: flex;
  justify-content: space-between;
  gap: 12px;
}

.collection-tablet-topline {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 14px;
  border: 1px solid #d7dee8;
  border-radius: 8px;
  background: #ffffff;
}

.collection-task-selector-bar {
  display: flex;
  min-width: 0;
  flex: 1;
  flex-direction: column;
  gap: 4px;
  padding: 4px 6px;
  border-radius: 8px;
  cursor: pointer;
}

.collection-task-selector-bar:hover {
  background: #f8fafc;
}

.collection-task-selector-kicker {
  font-size: 13px;
}

.collection-task-selector-name.ant-typography {
  margin: 0;
  overflow: hidden;
  font-size: 20px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.collection-task-selector-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  color: #64748b;
  font-size: 14px;
}

.collection-task-switch-button {
  align-self: flex-start;
  margin-top: 4px;
  min-height: 40px;
}

.collection-task-switch-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.collection-task-switch-list {
  display: flex;
  max-height: 58vh;
  flex-direction: column;
  gap: 10px;
  overflow: auto;
}

.collection-task-switch-loading {
  display: grid;
  min-height: 180px;
  place-items: center;
}

.collection-task-switch-item {
  display: block;
  width: 100%;
  padding: 14px 16px;
  border: 1px solid #e5eaf2;
  border-radius: 8px;
  background: #f8fafc;
  color: inherit;
  cursor: pointer;
  text-align: left;
}

.collection-task-switch-item:hover {
  border-color: #91caff;
  background: #eff6ff;
}

.collection-task-switch-item.is-current {
  border-color: #1677ff;
  background: #e6f4ff;
}

.collection-task-switch-item:disabled {
  cursor: not-allowed;
  opacity: 0.7;
}

.collection-task-switch-item-title {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 6px;
}

.collection-task-switch-item-title strong {
  color: #111827;
  font-size: 17px;
}

.collection-task-switch-item-meta,
.collection-task-switch-item-extra {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 16px;
  color: #64748b;
  font-size: 14px;
}

.collection-tablet-title {
  min-width: 0;
}

.collection-tablet-title h3.ant-typography {
  margin: 0 0 4px;
  overflow: hidden;
  font-size: 22px;
  letter-spacing: 0;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.collection-tablet-title .ant-typography {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.collection-tablet-status-strip {
  flex: 0 0 auto;
  justify-content: flex-end;
}

.collection-tablet-status-strip .ant-btn,
.collection-tablet-topline > .ant-btn {
  min-height: 44px;
  font-size: 16px;
}

.collection-loading {
  display: grid;
  min-height: 420px;
  place-items: center;
}

.collection-stats-bar {
  display: grid;
  grid-template-columns: minmax(220px, 1.1fr) minmax(480px, 2fr) minmax(220px, 1fr);
  gap: 12px;
  align-items: center;
  padding: 14px;
  border: 1px solid #d7dee8;
  border-radius: 8px;
  background: #ffffff;
}

.collection-task-title h3.ant-typography {
  margin: 0 0 4px;
  font-size: 20px;
  letter-spacing: 0;
}

.collection-stat-strip {
  display: grid;
  grid-template-columns: repeat(7, minmax(58px, 1fr));
  gap: 8px;
}

.collection-stat-cell {
  min-height: 58px;
  padding: 8px;
  border: 1px solid #e5eaf2;
  border-radius: 8px;
  background: #f8fafc;
}

.collection-stat-cell span {
  display: block;
  color: #64748b;
  font-size: 13px;
}

.collection-stat-cell strong {
  display: block;
  margin-top: 2px;
  color: #0f172a;
  font-size: 22px;
  line-height: 28px;
}

.collection-device-strip {
  justify-content: flex-end;
}

.candidate-search-box {
  padding: 12px;
  border: 1px solid #d7dee8;
  border-radius: 8px;
  background: #ffffff;
}

.candidate-search-actions {
  display: grid;
  grid-template-columns: 160px minmax(240px, 1fr) minmax(300px, 1.3fr);
  gap: 10px;
}

.candidate-search-actions .ant-btn,
.candidate-search-actions .ant-input,
.candidate-search-actions .ant-input-search-button {
  min-height: 48px;
  font-size: 16px;
}

.candidate-result-list {
  margin-top: 12px;
}

.candidate-result-item {
  min-height: 58px;
  padding-inline: 12px;
  border-radius: 8px;
  cursor: pointer;
}

.collection-workbench-grid {
  display: grid;
  grid-template-columns: minmax(230px, 0.8fr) minmax(430px, 1.5fr) minmax(280px, 0.95fr);
  gap: 12px;
  align-items: stretch;
}

.collection-tablet-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.95fr) minmax(320px, 0.95fr);
  gap: 12px;
  align-items: stretch;
}

.collection-tablet-main,
.collection-tablet-side {
  min-width: 0;
}

.collection-tablet-side {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.tablet-scan-card,
.tablet-candidate-list-card {
  border: 1px solid #d7dee8;
  border-radius: 8px;
  box-shadow: none;
}

.tablet-scan-card .ant-card-head,
.tablet-candidate-list-card .ant-card-head {
  min-height: 48px;
}

.tablet-scan-card .ant-card-head-title,
.tablet-candidate-list-card .ant-card-head-title {
  font-size: 18px;
}

.tablet-scan-hint {
  margin-bottom: 10px !important;
  font-size: 14px;
}

.tablet-scan-button.ant-btn {
  min-height: 72px;
  font-size: 22px;
  font-weight: 700;
}

.tablet-candidate-list-card {
  flex: 1;
  min-height: 0;
}

.tablet-candidate-list-card .ant-card-body {
  display: flex;
  max-height: calc(100vh - 196px);
  flex-direction: column;
  gap: 10px;
  overflow: hidden;
}

.tablet-candidate-list-card .ant-input {
  min-height: 44px;
  font-size: 16px;
}

.tablet-candidate-list {
  min-height: 0;
  overflow: auto;
}

.tablet-candidate-item {
  display: flex;
  min-height: 74px;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
  padding: 10px;
  border: 1px solid #e5eaf2;
  border-radius: 8px;
  background: #f8fafc;
  cursor: pointer;
}

.tablet-candidate-item:hover {
  border-color: #91caff;
  background: #eff6ff;
}

.tablet-candidate-item-main {
  display: flex;
  min-width: 0;
  flex: 1;
  flex-direction: column;
  gap: 2px;
}

.tablet-candidate-item-main strong {
  overflow: hidden;
  color: #111827;
  font-size: 17px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tablet-candidate-item-main span {
  overflow: hidden;
  color: #64748b;
  font-size: 14px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tablet-candidate-item .ant-btn {
  min-height: 44px;
  min-width: 96px;
  font-size: 15px;
}

.tablet-candidate-item .ant-tag {
  min-height: 28px;
  padding-inline: 10px;
  font-size: 14px;
  line-height: 26px;
}

.tablet-candidate-empty {
  display: grid;
  min-height: 160px;
  place-items: center;
  color: #64748b;
  font-size: 16px;
}

.tablet-debug-scan-alert {
  margin-bottom: 12px;
}

.collection-panel {
  min-width: 0;
  padding: 12px;
  border: 1px solid #d7dee8;
  border-radius: 8px;
  background: #ffffff;
}

.collection-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}

.collection-panel-header h4.ant-typography {
  margin: 0;
  font-size: 18px;
  letter-spacing: 0;
}

.candidate-status-list,
.queue-panel {
  max-height: calc(100vh - 276px);
  overflow: auto;
}

.touch-list-item {
  min-height: 64px;
  gap: 10px;
  margin-bottom: 8px;
  padding: 10px !important;
  border: 1px solid #e5eaf2;
  border-radius: 8px;
  background: #f8fafc;
  cursor: pointer;
}

.touch-list-main {
  display: flex;
  flex: 1;
  min-width: 0;
  flex-direction: column;
  gap: 2px;
}

.touch-list-main strong {
  color: #111827;
  font-size: 17px;
}

.touch-list-main span {
  overflow: hidden;
  color: #64748b;
  font-size: 14px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.queue-number {
  display: grid;
  width: 48px;
  height: 48px;
  flex: 0 0 auto;
  place-items: center;
  border-radius: 8px;
  background: #e0f2fe;
  color: #0369a1;
  font-weight: 700;
}

.current-candidate-panel {
  display: flex;
  flex-direction: column;
  gap: 12px;
  min-height: calc(100vh - 104px);
}

.current-candidate-hero,
.current-candidate-desc,
.current-candidate-actions {
  flex-shrink: 0;
}

.current-candidate-panel .signature-pad {
  flex: 1;
  min-height: 0;
}

.empty-current-candidate {
  display: grid;
  place-items: center;
}

.current-candidate-hero {
  padding: 8px 16px;
  border-radius: 8px;
  background: #f0fdf4;
  border: 1px solid #bbf7d0;
}

.current-candidate-hero h2.ant-typography {
  margin: 2px 0 0;
  color: #14532d;
  font-size: 30px;
  letter-spacing: 0;
  line-height: 1.2;
}

.current-candidate-desc .ant-descriptions-view {
  table-layout: fixed;
}

.current-candidate-desc .ant-descriptions-item-label,
.current-candidate-desc .ant-descriptions-item-content {
  padding: 4px 10px !important;
  font-size: 15px;
}

.signature-placeholder {
  display: flex;
  min-height: 260px;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 18px;
  border: 2px dashed #cbd5e1;
  border-radius: 8px;
  background: #f8fafc;
}

.current-candidate-actions,
.collection-bottom-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.current-candidate-actions .ant-btn,
.collection-bottom-actions .ant-btn,
.collection-device-strip .ant-btn,
.queue-panel .ant-btn {
  min-height: 48px;
  font-size: 16px;
}

.collection-bottom-actions {
  padding: 12px;
  border: 1px solid #d7dee8;
  border-radius: 8px;
  background: #ffffff;
}

.candidate-confirm-card {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.candidate-confirm-header {
  display: flex;
  align-items: center;
  gap: 14px;
}

.candidate-avatar {
  display: grid;
  width: 64px;
  height: 64px;
  flex: 0 0 auto;
  place-items: center;
  border-radius: 8px;
  background: #eff6ff;
  color: #1d4ed8;
  font-size: 30px;
}

.candidate-confirm-header h3.ant-typography {
  margin: 0 0 6px;
  letter-spacing: 0;
}

.candidate-confirm-warning {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  border-radius: 8px;
  background: #fef2f2;
  color: #b91c1c;
}

.candidate-confirm-actions .ant-btn {
  min-height: 48px;
}

.fingerprint-capture-panel {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px;
  border: 1px solid #e5eaf2;
  border-radius: 8px;
  background: #f8fafc;
}

@media (max-width: 1100px) {
  .collection-stats-bar {
    grid-template-columns: 1fr;
  }

  .collection-device-strip {
    justify-content: flex-start;
  }

  .candidate-search-actions {
    grid-template-columns: 1fr;
  }

  .collection-workbench-grid {
    grid-template-columns: 220px minmax(390px, 1fr) 260px;
  }

  .collection-tablet-topline {
    flex-direction: column;
  }

  .collection-tablet-status-strip {
    width: 100%;
    justify-content: flex-start;
  }

  .collection-tablet-layout {
    grid-template-columns: minmax(0, 1.75fr) minmax(300px, 0.85fr);
  }
}
.competition-page {
  min-height: 100%;
  padding: 8px 0 32px;
  color: #17233b;
}

.competition-page-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 24px;
  margin-bottom: 20px;
}

.competition-page-heading .ant-typography { margin-bottom: 4px; }
.competition-page-heading h2.ant-typography { margin: 0 0 7px; font-size: 26px; }
.competition-list-hero { padding: 18px 22px; border: 1px solid #e3eaf4; border-radius: 14px; background: linear-gradient(135deg, #fff 0%, #f6faff 70%, #edf5ff 100%); box-shadow: 0 10px 24px rgba(34, 73, 131, .06); }
.competition-list-actions { display: flex; justify-content: flex-end; min-height: 32px; margin-bottom: 12px; }
.competition-form-hero { padding-bottom: 4px; }
.competition-page-heading > div:first-child > .ant-btn { padding-left: 0; margin-bottom: 8px; }
.competition-create-modal .ant-modal-body { max-height: calc(100vh - 180px); overflow-y: auto; }
.competition-form-modal-content { padding-top: 4px; }
.competition-form-modal-content .competition-form-card { box-shadow: none; }
.competition-detail-modal-content { padding-top: 4px; }
.competition-detail-modal-content .competition-page { padding-bottom: 0; }

.competition-filter-card,
.competition-table-card,
.competition-form-card,
.competition-detail-card,
.competition-status-banner,
.competition-module-card,
.competition-status-strip,
.competition-audit-card { margin-bottom: 16px; }

.competition-filter-card--workspace .ant-card-body { padding: 18px; }
.competition-filter-card--compact .ant-card-body { padding: 12px 18px; }
.competition-filter-card__head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.competition-filter-card__head .ant-typography { margin: 0; }
.competition-filter-card__body { width: 100%; }
.competition-plan-table-card .ant-card-body { padding-top: 4px; }
.competition-event-name { padding-inline: 0; font-weight: 600; }
.competition-roster-batch-link { display: block; width: 100%; overflow: hidden; padding-inline: 0; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
.competition-roster-org-name { display: block; overflow: hidden; text-overflow: clip; white-space: nowrap; }
.competition-roster-import-form { flex-wrap: nowrap; align-items: center; gap: 8px; overflow-x: auto; }
.competition-roster-import-form > .ant-form-item { flex: 0 0 auto; margin-inline-end: 0; margin-bottom: 0; }
.competition-roster-import-form > .ant-form-item .ant-form-item-label { padding-inline-end: 6px; }
.competition-roster-upload-actions .ant-space { display: flex; }
.competition-roster-upload-submit.ant-btn-primary:disabled { color: #6c9ff0; border-color: #b8d2ff; background: #e8f1ff; }
.competition-player-identity-fields { width: 360px; max-width: 100%; }
.competition-roster-import-wizard__body { margin-top: 28px; }
.competition-roster-import-wizard__body .competition-card-heading { margin-bottom: 12px; }

.competition-event-hero { display: flex; justify-content: space-between; gap: 24px; padding: 22px 24px; margin-bottom: 14px; border: 1px solid #e2eaf5; border-radius: 15px; background: radial-gradient(circle at 95% 8%, rgba(48, 130, 246, .13), transparent 28%), linear-gradient(135deg, #fff, #f5f9ff); box-shadow: 0 12px 30px rgba(27, 49, 88, .07); }
.competition-event-hero__main { min-width: 0; }
.competition-event-hero__title-row { display: flex; align-items: center; gap: 14px; }
.competition-event-hero__mark { display: grid; flex: 0 0 48px; width: 48px; height: 48px; place-items: center; border-radius: 13px; color: #fff; background: linear-gradient(135deg, #4097ff, #176cf5); box-shadow: 0 10px 22px rgba(23, 108, 245, .22); font-size: 22px; font-weight: 700; }
.competition-event-hero h2.ant-typography { margin: 0 0 7px; font-size: 25px; }
.competition-event-hero__description { max-width: 800px; margin: 17px 0 12px !important; color: #68768c; }
.competition-event-hero__actions { display: flex; align-items: flex-start; justify-content: flex-end; min-width: 240px; }
.competition-event-meta { display: flex; align-items: center; gap: 11px; color: #78869b; font-size: 12px; }
.competition-event-meta .anticon { margin-right: 5px; color: #176cf5; }
.competition-event-meta strong { color: #34445d; font-weight: 600; }

.competition-workspace-nav { display: flex; flex-wrap: wrap; gap: 3px; padding: 7px; margin-bottom: 18px; border: 1px solid #e4eaf2; border-radius: 10px; background: #fff; box-shadow: 0 4px 14px rgba(39, 58, 91, .035); }
.competition-workspace-nav .ant-btn { color: #66748a; }
.competition-workspace-nav .ant-btn-primary { color: #fff; box-shadow: none; }

.competition-status-strip { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; overflow: hidden; border: 1px solid #e3eaf3; border-radius: 12px; background: #fff; }
.competition-status-strip > div { display: flex; flex-direction: column; gap: 8px; padding: 16px 18px; border-right: 1px solid #edf0f5; }
.competition-status-strip > div:last-child { border-right: 0; }
.competition-status-strip span { color: #8793a5; font-size: 12px; }
.competition-status-strip strong { color: #263650; font-size: 15px; }
.competition-status-strip strong .ant-tag { margin: 0; }

.competition-detail-grid { display: grid; grid-template-columns: 1.45fr 1fr; gap: 16px; }
.competition-detail-grid--single { grid-template-columns: 1fr; }
.competition-detail-card .ant-card-body,
.competition-module-card .ant-card-body,
.competition-audit-card .ant-card-body { padding: 20px; }
.competition-card-heading { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 18px; }
.competition-card-heading .ant-typography { margin: 0; }
.competition-status-tag {
  align-self: flex-start;
  min-width: 30px;
  height: 17px;
  padding-inline: 5px;
  line-height: 15px;
  text-align: center;
}
.competition-entry-qr { width: 136px; height: 136px; padding: 6px; border: 1px solid #e2eaf5; border-radius: 8px; background: #fff; }
.competition-entry-qr__actions { display: flex; flex-direction: column; gap: 8px; max-width: 360px; padding-top: 3px; }
.competition-entry-qr__actions .ant-typography { display: block; margin: 0; }
.competition-entry-qr__actions .ant-btn { align-self: flex-start; }
.competition-card-heading__icon { color: #7daeff; font-size: 20px; }
.competition-stage-flow { display: flex; flex-direction: column; gap: 15px; }
.competition-stage-flow__item { display: flex; align-items: flex-start; gap: 11px; }
.competition-stage-flow__dot { display: grid; flex: 0 0 27px; width: 27px; height: 27px; place-items: center; border-radius: 50%; color: #176cf5; background: #eaf2ff; font-size: 12px; font-weight: 700; }
.competition-stage-flow__item:not(:last-child) .competition-stage-flow__dot { box-shadow: 0 28px 0 -13px #dce8fb; }
.competition-stage-flow__item strong, .competition-stage-flow__item small { display: block; }
.competition-stage-flow__item strong { margin: 3px 0 4px; color: #34445d; font-size: 13px; }
.competition-stage-flow__item small { color: #8a96a6; font-size: 11px; }
.competition-empty-state { display: flex; align-items: center; flex-direction: column; gap: 8px; padding: 35px 10px; color: #8a96a6; text-align: center; }
.competition-empty-state .anticon { color: #a8c9ff; font-size: 28px; }
.competition-empty-state strong { color: #596981; font-size: 13px; }
.competition-empty-state span { font-size: 11px; }

.competition-module-card { margin-top: 16px; }
.competition-module-grid { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 11px; }
.competition-module-item { display: flex; align-items: center; gap: 10px; min-height: 76px; padding: 12px; border: 1px solid #e4eaf2; border-radius: 10px; background: #fff; color: #34445d; text-align: left; transition: transform .16s ease, box-shadow .16s ease, border-color .16s ease; }
.competition-module-item:hover { border-color: #a9caff; box-shadow: 0 8px 18px rgba(23, 108, 245, .09); transform: translateY(-2px); }
.competition-module-item__icon { display: grid; flex: 0 0 31px; width: 31px; height: 31px; place-items: center; border-radius: 8px; color: #176cf5; background: #edf4ff; }
.competition-module-item--purple .competition-module-item__icon { color: #7657e8; background: #f0edff; }
.competition-module-item--orange .competition-module-item__icon { color: #d98513; background: #fff4e5; }
.competition-module-item--green .competition-module-item__icon { color: #13a673; background: #e9f8f3; }
.competition-module-item--cyan .competition-module-item__icon { color: #0891b2; background: #e6f8fc; }
.competition-module-item > span:nth-child(2) { min-width: 0; }
.competition-module-item strong, .competition-module-item small { display: block; }
.competition-module-item strong { margin-bottom: 5px; font-size: 12px; }
.competition-module-item small { overflow: hidden; color: #8a96a6; font-size: 10px; line-height: 1.45; text-overflow: ellipsis; white-space: nowrap; }
.competition-module-item__arrow { margin-left: auto; color: #a8b4c5; font-size: 19px; }

.competition-audit-line { display: flex; gap: 11px; padding: 5px 0 16px; }
.competition-audit-line:last-child { padding-bottom: 0; }
.competition-audit-dot { display: block; flex: 0 0 9px; width: 9px; height: 9px; margin-top: 4px; border: 3px solid #cfe1ff; border-radius: 50%; background: #176cf5; }
.competition-audit-dot--muted { background: #9ba8b9; border-color: #e3e8ef; }
.competition-audit-line strong, .competition-audit-line small { display: block; }
.competition-audit-line strong { color: #536279; font-size: 12px; }
.competition-audit-line small { margin-top: 4px; color: #8a96a6; font-size: 11px; }

.competition-wizard-steps { padding: 18px 20px; margin-bottom: 16px; border: 1px solid #e4eaf2; border-radius: 12px; background: #fff; }
.competition-form-card__intro { display: flex; align-items: center; gap: 12px; padding-bottom: 18px; margin-bottom: 19px; border-bottom: 1px solid #edf0f5; }
.competition-form-card__intro .ant-typography { margin: 0; }
.competition-section-icon { display: grid; flex: 0 0 38px; width: 38px; height: 38px; place-items: center; border-radius: 10px; color: #176cf5; background: #edf4ff; font-size: 17px; }
.competition-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 24px; }
.competition-loading { display: block; margin: 120px auto; }
.competition-selected-row td { background: #f3f8ff !important; }
.competition-score-context .ant-card-body { padding: 20px; }
.competition-score-readiness { margin-bottom: 16px; }
.competition-ranking-draft-actions { width: 100%; margin: 16px 0; }
.competition-ranking-draft-actions + .ant-pro-table { margin-bottom: 14px; }
.competition-notice-form-grid { display: grid; grid-template-columns: minmax(0, 1fr) 140px; gap: 18px; }
.competition-notice-pdf { padding: 18px; border: 1px solid #e5eaf1; border-radius: 10px; background: #fafcff; }
.competition-notice-pdf__icon { color: #d4380d; font-size: 23px; }
.competition-notice-pdf__replace { margin-top: 14px; }
.competition-notice-pdf .ant-upload-wrapper,
.competition-notice-pdf .ant-upload-select { width: 100%; }
.competition-notice-pdf .ant-upload-drag { background: #fff; }
.md-editor { border-color: #d9d9d9; border-radius: 8px; overflow: hidden; }
.md-editor img { max-width: 100%; }

@media (max-width: 1100px) {
  .competition-module-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 860px) {
  .competition-detail-grid { grid-template-columns: 1fr; }
  .competition-event-hero { flex-direction: column; }
  .competition-event-hero__actions { justify-content: flex-start; min-width: 0; }
  .competition-status-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .competition-status-strip > div:nth-child(2) { border-right: 0; }
  .competition-status-strip > div:nth-child(-n + 2) { border-bottom: 1px solid #edf0f5; }
  .competition-module-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 620px) {
  .competition-page { padding-top: 0; }
  .competition-page-heading { flex-direction: column; }
  .competition-module-grid, .competition-status-strip { grid-template-columns: 1fr; }
  .competition-status-strip > div { border-right: 0; border-bottom: 1px solid #edf0f5; }
  .competition-status-strip > div:last-child { border-bottom: 0; }
  .competition-filter-card__head { align-items: flex-start; flex-direction: column; }
  .competition-form-grid { grid-template-columns: 1fr; }
  .competition-notice-form-grid { grid-template-columns: 1fr; gap: 0; }
  .competition-event-hero { padding: 18px; }
  .competition-event-hero__title-row { align-items: flex-start; }
  .competition-event-hero h2.ant-typography { font-size: 21px; }
  .competition-wizard-steps .ant-steps-item-description { display: none; }
}

.md-editor .md-editor-preview{--md-theme-color: var(--md-color);--md-theme-color-reverse: #eee;--md-theme-color-hover: #eee;--md-theme-color-hover-inset: #ddd;--md-theme-link-color: #2d8cf0;--md-theme-link-hover-color: #73d13d;--md-theme-border-color: #e6e6e6;--md-theme-border-color-reverse: #bebebe;--md-theme-border-color-inset: #d6d6d6;--md-theme-bg-color: #fff;--md-theme-bg-color-inset: #ececec;--md-theme-code-copy-tips-color: inherit;--md-theme-code-copy-tips-bg-color: #fff;--md-theme-code-active-color: #61aeee;--md-theme-radius-s: 2px;--md-theme-radius-m: 5px}
.md-editor-dark .md-editor-preview{--md-theme-color: var(--md-color);--md-theme-color-reverse: #222;--md-theme-color-hover: #191919;--md-theme-color-hover-inset: #444;--md-theme-link-color: #2d8cf0;--md-theme-link-hover-color: #73d13d;--md-theme-border-color: #2d2d2d;--md-theme-border-color-reverse: #e6e6e6;--md-theme-border-color-inset: #5a5a5a;--md-theme-bg-color: #000;--md-theme-bg-color-inset: #111;--md-theme-code-copy-tips-color: inherit;--md-theme-code-copy-tips-bg-color: #3a3a3a;--md-theme-code-active-color: #e6c07b;--md-theme-radius-s: 2px;--md-theme-radius-m: 5px}
.md-editor .md-editor-admonition-note{--md-admonition-color: #212121;--md-admonition-bg-color: #FFFFFF;--md-admonition-border-color: rgb(166.2, 166.2, 166.2)}
.md-editor .md-editor-admonition-tip{--md-admonition-color: #616161;--md-admonition-bg-color: #F5F5F5;--md-admonition-border-color: rgb(185.8, 185.8, 185.8)}
.md-editor .md-editor-admonition-info{--md-admonition-color: #424242;--md-admonition-bg-color: #F0F0F0;--md-admonition-border-color: rgb(170.4, 170.4, 170.4)}
.md-editor .md-editor-admonition-quote{--md-admonition-color: #455a64;--md-admonition-bg-color: #eceff1;--md-admonition-border-color: rgb(169.2, 179.4, 184.6)}
.md-editor .md-editor-admonition-abstract{--md-admonition-color: #0288d1;--md-admonition-bg-color: #e1f5fe;--md-admonition-border-color: rgb(135.8, 201.4, 236)}
.md-editor .md-editor-admonition-attention{--md-admonition-color: #1e88e5;--md-admonition-bg-color: #e3f2fd;--md-admonition-border-color: rgb(148.2, 199.6, 243.4)}
.md-editor .md-editor-admonition-example{--md-admonition-color: #5e35b1;--md-admonition-bg-color: #ede7f6;--md-admonition-border-color: rgb(179.8, 159.8, 218.4)}
.md-editor .md-editor-admonition-hint{--md-admonition-color: #00897B;--md-admonition-bg-color: #E0F2F1;--md-admonition-border-color: rgb(134.4, 200, 193.8)}
.md-editor .md-editor-admonition-success{--md-admonition-color: #388e3c;--md-admonition-bg-color: #e8f5e9;--md-admonition-border-color: rgb(161.6, 203.8, 163.8)}
.md-editor .md-editor-admonition-question{--md-admonition-color: #f9a825;--md-admonition-bg-color: #fffde7;--md-admonition-border-color: rgb(252.6, 219, 153.4)}
.md-editor .md-editor-admonition-caution{--md-admonition-color: #fb8c00;--md-admonition-bg-color: #fff8e1;--md-admonition-border-color: rgb(253.4, 204.8, 135)}
.md-editor .md-editor-admonition-warning{--md-admonition-color: #f57c00;--md-admonition-bg-color: #fff3e0;--md-admonition-border-color: rgb(251, 195.4, 134.4)}
.md-editor .md-editor-admonition-danger{--md-admonition-color: #d84315;--md-admonition-bg-color: #ffebee;--md-admonition-border-color: rgb(239.4, 167.8, 151.2)}
.md-editor .md-editor-admonition-failure{--md-admonition-color: #d32f2f;--md-admonition-bg-color: #fee2e6;--md-admonition-border-color: rgb(236.8, 154.4, 156.8)}
.md-editor .md-editor-admonition-bug{--md-admonition-color: #c31a1a;--md-admonition-bg-color: #fddadd;--md-admonition-border-color: rgb(229.8, 141.2, 143)}
.md-editor .md-editor-admonition-error{--md-admonition-color: #b71c1c;--md-admonition-bg-color: #fdd2d6;--md-admonition-border-color: rgb(225, 137.2, 139.6)}
.md-editor-dark .md-editor-admonition-note{--md-admonition-color: #E0E0E0;--md-admonition-bg-color: #1E1E1E;--md-admonition-border-color: rgb(107.6, 107.6, 107.6)}
.md-editor-dark .md-editor-admonition-tip{--md-admonition-color: #B0B0B0;--md-admonition-bg-color: #262626;--md-admonition-border-color: rgb(93.2, 93.2, 93.2)}
.md-editor-dark .md-editor-admonition-info{--md-admonition-color: #B3B3B3;--md-admonition-bg-color: #2B2B2B;--md-admonition-border-color: rgb(97.4, 97.4, 97.4)}
.md-editor-dark .md-editor-admonition-quote{--md-admonition-color: #b0bec5;--md-admonition-bg-color: #263238;--md-admonition-border-color: rgb(93.2, 106, 112.4)}
.md-editor-dark .md-editor-admonition-abstract{--md-admonition-color: #81d4fa;--md-admonition-bg-color: #012f45;--md-admonition-border-color: rgb(52.2, 113, 141.4)}
.md-editor-dark .md-editor-admonition-attention{--md-admonition-color: #64b5f6;--md-admonition-bg-color: #102a4c;--md-admonition-border-color: rgb(49.6, 97.6, 144)}
.md-editor-dark .md-editor-admonition-example{--md-admonition-color: #9575cd;--md-admonition-bg-color: #271b52;--md-admonition-border-color: rgb(83, 63, 131.2)}
.md-editor-dark .md-editor-admonition-hint{--md-admonition-color: #4DB6AC;--md-admonition-bg-color: #003D3A;--md-admonition-border-color: rgb(30.8, 109.4, 103.6)}
.md-editor-dark .md-editor-admonition-success{--md-admonition-color: #81c784;--md-admonition-bg-color: #1b5e20;--md-admonition-border-color: rgb(67.8, 136, 72)}
.md-editor-dark .md-editor-admonition-question{--md-admonition-color: #ffd54f;--md-admonition-bg-color: #3e2f00;--md-admonition-border-color: rgb(139.2, 113.4, 31.6)}
.md-editor-dark .md-editor-admonition-caution{--md-admonition-color: #ffcc80;--md-admonition-bg-color: #3e2600;--md-admonition-border-color: rgb(139.2, 104.4, 51.2)}
.md-editor-dark .md-editor-admonition-warning{--md-admonition-color: #ffb74d;--md-admonition-bg-color: #3d2600;--md-admonition-border-color: rgb(138.6, 96, 30.8)}
.md-editor-dark .md-editor-admonition-danger{--md-admonition-color: #ef9a9a;--md-admonition-bg-color: #3c0000;--md-admonition-border-color: rgb(131.6, 61.6, 61.6)}
.md-editor-dark .md-editor-admonition-failure{--md-admonition-color: #ef9a9a;--md-admonition-bg-color: #3c0900;--md-admonition-border-color: rgb(131.6, 67, 61.6)}
.md-editor-dark .md-editor-admonition-bug{--md-admonition-color: #e68381;--md-admonition-bg-color: #300000;--md-admonition-border-color: rgb(120.8, 52.4, 51.6)}
.md-editor-dark .md-editor-admonition-error{--md-admonition-color: #ef5350;--md-admonition-bg-color: #300000;--md-admonition-border-color: rgb(124.4, 33.2, 32)}
.md-editor-preview .md-editor-admonition{background-color:var(--md-admonition-bg-color);border:1px solid var(--md-admonition-border-color);border-radius:var(--md-theme-radius-m);color:var(--md-admonition-color);display:flow-root;font-size:14px;font-weight:400;margin:1rem 0;padding:1em 1em .5em;page-break-inside:avoid}
.md-editor-preview .md-editor-admonition-title{margin:0;padding:0;position:relative;font-weight:700}
.md-editor-preview .md-editor-admonition p{margin:.5em 0;padding:0}
.md-editor-preview .md-editor-admonition p:first-of-type{margin-block-start:0}
.md-editor-preview .md-editor-admonition+p:empty,.md-editor-preview .md-editor-admonition+p:empty+p:empty{display:none}
.md-editor-preview .md-editor-mermaid{overflow:hidden;line-height:normal}
.md-editor-preview .md-editor-mermaid p{line-height:normal}
.md-editor-preview .md-editor-mermaid:not([data-processed]){white-space:pre}
.md-editor-preview [class=md-editor-mermaid][data-grab]{cursor:grab}
.md-editor-preview [class=md-editor-mermaid][data-grab]:active{cursor:grabbing}
.md-editor-preview [class=md-editor-mermaid][data-processed]{position:relative;display:flex;justify-content:center;align-items:center}
.md-editor-preview [class=md-editor-mermaid][data-processed] svg{transform-origin:top left}
.md-editor-preview [class=md-editor-mermaid][data-processed] .md-editor-mermaid-action{position:absolute;inset-block-start:10px;inset-inline-end:10px;z-index:1;opacity:0;transition:opacity .3s;cursor:pointer;display:flex;gap:8px}
.md-editor-preview [class=md-editor-mermaid][data-processed] .md-editor-mermaid-action svg{padding:6px;border-radius:4px;background-color:var(--md-bk-color-outstand)}
.md-editor-preview [class=md-editor-mermaid][data-processed]:hover .md-editor-mermaid-action{opacity:1}
.md-editor-katex-block{text-align:center;margin:20px}
.md-editor-katex-inline,.md-editor-katex-block{display:none;direction:ltr}
.md-editor-katex-inline[data-processed]{display:initial}
.md-editor-katex-block[data-processed]{display:block}
.md-editor .md-editor-preview{--md-theme-code-inline-color: #3594f7;--md-theme-code-inline-bg-color: rgba(59, 170, 250, 0.1);--md-theme-code-inline-radius: var(--md-theme-radius-s);--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #282c34;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: var(--md-theme-radius-m)}
.md-editor-dark .md-editor-preview{--md-theme-code-inline-color: #3594f7;--md-theme-code-inline-bg-color: rgba(59, 170, 250, 0.1);--md-theme-code-inline-radius: var(--md-theme-radius-s);--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: var(--md-theme-radius-m)}
.md-editor-preview code{direction:ltr;color:var(--md-theme-code-inline-color);background-color:var(--md-theme-code-inline-bg-color);border-radius:var(--md-theme-code-inline-radius);padding:2px 4px;line-height:22px}
.md-editor-preview .md-editor-code{color:var(--md-theme-code-block-color);font-size:12px;line-height:1;margin:20px 0;position:relative}
.md-editor-preview .md-editor-code input[type=radio],.md-editor-preview .md-editor-code input[type=radio]+pre,.md-editor-preview .md-editor-code input[type=radio]+span.md-editor-code-lang{display:none}
.md-editor-preview .md-editor-code input:checked+pre,.md-editor-preview .md-editor-code input:checked+span.md-editor-code-lang{display:block}
.md-editor-preview .md-editor-code input:checked+label{border-block-end:1px solid;color:var(--md-theme-code-active-color)}
.md-editor-preview .md-editor-code .md-editor-code-head{display:grid;grid-template:"1fr 1fr";justify-content:space-between;height:32px;width:100%;font-size:12px;background-color:var(--md-theme-code-before-bg-color);margin-block-end:0;border-start-start-radius:var(--md-theme-code-block-radius);border-start-end-radius:var(--md-theme-code-block-radius);-webkit-tap-highlight-color:rgba(0,0,0,0);list-style:none;position:sticky;top:0;z-index:10000}
.md-editor-preview .md-editor-code .md-editor-code-head::-webkit-details-marker{display:none}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag{margin-inline-start:12px}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span{display:inline-block;width:10px;height:10px;border-radius:50%;margin-block-start:11px}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(1){background-color:#ec6a5e}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(2){background-color:#f4bf4f}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span:nth-of-type(3){background-color:#61c554}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag span+span{margin-inline-start:4px}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label{box-sizing:border-box;white-space:nowrap;user-select:none;background-color:var(--md-theme-code-block-bg-color);margin-block-start:8px;padding:0}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li{line-height:1;list-style:none;display:inline-block;position:relative;vertical-align:super;margin:0}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li label{cursor:pointer;user-select:none;display:inline-block;font-size:14px}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-flag ul.md-editor-codetab-label li+li{margin-inline-start:12px}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-action{display:flex;align-items:center}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-action>*{margin-inline-end:10px}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-code-lang{line-height:32px}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button:not(data-is-icon){cursor:pointer;line-height:32px;position:initial}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button:not(data-is-icon) .md-editor-icon{width:15px;height:15px;display:inline-block;vertical-align:sub}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]{cursor:pointer;line-height:1;position:relative}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon] .md-editor-icon{width:15px;height:15px;display:inline-block;vertical-align:sub}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]::before{content:attr(data-tips);color:var(--md-theme-code-copy-tips-color);background-color:var(--md-theme-code-copy-tips-bg-color);position:absolute;font-size:12px;font-family:sans-serif;width:max-content;text-align:center;padding:4px;border-radius:var(--md-theme-radius-s);box-shadow:0 0 2px rgba(0,0,0,.2);inset-inline-start:-10px;inset-block-start:50%;transform:translate(-100%, -50%)}
[dir=rtl] .md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]::before{transform:translate(100%, -50%)}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]::after{content:"";color:var(--md-theme-code-copy-tips-bg-color);position:absolute;width:0;height:0;border:5px solid rgba(0,0,0,0);border-inline-end-width:0;border-inline-start-color:currentColor;inset-inline-start:-10px;inset-block-start:50%;transform:translate(0, -50%);filter:drop-shadow(4px 0 2px rgba(0, 0, 0, 0.2))}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]::before,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]::after{visibility:hidden;transition:.3s}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:hover::before,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-copy-button[data-is-icon]:hover::after{visibility:visible}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips{margin-inline-end:12px}
.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips .md-editor-icon,.md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips .md-editor-iconfont{width:16px;height:16px;font-size:16px;display:inline-block;vertical-align:sub;transition:transform .1s;transform:rotate(0)}
[dir=rtl] .md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips .md-editor-icon,[dir=rtl] .md-editor-preview .md-editor-code .md-editor-code-head .md-editor-collapse-tips .md-editor-iconfont{transform:rotate(180deg)}
.md-editor-preview .md-editor-code pre{position:relative;margin:0}
.md-editor-preview .md-editor-code pre code{font-family:source-code-pro,Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;color:var(--md-theme-code-block-color);background-color:var(--md-theme-code-before-bg-color);display:block;line-height:1.6;overflow:auto;padding:1em;position:relative;border-start-start-radius:0;border-start-end-radius:0;border-end-start-radius:var(--md-theme-code-block-radius);border-end-end-radius:var(--md-theme-code-block-radius)}
.md-editor-preview .md-editor-code pre code .md-editor-code-block{display:inline-block;width:100%;overflow:auto;vertical-align:bottom;color:var(--md-theme-code-block-color)}
.md-editor-preview details.md-editor-code .md-editor-code-head{cursor:pointer}
.md-editor-preview details.md-editor-code:not(open) .md-editor-code-head{border-end-start-radius:var(--md-theme-code-block-radius);border-end-end-radius:var(--md-theme-code-block-radius)}
.md-editor-preview details.md-editor-code[open] .md-editor-code-head{border-end-start-radius:0;border-end-end-radius:0}
.md-editor-preview details.md-editor-code[open] .md-editor-code-head .md-editor-collapse-tips .md-editor-icon,.md-editor-preview details.md-editor-code[open] .md-editor-code-head .md-editor-collapse-tips .md-editor-iconfont{transform:rotate(-90deg)}
[dir=rtl] .md-editor-preview details.md-editor-code[open] .md-editor-code-head .md-editor-collapse-tips .md-editor-icon,[dir=rtl] .md-editor-preview details.md-editor-code[open] .md-editor-code-head .md-editor-collapse-tips .md-editor-iconfont{transform:rotate(270deg)}
.md-editor-scrn span[rn-wrapper]{position:absolute;pointer-events:none;font-size:100%;inset-block-start:1em;inset-inline-start:0;width:3em;letter-spacing:-1px;user-select:none;counter-reset:linenumber}
.md-editor-scrn span[rn-wrapper]>span{display:block;pointer-events:none;counter-increment:linenumber}
.md-editor-scrn span[rn-wrapper]>span::before{color:#999;display:block;padding-inline-end:.5em;text-align:right;content:counter(linenumber)}
.md-editor-scrn pre code{padding-inline-start:3.5em !important}
.md-editor-preview figure{margin:0 0 1em 0;display:inline-flex;flex-direction:column;text-align:center}
.md-editor-preview figure figcaption{color:var(--md-theme-color);font-size:.875em;margin-block-start:5px}
.md-editor .md-editor-preview{--md-theme-heading-color: var(--md-theme-color);--md-theme-heading-border: none;--md-theme-heading-1-color: var(--md-theme-heading-color);--md-theme-heading-1-border: var(--md-theme-heading-border);--md-theme-heading-2-color: var(--md-theme-heading-color);--md-theme-heading-2-border: var(--md-theme-heading-border);--md-theme-heading-3-color: var(--md-theme-heading-color);--md-theme-heading-3-border: var(--md-theme-heading-border);--md-theme-heading-4-color: var(--md-theme-heading-color);--md-theme-heading-4-border: var(--md-theme-heading-border);--md-theme-heading-5-color: var(--md-theme-heading-color);--md-theme-heading-5-border: var(--md-theme-heading-border);--md-theme-heading-6-color: var(--md-theme-heading-color);--md-theme-heading-6-border: var(--md-theme-heading-border)}
.md-editor-preview h1,.md-editor-preview h2,.md-editor-preview h3,.md-editor-preview h4,.md-editor-preview h5,.md-editor-preview h6{position:relative;word-break:break-all;margin:1.4em 0 .8em 0;font-weight:bold}
.md-editor-preview h1 a,.md-editor-preview h2 a,.md-editor-preview h3 a,.md-editor-preview h4 a,.md-editor-preview h5 a,.md-editor-preview h6 a{color:inherit}
.md-editor-preview h1 a:hover,.md-editor-preview h2 a:hover,.md-editor-preview h3 a:hover,.md-editor-preview h4 a:hover,.md-editor-preview h5 a:hover,.md-editor-preview h6 a:hover{color:inherit}
.md-editor-preview h1{color:var(--md-theme-heading-1-color);border-block-end:var(--md-theme-heading-1-border)}
.md-editor-preview h2{color:var(--md-theme-heading-2-color);border-block-end:var(--md-theme-heading-2-border)}
.md-editor-preview h3{color:var(--md-theme-heading-3-color);border-block-end:var(--md-theme-heading-3-border)}
.md-editor-preview h4{color:var(--md-theme-heading-4-color);border-block-end:var(--md-theme-heading-4-border)}
.md-editor-preview h5{color:var(--md-theme-heading-5-color);border-block-end:var(--md-theme-heading-5-border)}
.md-editor-preview h6{color:var(--md-theme-heading-6-color);border-block-end:var(--md-theme-heading-6-border)}
.md-editor-preview h1{font-size:2em}
.md-editor-preview h2{font-size:1.5em}
.md-editor-preview h3{font-size:1.25em}
.md-editor-preview h4{font-size:1em}
.md-editor-preview h5{font-size:.875em}
.md-editor-preview h6{font-size:.85em}
.md-editor-preview hr{height:1px;margin:10px 0;border:none;border-block-start:1px solid var(--md-theme-border-color)}
.md-editor-preview a{color:var(--md-theme-link-color);text-decoration:none;transition:color .1s}
.md-editor-preview a:hover{color:var(--md-theme-link-hover-color)}
.md-editor-preview a:empty::before{content:attr(href)}
.md-editor-preview ol,.md-editor-preview ul{padding-inline-start:2em}
.md-editor-preview ol .task-list-item,.md-editor-preview ul .task-list-item{list-style-type:none}
.md-editor-preview ol .task-list-item input,.md-editor-preview ul .task-list-item input{margin-inline-start:-1.5em;margin-inline-end:.1em}
.md-editor-preview img{max-width:100%}
.md-editor-preview p:empty{display:none}
.md-editor .md-editor-preview{--md-theme-quote-color: var(--md-theme-color);--md-theme-quote-border: none;--md-theme-quote-bg-color: inherit}
.md-editor-preview blockquote{padding:0 1em;color:var(--md-theme-quote-color);border-inline-start:var(--md-theme-quote-border);background-color:var(--md-theme-quote-bg-color)}
.md-editor .md-editor-preview{--md-theme-table-stripe-color: #fafafa;--md-theme-table-tr-bg-color: inherit;--md-theme-table-td-border-color: var(--md-theme-border-color)}
.md-editor-dark .md-editor-preview{--md-theme-table-stripe-color: #0c0c0c;--md-theme-table-tr-bg-color: inherit;--md-theme-table-td-border-color: var(--md-theme-border-color)}
.md-editor-preview table tr{background-color:var(--md-theme-table-tr-bg-color)}
.md-editor-preview table tr th,.md-editor-preview table tr td{border:1px solid var(--md-theme-table-td-border-color)}
.md-editor-preview table tr:nth-child(2n){background-color:var(--md-theme-table-stripe-color)}
.md-editor-preview{color:var(--md-theme-color)}
.md-editor-preview ::-webkit-scrollbar{width:6px;height:6px}
.md-editor-preview ::-webkit-scrollbar-button:vertical{display:none}
.md-editor-preview ::-webkit-scrollbar-corner,.md-editor-preview ::-webkit-scrollbar-track,.md-editor-preview ::-webkit-scrollbar-thumb{border-radius:2px}
.md-editor .md-editor-preview ::-webkit-scrollbar-corner,.md-editor .md-editor-preview ::-webkit-scrollbar-track{background-color:#e2e2e2}
.md-editor .md-editor-preview ::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.3019607843)}
.md-editor .md-editor-preview ::-webkit-scrollbar-thumb:vertical:hover{background-color:rgba(0,0,0,.3490196078)}
.md-editor .md-editor-preview ::-webkit-scrollbar-thumb:vertical:active{background-color:rgba(0,0,0,.3803921569)}
.md-editor-dark .md-editor-preview ::-webkit-scrollbar-corner,.md-editor-dark .md-editor-preview ::-webkit-scrollbar-track{background-color:#0f0f0f}
.md-editor-dark .md-editor-preview ::-webkit-scrollbar-thumb{background-color:#2d2d2d}
.md-editor-dark .md-editor-preview ::-webkit-scrollbar-thumb:vertical:hover{background-color:#3a3a3a}
.md-editor-dark .md-editor-preview ::-webkit-scrollbar-thumb:vertical:active{background-color:#3a3a3a}
.md-editor div.default-theme{--md-theme-code-copy-tips-color: #141414}
.md-editor-dark div.default-theme{--md-theme-code-copy-tips-color: inherit}
div.default-theme img{margin:0 auto;box-sizing:border-box}
div.default-theme a{display:inline-flex;line-height:1;border-block-end:none}
div.default-theme a:hover{border-block-end:1px solid}
div.default-theme a[target=_blank]{align-items:center}
div.default-theme a[target=_blank]::after{content:"";display:inline-block;width:16px;height:16px;margin-inline-start:2px;background-color:currentColor;mask-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-square-arrow-out-up-right"><path d="M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6"/><path d="m21 3-9 9"/><path d="M15 3h6v6"/></svg>');mask-size:contain;mask-repeat:no-repeat}
div.default-theme ol,div.default-theme ul{margin:.6em 0}
div.default-theme ol li,div.default-theme ul li{line-height:1.6;margin:.5em 0}
div.default-theme p{line-height:1.6;margin:.5rem 0}
.md-editor div.default-theme{--md-theme-quote-border: 5px solid #35b378;--md-theme-quote-bg-color: var(--md-theme-bg-color-inset)}
div.default-theme blockquote{margin:20px 0;padding:0 1.2em;line-height:2em;display:flow-root}
.md-editor default-theme{--md-theme-table-stripe-color: #fafafa}
.md-editor-dark default-theme{--md-theme-table-stripe-color: #0c0c0c}
div.default-theme table{overflow:auto;border-spacing:0;border-collapse:collapse;margin-block-end:1em;margin-block-start:1em}
div.default-theme table tr th,div.default-theme table tr td{word-wrap:break-word;padding:8px 14px}
div.default-theme table tbody tr:hover{background-color:var(--md-theme-color-hover)}
div.default-theme blockquote table{line-height:initial}
div.default-theme blockquote table tr th,div.default-theme blockquote table tr td{border-color:var(--md-theme-border-color-inset)}
div.default-theme blockquote table tbody tr:nth-child(n){background-color:inherit}
div.default-theme blockquote table tbody tr:hover{background-color:var(--md-theme-color-hover-inset)}
.md-editor div.vuepress-theme{--md-theme-code-inline-color: #d63200;--md-theme-code-inline-bg-color: #f8f8f8;--md-theme-code-block-color: #747384;--md-theme-code-block-bg-color: #f8f8f8;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 2px}
.md-editor-dark div.vuepress-theme{--md-theme-code-inline-color: #e06c75;--md-theme-code-inline-bg-color: #1a1a1a;--md-theme-code-block-color: #999;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 2px}
div.vuepress-theme code{padding:3px 5px;margin:0 2px}
div.vuepress-theme .md-editor-code pre{font-size:.875em;margin:0 0 1em}
div.vuepress-theme .md-editor-code pre code{white-space:pre;padding:22px 1em;margin:0}
div.vuepress-theme .md-editor-code pre code span[rn-wrapper]{top:22px}
.md-editor div.vuepress-theme{--md-theme-heading-color: #273849;--md-theme-heading-2-border: 1px solid var(--md-theme-border-color)}
.md-editor-dark div.vuepress-theme{--md-theme-heading-color: #999;--md-theme-heading-2-border: 1px solid var(--md-theme-border-color)}
div.vuepress-theme h1,div.vuepress-theme h2,div.vuepress-theme h3,div.vuepress-theme h4,div.vuepress-theme h5,div.vuepress-theme h6{font-weight:600;line-height:1.45;position:relative;margin-block-start:1em}
div.vuepress-theme h1{font-size:2.2em;margin:1em 0}
div.vuepress-theme h2{font-size:1.65em;padding-block-end:.3em}
div.vuepress-theme h3{line-height:1.35em}
.md-editor div.vuepress-theme{--md-theme-link-color: #42b983}
div.vuepress-theme a{font-weight:600}
div.vuepress-theme ul,div.vuepress-theme ol{position:relative;line-height:1.4em;margin:1.2em 0;z-index:1}
div.vuepress-theme ul li,div.vuepress-theme ol li{margin:1.2em 0}
div.vuepress-theme p{word-spacing:.05em;line-height:1.6em;margin:1.2em 0;position:relative}
.md-editor div.vuepress-theme{--md-theme-quote-border: 4px solid #42b983}
div.vuepress-theme blockquote{margin:2em 0;padding-inline-start:20px}
div.vuepress-theme blockquote p{margin-inline-start:0;margin-block-start:1.2em;margin-block-end:0;padding:0}
.md-editor div.vuepress-theme{--md-theme-table-td-border-color: #dfe2e5;--md-theme-table-stripe-color: #f6f8fa}
.md-editor-dark div.vuepress-theme{--md-theme-table-td-border-color: #2d2d2d;--md-theme-table-stripe-color: #0c0c0c}
div.vuepress-theme table{border-collapse:collapse;margin:1rem 0;display:block;overflow-x:auto}
div.vuepress-theme table tr th,div.vuepress-theme table tr td{padding:.6em 1em}
.md-editor div.vuepress-theme{--md-theme-color: #304455}
.md-editor-dark div.vuepress-theme{--md-theme-color: #999}
div.vuepress-theme{font-size:16px;color:var(--md-theme-color)}
div.vuepress-theme em{color:#4f5959;padding:0 6px 0 4px}
.md-editor div.github-theme{--md-theme-code-inline-color: inherit;--md-theme-code-inline-bg-color: #eff1f2;--md-theme-code-inline-radius: 6px;--md-theme-code-block-color: inherit;--md-theme-code-block-bg-color: #f6f8fa;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 6px}
.md-editor-dark div.github-theme{--md-theme-code-inline-color: #c9d1d9;--md-theme-code-inline-bg-color: #2d3339;--md-theme-code-inline-radius: 6px;--md-theme-code-block-color: #a9b7c6;--md-theme-code-block-bg-color: #161b22;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 6px}
div.github-theme code{padding:.2em .4em;margin:0}
div.github-theme pre code{padding:22px 1em;margin-block-end:0;word-break:normal;letter-spacing:1px}
.md-editor div.github-theme{--md-theme-heading-color: inherit;--md-theme-heading-6-color: #2d3339;--md-theme-heading-1-border: 1px solid #d9dee4;--md-theme-heading-2-border: 1px solid #d9dee4}
.md-editor-dark div.github-theme{--md-theme-heading-color: #c9d1d9;--md-theme-heading-6-color: #768390;--md-theme-heading-1-border: 1px solid #373e47;--md-theme-heading-2-border: 1px solid #373e47}
div.github-theme h1,div.github-theme h2,div.github-theme h3,div.github-theme h4,div.github-theme h5,div.github-theme h6{margin-block-start:24px;margin-block-end:16px;font-weight:600;line-height:1.25}
div.github-theme h1{padding-block-end:.3em;font-size:2em}
div.github-theme h2{padding-block-end:.3em;font-size:1.5em}
div.github-theme h3{font-size:1.25em}
div.github-theme h4{font-size:1em}
div.github-theme h5{font-size:.875em}
div.github-theme h6{font-size:.85em}
.md-editor div.github-theme{--md-theme-heading-bg-color: #fff}
.md-editor-dark div.github-theme{--md-theme-heading-bg-color: #22272e}
div.github-theme img{background-color:var(--md-theme-heading-bg-color)}
.md-editor div.github-theme{--md-theme-link-color: #539bf5;--md-theme-link-hover-color: #539bf5}
div.github-theme a:hover{text-decoration:underline}
div.github-theme ol li+li,div.github-theme ul li+li{margin-block-start:.25em}
.md-editor div.github-theme{--md-theme-quote-color: #57606a;--md-theme-quote-border: 0.25em solid #d0d7de}
.md-editor-dark div.github-theme{--md-theme-quote-color: #8b949e;--md-theme-quote-border: 0.25em solid #444c56}
div.github-theme blockquote{margin:0;padding:0 1em}
.md-editor div.github-theme{--md-theme-table-stripe-color: #f7f8fa;--md-theme-table-tr-bg-color: #fff;--md-theme-table-td-border-color: #d0d7de}
.md-editor-dark div.github-theme{--md-theme-table-stripe-color: #161b22;--md-theme-table-tr-bg-color: transparent;--md-theme-table-td-border-color: #30363d}
div.github-theme table{display:block;max-width:100%;overflow:auto;border-spacing:0;border-collapse:collapse}
div.github-theme table tr th,div.github-theme table tr td{padding:6px 13px}
.md-editor div.github-theme{--md-theme-color: #222}
.md-editor-dark div.github-theme{--md-theme-color: #c9d1d9}
div.github-theme{line-height:1.5;color:var(--md-theme-color)}
div.github-theme p,div.github-theme blockquote,div.github-theme ul,div.github-theme ol,div.github-theme dl,div.github-theme table,div.github-theme pre,div.github-theme details{margin-block-start:0;margin-block-end:16px}
.md-editor div.cyanosis-theme{--md-theme-code-inline-color: var(--md-theme-code-color);--md-theme-code-inline-bg-color: var(--md-theme-code-bg-color);--md-theme-code-block-color: var(--md-theme-base-color);--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}
.md-editor-dark div.cyanosis-theme{--md-theme-code-inline-color: var(--md-theme-code-color);--md-theme-code-inline-bg-color: var(--md-theme-code-bg-color);--md-theme-code-block-color: var(--md-theme-base-color);--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}
div.cyanosis-theme code{padding:.065em .4em;font-family:Menlo,Monaco,Consolas,"Courier New",monospace;overflow-x:auto}
div.cyanosis-theme code::selection{background-color:var(--md-theme-slct-codebg-color)}
div.cyanosis-theme .md-editor-code pre{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}
div.cyanosis-theme .md-editor-code pre code{padding:11px 12px 22px;margin:0;word-break:normal;line-height:1.75}
div.cyanosis-theme .md-editor-code pre code span[rn-wrapper]{top:11px}
.md-editor div.cyanosis-theme{--md-theme-heading-color: var(--md-theme-title-color)}
div.cyanosis-theme h1{padding-block-end:4px;margin-block-start:36px;margin-block-end:10px;font-size:30px;line-height:1.5;transition:color .35s}
div.cyanosis-theme h2{position:relative;padding-inline-start:10px;padding-inline-end:10px;padding-block-end:10px;margin-block-start:36px;margin-block-end:10px;font-size:24px;line-height:1.5;border-block-end:1px solid var(--md-theme-border-color-2);transition:color .35s}
div.cyanosis-theme h2::before{content:"「";position:absolute;inset-block-start:-6px;inset-inline-start:-14px}
div.cyanosis-theme h2::after{content:"」";position:relative;inset-block-start:6px;inset-inline-end:auto}
div.cyanosis-theme h3{position:relative;padding-block-end:0;margin-block-start:30px;margin-block-end:10px;font-size:20px;line-height:1.5;padding-inline-start:6px;transition:color .35s}
div.cyanosis-theme h3::before{content:"»";padding-inline-end:6px;color:var(--md-theme-strong-color)}
div.cyanosis-theme h4{padding-block-end:0;margin-block-start:24px;margin-block-end:10px;font-size:16px;line-height:1.5;padding-inline-start:6px;transition:color .35s}
div.cyanosis-theme h5{padding-block-end:0;margin-block-start:18px;margin-block-end:10px;font-size:14px;line-height:1.5;padding-inline-start:6px;transition:color .35s}
div.cyanosis-theme h6{padding-block-end:0;margin-block-start:12px;margin-block-end:10px;font-size:12px;line-height:1.5;padding-inline-start:6px;transition:color .35s}
div.cyanosis-theme h1::selection,div.cyanosis-theme h2::selection,div.cyanosis-theme h3::selection,div.cyanosis-theme h4::selection,div.cyanosis-theme h5::selection,div.cyanosis-theme h6::selection{color:var(--md-theme-slct-title-color);background-color:var(--md-theme-slct-titlebg-color)}
@media(max-width: 720px){div.cyanosis-theme h1{font-size:24px}div.cyanosis-theme h2{font-size:20px}div.cyanosis-theme h3{font-size:18px}}
.md-editor div.cyanosis-theme{--md-theme-link-color: var(--md-theme-link-color);--md-theme-link-hover-color: var(--md-theme-linkh-color)}
div.cyanosis-theme a{position:relative;display:inline-block;text-decoration:none;border-block-end:1px solid var(--md-theme-border-color)}
div.cyanosis-theme a:hover{border-block-end-color:var(--md-theme-linkh-color)}
div.cyanosis-theme a:active{color:var(--md-theme-linkh-color)}
div.cyanosis-theme a::after{position:absolute;content:"";inset-block-start:100%;inset-inline-start:0;width:100%;opacity:0;border-block-end:1px solid var(--md-theme-border-color);transition:top .3s,opacity .3s;transform:translate3d(0, 0, 0)}
div.cyanosis-theme a:hover::after{top:0;opacity:1;border-block-end-color:var(--md-theme-linkh-color)}
div.cyanosis-theme ol,div.cyanosis-theme ul{margin:0}
div.cyanosis-theme ol li,div.cyanosis-theme ul li{margin-block-end:0;list-style:inherit}
div.cyanosis-theme ol li .task-list-item,div.cyanosis-theme ul li .task-list-item{list-style:none}
div.cyanosis-theme ol li .task-list-item ul,div.cyanosis-theme ol li .task-list-item ol,div.cyanosis-theme ul li .task-list-item ul,div.cyanosis-theme ul li .task-list-item ol{margin-block-start:0}
div.cyanosis-theme ol ul,div.cyanosis-theme ol ol,div.cyanosis-theme ul ul,div.cyanosis-theme ul ol{margin-block-start:4px}
div.cyanosis-theme ol li{padding-inline-start:6px}
div.cyanosis-theme ol li::selection,div.cyanosis-theme ul li::selection{color:var(--md-theme-slct-text-color);background-color:var(--md-theme-slct-bg-color)}
div.cyanosis-theme .task-list-item-checkbox{position:relative}
div.cyanosis-theme .contains-task-list input[type=checkbox]::before{content:"";position:absolute;inset-block-start:0;inset-inline-start:0;inset-inline-end:0;inset-block-end:0;width:inherit;height:inherit;background:#f0f8ff;border:1px solid #add6ff;border-radius:var(--md-theme-radius-s);box-sizing:border-box;z-index:1}
div.cyanosis-theme .contains-task-list input[type=checkbox][checked]::after{content:"✓";position:absolute;inset-block-start:-12px;inset-inline-start:0;inset-inline-end:0;inset-block-end:0;width:0;height:0;color:#f55;font-size:20px;font-weight:700;z-index:2}
div.cyanosis-theme p{line-height:inherit;margin-block-start:16px;margin-block-end:16px}
div.cyanosis-theme p::selection{color:var(--md-theme-slct-text-color);background-color:var(--md-theme-slct-bg-color)}
.md-editor div.cyanosis-theme{--md-theme-quote-color: var(--md-theme-blockquote-color);--md-theme-quote-border: 4px solid var(--md-theme-strong-color);--md-theme-quote-bg-color: var(--md-theme-blockquote-bg-color)}
div.cyanosis-theme blockquote{padding:1px 20px;margin:22px 0;transition:color .35s}
div.cyanosis-theme blockquote::after{display:block;content:""}
div.cyanosis-theme blockquote>p{margin:10px 0}
div.cyanosis-theme blockquote>b,div.cyanosis-theme blockquote>strong{color:var(--md-theme-strong-color)}
div.cyanosis-theme table{display:inline-block !important;width:auto;max-width:100%;overflow:auto;border:1px solid var(--md-theme-table-border-color);border-spacing:0;border-collapse:collapse}
div.cyanosis-theme table thead{color:#000;text-align:left;background:#f6f6f6}
div.cyanosis-theme table tr:nth-child(2n){background-color:var(--md-theme-table-tr-nc-color)}
div.cyanosis-theme table tr:hover{background-color:var(--md-theme-table-trh-color)}
div.cyanosis-theme table th,div.cyanosis-theme table td{padding:12px 8px;line-height:24px;border:1px solid var(--md-theme-table-border-color)}
div.cyanosis-theme table th{color:var(--md-theme-table-tht-color);background-color:var(--md-theme-table-th-color)}
div.cyanosis-theme table td{min-width:120px}
div.cyanosis-theme table thead th::selection{background-color:rgba(0,0,0,0)}
div.cyanosis-theme table tbody td::selection{background-color:var(--md-theme-slct-bg-color)}
.md-editor div.cyanosis-theme{--md-theme-base-color:#353535;--md-theme-title-color:#005bb7;--md-theme-strong-color:#2196f3;--md-theme-em-color:#4fc3f7;--md-theme-del-color:#ccc;--md-theme-link-color:#3da8f5;--md-theme-linkh-color:#007fff;--md-theme-border-color:#bedcff;--md-theme-border-color-2:#ececec;--md-theme-bg-color:#fff;--md-theme-blockquote-color:#8c8c8c;--md-theme-blockquote-bg-color:#f0fdff;--md-theme-code-color:#c2185b;--md-theme-code-bg-color:#fff4f4;--md-theme-code-block-bg-color:#f8f8f8;--md-theme-table-border-color:#c3e0fd;--md-theme-table-th-color:#dff0ff;--md-theme-table-tht-color:#005bb7;--md-theme-table-tr-nc-color:#f7fbff;--md-theme-table-trh-color:#e0edf7;--md-theme-slct-title-color:#005bb7;--md-theme-slct-titlebg-color:rgba(175,207,247,.25);--md-theme-slct-text-color:#c80000;--md-theme-slct-bg-color:rgba(175,207,247,.25);--md-theme-slct-del-color:#999;--md-theme-slct-elbg-color:#e8ebec;--md-theme-slct-codebg-color:#ffeaeb;--md-theme-slct-prebg-color:rgba(160,200,255,.25)}
.md-editor-dark div.cyanosis-theme{--md-theme-base-color:#cacaca;--md-theme-title-color:#ddd;--md-theme-strong-color:#fe9900;--md-theme-em-color:#ffd28e;--md-theme-del-color:#ccc;--md-theme-link-color:#ffb648;--md-theme-linkh-color:#fe9900;--md-theme-border-color:#ffe3ba;--md-theme-border-color-2:#ffcb7b;--md-theme-bg-color:#2f2f2f;--md-theme-blockquote-color:#c7c7c7;--md-theme-blockquote-bg-color:rgba(255,199,116,.1);--md-theme-code-color:#000;--md-theme-code-bg-color:#ffcb7b;--md-theme-code-block-bg-color:rgba(30,25,18,.5);--md-theme-table-border-color:#fe9900;--md-theme-table-th-color:#ffb648;--md-theme-table-tht-color:#000;--md-theme-table-tr-nc-color:#6d5736;--md-theme-table-trh-color:#947443;--md-theme-slct-title-color:#000;--md-theme-slct-titlebg-color:#fe9900;--md-theme-slct-text-color:#00c888;--md-theme-slct-bg-color:rgba(175,207,247,.25);--md-theme-slct-del-color:#999;--md-theme-slct-elbg-color:#000;--md-theme-slct-codebg-color:#ffcb7b;--md-theme-slct-prebg-color:rgba(160,200,255,.25)}
div.cyanosis-theme{word-break:break-word;line-height:1.75;font-weight:400;overflow-x:hidden;color:var(--md-theme-base-color);transition:color .35s}
div.cyanosis-theme hr{position:relative;width:98%;height:1px;margin-block-start:32px;margin-block-end:32px;background-image:linear-gradient(90deg, var(--md-theme-link-color), rgba(255, 0, 0, 0.3), rgba(37, 163, 65, 0.3), rgba(255, 0, 0, 0.3), var(--md-theme-link-color));border-width:0;overflow:visible}
div.cyanosis-theme b,div.cyanosis-theme strong{color:var(--md-theme-strong-color)}
div.cyanosis-theme i,div.cyanosis-theme em{color:var(--md-theme-em-color)}
div.cyanosis-theme del{color:var(--md-theme-del-color)}
div.cyanosis-theme details>summary{outline:none;color:var(--md-theme-title-color);font-size:20px;font-weight:bolder;border-block-end:1px solid var(--md-theme-border-color);cursor:pointer}
div.cyanosis-theme details>p{padding:10px 20px;margin:10px 0 0;color:#666;background-color:var(--md-theme-blockquote-bg-color);border:2px dashed var(--md-theme-strong-color)}
div.cyanosis-theme a::selection,div.cyanosis-theme b::selection,div.cyanosis-theme strong::selection,div.cyanosis-theme i::selection,div.cyanosis-theme em::selection{background-color:var(--md-theme-slct-elbg-color)}
div.cyanosis-theme del::selection{color:var(--md-theme-slct-del-color);background-color:var(--md-theme-slct-elbg-color)}
.md-editor div.mk-cute-theme{--md-theme-code-inline-color: #4ec9b0;--md-theme-code-inline-bg-color: #282c34;--md-theme-code-block-color: #4ec9b0;--md-theme-code-block-bg-color: #282c34;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 10px}
.md-editor-dark div.mk-cute-theme{--md-theme-code-inline-color: #4ec9b0;--md-theme-code-inline-bg-color: #282c34;--md-theme-code-block-color: #4ec9b0;--md-theme-code-block-bg-color: #282c34;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color);--md-theme-code-block-radius: 10px}
div.mk-cute-theme code{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;overflow-x:auto;padding:.14em .46em;margin:0 4px}
div.mk-cute-theme .md-editor-code pre code{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;padding:22px;margin:0;word-break:normal;line-height:1.75}
div.mk-cute-theme .md-editor-code pre code span[rn-wrapper]{top:22px}
.md-editor div.mk-cute-theme{--md-theme-heading-color: #36ace1}
div.mk-cute-theme h1::before,div.mk-cute-theme h2::before,div.mk-cute-theme h3::before,div.mk-cute-theme h4::before,div.mk-cute-theme h5::before,div.mk-cute-theme h6::before{content:"";display:block;position:absolute;inset-inline-start:0;inset-block-start:0;inset-block-end:0;margin:auto;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAF8UlEQVRIS71Wa2wUVRT+7r0zu9t2t/RBaSioPCpYbIUfaEIQUogSAwZDAlUSGwgg/CBATExMCJH1D2hIfOEjFEUEhViCgBgIUCH44OkjPAMGBVqhpUCfW3Zn5z7MuQOE0hYxMdxJdmd25s53vnO+851leMCLPWA8/CfA2TsvL8n7q+nTFfNLG+4VqInHOeJLDQMzdz/3r4DGGDb9lxu+aPcE7U61JHDMDePcuv0O21ShugOefqDdtBie3Dk6K/O+Ab+qOjJiz7Ahv6c8hbDDwRiQlgYGDOcaWyEcjg8On+j71IpJndjGt9XO+jM7+pkywNvbazIfercieSdoJ4bE5sWjyZqMpDdeaQNXMNC34ME3LV8B56+1w3AOgk+EXe/Ub6uiLB6XdH/G/mYjeBCcFwnt3zQqWt4t4NjjnhzQ1CGkBhwOCMFAB71U0qsYgRlwBtQ1tiEJAy44OBdQUmFK3aWS06NLT+ukZAQoKCCjsfbDmk6p78RwX3ncWffmIj8U4kh6GpEwh+9rGy23LDU4GBrrm9DsuDYIGMAYIC/EUNQ7Cq1hn+WM2TI8f+jEyCmvjfn1FssuojHx6tDkyZOaCzr8TNpASzDAk8amlRIrEylcSGsYrcGIstIYWhgDDIM2BiGH3ywFkGAC1U9n38bpVqWGdk6r4HMWrZZaG1D5KLn0qYyBEAKnG1otAxLR8L7Z9nfP13CJHQ/ST4vK8sVHe8JsU0U6uO5hlexo8PI7vNDQomwoBRAwpSmtgJAAztS3QLsOsmBQlBtFJMQhlbbPUBBUR7o2hqHVddLbRsfCPQJ+u3TPw8uGl1yklAlHIJZKo3//XEhlLCtifPFyM7xwCI/lZ8IKTTBbS7pPLIggZZsSQ+zXbT4UYSsnet3UMM5HPT5LGbrDGYQroClyT2Jwnyj9aN949e8mDCwuRFoqKxRHUJ21BSDRELuQYGhvbMVV32Dp2RuxcfHSRBfAYTsbU9nJdFj5EiLkglHkRInC1xoxKbH9hQJIaTDvxxTCUddWl4wg0dCCtqSPDmoVx4Eitpxh64ZtsT6b5ie6pPRkfF90TllxOzEwmipMKRRgHODGgCuJkqIcvDdC2BZ5Y+tlHHMzkAKghbAxcQqQDiKrFBxhqg5MHTivS1tQ+sdsvaQl5Yd6yfdRXNQLsQwXnq/AQFLXEIIjzBSuNaaR0SuEtkQKl9IKjAsbJaWfzo1USDsM6zceDJfeVGgnhhN2N7YOyo5kJz1pa2AbgfrO1gRwXW6vSRQNtddR+EhvKGmseskgTtY2Q7kucYWWgToPHzyUyXry0iXfnBtfl5f/PaWPvPNW/zkOAQegJHltFE5dSaCskHqPVEnqpMAMEgkPtR1pKxyh/N0/vTToubtH1G3RmLjhM8ubKXfWB2mRa9ySOaWS2uT8lTZ0cI6I52Ngv7zAbW9mQVm1cpytu441P38XeXTlQu+e46nyh+bjLkMZRU0MCYTCJWZSG1y7cBWNURpxBlxqFBfEwGnGGhaYPSNwhpSv4DK+/vPynBk9MqRIiOWs8a2WJTm9a+cgh6SaMIMz9W1WjYHHMtv0wSmZdWB9gdsya/rcYVg7JoffCdqlD6ceTpiY59tM0PhJp5WNvra+BQkejCMyBarr8KKYDcZi8sDaCDKYFIGRk+FnSVXzyTO9JxBwF8DLc1dlLn65ooNEYN0fBsu21fTvL6PXnhxXlnLIqqhYYBian4lQ2Lk9ogiALsimiLC1QYfhlV1Hnxh7JfcMqxrpd7U2GFa5t9nOd7Kr+kg4uWvnCpromlJeXlq3Os3ZLOlrZBmNQf1ybVqpxhbA7mRIOCy1+esDOWhIyDv/+3Q7LRbsqH+rKRJ+nba+/+WW7II1s9vvVBuNr7KNF1WUM1bSt5f1Vq01jUVkKfnx8uoti3Or5rbd9782M61azJz/rFywYU/OyKqK1p5G2MS1Z18tGFDwTkvIxcK9RwaMP3a9/tbc62lPj/Nw5B9ey9Ehy/MY4oEqelgNleuyCgdXJlmc3fO5Ll56r5f+n/f+AWFf9jvBgaHpAAAAAElFTkSuQmCC);animation:spin 2s linear 0s infinite}
div.mk-cute-theme h1{position:relative;font-size:30px;padding:12px 38px;margin:30px 0}
div.mk-cute-theme h1::before{width:30px;height:30px;background-size:30px 30px}
div.mk-cute-theme h2{position:relative;font-size:24px;padding:12px 36px;margin:28px 0}
div.mk-cute-theme h2::before{width:28px;height:28px;background-size:28px 28px}
div.mk-cute-theme h3{position:relative;font-size:18px;padding:4px 32px;margin:26px 0}
div.mk-cute-theme h3::before{width:24px;height:24px;background-size:24px 24px}
div.mk-cute-theme h4{position:relative;padding:4px 28px;font-size:16px;margin:22px 0}
div.mk-cute-theme h4::before{width:20px;height:20px;background-size:20px 20px}
div.mk-cute-theme h5{position:relative;padding:4px 26px;font-size:15px;margin:20px 0}
div.mk-cute-theme h5::before{width:18px;height:18px;background-size:18px 18px}
div.mk-cute-theme h6{position:relative;padding:4px 22px;font-size:14px;margin:16px 0}
div.mk-cute-theme h6::before{width:16px;height:16px;background-size:16px 16px}
@media(max-width: 720px){div.mk-cute-theme h1{font-size:24px}div.mk-cute-theme h2{font-size:20px}div.mk-cute-theme h3{font-size:18px}}
.md-editor div.mk-cute-theme{--md-theme-link-color: #409eff;--md-theme-link-hover-color: #007bff}
div.mk-cute-theme a{display:inline-block;border-block-end:1px solid #409eff}
div.mk-cute-theme a:hover,div.mk-cute-theme a:active{border-block-end:1px solid #007bff}
div.mk-cute-theme ol li,div.mk-cute-theme ul li{margin-block-end:0;list-style:inherit}
div.mk-cute-theme ol li .task-list-item,div.mk-cute-theme ul li .task-list-item{list-style:none}
div.mk-cute-theme ol li .task-list-item ul,div.mk-cute-theme ol li .task-list-item ol,div.mk-cute-theme ul li .task-list-item ul,div.mk-cute-theme ul li .task-list-item ol{margin-block-start:0}
div.mk-cute-theme ol ul,div.mk-cute-theme ol ol,div.mk-cute-theme ul ul,div.mk-cute-theme ul ol{margin-block-start:3px}
div.mk-cute-theme ol li{padding-inline-start:6px}
div.mk-cute-theme p{line-height:inherit;margin-block-start:22px;margin-block-end:22px}
.md-editor div.mk-cute-theme{--md-theme-quote-color: #fff;--md-theme-quote-border: 4px solid #409eff;--md-theme-quote-bg-color: rgba(54, 172, 225, 0.75)}
.md-editor-dark div.mk-cute-theme{--md-theme-quote-color: inherit;--md-theme-quote-border: 4px solid #265d97;--md-theme-quote-bg-color: rgba(18, 80, 108, 0.75)}
div.mk-cute-theme blockquote{position:relative;padding:8px 26px;margin:16px 0;border-radius:var(--md-theme-radius-m)}
div.mk-cute-theme blockquote::before{content:"❝";inset-block-start:10px;inset-inline-start:8px;color:#409eff;font-size:20px;line-height:1;font-weight:700;position:absolute;opacity:.7}
div.mk-cute-theme blockquote::after{content:"❞";font-size:20px;position:absolute;inset-inline-end:8px;inset-block-end:0;color:#409eff;opacity:.7}
div.mk-cute-theme blockquote>p,div.mk-cute-theme blockquote ul li,div.mk-cute-theme blockquote ol li{color:var(--md-theme-quote-color)}
.md-editor div.mk-cute-theme{--md-theme-table-color: #000;--md-theme-table-border-color: #f6f6f6;--md-theme-table-thead-bg-color: #f6f6f6;--md-theme-table-stripe-color: #fcfcfc}
.md-editor-dark div.mk-cute-theme{--md-theme-table-color: inherit;--md-theme-table-border-color: #1c1c1c;--md-theme-table-thead-bg-color: rgba(28, 28, 28, 0.631372549);--md-theme-table-stripe-color: rgba(28, 28, 28, 0.631372549)}
div.mk-cute-theme table{display:inline-block;width:auto;max-width:100%;overflow:auto;border:solid 1px var(--md-theme-table-border-color)}
div.mk-cute-theme table thead{background-color:var(--md-theme-table-thead-bg-color);color:var(--md-theme-table-color);text-align:left}
div.mk-cute-theme table tr th,div.mk-cute-theme table tr td{padding:12px 7px;line-height:24px;border:none}
div.mk-cute-theme table tr td{min-width:120px}
div.mk-cute-theme blockquote table tbody{color:var(--md-theme-color)}
div.mk-cute-theme blockquote table tr{background-color:var(--md-theme-table-stripe-color)}
@keyframes spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
.md-editor div.mk-cute-theme{--md-theme-color: #36ace1;background-image:linear-gradient(90deg, rgba(50, 58, 66, 0.25) 3%, rgba(0, 0, 0, 0) 3%),linear-gradient(360deg, rgba(50, 58, 66, 0.25) 3%, rgba(0, 0, 0, 0) 3%)}
.md-editor-dark div.mk-cute-theme{background-image:linear-gradient(90deg, rgba(217, 234, 251, 0.25) 3%, rgba(0, 0, 0, 0) 3%),linear-gradient(360deg, rgba(217, 234, 251, 0.25) 3%, rgba(0, 0, 0, 0) 3%);--md-theme-bg-color-scrollbar-thumb: #4d4d4d}
div.mk-cute-theme{word-break:break-word;line-height:1.75;font-weight:400;overflow-x:hidden;background-size:20px 20px;background-position:center center}
div.mk-cute-theme hr{position:relative;width:98%;height:1px;border:none;margin-block-start:32px;margin-block-end:32px;background-image:linear-gradient(to right, #36ace1, #dff0fe, #36ace1);overflow:visible}
div.mk-cute-theme del{color:#36ace1}
.md-editor div.smart-blue-theme{--md-theme-code-inline-color: #d63200;--md-theme-code-inline-bg-color: #fff5f5;--md-theme-code-block-color: #333;--md-theme-code-block-bg-color: #f8f8f8;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}
.md-editor-dark div.smart-blue-theme{--md-theme-code-inline-color: #e06c75;--md-theme-code-inline-bg-color: #1a1a1a;--md-theme-code-block-color: #999;--md-theme-code-block-bg-color: #1a1a1a;--md-theme-code-before-bg-color: var(--md-theme-code-block-bg-color)}
div.smart-blue-theme code{overflow-x:auto;padding:.065em .4em}
div.smart-blue-theme .md-editor-code pre{font-family:Menlo,Monaco,Consolas,Courier New,monospace}
div.smart-blue-theme .md-editor-code pre code{padding:22px 12px;margin:0;word-break:normal}
div.smart-blue-theme .md-editor-code pre code span[rn-wrapper]{top:22px}
.md-editor div.smart-blue-theme{--md-theme-heading-color: #135ce0}
div.smart-blue-theme h1,div.smart-blue-theme h2,div.smart-blue-theme h3,div.smart-blue-theme h4,div.smart-blue-theme h5,div.smart-blue-theme h6{padding:30px 0;margin:0}
div.smart-blue-theme h1 a,div.smart-blue-theme h2 a,div.smart-blue-theme h3 a,div.smart-blue-theme h4 a,div.smart-blue-theme h5 a,div.smart-blue-theme h6 a{border:none}
div.smart-blue-theme h1{position:relative;text-align:center;font-size:22px;margin:50px 0}
div.smart-blue-theme h2{position:relative;font-size:20px;border-inline-start:4px solid;padding:0 0 0 10px;margin:30px 0}
div.smart-blue-theme h3{font-size:16px}
div.smart-blue-theme img{margin:0 auto}
.md-editor div.smart-blue-theme{--md-theme-link-color: #036aca}
.md-editor-dark div.smart-blue-theme{--md-theme-link-color: #2d7dc7}
div.smart-blue-theme a{font-weight:400}
div.smart-blue-theme ul,div.smart-blue-theme ol{margin-block-start:1em}
div.smart-blue-theme li{line-height:2;margin-block-end:0;list-style:inherit}
div.smart-blue-theme p{line-height:2;font-weight:400}
div.smart-blue-theme *+p{margin-block-start:16px}
.md-editor div.smart-blue-theme{--md-theme-quote-color: #666;--md-theme-quote-bg-color: #fff9f9;--md-theme-quote-border-color: #b2aec5}
.md-editor-dark div.smart-blue-theme{--md-theme-quote-color: #999;--md-theme-quote-bg-color: #2a2a2a;--md-theme-quote-border-color: #0063bb}
div.smart-blue-theme blockquote{background-color:var(--md-theme-quote-bg-color);margin:2em 0;padding:2px 20px;border-inline-start:4px solid var(--md-theme-quote-border-color)}
div.smart-blue-theme blockquote p{color:var(--md-theme-quote-color);line-height:2}
.md-editor div.smart-blue-theme{--md-theme-table-td-border-color: #dfe2e5;--md-theme-table-stripe-color: #f6f8fa}
.md-editor-dark div.smart-blue-theme{--md-theme-table-td-border-color: #2d2d2d;--md-theme-table-stripe-color: #0c0c0c}
div.smart-blue-theme table{border-collapse:collapse;margin:1rem 0;overflow-x:auto}
div.smart-blue-theme table tr th,div.smart-blue-theme table tr td{padding:.6em 1em}
div.smart-blue-theme blockquote table{line-height:initial}
div.smart-blue-theme blockquote table tr th,div.smart-blue-theme blockquote table tr td{border-color:var(--md-theme-border-color-inset)}
div.smart-blue-theme blockquote table tbody tr:nth-child(n){background-color:inherit}
.md-editor div.smart-blue-theme{--md-theme-color: #595959}
.md-editor div.smart-blue-theme{background-image:linear-gradient(90deg, rgba(60, 10, 30, 0.04) 3%, rgba(0, 0, 0, 0) 3%),linear-gradient(360deg, rgba(60, 10, 30, 0.04) 3%, rgba(0, 0, 0, 0) 3%)}
.md-editor-dark div.smart-blue-theme{--md-theme-color: #999}
.md-editor-dark div.smart-blue-theme{background-image:linear-gradient(90deg, rgba(207, 207, 207, 0.04) 3%, rgba(255, 255, 255, 0) 3%),linear-gradient(360deg, rgba(207, 207, 207, 0.04) 3%, rgba(255, 255, 255, 0) 3%)}
div.smart-blue-theme{color:var(--md-theme-color);font-family:-apple-system,system-ui,BlinkMacSystemFont,Helvetica Neue,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif;background-size:20px 20px;background-position:center center}
div.smart-blue-theme strong{color:#036aca}
div.smart-blue-theme em strong{color:#036aca}
div.smart-blue-theme hr{border-block-start:1px solid #135ce0}
.md-editor-checkbox {
  cursor: pointer;
  width: 12px;
  height: 12px;
  border: 1px solid var(--md-border-color);
  background-color: var(--md-bk-color-outstand);
  border-radius: 2px;
  line-height: 1;
  text-align: center;
}
.md-editor-checkbox::after {
  content: "";
  font-weight: bold;
}
.md-editor-checkbox-checked::after {
  content: "✓";
}
.md-editor-divider {
  position: relative;
  display: inline-block;
  width: 1px;
  inset-block-start: 0.1em;
  height: 0.9em;
  margin-block: 0;
  margin-inline: 8px;
  background-color: var(--md-border-color);
}
.md-editor-dropdown {
  overflow: hidden;
  box-sizing: border-box;
  position: absolute;
  transition: all 0.3s;
  opacity: 1;
  z-index: 20000;
  background-color: var(--md-bk-color);
}
.md-editor-dropdown-hidden {
  opacity: 0;
  visibility: hidden;
}
.md-editor-dropdown-overlay {
  margin-block-start: 6px;
}
.md-editor-modal-mask {
  position: fixed;
  inset-block-start: 0;
  inset-inline-end: 0;
  inset-block-end: 0;
  inset-inline-start: 0;
  z-index: 20000;
  height: 100%;
  background-color: var(--md-modal-mask);
}
.md-editor-modal {
  display: block;
  background-color: var(--md-bk-color);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  border-radius: 3px;
  border: 1px solid var(--md-border-color);
  position: fixed;
  z-index: 20001;
  box-shadow: var(--md-modal-shadow);
}
.md-editor-modal-header {
  cursor: grab;
  display: flex;
  justify-content: space-between;
  padding-block: 10px;
  padding-inline: 24px;
  color: var(--md-color);
  font-weight: 600;
  font-size: 16px;
  line-height: 22px;
  word-wrap: break-word;
  user-select: none;
  border-block-end: 1px solid var(--md-border-color);
  position: relative;
}
.md-editor-modal-body {
  padding-block: 20px;
  padding-inline: 20px;
  font-size: 14px;
  word-wrap: break-word;
  height: calc(100% - 43px);
  box-sizing: border-box;
}
.md-editor-modal .md-editor-modal-func {
  position: absolute;
  inset-block-start: 10px;
  inset-inline-end: 10px;
}
.md-editor-modal .md-editor-modal-func .md-editor-modal-adjust,
.md-editor-modal .md-editor-modal-func .md-editor-modal-close {
  cursor: pointer;
  width: 24px;
  height: 24px;
  line-height: 24px;
  text-align: center;
  display: inline-block;
}
.md-editor-modal .md-editor-modal-func .md-editor-modal-adjust {
  padding-inline-end: 10px;
}
@keyframes zoomIn {
  from {
    opacity: 0;
    transform: scale3d(0.3, 0.3, 0.3);
  }
  50% {
    opacity: 1;
  }
}
.zoom-in {
  animation-name: zoomIn;
  animation-duration: 0.15s;
  animation-fill-mode: forwards;
}
@keyframes zoomOut {
  from {
    opacity: 1;
  }
  50% {
    opacity: 0;
    transform: scale3d(0.3, 0.3, 0.3);
  }
  to {
    opacity: 0;
  }
}
.zoom-out {
  animation-name: zoomOut;
  animation-duration: 0.15s;
  animation-fill-mode: forwards;
}
.md-editor-custom-scrollbar {
  position: relative;
  overflow: hidden;
  height: 100%;
}
.md-editor-custom-scrollbar__track {
  position: absolute;
  inset-block-start: 0;
  inset-inline-end: 0;
  width: 6px;
  height: 100%;
  background: var(--md-scrollbar-bg-color);
}
.md-editor-custom-scrollbar__thumb {
  position: absolute;
  width: 6px;
  background: var(--md-scrollbar-thumb-color);
  border-radius: 4px;
  cursor: pointer;
  transition: background 0.2s;
}
.md-editor-custom-scrollbar__thumb:hover {
  background: var(--md-scrollbar-thumb-hover-color);
}
.md-editor-content {
  direction: ltr;
  position: relative;
  display: flex;
  flex: 1;
  height: 0;
  flex-shrink: 0;
}
.md-editor-content-wrapper {
  display: flex;
  flex: 1;
  width: 0;
  position: relative;
}
.md-editor-resize-operate {
  position: absolute;
  width: 2px;
  height: 100%;
  background-color: var(--md-bk-color);
  z-index: 1;
  cursor: col-resize;
}
.md-editor-input-wrapper {
  height: 100%;
  box-sizing: border-box;
}
.md-editor-preview-wrapper {
  position: relative;
  height: 100%;
  box-sizing: border-box;
  overflow: auto;
  scrollbar-width: none;
}
[dir=rtl] .md-editor-preview-wrapper {
  direction: rtl;
}
.md-editor-preview-wrapper::-webkit-scrollbar {
  display: none;
}
.md-editor-html {
  font-size: 16px;
  word-break: break-all;
}
.md-editor-catalog-editor {
  position: relative;
  overflow-x: hidden;
  overflow-y: auto;
  height: 100%;
  background-color: var(--md-bk-color);
  border-inline-start: 1px solid var(--md-border-color);
  width: 200px;
  box-sizing: border-box;
  margin-block: 0;
  margin-inline: 0;
  padding-block: 5px;
  padding-inline: 10px;
  font-size: 14px;
  font-variant: tabular-nums;
  line-height: 1.5;
  list-style: none;
  font-feature-settings: "tnum";
  scrollbar-width: none;
}
.md-editor-catalog-editor::-webkit-scrollbar {
  display: none;
}
.md-editor-catalog-fixed {
  position: absolute;
  inset-block-start: 0;
  inset-inline-end: 0;
  z-index: 10002;
}
.md-editor-catalog-flat {
  position: initial;
  flex-shrink: 0;
}
.md-editor-footer {
  height: 24px;
  flex-shrink: 0;
  font-size: 12px;
  color: var(--md-color);
  border-block-start: 1px solid var(--md-border-color);
  display: flex;
  justify-content: space-between;
}
.md-editor-footer-item {
  display: inline-flex;
  align-items: center;
  height: 100%;
  padding-block: 0;
  padding-inline: 10px;
}
.md-editor-footer-item + .md-editor-footer-item {
  padding-inline-start: 0;
}
.md-editor-footer-label {
  padding-inline-end: 5px;
  line-height: 1;
}
.md-editor-clip {
  position: relative;
  display: flex;
  height: calc(100% - 52px);
}
.md-editor-clip-main, .md-editor-clip-preview {
  width: 50%;
  height: 100%;
  border: 1px solid var(--md-border-color);
}
.md-editor-clip-main {
  margin-inline-end: 1em;
}
.md-editor-clip-main .md-editor-clip-cropper {
  position: relative;
  width: 100%;
  height: 100%;
}
.md-editor-clip-main .md-editor-clip-cropper .md-editor-clip-delete {
  position: absolute;
  inset-block-start: 0;
  inset-inline-end: 0;
  font-size: 0;
  background-color: var(--md-bk-color-outstand);
  border-end-start-radius: 4px;
  color: var(--md-color);
  cursor: pointer;
}
.md-editor-clip-main .md-editor-clip-upload {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  cursor: pointer;
}
.md-editor-clip-main .md-editor-clip-upload .md-editor-icon,
.md-editor-clip-main .md-editor-clip-upload .md-editor-iconfont {
  width: auto;
  height: 40px;
  font-size: 40px;
}
.md-editor-clip-preview-target {
  width: 100%;
  height: 100%;
  overflow: hidden;
}
.md-editor-form-item {
  margin-block-end: 20px;
  text-align: center;
}
.md-editor-form-item:last-of-type {
  margin-block-end: 0;
}
.md-editor-label {
  font-size: 14px;
  color: var(--md-color);
  width: 80px;
  text-align: center;
  display: inline-block;
}
.md-editor-input {
  border-radius: 4px;
  padding-block: 4px;
  padding-inline: 11px;
  color: var(--md-color);
  font-size: 14px;
  line-height: 1.5715;
  background-color: var(--md-bk-color);
  background-image: none;
  border: 1px solid var(--md-border-color);
  transition: all 0.2s;
}
.md-editor-input:focus, .md-editor-input:hover {
  border-color: var(--md-border-hover-color);
  outline: 0;
}
.md-editor-input:focus {
  border-color: var(--md-border-active-color);
}
.md-editor-btn {
  font-weight: 400;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  border: 1px solid var(--md-border-color);
  white-space: nowrap;
  user-select: none;
  height: 32px;
  padding-block: 0;
  padding-inline: 15px;
  font-size: 14px;
  border-radius: 4px;
  transition: all 0.2s linear;
  color: var(--md-color);
  background-color: var(--md-bk-color);
  border-color: var(--md-border-color);
  margin-inline-start: 10px;
}
.md-editor-btn:first-of-type {
  margin-inline-start: 0;
}
.md-editor-btn:hover {
  color: var(--md-hover-color);
  background-color: var(--md-bk-color);
  border-color: var(--md-border-hover-color);
}
.md-editor-btn-row {
  width: 100%;
}
@media (max-width: 688px) {
  .md-editor-modal-clip .md-editor-modal {
    max-width: calc(100% - 20px);
    max-height: calc(100% - 20px);
    margin-block: 10px;
    margin-inline: 10px;
    inset-inline-start: 0 !important;
  }
  .md-editor-modal-clip .md-editor-clip {
    flex-direction: column;
  }
  .md-editor-modal-clip .md-editor-clip-main, .md-editor-modal-clip .md-editor-clip-preview {
    width: 100%;
    height: 0;
    flex: 1;
  }
  .md-editor-modal-clip .md-editor-clip-main {
    margin-block-end: 1em;
  }
}
.md-editor-menu {
  margin-block: 0;
  margin-inline: 0;
  padding-block: 0;
  padding-inline: 0;
  border-radius: 3px;
  border: 1px solid var(--md-border-color);
  background-color: inherit;
}
.md-editor-menu-item {
  list-style: none;
  font-size: 12px;
  color: var(--md-color);
  padding-block: 4px;
  padding-inline: 10px;
  cursor: pointer;
  line-height: 16px;
}
.md-editor-menu-item:first-of-type {
  padding-block-start: 8px;
}
.md-editor-menu-item:last-of-type {
  padding-block-end: 8px;
}
.md-editor-menu-item:hover {
  background-color: var(--md-bk-hover-color);
}
.md-editor-table-shape {
  padding-block: 4px;
  padding-inline: 4px;
  border-radius: 3px;
  border: 1px solid var(--md-border-color);
  display: flex;
  flex-direction: column;
}
.md-editor-table-shape-row {
  display: flex;
}
.md-editor-table-shape-col {
  padding-block: 2px;
  padding-inline: 2px;
  cursor: pointer;
}
.md-editor-table-shape-col-default {
  width: 16px;
  height: 16px;
  background-color: #e0e0e0;
  border-radius: 3px;
  transition: all 0.2s;
}
.md-editor-table-shape-col-include {
  background-color: #aaa;
}
.md-editor-toolbar-wrapper {
  overflow-x: auto;
  overflow-y: hidden;
  scrollbar-width: none;
  flex-shrink: 0;
  padding-block: 4px;
  padding-inline: 4px;
  border-block-end: 1px solid var(--md-border-color);
}
.md-editor-toolbar-wrapper::-webkit-scrollbar {
  height: 0 !important;
}
.md-editor-toolbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  box-sizing: content-box;
}
.md-editor-toolbar-item {
  color: var(--md-color);
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-block: 0;
  margin-inline: 2px;
  padding-block: 0;
  padding-inline: 2px;
  transition: all 0.3s;
  border-radius: 3px;
  cursor: pointer;
  list-style: none;
  user-select: none;
  text-align: center;
  border: none;
  background-color: transparent;
}
.md-editor-toolbar-item-name {
  font-size: 12px;
  word-break: keep-all;
  white-space: nowrap;
}
.md-editor-toolbar-item:not([disabled]):hover {
  background-color: var(--md-bk-color-outstand);
}
.md-editor-toolbar-active {
  background-color: var(--md-bk-color-outstand);
}
.md-editor-toolbar-left, .md-editor-toolbar-right {
  padding-block: 1px;
  padding-inline: 0;
  display: flex;
  align-items: center;
}
.md-editor .md-editor-stn .md-editor-toolbar-item {
  padding-block: 0;
  padding-inline: 6px;
}
.md-editor-dark .md-editor-table-shape-col-default {
  background-color: #222;
}
.md-editor-dark .md-editor-table-shape-col-include {
  background-color: #555;
}
.md-editor-floating-toolbar {
  padding-block: 4px;
  padding-inline: 4px;
  display: flex;
  align-items: center;
}
.md-editor-floating-toolbar-container {
  opacity: 0;
  transition: opacity 120ms ease-out;
  transition-delay: 20ms;
  will-change: opacity;
}
.md-editor-floating-toolbar-container[data-state=visible] {
  opacity: 1;
}
.md-editor-floating-toolbar-container .cm-tooltip-arrow {
  transition: opacity 120ms ease-out;
  opacity: 0;
}
.md-editor-floating-toolbar-container[data-state=visible] .cm-tooltip-arrow {
  opacity: 1;
}
.md-editor .cm-editor {
  direction: ltr;
  font-size: 14px;
  height: 100%;
}
.md-editor .cm-editor.cm-focused {
  outline: none;
}
.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete {
  border-radius: 3px;
}
.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete > ul {
  border-radius: 3px;
  min-width: fit-content;
  max-width: fit-content;
}
.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete > ul li {
  background-color: var(--md-bk-color);
  color: var(--md-color);
  padding-block: 4px;
  padding-inline: 10px;
  line-height: 16px;
}
.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete > ul li .cm-completionIcon {
  width: auto;
}
.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete > ul li[aria-selected] {
  background-color: var(--md-bk-hover-color);
}
.md-editor .cm-editor .cm-tooltip.cm-tooltip-autocomplete .cm-completionInfo {
  margin-block-start: -2px;
  margin-inline-start: 3px;
  padding-block: 4px;
  padding-inline: 9px;
  border-radius: 3px;
  overflow: hidden;
  background-color: var(--md-bk-hover-color);
  color: var(--md-color);
}
.md-editor .cm-scroller {
  scrollbar-width: none;
}
.md-editor .cm-scroller::-webkit-scrollbar {
  display: none;
}
.md-editor .cm-scroller .cm-content[contenteditable=true] {
  margin-block: 10px;
  margin-inline: 10px;
  min-height: calc(100% - 20px);
}
.md-editor .cm-scroller .cm-gutters + .cm-content[contenteditable=true] {
  margin-block: 0;
  margin-inline: 0;
  min-height: 100%;
}
.md-editor .cm-scroller .cm-line {
  line-height: inherit;
}
.md-editor .ͼ1 .cm-scroller {
  font-family: source-code-pro, Menlo, Monaco, Consolas, "Courier New", monospace;
  line-height: 20px;
}
.md-editor .cm-search .cm-textfield {
  border-radius: 4px;
  padding-block: 4px;
  padding-inline: 11px;
  color: var(--md-color);
  font-size: 10px;
  background-image: none;
  border: 1px solid var(--md-border-color);
  transition: all 0.2s;
}
.md-editor .cm-search .cm-textfield:focus, .md-editor .cm-search .cm-textfield:hover {
  border-color: var(--md-border-hover-color);
  outline: 0;
}
.md-editor .cm-search .cm-textfield:focus {
  border-color: var(--md-border-active-color);
}
.md-editor .cm-search .cm-button {
  font-weight: 400;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  border: 1px solid var(--md-border-color);
  white-space: nowrap;
  user-select: none;
  height: 20px;
  padding-block: 0;
  padding-inline: 15px;
  font-size: 10px;
  border-radius: 4px;
  transition: all 0.2s linear;
  color: var(--md-color);
  background-color: inherit;
  background-image: none;
  border-color: var(--md-border-color);
}
.md-editor .cm-search .cm-button:first-of-type {
  margin-inline-start: 0;
}
.md-editor .cm-search .cm-button:hover {
  color: var(--md-hover-color);
  background-color: inherit;
  border-color: var(--md-border-hover-color);
}
.md-editor .cm-search input[type=checkbox] {
  vertical-align: sub;
}
.md-editor .cm-search input[type=checkbox]::after {
  display: block;
  content: "";
  font-weight: bold;
  cursor: pointer;
  width: 12px;
  height: 12px;
  border: 1px solid var(--md-border-color);
  background-color: var(--md-bk-color-outstand);
  border-radius: 2px;
  line-height: 1;
  text-align: center;
}
.md-editor .cm-search input[type=checkbox]:checked::after {
  content: "✓";
  color: var(--md-color);
}
.md-editor .cm-search button[name=close] {
  color: inherit;
  cursor: pointer;
  inset-inline-end: 6px;
}
[dir=rtl] .md-editor-catalog {
  direction: rtl;
}
.md-editor-catalog-indicator {
  height: 18px;
  width: 4px;
  background-color: #73d13d;
  position: absolute;
  border-radius: 4px;
  transition: top 0.3s;
}
.md-editor-catalog > .md-editor-catalog-link {
  padding-block: 5px;
  padding-inline: 8px;
}
.md-editor-catalog-link {
  padding-block: 5px;
  padding-inline-start: 1em;
  display: flex;
  flex-direction: column;
}
.md-editor-catalog-link span {
  display: inline-block;
  width: 100%;
  position: relative;
  overflow: hidden;
  color: var(--md-color);
  white-space: nowrap;
  text-overflow: ellipsis;
  transition: color 0.3s;
  cursor: pointer;
  line-height: 18px;
}
.md-editor-catalog-link span:hover {
  color: #73d13d;
}
.md-editor-catalog-wrapper > .md-editor-catalog-link {
  padding-block-start: 5px;
  padding-block-end: 5px;
}
.md-editor-catalog-wrapper > .md-editor-catalog-link:first-of-type {
  padding-block-start: 10px;
}
.md-editor-catalog-wrapper > .md-editor-catalog-link:last-of-type {
  padding-block-end: 0;
}
.md-editor-catalog-active > span {
  color: #73d13d;
}
.md-editor-catalog-dark {
  --md-modal-mask: #00000073;
  --md-color: #999;
  --md-hover-color: #bbb;
  --md-bk-color: #000;
  --md-bk-color-outstand: #333;
  --md-bk-hover-color: #1b1a1a;
  --md-border-color: #2d2d2d;
  --md-border-hover-color: #636262;
  --md-border-active-color: #777;
  --md-modal-shadow: 0px 6px 24px 2px #00000066;
  --md-scrollbar-bg-color: #0f0f0f;
  --md-scrollbar-thumb-color: #2d2d2d;
  --md-scrollbar-thumb-hover-color: #3a3a3a;
  --md-scrollbar-thumb-active-color: #3a3a3a;
}
.md-editor {
  --md-modal-mask: #00000073;
  --md-color: #3f4a54;
  --md-hover-color: #000;
  --md-bk-color: #fff;
  --md-bk-color-outstand: #f2f2f2;
  --md-bk-hover-color: #f5f7fa;
  --md-border-color: #e6e6e6;
  --md-border-hover-color: #b9b9b9;
  --md-border-active-color: #999;
  --md-modal-shadow: 0px 6px 24px 2px #00000019;
  --md-scrollbar-bg-color: #e2e2e2;
  --md-scrollbar-thumb-color: #0000004d;
  --md-scrollbar-thumb-hover-color: #00000059;
  --md-scrollbar-thumb-active-color: #00000061;
  color: var(--md-color);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, ui-sans-serif, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
  width: 100%;
  height: 500px;
  position: relative;
  box-sizing: border-box;
  border: 1px solid var(--md-border-color);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background-color: var(--md-bk-color);
}
.md-editor .md-editor-fullscreen {
  position: fixed !important;
  inset-block-start: 0;
  inset-inline-end: 0;
  inset-block-end: 0;
  inset-inline-start: 0;
  width: auto !important;
  height: auto !important;
  z-index: 10000;
}
.md-editor svg.md-editor-icon {
  width: 16px;
  height: 16px;
  padding-block: 4px;
  padding-inline: 4px;
  fill: none;
  overflow: hidden;
  display: block;
  box-sizing: content-box;
}
.md-editor .lucide-list,
.md-editor .lucide-list-ordered,
.md-editor .lucide-list-todo {
  width: 18px;
  height: 18px;
  padding-block: 3px;
  padding-inline: 3px;
}
.md-editor-preview {
  font-size: 16px;
  word-break: break-all;
  display: flow-root;
  padding-block: 10px;
  padding-inline: 20px;
}
.md-editor-modal-container {
  --md-modal-mask: #00000073;
  --md-color: #3f4a54;
  --md-hover-color: #000;
  --md-bk-color: #fff;
  --md-bk-color-outstand: #f2f2f2;
  --md-bk-hover-color: #f5f7fa;
  --md-border-color: #e6e6e6;
  --md-border-hover-color: #b9b9b9;
  --md-border-active-color: #999;
  --md-modal-shadow: 0px 6px 24px 2px #00000019;
  --md-scrollbar-bg-color: #e2e2e2;
  --md-scrollbar-thumb-color: #0000004d;
  --md-scrollbar-thumb-hover-color: #00000059;
  --md-scrollbar-thumb-active-color: #00000061;
  color: var(--md-color);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI Variable", "Segoe UI", system-ui, ui-sans-serif, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
}
.md-editor-modal-container .lucide-x {
  width: 20px;
  height: 20px;
  padding-block: 2px;
  padding-inline: 2px;
}
.md-editor-modal-container .lucide-minimize-2,
.md-editor-modal-container .lucide-maximize-2 {
  width: 18px;
  height: 18px;
  padding-block: 2px;
  padding-inline: 2px;
}
.md-editor-previewOnly {
  border: none;
  height: auto;
  overflow: visible;
}
.md-editor-previewOnly .md-editor-content {
  height: 100%;
}
.md-editor-previewOnly .md-editor-preview {
  padding-block: 0;
  padding-inline: 0;
}
.md-editor-previewOnly .md-editor-preview-wrapper {
  overflow: visible;
}
.md-editor-dark,
.md-editor-modal-container[data-theme=dark] {
  --md-modal-mask: #00000073;
  --md-color: #999;
  --md-hover-color: #bbb;
  --md-bk-color: #000;
  --md-bk-color-outstand: #333;
  --md-bk-hover-color: #1b1a1a;
  --md-border-color: #2d2d2d;
  --md-border-hover-color: #636262;
  --md-border-active-color: #777;
  --md-modal-shadow: 0px 6px 24px 2px #00000066;
  --md-scrollbar-bg-color: #0f0f0f;
  --md-scrollbar-thumb-color: #2d2d2d;
  --md-scrollbar-thumb-hover-color: #3a3a3a;
  --md-scrollbar-thumb-active-color: #3a3a3a;
}
.medium-zoom-overlay,
.medium-zoom-image--opened {
  z-index: 100001;
}
.md-editor-fullscreen {
  position: fixed !important;
  inset-block-start: 0;
  inset-inline-end: 0;
  inset-block-end: 0;
  inset-inline-start: 0;
  width: auto !important;
  height: auto !important;
  z-index: 10000;
}
.md-editor-disabled {
  cursor: not-allowed !important;
  opacity: 0.6;
}.competition-score-page {
  min-width: 0;
  padding-bottom: 24px;
}

.competition-score-loading {
  min-height: 360px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 16px;
}

.competition-score-scope-card,
.competition-score-overview-card,
.competition-score-workbench-card,
.competition-score-publish-card,
.competition-score-trace-card,
.competition-score-empty-card {
  border: 1px solid #e8edf5;
  border-radius: 16px;
  box-shadow: 0 10px 30px rgba(35, 55, 90, 0.05);
}

.competition-score-scope-card {
  background: linear-gradient(135deg, #f7fbff 0%, #fff 66%);
}

.competition-score-scope-card__head,
.competition-score-overview-head,
.competition-score-workbench-head,
.competition-score-publish-card__head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 20px;
}

.competition-score-scope-card__head {
  padding-bottom: 20px;
}

.competition-score-eyebrow {
  color: #1677ff;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
}

.competition-score-scope-card h3,
.competition-score-overview-card h4,
.competition-score-workbench-card h4,
.competition-score-publish-card h4 {
  margin: 6px 0 4px;
}

.competition-score-scope-selectors {
  display: grid;
  grid-template-columns: repeat(4, minmax(160px, 1fr));
  gap: 10px;
  padding-top: 16px;
  border-top: 1px solid #e8edf5;
}

.competition-score-filter-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 12px;
}

.competition-score-filter-row .ant-input-affix-wrapper {
  min-width: 260px;
  flex: 1 1 280px;
}

.competition-score-readiness,
.competition-score-import-alert,
.competition-score-subject-alert {
  margin: 8px 0;
  border-radius: 12px;
}

.competition-score-readiness.ant-alert,
.competition-score-import-alert.ant-alert,
.competition-score-subject-alert.ant-alert {
  padding: 7px 12px;
}

.competition-score-readiness .ant-alert-message,
.competition-score-import-alert .ant-alert-message,
.competition-score-subject-alert .ant-alert-message {
  font-size: 13px;
}

.competition-score-readiness .ant-alert-description,
.competition-score-import-alert .ant-alert-description,
.competition-score-subject-alert .ant-alert-description {
  font-size: 12px;
}

.competition-score-main-tabs {
  margin-top: 12px;
}

.competition-score-main-tabs > .ant-tabs-nav {
  margin-bottom: 8px;
}

.competition-score-main-tabs > .ant-tabs-nav .ant-tabs-tab {
  padding: 12px 4px;
  font-weight: 600;
}

.competition-score-main-tabs > .ant-tabs-content-holder {
  min-width: 0;
}

.competition-score-overview-head {
  margin-bottom: 10px;
}

.competition-score-overview-card .ant-card-body,
.competition-score-workbench-card .ant-card-body {
  padding: 16px 18px;
}

.competition-score-overview-card .ant-table-wrapper,
.competition-score-workbench-card .ant-table-wrapper,
.competition-score-trace-card .ant-table-wrapper {
  overflow: hidden;
}

.competition-score-overview-card .ant-table-thead > tr > th,
.competition-score-overview-card .ant-table-tbody > tr > td,
.competition-score-workbench-card .ant-table-thead > tr > th,
.competition-score-workbench-card .ant-table-tbody > tr > td {
  padding-top: 10px;
  padding-bottom: 10px;
}

/* 综合成绩列：使用列 class 定位，兼容动态科目列数量和列顺序调整。 */
.competition-score-overview-card
  .ant-table-thead
  > tr
  > th.competition-score-total-column {
  color: #0b3d91;
  font-weight: 700;
  background: #eaf4ff !important;
  box-shadow: inset 3px 0 0 #1677ff;
}

.competition-score-overview-card
  .ant-table-thead
  > tr
  > th.competition-score-total-column:hover,
.competition-score-overview-card
  .ant-table-thead
  > tr
  > th.ant-table-column-sort.competition-score-total-column {
  color: #0b3d91;
  background: #dceeff !important;
}

.competition-score-overview-card
  .ant-table-thead
  > tr
  > th.competition-score-total-column
  .ant-table-column-sorter {
  color: #1677ff;
}

.competition-score-overview-card
  .ant-table-tbody
  > tr
  > td.competition-score-total-column {
  background: #f3f8ff;
  box-shadow: inset 3px 0 0 #1677ff;
}

.competition-score-overview-card
  .ant-table-tbody
  > tr:hover
  > td.competition-score-total-column,
.competition-score-overview-card
  .ant-table-tbody
  > tr
  > td.ant-table-cell-row-hover.competition-score-total-column {
  background: #e8f3ff !important;
}

.competition-score-column-title,
.competition-score-tab-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.competition-score-player {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  text-align: left;
  cursor: pointer;
}

.competition-score-player:hover strong,
.competition-score-table-link:hover {
  color: #1677ff;
}

.competition-score-player span:not(.ant-avatar) {
  display: inline-flex;
  flex-direction: column;
  min-width: 0;
}

.competition-score-player small,
.competition-score-total-cell small {
  color: #8c98aa;
  font-size: 11px;
}

.competition-score-player__avatar {
  flex: 0 0 auto;
  background: #e6f4ff;
  color: #1677ff;
}

.competition-score-secondary {
  color: #64748b;
}

.competition-score-cell {
  min-width: 96px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 3px 0;
  border: 0;
  background: transparent;
  cursor: pointer;
  text-align: left;
}

.competition-score-cell__value {
  min-width: 34px;
  font-weight: 700;
  color: #172033;
}

.competition-score-cell__value--pending_generation,
.competition-score-cell__value--pending_input,
.competition-score-cell__value--scoring {
  color: #8c98aa;
}

.competition-score-cell__value--pending_review,
.competition-score-cell__value--abnormal,
.competition-score-cell__value--arbitrating {
  color: #d4380d;
}

.competition-score-cell__value--absent {
  color: #a7b0bd;
}

.competition-score-status-tag--compact {
  margin-inline-end: 0;
  font-size: 11px;
}

.competition-score-total-cell {
  display: inline-flex;
  flex-direction: column;
  gap: 2px;
}

.competition-score-total-cell strong {
  color: #0b3d91;
  font-size: 22px;
  font-weight: 800;
  line-height: 1.05;
  letter-spacing: 0.01em;
}

.competition-score-total-cell small {
  color: #6f8199;
  font-size: 11px;
  font-weight: 500;
  line-height: 1.2;
}

.competition-score-rank {
  display: inline-flex;
  min-width: 26px;
  height: 26px;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  font-weight: 700;
}

.competition-score-rank--1 {
  background: #fff1b8;
  color: #ad6800;
}
.competition-score-rank--2 {
  background: #f0f5ff;
  color: #3658a7;
}
.competition-score-rank--3 {
  background: #fff2e8;
  color: #ad4e00;
}
.competition-score-rank--other {
  color: #667085;
}

.competition-score-row--absent td {
  color: #9ba5b4;
  background: #fafafa;
}

.competition-score-subject-stats {
  margin-bottom: 4px;
}

.competition-score-subject-stats .ant-card {
  border: 1px solid #edf1f7;
  border-radius: 10px;
}

.competition-score-subject-panel .ant-tabs {
  margin-top: 8px;
}

.competition-score-publish-card {
  margin-top: 12px;
}

.competition-score-publish-card__head {
  align-items: center;
}

.competition-score-check-list {
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.competition-score-check-item {
  display: flex;
  align-items: center;
  gap: 8px;
  color: #4b5565;
}

.competition-score-check-item .is-pass {
  color: #52c41a;
}
.competition-score-check-item .is-warn {
  color: #d4380d;
}

.competition-score-rule-card {
  min-height: 150px;
  padding: 18px;
  border: 1px solid #dbeafe;
  border-radius: 12px;
  background: #f7fbff;
}

.competition-score-rule-card__formula {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin: 14px 0;
}

.competition-score-rule-card__scope {
  margin-top: 14px;
  color: #5b6b82;
  font-size: 12px;
}

.competition-score-publish-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 20px;
}

.competition-score-trace-card {
  margin-top: 12px;
}

.competition-score-empty-card {
  min-height: 300px;
  display: grid;
  place-items: center;
  text-align: center;
}

.competition-score-detail__hero {
  display: grid;
  grid-template-columns: auto 1fr auto;
  align-items: center;
  gap: 12px;
  padding: 14px;
  margin-bottom: 16px;
  border-radius: 12px;
  background: linear-gradient(135deg, #f2f8ff, #fff);
}

.competition-score-detail__hero h4 {
  margin: 0 0 3px;
}

.competition-score-detail__total {
  display: flex;
  align-items: flex-end;
  flex-direction: column;
  gap: 3px;
}

.competition-score-detail__total strong {
  color: #1677ff;
  font-size: 24px;
}

.competition-score-detail h5 {
  margin: 22px 0 10px;
}

.competition-score-detail__section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin: 22px 0 10px;
}

.competition-score-detail__section-head h5 {
  margin: 0;
}

.competition-score-detail__subjects {
  display: grid;
  gap: 8px;
}

.competition-score-detail__subject {
  border: 1px solid #edf1f7;
  border-radius: 10px;
}

.competition-score-detail__subject > div:first-child {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.competition-score-detail__subject-row {
  display: flex;
  align-items: center;
  gap: 5px;
}

.competition-score-detail__subject-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 8px;
}

.competition-score-detail__subject strong {
  font-size: 18px;
}

.competition-score-muted {
  color: #a7b0bd;
}

.competition-answer-sheet-modal .ant-modal-body {
  max-height: 78vh;
  overflow-y: auto;
}

.competition-answer-sheet {
  display: grid;
  gap: 16px;
}

.competition-answer-sheet__loading {
  display: grid;
  min-height: 260px;
  place-items: center;
}

.competition-answer-sheet__summary {
  border-color: #e8edf5;
  border-radius: 12px;
  background: #f8fbff;
}

.competition-answer-sheet__summary .ant-card-body {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.competition-answer-sheet__navigation,
.competition-answer-sheet__question-detail {
  height: 100%;
  border-color: #e8edf5;
  border-radius: 12px;
}

.competition-answer-sheet__question-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(42px, 1fr));
  gap: 8px;
}

.competition-answer-sheet__question-number {
  width: 42px;
  height: 38px;
  padding: 0;
  font-weight: 700;
}

.competition-answer-sheet__question-number--correct:not(.is-active) {
  color: #16834a;
  border-color: #8fd3ab;
  background: #effaf3;
}

.competition-answer-sheet__question-number--wrong:not(.is-active) {
  color: #cf3434;
  border-color: #f0aaaa;
  background: #fff3f2;
}

.competition-answer-sheet__question-number--unanswered:not(.is-active) {
  color: #667085;
  border-color: #d7dce5;
  background: #f5f6f8;
}

.competition-answer-sheet__question-number.is-active {
  color: #fff;
  border-color: #1677ff;
  background: #1677ff;
  box-shadow: 0 0 0 3px rgba(22, 119, 255, 0.14);
}

.competition-answer-sheet__legend {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #667085;
  font-size: 12px;
}

.competition-answer-sheet__legend-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
}

.competition-answer-sheet__legend-dot--correct {
  background: #35a66b;
}

.competition-answer-sheet__legend-dot--wrong {
  background: #df5555;
}

.competition-answer-sheet__legend-dot--unanswered {
  background: #a4acb8;
}

.competition-answer-sheet__stem {
  margin-bottom: 18px;
  white-space: pre-wrap;
  font-size: 15px;
  font-weight: 600;
}

.competition-answer-sheet__options {
  display: grid;
  gap: 8px;
}

.competition-answer-sheet__option {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr) auto;
  align-items: start;
  gap: 10px;
  padding: 11px 12px;
  border: 1px solid #e8edf5;
  border-radius: 9px;
  background: #fff;
}

.competition-answer-sheet__option > strong {
  color: #475467;
}

.competition-answer-sheet__option.is-selected {
  border-color: #8bbcff;
  background: #f0f7ff;
}

.competition-answer-sheet__answer-summary,
.competition-answer-sheet__fill-answers {
  margin-top: 16px;
  padding: 13px 14px;
  border-radius: 10px;
  background: #f7f9fc;
}

.competition-answer-sheet__answer-summary .ant-typography-paragraph,
.competition-answer-sheet__fill-answers .ant-typography-paragraph {
  margin: 5px 0 0;
}

@media (max-width: 900px) {
  .competition-score-scope-card__head,
  .competition-score-overview-head,
  .competition-score-workbench-head,
  .competition-score-publish-card__head {
    flex-direction: column;
  }

  .competition-score-scope-selectors {
    grid-template-columns: repeat(2, minmax(140px, 1fr));
  }
}

@media (max-width: 560px) {
  .competition-score-overview-card .ant-card-body,
  .competition-score-workbench-card .ant-card-body {
    padding: 12px;
  }

  .competition-score-total-cell strong {
    font-size: 20px;
  }

  .competition-score-scope-selectors {
    grid-template-columns: 1fr;
  }

  .competition-score-filter-row .ant-input-affix-wrapper,
  .competition-score-filter-row .ant-select,
  .competition-score-filter-row .ant-btn {
    width: 100%;
  }

  .competition-score-detail__hero {
    grid-template-columns: auto 1fr;
  }

  .competition-score-detail__total {
    grid-column: 1 / -1;
    align-items: flex-start;
  }

  .competition-answer-sheet__summary .ant-card-body {
    align-items: flex-start;
    flex-direction: column;
  }

  .competition-answer-sheet__option {
    grid-template-columns: 24px minmax(0, 1fr);
  }

  .competition-answer-sheet__option .ant-tag {
    grid-column: 2;
    width: fit-content;
    margin-inline-start: 0;
  }
}
.competition-paper-assignment-page {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: 20px;
  background: #f5f7fa;
}

.competition-paper-assignment-page__header,
.competition-paper-assignment-page__footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.competition-paper-assignment-page__header h4 {
  margin: 0 0 4px;
}

.competition-paper-assignment-page__scope {
  background: #fff;
}

.competition-paper-assignment-page__stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.competition-paper-assignment-page__stats .ant-card-body {
  padding: 14px 16px;
}

.competition-paper-assignment-page__strategy {
  display: flex;
  align-items: center;
  gap: 16px;
}

.competition-paper-assignment-page__radio-strategy {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
}

.competition-paper-assignment-page__radio-dot {
  width: 10px;
  height: 10px;
  border: 3px solid #1677ff;
  border-radius: 50%;
  box-shadow: 0 0 0 2px #d6e8ff;
}

.competition-paper-assignment-page__paper-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
}

.competition-paper-assignment-page__paper-card {
  min-width: 0;
  background: #fbfcff;
  border-color: #e7edf7;
}

.competition-paper-assignment-page__paper-card-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.competition-paper-assignment-page__paper-card-count {
  margin-top: 12px;
  color: #1f2937;
  font-size: 28px;
  font-weight: 600;
  line-height: 1;
}

.competition-paper-assignment-page__paper-card-count small {
  color: #6b7280;
  font-size: 13px;
  font-weight: 400;
}

.competition-paper-assignment-page__workspace {
  background: #fff;
}

.competition-paper-assignment-page__toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 14px;
}

.competition-paper-assignment-page__visual {
  min-height: 420px;
}

.competition-paper-assignment-page__visual-tabs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;
}

.competition-paper-assignment-page__visual-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 110px minmax(0, 1fr);
  align-items: center;
  gap: 14px;
}

.competition-paper-assignment-page__visual-card {
  min-width: 0;
}

.competition-paper-assignment-page__visual-list {
  max-height: 440px;
  overflow-y: auto;
}

.competition-paper-assignment-page__visual-item {
  display: flex;
  gap: 10px;
  cursor: pointer;
}

.competition-paper-assignment-page__visual-item-main {
  display: flex;
  min-width: 0;
  flex: 1;
  flex-direction: column;
}

.competition-paper-assignment-page__visual-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.competition-paper-assignment-page__footer {
  padding: 4px 0 0;
}

@media (max-width: 1100px) {
  .competition-paper-assignment-page__stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .competition-paper-assignment-page__visual-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .competition-paper-assignment-page__visual-actions {
    flex-direction: row;
    justify-content: center;
  }
}

@media (max-width: 640px) {
  .competition-paper-assignment-page {
    padding: 12px;
  }

  .competition-paper-assignment-page__header,
  .competition-paper-assignment-page__footer,
  .competition-paper-assignment-page__strategy {
    align-items: flex-start;
    flex-direction: column;
  }
}
.competition-formal-exam-session-panel .ant-modal-body {
  max-height: calc(100vh - 160px);
  overflow: auto;
}

.competition-formal-exam-session-panel__hero {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.competition-formal-exam-session-panel__hero h4 {
  margin: 0 0 4px;
}

.competition-formal-exam-session-panel__hero-actions {
  display: flex;
  align-items: center;
  gap: 12px;
}

.competition-formal-exam-session-panel__times {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  margin-top: 8px;
  color: #1677ff;
  font-size: 16px;
  font-weight: 600;
}

.competition-formal-exam-session-panel__stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.competition-formal-exam-session-panel__papers {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
}

.competition-formal-exam-session-panel__toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 12px;
}

.competition-formal-exam-session-panel__check {
  display: flex;
  align-items: flex-start;
  gap: 8px;
}

.competition-formal-exam-session-panel__check-ok {
  color: #389e0d;
  margin-top: 3px;
}

.competition-formal-exam-session-panel__check-fail {
  color: #cf1322;
  margin-top: 3px;
}

.competition-formal-exam-session-panel__fail-list {
  margin: 8px 0 0;
  padding-left: 18px;
}
/* 实操比赛控制台·展开行：三裁判卡片布局，对齐认定评分进度 */

.practical-candidate-assessors {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  padding: 4px 4px 4px 32px;
}

.practical-candidate-assessor {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px 16px;
  border: 1px solid #dbe4ee;
  border-radius: 12px;
  background: #f9fbfd;
  min-height: 120px;
}

.practical-candidate-assessor--empty {
  align-items: center;
  justify-content: center;
  background: #f5f7fa;
  color: #94a3b8;
  font-size: 13px;
}

.practical-candidate-assessor--difference-edge {
  border-color: #ff7875;
  background: #fff2f0;
  box-shadow: 0 0 0 1px rgb(255 77 79 / 8%);
}

.practical-assessor-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.practical-assessor-head .assessor-name {
  font-size: 15px;
  font-weight: 600;
  color: #172033;
}

.practical-assessor-progress {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: #64748b;
}

.practical-assessor-tasks {
  display: flex;
  flex-direction: column;
  gap: 6px;
  border-top: 1px dashed #dbe4ee;
  padding-top: 8px;
}

.practical-assessor-task {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 13px;
  color: #334155;
}

.practical-assessor-task .task-title {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.practical-assessor-task .task-score {
  flex: 0 0 auto;
  font-weight: 600;
  color: #1677ff;
}

.practical-assessor-total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  border-top: 1px solid #dbe4ee;
  padding-top: 8px;
  font-size: 13px;
  color: #64748b;
}

.practical-assessor-total strong {
  font-size: 20px;
  color: #1677ff;
  font-weight: 700;
}

@media (max-width: 900px) {
  .practical-candidate-assessors {
    grid-template-columns: 1fr;
    padding-left: 4px;
  }
}
.stage-content-panel {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.stage-content-panel--compact {
  gap: 12px;
}

.stage-content-panel--compact .stage-content-panel__header,
.stage-content-panel--compact .stage-content-panel__weight-head {
  align-items: flex-start;
  flex-direction: column;
  gap: 8px;
}

.stage-content-panel--compact .stage-content-panel__header > .ant-space {
  gap: 6px !important;
}

.stage-content-panel__header,
.stage-content-panel__weight-head,
.stage-content-panel__actions {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
}

.stage-content-panel__options {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.stage-content-panel--compact .stage-content-panel__options,
.stage-content-panel--compact .stage-content-weight-list {
  grid-template-columns: 1fr;
  gap: 8px;
}

.stage-content-option {
  min-height: 122px;
  cursor: pointer;
  transition: border-color .2s, box-shadow .2s;
}

.stage-content-panel--compact .stage-content-option {
  min-height: auto;
}

.stage-content-option__topline,
.stage-content-weight-row__label {
  display: flex;
  align-items: center;
  gap: 9px;
}

.stage-content-option__topline {
  margin-bottom: 10px;
}

.stage-content-option__icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 19px;
}

.stage-content-option__hint {
  margin-top: 8px;
  color: #ad6800;
  font-size: 12px;
  line-height: 18px;
}

.stage-content-weight-list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.stage-content-weight-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border: 1px solid #e8edf3;
  border-radius: 8px;
  background: #fff;
}

.stage-content-panel--compact .stage-content-weight-row {
  padding: 10px;
}

.stage-content-weight-row--disabled {
  background: #fafafa;
}

@media (max-width: 900px) {
  .stage-content-panel__options,
  .stage-content-weight-list {
    grid-template-columns: 1fr;
  }

  .stage-content-panel__header,
  .stage-content-panel__weight-head,
  .stage-content-panel__actions {
    align-items: flex-start;
    flex-direction: column;
  }
}
.stage-planning-shell {
  display: grid;
  grid-template-columns: 210px minmax(500px, 1fr) 300px;
  gap: 12px;
  min-height: 620px;
}

.stage-planning-library,
.stage-planning-inspector {
  background: #fff;
  border: 1px solid #e8eef5;
  border-radius: 10px;
  padding: 16px;
}

.stage-planning-inspector {
  max-height: 620px;
  overflow-y: auto;
}

.stage-planning-inspector__stage-title {
  margin: 0 0 6px !important;
  color: #0f2942;
  font-size: 20px !important;
  line-height: 28px !important;
}

.stage-planning-inspector__divider {
  margin: 16px 0;
}

.stage-planning-inspector__content-loading {
  display: block;
  margin-bottom: 8px;
}

.stage-planning-library__hint {
  font-size: 12px;
}

.stage-planning-library__items {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 14px;
}

.stage-library-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px;
  border: 1px solid #d7e4f2;
  border-radius: 8px;
  cursor: grab;
  background: #f8fbff;
}

.stage-library-item.is-disabled {
  cursor: not-allowed;
  opacity: .5;
  background: #f5f5f5;
}

.stage-library-item__order,
.stage-canvas-node__index {
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: #1677ff;
  background: #e6f4ff;
  font-size: 12px;
  font-weight: 700;
}

.stage-library-item strong,
.stage-library-item small {
  display: block;
}

.stage-library-item small {
  color: #8c98a8;
  margin-top: 3px;
}

.stage-planning-canvas {
  position: relative;
  min-height: 620px;
  overflow: hidden;
  border: 1px solid #e8eef5;
  border-radius: 10px;
  background: linear-gradient(180deg, #fbfdff 0%, #f5f9fd 100%);
}

.stage-planning-canvas .react-flow {
  min-height: 620px;
}

.stage-planning-svg-defs {
  position: absolute;
  width: 0;
  height: 0;
}

.stage-canvas-node {
  width: 210px;
  border: 1px solid #b9d5f7;
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 5px 16px rgba(46, 101, 160, .12);
}

.stage-canvas-node.is-selected {
  border-color: #1677ff;
  box-shadow: 0 0 0 3px rgba(22, 119, 255, .16), 0 5px 16px rgba(46, 101, 160, .12);
}

.stage-canvas-node__header {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  border-bottom: 1px solid #edf2f7;
}

.stage-canvas-node__header strong {
  flex: 1;
}

.stage-canvas-node__header .ant-tag {
  margin-inline-end: 0;
  font-size: 11px;
}

.stage-canvas-node__body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 10px 12px 12px;
  color: #64748b;
  font-size: 12px;
}

.stage-canvas-node__description {
  color: #94a3b8;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.stage-marker-node {
  display: flex;
  align-items: center;
  gap: 6px;
  color: #64748b;
  font-size: 12px;
  white-space: nowrap;
}

.stage-marker-node__dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #94a3b8;
}

.stage-edge {
  stroke: #1677ff;
  stroke-width: 2;
  color: #1677ff;
}

.stage-edge--marker {
  stroke: #94a3b8;
  stroke-dasharray: 5 4;
  color: #94a3b8;
}

.stage-edge.is-selected {
  stroke-width: 3;
}

.stage-edge-label {
  padding: 3px 7px;
  border: 1px solid #b9d5f7;
  border-radius: 5px;
  background: #fff;
  color: #315a85;
  font-size: 11px;
  pointer-events: all;
}

.stage-edge-label.is-selected {
  border-color: #1677ff;
}

.stage-planning-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 0;
}

.stage-planning-toolbar .ant-typography {
  margin: 0;
}

.stage-validation-panel__summary {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 10px;
}

.stage-validation-item {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  border: 0;
  background: transparent;
  padding: 4px 0;
  text-align: left;
  cursor: pointer;
}

.stage-theory-workbench-modal .ant-modal-content {
  overflow: hidden;
}

.stage-theory-workbench-modal .ant-modal-body {
  min-width: 0;
}

.stage-theory-workbench-modal .competition-page {
  padding: 8px 24px 24px;
}

.stage-planning-inspector--empty {
  display: flex;
  align-items: center;
  justify-content: center;
}

@media (max-width: 1200px) {
  .stage-planning-shell {
    grid-template-columns: 180px minmax(420px, 1fr) 270px;
  }
}
/* this gets exported as style.css and can be used for the default theming */
/* these are the necessary styles for React/Svelte Flow, they get used by base.css and style.css */
.react-flow {
  direction: ltr;

  --xy-edge-stroke-default: #b1b1b7;
  --xy-edge-stroke-width-default: 1;
  --xy-edge-stroke-selected-default: #555;

  --xy-connectionline-stroke-default: #b1b1b7;
  --xy-connectionline-stroke-width-default: 1;

  --xy-attribution-background-color-default: rgba(255, 255, 255, 0.5);

  --xy-minimap-background-color-default: #fff;
  --xy-minimap-mask-background-color-default: rgba(240, 240, 240, 0.6);
  --xy-minimap-mask-stroke-color-default: transparent;
  --xy-minimap-mask-stroke-width-default: 1;
  --xy-minimap-node-background-color-default: #e2e2e2;
  --xy-minimap-node-stroke-color-default: transparent;
  --xy-minimap-node-stroke-width-default: 2;

  --xy-background-color-default: transparent;
  --xy-background-pattern-dots-color-default: #91919a;
  --xy-background-pattern-lines-color-default: #eee;
  --xy-background-pattern-cross-color-default: #e2e2e2;
  background-color: var(--xy-background-color, var(--xy-background-color-default));
  --xy-node-color-default: inherit;
  --xy-node-border-default: 1px solid #1a192b;
  --xy-node-background-color-default: #fff;
  --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);
  --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, 0.08);
  --xy-node-boxshadow-selected-default: 0 0 0 0.5px #1a192b;
  --xy-node-border-radius-default: 3px;

  --xy-handle-background-color-default: #1a192b;
  --xy-handle-border-color-default: #fff;

  --xy-selection-background-color-default: rgba(0, 89, 220, 0.08);
  --xy-selection-border-default: 1px dotted rgba(0, 89, 220, 0.8);

  --xy-controls-button-background-color-default: #fefefe;
  --xy-controls-button-background-color-hover-default: #f4f4f4;
  --xy-controls-button-color-default: inherit;
  --xy-controls-button-color-hover-default: inherit;
  --xy-controls-button-border-color-default: #eee;
  --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);

  --xy-edge-label-background-color-default: #ffffff;
  --xy-edge-label-color-default: inherit;
  --xy-resize-background-color-default: #3367d9;
}
.react-flow.dark {
  --xy-edge-stroke-default: #3e3e3e;
  --xy-edge-stroke-width-default: 1;
  --xy-edge-stroke-selected-default: #727272;

  --xy-connectionline-stroke-default: #b1b1b7;
  --xy-connectionline-stroke-width-default: 1;

  --xy-attribution-background-color-default: rgba(150, 150, 150, 0.25);

  --xy-minimap-background-color-default: #141414;
  --xy-minimap-mask-background-color-default: rgba(60, 60, 60, 0.6);
  --xy-minimap-mask-stroke-color-default: transparent;
  --xy-minimap-mask-stroke-width-default: 1;
  --xy-minimap-node-background-color-default: #2b2b2b;
  --xy-minimap-node-stroke-color-default: transparent;
  --xy-minimap-node-stroke-width-default: 2;

  --xy-background-color-default: #141414;
  --xy-background-pattern-dots-color-default: #555;
  --xy-background-pattern-lines-color-default: #333;
  --xy-background-pattern-cross-color-default: #333;
  --xy-node-color-default: #f8f8f8;
  --xy-node-border-default: 1px solid #3c3c3c;
  --xy-node-background-color-default: #1e1e1e;
  --xy-node-group-background-color-default: rgba(240, 240, 240, 0.25);
  --xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, 0.08);
  --xy-node-boxshadow-selected-default: 0 0 0 0.5px #999;

  --xy-handle-background-color-default: #bebebe;
  --xy-handle-border-color-default: #1e1e1e;

  --xy-selection-background-color-default: rgba(200, 200, 220, 0.08);
  --xy-selection-border-default: 1px dotted rgba(200, 200, 220, 0.8);

  --xy-controls-button-background-color-default: #2b2b2b;
  --xy-controls-button-background-color-hover-default: #3e3e3e;
  --xy-controls-button-color-default: #f8f8f8;
  --xy-controls-button-color-hover-default: #fff;
  --xy-controls-button-border-color-default: #5b5b5b;
  --xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, 0.08);

  --xy-edge-label-background-color-default: #141414;
  --xy-edge-label-color-default: #f8f8f8;
}
.react-flow__background {
  background-color: var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));
  pointer-events: none;
  z-index: -1;
}
.react-flow__container {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
}
.react-flow__pane {
  z-index: 1;
  touch-action: none;
}
.react-flow__pane.draggable {
    cursor: grab;
  }
.react-flow__pane.dragging {
    cursor: grabbing;
  }
.react-flow__pane.selection {
    cursor: pointer;
  }
.react-flow__viewport {
  transform-origin: 0 0;
  z-index: 2;
  pointer-events: none;
}
.react-flow__renderer {
  z-index: 4;
}
.react-flow__selection {
  z-index: 6;
}
.react-flow__nodesselection-rect:focus,
.react-flow__nodesselection-rect:focus-visible {
  outline: none;
}
.react-flow__edge-path {
  stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
  stroke-width: var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));
  fill: none;
}
.react-flow__connection-path {
  stroke: var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));
  stroke-width: var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));
  fill: none;
}
.react-flow .react-flow__edges {
  position: absolute;
}
.react-flow .react-flow__edges svg {
    overflow: visible;
    position: absolute;
    pointer-events: none;
  }
.react-flow__edge {
  pointer-events: visibleStroke;
}
.react-flow__edge.selectable {
    cursor: pointer;
  }
.react-flow__edge.animated path {
    stroke-dasharray: 5;
    animation: dashdraw 0.5s linear infinite;
  }
.react-flow__edge.animated path.react-flow__edge-interaction {
    stroke-dasharray: none;
    animation: none;
  }
.react-flow__edge.inactive {
    pointer-events: none;
  }
.react-flow__edge.selected,
  .react-flow__edge:focus,
  .react-flow__edge:focus-visible {
    outline: none;
  }
.react-flow__edge.selected .react-flow__edge-path,
  .react-flow__edge.selectable:focus .react-flow__edge-path,
  .react-flow__edge.selectable:focus-visible .react-flow__edge-path {
    stroke: var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default));
  }
.react-flow__edge-textwrapper {
    pointer-events: all;
  }
.react-flow__edge .react-flow__edge-text {
    pointer-events: none;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
  }
/* Arrowhead marker styles - use CSS custom properties as default */
.react-flow__arrowhead polyline {
  stroke: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
}
.react-flow__arrowhead polyline.arrowclosed {
  fill: var(--xy-edge-stroke, var(--xy-edge-stroke-default));
}
.react-flow__connection {
  pointer-events: none;
}
.react-flow__connection .animated {
    stroke-dasharray: 5;
    animation: dashdraw 0.5s linear infinite;
  }
svg.react-flow__connectionline {
  z-index: 1001;
  overflow: visible;
  position: absolute;
}
.react-flow__nodes {
  pointer-events: none;
  transform-origin: 0 0;
}
.react-flow__node {
  position: absolute;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  pointer-events: all;
  transform-origin: 0 0;
  box-sizing: border-box;
  cursor: default;
}
.react-flow__node.selectable {
    cursor: pointer;
  }
.react-flow__node.draggable {
    cursor: grab;
    pointer-events: all;
  }
.react-flow__node.draggable.dragging {
      cursor: grabbing;
    }
.react-flow__nodesselection {
  z-index: 3;
  transform-origin: left top;
  pointer-events: none;
}
.react-flow__nodesselection-rect {
    position: absolute;
    pointer-events: all;
    cursor: grab;
  }
.react-flow__handle {
  position: absolute;
  pointer-events: none;
  min-width: 5px;
  min-height: 5px;
  width: 6px;
  height: 6px;
  background-color: var(--xy-handle-background-color, var(--xy-handle-background-color-default));
  border: 1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));
  border-radius: 100%;
}
.react-flow__handle.connectingfrom {
    pointer-events: all;
  }
.react-flow__handle.connectionindicator {
    pointer-events: all;
    cursor: crosshair;
  }
.react-flow__handle-bottom {
    top: auto;
    left: 50%;
    bottom: 0;
    transform: translate(-50%, 50%);
  }
.react-flow__handle-top {
    top: 0;
    left: 50%;
    transform: translate(-50%, -50%);
  }
.react-flow__handle-left {
    top: 50%;
    left: 0;
    transform: translate(-50%, -50%);
  }
.react-flow__handle-right {
    top: 50%;
    right: 0;
    transform: translate(50%, -50%);
  }
.react-flow__edgeupdater {
  cursor: move;
  pointer-events: all;
}
.react-flow__pane.selection .react-flow__panel {
  pointer-events: none;
}
.react-flow__panel {
  position: absolute;
  z-index: 5;
  margin: 15px;
}
.react-flow__panel.top {
    top: 0;
  }
.react-flow__panel.bottom {
    bottom: 0;
  }
.react-flow__panel.top.center, .react-flow__panel.bottom.center {
      left: 50%;
      transform: translateX(-15px) translateX(-50%);
    }
.react-flow__panel.left {
    left: 0;
  }
.react-flow__panel.right {
    right: 0;
  }
.react-flow__panel.left.center, .react-flow__panel.right.center {
      top: 50%;
      transform: translateY(-15px) translateY(-50%);
    }
.react-flow__attribution {
  font-size: 10px;
  background: var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));
  padding: 2px 3px;
  margin: 0;
}
.react-flow__attribution a {
    text-decoration: none;
    color: #999;
  }
@keyframes dashdraw {
  from {
    stroke-dashoffset: 10;
  }
}
.react-flow__edgelabel-renderer {
  position: absolute;
  width: 100%;
  height: 100%;
  pointer-events: none;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  left: 0;
  top: 0;
}
.react-flow__viewport-portal {
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}
.react-flow__minimap {
  background: var(
    --xy-minimap-background-color-props,
    var(--xy-minimap-background-color, var(--xy-minimap-background-color-default))
  );
}
.react-flow__minimap-svg {
    display: block;
  }
.react-flow__minimap-mask {
    fill: var(
      --xy-minimap-mask-background-color-props,
      var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default))
    );
    stroke: var(
      --xy-minimap-mask-stroke-color-props,
      var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default))
    );
    stroke-width: var(
      --xy-minimap-mask-stroke-width-props,
      var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default))
    );
  }
.react-flow__minimap-node {
    fill: var(
      --xy-minimap-node-background-color-props,
      var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default))
    );
    stroke: var(
      --xy-minimap-node-stroke-color-props,
      var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default))
    );
    stroke-width: var(
      --xy-minimap-node-stroke-width-props,
      var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default))
    );
  }
.react-flow__background-pattern.dots {
    fill: var(
      --xy-background-pattern-color-props,
      var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default))
    );
  }
.react-flow__background-pattern.lines {
    stroke: var(
      --xy-background-pattern-color-props,
      var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default))
    );
  }
.react-flow__background-pattern.cross {
    stroke: var(
      --xy-background-pattern-color-props,
      var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default))
    );
  }
.react-flow__controls {
  display: flex;
  flex-direction: column;
  box-shadow: var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default));
}
.react-flow__controls.horizontal {
    flex-direction: row;
  }
.react-flow__controls-button {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 26px;
    width: 26px;
    padding: 4px;
    border: none;
    background: var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));
    border-bottom: 1px solid
      var(
        --xy-controls-button-border-color-props,
        var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))
      );
    color: var(
      --xy-controls-button-color-props,
      var(--xy-controls-button-color, var(--xy-controls-button-color-default))
    );
    cursor: pointer;
    -webkit-user-select: none;
       -moz-user-select: none;
            user-select: none;
  }
.react-flow__controls-button svg {
      width: 100%;
      max-width: 12px;
      max-height: 12px;
      fill: currentColor;
    }
.react-flow__edge.updating .react-flow__edge-path {
      stroke: #777;
    }
.react-flow__edge-text {
    font-size: 10px;
  }
.react-flow__node.selectable:focus,
  .react-flow__node.selectable:focus-visible {
    outline: none;
  }
.react-flow__node-input,
.react-flow__node-default,
.react-flow__node-output,
.react-flow__node-group {
  padding: 10px;
  border-radius: var(--xy-node-border-radius, var(--xy-node-border-radius-default));
  width: 150px;
  font-size: 12px;
  color: var(--xy-node-color, var(--xy-node-color-default));
  text-align: center;
  border: var(--xy-node-border, var(--xy-node-border-default));
  background-color: var(--xy-node-background-color, var(--xy-node-background-color-default));
}
.react-flow__node-input.selectable:hover, .react-flow__node-default.selectable:hover, .react-flow__node-output.selectable:hover, .react-flow__node-group.selectable:hover {
      box-shadow: var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default));
    }
.react-flow__node-input.selectable.selected,
    .react-flow__node-input.selectable:focus,
    .react-flow__node-input.selectable:focus-visible,
    .react-flow__node-default.selectable.selected,
    .react-flow__node-default.selectable:focus,
    .react-flow__node-default.selectable:focus-visible,
    .react-flow__node-output.selectable.selected,
    .react-flow__node-output.selectable:focus,
    .react-flow__node-output.selectable:focus-visible,
    .react-flow__node-group.selectable.selected,
    .react-flow__node-group.selectable:focus,
    .react-flow__node-group.selectable:focus-visible {
      box-shadow: var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default));
    }
.react-flow__node-group {
  background-color: var(--xy-node-group-background-color, var(--xy-node-group-background-color-default));
}
.react-flow__nodesselection-rect,
.react-flow__selection {
  background: var(--xy-selection-background-color, var(--xy-selection-background-color-default));
  border: var(--xy-selection-border, var(--xy-selection-border-default));
}
.react-flow__nodesselection-rect:focus,
  .react-flow__nodesselection-rect:focus-visible,
  .react-flow__selection:focus,
  .react-flow__selection:focus-visible {
    outline: none;
  }
.react-flow__controls-button:hover {
      background: var(
        --xy-controls-button-background-color-hover-props,
        var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default))
      );
      color: var(
        --xy-controls-button-color-hover-props,
        var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default))
      );
    }
.react-flow__controls-button:disabled {
      pointer-events: none;
    }
.react-flow__controls-button:disabled svg {
        fill-opacity: 0.4;
      }
.react-flow__controls-button:last-child {
    border-bottom: none;
  }
.react-flow__controls.horizontal .react-flow__controls-button {
    border-bottom: none;
    border-right: 1px solid
      var(
        --xy-controls-button-border-color-props,
        var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default))
      );
  }
.react-flow__controls.horizontal .react-flow__controls-button:last-child {
    border-right: none;
  }
.react-flow__resize-control {
  position: absolute;
}
.react-flow__resize-control.left,
.react-flow__resize-control.right {
  cursor: ew-resize;
}
.react-flow__resize-control.top,
.react-flow__resize-control.bottom {
  cursor: ns-resize;
}
.react-flow__resize-control.top.left,
.react-flow__resize-control.bottom.right {
  cursor: nwse-resize;
}
.react-flow__resize-control.bottom.left,
.react-flow__resize-control.top.right {
  cursor: nesw-resize;
}
/* handle styles */
.react-flow__resize-control.handle {
  width: 5px;
  height: 5px;
  border: 1px solid #fff;
  border-radius: 1px;
  background-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));
  translate: -50% -50%;
}
.react-flow__resize-control.handle.left {
  left: 0;
  top: 50%;
}
.react-flow__resize-control.handle.right {
  left: 100%;
  top: 50%;
}
.react-flow__resize-control.handle.top {
  left: 50%;
  top: 0;
}
.react-flow__resize-control.handle.bottom {
  left: 50%;
  top: 100%;
}
.react-flow__resize-control.handle.top.left {
  left: 0;
}
.react-flow__resize-control.handle.bottom.left {
  left: 0;
}
.react-flow__resize-control.handle.top.right {
  left: 100%;
}
.react-flow__resize-control.handle.bottom.right {
  left: 100%;
}
/* line styles */
.react-flow__resize-control.line {
  border-color: var(--xy-resize-background-color, var(--xy-resize-background-color-default));
  border-width: 0;
  border-style: solid;
}
.react-flow__resize-control.line.left,
.react-flow__resize-control.line.right {
  width: 1px;
  transform: translate(-50%, 0);
  top: 0;
  height: 100%;
}
.react-flow__resize-control.line.left {
  left: 0;
  border-left-width: 1px;
}
.react-flow__resize-control.line.right {
  left: 100%;
  border-right-width: 1px;
}
.react-flow__resize-control.line.top,
.react-flow__resize-control.line.bottom {
  height: 1px;
  transform: translate(0, -50%);
  left: 0;
  width: 100%;
}
.react-flow__resize-control.line.top {
  top: 0;
  border-top-width: 1px;
}
.react-flow__resize-control.line.bottom {
  border-bottom-width: 1px;
  top: 100%;
}
.react-flow__edge-textbg {
  fill: var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default));
}
.react-flow__edge-text {
  fill: var(--xy-edge-label-color, var(--xy-edge-label-color-default));
}
.rich-text-editor {
  border: 1px solid #d9d9d9;
  border-radius: 6px;
  background: #fff;
  overflow: hidden;
}

.rich-text-editor__toolbar {
  min-height: 38px;
  padding: 4px 8px;
  border-bottom: 1px solid #f0f0f0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: #fafafa;
}

.rich-text-editor__link-input {
  width: 300px;
  margin-left: 8px;
}

.rich-text-editor__content {
  min-height: inherit;
  padding: 10px 12px;
  outline: none;
  line-height: 1.7;
}

.rich-text-editor__content p.is-editor-empty:first-child::before {
  color: #bfbfbf;
  content: attr(data-placeholder);
  float: left;
  height: 0;
  pointer-events: none;
}

.rich-text-editor__content ul,
.rich-text-editor__content ol {
  padding-left: 24px;
}

.rich-text-preview {
  line-height: 1.7;
  word-break: break-word;
}

.rich-text-preview p:first-child,
.rich-text-preview h1:first-child,
.rich-text-preview h2:first-child,
.rich-text-preview h3:first-child {
  margin-top: 0;
}
.practical-question-editor__scoring-tab {
  padding: 4px 0;
}

.practical-question-editor__step-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

.practical-question-editor__inline-preview {
  color: #8c8c8c;
  max-width: 360px;
  max-height: 24px;
  overflow: hidden;
  font-size: 12px;
}

.practical-question-editor__inline-preview p {
  margin: 0;
}
.competition-paper-preview {
  min-height: 520px;
  padding: 18px 10px 28px;
  overflow: auto;
  background: #f3f4f6;
}

.competition-paper-preview__sheet {
  width: min(794px, 100%);
  min-height: 1123px;
  margin: 0 auto;
  padding: 70px 78px 64px;
  box-sizing: border-box;
  color: #222;
  background: #fff;
  box-shadow: 0 2px 12px rgb(0 0 0 / 12%);
  font-family: 'SimSun', '宋体', 'Songti SC', serif;
  font-size: 15px;
  line-height: 1.65;
}

.competition-paper-preview__header {
  text-align: center;
}

.competition-paper-preview__header h1,
.competition-paper-preview__header h2,
.competition-paper-preview__notice h2,
.competition-paper-preview__question-title {
  margin: 0;
  color: #111;
  font-weight: 700;
}

.competition-paper-preview__header h1 {
  font-size: 23px;
  line-height: 1.5;
}

.competition-paper-preview__header h2 {
  margin-top: 3px;
  font-size: 21px;
  line-height: 1.55;
}

.competition-paper-preview__candidate-fields {
  display: flex;
  justify-content: space-between;
  gap: 22px;
  margin-top: 27px;
  font-size: 15px;
  font-weight: 700;
  white-space: nowrap;
}

.competition-paper-preview__candidate-fields span {
  display: inline-flex;
  align-items: flex-end;
  gap: 4px;
}

.competition-paper-preview__candidate-fields i {
  display: inline-block;
  width: 112px;
  height: 18px;
  border-bottom: 1px solid #333;
}

.competition-paper-preview__notice {
  margin-top: 27px;
}

.competition-paper-preview__notice h2 {
  margin-bottom: 10px;
  font-size: 25px;
  line-height: 1.5;
  letter-spacing: .55em;
  text-align: center;
  text-indent: .55em;
}

.competition-paper-preview__notice p,
.competition-paper-preview__line {
  margin: 0 0 5px;
}

.competition-paper-preview__question {
  margin-top: 27px;
}

.competition-paper-preview__question-title {
  margin-bottom: 7px;
  font-size: 16px;
  line-height: 1.6;
}

.competition-paper-preview__detail-line {
  display: flex;
  align-items: flex-start;
  margin-bottom: 5px;
}

.competition-paper-preview__detail-label {
  flex: 0 0 auto;
  white-space: nowrap;
}

.competition-paper-preview__detail-value {
  min-width: 0;
  flex: 1;
}

.competition-paper-preview__rich-text {
  word-break: break-word;
}

.competition-paper-preview__rich-text p,
.competition-paper-preview__rich-text ul,
.competition-paper-preview__rich-text ol {
  margin: 0 0 5px;
}

.competition-paper-preview__rich-text p:last-child,
.competition-paper-preview__rich-text ul:last-child,
.competition-paper-preview__rich-text ol:last-child {
  margin-bottom: 0;
}

.competition-paper-preview__rich-text ul,
.competition-paper-preview__rich-text ol {
  padding-left: 1.65em;
}

.competition-paper-preview__negative-list ol {
  padding-left: 0;
  list-style: none;
  counter-reset: paper-negative;
}

.competition-paper-preview__negative-list ol > li {
  position: relative;
  padding-left: 1.65em;
  counter-increment: paper-negative;
}

.competition-paper-preview__negative-list ol > li::before {
  position: absolute;
  top: .28em;
  left: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 1.15em;
  height: 1.15em;
  border: 1px solid currentColor;
  border-radius: 50%;
  content: counter(paper-negative);
  font-size: .72em;
  line-height: 1;
}

.competition-paper-preview__supporting-info {
  display: flex;
  align-items: flex-start;
  margin: 0 0 5px;
  padding-left: 2em;
}

.competition-paper-preview__supporting-label {
  flex: 0 0 auto;
  white-space: nowrap;
}

.competition-paper-preview__supporting-info > .competition-paper-preview__rich-text {
  min-width: 0;
  flex: 1;
}

.competition-paper-preview__placeholder {
  color: #999;
}

.competition-paper-preview__empty {
  margin-top: 42px;
  color: #888;
  text-align: center;
}

@media (max-width: 760px) {
  .competition-paper-preview {
    padding: 10px 0 18px;
  }

  .competition-paper-preview__sheet {
    min-height: 0;
    padding: 38px 24px 42px;
  }

  .competition-paper-preview__header h1 {
    font-size: 20px;
  }

  .competition-paper-preview__header h2 {
    font-size: 18px;
  }

  .competition-paper-preview__candidate-fields {
    gap: 10px;
    font-size: 13px;
  }

  .competition-paper-preview__candidate-fields i {
    width: 62px;
  }
}
.formal-exam-player {
  min-height: 100vh;
  min-height: 100dvh;
  background: #0f2744;
  color: #f4f7fb;
  display: flex;
  align-items: stretch;
  justify-content: center;
}

.formal-exam-player__card {
  width: min(920px, 100%);
  margin: 0 auto;
  padding: 48px 56px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 28px;
}

.formal-exam-player__title {
  margin: 0;
  font-size: 42px;
  font-weight: 700;
  text-align: center;
  letter-spacing: 0.08em;
}

.formal-exam-player__subtitle {
  margin: 0;
  text-align: center;
  font-size: 22px;
  color: #c5d4e8;
}

.formal-exam-player__name {
  margin: 8px 0 0;
  text-align: center;
  font-size: 48px;
  font-weight: 700;
}

.formal-exam-player__meta {
  display: grid;
  gap: 16px;
  font-size: 22px;
}

.formal-exam-player__meta p {
  margin: 0;
  padding: 14px 18px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.08);
}

.formal-exam-player__checks {
  display: grid;
  gap: 12px;
  font-size: 22px;
  text-align: center;
}

.formal-exam-player__clock {
  margin: 0;
  text-align: center;
  font-size: 26px;
  font-variant-numeric: tabular-nums;
}

.formal-exam-player__status {
  margin: 12px 0 0;
  text-align: center;
  font-size: 28px;
  font-weight: 600;
}

.formal-exam-player__hint {
  text-align: center;
  font-size: 20px;
  color: #c5d4e8;
}

.formal-exam-player__error {
  text-align: center;
  font-size: 20px;
  color: #ffd0d0;
}

.formal-exam-player .ant-form-item-label > label {
  color: #f4f7fb !important;
  font-size: 20px;
  height: auto;
}

.formal-exam-player .ant-input-lg,
.formal-exam-player .ant-input-password-lg input {
  font-size: 22px;
  min-height: 56px;
}

.formal-exam-player .ant-btn-lg {
  min-height: 64px;
  font-size: 24px;
  width: 100%;
}

.formal-exam-player__actions {
  display: flex;
  justify-content: center;
}

@media (max-width: 900px) {
  .formal-exam-player__card {
    padding: 32px 24px;
  }

  .formal-exam-player__title,
  .formal-exam-player__name {
    font-size: 32px;
  }
}

.formal-exam-player.formal-exam-answering {
  width: 100%;
  height: 100vh;
  height: 100dvh;
  min-height: 0;
  overflow: hidden;
  flex-direction: column;
  align-items: stretch;
}

.formal-exam-answering__header,
.formal-exam-answering__footer {
  position: relative;
  z-index: 2;
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 16px 24px;
  background: #142d49;
}

.formal-exam-answering__header {
  font-size: 22px;
}

.formal-exam-answering__header div,
.formal-exam-answering__meta {
  display: flex;
  gap: 16px;
  align-items: center;
}

.formal-exam-answering__save.is-saved { color: #9ae6b4; }
.formal-exam-answering__save.is-saving,
.formal-exam-answering__save.is-syncing,
.formal-exam-answering__save.is-pending { color: #f6e05e; }
.formal-exam-answering__save.is-error,
.formal-exam-answering__save.is-conflict { color: #feb2b2; }

.formal-exam-answering__banner {
  margin: 0;
  padding: 10px 24px;
  text-align: center;
  font-size: 18px;
}

.formal-exam-answering__banner.is-synced {
  background: rgba(56, 161, 105, 0.28);
}

.formal-exam-answering__banner.is-pending,
.formal-exam-answering__banner.is-offline {
  background: rgba(214, 158, 46, 0.32);
}

.formal-exam-answering__banner.is-conflict,
.formal-exam-answering__banner.is-expired {
  background: rgba(197, 48, 48, 0.35);
}

.formal-exam-answering__expired {
  margin: 0;
  padding: 12px 24px;
  text-align: center;
  background: #7b2d2d;
  font-size: 22px;
}

.formal-exam-answering__body {
  flex: 1 1 0;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  padding: 24px 32px 32px;
}

.formal-exam-answering__mark {
  display: flex;
  justify-content: flex-end;
  gap: 12px;
  margin-top: 24px;
}

.formal-exam-answering__footer .ant-btn-lg,
.formal-exam-answering__mark .ant-btn-lg {
  min-height: 56px;
  min-width: 120px;
  font-size: 20px;
  width: auto;
}

.formal-exam-answering__submit {
  margin-left: auto;
}

.formal-exam-submitted {
  text-align: center;
}

.formal-exam-submitted__mark {
  margin: 0;
  font-size: 72px;
  color: #9ae6b4;
  line-height: 1;
}

.formal-exam-absent {
  text-align: center;
}

.formal-exam-player__unsynced {
  margin: 0;
  padding: 16px 18px;
  border-radius: 12px;
  background: rgba(250, 173, 20, 0.18);
  color: #ffe7ba;
  font-size: 20px;
  line-height: 1.6;
  text-align: left;
}

.formal-exam-submit-overlay {
  position: fixed;
  inset: 0;
  z-index: 40;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(8, 18, 32, 0.72);
  padding: 24px;
}

.formal-exam-submit-overlay p {
  margin: 16px 0 0;
  font-size: 22px;
  text-align: center;
}

.formal-exam-submit-dialog {
  width: min(640px, 100%);
  padding: 32px 28px;
  border-radius: 16px;
  background: #163154;
  display: grid;
  gap: 12px;
}

.formal-exam-submit-dialog p {
  margin: 0;
  font-size: 22px;
}

.formal-exam-submit-dialog__lead {
  font-weight: 700;
  font-size: 24px;
}

.formal-exam-submit-dialog__actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-top: 12px;
}

.formal-exam-submit-dialog .ant-btn-lg {
  width: 100%;
}

.formal-exam-question__title {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 12px;
  font-size: 26px;
  margin-bottom: 24px;
}

.formal-exam-stem {
  font-size: inherit;
  line-height: 1.6;
}

.formal-exam-stem img {
  max-width: 100%;
  height: auto;
}

.formal-exam-options {
  display: grid;
  gap: 12px;
}

.formal-exam-option {
  display: grid;
  grid-template-columns: 36px 48px 1fr;
  align-items: start;
  gap: 8px;
  min-height: 72px;
  padding: 16px 18px;
  border: 0;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.08);
  color: inherit;
  font-size: 24px;
  text-align: left;
}

.formal-exam-option.is-selected {
  background: rgba(49, 130, 206, 0.45);
}

.formal-exam-option:disabled {
  opacity: 0.7;
}

.formal-exam-fill textarea {
  font-size: 24px !important;
  min-height: 120px;
}

.formal-exam-card {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(72px, 1fr));
  gap: 12px;
}

.formal-exam-card__item {
  position: relative;
  min-height: 64px;
  border: 0;
  border-radius: 12px;
  font-size: 22px;
  background: #2d3e55;
  color: #fff;
}

.formal-exam-card__item.is-answered {
  background: #2b6cb0;
}

.formal-exam-card__item.is-answered.is-pending {
  background: #2c5282;
  box-shadow: inset 0 0 0 2px #f6e05e;
}

.formal-exam-card__item.is-current {
  outline: 3px solid #f6e05e;
}

.formal-exam-card__flag {
  position: absolute;
  top: 4px;
  right: 6px;
  font-size: 12px;
}
.cert-dashboard {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.cert-dashboard .dashboard-filter-card .ant-card-body {
  padding-bottom: 8px;
}

.cert-dashboard-kpis {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 12px;
}

.cert-dashboard-kpi {
  min-height: 126px;
  border: 1px solid #e8edf5;
  border-radius: 12px;
  background: linear-gradient(145deg, #ffffff 0%, #f8fbff 100%);
  padding: 16px;
}

.cert-dashboard-kpi-label {
  color: #64748b;
  font-size: 13px;
}

.cert-dashboard-kpi-value {
  margin-top: 8px;
  color: #172033;
  font-size: 28px;
  font-weight: 700;
  line-height: 1.2;
}

.cert-dashboard-kpi-foot {
  margin-top: 10px;
  color: #7b8798;
  font-size: 12px;
}

.cert-dashboard-chart-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.cert-dashboard-chart {
  height: 320px;
}

.cert-dashboard-resource-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.cert-dashboard-resource {
  border: 1px solid #e6ebf2;
  border-radius: 12px;
  padding: 16px;
  background: #fff;
}

.cert-dashboard-resource-title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
  font-weight: 600;
}

.cert-dashboard-resource-total {
  color: #172033;
  font-size: 26px;
  font-weight: 700;
}

.cert-dashboard-resource-meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin-top: 12px;
  color: #64748b;
  font-size: 12px;
}

@media (max-width: 1400px) {
  .cert-dashboard-kpis {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 1000px) {
  .cert-dashboard-chart-grid,
  .cert-dashboard-resource-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 720px) {
  .cert-dashboard-kpis {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
/* 实操评分·展开行：三考评员卡片布局 */

.practical-candidate-assessors {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  padding: 4px 4px 4px 32px; /* 给行首展开箭头留出位置 */
}

.practical-candidate-assessor {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 14px 16px;
  border: 1px solid #dbe4ee;
  border-radius: 12px;
  background: #f9fbfd;
  min-height: 120px;
}

.practical-candidate-assessor--empty {
  align-items: center;
  justify-content: center;
  background: #f5f7fa;
  color: #94a3b8;
  font-size: 13px;
}

.practical-assessor-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.practical-assessor-head .assessor-name {
  font-size: 15px;
  font-weight: 600;
  color: #172033;
}

.practical-assessor-progress {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: #64748b;
}

.practical-assessor-tasks {
  display: flex;
  flex-direction: column;
  gap: 6px;
  border-top: 1px dashed #dbe4ee;
  padding-top: 8px;
}

.practical-assessor-task {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  font-size: 13px;
  color: #334155;
}

.practical-assessor-task.is-review-required {
  margin: 0 -6px;
  padding: 6px;
  border: 1px solid #ffccc7;
  border-radius: 6px;
  background: #fff2f0;
}

.practical-assessor-task .task-title {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.practical-assessor-task .task-score {
  flex: 0 0 auto;
  font-weight: 600;
  color: #1677ff;
}

.practical-assessor-total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  border-top: 1px solid #dbe4ee;
  padding-top: 8px;
  font-size: 13px;
  color: #64748b;
}

.practical-assessor-total strong {
  font-size: 20px;
  color: #1677ff;
  font-weight: 700;
}

@media (max-width: 900px) {
  .practical-candidate-assessors {
    grid-template-columns: 1fr;
    padding-left: 4px;
  }
}
.preparation-task-selector .ant-card-body {
  padding: 12px 16px;
}

.preparation-workbench-tabs .preparation-more-select {
  min-width: 96px;
}

.preparation-workbench-tabs .preparation-more-select .ant-select-selector {
  padding-inline: 0 !important;
}

.preparation-workbench-tabs .ant-tabs-tab:has(.preparation-more-select) {
  padding-block: 8px;
}

@media (max-width: 768px) {
  .preparation-task-selector .ant-select {
    width: 100% !important;
  }
}
.collection-task-page {
  min-width: 0;
}

.collection-task-heading {
  align-items: flex-start;
}

.collection-task-toolbar {
  justify-content: flex-end;
}

.collection-task-table {
  cursor: pointer;
}

.collection-task-table .ant-table-thead > tr > th {
  white-space: nowrap;
}

.collection-task-table .ant-table-cell {
  vertical-align: middle;
}

.collection-task-drawer {
  width: 100%;
}

.collection-drawer-stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.collection-drawer-stats > div {
  min-height: 64px;
  padding: 10px 12px;
  border: 1px solid #e5eaf2;
  border-radius: 8px;
  background: #f8fafc;
}

.collection-drawer-stats span {
  display: block;
  color: #64748b;
  font-size: 13px;
}

.collection-drawer-stats strong {
  display: block;
  margin-top: 4px;
  color: #0f172a;
  font-size: 22px;
  line-height: 28px;
}

.collection-section-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
}

.collection-manage-page {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.collection-manage-heading {
  align-items: flex-start;
}

.collection-manage-task-card {
  border-color: #e5eaf2;
  border-radius: 8px;
}

.collection-manage-stats {
  display: grid;
  grid-template-columns: repeat(8, minmax(112px, 1fr));
  gap: 12px;
}

.collection-manage-stats .ant-card {
  border-color: #e5eaf2;
  border-radius: 8px;
}

.collection-manage-stats .ant-card-body {
  padding: 14px;
}

.collection-manage-stats .ant-statistic-title {
  color: #64748b;
  font-size: 13px;
}

.collection-manage-stats .ant-statistic-content {
  color: #0f172a;
  font-size: 24px;
  line-height: 30px;
}

.collection-manage-grid {
  display: grid;
  grid-template-columns: minmax(0, 7fr) minmax(300px, 3fr);
  gap: 16px;
  align-items: start;
}

.collection-manage-candidate-card,
.collection-manage-side .ant-card {
  border-color: #e5eaf2;
  border-radius: 8px;
}

.collection-manage-table-toolbar {
  margin-bottom: 12px;
}

.collection-manage-candidate-card .ant-table-row {
  cursor: pointer;
}

.collection-manage-row-actions {
  white-space: nowrap;
}

.collection-manage-row-actions .ant-btn-sm {
  height: 24px;
  padding-inline: 6px;
  border-radius: 4px;
  font-size: 12px;
  line-height: 22px;
}

.collection-manage-row-actions .ant-btn-sm .ant-btn-icon {
  margin-inline-end: 3px;
}

.collection-manage-side {
  width: 100%;
}

.collection-manage-inline-alert {
  margin-bottom: 12px;
}

.collection-tablet-url {
  padding: 8px 10px;
  border: 1px solid #e5eaf2;
  border-radius: 8px;
  background: #f8fafc;
  word-break: break-all;
}

.collection-exception-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 12px;
}

.collection-exception-summary .ant-statistic {
  padding: 8px;
  border: 1px solid #e5eaf2;
  border-radius: 8px;
  background: #f8fafc;
}

.collection-exception-summary .ant-statistic-title {
  font-size: 12px;
}

.collection-exception-summary .ant-statistic-content {
  font-size: 20px;
}

.collection-detail-drawer {
  width: 100%;
}

.collection-candidate-drawer .current-candidate-panel {
  min-height: calc(100vh - 142px);
}

.collection-manage-modules {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 12px;
}

.collection-manage-module {
  border-color: #e5eaf2;
  border-radius: 8px;
}

.collection-manage-module .ant-typography {
  margin-bottom: 0;
}

.collection-manage-module-icon {
  display: grid;
  width: 36px;
  height: 36px;
  flex: 0 0 auto;
  place-items: center;
  border-radius: 8px;
  background: #eff6ff;
  color: #1d4ed8;
  font-size: 18px;
}

@media (max-width: 1100px) {
  .collection-task-toolbar {
    justify-content: flex-start;
  }

  .collection-manage-stats {
    grid-template-columns: repeat(4, minmax(112px, 1fr));
  }

  .collection-manage-grid {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 720px) {
  .collection-manage-stats,
  .collection-exception-summary {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
/* Design tokens derived from prototype HTML — applied globally */
:root {
  /* Semantic palette (light) */
  --color-bg: #f8fafc;
  --color-panel: #ffffff;
  --color-card: #f1f5f9;
  --color-text: #1e293b;
  --color-muted: #64748b;
  --color-line: #e2e8f0;
  --color-brand: #3b82f6;
  --color-brand-light: #eff6ff;
  --color-ok: #10b981;
  --color-warn: #f59e0b;
  --color-bad: #ef4444;
  --color-chip: #e2e8f0;

  /* Shadow */
  --shadow-card: 0 1px 2px 0 rgba(0,0,0,0.03), 0 1px 6px -1px rgba(0,0,0,0.02), 0 2px 4px 0 rgba(0,0,0,0.02);
  --shadow-elevated: 0 6px 16px 0 rgba(0,0,0,0.08), 0 3px 6px -4px rgba(0,0,0,0.06), 0 9px 28px 8px rgba(0,0,0,0.05);
  --shadow-modal: 0 20px 60px rgba(0,0,0,0.15);

  /* Radius */
  --radius-sm: 6px;
  --radius-md: 8px;
  --radius-lg: 10px;
  --radius-xl: 14px;
  --radius-pill: 999px;

  /* Typography */
  --font-sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
  --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
* {
  box-sizing: border-box;
}

body {
  margin: 0;
  min-width: 1180px;
  background: #f8fafc;
  color: #1e293b;
}

/* 外壳锁死视口高度：页面不与菜单比高度，滚动分别落在侧栏/内容区内部 */
.app-shell {
  height: 100vh;
  overflow: hidden;
}

/* ---- Sider / Sidebar ---- */
.app-sider {
  background: #ffffff !important;
  border-right: 1px solid #e2e8f0;
}

/* 菜单再长也不撑高页面：侧栏内部滚动（品牌区吸顶） */
.app-sider .ant-layout-sider-children {
  height: 100vh;
  overflow-y: auto;
  overflow-x: hidden;
}

.brand-block {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  gap: 10px;
  height: 68px;
  padding: 0 18px;
  background: #ffffff;
  border-bottom: 1px solid #f1f5f9;
}

.brand-texts {
  flex: 1;
  min-width: 0;
}

/* 折叠态：品牌区改纵向居中（字标在上、折叠按钮在下），文字整列隐藏不渲染 */
.brand-block-collapsed {
  flex-direction: column;
  justify-content: center;
  gap: 8px;
  height: auto;
  padding: 12px 0;
}

/* 侧栏折叠切换按钮：默认浅灰图标；hover 反色为深色圆角块 + 白图标（参考图 2 悬停效果） */
.sider-toggle-btn {
  display: grid;
  width: 28px;
  height: 28px;
  padding: 0;
  place-items: center;
  border: 0;
  border-radius: 6px;
  background: transparent;
  color: #94a3b8;
  cursor: pointer;
  transition: background-color 0.16s ease, color 0.16s ease;
}

.sider-toggle-btn:hover {
  background: #1e293b;
  color: #ffffff;
}

.sider-toggle-btn:focus-visible {
  outline: 2px solid #3b82f6;
  outline-offset: 1px;
}

.brand-mark,
.login-mark {
  display: grid;
  width: 34px;
  height: 34px;
  place-items: center;
  border-radius: 8px;
  background: radial-gradient(60% 60% at 30% 30%, #93c5fd 0%, #3b82f6 50%, #1d4ed8 100%);
  box-shadow: 0 8px 16px rgba(59, 130, 246, 0.25);
  color: #fff;
  font-weight: 700;
}

.brand-name {
  display: block;
  color: #1e293b;
  font-size: 14px;
  font-weight: 700;
  line-height: 18px;
}

.brand-sub {
  display: block;
  color: #64748b;
  font-size: 11px;
  line-height: 16px;
}

/* ---- Menu ---- */
.app-menu {
  padding: 10px 8px;
  background: transparent;
  border: 0 !important;
}

/* 目录行整行可点击展开/收起，不必瞄准右侧箭头 */
.app-sider .app-menu.ant-menu .ant-menu-submenu-title {
  cursor: pointer;
  height: 38px;
  margin: 3px 0;
  border-radius: 8px;
  color: #64748b !important;
}

.app-sider .app-menu.ant-menu .ant-menu-submenu-title:hover {
  background: rgba(59, 130, 246, 0.08) !important;
  color: #1e293b !important;
}

.app-sider .app-menu.ant-menu .ant-menu-item {
  height: 38px;
  margin: 3px 0;
  color: #64748b !important;
  border-radius: 8px;
  transition: background-color 0.16s ease, color 0.16s ease;
}

.app-sider .app-menu.ant-menu .ant-menu-item .ant-menu-title-content,
.app-sider .app-menu.ant-menu .ant-menu-item .anticon {
  color: inherit !important;
}

/* Truncate long menu labels with ellipsis so the hover tooltip has something to reveal. */
.app-sider .app-menu.ant-menu .app-menu-label {
  display: inline-block;
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: bottom;
}

.app-sider .app-menu.ant-menu .ant-menu-item:not(.ant-menu-item-selected):hover,
.app-sider .app-menu.ant-menu .ant-menu-item:not(.ant-menu-item-selected).ant-menu-item-active {
  background: rgba(59, 130, 246, 0.08) !important;
  color: #1e293b !important;
}

.app-sider .app-menu.ant-menu .ant-menu-item-selected {
  background: rgba(59, 130, 246, 0.12) !important;
  color: #1e293b !important;
}

.app-sider .app-menu.ant-menu .ant-menu-item-selected:hover {
  background: rgba(59, 130, 246, 0.18) !important;
}

/* ---- Header ---- */
/* 右侧主列：视口高度，header 固定、内容区独立滚动 */
.app-main {
  height: 100vh;
  overflow: hidden;
}

.app-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex: 0 0 58px;
  height: 58px;
  padding: 0 24px;
  background: rgba(255, 255, 255, 0.94);
  border-bottom: 1px solid #e2e8f0;
  backdrop-filter: blur(10px);
}

/* 灰度 off 旧分支：头部仅保留用户下拉，右对齐（v1.4 Q2-A 默认口径） */
.app-header-plain {
  justify-content: flex-end;
}

/* ---- Chrome 同款单行头部（v1.4，Q1A~Q4A）---- */
.app-header-tabs {
  flex: 0 0 44px;
  height: 44px;
  padding: 0 8px 0 0;
  align-items: stretch;
  background: #dee1e6; /* Chrome 标签栏灰 */
  border-bottom: none;
  backdrop-filter: none;
}

.app-tabbar-strip {
  flex: 1 1 auto;
  min-width: 0;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  padding: 6px 4px 0 8px;
}

.app-header-user {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  padding: 0 12px 0 8px;
  border-left: 1px solid rgba(0, 0, 0, 0.08);
}

/* 标签条内 Tabs：去卡片化，仿 Chrome 圆角标签 */
.app-tabbar-strip .ant-tabs {
  width: 100%;
}

.app-tabbar-strip .ant-tabs .ant-tabs-nav {
  margin: 0;
  background: transparent;
}

.app-tabbar-strip .ant-tabs .ant-tabs-nav::before {
  border-bottom: none;
}

.app-tabbar-strip .ant-tabs .ant-tabs-tab {
  border: none !important;
  border-radius: 8px 8px 0 0 !important;
  margin: 0 2px !important;
  padding: 6px 12px !important;
  background: transparent; /* 未激活：与栏同色（Q3-A） */
  color: #4b5563;
  transition: background 0.15s ease;
}

/* 未激活 hover 提亮（Q3-A） */
.app-tabbar-strip .ant-tabs .ant-tabs-tab:not(.ant-tabs-tab-active):hover {
  background: rgba(255, 255, 255, 0.6);
}

/* 激活标签：白色卡片浮起，与底部分隔断开（Q3-A） */
.app-tabbar-strip .ant-tabs .ant-tabs-tab-active {
  background: #f8f9fa;
  box-shadow: 0 -1px 3px rgba(0, 0, 0, 0.08);
  color: #1e293b;
}

.app-tabbar-strip .ant-tabs .ant-tabs-tab-active .ant-tabs-tab-btn {
  color: #1e293b;
}

/* 关闭按钮：未激活 hover 才显示，激活常显（Q4-A） */
.app-tabbar-strip .ant-tabs .ant-tabs-tab-remove {
  opacity: 0;
  width: 16px;
  margin-left: 6px;
  color: #64748b;
  transition: opacity 0.12s ease, color 0.12s ease;
}

.app-tabbar-strip .ant-tabs .ant-tabs-tab:hover .ant-tabs-tab-remove,
.app-tabbar-strip .ant-tabs .ant-tabs-tab-active .ant-tabs-tab-remove {
  opacity: 1;
}

.app-tabbar-strip .ant-tabs .ant-tabs-tab-remove:hover {
  color: #ef4444;
}

/* 溢出滚动箭头：低调 */
.app-tabbar-strip .ant-tabs .ant-tabs-nav-more,
.app-tabbar-strip .ant-tabs .ant-tabs-tab .anticon {
  color: #64748b;
}

/* ---- 拖拽视觉反馈（transform 套在 .ant-tabs-tab 卡片外壳上，见 DraggableTabLabel）---- */
/* 拖起：卡片浮起 */
.app-tabbar-strip .ant-tabs-tab.app-tab-dragging {
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.22);
  opacity: 0.92;
  z-index: 5;
  cursor: grabbing;
}

/* 拖拽全程：整个标签条 grabbing 光标 */
.app-tabbar-strip.app-tabbar-dragging,
.app-tabbar-strip.app-tabbar-dragging * {
  cursor: grabbing !important;
}

/* 标签内文本与刷新按钮（DraggableTabLabel） */
.app-tabbar-strip .app-tab-label-text {
  max-width: 160px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.app-tabbar-strip .app-tab-refresh {
  color: #94a3b8;
  font-size: 12px;
}

.app-tabbar-strip .app-tab-refresh:hover {
  color: #2563eb;
}

.user-meta {
  display: flex;
  flex-direction: column;
  color: #1e293b;
  font-size: 13px;
  line-height: 16px;
}

.user-meta small {
  color: #64748b;
  font-size: 12px;
}

/* ---- Content ---- */
.app-content {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 24px;
}

.app-breadcrumb {
  margin-bottom: 12px;
  color: #64748b;
  font-size: 13px;
}

.app-page-body {
  min-width: 0;
}

.knowledge-page {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.page-heading {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
}

.knowledge-heading {
  min-height: 118px;
  padding: 22px 24px;
  overflow: hidden;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  background:
    radial-gradient(circle at 86% 18%, rgba(59, 130, 246, 0.08), transparent 32%),
    linear-gradient(135deg, #ffffff 0%, #f8fbff 64%, #eff6ff 100%);
  box-shadow: 0 12px 30px rgba(16, 24, 40, 0.05);
}

.page-title-line {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 8px;
}

.page-title-icon {
  display: grid;
  width: 40px;
  height: 40px;
  place-items: center;
  border-radius: 10px;
  background: #3b82f6;
  color: #fff;
  box-shadow: 0 10px 18px rgba(59, 130, 246, 0.2);
}

.page-heading h1.ant-typography {
  margin: 0;
  font-size: 26px;
  line-height: 34px;
  letter-spacing: 0;
}

/* ---- Overview cards ---- */
.knowledge-overview {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 14px;
}

.overview-card.ant-pro-card {
  border-color: #e2e8f0;
  border-radius: 10px;
  box-shadow: 0 10px 24px rgba(16, 24, 40, 0.04);
}

.overview-card .ant-statistic-title {
  color: #64748b;
  font-size: 13px;
}

.overview-card .ant-statistic-content {
  color: #1e293b;
  font-size: 25px;
  font-weight: 700;
}

.overview-card .ant-statistic-content-prefix {
  margin-inline-end: 8px;
  color: #3b82f6;
  font-size: 20px;
}

/* ---- Knowledge grid ---- */
.knowledge-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 356px;
  gap: 16px;
  align-items: start;
}

.knowledge-main {
  min-width: 0;
}

.pro-work-section.ant-pro-card {
  min-height: 430px;
  border-color: #e2e8f0;
  border-radius: 10px;
  box-shadow: 0 12px 30px rgba(16, 24, 40, 0.05);
}

.pro-work-section .ant-pro-card-header {
  padding-block: 16px;
  border-bottom: 1px solid #f1f5f9;
}

.pro-work-section .ant-pro-card-title {
  color: #1e293b;
  font-size: 16px;
  font-weight: 700;
}

.pro-work-section .ant-pro-card-body {
  padding: 0 18px 18px;
}

.section-search {
  width: 340px;
}

.work-tabs {
  margin-bottom: 4px;
}

.work-tabs .ant-tabs-nav {
  margin-bottom: 14px;
}

.section-title-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  padding: 18px 0;
}

.section-title-row h3.ant-typography,
.knowledge-inspector h3.ant-typography,
.knowledge-inspector h4.ant-typography,
.result-list h4.ant-typography,
.answer-panel h4.ant-typography {
  margin: 0;
  letter-spacing: 0;
}

/* ---- Table ---- */
.ant-table-wrapper .ant-table {
  color: #1e293b;
  border-radius: 8px;
}

.ant-table-wrapper .ant-table-thead > tr > th {
  color: #475569;
  font-size: 13px;
  font-weight: 600;
}

.ant-table-wrapper .ant-table-tbody > tr > td {
  border-bottom-color: #f1f5f9;
}

.selected-row td {
  background: #eff6ff !important;
}

.name-cell {
  display: flex;
  align-items: center;
  gap: 12px;
}

.name-cell > span:last-child {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 2px;
}

.name-cell-icon {
  display: grid;
  width: 36px;
  height: 36px;
  flex: none;
  place-items: center;
  border-radius: 9px;
  background: #eff6ff;
  color: #3b82f6;
}

.name-cell-icon.file {
  background: #f0fdf4;
  color: #10b981;
}

/* ---- Inspector sidebar ---- */
/* 内容区改为独立滚动后，sticky 相对内容区顶部（不再是窗口+header 偏移） */
.knowledge-inspector {
  position: sticky;
  top: 12px;
  padding: 18px;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 12px 30px rgba(16, 24, 40, 0.05);
}

.inspector-title {
  display: flex;
  gap: 12px;
  align-items: flex-start;
  margin-bottom: 16px;
}

.inspector-title > .anticon {
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border-radius: 10px;
  background: #eff6ff;
  color: #3b82f6;
  font-size: 18px;
}

.inspector-actions {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  margin-bottom: 16px;
}

.metric-strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
  margin-bottom: 18px;
}

.metric-strip div {
  padding: 11px 10px;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  background: #f8fafc;
}

.metric-strip strong,
.metric-strip span {
  display: block;
}

.metric-strip strong {
  color: #3b82f6;
  font-size: 22px;
  line-height: 27px;
}

.metric-strip span {
  color: #64748b;
  font-size: 12px;
}

.permission-section {
  padding: 16px 0;
  border-top: 1px solid #f1f5f9;
  border-bottom: 1px solid #f1f5f9;
}

.permission-section h4.ant-typography {
  margin-bottom: 12px;
}

.index-timeline {
  margin-top: 18px;
}

/* ---- Search workspace ---- */
.search-workspace {
  min-height: 380px;
  padding-top: 18px;
}

.search-command {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 110px 150px;
  gap: 12px;
  align-items: end;
  padding: 14px;
  margin-bottom: 16px;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  background: #f8fafc;
}

.search-input-item {
  margin-bottom: 0;
}

.search-command .ant-form-item {
  margin-bottom: 0;
}

.search-result-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 380px;
  gap: 14px;
}

.result-list,
.answer-panel {
  min-height: 390px;
  padding: 16px;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  background: #fff;
}

.citation-row {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  gap: 10px;
  padding: 13px 0;
  border-bottom: 1px solid #f1f5f9;
}

.citation-row p {
  margin: 6px 0 0;
  color: #475569;
  font-size: 13px;
  line-height: 21px;
}

.citation-score {
  display: grid;
  width: 34px;
  height: 30px;
  place-items: center;
  border-radius: 8px;
  background: #eff6ff;
  color: #3b82f6;
  font-weight: 700;
}

.answer-title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  color: #3b82f6;
}

.answer-panel .ant-alert {
  margin-bottom: 12px;
}

.answer-panel .ant-typography {
  color: #334155;
  font-size: 14px;
  line-height: 24px;
  white-space: pre-wrap;
}

.upload-zone {
  margin-bottom: 16px;
}

/* ---- Login ---- */
.login-screen,
.boot-screen {
  display: grid;
  min-height: 100vh;
  place-items: center;
  background: #f8fafc;
}

.boot-screen {
  color: #64748b;
}

.login-panel {
  width: 410px;
  padding: 26px;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
  background: #fff;
  box-shadow: 0 12px 30px rgba(16, 24, 40, 0.05);
}

.login-panel-phone {
  width: min(410px, calc(100vw - 32px));
}

.login-title-row {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 22px;
}

.login-title-row h2.ant-typography {
  margin: 0 0 2px;
  font-size: 22px;
}

/* ---- Responsive ---- */
@media (max-width: 1180px) {
  body {
    min-width: 0;
  }

  .knowledge-overview {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .knowledge-grid,
  .search-result-grid {
    grid-template-columns: 1fr;
  }

  .knowledge-inspector {
    position: static;
  }
}

@media (max-width: 900px) {
  .app-sider {
    display: none;
  }

  .app-header {
    padding: 0 12px;
  }

  .app-content {
    padding: 14px;
  }

  .page-heading,
  .section-title-row {
    flex-direction: column;
  }

  .knowledge-overview,
  .search-command {
    grid-template-columns: 1fr;
  }

  .section-search {
    width: 100%;
  }
}
