6.0 in May reads every JSON file in styles/ as an alternative set of settings and styles, merged over the base.
theme/
theme.json
styles/
dark.json
compact.json
high-contrast.json
// each file has the same shape as theme.json, plus a
// title that appears in the editor:
{ "version": 2, "title": "Dark",
"settings": { "color": { "palette": [...] } } }
The merge is deep, so a variation overriding one palette entry inherits the rest — which is what makes four client sites differing only in colour a single theme with four files. The title has to be translatable and is not by default, which needs the title to be added to the theme’s translation strings separately.