Members created before the SH-326 model can carry data the current
backend contract rejects (PUT team-members accepts only the
Dispatcher/Scheduler/Admin roles and the ten palette colors), which made
them impossible to edit.
- Legacy roles (e.g. Manager) now show as "<role> (legacy)" in the edit
form with helper copy asking to choose Dispatcher, Scheduler, or Admin;
save stays blocked until one is chosen and the legacy value is never
sent. View mode marks the stored role as legacy too.
- Stored colors outside the current palette are canonicalized when they
only differ by casing; otherwise the nearest palette color (RGB
distance, first as fallback) is preselected with a notice naming the
replaced value, so saving never fails on an untouched legacy color.
- Role/color options move to team-member-form-options.ts with unit tests
for canonicalization, nearest-color matching, and replacement notices.