/* =============================================================
   排班板：月视图 / 周视图 / 日视图排程板 / 可调配人员面板
   -------------------------------------------------------------
   月视图的表格样式原样沿用参考原型：粘性表头与首列、31px 单元格、
   底部在岗柱状、缺口红色高亮、硬约束冲突红框。
============================================================= */

.board-wrap{
  background:var(--surface);border:1px solid var(--line);border-radius:3px;
  overflow:auto;max-height:64vh;-webkit-overflow-scrolling:touch;
}
table.board{border-collapse:separate;border-spacing:0;font-size:12px}
table.board th,table.board td{padding:0;margin:0}

.hd-day{
  position:sticky;top:0;z-index:20;background:var(--surface);
  border-bottom:1px solid var(--line-strong);border-right:1px solid var(--line);
  width:31px;min-width:31px;text-align:center;padding:5px 0 4px;
}
.hd-day.wk{background:#E7ECEA}
.hd-day.hol{background:var(--amber-wash)}
.hd-day.today{box-shadow:inset 0 3px 0 var(--drape)}
.hd-day .dn{font-family:var(--font-mono);font-size:12px;font-weight:600;line-height:1.15}
.hd-day .dw{font-size:9.5px;color:var(--slate);line-height:1.3}
.hd-day.wk .dw{color:var(--amber)}
.hd-day .rooms{font-family:var(--font-mono);font-size:9px;color:var(--drape);line-height:1.3}
.hd-day.short .rooms{color:var(--crimson);font-weight:700}

.hd-corner{
  position:sticky;left:0;top:0;z-index:30;background:var(--surface);
  border-bottom:1px solid var(--line-strong);border-right:1px solid var(--line-strong);
  width:156px;min-width:156px;text-align:left;padding:6px 10px;
  font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--slate);
  text-transform:uppercase;font-weight:500;
}

td.who{
  position:sticky;left:0;z-index:10;background:var(--surface);
  border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line);
  width:156px;min-width:156px;padding:3px 10px;cursor:pointer;
}
tr:nth-child(even) td.who{background:#FAFBFA}
td.who:hover{background:var(--wash)}
.who .nm{font-weight:600;font-size:12.5px;letter-spacing:-.01em}
.who .meta{font-size:10px;color:var(--slate);font-family:var(--font-mono);letter-spacing:.02em}
.who .bal{float:right;font-family:var(--font-mono);font-size:10px;color:var(--amber);font-weight:600}

td.cell{
  border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  width:31px;min-width:31px;height:26px;text-align:center;vertical-align:middle;
  cursor:pointer;position:relative;
}
tr:nth-child(even) td.cell{background:#FAFBFA}
td.cell.wk{background:#F1F4F2}
tr:nth-child(even) td.cell.wk{background:#EDF1EF}
td.cell.hol{background:#FBF3E6}
td.cell:hover{box-shadow:inset 0 0 0 2px var(--drape2);z-index:5}
td.cell.bad{box-shadow:inset 0 0 0 2px var(--crimson);z-index:6}
td.cell.locked::after{
  content:"";position:absolute;right:1px;top:1px;width:0;height:0;
  border-left:5px solid transparent;border-top:5px solid var(--drape);
}
td.cell.diff{box-shadow:inset 0 0 0 2px var(--amber);z-index:6}
td.cell .chip{display:block;margin:2px 2px}
.board.readonly td.cell{cursor:default}
.board.readonly td.cell:hover{box-shadow:none}

.fill-anim{animation:fill .22s ease-out}
@keyframes fill{from{opacity:0;transform:scale(.72)}to{opacity:1;transform:scale(1)}}

tr.staffing td{border-top:1px solid var(--line-strong)}
tr.staffing td.who{
  font-family:var(--font-mono);font-size:10px;color:var(--slate);
  letter-spacing:.06em;text-transform:uppercase;cursor:default;
}
td.bar{
  border-right:1px solid var(--line);width:31px;min-width:31px;height:52px;
  vertical-align:bottom;padding:0 6px 3px;background:var(--surface);
}
td.bar .col{background:var(--drape2);width:100%;display:block;border-radius:1px 1px 0 0}
td.bar.short .col{background:var(--crimson)}
td.bar .num{font-family:var(--font-mono);font-size:9px;color:var(--slate);text-align:center;display:block;line-height:1.2}
td.bar.short .num{color:var(--crimson);font-weight:700}

/* 图例 */
.legend{display:flex;gap:13px;flex-wrap:wrap;align-items:center;margin:10px 2px 0;font-size:11.5px;color:var(--ink2)}
.legend .lg{display:flex;align-items:center;gap:5px}
.legend .lg .chip{width:22px;text-align:center;margin:0}

/* 单元格菜单（沿用原型） */
.menu{
  position:absolute;z-index:80;background:var(--surface);border:1px solid var(--line-strong);
  border-radius:3px;box-shadow:0 8px 24px rgba(21,36,43,.18);padding:5px;min-width:168px;
}
.menu .mi{
  display:flex;align-items:center;gap:8px;padding:6px 9px;border-radius:2px;font-size:12.5px;
  border:none;background:none;width:100%;text-align:left;color:var(--ink);
}
.menu .mi:hover{background:var(--wash)}
.menu .mi .chip{width:22px;margin:0}
.menu .mi .warn{color:var(--crimson);font-size:11px;margin-left:auto}
.menu .mt{
  font-family:var(--font-mono);font-size:10px;color:var(--slate);
  padding:3px 9px 5px;letter-spacing:.06em;
}
.menu .msep{height:1px;background:var(--line);margin:4px 0}

/* =============================================================
   周视图 —— 横轴展开到时段，能看出跨日夜班的衔接
============================================================= */
.week-board{background:var(--surface);border:1px solid var(--line);border-radius:3px;overflow:auto}
table.week{border-collapse:separate;border-spacing:0;width:100%;font-size:12px;min-width:900px}
table.week th.wk-corner{
  position:sticky;left:0;z-index:30;background:var(--surface);width:150px;min-width:150px;
  border-bottom:1px solid var(--line-strong);border-right:1px solid var(--line-strong);
  padding:6px 10px;font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;
  color:var(--slate);text-transform:uppercase;text-align:left;
}
table.week th.wk-day{
  border-bottom:1px solid var(--line-strong);border-right:1px solid var(--line);
  padding:5px 4px;text-align:center;background:var(--surface);
}
table.week th.wk-day.wk{background:#E7ECEA}
table.week th.wk-day .d1{font-family:var(--font-mono);font-size:13px;font-weight:600}
table.week th.wk-day .d2{font-size:10px;color:var(--slate)}
table.week td.wk-who{
  position:sticky;left:0;z-index:10;background:var(--surface);width:150px;min-width:150px;
  border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line);padding:4px 10px;
}
table.week tr:nth-child(even) td.wk-who{background:#FAFBFA}
table.week td.wk-cell{
  border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:2px;vertical-align:top;height:44px;position:relative;
}
table.week tr:nth-child(even) td.wk-cell{background:#FAFBFA}
table.week td.wk-cell.wk{background:#F1F4F2}
.wk-slot{
  border-radius:2px;font-size:10.5px;padding:2px 5px;margin-bottom:2px;
  font-family:var(--font-mono);line-height:1.4;
}
.wk-slot.D{background:var(--wash);color:var(--drape)}
.wk-slot.E{background:var(--violet-wash);color:var(--violet)}
.wk-slot.N{background:var(--night);color:#DDE9E6}
.wk-slot.B{background:var(--amber-wash);color:var(--amber)}
.wk-slot.V{background:repeating-linear-gradient(45deg,#E4E9E7 0 3px,transparent 3px 6px);color:var(--slate)}
/* 跨日班次：右边缘拉出一条延续线，指向次日 */
.wk-slot.cross{position:relative}
.wk-slot.cross::after{
  content:"→";position:absolute;right:-9px;top:50%;transform:translateY(-50%);
  font-size:9px;color:var(--night);opacity:.6;
}
.wk-rest{color:#C2CCC8;font-size:11px;text-align:center;padding-top:11px}

/* =============================================================
   日视图排程板 —— 手术间 × 时段
   麻醉科主任每天真正在看的那张表，权重最高
============================================================= */
.day-shell{display:flex;gap:15px;align-items:flex-start}
.day-main{flex:1;min-width:0}
.day-side{width:308px;flex-shrink:0}

.or-board{background:var(--surface);border:1px solid var(--line);border-radius:3px;overflow:auto}
table.or{border-collapse:separate;border-spacing:0;width:100%;min-width:760px;font-size:12px}
table.or th.or-corner{
  position:sticky;left:0;top:0;z-index:30;background:var(--surface);
  width:132px;min-width:132px;padding:6px 10px;text-align:left;
  border-bottom:1px solid var(--line-strong);border-right:1px solid var(--line-strong);
  font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--slate);text-transform:uppercase;
}
table.or th.or-h{
  position:sticky;top:0;z-index:20;background:var(--surface);
  border-bottom:1px solid var(--line-strong);border-right:1px solid var(--line);
  padding:5px 6px;font-family:var(--font-mono);font-size:10.5px;color:var(--ink2);
  font-weight:600;text-align:center;letter-spacing:.04em;
}
table.or td.or-room{
  position:sticky;left:0;z-index:10;background:var(--surface);
  width:132px;min-width:132px;padding:5px 10px;
  border-right:1px solid var(--line-strong);border-bottom:1px solid var(--line);
}
table.or tr:nth-child(even) td.or-room{background:#FAFBFA}
.or-room .rn{font-family:var(--font-mono);font-size:12px;font-weight:600}
.or-room .rd{font-size:10.5px;color:var(--slate)}
.or-room .rz{font-size:9.5px;color:var(--drape);font-family:var(--font-mono)}
table.or td.or-slot{
  border-right:1px solid var(--line);border-bottom:1px solid var(--line);
  padding:3px;vertical-align:top;min-width:96px;height:56px;
}
table.or tr:nth-child(even) td.or-slot{background:#FAFBFA}
table.or tr.closed td{background:#F2F4F3;opacity:.62}
.or-case{
  background:var(--wash);border-left:2px solid var(--drape2);border-radius:2px;
  padding:3px 6px;margin-bottom:3px;font-size:11px;line-height:1.45;
}
.or-case.urgent{background:var(--amber-wash);border-left-color:var(--amber)}
.or-case.emerg{background:var(--crimson-wash);border-left-color:var(--crimson)}
.or-case .cn{font-family:var(--font-mono);font-size:10px;color:var(--slate)}
.or-case .cp{font-weight:500;color:var(--ink)}
.or-case .cd{color:var(--slate);font-size:10.5px}
.or-doc{
  display:flex;align-items:center;gap:5px;font-size:11.5px;margin-top:3px;
  padding:2px 5px;background:var(--surface);border:1px solid var(--line);border-radius:2px;
}
.or-doc.none{color:var(--crimson);border-color:var(--crimson-wash);background:var(--crimson-wash)}
/* 资质不匹配：派了人但资质对不上，需要主任人工处理 */
.or-doc.lack{border-color:var(--amber);background:var(--amber-wash)}
.or-doc .dn{font-weight:600}
.or-doc .dt{color:var(--slate);font-size:10px}

/* 可调配人员面板 */
.avail{background:var(--surface);border:1px solid var(--line);border-radius:3px;position:sticky;top:calc(var(--topbar-h) + 12px)}
.avail-hd{padding:11px 13px 9px;border-bottom:1px solid var(--line)}
.avail-hd h3{font-size:13px}
.avail-hd .s{font-size:11.5px;color:var(--slate);margin-top:3px;line-height:1.5}
.avail-bd{max-height:min(62vh,640px);overflow-y:auto;padding:4px 0}
.lvl-hd{
  display:flex;align-items:center;gap:7px;padding:7px 13px 4px;
  font-family:var(--font-mono);font-size:10px;letter-spacing:.08em;color:var(--slate);
  text-transform:uppercase;position:sticky;top:0;background:var(--surface);z-index:2;
}
.lvl-tag{font-family:var(--font-mono);font-size:10px;font-weight:700;padding:1px 5px;border-radius:2px}
.lvl-tag.L1{background:var(--wash);color:var(--drape)}
.lvl-tag.L2{background:var(--amber-wash);color:var(--amber)}
.lvl-tag.L3{background:var(--violet-wash);color:var(--violet)}
.lvl-tag.L4{background:var(--crimson-wash);color:var(--crimson)}
.lvl-hd .cnt{margin-left:auto;font-family:var(--font-mono)}
.av-i{padding:7px 13px;border-bottom:1px dotted var(--line);display:flex;gap:9px;align-items:flex-start}
.av-i:hover{background:#F7F9F8}
.av-b{flex:1;min-width:0}
.av-n{font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.av-m{font-size:10.5px;color:var(--slate);font-family:var(--font-mono);margin-top:2px}
.av-q{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
.av-q i{
  font-style:normal;font-size:10px;padding:0 5px;border-radius:2px;
  background:var(--wash);color:var(--drape);line-height:16px;
}
.av-q i.miss{background:#EDEFEE;color:var(--slate);text-decoration:line-through}
.av-w{font-size:10.5px;color:var(--amber);margin-top:4px;line-height:1.45}
.av-w.bad{color:var(--crimson)}
.av-a{flex-shrink:0}

/* 日视图顶部日期选择 */
.day-nav{display:flex;align-items:center;gap:9px;margin-bottom:13px;flex-wrap:wrap}
.day-nav .dt{font-family:var(--font-mono);font-size:16px;font-weight:600}
.day-nav .dw{font-size:12.5px;color:var(--slate)}
.day-nav .stats{margin-left:auto;display:flex;gap:14px;font-size:12px;color:var(--slate);flex-wrap:wrap}
.day-nav .stats b{font-family:var(--font-mono);color:var(--ink);font-size:14px;font-weight:600}
