/* 课表广场 —— 独立页面，自带配色（不是 Hermes 预览框，没有 app 注入变量） */
:root{
  --bg:#f5f7fb; --card:#ffffff; --fg:#1c2333; --muted:#6b7688;
  --border:#dfe4ec; --accent:#1a56c4; --accent-soft:#e8f0fe;
  --ok:#16a34a; --warn:#b45309; --danger:#dc2626; --radius:12px;
}
*{box-sizing:border-box}
body{
  margin:0;background:var(--bg);color:var(--fg);
  font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;
  font-size:14px;line-height:1.6;
}
.wrap{max-width:1180px;margin:0 auto;padding:20px}
.muted{color:var(--muted)}
.small{font-size:12px}
.grow{flex:1}
a{color:var(--accent)}

/* ---------- 顶栏 ---------- */
.bar{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:12px 16px;background:var(--card);border:1px solid var(--border);
  border-radius:var(--radius);margin-bottom:16px;
}
.who{display:flex;align-items:center;gap:8px;font-size:14px}
.badge{
  font-size:11px;padding:2px 7px;border-radius:5px;
  background:var(--accent);color:#fff;font-weight:600;
}
.mini{
  font:inherit;font-size:13px;padding:6px 13px;border-radius:8px;cursor:pointer;
  border:1px solid var(--border);background:transparent;color:var(--fg);
  text-decoration:none;display:inline-block;
}
.mini:hover{border-color:var(--accent);color:var(--accent)}
.mini.primary{border-color:var(--accent);background:var(--accent);color:#fff;font-weight:600}
.mini.primary:hover{background:#1749a8;color:#fff}

/* ---------- 提示 ---------- */
.flash{margin-bottom:14px}
.flash div{
  padding:10px 14px;border-radius:9px;margin-bottom:8px;font-size:13px;
  background:#fef3c7;color:var(--warn);border:1px solid #fcd34d;
}
.sub{font-size:13px;color:var(--muted);margin:0 0 12px}

/* ---------- 那张表 ---------- */
.tablewrap{
  background:var(--card);border:1px solid var(--border);
  border-radius:var(--radius);overflow-x:auto;
}
table.kb{border-collapse:collapse;width:100%;table-layout:fixed;min-width:820px}
.kb th,.kb td{border:1px solid var(--border);text-align:center;font-size:12px}
.kb thead th{color:var(--muted);font-weight:600;padding:8px 3px;background:#fafbfd}
.kb th.jie{
  color:var(--muted);font-weight:500;width:78px;padding:5px 3px;
  line-height:1.35;font-size:11.5px;background:#fafbfd;
}
.kb th.jie span{font-size:10px;opacity:.75}
/* 表格自然变高，不加内部滚动条（已确认） */
.kb td{min-height:52px;padding:5px 4px;vertical-align:top;line-height:1.4}
.kb td.free{cursor:pointer}
.kb td.free:hover{background:#f2f6ff}
.kb td.none{background:#f2f2f2}
.kb td.note{
  text-align:left;color:var(--muted);font-size:11.5px;
  background:#fafbfd;padding:6px 10px;
}
.nm{
  display:inline-block;font-size:12px;color:var(--accent);
  padding:1px 6px;margin:1px 2px;border-radius:5px;background:var(--accent-soft);
}
.nm.self{font-weight:700;background:var(--accent);color:#fff}
.nm.more{color:var(--muted);background:transparent;border:1px dashed var(--border);font-size:11px}
.free-cnt{display:block;font-size:10px;color:var(--muted);margin-top:3px}

/* ---------- 弹窗 ---------- */
#pop{
  display:none;position:fixed;z-index:99;min-width:210px;max-width:330px;
  background:var(--card);border:1px solid var(--border);border-radius:11px;
  padding:12px 14px;box-shadow:0 8px 30px rgba(0,0,0,.18);
}
#pop h4{margin:0 0 8px;font-size:13.5px}
#pop .lst{display:flex;flex-wrap:wrap;gap:5px}
#pop .tip{font-size:11.5px;color:var(--muted);margin-top:9px;line-height:1.65}
#pop .empty{font-size:12.5px;color:var(--muted)}
#pop .d-link{cursor:pointer}
#pop .d-link:hover{text-decoration:underline}

/* ---------- 表单 ---------- */
.formbox{
  max-width:400px;margin:36px auto;background:var(--card);
  border:1px solid var(--border);border-radius:var(--radius);padding:26px 24px;
}
.formbox.wide{max-width:560px}
.logo{font-size:24px;font-weight:700;text-align:center;letter-spacing:1px}
.logo-sub{text-align:center;font-size:12.5px;color:var(--muted);margin:6px 0 20px}
.field{margin-bottom:13px}
.field label{display:block;font-size:12.5px;color:var(--muted);margin-bottom:5px}
.field input{
  width:100%;font:inherit;font-size:14px;padding:10px 12px;border-radius:9px;
  border:1px solid var(--border);background:#fff;color:var(--fg);
}
.field input:focus{outline:none;border-color:var(--accent)}
.field select{
  width:100%;font:inherit;font-size:14px;padding:9px 10px;border-radius:9px;
  border:1px solid var(--border);background:#fff;color:var(--fg);
}
.field select:focus{outline:none;border-color:var(--accent)}
.btn{
  width:100%;font:inherit;font-size:14.5px;font-weight:600;padding:11px;border-radius:9px;
  border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer;
}
.btn:hover{background:#1749a8}
.btn.ghost{background:transparent;color:var(--accent);margin-top:9px}
.btn.ghost:hover{background:var(--accent-soft)}
.tipbox{
  font-size:12px;border:1px dashed var(--border);border-radius:9px;
  padding:9px 11px;margin-bottom:14px;color:var(--muted);line-height:1.65;
}
.tipbox b{color:var(--fg)}
.fine{font-size:11.5px;color:var(--muted);text-align:center;margin-top:15px;line-height:1.7}

/* ---------- 个人课表 ---------- */
.detail-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:6px}
.detail-head h2{font-size:20px;margin:0}
.detail-head span{font-size:13px;color:var(--muted)}
.card{
  background:var(--card);border:1px solid var(--border);
  border-radius:var(--radius);padding:18px;
}
.kb.big td{min-height:60px;font-size:13px;color:var(--accent)}
.kb.big td.busy{background:transparent;color:transparent}
.kb.big th.jie{width:96px;font-size:12px}
.kb.big thead th{font-size:13.5px}

/* ---------- 表格（邀请码） ---------- */
.list{width:100%;border-collapse:collapse;background:var(--card);
      border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.list th,.list td{border-bottom:1px solid var(--border);padding:9px 12px;
                  font-size:13px;text-align:left}
.list th{background:#fafbfd;color:var(--muted);font-weight:600}
.code{font-family:Consolas,monospace;font-size:15px;font-weight:700;letter-spacing:1px}
.used{color:var(--muted)}
.free{color:var(--ok)}

/* ---------- 打印 / PDF ---------- */
.print-only{display:none}
@media print{
  @page{size:A4 landscape;margin:10mm}
  .bar,.hintbox,.flash,#pop{display:none !important}
  .wrap{padding:0;max-width:none}
  .print-only{display:block;margin-bottom:10px;font-size:13px;color:#000}
  .print-only b{font-size:16px}
  .tablewrap{border:none;overflow:visible}
  .kb th,.kb td{border:1px solid #666 !important}
  .kb thead th,.kb th.jie{background:#eef3fa !important;color:#444 !important}
  .nm{background:#e8f0fe !important;color:#1a56c4 !important}
  .nm.more{background:transparent !important;color:#888 !important}
  .free-cnt{color:#888 !important}
  .kb td.none{background:#f2f2f2 !important}
  *{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
.hintbox{
  margin-top:14px;font-size:12px;color:var(--muted);line-height:1.75;
  border-left:3px solid var(--border);padding-left:11px;
}
.hintbox b{color:var(--fg)}

/* 顶栏「← 总表」主按钮：任何页面都能一键回总表 */
.homebtn{
  display:inline-flex;align-items:center;gap:5px;
  font:inherit;font-size:13.5px;font-weight:600;padding:7px 15px;border-radius:8px;
  border:1px solid var(--accent);background:var(--accent);color:#fff;
  text-decoration:none;white-space:nowrap;
}
.homebtn:hover{background:#1749a8;color:#fff}
.homebtn.here{background:transparent;color:var(--accent)}   /* 已在总表页 */

/* ---------- 分组管理 ---------- */
.chipwrap{display:flex;flex-wrap:wrap;gap:7px;margin:6px 0 14px}
.chip{
  display:inline-flex;align-items:center;gap:5px;
  font-size:12.5px;padding:4px 9px;border-radius:7px;
  background:var(--accent-soft);color:var(--accent);
}
.chip form{margin:0;line-height:1}
.chip-x{
  font:inherit;font-size:14px;line-height:1;cursor:pointer;border:none;
  background:transparent;color:var(--accent);padding:0 1px;opacity:.6;
}
.chip-x:hover{opacity:1;color:var(--danger)}
.rowbar{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;
        border-top:1px solid var(--border);padding-top:12px}
.mini.danger{color:var(--danger);border-color:var(--border)}
.mini.danger:hover{border-color:var(--danger);color:var(--danger)}

/* 顶栏下拉（周次 / 分组） */
.bar select{
  font:inherit;font-size:13px;padding:6px 10px;border-radius:8px;
  border:1px solid var(--border);background:var(--card);color:var(--fg);
}
.bar select:focus{outline:none;border-color:var(--accent)}
.bar label{font-size:12.5px;color:var(--muted)}

/* 个人课表页的返回按钮 */
.backbtn{
  display:inline-flex;align-items:center;gap:6px;
  font:inherit;font-size:14px;font-weight:600;padding:9px 18px;border-radius:9px;
  border:1px solid var(--accent);background:var(--accent);color:#fff;
  text-decoration:none;margin-bottom:14px;
}
.backbtn:hover{background:#1749a8}

/* ---------- 管理员微调 ---------- */
#pop{max-width:340px}
.adj-panel{
  margin-top:11px;padding-top:10px;border-top:1px dashed var(--border);
  max-height:290px;overflow-y:auto;
}
.adj-head{
  display:flex;justify-content:space-between;align-items:center;
  font-size:12px;font-weight:700;color:var(--fg);margin-bottom:7px;
}
.adj-head span{font-weight:400;color:var(--muted)}
.adj-head span.warn{color:var(--danger)}
.adj-row{
  display:flex;align-items:center;gap:6px;margin-bottom:4px;
}
.adj-name{
  flex:1;font-size:12.5px;color:var(--fg);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.adj-name.forced{color:var(--warn);font-weight:700}
.adj-btn{
  font:inherit;font-size:11px;padding:2px 7px;border-radius:6px;cursor:pointer;
  border:1px solid var(--border);background:transparent;color:var(--muted);
  white-space:nowrap;
}
.adj-btn:hover{border-color:var(--accent);color:var(--accent)}
.adj-btn.free{border-color:var(--accent);color:var(--accent)}
.adj-btn.free:hover{background:var(--accent-soft)}
.adj-btn.busy{border-color:#c2410c;color:#c2410c}
.adj-btn.busy:hover{background:#fff1e7}
.adj-btn.undo{border-color:var(--border);color:var(--muted)}
.adj-btn.undo:hover{border-color:var(--danger);color:var(--danger)}
.adj-reason{
  width:100%;margin-top:7px;font:inherit;font-size:11.5px;padding:5px 8px;
  border-radius:7px;border:1px solid var(--border);background:#fff;color:var(--fg);
}
.adj-reason:focus{outline:none;border-color:var(--accent)}

/* 被人工调整过的格子：只给管理员看（普通用户不加 .adj 类） */
.kb td.adj{box-shadow:inset 0 0 0 2px var(--warn)}

/* 提示条 */
#toast{
  position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(14px);
  padding:10px 18px;border-radius:10px;font-size:13px;z-index:200;
  opacity:0;pointer-events:none;transition:all .22s;
  background:var(--card);border:1px solid var(--border);
  box-shadow:0 8px 26px rgba(0,0,0,.16);
}
#toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
#toast.ok{border-color:var(--ok);color:var(--ok)}
#toast.err{border-color:var(--danger);color:var(--danger)}
