Copy fix only. Nothing on the screen moves.
Net change: the heading is replaced and the Yes/No gets its own label. Field order, positions, and layout are exactly as they are today. The heading now introduces the person, so "this person" in the question has something to point back at.
Yes/No is clickable and keyboard operable. Inputs are real and focusable.
Is this person your legal spouse?
Consent text shown verbatim from the current screen — see the flag at the bottom before shipping it as-is.
Two lines differ. Every element stays in the position it occupies today.
<!-- heading: replaced --> <h2 class="pz-heading">Tell us about the person applying with you</h2> <!-- label: new element, sits directly above the existing Yes/No --> <p class="pz-qlabel" id="pz-cb-spouse-label">Is this person your legal spouse?</p> <div class="pz-yn" role="group" aria-labelledby="pz-cb-spouse-label"> <button type="button" data-value="yes" aria-pressed="false">Yes</button> <button type="button" data-value="no" aria-pressed="false">No</button> </div> <!-- name fields: unchanged position, hidden labels added --> <div class="pz-field"> <label class="pz-sr" for="pz-cb-first">Legal first name (required)</label> <input id="pz-cb-first" type="text" placeholder="Legal First Name *" required> </div> <div class="pz-field"> <label class="pz-sr" for="pz-cb-middle">Middle name (optional)</label> <input id="pz-cb-middle" type="text" placeholder="Middle Name (optional)"> </div> <div class="pz-field"> <label class="pz-sr" for="pz-cb-last">Legal last name (required)</label> <input id="pz-cb-last" type="text" placeholder="Legal Last Name *" required> </div> <div class="pz-field"> <label class="pz-sr" for="pz-cb-suffix">Suffix (optional)</label> <input id="pz-cb-suffix" type="text" placeholder="Suffix — Jr., Sr., III (optional)"> </div>
.pz-heading { margin: 0 0 12px; font-size: 15px; font-weight: 700; line-height: 1.35; color: #1F2430; } /* label for the Yes/No — this element is new */ .pz-qlabel { margin: 0 0 6px; font-size: 12.5px; font-weight: 700; color: #4A5061; } .pz-yn { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 14px; } .pz-yn button[aria-pressed="true"] { border-color: #233C90; background: #EDF1FB; color: #233C90; font-weight: 700; } /* visually-hidden labels — keeps the placeholder look, fixes screen readers */ .pz-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
// Replace with the component's own state handling if it already has one. const yn = document.querySelectorAll('#pz-coborrower .pz-yn button'); yn.forEach(btn => { btn.addEventListener('click', () => { yn.forEach(b => b.setAttribute('aria-pressed', 'false')); btn.setAttribute('aria-pressed', 'true'); // onSpouseSelect(btn.dataset.value === 'yes'); }); });
| Element | Current | Replace with |
|---|---|---|
| Heading | Is this person your legal spouse? | Tell us about the person applying with you |
| Question label | none — Yes/No was unlabeled | Is this person your legal spouse? New element, directly above the existing Yes/No. |
| Field order | Yes/No → name fields | No change |
| Suffix placeholder | Suffix (optional) Jr., Sr., etc | Suffix — Jr., Sr., III (optional)optional |
| Consent text | …to obtain my credit Information… | Fix the stray capital: information. See flag below on the wording itself. |
| Name field labels | Legal First / Middle / Legal Last | No change — "Legal" prefix is right, keep it |
| Back / Next | Back / Next | No change |
.pz-sr class keeps the visual design pixel-identical. Drop it
if you'd rather not touch the fields at all.aria-pressed, not a CSS class, so styling and
accessibility state can't drift apart. Same pattern as the journey tiles on the previous screen.