Context
Gemini flagged on PR #1216 that focus:ring-primary/50 (50% opacity) on dark bg-surface-container-high (#2a2a2a) yields ~2.8:1 contrast — below the WCAG 2.1 AA 3:1 requirement for UI components.
PR #1216 fixed the two occurrences it touched (BoardSettingsModal) to full focus:ring-primary. But focus:ring-primary/50 is the established convention across ~16 other components (the canonical ColumnEditModal.vue plus LabelManagerModal, FilterPanel, etc. — 18 total usages repo-wide, 0 full-opacity).
Task
Sweep the remaining focus:ring-primary/50 usages to full focus:ring-primary (or another ≥3:1 treatment) so focus indicators are accessible on the dark/paper-night surfaces consistently. Update the canonical token pattern (ColumnEditModal) so future tokenization doesn't reintroduce the low-contrast ring.
grep -rn "focus:ring-primary/50" frontend/taskdeck-web/src
Out-of-scope follow-up from PR #1216 (paper-night straggler tokenization) per the review policy (real finding, tracked rather than fixed piecemeal).
Context
Gemini flagged on PR #1216 that
focus:ring-primary/50(50% opacity) on darkbg-surface-container-high(#2a2a2a) yields ~2.8:1 contrast — below the WCAG 2.1 AA 3:1 requirement for UI components.PR #1216 fixed the two occurrences it touched (BoardSettingsModal) to full
focus:ring-primary. Butfocus:ring-primary/50is the established convention across ~16 other components (the canonicalColumnEditModal.vueplus LabelManagerModal, FilterPanel, etc. — 18 total usages repo-wide, 0 full-opacity).Task
Sweep the remaining
focus:ring-primary/50usages to fullfocus:ring-primary(or another ≥3:1 treatment) so focus indicators are accessible on the dark/paper-night surfaces consistently. Update the canonical token pattern (ColumnEditModal) so future tokenization doesn't reintroduce the low-contrast ring.Out-of-scope follow-up from PR #1216 (paper-night straggler tokenization) per the review policy (real finding, tracked rather than fixed piecemeal).