Two 24-hour pickers seeded from object values ({ hours, minutes }) act as the start and end of a meeting, with a live "9:00 - 10:30" range readout that updates as either field changes.
