/* ===== 优才课务排课系统 样式 ===== */
* { box-sizing: border-box; }
body { margin:0; font-family:"Microsoft YaHei","PingFang SC",sans-serif; background:#f4f6fa; color:#2c3e50; font-size:14px; }
a { color:#2d7ff9; text-decoration:none; }
a:hover { text-decoration:underline; }
code { background:#eef2f7; padding:1px 5px; border-radius:4px; }

/* 后台布局 */
.admin-top { height:56px; background:#1f2b46; color:#fff; display:flex; align-items:center; padding:0 20px; position:sticky; top:0; z-index:20; }
.admin-top .logo { font-size:18px; font-weight:bold; }
.admin-top .right { margin-left:auto; display:flex; align-items:center; gap:14px; font-size:13px; }
.admin-top .right a { color:#cdd6e6; }
.admin-wrap { display:flex; min-height:calc(100vh - 56px); }
.admin-side { width:200px; background:#26324f; color:#cdd6e6; padding:14px 0; flex-shrink:0; }
.admin-side a { display:block; color:#cdd6e6; padding:11px 22px; font-size:14px; }
.admin-side a:hover, .admin-side a.active { background:#2d7ff9; color:#fff; text-decoration:none; }
.admin-side .grp { padding:12px 22px 6px; font-size:12px; color:#7e8aa6; }
.admin-main { flex:1; padding:22px 26px; overflow:auto; }
.card { background:#fff; border-radius:10px; box-shadow:0 1px 6px #0001; padding:20px; margin-bottom:18px; }
.card h3 { margin:0 0 16px; font-size:16px; border-left:4px solid #2d7ff9; padding-left:10px; }

/* 表单 */
.form-line { margin-bottom:14px; }
.form-line label { display:inline-block; width:110px; color:#5a6b85; }
input[type=text], input[type=password], select, textarea {
  padding:8px 10px; border:1px solid #d3dae6; border-radius:6px; width:280px; font-size:14px; font-family:inherit;
}
textarea { width:420px; height:70px; }
.btn { background:#2d7ff9; color:#fff; border:none; padding:9px 20px; border-radius:6px; cursor:pointer; font-size:14px; }
.btn:hover { background:#1c6fe0; }
.btn.gray { background:#95a3bd; }
.btn.red { background:#e0506a; }
.btn.sm { padding:5px 12px; font-size:13px; }
.search-bar { margin-bottom:14px; }
.search-bar input, .search-bar select { width:180px; margin-right:8px; }

/* 表格 */
table.grid { width:100%; border-collapse:collapse; background:#fff; border-radius:8px; overflow:hidden; }
table.grid th { background:#eef2f7; color:#41506b; text-align:left; padding:10px 12px; font-weight:600; border-bottom:1px solid #e3e8f0; }
table.grid td { padding:9px 12px; border-bottom:1px solid #eef1f6; }
table.grid tr:hover td { background:#f7faff; }
.tag { display:inline-block; padding:1px 8px; border-radius:10px; font-size:12px; }
.tag.ok { background:#e3f7ec; color:#1a9e57; }
.tag.off { background:#fde7ec; color:#e0506a; }
.tag.warn { background:#fef3d8; color:#c08a16; }

/* 提示 */
.msg { padding:10px 14px; border-radius:6px; margin-bottom:14px; }
.msg.ok { background:#e3f7ec; color:#1a9e57; }
.msg.err { background:#fde7ec; color:#e0506a; }
.msg.info { background:#e7f0fe; color:#2d6cd4; }

/* 课表 */
.timetable { width:100%; border-collapse:collapse; background:#fff; }
.timetable th, .timetable td { border:1px solid #e1e7f0; padding:6px 8px; text-align:center; vertical-align:top; height:54px; }
.timetable th { background:#eef2f7; }
.timetable .period-col { background:#f7f9fc; width:90px; font-size:13px; }
.cell-ok { background:#f3f9ff; }
.cell-conflict { background:#fde7ec; color:#c0392b; }
.cell-empty { color:#b9c2d4; }
.cs-item { font-size:12px; line-height:1.5; padding:2px 4px; border-radius:4px; margin:1px 0; background:#e8f1ff; }
.cs-item.sup { background:#fff3d6; }

/* 仪表盘 */
.stat-grid { display:flex; flex-wrap:wrap; gap:16px; }
.stat-box { flex:1; min-width:160px; background:#fff; border-radius:10px; padding:18px; box-shadow:0 1px 6px #0001; }
.stat-box .num { font-size:28px; font-weight:bold; color:#2d7ff9; }
.stat-box .lbl { color:#7e8aa6; margin-top:4px; }

/* 前台 */
.front-top { height:52px; background:#2d7ff9; color:#fff; display:flex; align-items:center; padding:0 20px; }
.front-top .logo { font-weight:bold; font-size:16px; }
.front-top .right { margin-left:auto; }
.front-body { max-width:960px; margin:24px auto; padding:0 16px; }
.front-card { background:#fff; border-radius:10px; padding:22px; box-shadow:0 1px 6px #0001; margin-bottom:18px; }

/* 登录 */
.login-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; background:linear-gradient(135deg,#2d7ff9,#1f2b46); }
.login-box { background:#fff; width:360px; border-radius:12px; padding:30px; box-shadow:0 8px 30px #0003; }
.login-box h2 { margin:0 0 6px; }
.login-box .sub { color:#7e8aa6; font-size:13px; margin-bottom:20px; }
.login-box .form-line label { width:100%; margin-bottom:6px; }
.login-box input { width:100%; }
.login-tabs { display:flex; gap:8px; margin-bottom:16px; }
.login-tabs a { flex:1; text-align:center; padding:8px; border-radius:6px; background:#eef2f7; color:#5a6b85; }
.login-tabs a.active { background:#2d7ff9; color:#fff; }
.pager { margin:14px 0; font-size:13px; color:#5a6b85; }
.pager a { margin:0 4px; padding:3px 9px; border:1px solid #d3dae6; border-radius:5px; }
.pager a:hover { background:#eef2f7; text-decoration:none; }
.text-muted { color:#95a3bd; }
.right { float:right; }
.clear { clear:both; }
