.shift th, .shift td { text-align: center; padding: 6px 4px; }
.shift th:first-child, .shift td:first-child { text-align: left; padding-left: 10px; position: sticky; left: 0; background: var(--surface); z-index: 1; }
.shift th .wd { display: block; font-size: 11px; }
.shift th.sun .wd { color: #a5463a; } .shift th.sat .wd { color: #4c6a7d; }
.shift th.today { background: var(--accent-soft); border-radius: 6px 6px 0 0; }
.cell { width: 100%; min-width: 58px; border: 1px solid var(--line); border-radius: 8px; padding: 8px 2px; cursor: pointer; font-size: 13px; background: var(--surface-2); color: var(--muted); }
.cell.e { background: #f3e2c4; color: #7a5420; border-color: #e2c08e; }
.cell.l { background: #e9e6e2; color: #4a4642; border-color: #d4cfc8; }
.cell.f { background: linear-gradient(180deg, #3a3733, #1f1d1b); color: #f6e7cf; border-color: #1f1d1b; box-shadow: 0 6px 12px -6px rgba(20,14,8,.5); }
.shift tr.count td { font-size: 12px; color: var(--muted); }
.shift tr.count td.short { color: var(--danger); font-weight: 700; }
.legend { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 10px; }
.legend span::before { content: ""; display: inline-block; width: 12px; height: 12px; border-radius: 3px; margin-right: 4px; vertical-align: -1px; background: var(--c); }
