/* 参考智慧校园现有排课工作台，限定本页样式。 */
/* 单页试用：滑块固定 8px、命中区域固定 12px，仅反馈颜色。 */
html, body, body * {
  scrollbar-width: auto;
}
::-webkit-scrollbar {
  width: 12px;
  height: 12px;
}
::-webkit-scrollbar-track {
  background: transparent;
}
::-webkit-scrollbar-thumb {
  min-height: 32px;
  min-width: 32px;
  border: 2px solid transparent;
  border-radius: 999px;
  background: #cbd5e1;
  background-clip: padding-box;
}
/* 仅鼠标真正指向滑块时反馈，避免跨容器移动反复变化。 */
::-webkit-scrollbar-thumb:hover,
::-webkit-scrollbar-thumb:active {
  background-color: #788da9;
}
::-webkit-scrollbar-button {
  display: none;
  width: 0;
  height: 0;
}
::-webkit-scrollbar-corner {
  background: transparent;
}
/* Firefox 保留原生拖动与键盘行为，使用细条与同色系反馈。 */
@supports not selector(::-webkit-scrollbar) {
  html, body, body * {
    scrollbar-width: thin;
    scrollbar-color: #cbd5e1 transparent;
  }
}
:root{--blue:#3473ff;--line:#e6ebf5}body{background:#eef0f7}header{background:linear-gradient(110deg,#f4faf7,#f1f7ff 65%,#fff)}main{padding:20px 24px;margin-top:20px;min-width:0}.campus-tabs{display:flex;align-items:center;gap:24px;background:#f2f5fc;margin:-20px -24px 22px;padding:12px 18px;font-size:13px;color:#77869c}.campus-tabs strong{color:var(--blue);font-weight:500}.top h1{font-size:20px;font-weight:500}.semester{margin-top:20px;gap:20px}.semester label{display:flex;gap:14px;align-items:center}.semester select{min-width:245px;padding:10px 14px}.toolbar{gap:10px;margin:20px 0 12px}.toolbar a{text-decoration:none}.btn{padding:8px 16px;border-radius:3px}.toolbar .save{background:#52bd32;color:#fff;border-color:#52bd32}.draft-status{display:flex;justify-content:space-between;gap:16px;color:#7c8ca3;font-size:12px;border-top:1px solid var(--line);padding:10px 0 12px}.work{grid-template-columns:225px minmax(0,1fr);gap:24px}.work>section{min-width:0}.roster{background:#fbfcff;max-height:760px}.roster button{padding:16px;border-bottom:0}.roster .active{background:#edf3ff;border-left:3px solid var(--blue)}.filters{gap:10px}.filters input{min-width:210px}.timetable th{background:#f7f9fe;color:#7a899e;text-align:center;font-weight:500}.timetable td{background:#fff;height:92px}.timetable .course{background:#f5f8ff;border-left:2px solid #91b3ff;padding:7px 8px}.timetable .course.locked{background:#fff8ec;border-left-color:#e6b250}.timetable .course strong{font-size:14px;font-weight:500}.empty{opacity:.5}.prototype-caption{font-size:12px;color:#8c99ab;margin:24px 0 0}.pool{border-top:1px solid var(--line)}.focus header{display:none}.focus main{margin:0!important}.focus .campus-tabs{display:none}@media(max-width:1100px){.work{grid-template-columns:180px minmax(0,1fr)}.toolbar{gap:8px}.toolbar .btn{padding:7px 11px}}@media(max-width:760px){.work{grid-template-columns:1fr}.roster{max-height:200px}.draft-status{flex-wrap:wrap}}

/* 课程缓冲区 */
.course-buffer{padding-top:12px;margin-top:12px;border-top:0}.course-buffer h3{font-size:14px;margin:0 0 7px;font-weight:600}.buffer-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;padding:15px;border:1px solid #ededed;border-radius:4px}.buffer-cards .buffer-card{display:block;min-width:0;width:100%;padding:6px 10px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid #ededed;border-radius:3px;background:#fafafa;color:#24364f;font-size:13px;line-height:18px;cursor:grab}.buffer-cards .buffer-card:disabled{color:#b7bac2;cursor:default;opacity:1}.buffer-cards .buffer-card.selected{border-color:#3473ff;background:#edf3ff;color:#3473ff}.buffer-cards .buffer-card:focus-visible{outline:2px solid #3473ff;outline-offset:2px}.timetable td.buffer-drop{outline:2px solid #3473ff;outline-offset:-2px;background:#edf3ff}@media(max-width:1100px){.buffer-cards{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:760px){.buffer-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}

.schedule-object-filters{display:flex;align-items:center;gap:6px;margin-bottom:8px}
.schedule-object-filters select{max-width:48%;flex:0 0 auto}
.schedule-object-filters input{flex:1;min-width:0;width:100%;padding-inline:7px}

.schedule-class-roster summary{cursor:pointer;padding:7px 8px;color:#425875;overflow-wrap:anywhere}
.schedule-class-roster summary::marker{color:#8b9bb0}
.schedule-class-roster details details>summary{padding-left:16px}
.schedule-class-roster details button[data-object]{padding:8px 8px 8px 29px;overflow-wrap:anywhere}
.schedule-class-roster button.class-pending,.schedule-class-roster button.class-pending.active{color:#c7352e}
.schedule-class-roster .class-hours{white-space:nowrap;font-variant-numeric:tabular-nums}
