.roster-toolbar{display:flex;align-items:flex-end;flex-wrap:wrap;gap:.8rem;margin:1.2rem 0}
.roster-toolbar label{display:grid;gap:.4rem;font-weight:850;color:var(--ink);font-size:.85rem}
.roster-toolbar input,.roster-toolbar select{min-height:44px;padding:.65rem .8rem;border:2px solid var(--line);border-radius:12px;background:#fff;color:var(--ink);font:inherit}
.roster-toolbar select{min-width:160px}.roster-search{flex:1;min-width:220px}
.roster-summary{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.7rem;margin-bottom:.7rem}
.roster-summary p{margin:0}.roster-table-wrap{max-height:65vh}.roster-table{min-width:940px}
.roster-table th{position:sticky;top:0;z-index:1;background:#f3f1ff}
.roster-row-actions{display:flex;gap:.4rem;flex-wrap:wrap;min-width:240px}.roster-row-actions button{font-size:.78rem;padding:.5rem .65rem}
.roster-empty{text-align:center;padding:2rem!important;color:var(--muted)}
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
#rosterStudentForm .import-hint,#rosterStudentError{grid-column:1/-1}
#rosterFeedback:empty,#rosterStudentError:empty,#rosterDeleteError:empty{display:none}
@media(max-width:600px){.roster-toolbar label,.roster-toolbar>button{width:100%}.roster-search{min-width:0}.roster-toolbar select,.roster-toolbar input{width:100%}.roster-summary{align-items:flex-start;flex-direction:column}}
