@jezzdalgarno – thanks – your approach worked.
I established the menu-item-id that was being generated in the top level item of the broken menu and deleted the row of that ID in the wp_posts table. (It wasn’t a real post)
That then generated another item as the top level in the menu, and I deleted that too.
And so on, trying the menus section on the dashboard each time, until it miraculously reappeared.
Not sure what damage I’ve done, but at least it’s usable again.