.workload-calendar-container {
  padding: 16px;
}
.page-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 16px;
}
.controls { display: flex; gap: 16px; align-items: center; flex-wrap: wrap; }
.view-switch button, .date-nav button, .filters select, .date-nav .today {
  padding: 6px 10px; border: 1px solid #e5e7eb; border-radius: 6px; background: #fff; cursor: pointer;
}
.view-switch button.active { background: #111827; color: #fff; }
.month-label { margin: 0 8px; font-weight: 600; }

.calendar-section { background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; }
.weekdays { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; margin-bottom: 6px; color: #6b7280; font-size: 12px; }
.weekdays .weekday { text-align: center; }
.calendar-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 6px; }
.day { min-height: 110px; border: 1px solid #f3f4f6; border-radius: 8px; padding: 6px; background: #fafafa; display: flex; flex-direction: column; cursor: pointer; }
.day.today { outline: 2px solid #2563eb; }
.day.selected { outline: 2px solid #16a34a; background: #f0fdf4; }
.day.other-month { opacity: .45; }
.date-label { font-size: 12px; color: #6b7280; margin-bottom: 4px; }
.tasks { display: flex; flex-direction: column; gap: 4px; }
.task-chip { display: flex; justify-content: space-between; gap: 6px; padding: 4px 6px; border-radius: 6px; background: #eef2ff; color: #1f2937; font-size: 12px; border: 1px solid #e0e7ff; }
.task-chip.overdue { background: #fee2e2; border-color: #fecaca; }
.task-chip.high { background: #fef3c7; border-color: #fde68a; }
.task-title { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 140px; }
.assignee { color: #6b7280; min-width: 56px; text-align: right; }
.no-task { color: #d1d5db; text-align: center; }

.week-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 8px; }
.week-day { border: 1px solid #f3f4f6; border-radius: 8px; padding: 8px; background: #fff; cursor: pointer; }
.week-day.today { outline: 2px solid #2563eb; }
.week-day.selected { outline: 2px solid #16a34a; background: #f0fdf4; }

.day-panel { border: 1px solid #e5e7eb; border-radius: 8px; padding: 12px; background: #fff; }
.day-panel .date-label.large { font-size: 18px; font-weight: 600; margin-bottom: 10px; }
.task-row { display: grid; grid-template-columns: 2fr 2fr 1fr auto; gap: 8px; align-items: center; padding: 8px; border: 1px solid #f3f4f6; border-radius: 8px; }
.task-row + .task-row { margin-top: 6px; }
.task-row.overdue { background: #fff1f2; }
.priority.high { color: #b45309; font-weight: 600; }

.status-board { margin-top: 16px; }
.status-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.status-item { border: 1px solid #e5e7eb; border-radius: 8px; padding: 10px; background: #fff; }
.status-item.idle { background: #ecfeff; }
.status-item.busy { background: #fff7ed; }
.status-item.abnormal { background: #fef2f2; }
.status-item .name { font-weight: 600; }
.status-item .meta { color: #6b7280; font-size: 12px; margin-top: 4px; }
.status-item .label { margin-top: 4px; font-size: 12px; }

.filters .overdue-toggle { display: inline-flex; align-items: center; gap: 6px; margin-left: 8px; font-size: 13px; color: #374151; }

@media (max-width: 768px) {
  .calendar-grid { grid-template-columns: repeat(7, 1fr); }
  .task-title { max-width: 100px; }
}
.tasks .more-btn {
  margin-top: 2px;
  padding: 2px 6px;
  border: 1px dashed #cbd5e1;
  border-radius: 6px;
  background: #f8fafc;
  color: #334155;
  font-size: 12px;
  cursor: pointer;
}
.tasks .more-btn:hover { background: #eef2ff; }

/* 周末与日期态 */
.weekdays {
  .weekday.weekend { color: #b26; opacity: .9; }
}
.day,
.week-day {
  &.weekend { background: linear-gradient(180deg, rgba(255, 240, 245, .6), rgba(255,255,255,0)); }
  &.today { outline: 2px solid #1677ff; outline-offset: -2px; }
  &.selected { box-shadow: inset 0 0 0 2px #52c41a; }
}

/* 日期角标 */
.date-label {
  font-weight: 600;
  &.large { font-size: 18px; }
}

/* 任务 chip 样式 */
.tasks {
  .task-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 2px 6px;
    margin: 2px 0;
    border-radius: 6px;
    background: #f5f7fa;
    color: #333;
    border-left: 3px solid transparent;
    transition: transform .12s ease, background .12s ease, box-shadow .12s ease;
    .task-title { max-width: 10em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .assignee { color: #666; font-size: 12px; }
    &.overdue { border-left-color: #ff4d4f; background: #fff2f0; }
    &.high { box-shadow: inset 0 0 0 1px #faad14; background: #fff7e6; }
    &:hover { transform: translateY(-1px); box-shadow: 0 2px 6px rgba(0,0,0,.06); }
  }
  .task-row {
    display: grid; grid-template-columns: 1fr auto auto auto; gap: 8px; align-items: center;
    padding: 8px 10px; border-radius: 8px; background: #fafafa; margin-bottom: 6px;
    border-left: 3px solid transparent;
    &.overdue { border-left-color: #ff4d4f; background: #fff2f0; }
    .title { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .project { color: #666; }
    .assignee { color: #666; }
    .priority { text-transform: uppercase; font-size: 12px; padding: 2px 6px; border-radius: 12px; background: #eef5ff; color: #1677ff;
      &.high { background: #fff7e6; color: #fa8c16; font-weight: 600; }
    }
  }
  .no-task { color: #bbb; text-align: center; padding: 8px 0; }
}

/* 展开/收起按钮 */
.more-btn {
  margin-top: 4px;
  padding: 2px 8px;
  border-radius: 12px;
  border: 1px solid #d9d9d9;
  background: #fff;
  color: #595959;
  cursor: pointer;
  transition: background .12s ease, color .12s ease, border-color .12s ease;
  &:hover { background: #f5f5f5; color: #262626; border-color: #bfbfbf; }
}

/* 状态面板 */
.status-board {
  margin-top: 16px;
  .status-list { display: grid; grid-template-columns: repeat(auto-fill,minmax(180px,1fr)); gap: 10px; }
  .status-item {
    padding: 10px; border-radius: 8px; background: #f7fbff; border: 1px solid #e6f4ff;
    .name { font-weight: 700; }
    .meta { color: #666; font-size: 12px; margin-top: 2px; }
    .label { margin-top: 6px; font-size: 12px; color: #1677ff; }
  }
}

/* 响应式微调 */
@media (max-width: 768px) {
  .date-label.large { font-size: 16px; }
  .tasks .task-row { grid-template-columns: 1fr auto; .project, .assignee { display: none; } }
}
.quick-range {
  display: inline-flex;
  gap: 6px;
  margin-left: 8px;
  button { padding: 4px 8px; border: 1px solid #e5e7eb; border-radius: 999px; background: #fff; color: #374151; cursor: pointer; font-size: 12px; }
  button.active { background: #111827; color: #fff; border-color: #111827; }
}

/* 临期提示（3天内到期） */
.task-chip.due-soon, .task-row.due-soon {
  box-shadow: inset 0 0 0 1px #93c5fd;
  background: #eff6ff;
  border-left-color: #3b82f6;
}