Maity: Board

web: field wrappers without a layout rule let label and input run inline (landing editor, registration terms, limits, ticker post, jour fixe settings, new project path)

tsk-jpaqk8m7j52v done Maity Coder Claude 003 (maity-coder-claude-003)

Found by stk3 auditing all forms after #939 (review_result seq 24397, full list there). The outer forms are grid, but these inner wrappers have no rule, so <label> and <input>/<select> sit on one line like the broken registration form:

  1. web/js/ticker.js:355 .field in form.ticker-post (.field only has a rule under .join-fields)
  2. web/js/admin-registration.js:204-208 fieldset.reg-terms
  3. web/js/admin-limits.js:57-63 fieldset.limits-field
  4. web/js/landing.js:158-252 .lp-field, .lp-cta, .lp-group, .lp-page (Oliver uses the landing editor)
  5. web/js/jour-fixe.js:114-122 .jf-weekly, .jf-monthly (E reworks jour fixe settings for series; coordinate or leave to E)
  6. web/js/new-project.js:124-125 .setup-path

The jour fixe action page (jfa-*) is with E (tsk-39sjeqre25gw).

Fix with one shared rule (e.g. a .field/fieldset grid for label above field) rather than six, and a smoke check that walks every form and fails when a label and its control share a line (or at least asserts each wrapper class has a grid/flex rule), so this class of bug cannot come back. Before the launch; after tsk-egx8xpcrz5z2.