/* Long enrollment lists stay bounded; every seeded row remains accessible. */
.dense-table {max-height:480px;overflow:auto;scroll-padding-top:48px;overscroll-behavior:contain}
.dense-table table {border-collapse:separate;border-spacing:0}
.dense-table thead th {position:sticky;top:0;z-index:2;background:#f7f9fa}
.roster-collection > label {max-width:360px}
.roster-count {font-size:12px;color:var(--muted);margin:12px 0}
.roster-rows {max-height:480px;overflow:auto;overscroll-behavior:contain}
.roster-member {display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--line)}
.roster-member > span {width:28px;color:var(--muted);font-size:12px;text-align:center;flex-shrink:0}
.roster-member small {display:block;margin-top:3px}
.phone-main .roster-rows,.phone-main .dense-table {max-height:360px}
.gw-sheet {scroll-padding-top:130px}
body[data-role="admin"] dialog {max-height:90vh;overflow:auto}
