.roster-launcher{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}
.roster-launcher>div{display:grid;gap:3px}.roster-launcher strong{font-size:12px}.roster-launcher small{color:var(--muted);font-size:9px}.roster-launcher button{padding:10px 14px}
.roster-manager-dialog{width:min(1180px,calc(100% - 32px));height:min(850px,calc(100dvh - 44px));max-width:none;max-height:none;padding:0;border:1px solid var(--line);border-radius:18px;background:var(--card);color:var(--ink);box-shadow:0 30px 90px rgba(0,0,0,.28);overflow:hidden}
.roster-manager-dialog::backdrop{background:rgba(10,14,9,.68);backdrop-filter:blur(3px)}
.roster-manager-head{display:flex;align-items:center;justify-content:space-between;padding:20px 22px;border-bottom:1px solid var(--line)}.roster-manager-head span{color:var(--orange);font-size:8px;font-weight:800;letter-spacing:.14em}.roster-manager-head h2{margin:4px 0;font-size:20px}.roster-manager-head small{color:var(--muted);font-size:9px}.roster-manager-head>button{width:38px;height:38px;border:1px solid var(--line);border-radius:10px;background:var(--soft);color:var(--ink);font-size:20px;cursor:pointer}
.roster-manager-tools{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 22px;border-bottom:1px solid var(--line);background:var(--card)}.roster-manager-tools>input{width:min(320px,45%);padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--soft);color:var(--ink)}.roster-filters{display:flex;gap:6px}.roster-filters button{padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--muted);font-size:9px;cursor:pointer}.roster-filters button.active{background:var(--green);border-color:var(--green);color:#fff}.roster-filters b{margin-left:3px}
.roster-manager-dialog .roster-list{display:grid;grid-template-columns:1fr;gap:7px;height:calc(100% - 139px);margin:0;padding:14px 22px 24px;overflow:auto}.roster-manager-dialog [data-student-row]{display:grid;grid-template-columns:120px minmax(210px,1.1fr) 80px 95px minmax(210px,1fr) auto;align-items:center;gap:9px;padding:10px 12px;border:1px solid var(--border-soft2);border-radius:10px;background:var(--soft)}.roster-manager-dialog [data-student-row][hidden]{display:none!important}
.roster-person{display:flex;align-items:center;gap:8px}.roster-person strong{font-size:11px}.student-name-form,.roster-manager-dialog .student-pin-form{display:flex;gap:6px}.student-name-form input,.roster-manager-dialog .student-pin-form input{min-width:0;flex:1;padding:8px 9px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink)}.student-name-form button,.roster-manager-dialog .student-pin-form button{padding:8px 9px;white-space:nowrap}.roster-manager-dialog [data-student-row]>small{color:var(--muted);font-size:9px}.roster-manager-dialog .pin-value{white-space:nowrap}.roster-manager-dialog .delete-student{padding:8px}
.roster-files-button{border:1px solid var(--line);border-radius:8px;background:var(--soft);color:var(--green);padding:9px 7px;font-size:9px;font-weight:800;white-space:nowrap;cursor:pointer}.roster-files-button:disabled{color:var(--muted);opacity:.55;cursor:default}
@media(max-width:850px){.roster-manager-dialog [data-student-row]{grid-template-columns:1fr 1fr}.roster-person{grid-column:1/-1}.roster-manager-dialog [data-student-row]>small{justify-self:end}.student-name-form,.roster-manager-dialog .student-pin-form{grid-column:1/-1}.roster-manager-dialog .delete-student{justify-self:end}}
@media(max-width:560px){.roster-launcher{align-items:stretch;flex-direction:column}.roster-launcher button{width:100%}.roster-manager-dialog{width:100%;height:100dvh;margin:0;border:0;border-radius:0}.roster-manager-head{padding:15px}.roster-manager-tools{align-items:stretch;flex-direction:column;padding:10px 15px}.roster-manager-tools>input{width:100%}.roster-filters{display:grid;grid-template-columns:repeat(3,1fr)}.roster-filters button{padding:10px 5px}.roster-manager-dialog .roster-list{height:calc(100% - 174px);padding:10px 12px 20px}.roster-manager-dialog [data-student-row]{grid-template-columns:1fr auto;padding:12px}.student-name-form,.roster-manager-dialog .student-pin-form{grid-column:1/-1}.roster-manager-dialog .pin-value{justify-self:start}}
