4.3.6
Accessibility floor for every Core Form (and Core Poll) input.
This release is about making the default Core Form accessible by default — not “accessible if the author remembers to opt in.” Whether you load only the skeleton (forms.css), only the themed stylesheet (form-theme.css), or both, the floor holds.
What’s in
- 44 × 44 CSS px touch target on every form control. WCAG 2.5.5 AAA target size. Applied to every text-type
input,select,textarea, andbuttonin both stylesheets so the rule survives whether the theme is loaded, disabled, or partially overridden. - Windows High Contrast Mode-safe keyboard focus. The themed
:focus-visiblestate used to beoutline: none+ coloured box-shadow — HCM strips the box-shadow and the ring vanishes. Now:focus-visiblepairs the box-shadow with a transparent 2px outline; HCM forces the transparent outline to the system focus colour, so keyboard users on HCM still see a ring. - Accessibility baseline in
forms.css. Authors who disable the form theme used to drop back to a bare browser stylesheet. The skeleton now ships a tiny accessibility section at the top — 44px target,currentColorfocus outline,prefers-reduced-motiontransition kill-switch — so disabling the theme doesn’t disable accessibility. - Textareas are 5 lines tall by default. Browsers ship
rows="2"which is comically short for paragraph answers. Both stylesheets now setmin-height: calc(5lh + 22px)(with a140pxpx fallback for older browsers) — textareas grow with the host theme’s line-height instead of being pinned to a px value.
Asset loading
- Form and poll stylesheets now print at the bottom of
<head>. Enqueue priority bumped from20 → 99sowp_enqueue_stylecalls land after the host theme’s. WordPress prints in enqueue order → Core Forms styles cascade over theme styles cleanly, no!important, no specificity arms race. - Poll CSS is back in
<head>.poll-frontend.cssused to enqueue insiderender_poll_shortcode()duringthe_content— afterwp_headhad already printed — so it landed in the footer.PollFrontend::maybe_enqueue_detected_poll_assets()now pre-scans forcore-forms/pollblocks and[cf_poll]shortcodes atwp_enqueue_scriptspriority 99 and pre-enqueues the stylesheet. Lands in<head>on poll pages, omitted entirely everywhere else.
Upgrading
Just update. If a textarea on a live form previously sat awkwardly between 2 and 4 lines, it’ll now be a comfortable 5; everything else is non-visual or strictly additive.
🤖 Generated with Claude Code