--- status: queued classification: server-only-no-actually-just-frontend-styles-cleanup parent_convoy: unify-glass-panel-surfaces blocked_by: [] size: small budget_hours: 2-3 --- # migrate-button-input-mobilenav-to-glass-primitive ## Why The `unify-glass-panel-surfaces` convoy's Brief 7 added a CI gate that forbids bespoke `var(--glass-surface-*)` inline-style usage outside a documented allowlist. When the gate was being added, three files turned out to still handroll their own glass surfaces and had to be admitted to the allowlist to ship the gate now: - `components/ui/Button.js` — the `secondary` variant carries `style={{ background: 'var(--glass-surface-high)', backdropFilter: '...' }}` and a Tailwind arbitrary class `hover:bg-[var(--glass-surface-mid)]`. - `components/ui/Input.js` — the input fill is `style={{ background: 'var(--glass-surface-high)', backdropFilter: '...' }}` on the outer wrapper of the input control. - `components/MobileNavigation.js` — the bottom-nav background layer is `style={{ background: 'var(--glass-surface-mid)', backdropFilter: '...' }}`. The pattern (inline `background: var(--glass-surface-X)` + inline `backdropFilter`) is exactly what the convoy spent six briefs eliminating elsewhere. These three are the residual. ## Goal (1 sentence) Migrate `components/ui/Button.js`'s `secondary` variant, `components/ui/Input.js`, and `components/MobileNavigation.js` to compose `` (with the right `cornerLights` + `blur` + `tint` props from Brief 1) or the appropriate `.glass-panel-*` / `.page-header-glass` class, then **delete** the three entries from the `forbidden-bespoke-glass-surface` allowlist in `.github/workflows/ci.yml` so the gate covers them too. ## Files in scope - `components/ui/Button.js` — the `secondary` variant block only; leave `primary`, `danger`, `ghost`, etc. as-is unless they legitimately need the same migration (they don't today). - `components/ui/Input.js` — the outer wrapper style only. - `components/MobileNavigation.js` — the bottom-nav backdrop layer only. - `.github/workflows/ci.yml` — the `forbidden-bespoke-glass-surface` check (now Check 7/7 of the consolidated `forbidden-patterns` job). Delete the three pending entries from `GLASS_ALLOWLIST`, leaving only the 3 chrome blocks. ## Open questions for the architect 1. **`