/* Phase 1 Roster home: read-only phone-first schedule presentation. */
[data-roster-time-bound][aria-invalid="true"] { border-color: #a62424 !important; outline: 1px solid #a62424; }
[data-time-feedback] { display: block; color: #a62424; font-size: 0.65rem; line-height: 1.2; height: 2.4em; overflow: hidden; }
[data-roster-time-bound] { height: 48px; }
label:has(> [data-roster-time-bound]) { position: relative; align-content: start; }
[data-time-next-day] { position: absolute; right: 8px; top: 24px; color: var(--brand); font-size: 0.65rem; font-weight: 700; line-height: 1; }
.roster-home-controls {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  min-width: 0;
  gap: 12px;
  padding: 16px 20px 12px;
}

.roster-home-switcher,
.roster-home-actions,
.roster-home-tabs,
.roster-home-week-range,
.roster-home-person,
.roster-home-week-person {
  display: flex;
  align-items: center;
}

.roster-home-switcher {
  display: grid;
  grid-template-columns: minmax(91px, 1fr) minmax(0, 2fr);
  justify-content: space-between;
  width: 100%;
  max-width: 100%;
  gap: 8px;
  min-width: 0;
}

.roster-home-tabs {
  flex: 0 0 auto;
  min-height: 44px;
  gap: 3px;
  padding: 0;
  border-radius: 14px;
  background: rgba(90, 23, 24, 0.08);
}

.roster-home-tabs button { flex: 1; }

.roster-home-tabs button,
.roster-home-week-range button {
  min-width: 44px;
  min-height: 44px;
  border: 0;
  border-radius: 11px;
  color: var(--brand);
  background: transparent;
  font: inherit;
  font-size: 0.82rem;
  font-weight: 850;
}

.roster-home-tabs button {
  padding: 0 4px;
}

.roster-home-tabs button.active {
  color: #fff;
  background: var(--brand);
  box-shadow: 0 5px 12px rgba(90, 23, 24, 0.18);
}

.roster-home-today-date {
  box-sizing: border-box;
  min-width: 0;
  max-width: 100%;
  height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  padding: 0 8px;
  border: 1px solid rgba(90, 23, 24, 0.62);
  border-radius: 14px;
  background: #fff;
  color: var(--brand);
  font-size: 0.8rem;
  font-weight: 800;
  text-align: center;
  white-space: nowrap;
}

.roster-home-week-range {
  flex: 0 1 auto;
  min-width: 0;
  height: 44px;
  gap: 2px;
  padding: 0;
  border: 1px solid rgba(90, 23, 24, 0.62);
  border-radius: 14px;
  color: var(--brand);
  background: #fff;
}

.roster-home-week-range strong {
  flex: 1 1 auto;
  min-width: 0;
  padding: 0 2px;
  overflow: hidden;
  font-size: 0.75rem;
  font-weight: 850;
  text-align: center;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.roster-home-week-range button {
  flex: 0 0 44px;
  min-height: 44px;
  padding: 0;
  font-size: 1.15rem;
}

.roster-home-week-range button:disabled {
  opacity: 0.32;
}

.roster-home-actions {
  position: relative;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 10px;
  min-height: 44px;
}

.roster-home-actions .roster-venue-filter {
  flex: 1 1 12rem;
  min-width: 0;
  width: auto;
}

.roster-home-actions .venue-pill {
  overflow: visible;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.15;
}

.roster-home-actions .venue-menu button {
  min-height: 44px;
}

.roster-home-actions .roster-action-buttons {
  flex: 1 1 100%;
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(0, 1fr);
  gap: 8px;
  max-width: 100%;
  min-width: 0;
  justify-content: flex-end;
}

.roster-home-actions .roster-action-buttons:only-child {
  margin-left: auto;
}

.roster-home-actions .pill {
  min-height: 44px;
  height: 44px;
  width: 100%;
  min-width: 0;
  padding: 0 4px;
  font-size: 0.75rem;
  line-height: 1.15;
  white-space: normal;
}

.roster-home-actions .roster-named-anchor {
  min-width: 0;
  width: 100%;
}

.roster-home-venue-required {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  color: var(--muted);
  font-size: 0.75rem;
  font-weight: 760;
  text-align: right;
}

.roster-home-today {
  display: grid;
  gap: 7px;
  padding: 0 20px 16px;
}

.roster-home-person {
  min-width: 0;
  gap: 10px;
  padding: 10px 11px;
  border: 1px solid rgba(90, 23, 24, 0.10);
  border-radius: 16px;
  background: var(--card-glass);
  box-shadow: 0 8px 20px rgba(32, 20, 36, 0.035);
}

.roster-home-person.is-current-user {
  border-color: rgba(90, 23, 24, 0.38);
  background: rgba(255, 249, 249, 0.96);
}

.roster-home-person-copy {
  display: grid;
  min-width: 0;
  gap: 2px;
}

.roster-home-person-copy strong {
  overflow: visible;
  color: var(--ink);
  font-size: 0.84rem;
  font-weight: 850;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.roster-home-person-copy small {
  overflow: visible;
  color: var(--muted);
  font-size: 0.69rem;
  font-weight: 720;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
}

.roster-home-person-time {
  flex: 0 0 auto;
  max-width: 46%;
  margin-left: auto;
  color: var(--brand);
  font-size: 0.76rem;
  font-weight: 880;
  text-align: right;
  overflow-wrap: anywhere;
  white-space: normal;
}

.roster-home-person-time span {
  display: block;
  white-space: nowrap;
}

.roster-home-person-time.is-status,
.roster-home-status {
  color: var(--muted);
}

.roster-home-week {
  padding: 0 0 18px;
}

.roster-home-week-scroll {
  width: calc(100% - 40px);
  margin-inline: 20px;
  box-sizing: border-box;
  border: 1px solid rgba(90, 23, 24, 0.14);
  border-radius: 16px;
  max-height: min(620px, 65dvh);
  overflow: auto;
  overscroll-behavior-x: none;
  overscroll-behavior-inline: none;
  -webkit-overflow-scrolling: touch;
  scrollbar-color: rgba(90, 23, 24, 0.25) transparent;
}

.roster-home-week-grid {
  display: grid;
  grid-template-columns: 68px repeat(var(--roster-week-people), 112px);
  min-width: max-content;
  margin: 0;
  overflow: visible;
  background: #fff;
}

.roster-home-week-team-head,
.roster-home-week-day-head,
.roster-home-week-person,
.roster-home-week-cell {
  min-height: 64px;
  box-sizing: border-box;
  border-right: 1px solid rgba(90, 23, 24, 0.09);
  border-bottom: 1px solid rgba(90, 23, 24, 0.09);
}

.roster-home-week-team-head,
.roster-home-week-day-head {
  display: grid;
  align-content: center;
  gap: 2px;
  min-height: 54px;
  padding: 7px 8px;
  color: var(--muted);
  background: #fff;
  font-size: 0.67rem;
  font-weight: 850;
}

.roster-home-week-team-head,
.roster-home-week-day-head {
  position: sticky;
  left: 0;
  z-index: 1;
  border-right: 1px solid rgba(90, 23, 24, 0.16);
}

.roster-home-week-team-head {
  top: 0;
  z-index: 3;
}

.roster-home-week-day-head strong {
  color: var(--brand);
  font-size: 0.74rem;
}

.roster-home-week-day-head small {
  font-size: 0.63rem;
  font-weight: 750;
}

.roster-home-week-person {
  position: sticky;
  top: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
  gap: 4px;
  padding: 7px 6px;
  background: #fff;
  text-align: center;
}

.roster-home-week-person .avatar {
  flex: 0 0 auto;
}

.roster-home-week-person strong {
  display: block;
  width: 100%;
  overflow: visible;
  font-size: 0.7rem;
  text-overflow: clip;
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: 1.15;
}

.roster-home-week-cell {
  display: grid;
  place-items: center;
  min-width: 0;
  padding: 7px 6px;
  text-align: center;
  background: #fff;
}

.roster-home-week-cell.is-today,
.roster-home-week-day-head.is-today {
  /* Same opaque rose across today's row, including its sticky day cell. */
  background: #f0eaea;
}

.roster-home-time-lines {
  display: grid;
  gap: 2px;
  color: var(--brand);
  font-size: 0.68rem;
  font-weight: 870;
  line-height: 1.2;
  white-space: nowrap;
}

.roster-home-empty-cell {
  color: rgba(69, 56, 64, 0.42);
  font-weight: 800;
}

.roster-home-status {
  font-size: 0.68rem;
  font-weight: 820;
}

.roster-home-tabs button:focus-visible,
.roster-home-week-range button:focus-visible,
.roster-home-week-scroll:focus-visible {
  outline: 3px solid var(--brand);
  outline-offset: 2px;
}

@media (max-width: 359px) {
  .roster-home-controls { padding-inline: 14px; }
  .roster-home-tabs button { padding-inline: 4px; }
  .roster-home-today { padding-inline: 14px; }
  .roster-home-week-scroll { margin-inline: 14px; width: calc(100% - 28px); }
  .roster-home-today-date { font-size: 0.72rem; }
  .roster-home-actions .roster-venue-filter,
  .roster-home-actions .roster-action-buttons { flex-basis: 100%; }
  .roster-home-actions .roster-action-buttons { justify-content: flex-start; }
}

/* Phase 2 Roster editor: the grid remains readably sized while its focused
   cell editor is anchored in the viewport rather than extending the row. */
.roster-compact-editor {
  display: grid;
  gap: 12px;
  padding: 12px 0 18px;
}

/* Let the same page surface show through in both create and edit mode. */
.roster-compact-editor.roster-editing-editor { background: transparent; }

.roster-compact-editor-top,
.roster-compact-editor-actions,
.roster-compact-week-box,
.roster-compact-exit-guard {
  display: flex;
  align-items: center;
}

.roster-compact-editor-top {
  flex-wrap: wrap;
  gap: 8px;
  padding: 0 20px;
}

.roster-compact-back,
.roster-compact-week-box button,
.roster-compact-editor-actions > button,
.roster-compact-people-filter > button,
.roster-compact-exit-guard button,
.roster-compact-cell-popover button {
  min-height: 44px;
  border: 0;
  border-radius: 13px;
  color: var(--brand);
  background: rgba(90, 23, 24, 0.08);
  font: inherit;
  font-size: 0.78rem;
  font-weight: 850;
}

.roster-compact-back { padding: 0 11px; }

.roster-compact-week-box {
  flex: 1 1 168px;
  min-width: 0;
  max-width: 278px;
  height: 44px;
  margin-left: auto;
  border: 1px solid rgba(90, 23, 24, 0.62);
  border-radius: 14px;
  background: #fff;
}

.roster-compact-week-box button {
  flex: 0 0 44px;
  padding: 0;
  background: transparent;
  font-size: 1.15rem;
}

.roster-compact-week-box button:disabled { opacity: 0.32; }

.roster-compact-week-box strong {
  min-width: 0;
  overflow: visible;
  color: var(--brand);
  font-size: 0.75rem;
  font-weight: 850;
  text-align: center;
  white-space: nowrap;
}

.roster-compact-venue {
  display: flex;
  align-items: center;
  min-height: 44px;
  gap: 6px;
  color: var(--muted);
  font-size: 0.72rem;
  font-weight: 800;
}

.roster-compact-venue select,
.roster-compact-editor-actions select,
.roster-compact-cell-popover select,
.roster-compact-cell-popover input {
  min-height: 40px;
  border: 1px solid rgba(90, 23, 24, 0.2);
  border-radius: 10px;
  color: var(--ink);
  background: #fff;
  font: inherit;
  font-size: 0.78rem;
}

.roster-compact-venue select { max-width: 134px; padding-inline: 7px; }

.roster-compact-editor-actions {
  position: relative;
  gap: 8px;
  padding: 0 20px;
}

.roster-compact-editor-actions > button,
.roster-compact-people-filter > button { padding: 0 11px; }

.roster-compact-editor-actions > button.primary {
  margin-left: auto;
  color: #fff;
  background: var(--brand);
}

.roster-compact-editor-actions > button:disabled { opacity: 0.42; }

.roster-compact-people-filter { position: relative; }

.roster-compact-people-menu {
  position: absolute;
  z-index: 7;
  top: calc(100% + 6px);
  left: 0;
  display: grid;
  width: min(248px, calc(100vw - 40px));
  max-height: min(50vh, 330px);
  overflow-y: auto;
  padding: 7px;
  border: 1px solid rgba(90, 23, 24, 0.18);
  border-radius: 14px;
  background: #fff;
  box-shadow: 0 16px 36px rgba(32, 20, 36, 0.2);
}

.roster-compact-people-menu label {
  display: flex;
  align-items: center;
  min-height: 44px;
  gap: 8px;
  padding: 0 6px;
  color: var(--ink);
  font-size: 0.78rem;
  font-weight: 750;
}

.roster-compact-people-menu input { width: 18px; height: 18px; accent-color: var(--brand); }

.roster-compact-exit-guard {
  flex-wrap: wrap;
  gap: 7px;
  margin: 0 20px;
  padding: 9px;
  border: 1px solid rgba(90, 23, 24, 0.25);
  border-radius: 14px;
  color: var(--brand);
  background: #fff8f8;
  font-size: 0.75rem;
  font-weight: 820;
}

.roster-compact-exit-guard span { flex: 1 1 100%; }
.roster-compact-exit-guard button { min-height: 40px; padding: 0 10px; }

.roster-compact-grid-scroll {
  width: calc(100% - 40px);
  margin-inline: 20px;
  box-sizing: border-box;
  border: 1px solid rgba(90, 23, 24, 0.14);
  border-radius: 16px;
  max-height: min(620px, 65dvh);
  overflow: auto;
  overscroll-behavior-x: none;
  overscroll-behavior-inline: none;
  -webkit-overflow-scrolling: touch;
}

.roster-compact-grid {
  display: grid;
  grid-template-columns: 68px repeat(var(--roster-editor-people), 112px);
  min-width: max-content;
  margin: 0;
  overflow: visible;
  background: #fff;
}

.roster-compact-grid-team-head,
.roster-compact-grid-day-head,
.roster-compact-grid-person,
.roster-compact-grid-cell {
  box-sizing: border-box;
  min-height: 66px;
  border-right: 1px solid rgba(90, 23, 24, 0.1);
  border-bottom: 1px solid rgba(90, 23, 24, 0.1);
}

.roster-compact-grid-team-head,
.roster-compact-grid-day-head {
  display: grid;
  align-content: center;
  gap: 2px;
  min-height: 54px;
  padding: 7px 8px;
  color: var(--muted);
  background: #fbf8f8;
  font-size: 0.66rem;
  font-weight: 850;
}

.roster-compact-grid-day-head strong { color: var(--brand); font-size: 0.73rem; }
.roster-compact-grid-day-head small { font-size: 0.63rem; font-weight: 750; }

.roster-compact-grid-team-head,
.roster-compact-grid-day-head {
  position: sticky;
  left: 0;
  z-index: 2;
  border-right-color: rgba(90, 23, 24, 0.2);
}

.roster-compact-grid-team-head { top: 0; z-index: 4; }

.roster-compact-grid-person {
  position: sticky;
  top: 0;
  z-index: 3;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 4px;
  min-width: 0;
  padding: 7px 6px;
  background: #fff;
  text-align: center;
}

.roster-compact-grid-person strong {
  width: 100%;
  color: var(--ink);
  font-size: 0.7rem;
  font-weight: 830;
  line-height: 1.15;
  overflow-wrap: anywhere;
}

.roster-compact-grid-cell { position: relative; padding: 4px; }

.roster-compact-grid-cell > button {
  display: grid;
  place-items: center;
  width: 100%;
  min-height: 56px;
  padding: 5px;
  border: 0;
  border-radius: 10px;
  color: var(--brand);
  background: rgba(90, 23, 24, 0.035);
  font: inherit;
}

.roster-compact-grid-cell.status-off > button,
.roster-compact-grid-cell.status-holiday > button,
.roster-compact-grid-cell.status-sick > button { color: var(--muted); background: #f7f3f4; }
.roster-compact-grid-cell.invalid > button { outline: 2px solid #b23a3a; outline-offset: -2px; }

.roster-compact-cell-lines { display: grid; gap: 2px; font-size: 0.67rem; font-weight: 860; line-height: 1.2; white-space: nowrap; }
.roster-compact-cell-empty { color: rgba(90, 23, 24, 0.45); font-size: 1.1rem; font-weight: 700; }

.roster-compact-cell-popover {
  position: fixed;
  box-sizing: border-box;
  z-index: 1600;
  display: grid;
  gap: 9px;
  max-width: calc(100vw - 24px);
  max-height: calc(100dvh - 24px);
  overflow-y: auto;
  padding: 12px;
  border: 1px solid rgba(90, 23, 24, 0.28);
  border-radius: 16px;
  background: #fff;
  box-shadow: 0 20px 46px rgba(32, 20, 36, 0.24);
  visibility: hidden;
}

.roster-compact-cell-popover.is-positioned { visibility: visible; }
.roster-compact-cell-popover header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.roster-compact-editor-person-date { display: grid; gap: 3px; min-width: 0; }
.roster-compact-editor-person-date small { font-size: 0.72rem; color: var(--muted); }
.roster-compact-cell-popover header strong { min-width: 0; overflow-wrap: anywhere; color: var(--ink); font-size: 0.84rem; }
.roster-compact-cell-popover header button { flex: 0 0 44px; width: 44px; min-height: 44px; padding: 0; font-size: 1.25rem; }
.roster-compact-status-field { display: grid; gap: 4px; color: var(--muted); font-size: 0.7rem; font-weight: 800; }
.roster-compact-status-field select { padding-inline: 8px; }
.roster-compact-time-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }
.roster-compact-time-fields label { display: grid; gap: 4px; color: var(--muted); font-size: 0.68rem; font-weight: 800; }
.roster-compact-time-fields input { width: 100%; min-width: 0; padding-inline: 6px; box-sizing: border-box; }
.roster-compact-time-fields input, .roster-request-hours input { font-size: 16px; }
.roster-compact-split { padding: 0 10px; justify-self: start; }
.roster-compact-status-note,.roster-compact-cell-error { margin: 0; color: var(--muted); font-size: 0.74rem; font-weight: 760; }
.roster-compact-cell-error { color: #a33232; }

.roster-compact-editor button:focus-visible,
.roster-compact-editor select:focus-visible,
.roster-compact-editor input:focus-visible,
.roster-compact-grid-scroll:focus-visible { outline: 3px solid var(--brand); outline-offset: 2px; }

@media (max-width: 359px) {
  .roster-compact-editor-top,.roster-compact-editor-actions { padding-inline: 14px; }
  .roster-compact-grid-scroll { margin-inline: 14px; width: calc(100% - 28px); }
  .roster-compact-week-box { order: 3; flex-basis: 100%; max-width: none; }
  .roster-compact-venue { margin-left: auto; }
  .roster-compact-exit-guard { margin-inline: 14px; }
  .roster-compact-people-menu {
    left: 50%;
    width: min(248px, calc(100vw - 24px));
    transform: translateX(-50%);
  }
}
/* Shared named-draft controls stay within the phone viewport. */
.roster-named-anchor { position: relative; display: inline-flex; }
.roster-named-list { position: absolute; z-index: 80; top: calc(100% + 8px); right: 0; display: grid; gap: 8px; padding: 10px; width: min(300px, calc(100vw - 32px)); max-height: min(420px, 60dvh); overflow-y: auto; box-sizing: border-box; border: 1px solid #7b2929; border-radius: 14px; background: #fff; box-shadow: 0 8px 28px #24080833; }
.roster-named-row { display: flex; gap: 4px; min-width: 0; }
.roster-named-row > button:first-child { display: grid; gap: 5px; min-width: 0; flex: 1; text-align: left; overflow-wrap: anywhere; }
.roster-named-row > button { min-height: 44px; min-width: 44px; padding: 8px; border-radius: 10px; background: #fff; color: #611b1b; }
.roster-named-list > button, .roster-named-recovery { display: grid; gap: 5px; padding: 12px; min-height: 44px; text-align: left; border: 1px solid #7b2929; border-radius: 14px; background: #fff; color: #611b1b; overflow-wrap: anywhere; }
.roster-named-list small { font-size: 12px; font-weight: 400; }
.roster-named-feedback { font-size: 13px; margin: 6px 0; color: #611b1b; overflow-wrap: anywhere; }
.roster-named-dialog { position: fixed; z-index: 1600; inset: 0; display: grid; place-items: center; padding: 16px; background: #24080866; }
.roster-named-dialog > form, .roster-named-dialog > div { box-sizing: border-box; width: min(360px, 100%); max-height: calc(100dvh - 32px); overflow-y: auto; padding: 16px; border-radius: 18px; background: #fff; color: #611b1b; box-shadow: 0 8px 28px #24080833; }
.roster-named-dialog > div { display: flex; flex-direction: column; align-items: stretch; gap: 8px; }
.roster-named-dialog > div p { margin: 0 0 8px; }
.roster-named-dialog label { display: grid; gap: 8px; }
.roster-named-dialog input { box-sizing: border-box; width: 100%; min-height: 44px; font-size: 16px; border: 1px solid #7b2929; border-radius: 10px; padding: 8px; }
.roster-named-dialog form > div { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.roster-named-dialog button, .roster-named-recovery button { min-height: 44px; padding: 8px 14px; border: 1px solid #7b2929; border-radius: 10px; background: #fff; color: #611b1b; }
.roster-named-dialog button[type="submit"] { background: #7b2929; color: #fff; }
/* Request dialogs overlay the roster; they never add table rows or columns. */
.system-modal-backdrop:has(.roster-request-modal-v2) { z-index: 1600; padding: 12px; }
.roster-request-modal-v2 { width: min(440px, calc(100vw - 24px)); max-height: calc(100dvh - 40px); overflow-y: auto; box-sizing: border-box; background: #fff; color: #621c1c; border-radius: 22px; padding: 16px; }
.roster-request-modal-v2 * { box-sizing: border-box; }
.roster-request-modal-v2 fieldset { border: 0; margin: 0; padding: 0; min-width: 0; }
.roster-request-modal-v2 label { display: flex; flex-direction: column; gap: 5px; margin: 10px 0; }
.roster-request-modal-v2 input:not([type=checkbox]), .roster-request-modal-v2 select, .roster-request-modal-v2 textarea { width: 100%; min-width: 0; font: inherit; font-size: 16px; padding: 9px; border: 1px solid #dbc8c8; border-radius: 10px; background: white; color: inherit; }
.roster-request-heading, .roster-request-card header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.roster-request-heading h2 { font-size: 20px; margin: 0; }
.roster-request-modal-v2 button, .roster-requests-v2 button { width: auto; min-width: 0; min-height: 44px; justify-content: center; padding: 8px 12px; border: 1px solid #dbc8c8; border-radius: 12px; color: #621c1c; background: #fff; font: inherit; font-weight: 650; }
.roster-request-modal-v2 button:disabled { opacity: .5; }
.roster-request-heading button { min-width: 44px; }
.roster-request-tabs { display: flex; gap: 5px; margin: 12px 0; }
.roster-request-tabs button { flex: 1; font-size: 12px; padding: 6px 4px; }
.roster-request-tabs button[aria-pressed=true], .roster-request-actions button[type=submit] { background: #6b2020; color: white; }
.roster-request-hours { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 8px; }
.roster-request-modal-v2 .roster-request-split { flex-direction: row; align-items: center; min-height: 44px; margin: 0; }
.roster-request-modal-v2 input[type=checkbox] { width: 20px; height: 20px; min-height: 0; padding: 0; flex: 0 0 20px; accent-color: #6b2020; }
.roster-request-modal-v2 .roster-request-calendar-grid label { display: block; position: relative; margin: 0; padding: 0; }
.roster-request-modal-v2 .roster-request-calendar-grid label > span { display: flex; align-items: center; justify-content: center; text-align: center; box-sizing: border-box; width: 100%; min-height: 44px; margin: 0; padding: 0; line-height: 1; }
.roster-request-modal-v2 .roster-request-calendar-grid input { position: absolute; opacity: 0; }
.roster-request-modal-v2 .roster-request-calendar-grid label:focus-within { outline: 2px solid #6b2020; }
.roster-preferred-days > section, .roster-request-card { position: relative; border: 1px solid #e4d6d6; border-radius: 14px; padding: 12px; margin: 10px 0; }
.roster-request-details { display: grid; gap: 4px; overflow-wrap: anywhere; }
.roster-request-details p { margin: 5px 0; }
.roster-request-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 12px; }
.roster-request-card header { padding-right: 24px; }
.roster-request-hide { position: absolute; right: 2px; top: 2px; min-width: 44px; }
.roster-compact-grid-cell > button { position: relative; }
.roster-preference-dot { position: absolute; right: 6px; top: 6px; width: 7px; height: 7px; border-radius: 50%; background: #ed9329; pointer-events: none; }
.roster-cell-preference { border-left: 3px solid #ed9329; padding: 6px 9px; margin-bottom: 10px; font-size: 12px; }
