Materials are chosen when submitting a part. A material can have an optional specification (e.g. Aluminum → Thickness) — give it a label and a list of options, and submitters must pick one. Removing a material doesn't change parts already assigned to it.
CSV columns: name, types, spec_label, spec_options.
Separate multiple types or options with ;. Rows whose name matches an existing
material update it; others are added.