.workforce-schedule-workspace .gc-page-header { align-items:center; margin-bottom:16px; }
.workforce-schedule-workspace .gc-page-heading { flex:1; }
.workforce-schedule-workspace :is(button,select,input,textarea) { min-height:44px; }
.roster-planning-bar { display:flex; align-items:end; gap:16px; flex-wrap:wrap; padding:16px; margin-bottom:16px; border:1px solid var(--gc-border); border-radius:var(--gc-radius-md); background:var(--gc-surface); }
.roster-site-picker,.roster-week-label { display:grid; gap:6px; font-size:var(--gc-font-sm); color:var(--gc-muted); }
.roster-site-picker select { min-width:180px; max-width:100%; padding:8px 10px; border:1px solid var(--gc-border-strong); border-radius:var(--gc-radius-sm); background:var(--gc-surface); color:var(--gc-text); font:inherit; }
.roster-week-label { margin-right:auto; align-self:center; }
.roster-week-label strong { color:var(--gc-text); }
.roster-period-controls { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px; }
.roster-planning-bar .roster-period-controls { margin:0; }
.roster-copy-action { margin-left:auto; }
.roster-panel { padding:0; min-width:0; overflow:hidden; }
.roster-panel-head { display:flex; align-items:center; justify-content:space-between; gap:16px; padding:16px 18px; border-bottom:1px solid var(--gc-border); }
.roster-panel-head h2,.roster-panel-head p { margin:0; }
.roster-panel-head h2 { font-size:var(--gc-font-lg); }
.roster-panel-head p { color:var(--gc-muted); margin-top:5px; font-size:var(--gc-font-sm); }
.roster-zone { font-size:var(--gc-font-xs); color:var(--gc-muted); overflow-wrap:anywhere; }
.roster-week-empty { margin:0; padding:14px 18px; color:var(--gc-muted); font-size:var(--gc-font-sm); border-bottom:1px solid var(--gc-border); }
.roster-scroll { overflow-x:auto; max-width:100%; }
.roster-scroll-hint { display:none; margin:0; padding:10px 18px; color:var(--gc-muted); font-size:var(--gc-font-xs); }
.roster-board { min-width:980px; }
.roster-row { display:grid; grid-template-columns:minmax(174px,1.45fr) repeat(7,minmax(98px,1fr)) minmax(96px,.8fr); border-bottom:1px solid var(--gc-border); }
.roster-row:last-child { border-bottom:0; }
.roster-row > div { min-width:0; padding:10px 8px; border-right:1px solid var(--gc-border); }
.roster-row > div:last-child { border-right:0; }
.roster-head { background:var(--gc-surface-subtle); color:var(--gc-muted); font-size:var(--gc-font-xs); }
.roster-head > div { display:grid; gap:3px; }
.roster-head strong { color:var(--gc-text); }
.roster-person { position:sticky; left:0; z-index:1; background:var(--gc-surface); box-shadow:1px 0 0 var(--gc-border); display:grid; align-content:start; gap:6px; }
.roster-head > div:first-child { position:sticky; left:0; z-index:2; background:var(--gc-surface-subtle); }
.roster-person > strong { font-size:var(--gc-font-md); overflow-wrap:anywhere; }
.roster-person > span,.roster-hours span { color:var(--gc-muted); font-size:var(--gc-font-xs); line-height:1.4; }
.roster-person .action-button { justify-self:start; padding:0 10px; font-size:var(--gc-font-xs); }
.roster-hours { display:grid; align-content:start; gap:4px; background:var(--gc-surface-subtle); }
.roster-hours strong { font-size:var(--gc-font-lg); font-variant-numeric:tabular-nums; }
.roster-cell { min-height:94px; background:var(--gc-surface); }
.roster-cell-date,.roster-empty-text { display:none; }
.roster-empty { display:flex; align-items:center; justify-content:center; min-height:44px; color:var(--gc-muted); }
.roster-empty-action { display:grid; place-content:center; gap:3px; width:100%; border:1px solid transparent; border-radius:var(--gc-radius-sm); background:transparent; color:var(--gc-muted); cursor:pointer; font:inherit; font-size:var(--gc-font-xs); }
.roster-empty-prompt { display:none; }
.roster-empty-action:is(:hover,:focus-visible) { border-color:var(--gc-border-strong); background:var(--gc-hover); color:var(--gc-text); }
.roster-empty-action:is(:hover,:focus-visible) .roster-empty-prompt { display:block; }
.roster-empty-action:is(:hover,:focus-visible) .roster-empty-mark { display:none; }
.roster-shift { display:grid; gap:5px; padding:10px 8px; border:1px solid var(--gc-border-strong); border-left:3px solid var(--gc-brand); border-radius:var(--gc-radius-sm); background:var(--gc-brand-soft); color:var(--gc-text); overflow-wrap:anywhere; }
button.roster-shift { width:100%; text-align:left; cursor:pointer; font:inherit; }
.roster-shift strong { font-size:var(--gc-font-sm); font-variant-numeric:tabular-nums; }
.roster-shift :is(span,small) { font-size:var(--gc-font-xs); line-height:1.35; }
.roster-shift-action { font-weight:650; }
.roster-warning { color:var(--gc-text); font-weight:650; }
.roster-shift-wrap + .roster-shift-wrap { margin-top:10px; }
.roster-cancel-entry { width:100%; margin-top:3px; padding:0 4px; font-size:var(--gc-font-xs); white-space:normal; }
.roster-notice { margin:0 0 14px; padding:12px 14px; border:1px solid var(--gc-border); border-radius:var(--gc-radius-sm); background:var(--gc-surface-subtle); }
.roster-editor { z-index:102; color:var(--gc-text); }
.roster-editor-scrim { z-index:101; }
.roster-editor textarea { resize:vertical; }
.roster-editor-context { margin:0; font-size:var(--gc-font-sm); color:var(--gc-muted); line-height:1.5; }
.workforce-schedule-workspace :is(button,input,select,textarea,.roster-scroll):focus-visible { outline:3px solid var(--gc-brand-strong); outline-offset:2px; }
.coverage-panel { padding:20px; min-width:0; }
.coverage-summary,.coverage-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr)); gap:12px; margin-block:16px; }
.coverage-summary > div,.coverage-shift { padding:16px; border:1px solid var(--gc-border); border-radius:var(--gc-radius-md); min-width:0; overflow-wrap:anywhere; }
.coverage-summary strong,.coverage-summary span { display:block; }
.coverage-summary strong { font-size:1.7rem; }
.coverage-panel .badge { white-space:normal; color:var(--gc-text); font-size:var(--gc-font-xs); height:auto; min-height:24px; padding-block:4px; }
.coverage-evidence { margin-block:12px; padding:12px; border:1px solid var(--gc-border); border-radius:var(--gc-radius-sm); overflow-wrap:anywhere; }
.coverage-evidence dd { margin:0 0 12px; }
.coverage-evidence dt { font-weight:600; }
.coverage-panel summary { cursor:pointer; }
@media(max-width:1100px) {
  .roster-scroll-hint { display:block; }
  .roster-copy-action { margin-left:0; }
}
@media(max-width:600px) {
  .workforce-schedule-workspace .gc-page-header { align-items:flex-start; flex-wrap:wrap; gap:12px; }
  .workforce-schedule-workspace .gc-page-heading { flex-basis:100%; }
  .roster-planning-bar { gap:12px; padding:12px; }
  .roster-site-picker { width:100%; }
  .roster-week-label { width:100%; }
  .roster-period-controls { gap:6px; }
  .roster-period-controls .action-button { font-size:var(--gc-font-xs); padding-inline:10px; }
  .roster-panel-head { align-items:flex-start; padding:14px; flex-wrap:wrap; }
  .roster-scroll-hint { display:none; }
  .roster-board { min-width:0; }
  .roster-head { display:none; }
  .roster-row:not(.roster-head) { grid-template-columns:minmax(0,1fr); padding:12px; gap:0; border-bottom:8px solid var(--gc-bg); }
  .roster-row > div { border-right:0; padding:10px 0; }
  .roster-person { position:static; padding-top:0; box-shadow:none; }
  .roster-cell { display:grid; grid-template-columns:90px minmax(0,1fr); gap:10px; min-height:0; align-items:start; border-top:1px solid var(--gc-border); }
  .roster-cell-date { display:grid; gap:4px; font-size:var(--gc-font-xs); padding-top:10px; color:var(--gc-muted); }
  .roster-cell-date strong { color:var(--gc-text); }
  .roster-cell.is-empty { align-items:center; }
  .roster-cell.is-empty .roster-cell-date { padding-top:0; }
  .roster-empty-text { display:block; }
  .roster-empty-mark { display:none; }
  .roster-empty-action,.roster-empty { justify-content:start; place-content:center start; }
  .roster-hours { padding:10px !important; border-radius:var(--gc-radius-sm); }
}

/* Native modal keeps the copy review independent of roster refreshes. */
.roster-copy-dialog { color:var(--gc-text); background:var(--gc-surface); border:1px solid var(--gc-border); border-radius:var(--gc-radius-lg); padding:var(--gc-space-5); width:min(720px,calc(100vw - 24px)); max-height:calc(100dvh - 24px); overflow:auto; box-sizing:border-box; }
.roster-copy-dialog::backdrop { background:rgba(0,0,0,.45); }
.roster-copy-dialog header,.roster-copy-dialog footer { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px; }
.roster-copy-dialog button { min-height:44px; min-width:44px; }
.roster-copy-dialog :focus-visible { outline:3px solid var(--gc-brand-strong); outline-offset:3px; }
.roster-copy-dialog [role="alert"] { padding:12px; border-left:4px solid var(--gc-danger); background:var(--gc-danger-soft); }
.roster-copy-list { list-style:none; padding:0; display:grid; gap:12px; }
.roster-copy-list li { padding:12px; border:1px solid var(--gc-border); border-radius:var(--gc-radius-md); overflow-wrap:anywhere; }
.roster-copy-list p { margin:6px 0; }

.coverage-day-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr)); gap:12px; margin:16px 0 24px; }
.coverage-day { border:1px solid var(--gc-border); border-radius:var(--gc-radius-md); padding:14px; min-width:0; overflow-wrap:anywhere; }
.coverage-day h3 { font-size:15px; margin:0 0 10px; }
.coverage-day ul { padding-left:18px; }
.coverage-day li+li { margin-top:8px; }
.coverage-no-plan { color:var(--gc-muted); }

/* Strong boundaries and error text for the shared shift editor in every theme. */
.roster-editor .gc-field :is(input,select,textarea) { border-color:var(--gc-muted); }
.roster-editor .form-alert { color:var(--gc-text); border-left:4px solid var(--gc-danger); }
.roster-editor .form-alert:focus { outline:3px solid var(--gc-brand-strong); outline-offset:2px; }

.roster-editor .gc-field { color:var(--gc-text); }
