# Verification record — United Legal review V3 Date: October 12–13, 2026. Browser: Chromium via Playwright (desktop 1440 × 900, tablet 820 × 1180, phone 390 × 844). Pages served locally over HTTP from the review folder. Raw results: `docs/evidence/verification-pages.json` (page health, navigation, launcher, motion, reduced motion, forced colours, footer audit), `docs/evidence/verification-part1.json` (earlier run), plus the screenshots in `docs/evidence/` and `docs/comps/`. Legend: **Passed** = observed in the browser. **Preview only** = works locally, sends nothing. **Blocked** = could not be verified from here, with the reason. ## 1. Page health (13 pages × 3 viewports = 39 loads) | Check | Result | |---|---| | Console errors, page errors | None on any page/viewport | | Failed local resources (HTTP ≥ 400) | None | | Horizontal overflow (`scrollWidth` > viewport) | None on any page/viewport, including Persian | | `lang` / `dir` | en/ltr, es/ltr, fa/rtl set correctly on every page | | OpenGlass mount on pages with a Quick Check | `html[data-glass="openglass"]`, library reported as "OpenGlass UI (open-glass-ui) 0.4.0" on all 12 content pages | | Forced colours (Windows high contrast emulation) | `data-glass="opaque"`: the glass island is skipped and the solid-tint card is used | | Opening contact form (name/email/phone before a result) | None on any page | ## 2. Navigation: Lemon Law first, then the state | Check | Result | |---|---| | Practice menu has 7 entries (desktop and mobile) | Passed on all 12 content pages | | Lemon Law entry is a disclosure button, not a link with state links beside it | Passed; 0 top-level state links beside Lemon Law anywhere | | Nested California/Texas list hidden until Lemon Law is clicked (homepage) | Passed on desktop and mobile; after the click the list shows `ca-XX.html` and `tx-XX.html` for the page's language | | On Lemon Law pages the current state is marked and the list is open by default | Passed (the toggle collapses it) | | Keyboard: Tab to Practice Areas → Enter → Tab to Lemon Law → Enter → Tab reaches "California Lemon Law" with a visible outline | Passed (`docs/evidence/verification-tools` keyboard section) | | Homepage Quick Check asks the state only after Lemon Law is chosen | Passed (`home-quickcheck-2-state.png`) | | Lemon Law card reveals the state step only after its button is clicked | Passed (`home-desktop-lemon-card-state-step.png`) | | Footer Lemon Law link → chooser page; other practices → homepage cards | Passed (footer audit) | ## 3. Quick Check (state pages, driven through the real buttons) Ten scenarios, five per state (`docs/evidence/qc-*.png`). In every scenario: one question at a time, no contact field before the result, result shown with the legal notice and the state deadline reminder, "Would you like to discuss a review?" opens the sample form only on request, "Review my answers" returns to question 1 with the earlier answer still selected. | Scenario | Result tier | |---|---| | CA: new, in-state, 4 attempts, safety, > 30 days, inside window, defect remains | review — "Your repair history deserves a closer look" | | CA: no repair attempts yet | early — "Start with the warranty and repair record" | | CA: used vehicle, warranty unsure, 2 attempts | used — "Review the warranty and sale documents" | | CA: out-of-state lease, business use, repaired | state — "The state connection needs review" | | CA: exactly 30 days, two attempts, safety | review | | TX: new, in-state, 4 attempts, ≥ 30 net days, written notice | review | | TX: registered resident, 2 safety attempts, no written notice | review (notice flagged for review) | | TX: certified pre-owned, one attempt | used | | TX: towable RV, military, uncertain answers | manual — "A few details need an individual review" | | TX: out of state, no repairs | state | Rules engine: `node tests/rules.test.cjs` → 15/15 pass; `qualifier-rules.js` is byte-identical to the supplied source; the three locale files are identical to the source except the added `state_swap` string. Homepage Quick Check: topic → state → the same state questions inline (14 steps for California) → result before contact; other topics → one situation question → "what to gather" guidance with contact links. Language switch on the homepage navigates to the other language's page and carries the progress (`home-es-case-chat-carried-state.png`: "Question 3 of 14" became "Pregunta 3 de 14" with the same question). ## 4. Case Chat (separate conversational interface) | Check | Result | |---|---| | Opens from the floating launcher and from the inline link in the card; labelled "Guided questions · Not live chat" | Passed (CA, homepage) | | Replies advance the conversation and the on-page card in step ("Question 3 of 12" in both) | Passed | | Language select inside the dialog: Spanish title "Consulta guiada", Persian title "گفت‌وگوی راهنما" with `dir="rtl"`; history kept | Passed on the state pages; on the homepage it navigates to the language page and carries progress | | Keyboard: focus moves into the dialog, Tab is trapped, Escape closes, focus returns to the launcher | Passed | | Re-open shows the same transcript | Passed | | No typing indicator, "online" badge, or delivery claim | Passed; the call link says "Calling opens your phone app. Your answers are not sent." | | Chooser page: one question (which state?) then opens that state page | Passed | ## 5. Launchers and the lemon | Check | Result | |---|---| | Lemon mascot only on Lemon Law pages (chooser, California, Texas); neutral speech-mark pill elsewhere | Passed on all 36 loads | | Lemon hop is real motion: 5 distinct transform values sampled over 9 s | Passed (CA and chooser) | | Pause control stops the hop (`animation-play-state: paused`, `aria-pressed="true"`) | Passed | | Reduced motion: hop animation `none`, video paused with poster, no practice-icon playback | Passed | | Launcher never sits on a control: it lifts above button rows (compact, mascot only) and on the homepage hides itself while it would otherwise cover the proof chips or lede, reappearing on scroll | Passed; first-screen state per page in `verification-pages.json` → `launcherCheck` | | Launcher never covers the Quick Check card | Passed (moves to the opposite corner on desktop, hides on narrow screens while overlapping) | ## 6. Motion observed, not asserted | Check | Result | |---|---| | Hero video: `currentTime` advances between two samples 1.2 s apart; pause control works | Passed (desktop, tablet, phone) | | Practice icons: all seven play once when scrolled into view and rest on their final drawn frame; hover/focus replays | Passed (`HomeMotion.inspect()` → all `complete`) | | Reduced-motion posters: regenerated from the last frame of the brand-coloured animations (`brand/*-poster.svg`) | Passed (`home-desktop-practice-board-reduced-motion.png`) | | State-page beacons animate; `none` under reduced motion | Passed | | Smoke effect on the artwork | Present (WebGL canvas); not separately measured | ## 7. Languages and right-to-left | Check | Result | |---|---| | Spanish and Persian homepage and chooser pages: identical tag structure to English (validator), only text and translatable attributes differ | Passed | | Persian: `dir="rtl"`, Vazirmatn, Persian numerals in progress ("سؤال ۳ از ۱۳"), phone numbers and addresses kept left-to-right inside `` | Passed | | Mid-flow language switch on a state page keeps answers (lease + auto preserved into Persian and Spanish) | Passed (`tx-fa-midflow.png`) | | No Arabic anywhere | Passed (no `ar` option, file or string) | | Spanish register | The new pages use usted; the preserved state-page Spanish mixed tú/usted and was normalised to usted (see change log) | ## 8. Footer | Check | Result | |---|---| | Disclaimer with the non-affiliation sentence, BBB seal image, four social circles, four yellow contact circles, navy box, yellow policy bar | Present on all 12 content pages in all three languages | | Destinations | unitedlegal.com pages (Chapter 7, Chapter 13, foreclosure, harassment, credit, attorneys, blog, contact, privacy, terms): HTTP 200. Instagram, LinkedIn: 200. X: 403 and Facebook: 400 (bot blocks on automated requests, not dead links). BBB profile: 403 bot challenge (known from the handoff). `tel:`, `sms:`, `mailto:`, `wa.me` recorded, never opened, nothing sent. | ## 9. Liquid Glass OpenGlass UI 0.4.0 is mounted on every Quick Check card (`vendor/united-glass.js`, React 18.3.1 bundled). Content stays ordinary DOM; yellow actions, selected-tile outlines and keyboard focus rings are unchanged (focus outline on a tile: `solid rgb(249, 233, 0)`). Fallbacks verified: forced colours → opaque card; the library absent → original translucent card (`glass.css`). ## 10. Legal corrections, verified in the browser after the change | Check | Result | |---|---| | California safety question reached through the real flow (two attempts) | "Is this same defect likely to cause death or serious bodily injury if the vehicle is driven?" with the new hint (`qc-ca-en-safety-question-corrected.png`) | | Texas result reminder after a four-attempt path | "Do not wait: a TxDMV Lemon Law complaint and its filing fee must reach TxDMV within six months…" (`qc-tx-en-result-corrected-deadline.png`) | | Texas FAQ "Is there a deadline?" in en/es/fa | New wording rendered on all three pages; no overflow | | Homepage en/es/fa | Gavilanes "Admitted in California, 2016"; verbatim reviews with the new note; disclosure begins with the debt-relief-agency sentence; no overflow | | Chooser en/es/fa | Static disclosure present; Texas bullet now says the complaint and fee must reach TxDMV; no overflow at desktop or phone | | Rules engine and locales after the edits | 15/15 tests; all three locale files load with 237 common keys; translation validators OK for all eight translated pages | ## 11. Deployed copy The build was uploaded to the Hostinger account that holds a migrated copy of unitedlegal.com (`public_html/review-v3/`, 126 files) and a subdomain `review.unitedlegal.com` was created with that folder as its root. Rendered through the Hostinger server directly (requests sent to 31.97.208.48 with the Host header, because the domain's DNS at GoDaddy still points to WordPress.com): homepage title correct, OpenGlass mounted, video playing, Barlow Condensed and Montserrat loaded, seven animated icons, footer with BBB seal; Persian California page right-to-left with the lemon launcher; no console errors, no failed requests (`deployed-home-en-hero.png`, `deployed-ca-fa-hero.png`). ## 12. Not verified from here - Real iPhone/Android devices, Safari and Firefox: only Chromium viewports were used. - Screen-reader behaviour beyond names, roles and focus order. - Delivery of any tel/SMS/WhatsApp/email: by design nothing was sent. - The BBB profile, X and Facebook pages blocked automated requests; destinations match the source site's links. - Smoke-plume rendering was observed visually in comps only.