diff --git a/frontend/src/assets/components.css b/frontend/src/assets/components.css index e9632a2..2b9c148 100644 --- a/frontend/src/assets/components.css +++ b/frontend/src/assets/components.css @@ -9,9 +9,19 @@ * because a scoped duplicate is invisible to every tool — it isn't a rule * violation, isn't a broken reference, and isn't a recorded snippet. * - * GEOMETRY LIVES HERE; the class names are the app's existing ones so no - * template changes. Every value is a design-system token, so a palette or scale - * change moves the buttons rather than stranding a copy that no longer matches. + * GEOMETRY LIVES HERE. Every value is a design-system token, so a palette or + * scale change moves the buttons rather than stranding a copy that no longer + * matches. + * + * A button is `variant + size`, composed in the template: + * btn-primary a page action + * btn-primary btn-compact a row action + * btn-ghost btn-inline an affordance inside a card + * btn-primary btn-block a form's single submitting action + * Semantic per-view names (.btn-save, .btn-delete-task, …) were the thing that + * drifted, because a name says what a button is FOR and nothing about what it + * should look like — so two buttons doing the same job in two views had no + * reason to match, and didn't. * * MIGRATION NOTE — this file is deliberately safe to land ahead of the removals. * These are plain selectors (specificity 0,1,0); a Vue `