/* 网页排班系统 - 全站样式（桌面 + 手机自适应） */
* { box-sizing: border-box; margin: 0; padding: 0; }

:root {
  --c-early: #ffffff;
  --c-mid: #F4CCCC;
  --c-late: #92D050;
  --c-rest: #FFF2CC;
  --c-annual: #D9D9D9;
  --c-name-bg: #DCE6F1;
  --c-primary: #2f6fb3;
  --c-border: #c9d2dd;
  --c-confirmed: #d8e9d0;
}

body {
  font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
  background: #f2f5f9;
  color: #233;
  font-size: 14px;
}

/* ---------- 顶栏 ---------- */
.topbar {
  display: flex; justify-content: space-between; align-items: center;
  background: #24425f; color: #fff; padding: 10px 14px;
  flex-wrap: wrap; gap: 8px;
}
.topbar-left, .topbar-right { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.app-title { font-weight: 700; font-size: 16px; letter-spacing: 1px; }
.nav-link { color: #cfe0f2; text-decoration: none; padding: 4px 8px; border-radius: 4px; }
.nav-link.active, .nav-link:hover { background: rgba(255,255,255,.15); color: #fff; }
.topbar select {
  padding: 5px 8px; border-radius: 4px; border: none; font-size: 14px;
}

/* ---------- 工具栏 ---------- */
.toolbar {
  display: flex; flex-wrap: wrap; gap: 10px 24px;
  padding: 10px 14px; background: #fff; border-bottom: 1px solid var(--c-border);
}
.toolbar.column { flex-direction: column; align-items: stretch; }
.tool-group { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.tool-group > label { font-weight: 600; color: #456; }
.tilde { color: #89a; }
.checkbox { display: flex; align-items: center; gap: 4px; color: #456; }
.hint { color: #7a8aa0; font-size: 12px; }
.hint.warn { color: #b06000; }

input[type="date"], select {
  padding: 6px 8px; border: 1px solid var(--c-border); border-radius: 4px;
  font-size: 14px; background: #fff; color: #233;
}

.btn {
  padding: 7px 14px; border: 1px solid var(--c-border); border-radius: 4px;
  background: #fff; cursor: pointer; font-size: 14px; color: #234;
}
.btn:hover { background: #eef4fb; }
.btn:disabled { opacity: .5; cursor: not-allowed; }
.btn-primary { background: var(--c-primary); border-color: var(--c-primary); color: #fff; }
.btn-primary:hover { background: #275e99; }
.btn-ghost { background: transparent; }
.btn-danger { background: #c0392b; border-color: #c0392b; color: #fff; }
.btn-danger:hover { background: #a93226; }
.btn-sm { padding: 3px 10px; font-size: 12px; }
.mnt-arc {
  display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 6px 8px; margin-top: 6px; border: 1px solid var(--c-border);
  border-radius: 4px; background: #fafbfc; font-size: 13px;
}
.mnt-arc-info { flex: 1; min-width: 0; }

/* ---------- 看板表格 ---------- */
.board-wrap { padding: 12px 14px 30px; }
.board-scroll {
  overflow-x: auto; background: #fff; border: 1px solid var(--c-border);
  border-radius: 6px; -webkit-overflow-scrolling: touch;
}
table.board { border-collapse: collapse; min-width: 100%; }
table.board th, table.board td {
  border: 1px solid var(--c-border);
  padding: 4px 6px; text-align: center; white-space: nowrap;
  font-size: 13px; min-width: 52px; height: 34px;
}
table.board th {
  background: #eaf1f8; position: sticky; top: 0; z-index: 3;
  font-weight: 600; color: #345;
}
table.board th .wd { display: block; font-weight: 400; color: #789; font-size: 11px; }
table.board th.confirmed { background: var(--c-confirmed); }
table.board th.confirmed::after { content: " ★"; color: #2e7d32; font-size: 11px; }
td.name, th.name {
  background: var(--c-name-bg); font-weight: 600; text-align: center;
  position: sticky; left: 0; z-index: 2; min-width: 72px;
}
th.name { z-index: 4; }
td.shift { cursor: pointer; }
td.shift:hover { outline: 2px solid #6ea3d8; outline-offset: -2px; }
tr.group-row td {
  background: #f0f4f9; font-weight: 700; color: #456; text-align: left;
  padding-left: 10px; letter-spacing: 2px;
}
tr.sep-row td { border-left: none; border-right: none; background: transparent; height: 8px; }

.shift-早班 { background: var(--c-early); }
.shift-中班 { background: var(--c-mid); }
.shift-晚班 { background: var(--c-late); }
.shift-休 { background: var(--c-rest); font-weight: 700; }
.shift-年假 { background: var(--c-annual); color: #556; }
td.empty { background: #fafbfc; color: #c3ccd6; }

/* ---------- 周分隔与范围点选 ---------- */
/* 每周一列加粗左分隔线，周与周之间一目了然 */
table.board th.week-start, table.board td.week-start { border-left: 2px solid #7d97b8; }
/* 交替周淡蓝底色（叠在班次底色上，不互相覆盖） */
table.board .wk-b { box-shadow: inset 0 0 0 999px rgba(47, 111, 179, .05); }
/* 表头点选发布范围的高亮 */
table.board th.dayhead { cursor: pointer; }
table.board th.dayhead:hover { outline: 2px solid #6ea3d8; outline-offset: -2px; }
table.board th.in-range { background: #cfdfef; }
table.board th.sel-edge { background: #a9c6e4; }
table.board th.sel-pending { outline: 2px dashed #2f6fb3; outline-offset: -2px; }
table.board td.col-sel { box-shadow: inset 0 0 0 999px rgba(47, 111, 179, .12); }

/* ---------- 图例 ---------- */
.legend { display: flex; align-items: center; gap: 10px; margin-top: 10px; flex-wrap: wrap; }
.chip { padding: 3px 12px; border-radius: 4px; border: 1px solid var(--c-border); font-size: 12px; }
.chip-early { background: var(--c-early); }
.chip-mid { background: var(--c-mid); }
.chip-late { background: var(--c-late); }
.chip-rest { background: var(--c-rest); }
.chip-annual { background: var(--c-annual); }

/* ---------- 生成页 ---------- */
.gen-info { margin: 12px 14px 0; padding: 12px 14px; background: #fff; border: 1px solid var(--c-border); border-radius: 6px; }
.info-line { margin-bottom: 6px; }
.info-line.small { font-size: 13px; color: #567; }
.actions { display: flex; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; }
table.preview td.cell-new { outline: 1px dashed #d9a300; outline-offset: -3px; }

/* ---------- 弹层 ---------- */
.modal-mask {
  position: fixed; inset: 0; background: rgba(20, 35, 55, .45);
  display: flex; align-items: center; justify-content: center; z-index: 50;
}
.modal-mask[hidden] { display: none !important; }
.modal {
  background: #fff; border-radius: 8px; padding: 18px 20px;
  width: min(360px, 92vw); box-shadow: 0 8px 30px rgba(0,0,0,.18);
}
.modal h3 { margin-bottom: 4px; }
.modal-sub { color: #678; font-size: 13px; margin-bottom: 14px; }
.shift-options { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 16px; }
.shift-opt {
  padding: 10px 0; text-align: center; border: 1px solid var(--c-border);
  border-radius: 6px; cursor: pointer; font-size: 14px; user-select: none;
}
.shift-opt:hover { border-color: var(--c-primary); }
.shift-opt.cur { outline: 2px solid var(--c-primary); font-weight: 700; }
.modal-actions { display: flex; justify-content: flex-end; }

/* ---------- 钉钉同步弹层 ---------- */
.dd-modal { width: min(520px, 94vw); }
.dd-range { display: flex; align-items: center; gap: 8px; margin-bottom: 10px; }
.dd-preview {
  background: #f6f9fc; border: 1px solid var(--c-border); border-radius: 6px;
  padding: 10px 12px; font-size: 13px; line-height: 1.8;
  min-height: 48px; max-height: 42vh; overflow: auto; margin-bottom: 14px;
}
.dd-preview .small, .dd-result .small { color: #678; font-size: 12px; }
.dd-err { color: #c0392b; }
.dd-warn { color: #b06000; }
.dd-ok { color: #2e7d32; font-weight: 600; }

/* ---------- Toast ---------- */
.toast {
  position: fixed; left: 50%; bottom: 36px; transform: translateX(-50%);
  background: rgba(30, 45, 65, .92); color: #fff; padding: 10px 18px;
  border-radius: 6px; z-index: 99; max-width: 88vw; font-size: 14px;
}
.toast.err { background: rgba(160, 40, 40, .95); }

/* ---------- 登录页 ---------- */
.login-body {
  display: flex; align-items: center; justify-content: center; min-height: 100vh;
  background: linear-gradient(135deg, #24425f, #35618f);
}
.login-card {
  background: #fff; padding: 34px 36px; border-radius: 10px; width: min(340px, 92vw);
  box-shadow: 0 12px 40px rgba(0,0,0,.25); text-align: center;
}
.login-card h1 { font-size: 22px; margin-bottom: 6px; color: #24425f; }
.login-tip { color: #789; margin-bottom: 18px; }
.login-card input {
  width: 100%; padding: 11px 12px; border: 1px solid var(--c-border);
  border-radius: 6px; font-size: 15px; margin-bottom: 12px; text-align: center;
}
.login-card button {
  width: 100%; padding: 11px 0; border: none; border-radius: 6px;
  background: var(--c-primary); color: #fff; font-size: 15px; cursor: pointer;
}
.login-card button:hover { background: #275e99; }
.login-error { color: #c0392b; font-size: 13px; margin: -4px 0 10px; }

/* ---------- 手机 ---------- */
@media (max-width: 640px) {
  body { font-size: 13px; }
  .toolbar { padding: 8px 10px; }
  .tool-group { gap: 6px; }
  input[type="date"] { padding: 7px 4px; }
  table.board th, table.board td { min-width: 44px; padding: 3px 4px; font-size: 12px; }
  td.name, th.name { min-width: 60px; }
  .btn { padding: 8px 10px; }
}

/* ---------- 对号表 ---------- */
.dh-table {
  border-collapse: collapse; background: #fff; font-size: 13px;
  min-width: 100%;
}
.dh-table th, .dh-table td {
  border: 1px solid var(--c-border); padding: 6px 8px; text-align: center;
  white-space: nowrap;
}
.dh-table thead th { background: #eef3f9; position: sticky; top: 0; z-index: 2; }
.dh-table thead tr:nth-child(2) th { top: 33px; }
.dh-store-h, .dh-week-h {}
.dh-store-h { min-width: 90px; }
.dh-lv-h { min-width: 44px; }
.dh-date-h { min-width: 64px; font-weight: 700; }
.dh-week-h { font-weight: 400; color: #678; font-size: 12px; }
.dh-table th.dh-week-h { cursor: pointer; }
.dh-table th.dh-week-h:hover { color: var(--c-primary, #2e6da4); }
.dh-table th.dh-week-h.pick {
  color: #fff; background: #2e6da4; font-weight: 700;
  border-radius: 4px; box-shadow: 0 0 0 2px #9cc3e8 inset;
}
.dh-table td.dh-store { text-align: left; font-weight: 600; background: #f8fafc; }
.dh-table td.dh-lv { color: #678; font-size: 12px; background: #f8fafc; }
.dh-cell { cursor: pointer; min-width: 74px; }
.dh-cell:hover { outline: 2px solid var(--c-primary); outline-offset: -2px; }
.dh-cell.tag-cover { background: #ffc000; font-weight: 600; }
.dh-cell.tag-plus1 { background: #fff3f0; color: #c0392b; font-weight: 600; }
.dh-cell.tag-none { color: #b06000; background: #fbf7ef; }
.dh-cell.tag-none .none-mark { font-size: 12px; }
/* 标色：黄=主上中班，橘=主上晚班（mk- 在 tag- 后定义，覆盖底色） */
.dh-cell.mk-yellow { background: #ffe95c; font-weight: 600; }
.dh-cell.mk-orange { background: #ffc000; font-weight: 600; }
.dh-cell .empty-mark { color: #c4cedb; }
.dh-cell.locked { box-shadow: inset 0 0 0 2px #4a90d9; }
.dh-cell.locked::after { content: '✋'; position: absolute; margin-left: 4px; font-size: 11px; }
.dh-cell { position: relative; }
.plus1-mark {
  display: inline-block; margin-left: 4px; background: #c0392b; color: #fff;
  border-radius: 3px; font-size: 11px; padding: 0 4px; vertical-align: 1px;
}
.dh-note {
  margin-top: 10px; padding: 8px 12px; background: #eef6ee; border: 1px solid #bfe0bf;
  border-radius: 6px; color: #2e6b2e; font-size: 13px;
}

/* 弹层通用头/脚（对号表弹窗用） */
.modal-head {
  display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 10px; font-weight: 700; font-size: 15px;
}
.modal-x {
  border: none; background: none; font-size: 22px; line-height: 1;
  cursor: pointer; color: #889; padding: 0 2px;
}
.modal-foot { display: flex; justify-content: flex-end; gap: 8px; margin-top: 14px; }

/* 格子编辑弹窗 */
.dh-cell-modal { width: min(440px, 94vw); }
.dh-cell-hint {
  color: #678; font-size: 12.5px; line-height: 1.6; margin-bottom: 10px;
  background: #f6f9fc; border-radius: 6px; padding: 8px 10px;
}
.dh-cell-list {
  display: flex; flex-wrap: wrap; gap: 6px 12px; max-height: 44vh;
  overflow: auto; padding: 4px 2px;
}
.dh-chk { display: inline-flex; align-items: center; gap: 5px; font-size: 14px; }
.dh-chk.extra { color: #b06000; font-weight: 600; }
.dh-none-tip { width: 100%; color: #b06000; font-size: 13px; }
.dh-auto-opt {
  width: 100%; padding: 6px 8px; margin-bottom: 4px;
  background: #eef4ff; border: 1px solid #b9ccf5; border-radius: 6px;
  color: #2456b0; cursor: pointer; font-size: 13px;
}
.dh-auto-opt:hover { background: #dfe9ff; }
.dh-auto-opt b { color: #1d4a9e; }
.dh-add-input {
  width: 100%; margin-top: 6px; padding: 7px 9px;
  border: 1px solid var(--c-border); border-radius: 6px; font-size: 13px;
}

/* 规则设置弹窗 */
.dh-cfg-modal { width: min(860px, 96vw); max-height: 92vh; display: flex; flex-direction: column; }
.dh-cfg-body { overflow: auto; flex: 1; }
.dh-cfg-global {
  display: flex; flex-wrap: wrap; gap: 8px 18px; align-items: center;
  background: #f6f9fc; border-radius: 6px; padding: 10px 12px; margin-bottom: 12px;
  font-size: 13px; color: #345;
}
.dh-cfg-global label { display: inline-flex; align-items: center; gap: 6px; }
.dh-cfg-global input { padding: 6px 8px; border: 1px solid var(--c-border); border-radius: 6px; }
.dh-cfg-tip { width: 100%; color: #678; font-size: 12px; }
.dh-cfg-table { border-collapse: collapse; width: 100%; font-size: 13px; }
.dh-cfg-table th, .dh-cfg-table td {
  border: 1px solid var(--c-border); padding: 5px 6px; text-align: left;
}
.dh-cfg-table thead th { background: #eef3f9; }
.dh-cfg-name { font-weight: 600; white-space: nowrap; }
.dh-cfg-table input[type="text"], .dh-cfg-table select {
  width: 100%; padding: 5px 7px; border: 1px solid var(--c-border); border-radius: 5px;
  font-size: 13px; box-sizing: border-box;
}
.dh-cfg-table td:nth-child(2) select { width: 68px; }
.dh-cfg-backup { color: #345; }

/* ---------- 规则设置（卡片式） ---------- */
.dh-cfg-tip2 {
  background: #eef4fb; border: 1px solid #cfe0f2; color: #2a5580;
  border-radius: 6px; padding: 8px 12px; font-size: 13px; line-height: 1.6;
  margin-bottom: 10px;
}
.dh-cfg-global { display: flex; flex-wrap: wrap; gap: 8px 18px; align-items: center; font-size: 13px; color: #345; margin-bottom: 12px; }
.dh-cfg-global label { display: inline-flex; align-items: center; gap: 6px; }
.dh-cfg-global input[type="text"] { padding: 6px 8px; border: 1px solid var(--c-border); border-radius: 6px; }
.dh-cfg-adv { width: 100%; }
.dh-cfg-adv summary { cursor: pointer; color: #5a7ba6; font-size: 13px; user-select: none; }
.dh-cfg-adv label { margin: 8px 0 0 16px; }
.dh-store-card {
  border: 1px solid var(--c-border); border-radius: 8px; margin-bottom: 8px;
  background: #fff; overflow: hidden;
}
.dh-sc-head {
  display: flex; align-items: center; gap: 10px; padding: 9px 12px;
  cursor: pointer; user-select: none; background: #fafcfe;
}
.dh-sc-head:hover { background: #f2f7fc; }
.dh-sc-name { font-weight: 700; font-size: 14px; min-width: 72px; }
.dh-lv-badge {
  font-size: 11px; padding: 2px 8px; border-radius: 10px; white-space: nowrap;
  background: #eef2f7; color: #567;
}
.dh-lv-badge.lv3 { background: #fde8e8; color: #b03030; font-weight: 700; }
.dh-lv-badge.lv2\.5 { background: #fdeffd; color: #a04090; }
.dh-lv-badge.lv2 { background: #fff3dd; color: #a07020; }
.dh-lv-badge.lv1\.5 { background: #eef8ee; color: #408040; }
.dh-sc-sum { color: #678; font-size: 12.5px; flex: 1; }
.dh-sc-arrow { color: #889; font-size: 12px; }
.dh-sc-body { padding: 10px 14px 14px; border-top: 1px dashed var(--c-border); }
.dh-sc-row { margin-bottom: 10px; }
.dh-sc-row > label { display: block; font-size: 12px; color: #678; margin-bottom: 6px; }
.dh-chips { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.dh-chip {
  display: inline-flex; align-items: center; gap: 4px;
  background: #eef4fb; border: 1px solid #cfe0f2; color: #2a5580;
  border-radius: 12px; padding: 3px 8px; font-size: 13px; font-weight: 600;
}
.dh-chip .chip-x {
  border: none; background: none; color: #889; cursor: pointer;
  font-size: 14px; line-height: 1; padding: 0;
}
.dh-chip .chip-x:hover { color: #c0392b; }
.chip-add, .dh-bk-add select {
  padding: 4px 6px; border: 1px dashed var(--c-border); border-radius: 6px;
  font-size: 12.5px; color: #567; background: #fff;
}
.dh-priority-list { list-style: none; margin: 0 0 6px; padding: 0; max-height: 240px; overflow: auto; }
.dh-priority-list li {
  display: flex; align-items: center; gap: 8px; padding: 5px 6px;
  border-bottom: 1px dashed #eef1f5; font-size: 13.5px;
}
.dh-priority-list li .ord {
  width: 20px; height: 20px; border-radius: 50%; background: #eef4fb;
  color: #2a5580; font-size: 11px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center; flex: none;
}
.dh-priority-list li:first-child .ord { background: #2e6da4; color: #fff; }
.dh-priority-list li .nm { flex: 1; font-weight: 600; }
.dh-priority-list .mv, .dh-priority-list .rm {
  border: 1px solid var(--c-border); background: #fff; border-radius: 5px;
  cursor: pointer; font-size: 12px; padding: 2px 7px; color: #567;
}
.dh-priority-list .mv:hover:not(:disabled) { border-color: var(--c-primary); color: var(--c-primary); }
.dh-priority-list .mv:disabled { opacity: .35; cursor: default; }
.dh-priority-list .rm:hover { border-color: #c0392b; color: #c0392b; }
.dh-bk-add { display: flex; gap: 8px; align-items: center; }
.dh-bk-add input { flex: 1; padding: 6px 8px; border: 1px solid var(--c-border); border-radius: 6px; font-size: 12.5px; }

/* ---------- 人员上号压力统计 ---------- */
.dh-load-box {
  margin-top: 14px; background: #fff; border: 1px solid var(--c-border);
  border-radius: 10px; padding: 14px 16px;
}
.dh-load-title { font-weight: 700; font-size: 14px; margin-bottom: 12px; }
.dh-load-sub { font-weight: 400; font-size: 12px; color: #789; margin-left: 10px; }
.dh-load-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
  gap: 10px;
}
.dh-load-item {
  border: 1px solid #eef1f5; border-radius: 8px; padding: 8px 10px;
  background: #fafcfe;
}
.dh-load-item.warm { background: #fff8ef; border-color: #f5dfb8; }
.dh-load-item.hot { background: #fdeeee; border-color: #f0c4c4; }
.dh-load-head { display: flex; justify-content: space-between; align-items: baseline; }
.dh-load-name { font-weight: 700; font-size: 13.5px; }
.dh-load-num { font-weight: 700; font-size: 14px; color: #2e6da4; }
.dh-load-item.warm .dh-load-num { color: #a07020; }
.dh-load-item.hot .dh-load-num { color: #b03030; }
.dh-load-bar {
  height: 6px; background: #eef2f7; border-radius: 3px; margin: 6px 0 5px; overflow: hidden;
}
.dh-load-bar i { display: block; height: 100%; background: #7fa8c9; border-radius: 3px; }
.dh-load-item.warm .dh-load-bar i { background: #d9a24a; }
.dh-load-item.hot .dh-load-bar i { background: #c0504d; }
.dh-load-detail { font-size: 11.5px; color: #789; }

/* ---------- 当日上号统计弹窗 ---------- */
.dh-day-modal { width: 520px; max-width: 92vw; }
.dh-day-body { padding: 14px 18px 18px; max-height: 62vh; overflow: auto; }
.dh-day-sum {
  font-size: 13px; color: #345; background: #f6f9fc;
  border-radius: 6px; padding: 8px 10px; margin-bottom: 12px; line-height: 1.7;
}
.dh-day-sum b { color: #2e6da4; font-size: 14px; }
.dh-day-lvrow {
  display: flex; align-items: baseline; gap: 8px; padding: 7px 2px;
  border-bottom: 1px dashed #eef1f5; font-size: 13px;
}
.dh-day-lvrow:last-child { border-bottom: none; }
.dh-day-lvrow .dh-lv-badge { flex: none; }
.dh-day-lvnum { font-weight: 700; flex: none; min-width: 42px; }
.dh-day-stores { color: #567; line-height: 1.6; }

/* 日期过滤高亮 */
.dh-table th.dh-date-h { cursor: pointer; }
.dh-table th.dh-date-h:hover { color: var(--c-primary, #2e6da4); }
.dh-table th.dh-date-h.active {
  background: #2e6da4; color: #fff; border-radius: 4px 4px 0 0;
}

/* ---------- 钉钉同步弹窗 tab / 反向拉取 ---------- */
.dd-tabs { display: flex; gap: 6px; margin-bottom: 12px; }
.dd-tab {
  border: 1px solid var(--c-border); background: #fff; color: #567;
  border-radius: 7px; padding: 6px 16px; font-size: 13px; cursor: pointer;
}
.dd-tab.active { background: #2e6da4; border-color: #2e6da4; color: #fff; font-weight: 600; }
.dd-changes {
  max-height: 180px; overflow: auto; border: 1px solid #eef1f5; border-radius: 6px;
  padding: 6px 10px; font-size: 12px; color: #456; line-height: 1.7;
  background: #fafcfe;
}
.dd-changes s { color: #b06; }

/* ---- 手动指定弹窗：线上/线下/其他 分组 ---- */
.dh-grp-title {
  width: 100%; display: flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 600; color: #5a6472;
  margin: 8px 0 3px; letter-spacing: 1px;
}
.dh-grp-title:first-child { margin-top: 0; }
.dh-grp-title .dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }
.dot-online { background: #2e9e5b; }
.dot-offline { background: #e08600; }
.dot-other { background: #9aa4b0; }
.dh-grp-body { width: 100%; display: flex; flex-wrap: wrap; gap: 6px 14px; }

/* 格子编辑弹窗·标色区 */
.dh-mark-row { display: flex; align-items: center; gap: 12px; padding: 10px 14px 0; font-size: 13px; flex-wrap: wrap; }
.dh-mark-row .dh-mark-label { color: #556; font-weight: 600; }
.dh-mark-row label { display: inline-flex; align-items: center; gap: 3px; cursor: pointer; }
.dh-mark-row .mk-swatch { display: inline-block; width: 12px; height: 12px; border-radius: 3px; border: 1px solid rgba(0,0,0,.15); }
.mk-swatch.sw-yellow { background: #ffe95c; }
.mk-swatch.sw-orange { background: #ffc000; }
.dh-mark-state { color: #889; font-size: 12px; }
.dh-mark-row .btn { padding: 2px 10px; font-size: 12px; }

/* ---------- 人员管理弹窗 ---------- */
.staff-modal { min-width: 480px; max-width: 560px; }
.staff-groups { display: flex; flex-direction: column; gap: 10px; max-height: 46vh; overflow-y: auto; padding: 2px; }
.staff-grp { border: 1px solid #e3e7ee; border-radius: 8px; padding: 8px 10px; }
.staff-grp-title { font-weight: 600; font-size: 13px; color: #4a5568; margin-bottom: 6px; }
.staff-row { display: flex; align-items: center; gap: 8px; padding: 3px 2px; }
.staff-name { flex: 1; font-size: 14px; }
.staff-inactive { color: #b0b8c4; text-decoration: line-through; }
.btn-mini { padding: 2px 10px; font-size: 12px; }
.staff-add { display: flex; gap: 8px; align-items: center; margin-top: 12px; padding-top: 10px; border-top: 1px dashed #e3e7ee; }
.staff-add input[type="text"] { flex: 1; }
.staff-add select { padding: 6px 8px; border: 1px solid #d7dde5; border-radius: 6px; }
