7d82be864d
Web tokens.json was reshaped for the SPA theme toggle (#362) with colors split into dark/light/flat blocks. gen_tokens.dart still expected a flat string map and threw _Map<String,dynamic> cast errors in the flutter CI workflow. Read colors.dark + colors.flat and merge into the existing flat namespace; light variants will be emitted when the Flutter client gains a theme toggle as part of #356 parity work. Adds hyphen→camelCase normalization so the new on-action token surfaces as onAction.