/* ============================================================================
 * 学生秀 —— 模块样式（只接 app.css 的设计变量，不重复定义色板）
 *
 * 结构：顶部三个选择 → 组信息条 → 工具条 → 过秀 / 上秀 两页
 * ========================================================================== */

/* ---------- 顶部：选秀次 + 选分组 + 选阶段 ---------- */
.sh-pick {
  display: flex; gap: 14px; align-items: flex-end; flex-wrap: wrap;
  background: #fbfcfe; border: 1px solid var(--line); border-radius: 10px;
  padding: 10px 12px; margin-bottom: 12px;
}
.sh-pk { display: flex; flex-direction: column; gap: 4px; }
.sh-pk > span { font-size: 11.5px; color: var(--mut); }
.sh-pk > span i { font-style: normal; font-size: 10.5px; color: var(--dim); margin-left: 3px; }
.sh-pk select {
  font-family: inherit; font-size: 13px; padding: 6px 10px; min-width: 240px; max-width: 340px;
  border: 1px solid var(--line); border-radius: 8px; background: #fff; color: var(--txt);
}
.sh-pk select:focus { outline: 2px solid var(--brand-soft); border-color: var(--brand); }
.sh-pk-hint { flex: 1 1 190px; font-size: 11.5px; color: var(--dim); line-height: 1.6; padding-bottom: 6px; }

/* ---------- 组信息条 ---------- */
.sh-subj {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 12px;
  flex-wrap: wrap; padding: 2px 0 12px; border-bottom: 1px solid var(--line2); margin-bottom: 12px;
}
.sh-subj-l b { font-size: 15px; }
.sh-subj-m { font-size: 12px; color: var(--mut); margin-top: 4px; }
.sh-subj-r { font-size: 12.5px; color: var(--txt); text-align: right; line-height: 1.6; }
.sh-subj-r span { display: block; color: var(--dim); font-size: 11.5px; margin-top: 2px; }
.sh-chip {
  display: inline-block; font-size: 11px; padding: 1px 9px; border-radius: 999px;
  background: var(--brand-soft); color: var(--brand-deep); margin-left: 6px; vertical-align: 2px;
}
.sh-chip.s2 { background: #eef2f7; color: var(--mut); }
.sh-chip.s2.manual { background: var(--warn-soft); color: #8a5b12; }

/* ---------- 工具条：重新读取 / 保存 ---------- */
.sh-tools {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 0 0 12px;
}
.sh-stat { font-size: 11.5px; color: var(--dim); }
.sh-stat.dirty { color: var(--warn); }
.sh-tools .btn[data-act="save"] { margin-left: auto; }
.sh-savebar {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  margin-top: 20px; padding-top: 14px; border-top: 1px solid var(--line2);
}

/* ---------- 过秀 / 上秀 两个页 ---------- */
.sh-tabs {
  display: flex; gap: 4px; background: #eef2f7; border-radius: 10px;
  padding: 4px; margin-bottom: 16px; max-width: 340px;
}
.sh-tab {
  flex: 1; font-family: inherit; font-size: 13.5px; padding: 8px 12px; border: 0;
  border-radius: 8px; background: transparent; color: var(--mut); cursor: pointer; transition: .15s;
}
.sh-tab i { font-style: normal; font-size: 11px; color: var(--dim); margin-left: 5px; }
.sh-tab.on { background: #fff; color: var(--brand-deep); font-weight: 600; box-shadow: 0 1px 3px rgba(20,40,80,.09); }
.sh-tab.on i { color: var(--brand); }

/* ---------- 阶段标准条 ---------- */
.sh-stdbar {
  display: flex; align-items: center; gap: 14px; flex-wrap: wrap;
  background: linear-gradient(135deg, #24365c, #37527f); color: #fff;
  border-radius: 10px; padding: 10px 14px; margin-bottom: 12px;
}
.sh-stdbar-l { display: flex; align-items: baseline; gap: 8px; }
.sh-stdbar-l b { font-size: 14px; }
.sh-stdbar-l span { font-size: 11.5px; opacity: .72; }
.sh-stdbar-r { margin-left: auto; text-align: right; font-size: 12.5px; line-height: 1.6; }
.sh-stdbar-r b { font-weight: 600; }
.sh-stdbar-r span { display: block; font-size: 11.5px; opacity: .72; }

/* ---------- 总分 + 第几轮 ---------- */
.sh-total {
  display: flex; gap: 16px; align-items: center; flex-wrap: wrap;
  border: 1px solid #d8e4ff; background: var(--brand-soft);
  border-radius: 10px; padding: 10px 14px; margin-bottom: 10px;
}
.sh-total-n { display: flex; align-items: center; gap: 10px; }
.sh-total-n .lb { font-size: 12.5px; color: var(--brand-deep); }
.sh-total-n .in-w { display: flex; align-items: baseline; gap: 5px; }
.sh-total-in {
  width: 88px; font-family: inherit; font-size: 30px; font-weight: 700; line-height: 1.15;
  color: var(--brand-deep); text-align: center; background: #fff;
  border: 1px solid var(--brand); border-radius: 9px; padding: 0 6px;
  -moz-appearance: textfield; appearance: textfield;
}
.sh-total-in::-webkit-outer-spin-button,
.sh-total-in::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.sh-total-in:focus { outline: 0; box-shadow: 0 0 0 3px rgba(59,110,220,.18); }
.sh-total-n .in-w i { font-style: normal; font-size: 13px; color: var(--brand-deep); opacity: .7; }
.sh-total-side { flex: 1 1 240px; min-width: 200px; }
.sh-total-side p { margin: 6px 0 0; font-size: 11.5px; color: var(--brand-deep); opacity: .82; line-height: 1.6; }
.sh-steps { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.sh-steps > span { font-size: 11.5px; color: var(--brand-deep); opacity: .8; margin-right: 2px; }
.sh-steps button {
  font-family: inherit; font-size: 12px; padding: 2px 10px; border-radius: 999px;
  border: 1px solid #c3d5fb; background: #fff; color: var(--brand-deep); cursor: pointer; transition: .15s;
}
.sh-steps button:hover { border-color: var(--brand); }
.sh-steps button.on { background: var(--brand); border-color: var(--brand); color: #fff; }

.sh-roundbar {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  font-size: 11.5px; color: var(--mut); margin-bottom: 14px;
}
.sh-rb {
  font-family: inherit; font-size: 12px; padding: 3px 11px; border-radius: 999px;
  border: 1px solid var(--line); background: #fff; color: var(--mut); cursor: pointer; transition: .15s;
}
.sh-rb:hover { border-color: var(--brand); color: var(--brand-deep); }
.sh-rb.on { background: var(--brand-soft); border-color: var(--brand); color: var(--brand-deep); font-weight: 600; }
.sh-rb.add { border-style: dashed; }

/* ---------- 分区小标题 ---------- */
.sh-sec {
  font-size: 12px; color: var(--dim); margin: 16px 0 8px;
  padding-bottom: 6px; border-bottom: 1px solid var(--line2);
}

/* ---------- 标准 + 填空 ---------- */
.sh-fill {
  border: 1px solid var(--line); border-radius: 10px; background: #fff;
  padding: 10px 12px; margin-bottom: 10px;
}
.sh-fill-h { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.sh-fill-h b { font-size: 13.5px; }
.sh-fill-h b i { font-style: normal; font-size: 12px; font-weight: 400; color: var(--dim); margin-left: 6px; }
.sh-fill-h em { font-style: normal; font-size: 11.5px; color: var(--dim); }
.sh-focus {
  font-size: 11px; padding: 1px 8px; border-radius: 999px;
  background: var(--brand); color: #fff; font-weight: 400; vertical-align: 1px;
}
.sh-fill-std { margin: 0 0 8px; padding: 0; list-style: none; }
.sh-fill-std li {
  font-size: 12.5px; color: var(--mut); line-height: 1.7;
  padding-left: 12px; position: relative;
}
.sh-fill-std li:before { content: '·'; position: absolute; left: 2px; color: var(--dim); }
.sh-fill-std li b { color: var(--txt); font-weight: 600; margin-right: 8px; }

.sh-fill-box { display: flex; gap: 8px; align-items: stretch; }
.sh-fill-box textarea, .sh-vnote {
  width: 100%; font-family: inherit; font-size: 13px; line-height: 1.75; color: var(--txt);
  background: #fff; border: 1px solid var(--line); border-radius: 9px;
  padding: 8px 10px; resize: vertical; min-height: 62px;
}
.sh-fill-box textarea:focus, .sh-vnote:focus { outline: 2px solid var(--brand-soft); border-color: var(--brand); }
.sh-mic {
  flex: 0 0 46px; align-self: stretch; font-size: 17px; line-height: 1;
  border: 1px dashed #cbd6e6; border-radius: 9px; background: #fbfcfe;
  cursor: pointer; transition: .15s;
}
.sh-mic:hover { border-color: var(--brand); background: var(--brand-soft); }
.sh-mic.on { border: 1px solid var(--danger); background: var(--danger-soft); animation: shPulse 1.1s infinite; }
@keyframes shPulse { 0%, 100% { opacity: 1; } 50% { opacity: .45; } }

/* ---------- 组员表现：一人一行（过秀 / 上秀都有） ---------- */
.sh-members {
  border: 1px solid #d8e4ff; background: #f8faff; border-radius: 10px;
  padding: 10px 12px 6px; margin-bottom: 12px;
}
.sh-mh { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; }
.sh-mh b { font-size: 13.5px; color: var(--brand-deep); }
.sh-mh em { font-style: normal; font-size: 11.5px; color: var(--mut); }
.sh-mfill {
  margin-left: auto; font-size: 11px; padding: 1px 9px; border-radius: 999px;
  background: #eef2f7; color: var(--mut);
}
.sh-mfill.full { background: var(--ok-soft); color: var(--ok); }
.sh-mrow {
  display: flex; gap: 10px; align-items: flex-start;
  padding: 7px 0; border-top: 1px solid #e7eefb;
}
.sh-mrow:first-of-type { border-top: 0; }
.sh-mname {
  flex: 0 0 104px; font-size: 13px; font-weight: 600; color: var(--txt);
  padding-top: 9px; line-height: 1.4; word-break: break-all;
}
.sh-mrow .sh-fill-box { flex: 1 1 auto; }
.sh-mrow .sh-fill-box textarea { min-height: 54px; }
.sh-mempty { font-size: 12.5px; color: var(--mut); margin: 2px 0 8px; }

/* ---------- 判定：能不能上秀 ---------- */
.sh-verdict {
  border: 1px solid #d8e4ff; background: #f7faff; border-radius: 10px;
  padding: 12px 14px; margin-top: 16px;
}
.sh-verdict-h { font-size: 13.5px; font-weight: 600; margin-bottom: 10px; }
.sh-vbtns { display: flex; gap: 10px; flex-wrap: wrap; }
.sh-vbtn {
  font-family: inherit; font-size: 13.5px; padding: 9px 16px; cursor: pointer; transition: .15s;
  border: 1px solid var(--line); border-radius: 9px; background: #fff; color: var(--txt);
}
.sh-vbtn:hover { border-color: #cfd8e5; background: #fafcff; }
.sh-vbtn.go.on { background: var(--ok); border-color: var(--ok); color: #fff; font-weight: 600; }
.sh-vbtn.again.on { background: var(--warn); border-color: var(--warn); color: #fff; font-weight: 600; }
.sh-vnow { font-size: 12.5px; color: var(--mut); margin-top: 10px; line-height: 1.6; }
.sh-vnow b { color: var(--txt); }
.sh-vnow b.ok { color: var(--ok); }
.sh-vnow b.again { color: var(--warn); }
.sh-vnow b.none { color: var(--dim); }
.sh-vnote { margin-top: 10px; min-height: 48px; }

/* ---------- 历史过秀 ---------- */
.sh-hist { margin-top: 18px; border-top: 1px dashed var(--line); padding-top: 12px; }
.sh-hist-h { font-size: 12px; color: var(--mut); margin-bottom: 8px; }
.sh-hist-row {
  border: 1px solid var(--line2); border-radius: 9px; background: #fbfcfe;
  padding: 8px 11px; margin-bottom: 8px; opacity: .9;
}
.sh-hist-t { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; font-size: 12.5px; }
.sh-hist-t > span { font-size: 11.5px; color: var(--dim); }
.sh-hist-sc { font-weight: 700; color: var(--txt); }
.sh-vtag { font-size: 11px; padding: 1px 8px; border-radius: 999px; }
.sh-vtag.go { background: var(--ok-soft); color: var(--ok); }
.sh-vtag.again { background: var(--warn-soft); color: var(--warn); }
.sh-vtag.none { background: #eef2f7; color: var(--dim); }
.sh-hist-n { font-size: 12px; color: var(--mut); line-height: 1.75; margin-top: 5px; }
.sh-hist-n b { color: var(--txt); }
.sh-hist-n.dim { color: var(--dim); }

/* ---------- 上秀 ---------- */
.sh-flowtip {
  font-size: 12.5px; line-height: 1.65; border-radius: 9px;
  padding: 8px 12px; margin-bottom: 14px; border: 1px solid transparent;
}
.sh-flowtip.ok { background: var(--ok-soft); color: var(--ok); border-color: #bfe3cd; }
.sh-flowtip.warn { background: var(--warn-soft); color: #8a5b12; border-color: #f0dcb4; }
.sh-flowtip.mute { background: #f1f4f8; color: var(--mut); border-color: var(--line2); }
.sh-form { margin-bottom: 2px; display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.sh-fform-s { font-size: 12.5px; color: var(--mut); }
.sh-fform-s b { color: var(--txt); }
.sh-fld { display: inline-flex; align-items: center; gap: 8px; }
.sh-fld > span { font-size: 12.5px; color: var(--mut); white-space: nowrap; }
.sh-fld input {
  font-family: inherit; font-size: 13px; padding: 6px 10px; color: var(--txt);
  border: 1px solid var(--line); border-radius: 8px; background: #fff;
}
.sh-fld input:focus { outline: 2px solid var(--brand-soft); border-color: var(--brand); }

/* ---------- 轻提示（语音等） ---------- */
#sh-toast {
  position: fixed; left: 50%; bottom: 28px; z-index: 99; max-width: 560px;
  transform: translate(-50%, 18px); opacity: 0; pointer-events: none;
  background: #22304a; color: #fff; font-size: 13px; line-height: 1.65;
  padding: 10px 16px; border-radius: 10px; text-align: center; transition: .25s;
}
#sh-toast.show { opacity: 1; transform: translate(-50%, 0); }

/* ---------- 组员的目标（学生预约时自己写的） ---------- */
.sh-goalbar{display:flex;align-items:baseline;gap:7px;flex-wrap:wrap;margin-bottom:5px}
.sh-goaltx{flex:1 1 auto;min-width:0;font-size:12px;line-height:1.6;color:var(--brand-deep);
  background:var(--brand-soft);border-radius:8px;padding:2px 9px;word-break:break-word}
.sh-goalbar .btn{flex:0 0 auto}

@media (max-width: 640px) {
  .sh-pk select { min-width: 0; width: 100%; max-width: none; }
  .sh-pk { flex: 1 1 100%; }
  .sh-mname { flex: 0 0 74px; font-size: 12.5px; }
}
