541e2ed713
Settings is the densest button surface in the app. Per the surface-
phase spec, classify every button on a deliberate token.
Button reclassification per Hybrid rule
- btn-save (~13 instances across General/Account/Notifications/
Integrations/Data/Briefing/Admin tabs): flat accent → Moss
action-primary
- btn-primary (Groups tab "Save Retention", "+ New Group"): flat
accent → Moss action-primary
- btn-secondary (Detect timezone, Test SMTP, Refresh, Export, Add
slot, Preview voice, etc.): outline-on-bg-secondary +
hover-to-accent → Bronze action-secondary, filled
- btn-danger filled (Reset VAPID, Revoke API key Yes): added the
rule (was previously unstyled — relied on no-rule). Now Oxblood
action-destructive.
- btn-danger-outline (Invalidate sessions, Clear observations,
Delete personal data): generic --color-danger → Oxblood
action-destructive
- btn-danger-sm hover (group + member delete): --color-danger →
--color-action-destructive
- btn-delete row hover, btn-confirm-delete (user delete two-stage):
--color-danger → Oxblood. Confirm filled, cancel ghost.
- btn-toggle-open ("Open registration"): flat accent → Moss
- model-delete-btn hover: --color-danger → Oxblood
- btn-warn hover: muted-border-warning → filled-warning
Two-weights-only
- Snapped every font-weight 600/700 to 500.
Out of scope for this PR
- Voice/tone copy audit across labels and help text — per spec,
opportunistic only. Skipped.
- Settings row de-bordering — current section dividers are
structural; left as-is.
- Validation-state colors (.input-error etc.) keep --color-danger
(Error terracotta) per the doc — Error is for validation/error
messages, Oxblood is for destructive actions.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>