/* ============================================================
   校园运动会管理系统 · 视觉令牌层「校园清爽·蓝白」
   管理端 / 学生报名 / 班主任报名 / 成绩大屏 / 秩序册打印共用
   配色取自操场：墨蓝（主席台背板）· 校徽蓝 · 浅天 · 纸白 · 跑道红 · 白线
   ============================================================ */

:root {
  /* 颜色：6 个主色 + 中性阶 */
  --sm-ink: #10305c;          /* 墨蓝：页头带、标题字 */
  --sm-ink-deep: #0a2246;     /* 墨蓝加深：大屏底色、渐变终点 */
  --sm-blue: #1f5fa9;         /* 校徽蓝：主操作色 */
  --sm-blue-ink: #17497f;     /* 校徽蓝按下态 */
  --sm-tint: #e8f0f9;         /* 浅天：选中底、表头底 */
  --sm-tint-soft: #f4f8fc;    /* 浅天更淡：分区底、斑马纹 */
  --sm-page: #eef2f7;         /* 页面底色 */
  --sm-paper: #fff;           /* 纸白：卡片 */
  --sm-clay: #c0432f;         /* 跑道红：破纪录、危险、警示 */
  --sm-gold: #d99a2b;         /* 领奖台金：第一名、提醒 */
  --sm-green: #2f8f5b;        /* 达标绿：成功、已完成 */
  --sm-rule: #d9e3ee;         /* 细描边 */
  --sm-text: #1f2a37;
  --sm-muted: #64748b;

  /* 字体：会名与秩序册用宋体（印刷文件感），正文用系统黑体，数字用号码布体 */
  --sm-font-display: "Source Han Serif SC", "Noto Serif SC", "STZhongsong", "SimSun", "Songti SC", serif;
  --sm-font-body: -apple-system, "PingFang SC", "Microsoft YaHei", system-ui, sans-serif;
  --sm-font-num: "Bahnschrift", "DIN Alternate", "Roboto Condensed", "Arial Narrow", Arial, sans-serif;

  /* 尺度 */
  --sm-gap: 14px;
  --sm-radius: 8px;
  --sm-shadow: 0 1px 2px rgba(16, 48, 92, .06), 0 2px 10px rgba(16, 48, 92, .05);

  /* Element Plus 主色跟随令牌 */
  --el-color-primary: var(--sm-blue);
  --el-color-primary-dark-2: var(--sm-blue-ink);
  --el-color-primary-light-3: #5f8ec1;
  --el-color-primary-light-5: #8caed6;
  --el-color-primary-light-7: #b9cfe8;
  --el-color-primary-light-8: #cfe0f0;
  --el-color-primary-light-9: #e8f0f9;
  --el-color-danger: var(--sm-clay);
  --el-color-danger-dark-2: #a63a28;
  --el-color-danger-light-9: #fbeceb;
  --el-color-success: var(--sm-green);
  --el-color-warning: var(--sm-gold);
  --el-text-color-primary: var(--sm-text);
  --el-text-color-regular: #3b4a5c;
  --el-border-color: #c3d3e3;
  --el-border-color-light: var(--sm-rule);
  --el-border-color-lighter: var(--sm-rule);
  --el-fill-color-light: var(--sm-tint-soft);
  --el-font-family: var(--sm-font-body);
  --el-border-radius-base: 6px;
}

/* ---------- 地基 ---------- */
html, body {
  margin: 0;
  padding: 0;
  height: 100%;
  overflow: hidden;
  background: var(--sm-page);
  color: var(--sm-text);
  font-family: var(--sm-font-body);
  -webkit-font-smoothing: antialiased;
}
a { color: var(--sm-blue); text-decoration: none; }
a:hover { text-decoration: underline; }
[v-cloak] { display: none !important; }

#app {
  height: 100vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.page { max-width: 1400px; margin: 0 auto; padding: 16px; }

:focus-visible {
  outline: 2px solid var(--sm-blue);
  outline-offset: 2px;
}

/* 数字一律用等宽号码布体：名次、成绩、积分、时间 */
.sm-num,
.sm-num td,
.el-table td.sm-num {
  font-family: var(--sm-font-num);
  font-variant-numeric: tabular-nums;
  letter-spacing: .01em;
}
.sm-muted { color: var(--sm-muted); }
.sm-hint {
  font-size: 12px;
  line-height: 1.7;
  color: var(--sm-muted);
}

/* ---------- 页头带（签名元素：主席台 + 跑道白线）---------- */
.sm-topbar {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
  padding: 14px 22px 15px;
  background: linear-gradient(180deg, var(--sm-ink), var(--sm-ink-deep));
  color: #fff;
}
.sm-topbar::after {
  /* 跑道白线：主席台下沿的一道道分道线 */
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 3px;
  background:
    repeating-linear-gradient(90deg, rgba(255, 255, 255, .75) 0 16px, transparent 16px 30px),
    var(--sm-clay);
  opacity: .55;
}
.sm-brand {
  display: flex;
  align-items: baseline;
  gap: 10px;
  min-width: 0;
}
.sm-brand__title {
  font-family: var(--sm-font-display);
  font-size: 20px;
  font-weight: 700;
  letter-spacing: .06em;
  margin: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex: 1 1 auto;
  min-width: 0;
}
.sm-brand__meta {
  font-size: 12px;
  color: rgba(255, 255, 255, .68);
  font-family: var(--sm-font-num);
  letter-spacing: .04em;
  /* 校名+日期+场地再长也只是被截断，不能把右边的版本号挤出去 */
  flex: 0 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.sm-topbar__ops {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

/* ---------- 卡片分区 ---------- */
.sm-card {
  background: var(--sm-paper);
  border: 1px solid var(--sm-rule);
  border-radius: var(--sm-radius);
  box-shadow: var(--sm-shadow);
  margin-bottom: var(--sm-gap);
  overflow: hidden;
}
.sm-card__head {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 11px 14px;
  border-bottom: 1px solid var(--sm-rule);
  background: linear-gradient(180deg, #fbfdff, #f4f8fc);
}
.sm-card__title {
  position: relative;
  display: flex;
  align-items: center;
  gap: 9px;
  margin: 0;
  font-size: 15px;
  font-weight: 700;
  color: var(--sm-ink);
  letter-spacing: .01em;
}
.sm-card__title::before {
  /* 分道牌：三道白线夹在墨蓝底上，兼作分区标记 */
  content: "";
  width: 10px;
  height: 16px;
  border-radius: 2px;
  background: var(--sm-ink);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .25);
  background-image: repeating-linear-gradient(180deg, rgba(255, 255, 255, .85) 0 2px, transparent 2px 5px);
}
.sm-card__hint {
  font-size: 12px;
  color: var(--sm-muted);
  line-height: 1.5;
  flex: 1 1 240px;
  min-width: 0;
}
.sm-card__tools {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-left: auto;
}
.sm-card__fold {
  border: 1px solid var(--sm-rule);
  background: #fff;
  color: var(--sm-blue);
  border-radius: 999px;
  font-size: 12px;
  padding: 3px 12px;
  min-height: 26px;
  cursor: pointer;
}
.sm-card__fold:hover { background: var(--sm-tint); }
.sm-card__body { padding: 14px; }
.sm-card__body > :last-child { margin-bottom: 0; }

/* 工具行（卡片内二次操作） */
.toolbar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  align-items: center;
  margin-bottom: 12px;
}
.toolbar:last-child { margin-bottom: 0; }

/* 宽屏两列分区，窄屏自动回落单列 */
.sm-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(360px, 1fr));
  gap: var(--sm-gap);
}
.sm-grid > .sm-card { margin-bottom: 0; }

/* 统计条 */
.stat {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  margin-right: 18px;
  font-size: 13px;
  color: var(--sm-muted);
}
.stat b {
  font-family: var(--sm-font-num);
  font-size: 18px;
  font-weight: 700;
  color: var(--sm-ink);
}

/* 提示块 */
.sm-note {
  border-left: 3px solid var(--sm-blue);
  background: var(--sm-tint-soft);
  border-radius: 0 6px 6px 0;
  padding: 8px 12px;
  font-size: 13px;
  color: #33465c;
  line-height: 1.7;
}
.sm-warn {
  border-left: 3px solid var(--sm-clay);
  background: var(--el-color-danger-light-9);
  border-radius: 0 6px 6px 0;
  padding: 8px 12px;
  font-size: 13px;
  color: #8a2f21;
  line-height: 1.7;
}

/* 分页条 */
.sm-pager {
  display: flex;
  justify-content: flex-end;
  padding-top: 10px;
}

/* 表单类卡片的底部动作条 */
.sm-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin: 2px 0 var(--sm-gap);
}

/* 登录页 */
.sm-login {
  max-width: 430px;
  margin: 9vh auto 0;
  padding: 0 12px;
}
.sm-login__title {
  margin: 0 0 2px;
  font-family: var(--sm-font-display);
  font-size: 25px;
  font-weight: 700;
  color: var(--sm-ink);
  letter-spacing: .05em;
  text-align: center;
}
.sm-login__sub {
  margin: 0 0 16px;
  text-align: center;
  font-size: 12px;
  color: var(--sm-muted);
  font-family: var(--sm-font-num);
  letter-spacing: .08em;
}
/* 登录页的校名：家长/老师第一眼确认「是不是我们学校这个系统」 */
.sm-login__school {
  margin: 0 0 4px;
  text-align: center;
  font-size: 14px;
  font-weight: 600;
  color: var(--sm-ink);
  letter-spacing: .04em;
}
/* 版权 + 版本条：贴在卡片底部，升级后肉眼就能核对 */
.sm-login__foot {
  display: flex;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  gap: 6px;
  margin: 0;
  padding: 9px 14px;
  border-top: 1px solid var(--sm-rule);
  background: var(--sm-tint);
  font-size: 12px;
  color: var(--sm-muted);
  font-family: var(--sm-font-num);
}
.sm-login__sep { opacity: .45; }
.sm-login__ver { letter-spacing: .03em; cursor: help; }

/* 顶栏里的版本号：登录之后也能随时确认跑的是哪一版 */
.sm-brand__ver {
  flex: none;
  font-size: 11.5px;
  color: rgba(255, 255, 255, .52);
  font-family: var(--sm-font-num);
  letter-spacing: .04em;
  cursor: help;
  white-space: nowrap;
}

/* 道次表（编排结果） */
.grid-table { border-collapse: collapse; width: 100%; }
.grid-table td.lane {
  text-align: center;
  min-width: 52px;
  padding: 4px;
  border: 1px solid var(--sm-rule);
  font-size: 13px;
}
.grid-table tr.lane-head td.lane {
  background: var(--sm-tint);
  color: var(--sm-ink);
  font-family: var(--sm-font-num);
  font-weight: 700;
}

/* ---------- 现代化工作台与分栏布局 (App Shell & Master-Detail) ---------- */
.sm-app-shell {
  height: 100vh;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.sm-topbar {
  flex-shrink: 0;
  z-index: 20;
}
.sm-nav-bar {
  flex-shrink: 0;
  background: #fff;
  border-bottom: 1px solid var(--sm-rule);
  padding: 0 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  z-index: 15;
}
.sm-nav-bar .el-tabs {
  margin-bottom: -1px;
}
.sm-nav-bar .el-tabs__header {
  margin-bottom: 0;
  border-bottom: 0;
}
.sm-nav-bar .el-tabs__nav-wrap::after {
  display: none;
}
.sm-main-container {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  position: relative;
  background: var(--sm-page);
  display: flex;
  flex-direction: column;
}

/* 常规全屏滚动视图（如设置页） */
.sm-tab-content {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 16px;
  box-sizing: border-box;
}

/* 充满视口的单卡片视图（如基本数据按Tab切换） */
.sm-tab-fill {
  height: 100%;
  padding: 14px;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}
.sm-tab-card {
  height: 100%;
  background: var(--sm-paper);
  border: 1px solid var(--sm-rule);
  border-radius: var(--sm-radius);
  box-shadow: var(--sm-shadow);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

/* 左右主从分栏 (Master-Detail Split View) */
.sm-split-view {
  height: 100%;
  display: flex;
  gap: 14px;
  padding: 14px;
  box-sizing: border-box;
  overflow: hidden;
}
.sm-split-side {
  width: 290px;
  flex-shrink: 0;
  background: var(--sm-paper);
  border-radius: var(--sm-radius);
  border: 1px solid var(--sm-rule);
  box-shadow: var(--sm-shadow);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  height: 100%;
}
.sm-split-side__head {
  padding: 10px 12px;
  border-bottom: 1px solid var(--sm-rule);
  background: var(--sm-tint-soft);
  flex-shrink: 0;
}
.sm-split-side__list {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 6px;
}
.sm-split-side__foot {
  padding: 8px 12px;
  border-top: 1px solid var(--sm-rule);
  background: var(--sm-tint-soft);
  flex-shrink: 0;
  font-size: 12px;
  color: var(--sm-muted);
}
.sm-split-main {
  flex: 1;
  min-width: 0;
  background: var(--sm-paper);
  border-radius: var(--sm-radius);
  border: 1px solid var(--sm-rule);
  box-shadow: var(--sm-shadow);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  height: 100%;
}
.sm-split-main__head {
  padding: 10px 16px;
  border-bottom: 1px solid var(--sm-rule);
  background: #fff;
  flex-shrink: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}
.sm-split-main__body {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 14px;
  box-sizing: border-box;
}
.sm-split-main__foot {
  padding: 8px 16px;
  border-top: 1px solid var(--sm-rule);
  background: #fafcff;
  flex-shrink: 0;
  display: flex;
  justify-content: flex-end;
  align-items: center;
}

/* 侧边列表项交互 (Master List Item) */
.sm-side-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 8px 10px;
  border-radius: 6px;
  cursor: pointer;
  margin-bottom: 3px;
  border: 1px solid transparent;
  transition: all .15s ease;
  user-select: none;
}
.sm-side-item:hover {
  background: var(--sm-tint-soft);
}
.sm-side-item.is-active {
  background: var(--sm-tint);
  border-color: var(--el-color-primary-light-7);
  color: var(--sm-ink);
  font-weight: 600;
}
.sm-side-item__title {
  font-size: 13.5px;
  line-height: 1.4;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.sm-side-item__desc {
  font-size: 11.5px;
  color: var(--sm-muted);
  margin-top: 2px;
}
.sm-side-item.is-active .sm-side-item__desc {
  color: var(--sm-blue);
}

/* 顶部统计条 */
.sm-stat-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 12px;
}
.sm-stat-chip {
  background: #fff;
  border: 1px solid var(--sm-rule);
  border-radius: 6px;
  padding: 6px 12px;
  font-size: 12.5px;
  color: #334155;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  box-shadow: 0 1px 2px rgba(16,48,92,.03);
}
.sm-stat-chip b {
  color: var(--sm-blue);
  font-family: var(--sm-font-num);
  font-size: 14px;
}

/* ---------- Element Plus 细节校准 ---------- */
.el-tabs__item { font-size: 14px; }
.el-tabs__item.is-active { font-weight: 700; color: var(--sm-ink); }
.el-tabs__active-bar { background-color: var(--sm-clay); height: 3px; }
.el-tabs__nav-wrap::after { background-color: var(--sm-rule); height: 1px; }
.el-tabs__header { margin-bottom: 14px; }

.el-table th.el-table__cell {
  background: var(--sm-tint-soft);
  color: var(--sm-ink);
  font-weight: 700;
  font-size: 13px;
}
.el-table { font-size: 13px; }
.el-table .record-row td.el-table__cell { background: var(--el-color-danger-light-9) !important; }
.el-button { font-weight: 500; }
.el-tag { font-family: var(--sm-font-body); }
.el-dialog__header { border-bottom: 1px solid var(--sm-rule); margin-right: 0; padding-bottom: 12px; }
.el-dialog__title { font-weight: 700; color: var(--sm-ink); font-size: 16px; }
.el-dialog__footer { border-top: 1px solid var(--sm-rule); padding-top: 12px; }
.el-form-item { margin-bottom: 14px; }
.el-input__wrapper, .el-textarea__inner { box-shadow: 0 0 0 1px var(--sm-rule) inset; }

/* 卡片内表格去掉多余外框线，收进卡片后更整 */
.sm-card .el-table { --el-table-border-color: var(--sm-rule); }

@media (max-width: 720px) {
  .sm-topbar { padding: 12px 14px 13px; }
  .sm-brand__title { font-size: 17px; }
  .sm-card__body { padding: 12px; }
  .sm-grid { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }
}

/* ================= 编排·秩序册与分道看板专属美化 ================= */

/* 左侧赛程时间轴列表项 */
.sm-timeline-item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 10px 12px;
  border-radius: 8px;
  cursor: pointer;
  margin-bottom: 6px;
  border: 1px solid var(--sm-rule);
  background: #fff;
  transition: all .18s cubic-bezier(.4, 0, .2, 1);
  box-shadow: 0 1px 2px rgba(16,48,92,.03);
}
.sm-timeline-item::before {
  content: "";
  position: absolute;
  left: 0;
  top: 6px;
  bottom: 6px;
  width: 4px;
  border-radius: 0 4px 4px 0;
  background: var(--sm-rule);
  transition: background .18s ease;
}
.sm-timeline-item.kind-track::before {
  background: var(--sm-blue);
}
.sm-timeline-item.kind-field::before {
  background: #f59e0b;
}
.sm-timeline-item:hover {
  background: #f8fafc;
  border-color: #cbd5e1;
  transform: translateY(-1px);
  box-shadow: 0 3px 6px rgba(16,48,92,.06);
}
.sm-timeline-item.is-active {
  background: #eff6ff;
  border-color: #93c5fd;
  box-shadow: 0 2px 8px rgba(37,99,235,.12);
}
.sm-timeline-item.is-active::before {
  width: 5px;
  background: var(--sm-blue);
}
.sm-timeline-item.is-active.kind-field::before {
  background: #d97706;
}

.sm-time-badge {
  font-family: var(--sm-font-num);
  font-weight: 700;
  font-size: 13px;
  color: #1e3a8a;
  background: #dbeafe;
  padding: 2px 7px;
  border-radius: 5px;
  display: inline-block;
  letter-spacing: .02em;
}
.sm-timeline-item.is-active .sm-time-badge {
  background: var(--sm-blue);
  color: #fff;
}
.sm-timeline-title {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--sm-ink);
  margin-top: 3px;
}
.sm-timeline-meta {
  font-size: 11.5px;
  color: var(--sm-muted);
  margin-top: 3px;
  display: flex;
  align-items: center;
  gap: 6px;
}

/* 右侧：项目 Hero 头部信息区 */
.sm-event-hero {
  background: linear-gradient(135deg, #f8fafc 0%, #edf2f7 100%);
  border: 1px solid var(--sm-rule);
  border-radius: 10px;
  padding: 14px 18px;
  margin-bottom: 16px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 16px;
  flex-wrap: wrap;
}
.sm-event-hero__title {
  font-size: 19px;
  font-weight: 800;
  color: var(--sm-ink);
  letter-spacing: .02em;
  display: flex;
  align-items: center;
  gap: 10px;
}
.sm-event-hero__tags {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 6px;
}
.sm-hero-tag {
  font-size: 12px;
  color: #475569;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 6px;
  padding: 3px 8px;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.sm-hero-tag b {
  color: var(--sm-ink);
  font-family: var(--sm-font-num);
}

/* 分组分道卡片 (Heat Board Card) */
.sm-heat-board {
  background: #fff;
  border: 1px solid var(--sm-rule);
  border-radius: 10px;
  box-shadow: 0 2px 6px rgba(16,48,92,.04);
  margin-bottom: 20px;
  overflow: hidden;
  transition: border-color .15s ease;
}
.sm-heat-board:hover {
  border-color: #cbd5e1;
}
.sm-heat-head {
  padding: 10px 16px;
  background: #f8fafc;
  border-bottom: 1px solid var(--sm-rule);
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
}
.sm-heat-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 14px;
  font-weight: 700;
  color: #0f172a;
}
.sm-heat-badge .badge-pill {
  background: var(--sm-ink);
  color: #fff;
  padding: 2px 9px;
  border-radius: 999px;
  font-size: 12px;
  font-family: var(--sm-font-num);
}
.sm-heat-meta {
  font-size: 12.5px;
  color: var(--sm-muted);
  display: flex;
  align-items: center;
  gap: 8px;
}

/* 径赛跑道专用网格 (Athletic Track Grid) */
.sm-track-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 8px;
  padding: 14px;
  background: #fafcff;
}
.sm-track-lane {
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 8px;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: all .15s ease;
  min-height: 96px;
  box-shadow: 0 1px 3px rgba(16,48,92,.02);
}
.sm-track-lane:not(.is-empty):hover {
  border-color: var(--sm-blue);
  box-shadow: 0 4px 10px rgba(37,99,235,.12);
  transform: translateY(-2px);
}
.sm-track-lane__num {
  background: #f1f5f9;
  color: #475569;
  font-family: var(--sm-font-num);
  font-weight: 700;
  font-size: 12px;
  text-align: center;
  padding: 5px 4px;
  border-bottom: 1px solid #e2e8f0;
  letter-spacing: .04em;
}
.sm-track-lane:not(.is-empty) .sm-track-lane__num {
  background: #eff6ff;
  color: var(--sm-blue);
  border-bottom-color: #bfdbfe;
}
.sm-track-lane__body {
  padding: 10px 8px;
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 4px;
}
.sm-track-lane__name {
  font-size: 15px;
  font-weight: 700;
  color: #0f172a;
  letter-spacing: .02em;
}
.sm-track-lane__team {
  font-size: 11.5px;
  color: #64748b;
  background: #f1f5f9;
  padding: 2px 7px;
  border-radius: 4px;
  white-space: nowrap;
  max-width: 95%;
  overflow: hidden;
  text-overflow: ellipsis;
}
/* 空道样式 */
.sm-track-lane.is-empty {
  border-style: dashed;
  border-color: #cbd5e1;
  background: #f8fafc;
  opacity: .75;
}
.sm-track-lane.is-empty .sm-track-lane__name {
  font-size: 12px;
  font-weight: 500;
  color: #94a3b8;
}

/* 田赛出场次序看板 (Field Events Board) */
.sm-seq-badge {
  display: inline-block;
  width: 24px;
  height: 24px;
  line-height: 24px;
  border-radius: 50%;
  background: #fef3c7;
  color: #92400e;
  font-weight: 700;
  font-family: var(--sm-font-num);
  text-align: center;
  font-size: 12px;
}

/* 秩序册全览纸质风格预览 */
.sm-orderbook-paper {
  background: #fff;
  border: 1px solid #cbd5e1;
  border-radius: 8px;
  box-shadow: 0 4px 14px rgba(16,48,92,.08);
  padding: 24px 30px;
  max-width: 880px;
  margin: 0 auto;
}
.sm-orderbook-paper__title {
  text-align: center;
  font-size: 20px;
  font-weight: 800;
  color: var(--sm-ink);
  letter-spacing: .05em;
  margin: 0 0 6px;
}
.sm-orderbook-paper__sub {
  text-align: center;
  font-size: 12.5px;
  color: var(--sm-muted);
  margin: 0 0 20px;
}

/* Excel/CSV 文件拖拽放置区 (Drag-and-Drop Zone) */
.sm-drop-zone {
  border: 2px dashed #cbd5e1;
  border-radius: 8px;
  background: #f8fafc;
  padding: 18px 16px;
  text-align: center;
  color: #64748b;
  font-size: 13px;
  margin-bottom: 10px;
  cursor: pointer;
  transition: all .2s ease;
  user-select: none;
}
.sm-drop-zone:hover {
  border-color: var(--el-color-primary, #2563eb);
  background: #eff6ff;
  color: #1e40af;
}
.sm-drop-zone.is-active {
  border-color: var(--el-color-primary, #2563eb);
  background: #dbeafe;
  color: #1d4ed8;
  transform: scale(1.01);
}


/* ============================================================
   竞赛项目：筛选条 · 快捷添加（项目 × 组别）
   ============================================================ */
.sm-filter-bar {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  padding: 8px 10px;
  margin-bottom: 10px;
  background: var(--sm-tint-soft);
  border: 1px solid var(--sm-rule);
  border-radius: 6px;
}

/* 批量操作条 */
.sm-batch-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 7px 10px;
  margin-bottom: 10px;
  border: 1px dashed var(--sm-blue);
  border-radius: 6px;
  background: var(--sm-tint);
}
.sm-batch-bar.is-idle {
  border-color: var(--sm-rule);
  background: var(--sm-tint-soft);
}
.sm-batch-bar__count {
  font-size: 13px;
  color: var(--sm-muted);
}
.sm-batch-bar__count b {
  font-family: var(--sm-font-num);
  font-size: 15px;
  color: var(--sm-blue);
}
.sm-batch-bar__sp { flex: 1; }

/* 表格里的上移/下移按钮 */
.sm-move-btns {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 2px;
}
.sm-move-btns .el-button {
  margin-left: 0;
  padding: 4px 5px;
  font-size: 13px;
  line-height: 1;
}

/* 矩阵视图 */
.sm-matrix-wrap {
  display: inline-block;
  max-width: 100%;
  max-height: 68vh;
  overflow: auto;
  border: 1px solid var(--sm-rule);
  border-radius: var(--sm-radius);
}
.sm-matrix {
  border-collapse: separate;
  border-spacing: 0;
  table-layout: fixed;
  width: max-content;
  font-size: 13px;
}
.sm-matrix th,
.sm-matrix td {
  border-right: 1px solid var(--sm-rule);
  border-bottom: 1px solid var(--sm-rule);
  padding: 6px 10px;
  text-align: center;
  white-space: nowrap;
}
.sm-matrix thead th {
  position: sticky;
  top: 0;
  z-index: 3;
  background: var(--sm-tint);
  color: var(--sm-ink);
  font-weight: 700;
  font-size: 12.5px;
}
.sm-matrix__corner {
  position: sticky;
  left: 0;
  z-index: 4;
  background: var(--sm-tint) !important;
  text-align: left !important;
  color: var(--sm-muted) !important;
  font-weight: 500 !important;
  width: 210px;
  min-width: 210px;
}
.sm-matrix__name {
  position: sticky;
  left: 0;
  z-index: 2;
  background: var(--sm-paper);
  text-align: left !important;
  font-weight: 600;
  color: var(--sm-text);
  width: 210px;
  min-width: 210px;
}
.sm-matrix__badge {
  margin-left: 6px;
  padding: 0 5px;
  border-radius: 3px;
  font-size: 11px;
  font-style: normal;
  color: var(--sm-green);
  background: rgba(47, 143, 91, .1);
}
.sm-matrix__ratio {
  float: right;
  margin-left: 10px;
  font-family: var(--sm-font-num);
  font-size: 11.5px;
  font-style: normal;
  color: var(--sm-muted);
}
.sm-matrix__cat td {
  position: sticky;
  left: 0;
  background: var(--sm-tint-soft);
  text-align: left;
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .4px;
  color: var(--sm-ink);
  border-bottom: 1px solid var(--sm-rule);
}
.sm-matrix__cell {
  width: 84px;
  cursor: pointer;
  color: transparent;
  user-select: none;
  transition: background .12s;
}
.sm-matrix__cell:hover {
  background: var(--sm-tint);
  box-shadow: inset 0 0 0 2px var(--sm-blue);
}
.sm-matrix__cell:not(.is-on):hover::after {
  content: '＋';
  color: var(--sm-blue);
  opacity: .75;
  font-size: 13px;
}
.sm-matrix__cell.is-on {
  background: var(--sm-tint);
  color: var(--sm-blue);
  font-weight: 700;
  font-size: 14px;
}
.sm-matrix__cell.is-on:hover { background: #dbe9f8; }
.sm-matrix-box > .sm-hint { margin: 8px 0 0; }

/* 复制到其他组别 */
.sm-copy-groups {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px 12px;
  max-height: 280px;
  overflow: auto;
  padding: 4px 2px;
}
.sm-copy-groups .el-checkbox { margin-right: 0; }

.sm-quick {
  display: grid;
  grid-template-columns: 1fr 1.2fr;
  gap: 14px;
}
.sm-quick__pane {
  display: flex;
  flex-direction: column;
  min-height: 340px;
  border: 1px solid var(--sm-rule);
  border-radius: var(--sm-radius);
  overflow: hidden;
  background: var(--sm-paper);
}
.sm-quick__head {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: var(--sm-tint);
  border-bottom: 1px solid var(--sm-rule);
}
.sm-quick__title {
  font-size: 13.5px;
  font-weight: 700;
  color: var(--sm-ink);
}
.sm-quick__count {
  margin-left: auto;
  font-family: var(--sm-font-num);
  font-size: 12.5px;
  color: var(--sm-blue);
}
.sm-quick__tools {
  padding: 8px 12px 0;
}
.sm-quick__list {
  flex: 1;
  max-height: 320px;
  overflow-y: auto;
  padding: 8px 12px 12px;
}
.sm-quick__item {
  display: flex;
  align-items: center;
  width: 100%;
  height: 30px;
  margin: 0;
}
.sm-quick__tag {
  margin-left: 6px;
  transform: scale(.86);
}
/* 一键生成组别：年级三列平铺 + 生成预览 */
.sm-gen__grade {
  display: inline-flex;
  align-items: center;
  width: 33%;
  height: 30px;
  margin: 0;
}
.sm-gen__add {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-top: 8px;
}
.sm-gen__list {
  max-height: 240px;
  overflow-y: auto;
  padding: 8px 10px;
  border: 1px solid var(--sm-rule);
  border-radius: 8px;
}
.sm-gen__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 4px 0;
  font-size: 13px;
}
/* 比赛日程安排：左＝本场次顺序，右＝待安排项目 */
.sm-plan {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.sm-plan__col {
  border: 1px solid var(--sm-rule);
  border-radius: 10px;
  padding: 10px 12px 12px;
}
.sm-plan__head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 8px;
}
.sm-plan__title {
  font-size: 13px;
  font-weight: 700;
  color: var(--sm-ink);
}
.sm-plan__count {
  margin-left: auto;
  font-size: 12px;
  color: var(--sm-muted);
}
.sm-plan__list {
  max-height: 300px;
  overflow-y: auto;
}
.sm-plan__row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0;
  border-bottom: 1px solid var(--sm-rule);
}
.sm-plan__no {
  flex: none;
  width: 22px;
  height: 22px;
  line-height: 22px;
  text-align: center;
  border-radius: 50%;
  background: var(--sm-tint);
  color: var(--sm-blue-ink);
  font-size: 12px;
  font-weight: 700;
}
.sm-plan__name {
  font-size: 13px;
  color: var(--sm-text);
}
.sm-plan__act {
  margin-left: auto;
  display: flex;
  gap: 2px;
  flex: none;
}
.sm-plan__pick {
  padding: 5px 0;
}
.sm-plan__at {
  margin-left: 6px;
  font-size: 12px;
  font-style: normal;
  color: var(--sm-warn, #b26a00);
  background: var(--sm-warn-bg, #fff5e6);
  border-radius: 3px;
  padding: 1px 5px;
}
.sm-plan__more {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 8px;
  font-size: 12px;
  color: var(--sm-muted);
  cursor: pointer;
}
.sm-plan__more input { cursor: pointer; }
.sm-plan__dirty {
  margin-right: auto;
  font-size: 12px;
  color: var(--sm-warn, #b26a00);
}
.sm-plan__copy {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px dashed var(--sm-rule);
}
.sm-plan-tag {
  font-size: 12px;
  color: var(--sm-blue-ink);
}
.sm-quick__summary {
  margin-top: 14px;
  padding: 10px 12px;
  border: 1px dashed var(--sm-rule);
  border-radius: var(--sm-radius);
  background: var(--sm-paper);
  font-size: 13px;
  color: #334155;
}
.sm-quick__summary b {
  font-family: var(--sm-font-num);
  font-size: 15px;
  color: var(--sm-blue);
}
.sm-quick__preview {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  max-height: 92px;
  margin-top: 8px;
  overflow-y: auto;
}
.sm-quick__pill {
  padding: 2px 8px;
  border-radius: 4px;
  background: var(--sm-tint);
  color: var(--sm-blue-ink);
  font-size: 12px;
}

@media (max-width: 900px) {
  .sm-quick { grid-template-columns: 1fr; }
  .sm-quick__pane { min-height: 0; }
  .sm-quick__list { max-height: 220px; }
}

/* ============================================================
   接力 / 集体项目：队员名单弹窗
   ============================================================ */
.sm-member-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  margin-bottom: 12px;
  background: var(--sm-tint-soft);
  border: 1px solid var(--sm-rule);
  border-radius: 6px;
}
.sm-member-title { font-size: 15px; font-weight: 700; color: var(--sm-ink); }
.sm-member-sub { font-size: 12.5px; color: var(--sm-muted); margin-top: 2px; }
.sm-member-sec { margin-bottom: 14px; }
.sm-member-label {
  margin: 0 0 6px;
  font-size: 12.5px;
  font-weight: 600;
  color: var(--sm-muted);
}
.sm-member-pool {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  max-height: 180px;
  overflow: auto;
  padding: 8px;
  border: 1px solid var(--sm-rule);
  border-radius: 6px;
  background: var(--sm-paper);
  min-height: 46px;
}
.sm-member-chip {
  padding: 5px 10px;
  font-size: 13px;
  font-family: inherit;
  color: var(--sm-text);
  background: var(--sm-tint-soft);
  border: 1px solid var(--sm-rule);
  border-radius: 14px;
  cursor: pointer;
  transition: background .12s, border-color .12s, color .12s;
}
.sm-member-chip:hover { border-color: var(--sm-blue); color: var(--sm-blue); }
.sm-member-chip.is-on {
  background: var(--sm-blue);
  border-color: var(--sm-blue);
  color: #fff;
  font-weight: 600;
}
.sm-member-chip.is-taken {
  cursor: not-allowed;
  opacity: .5;
  background: repeating-linear-gradient(45deg, var(--sm-tint-soft), var(--sm-tint-soft) 4px, #eef2f7 4px, #eef2f7 8px);
}
.sm-member-chip em {
  margin-left: 4px;
  font-size: 11px;
  font-style: normal;
  opacity: .8;
}
.sm-member-chosen {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  min-height: 34px;
  padding: 8px;
  border: 1px dashed var(--sm-rule);
  border-radius: 6px;
}

/* ---- 项目方案模板集 ---- */
.sm-plan-bar { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.sm-plan-stat {
  display: flex;
  gap: 14px;
  align-items: center;
  flex-wrap: wrap;
  margin: 10px 0;
  padding: 8px 12px;
  background: var(--sm-tint-soft);
  border: 1px solid var(--sm-rule);
  border-radius: 6px;
  font-size: 13px;
  color: var(--sm-muted);
}
.sm-plan-stat__item b { font-family: var(--sm-font-num); font-size: 15px; color: var(--sm-ink); }
.sm-plan-stat__item.is-new b { color: var(--sm-green); }
.sm-plan-stat__item.is-bad b { color: var(--sm-clay); }
.sm-plan-stat__sp { flex: 1; }
.sm-plan-cnt { font-family: var(--sm-font-num); color: var(--sm-muted); }
.sm-plan-cnt.is-new { color: var(--sm-green); font-weight: 700; }
.sm-plan-cnt.is-bad { color: var(--sm-clay); font-weight: 700; }
.sm-plan-tags { display: flex; flex-wrap: wrap; gap: 4px; }


/* 赛事设置：字段限宽，说明文字与字段同一行（避免说明被挤到下一行、表单拉得过宽） */
.sm-set-form .el-form-item__content { flex-wrap: nowrap; align-items: center; }
.sm-set-form .el-input { max-width: 400px; }
.sm-set-form .el-form-item__label { color: var(--sm-muted); }

/* 表格操作列：文字型按钮横排且永不换行（原来按钮一多就掉到第二行，行高被撑高一倍） */
.sm-row-ops { display: flex; align-items: center; gap: 2px; white-space: nowrap; }
.sm-row-ops .el-button + .el-button { margin-left: 0; }
.sm-row-ops .el-button.is-link { padding: 4px 6px; height: auto; }

/* 用户表「负责项目」：项目名并列展示，过长截断，不撑破列宽 */
.sm-item-tags { display: flex; align-items: center; gap: 4px; overflow: hidden; }
.sm-item-tags .el-tag { max-width: 118px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block; }
.sm-item-tags .el-tag.el-tag--info { max-width: 44px; flex: none; }
.sm-item-none { cursor: pointer; }
.sm-item-none:hover { filter: brightness(.95); }

/* 分工弹窗：一个项目一行，右侧两个小勾（检录 / 录成绩），志愿者只勾检录 */
.sm-ref-row { display: flex; align-items: center; gap: 10px; padding: 4px 8px; border-radius: 8px; }
.sm-ref-row.on { background: var(--sm-tint-soft, #f4f7fb); }
.sm-ref-row__name { flex: 1; min-width: 0; }
.sm-ref-row__flags { flex: none; display: flex; align-items: center; gap: 2px; }
.sm-ref-row__flags .el-checkbox { margin-right: 10px; }
.sm-ref-row__flags .el-checkbox:last-child { margin-right: 0; }
.sm-ref-row__flags .el-checkbox__label { font-size: 12.5px; padding-left: 4px; }
.sm-ref-row__flags .el-checkbox.is-disabled .el-checkbox__label { color: #b6c0cc; }
.sm-ref-count { font-size: 12.5px; color: var(--sm-muted); }
.sm-ref-count b { color: var(--sm-blue); font-family: var(--sm-font-num); }
.sm-ref-group { display: flex; align-items: center; gap: 8px; margin: 2px 0 2px; }
/* 列表里的「检录 N / 录成绩 M」小字，一眼看出谁只点名不给分 */
.sm-ref-split { font-size: 11.5px; color: var(--sm-muted); margin-top: 3px; line-height: 1.4; }
.sm-ref-split b { color: var(--sm-blue-ink); font-family: var(--sm-font-num); }

/* 田赛三格：成绩页一行里直接看到每一跳，点开弹窗逐格改 */
.sm-at-strip { display: flex; flex-direction: column; align-items: flex-start; gap: 3px; cursor: pointer; }
.sm-at-strip__cells { display: flex; gap: 4px; }
.sm-at-box { min-width: 40px; text-align: center; font-family: var(--sm-font-num); font-size: 12.5px; font-weight: 600;
  border-radius: 5px; padding: 2px 4px; background: var(--sm-tint); color: #9aabbd; border: 1px solid var(--sm-tint-soft); }
.sm-at-box.ok { background: #eaf6ee; border-color: #cfe7d8; color: var(--sm-green); }
.sm-at-box.x { background: #fdf3f1; border-color: #eecec6; color: var(--sm-clay); }
.sm-at-box.p { background: #f2f4f7; border-color: #dde3ea; color: #8b96a3; }
.sm-at-strip .sm-at-best { font-size: 11.5px; color: var(--sm-muted); line-height: 1.3; }
.sm-at-row { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px dashed var(--sm-rule); }
.sm-at-row:last-of-type { border-bottom: 0; }
.sm-at-row__no { width: 52px; font-size: 13px; color: var(--sm-muted); font-family: var(--sm-font-num); }
.sm-at-sum { margin-top: 12px; padding-top: 10px; border-top: 1px solid var(--sm-rule); font-size: 14px; color: var(--sm-ink); }
.sm-at-sum b { font-family: var(--sm-font-num); font-size: 18px; color: var(--sm-blue-ink); }

/* 团体总分：名次按年级分别排，一行一个班 */
.sm-tot-note { font-size: 12px; color: var(--sm-muted); line-height: 1.7; margin: 0 0 10px;
  padding: 8px 12px; background: var(--sm-tint); border-radius: 8px; border-left: 3px solid var(--sm-blue); }
.sm-tot-grade-first td { border-top: 2px solid var(--sm-blue-ink) !important; }
.sm-tot-rank { display: inline-block; min-width: 22px; height: 22px; line-height: 22px; text-align: center;
  border-radius: 6px; background: #f2f4f7; color: #7b8794; font-family: var(--sm-font-num); font-weight: 700; font-size: 12px; }
.sm-tot-rank.is-top { background: var(--sm-clay); color: #fff; }
.sm-tot-part { display: flex; gap: 10px; font-size: 12px; color: var(--sm-muted); }
.sm-tot-part b { font-family: var(--sm-font-num); color: var(--sm-ink); }
.sm-tot-score { font-family: var(--sm-font-num); font-size: 16px; color: var(--sm-blue-ink); }
.sm-tot-cell { font-family: var(--sm-font-num); font-weight: 600; color: var(--sm-green); }
.sm-tot-cell.is-zero { color: #c2ccd8; font-weight: 400; }
/* 矩阵列头：♂ / ♀ 加项目简称，悬停看完整名 */
.sm-tot-col { display: inline-block; line-height: 1.25; font-size: 11.5px; }
.sm-tot-gender { font-style: normal; font-weight: 700; margin-right: 2px; }
.sm-tot-gender.is-m { color: #2f6fd0; }
.sm-tot-gender.is-f { color: #c0437a; }
/* 合计行突出显示 */
.sm-tot-matrix .el-table__footer-wrapper td { background: #fdf6e7 !important; color: #8a5a12; font-weight: 700; }
/* 明细弹窗顶部的四个汇总块 */
.sm-tot-summary { display: flex; gap: 10px; margin-bottom: 12px; }
.sm-tot-summary__item { flex: 1; padding: 10px 12px; background: var(--sm-tint); border-radius: 8px; min-width: 0; }
.sm-tot-summary__item b { display: block; font-family: var(--sm-font-num); font-size: 19px; color: var(--sm-ink);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sm-tot-summary__item span { font-size: 12px; color: var(--sm-muted); }

/* 积分规则：名次分值排成「1名 10 分」的小标签 */
.sm-rule-pts { display: inline-flex; flex-wrap: wrap; gap: 6px; }
.sm-rule-pts i {
  font-style: normal; font-size: 12px; color: var(--sm-muted);
  background: var(--sm-soft, #f1f5f9); border-radius: 3px; padding: 1px 6px;
}
.sm-rule-pts i em { font-style: normal; color: var(--sm-ink); font-weight: 700; margin-left: 4px; }

/* 编排页：兼项预警设置条 */
.sm-gap-warn {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  padding: 8px 10px; border-top: 1px solid var(--sm-line, #e2e8f0);
}
.sm-gap-warn__label { font-size: 13px; color: var(--sm-ink); font-weight: 600; }

/* 建项时的行内提醒（集体项目不分男女，建议建在混合组） */
.sm-warn-inline {
  margin: 0 0 14px 110px;
  padding: 7px 10px;
  font-size: 12px;
  line-height: 1.7;
  color: var(--sm-warn, #b26a00);
  background: var(--sm-warn-bg, #fff5e6);
  border-left: 3px solid var(--sm-warn, #e6a23c);
  border-radius: 3px;
  max-width: 460px;
}

/* ============================================================
   数据维护：结案体检 / 备份 / 重置
   三块竖排，各用一张卡片；只有「重置」那块染红，视觉上先分出轻重
   ============================================================ */
.sm-mt { display: flex; flex-direction: column; gap: 14px; padding: 4px 0 10px; }

.sm-mt-sec {
  background: var(--sm-paper);
  border: 1px solid var(--sm-rule);
  border-radius: var(--sm-radius);
  padding: 14px 16px 16px;
  box-shadow: var(--sm-shadow);
}
.sm-mt-sec.is-danger { border-color: #ecd0c9; }

/* 卡片小标题：左侧一道竖条，右侧说明文字自动吃掉剩余宽度（说明常年比标题长） */
.sm-mt-h { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.sm-mt-h b { position: relative; padding-left: 10px; font-size: 14px; color: var(--sm-ink); flex: none; }
.sm-mt-h b::before {
  content: ''; position: absolute; left: 0; top: 50%; transform: translateY(-50%);
  width: 3px; height: 14px; border-radius: 2px; background: var(--sm-blue);
}
.sm-mt-sec.is-danger .sm-mt-h b::before { background: var(--sm-clay); }
.sm-mt-h span { flex: 1; min-width: 220px; font-size: 12px; line-height: 1.65; color: var(--sm-muted); }

/* 体检五个数字：等宽铺满，异常项左条变红 */
.sm-mt-stats { display: flex; gap: 10px; flex-wrap: wrap; }
.sm-mt-stat {
  flex: 1; min-width: 92px; padding: 9px 12px;
  background: var(--sm-tint-soft); border-radius: 8px; border-left: 3px solid var(--sm-blue);
}
.sm-mt-stat b { display: block; font-family: var(--sm-font-num); font-size: 20px; line-height: 1.15; color: var(--sm-ink); }
.sm-mt-stat span { font-size: 12px; color: var(--sm-muted); }
.sm-mt-stat.is-bad { background: #fdf3f1; border-left-color: var(--sm-clay); }
.sm-mt-stat.is-bad b { color: var(--sm-clay); }

/* 待办 / 提示清单：两项都可能几十条（没人编排的集体项目一屏能刷满），
   加个上限滚起来，免得把「备份」「重置」挤到几屏之外 */
.sm-mt-list {
  margin-top: 10px; padding: 10px 12px; border-radius: 8px;
  background: var(--sm-tint-soft);
  font-size: 12.5px; line-height: 1.85; color: #3b4a5c;
  max-height: 186px; overflow-y: auto;
}
.sm-mt-list__t { font-weight: 700; color: var(--sm-ink); margin-bottom: 2px; }
.sm-mt-list > div:not(.sm-mt-list__t)::before { content: '·'; color: var(--sm-blue); font-weight: 700; margin-right: 6px; }
.sm-mt-list .sm-muted::before { content: none; margin-right: 0; }
.sm-mt-list.is-bad { background: #fdf3f1; }
.sm-mt-list.is-bad .sm-mt-list__t { color: var(--sm-clay); }
.sm-mt-list.is-bad > div:not(.sm-mt-list__t)::before { color: var(--sm-clay); }

/* 备份目录路径：长路径必须能断行，否则整页横向溢出 */
.sm-mt-dir {
  font-family: var(--sm-font-num); font-size: 12px; color: var(--sm-muted);
  background: var(--sm-tint); border-radius: 6px; padding: 6px 10px;
  margin-bottom: 10px; word-break: break-all; line-height: 1.6;
}

/* 重置危险区：说明占满左侧，按钮钉在右侧 */
.sm-mt-danger {
  display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  padding: 12px 14px; border-radius: 8px;
  background: #fdf3f1; border: 1px dashed #e7c4bb;
}
.sm-mt-danger > div { flex: 1; min-width: 240px; }

.sm-mt-empty {
  padding: 18px; text-align: center; font-size: 12.5px; color: var(--sm-muted);
  background: var(--sm-tint-soft); border-radius: 8px;
}

/* ============================================================
   初始化向导（开赛准备六步）：一条竖向清单，勾来自库里的真实计数
   ============================================================ */
.sm-guide { padding: 2px 0 8px; }

/* 顶部进度条：从校徽蓝渐变到达标绿，越靠右越接近「可以报名了」 */
.sm-guide__bar { height: 6px; border-radius: 3px; background: var(--sm-tint); overflow: hidden; margin: 0 0 14px; }
.sm-guide__bar i {
  display: block; height: 100%; border-radius: 3px;
  background: linear-gradient(90deg, var(--sm-blue), var(--sm-green));
  transition: width .3s ease;
}

.sm-guide__step {
  display: flex; gap: 12px; align-items: flex-start;
  padding: 12px 14px; margin-bottom: 10px;
  background: var(--sm-paper); border: 1px solid var(--sm-rule); border-radius: 8px;
}
/* 已完成的步骤整体退到背景层，没做的才抢注意力 */
.sm-guide__step.is-done { background: var(--sm-tint-soft); }
.sm-guide__step.is-done .sm-guide__title { color: var(--sm-muted); }

/* 序号圆点：必做未完成是跑道红，完成变达标绿 */
.sm-guide__no {
  flex: none; width: 26px; height: 26px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--sm-font-num); font-size: 13px; font-weight: 700;
  color: #fff; background: var(--sm-blue);
}
.sm-guide__step.is-done .sm-guide__no { background: var(--sm-green); }
.sm-guide__step.is-required:not(.is-done) .sm-guide__no { background: var(--sm-clay); }

.sm-guide__body { flex: 1; min-width: 0; }
.sm-guide__title {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  font-size: 14px; font-weight: 700; color: var(--sm-ink);
}
.sm-guide__desc { margin-top: 3px; font-size: 12.5px; line-height: 1.65; color: var(--sm-muted); }

/* 当前进度的数字：用号码布字体，和体检区的五个数字同一套语言 */
.sm-guide__meta { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 7px; }
.sm-guide__chip {
  font-family: var(--sm-font-num); font-size: 12px;
  padding: 2px 8px; border-radius: 10px;
  background: var(--sm-tint); color: var(--sm-blue-ink);
}

/* 缺口清单：只写「还差什么」，不写「你真棒」 */
.sm-guide__todo { margin-top: 7px; font-size: 12.5px; line-height: 1.8; color: var(--sm-clay); }
.sm-guide__todo > div::before { content: '·'; font-weight: 700; margin-right: 6px; }

.sm-guide__ops { flex: none; align-self: center; }

/* 提醒区：不挡流程，但都是真会出事的地方（默认口令、默认会名、结案后只读） */
.sm-guide__tips {
  margin-top: 4px; padding: 10px 12px; border-radius: 8px;
  background: #fdf7e8; border: 1px solid #f0dfb4;
  font-size: 12.5px; line-height: 1.8; color: #8a6a1f;
}
.sm-guide__tips > div::before { content: '!'; font-weight: 700; margin-right: 6px; }

/* 手机/窄屏：按钮落到整行，别挤着标题 */
@media (max-width: 720px) {
  .sm-guide__step { flex-wrap: wrap; }
  .sm-guide__ops { width: 100%; }
  .sm-guide__ops .el-button { width: 100%; }
}

/* ============================================================
   重置向导（四步）：删什么 / 年级怎么走 / 打会名 / 结果
   ============================================================ */
.sm-rst-steps { margin-bottom: 16px; }
/* 步骤标题默认会被折成两行（「清什么、留什么」→「清什么、/留什么」），压字号 + 不换行 */
.sm-rst-steps .el-step__title { white-space: nowrap; font-size: 12.5px; }
.sm-rst-steps .el-step__head { min-width: 0; }
.sm-rst-lead { margin: 0 0 12px; font-size: 12.5px; line-height: 1.8; color: var(--sm-muted); }

.sm-rst-two { display: flex; gap: 12px; align-items: stretch; }
.sm-rst-col { flex: 1; min-width: 0; border-radius: 8px; padding: 10px 12px; }
.sm-rst-col.del { background: #fdf3f1; }
.sm-rst-col.keep { background: var(--sm-tint-soft); }
.sm-rst-col__t { font-size: 13px; font-weight: 700; color: var(--sm-ink); margin-bottom: 4px; }
.sm-rst-kv {
  display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
  font-size: 12.5px; line-height: 2; border-bottom: 1px dashed var(--sm-rule);
}
.sm-rst-kv:last-child { border-bottom: 0; }
.sm-rst-kv span { color: var(--sm-muted); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sm-rst-kv b { flex: none; font-family: var(--sm-font-num); font-size: 14px; color: var(--sm-ink); }
.sm-rst-col.del .sm-rst-kv b { color: var(--sm-clay); }
.sm-rst-kv b.is-zero { color: #c2ccd8; font-weight: 400; }

/* 年级走向：一行一个班，「→」后面是新名字 */
.sm-rst-sub { font-size: 12px; font-weight: 700; color: var(--sm-ink); margin: 14px 0 4px; }
.sm-rst-sub em { font-style: normal; font-weight: 400; color: var(--sm-muted); margin-left: 6px; }
.sm-rst-grade {
  display: flex; align-items: baseline; gap: 8px;
  font-size: 12.5px; line-height: 1.9; padding: 2px 0 2px 2px;
  border-bottom: 1px dashed var(--sm-rule);
}
.sm-rst-grade:last-of-type { border-bottom: 0; }
.sm-rst-grade .arr { color: #b6c0cc; font-family: var(--sm-font-num); }
.sm-rst-grade .to { color: var(--sm-green); font-weight: 700; }
.sm-rst-grade.is-graduate .to { color: var(--sm-gold); }
.sm-rst-grade.is-skip .to { color: var(--sm-clay); }
.sm-rst-grade .why { color: var(--sm-muted); font-size: 11.5px; }

.sm-rst-box {
  padding: 12px 14px; border-radius: 8px; background: #fdf3f1;
  border-left: 3px solid var(--sm-clay); font-size: 12.5px; line-height: 1.8; color: #3b4a5c;
}
.sm-rst-typed { margin-top: 10px; }
.sm-rst-code {
  display: inline-block; font-family: var(--sm-font-num); font-size: 13px; font-weight: 700;
  background: var(--sm-tint); color: var(--sm-blue-ink);
  border-radius: 4px; padding: 1px 7px; margin: 0 2px;
}

.sm-rst-done { text-align: center; padding: 6px 0 2px; }
.sm-rst-done .ico { font-size: 34px; line-height: 1.2; }
.sm-rst-done .t { font-size: 15px; font-weight: 700; color: var(--sm-green); margin: 4px 0 2px; }
.sm-rst-done .s { font-size: 12.5px; color: var(--sm-muted); }
.sm-rst-done__list { margin-top: 14px; text-align: left; }
