/* W14 shift rosters: the week grid and the board. Loaded after styles.css (index.html, W14 block). */
.roster-layout { display: grid; grid-template-columns: minmax(0, 1fr) 220px; gap: 14px; align-items: start; }
.roster-scroll { overflow-x: auto; }
.roster-grid { border-collapse: collapse; width: 100%; font-size: 13px; }
.roster-grid th, .roster-grid td { border: 1px solid var(--line, #e3e6ea); padding: 6px; vertical-align: top; text-align: left; }
.roster-grid thead th { font-size: 12px; color: var(--text-3, #8b949e); font-weight: 600; }
.roster-shift { border: 1px dashed transparent; border-radius: 8px; padding: 4px; margin-bottom: 6px; }
.roster-shift:hover { border-color: var(--line, #e3e6ea); }
.roster-shift.pending, .roster-grid .pending { background: #fdf0dd; }
.roster-shift.removed, .roster-grid .removed { text-decoration: line-through; opacity: .7; }
.roster-people { position: sticky; top: 0; max-height: calc(100vh - 140px); overflow: auto; }
.roster-person { padding: 6px 8px; border: 1px solid var(--line, #e3e6ea); border-radius: 8px; margin-bottom: 6px; cursor: grab; font-size: 13px; }
