.admin-roster { margin-block: 1.5rem 2.5rem; }
.admin-roster .admin-section-heading { align-items: center; gap: 1rem; }
.admin-roster .admin-section-heading h2 { margin-block: 0 0.4rem; }
.admin-roster .admin-section-heading p { margin: 0; }
.admin-roster-filters { display: flex; align-items: end; gap: 0.75rem; flex-wrap: wrap; margin-block: 1.25rem; }
.admin-roster-filters > :first-child { flex: 1; min-width: 12rem; }
.admin-roster-result { padding-block: 0.75rem; color: var(--color-text-primary); font-weight: 600; }
.admin-roster-upload { display: grid; gap: 1rem; }
.admin-roster-upload p { margin: 0; line-height: 1.7; }
.admin-roster-upload a { width: fit-content; text-underline-offset: 0.2em; }
.admin-roster-file { display: grid; gap: 0.6rem; font-weight: 600; }
.admin-roster-file input { max-width: 100%; padding: 0.7rem; border: 1px solid var(--color-border); border-radius: 8px; font: inherit; font-size: 0.875rem; }
.admin-roster-file input::file-selector-button { padding: 0.45rem 0.75rem; margin-right: 0.65rem; border: 0; border-radius: 5px; color: var(--color-text-primary); background: var(--color-surface-subtle); font: inherit; cursor: pointer; }
.admin-roster-preview-summary { display: grid; gap: 0.4rem; padding-block: 0.75rem; border-block: 1px solid var(--color-border); }
.admin-roster-preview-table { overflow-x: auto; }
.admin-roster-preview-table table { width: 100%; border-collapse: collapse; font-size: 0.875rem; text-align: left; }
.admin-roster-preview-table th, .admin-roster-preview-table td { padding: 0.8rem 0.5rem; border-bottom: 1px solid var(--color-border); vertical-align: top; overflow-wrap: anywhere; }
.admin-roster-preview-table td > span:not(.ui-badge) { display: block; margin-top: 0.3rem; color: var(--color-text-secondary); }
.admin-roster-preview-table td:first-child { width: 2.5rem; font-variant-numeric: tabular-nums; }
.admin-roster-preview-table td:nth-child(2) { width: 34%; }
.admin-roster-complete { display: grid; gap: 0.75rem; padding-block: 0.5rem 1rem; }
.admin-roster-upload :focus-visible { outline: 2px solid var(--color-primary-600); outline-offset: 3px; }
@media (max-width: 40rem) {
  .admin-roster .admin-section-heading { align-items: stretch; flex-direction: column; }
  .admin-roster-filters { display: grid; grid-template-columns: 1fr 1fr; }
  .admin-roster-filters > :first-child { grid-column: 1 / -1; min-width: 0; }
  .admin-roster-filters > :nth-child(2) { grid-column: 1 / -1; }
  .admin-roster-preview-table th, .admin-roster-preview-table td { padding-inline: 0.25rem; }
}
