Oops! Sorry!!


This site doesn't support Internet Explorer. Please use a modern browser like Chrome, Firefox or Edge.

Padzilly — Pre-Qual Step 2 · Option B Build Spec
Padzilly · Buyer Pre-Qualification Flow · Screen 2

Option B — build spec

Four journey tiles in one row, with the copy fixes and height trims applied.

Net change: the four stacked tiles become a single four-column row, four strings are replaced, and three elements come out. Recovers roughly 155 px of height. Everything else on the screen — dropdowns, map component, Back/Next — is untouched.

Live preview

Tiles are clickable and keyboard operable. Narrow your browser below 420 px to see the 2×2 mobile fallback.

Map is a placeholder. The real MapLibre component drops in unchanged at 150 px height.

Tile row — markup

HTML
<h2 class="pz-q" id="pz-journey-label">Where are you in the home buying journey?</h2>

<div class="pz-journey" role="group" aria-labelledby="pz-journey-label">
  <button type="button" class="pz-tile" data-value="browsing"       aria-pressed="false">Just browsing</button>
  <button type="button" class="pz-tile" data-value="looking"        aria-pressed="false">Actively looking</button>
  <button type="button" class="pz-tile" data-value="ready"          aria-pressed="false">Ready to buy</button>
  <button type="button" class="pz-tile" data-value="under_contract" aria-pressed="false">Under contract</button>
</div>

<!-- data-value strings are placeholders. Replace with whatever the
     record already stores so no migration is needed. -->
CSS
.pz-journey {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 6px;
  margin: 0 0 4px;
}

.pz-tile {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  min-height: 44px;          /* equal height, all four wrap to 2 lines */
  padding: 6px 4px;
  border: 1px solid #C9CFE0;
  border-radius: 4px;
  background: #fff;
  font-family: inherit;
  font-size: 11.5px;
  line-height: 1.25;
  color: #4A5061;
  cursor: pointer;
  transition: border-color .12s ease, background-color .12s ease;
}

.pz-tile:hover { border-color: #233C90; }

.pz-tile:focus-visible {
  outline: 2px solid #233C90;
  outline-offset: 2px;
}

.pz-tile[aria-pressed="true"] {
  border-color: #233C90;
  background: #EDF1FB;
  color: #233C90;
  font-weight: 700;
}

/* mobile fallback — 4 across will not hold below ~420px */
@media (max-width: 420px) {
  .pz-journey { grid-template-columns: 1fr 1fr; gap: 8px; }
  .pz-tile    { font-size: 12.5px; }
}

@media (prefers-reduced-motion: reduce) {
  .pz-tile { transition: none; }
}
JS — single-select behavior
// Replace with the component's own state handling if it already has one.
const tiles = document.querySelectorAll('#pz-prequal .pz-tile');

tiles.forEach(tile => {
  tile.addEventListener('click', () => {
    tiles.forEach(t => t.setAttribute('aria-pressed', 'false'));
    tile.setAttribute('aria-pressed', 'true');
    // onJourneySelect(tile.dataset.value);
  });
});

Text changes

ElementCurrentReplace with
Tile 1I'm just browsingJust browsing
Tile 2I'm actively looking at home (plural bug)Actively looking
Tile 3I'm ready to buy now!Ready to buy
Tile 4I've signed a contractUnder contract
Helper textPick a general area, this help us connect you with a local expert and you can always change it laterPick a general area so we can connect you with a local expert. You can change it later.
Map instructionUse + to zoom in, then tap the area you're interested inRemove — the helper line above covers it
County legend chip• CountyRemove — restates the dropdown beside it
Map height≈180 px150 px
Question headingsWhere are you… / What area…No change
Back / NextBack / NextNo change

Notes for the developer

Read before implementing
  • The data-value strings are placeholders. If these answers feed segmentation, routing, or reporting, keep whatever value the record already stores and change only the visible label. No migration should be needed for this.
  • "Local expert" is still unresolved. If it means a loan officer, say loan officer; if it means a buyer's agent, say agent. Buyers respond better knowing who will contact them, and this screen is collecting their location precisely to make that match.
  • Verify the scrollbar is actually gone at the shortest viewport you support, not just on a desktop monitor. The height figures here are estimates from a screenshot. If it still scrolls, the next cheapest trim is tightening the margin above "What area are you considering?".
  • Selected state uses aria-pressed, not a class, so the styling and the accessibility state can't drift apart.