/* ===== 抢答模式页样式 ===== */
.race-room-flex {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
}
.race-conn {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  font-weight: 600;
  color: #475569;
}
.race-dot {
  width: 10px;
  height: 10px;
  border-radius: 50%;
  background: #cbd5e1;
  flex-shrink: 0;
}
.race-dot.on {
  background: #10b981;
  box-shadow: 0 0 0 4px rgba(16,185,129,0.18);
  animation: racePulse 1.6s infinite;
}
@keyframes racePulse { 50% { box-shadow: 0 0 0 7px rgba(16,185,129,0.08); } }
.race-url {
  font-family: Consolas, "Microsoft YaHei", monospace;
  font-size: 17px;
  font-weight: 700;
  color: #4338ca;
  margin: 10px 0 6px;
  word-break: break-all;
}
.race-hint { font-size: 12px; color: #94a3b8; }
.race-qr {
  width: 168px;
  height: 168px;
  background: #fff;
  border: 1px solid #e2e8f0;
  border-radius: 14px;
  padding: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.race-qr svg { width: 100%; height: 100%; }
.race-qr-tip { font-size: 12px; color: #94a3b8; text-align: center; }

.race-main {
  display: flex;
  gap: 20px;
  align-items: flex-start;
  flex-wrap: wrap;
}
.race-side { width: 300px; flex-shrink: 0; }
.race-side .card { margin-bottom: 16px; }
.race-side .card:last-child { margin-bottom: 0; }

.race-empty { color: rgba(255,255,255,0.75); font-size: 16px; text-align: center; }
.race-empty.small { font-size: 13px; color: #94a3b8; padding: 18px 0; }

/* ===== 积分榜：当次/历史切换 + 周期 ===== */
.race-board-toggle {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 8px; margin-bottom: 10px;
}
.board-mode-group { display: flex; background: #f1f5f9; border-radius: 9px; padding: 3px; }
.board-mode {
  padding: 5px 13px; font-size: 13px; font-weight: 600; color: #64748b;
  background: none; border: none; border-radius: 7px; cursor: pointer;
  transition: all 0.18s; font-family: inherit;
}
.board-mode.active { background: #6366f1; color: #fff; box-shadow: 0 2px 6px rgba(99,102,241,0.35); }
.board-periods { display: flex; gap: 4px; }
.board-p {
  padding: 5px 11px; font-size: 12.5px; color: #64748b;
  background: #f1f5f9; border: 1px solid #e2e8f0; border-radius: 999px;
  cursor: pointer; transition: all 0.18s; font-family: inherit; font-weight: 500;
}
.board-p:hover { border-color: #a5b4fc; color: #4f46e5; }
.board-p.active { background: #6366f1; border-color: #6366f1; color: #fff; }
.board-sub { font-size: 11.5px; color: #94a3b8; margin-left: 7px; font-weight: 500; }
.race-score.neg { color: #dc2626; }

/* ===== 账号管理 ===== */
/* 账号卡片头：标题靠左，当前门店按钮靠右（窄屏自动换行后按钮仍右对齐） */
#acc-list-view .card-header { display: flex; align-items: center; justify-content: flex-start; gap: 10px; flex-wrap: wrap; }
#acc-list-view .card-title { white-space: nowrap; }
/* 当前门店按钮（卡片头右侧）：点击弹出门店管理弹窗 */
.store-pick-btn {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  background: #eef2ff;
  border: 1.5px solid #c7d2fe;
  color: #4338ca;
  border-radius: 999px;
  padding: 7px 15px;
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1;
  cursor: pointer;
  white-space: nowrap;
  max-width: 65%;
  transition: all 0.18s ease;
  font-family: inherit;
}
.store-pick-btn .store-pick-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
/* 悬浮：上浮 + 周边光晕（与系统 .btn-primary 悬浮反馈同款） */
.store-pick-btn:hover {
  background: #4f46e5;
  border-color: #4f46e5;
  color: #fff;
  transform: translateY(-1px);
  box-shadow: 0 0 0 1.5px rgba(99,102,241,0.35),
              0 0 9px rgba(99,102,241,0.28),
              0 2px 8px rgba(79,70,229,0.3);
}
.store-pick-btn:active { transform: scale(0.96); }
.store-pick-caret { font-size: 11px; opacity: 0.65; flex-shrink: 0; }
.store-pick-btn:hover .store-pick-caret { opacity: 0.9; }
/* 工具栏右侧按钮组（添加 / 刷新）：与搜索框同一行内靠右，窄屏不换行、按内容收缩宽度 */
.acc-head-actions { margin-left: auto; display: flex; gap: 8px; flex-wrap: nowrap; flex-shrink: 0; }
.acc-head-actions .acc-act-btn { min-width: 0; white-space: nowrap; }
/* 账号表格：行悬浮高亮（分组表格样式见 bank.css） */
.acc-online { color: #059669; font-weight: 600; font-size: 13px; }
.acc-offline { color: #94a3b8; font-size: 13px; }
/* 抢答中（在线且已绑定进行中场次）：紫金渐变小药丸 */
.acc-racing {
  color: #6d28d9;
  font-weight: 700;
  font-size: 13px;
  background: linear-gradient(90deg, #ede9fe 0%, #fef3c7 100%);
  border: 1px solid #c4b5fd;
  border-radius: 999px;
  padding: 1px 8px;
  white-space: nowrap;
}
.acc-row { cursor: pointer; transition: background 0.15s; }
.acc-row:hover { background: #f1f5ff; }
.acc-back {
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; margin-right: 6px;
  border-radius: 8px; background: #eef2ff; color: #4f46e5;
  font-size: 17px; font-weight: 700; cursor: pointer;
  transition: all 0.18s; vertical-align: middle;
}
.acc-back:hover { background: #6366f1; color: #fff; transform: translateX(-2px); }
.acc-detail-summary { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 14px; }
.acc-stat {
  padding: 7px 14px; border-radius: 999px; font-size: 13px;
  background: #f1f5f9; color: #475569; border: 1px solid #e2e8f0;
}
.acc-stat b { font-size: 15px; color: #1e293b; }
.acc-stat.ok { background: #ecfdf5; border-color: #a7f3d0; }
.acc-stat.ok b { color: #059669; }
.acc-stat.no { background: #fef2f2; border-color: #fecaca; }
.acc-stat.no b { color: #dc2626; }
.acc-detail-tabs { display: flex; gap: 6px; margin-bottom: 12px; border-bottom: 2px solid #e2e8f0; padding-bottom: 0; }
.acc-tab {
  padding: 9px 16px; font-size: 14px; font-weight: 600; color: #64748b;
  background: none; border: none; border-bottom: 2.5px solid transparent;
  margin-bottom: -2px; cursor: pointer; border-radius: 8px 8px 0 0;
  transition: all 0.18s; font-family: inherit;
}
.acc-tab:hover { color: #4f46e5; background: #eef2ff; }
.acc-tab.active { color: #4f46e5; border-bottom-color: #6366f1; background: #eef2ff; }

/* ===== 判分全屏效果 ===== */
.judge-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.25em;
  background: rgba(15, 23, 42, 0.93);
  font-size: calc(16px * var(--fscale, 1));   /* 浮层整体随大屏窗口比例等比缩放：内部尺寸全部 em 联动（fscale 由 screen.js 写在 #screen-stage 上，浮层挂载其下自动继承） */
  cursor: pointer;
  animation: judgeFade 0.25s ease;
}
@keyframes judgeFade { from { opacity: 0; } }
.judge-icon {
  font-size: 9.375em;   /* 150px @16px 基准，随浮层根字号等比 */
  font-weight: 900;
  line-height: 1;
  animation: judgePop 0.55s cubic-bezier(0.18, 0.89, 0.32, 1.28);
}
.judge-overlay.ok .judge-icon { color: #34d399; text-shadow: 0 0 70px rgba(52, 211, 153, 0.65); }
.judge-overlay.partial .judge-icon { color: #fbbf24; text-shadow: 0 0 70px rgba(251, 191, 36, 0.6); }
.judge-overlay.no .judge-icon { color: #f87171; text-shadow: 0 0 70px rgba(248, 113, 113, 0.65); }
@keyframes judgePop {
  0% { transform: scale(0.2); opacity: 0; }
  70% { transform: scale(1.12); }
  100% { transform: scale(1); opacity: 1; }
}
/* 判分标题：名称与结果分两行（窄屏/长名称不挤爆一行） */
.judge-title {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 4px;
  padding: 0 20px;
  text-align: center;
}
.judge-who { font-size: 1.375em; font-weight: 700; color: rgba(255, 255, 255, 0.86); }
.judge-result { font-size: 2.125em; font-weight: 800; color: #fff; }
.judge-answer {
  font-size: 1.625em;
  font-weight: 700;
  color: #fbbf24;
  background: rgba(251, 191, 36, 0.12);
  border: 1px solid rgba(251, 191, 36, 0.45);
  padding: 0.625em 1.75em;
  border-radius: 0.875em;
  white-space: pre-line;   /* 答案内换行符正常显示为换行 */
  opacity: 0;
  animation: judgeAnswerIn 0.4s ease 0.9s forwards;
}
@keyframes judgeAnswerIn { to { opacity: 1; } }
.judge-hint {
  position: absolute;
  bottom: 2.25em;
  font-size: 0.8125em;
  color: rgba(255, 255, 255, 0.45);
}
/* 窄屏不再用媒体查询硬切字号：浮层根字号已乘 --fscale（随窗口宽度连续缩放），断点两侧尺寸连续 */

/* ===== 数据页 ===== */
.data-summary { font-size: 13px; color: #64748b; align-self: center; }
.data-round {
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 14px 16px;
  margin-bottom: 12px;
}
.data-round-head {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 10px;
  flex-wrap: wrap;
}
.data-round-no {
  flex-shrink: 0;
  padding: 4px 10px;
  border-radius: 8px;
  background: #eef2ff;
  color: #4338ca;
  font-size: 13px;
  font-weight: 700;
}
.data-round-title {
  flex: 1;
  min-width: 200px;
  font-size: 14px;
  font-weight: 600;
  color: #1e293b;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.data-round-answer {
  flex-shrink: 1;
  max-width: 46%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;   /* 答案固定一行，超出省略，悬浮 title 显示全部 */
  font-size: 13px;
  font-weight: 700;
  color: #059669;
  background: #ecfdf5;
  padding: 4px 12px;
  border-radius: 999px;
}
/* 答题人：单行去重省略 + 右侧「显示全部」入口 */
.data-people-row { display: flex; align-items: center; gap: 10px; min-width: 0; }
.data-people-names {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;   /* 人名固定一行，超出省略，悬浮 title 显示全部 */
  font-size: 14px;
  font-weight: 600;
  color: #334155;
}
.data-people-more {
  flex-shrink: 0;
  border: none;
  background: none;
  color: #6366f1;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  padding: 4px 10px;
  border-radius: 8px;
  transition: background 0.2s, color 0.2s;
}
.data-people-more:hover { background: #eef2ff; color: #4338ca; }
.data-people-more:active { transform: scale(0.94); }
/* 「显示全部」弹窗：每条答题记录一行（对错 / 人名 / 得分 / 时间） */
.rr-sub {
  font-size: 13px;
  color: #64748b;
  margin-bottom: 14px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rr-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border-radius: 10px;
  font-size: 14px;
}
.rr-row + .rr-row { margin-top: 8px; }
.rr-row.ok { background: #ecfdf5; }
.rr-row.partial { background: #fffbeb; }
.rr-row.no { background: #fef2f2; }
.rr-mark { font-weight: 700; flex-shrink: 0; }
.rr-row.ok .rr-mark { color: #047857; }
.rr-row.partial .rr-mark { color: #b45309; }
.rr-row.no .rr-mark { color: #b91c1c; }
.rr-name {
  flex: 1;
  min-width: 0;
  font-weight: 600;
  color: #1e293b;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rr-pts { font-weight: 700; color: #334155; flex-shrink: 0; }
.rr-time { color: #64748b; font-size: 13px; flex-shrink: 0; }
.race-players { max-height: 320px; overflow-y: auto; }
.race-player {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 10px;
  border-radius: 10px;
  transition: background 0.2s;
}
.race-player:hover { background: #f8fafc; }
.race-player.win { background: #ecfdf5; }
.race-rank {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #f1f5f9;
  color: #64748b;
  font-size: 12px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.race-player:nth-child(1) .race-rank { background: #fef3c7; color: #b45309; }
.race-name {
  flex: 1;
  font-size: 14px;
  color: #1e293b;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.race-score { font-size: 15px; font-weight: 700; color: #4338ca; }
.race-early { font-size: 13px; color: #b45309; min-height: 20px; }

/* ===== 手机接入卡片：当前进行中场次信息行 ===== */
.race-live {
  margin-top: 10px;
  padding: 8px 12px;
  font-size: 13px;
  color: #334155;
  background: #f8fafc;
  border-left: 3px solid #7c3aed;
  border-radius: 8px;
  line-height: 1.8;
}
.race-live b { color: #4f46e5; }
.race-live .rl-racing { color: #b45309; font-weight: 700; }
.race-live .rl-unbound { color: #059669; }
.race-live .rl-none { color: #94a3b8; }

/* ===== 大屏👥本场成员弹窗（复用积分榜行样式：名次/姓名/得分） ===== */
.race-people-list { display: flex; flex-direction: column; gap: 8px; }
.race-people-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 9px 12px;
  background: #f8fafc;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
}

@media (max-width: 900px) {
  .race-side { width: 100%; }
}

/* ===== 抢答浮层（倒计时 / 开抢 / 抢到 / 时间到）===== */
.race-fx-overlay {
  position: fixed;
  inset: 0;
  z-index: 9500;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 0.625em;
  font-size: calc(16px * var(--fscale, 1));   /* 浮层整体随大屏窗口比例等比缩放：内部尺寸全部 em 联动 */
  pointer-events: none;   /* 不挡主持人操作 */
  background: rgba(15, 23, 42, 0.38);
  animation: judgeFade 0.2s ease;
}
.race-fx-overlay.race-go { background: transparent; }
.race-fx-label { font-size: 1.625em; font-weight: 600; color: #fff; text-shadow: 0 2px 10px rgba(0,0,0,0.5); letter-spacing: 0.375em; }
.race-cd-num {
  font-size: 12.5em;   /* 200px @16px 基准 */
  font-weight: 900;
  line-height: 1;
  color: #fbbf24;
  text-shadow: 0 0 60px rgba(251,191,36,0.75), 0 4px 16px rgba(0,0,0,0.45);
}
.race-cd-num.pop { animation: cdPop 0.9s cubic-bezier(0.18, 0.89, 0.32, 1.28); }
@keyframes cdPop {
  0% { transform: scale(1.6); opacity: 0; }
  55% { transform: scale(0.95); opacity: 1; }
  100% { transform: scale(1); }
}
.race-go .race-go-text {
  position: relative;      /* 块宽度只含「开抢」二字，flex 居中锚定两字中心 */
  font-size: 7.5em;   /* 120px @16px 基准 */
  font-weight: 900;
  color: #34d399;
  text-shadow: 0 0 70px rgba(52,211,153,0.8), 0 4px 14px rgba(0,0,0,0.5);
  animation: goBurst 0.9s ease;
}
.race-go-text .race-go-bang,
.race-timeup-text .race-go-bang {
  position: absolute;
  left: 100%;              /* 感叹号紧贴文字右侧跟随显示，不占居中计算 */
  bottom: 0.06em;          /* 与主文字基线视觉对齐 */
}
@keyframes goBurst {
  0% { transform: scale(0.3); opacity: 0; }
  60% { transform: scale(1.15); opacity: 1; }
  100% { transform: scale(1); }
}
.race-win .race-win-emoji { font-size: 6.875em; animation: winBounce 0.7s cubic-bezier(0.18,0.89,0.32,1.28); }
@keyframes winBounce { 0% { transform: scale(0.2) rotate(-14deg); } 60% { transform: scale(1.2) rotate(6deg); } 100% { transform: scale(1); } }
.race-win .race-win-name {
  font-size: 4em;   /* 64px @16px 基准 */
  font-weight: 900;
  color: #fff;
  text-shadow: 0 0 50px rgba(99,102,241,0.9), 0 4px 12px rgba(0,0,0,0.5);
}
.race-win .race-win-ms { font-size: 1.5em; font-weight: 600; color: #c7d2fe; }
.race-timeup .race-timeup-icon { font-size: 6.875em; animation: timeupShake 0.5s ease infinite; }
@keyframes timeupShake { 0%,100% { transform: rotate(0); } 25% { transform: rotate(-9deg); } 75% { transform: rotate(9deg); } }
.race-timeup .race-timeup-text {
  position: relative;  /* 「！」感叹号绝对定位跟随：块宽度只含「时间到」三字，flex 居中锚定文字本体 */
  font-size: 4.5em;   /* 72px @16px 基准 */
  font-weight: 900;
  color: #f87171;
  text-shadow: 0 0 60px rgba(248,113,113,0.8), 0 4px 12px rgba(0,0,0,0.5);
}
.race-timeup .race-timeup-hint { font-size: 1.25em; color: rgba(255,255,255,0.85); }

/* 右上角答题倒计时 */
#race-timer-pill {
  position: fixed;
  top: 76px;
  right: 26px;
  z-index: 9600;
  padding: 0.3846em 1.6em;   /* 原 10px 26px 按当前字号 em 联动；左右加宽给旁置符号留位（对称，保证文字本体居中） */
  border-radius: 999px;
  background: rgba(15,23,42,0.82);
  color: #fff;
  font-size: calc(26px * var(--fscale, 1));   /* 随大屏窗口比例等比缩放 */
  font-weight: 800;
  box-shadow: 0 6px 24px rgba(0,0,0,0.35);
  pointer-events: none;
}
/* 符号旁置：⏱/⏰ 绝对定位钉在药丸左侧内边距区，不参与文字居中量算 */
#race-timer-pill .pill-sym {
  position: absolute;
  left: 0.55em;
  top: 50%;
  transform: translateY(-50%);
  font-weight: 700;
}
#race-timer-pill .pill-txt { display: inline-block; }   /* 纯文字本体为唯一布局内容 → 文字天然在药丸正中 */
#race-timer-pill.danger {
  background: rgba(220,38,38,0.92);
  animation: timerBlink 0.5s infinite;
}
@keyframes timerBlink { 50% { transform: scale(1.12); } }

/* ===== 数据页：筛选与人员/日期视图 ===== */
.data-filters { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.data-filter-btn {
  padding: 6px 16px;
  border-radius: 999px;
  border: 1.5px solid #e2e8f0;
  background: #fff;
  color: #64748b;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
}
.data-filter-btn:hover { border-color: #a5b4fc; color: #4338ca; }
.data-filter-btn.active {
  background: linear-gradient(135deg, #6366f1, #8b5cf6);
  border-color: transparent;
  color: #fff;
}
.data-filters select {
  padding: 6px 12px;
  border-radius: 10px;
  border: 1.5px solid #e2e8f0;
  background: #fff;
  font-size: 13px;
  color: #334155;
}
.data-person, .data-date {
  border: 1px solid #e2e8f0;
  border-radius: 12px;
  padding: 14px 16px;
  margin-bottom: 12px;
}
.data-person-head, .data-date-head {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
  margin-bottom: 10px;
  padding-bottom: 10px;
  border-bottom: 1px dashed #e2e8f0;
}
.data-person-name { font-size: 16px; font-weight: 700; color: #1e293b; }
.data-person-stats, .data-date-head { font-size: 13px; color: #64748b; }
.data-person-stats b { color: #4338ca; font-size: 15px; }
/* 按人员卡片头部：名字（左）· 大号得分（居中）· 筛选按钮组（右） */
.data-person-head .data-person-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.data-person-score {
  font-size: 27px;
  font-weight: 800;
  line-height: 1;
  letter-spacing: 0.5px;
  font-family: Consolas, "Microsoft YaHei", monospace;
}
.data-person-score.pos { color: #16a34a; text-shadow: 0 0 14px rgba(22,163,74,0.25); }
.data-person-score.neg { color: #dc2626; text-shadow: 0 0 14px rgba(220,38,38,0.25); }
.data-person-score.zero { color: #64748b; }
.data-person-btns { flex: 1; display: flex; justify-content: flex-end; gap: 7px; flex-wrap: wrap; }
.dp-btn {
  padding: 6px 12px;
  border: 1.5px solid #e2e8f0;
  border-radius: 999px;
  background: #fff;
  color: #475569;
  font-size: 12.5px;
  font-weight: 500;
  cursor: pointer;
  white-space: nowrap;
  transition: all 0.18s ease;
  font-family: inherit;
}
.dp-btn:hover { border-color: #a5b4fc; color: #6366f1; }
.dp-btn:active { transform: scale(0.94); }
.dp-btn.on { border-color: transparent; background: linear-gradient(135deg, #6366f1, #8b5cf6); color: #fff; font-weight: 600; pointer-events: none; }
.dp-btn.ok.on { background: linear-gradient(135deg, #16a34a, #22c55e); }
.dp-btn.partial.on { background: linear-gradient(135deg, #d97706, #f59e0b); }
.dp-btn.no.on { background: linear-gradient(135deg, #dc2626, #ef4444); }
/* 按题目视图的结果筛选按钮组（跟在视图切换按钮右侧） */
.data-qfilter { display: inline-flex; gap: 6px; margin-left: 12px; flex-wrap: wrap; }

/* ===== 答题不全·分值设置弹窗 ===== */
.partial-modal-body { padding: 4px 28px 14px; }   /* 左右 28 与标题内边距对齐（外层 fixed-close 弹窗无内边距） */
.partial-modal-info { font-size: 13px; color: #64748b; margin-bottom: 12px; }
.partial-modal-row { display: flex; align-items: center; gap: 10px; }
.partial-modal-row label { font-size: 14px; color: #334155; font-weight: 600; white-space: nowrap; }
.partial-modal-row input {
  width: 100px;
  padding: 8px 12px;
  border: 1.5px solid #e2e8f0;
  border-radius: 10px;
  font-size: 16px;
  font-weight: 700;
  text-align: center;
  font-family: inherit;
}
.partial-modal-row input:focus { outline: none; border-color: #f59e0b; box-shadow: 0 0 0 3px rgba(245, 158, 11, .15); }
.partial-modal-unit { color: #64748b; font-size: 13px; }
.partial-modal-hint { margin-top: 10px; font-size: 12px; color: #94a3b8; }
.data-rec-empty { text-align: center; color: #94a3b8; font-size: 13px; padding: 14px 0; }
/* 总览卡片：总积分数字（颜色区分正负） */
.ov-pts {
  font-size: 17px;
  font-weight: 800;
  font-family: Consolas, "Microsoft YaHei", monospace;
}
.ov-pts.pos { color: #16a34a; }
.ov-pts.neg { color: #dc2626; }
.ov-pts.zero { color: #64748b; }
/* 总览滚动容器：超过 20 行滚动查看，表头吸顶 */
.ov-scroll {
  max-height: calc(20 * 45px);   /* 约 20 行的高度 */
  overflow-y: auto;
  border: 1px solid #e2e8f0;
  border-radius: 10px;
}
.ov-scroll .sess-table { margin-bottom: 0; }
/* 总积分表适配：窄屏不横向滚动，超宽时整体等比例缩放到容器宽度 */
.ov-fit { transform-origin: top left; }
.ov-fit .sess-table { width: max-content; min-width: 100%; }
.ov-fit .sess-table td:nth-child(2), .ov-fit .sess-table th:nth-child(2) {
  max-width: 9em;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ov-scroll thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  background: #f8fafc;
  box-shadow: 0 1px 0 #e2e8f0;
}
.data-rec {
  display: flex;
  flex-wrap: wrap;   /* 窄屏放不下时：题目占首行，检核人/得分/时间换行到第二行 */
  align-items: center;
  gap: 10px;
  padding: 7px 10px;
  border-radius: 9px;
  font-size: 13.5px;
  margin-bottom: 4px;
}
.data-rec.ok { background: #f0fdf4; }
.data-rec.partial { background: #fffbeb; }
.data-rec.no { background: #fef2f2; }
.data-rec-mark { font-weight: 900; width: 18px; text-align: center; flex-shrink: 0; }
.data-rec.ok .data-rec-mark { color: #059669; }
.data-rec.partial .data-rec-mark { color: #b45309; }
.data-rec.no .data-rec-mark { color: #dc2626; }
.data-rec-name { font-weight: 700; color: #334155; flex-shrink: 0; }
.data-rec-title {
  flex: 1;
  min-width: 160px;
  color: #475569;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.data-rec-pts { font-weight: 700; flex-shrink: 0; }
.data-rec.ok .data-rec-pts { color: #059669; }
.data-rec.no .data-rec-pts { color: #dc2626; }
.data-rec-time { font-size: 12px; color: #94a3b8; flex-shrink: 0; font-family: Consolas, monospace; }
