Skip to content

fix(mobile): mobile pass: 44px tap targets, BETA badge on phones, dvh/safe-area, 16px inputs (A98) - #69

Merged
CMaintz merged 3 commits into
mainfrom
fix/mobile-pass
Sep 26, 2026
Merged

CMaintz merged 3 commits into
mainfrom
fix/mobile-pass

Conversation

@CMaintz

@CMaintz CMaintz commented Sep 25, 2026 •

Copy link
Copy Markdown
Owner

Summary

A real mobile audit and fix pass (A98). Headless Edge with device emulation (isMobile, hasTouch), 390x844 @3x, 360x800 @3x, 768x1024 @2x, dark + light, EN + DA, 16 pages + 10 interactions (search dropdown, header / theme / language menus, About modal, tour welcome + steps, timeline term panel, study quiz). Each page checked for scrollWidth > innerWidth, text < 14px, tap targets < 44x44, inputs < 16px, and fixed/sticky overlap.

Result: no horizontal overflow before or after (all 96 page/device/lang combos). The real problems were undersized controls, the BETA ribbon over content, iOS input zoom, and a compare bar that pinned ~140px of a phone screen. Fixes apply to phones only (min-h-11 etc., reset at sm/md), so the desktop layout is unchanged (t768 counts are identical before/after).

Explorer files (Explorer.tsx, explorer-*.ts, GraphLegend.tsx, explorer page) were not touched. Their findings are listed as follow-ups below.

Tap targets < 44px (360x800, EN)

page before after
home 17 5
term (LLM) 83 8
compare index 31 ~5
compare pair 20 7
study 22 5
review queue 882 46
A-Z 36 5
404 / article / account 16 / 16 / 13 5 / 5 / 6

What's left is mostly short words that are 44px tall but narrower than 44px ("AI", "Data"), spaced by gaps; inline links in running text; and the timeline rows (see below).

Checklist

Issue Page Status
BETA ribbon covers content, chips, search results, tour pill and term panel text all Fixed: ribbon is md+ only; phones get an amber BETA badge by the logo
Theme (26px), language (28px), menu (30px) buttons too small header Fixed: 44x44 below md
Mobile nav links 28px; menu can't scroll on short screens header menu Fixed: 44px rows, max-h-[calc(100dvh-4rem)] + scroll, shadow
Theme / language menu items 36px menus Fixed: 44px below md
Footer links 16px tall, 12px text all Fixed: 44px, 14px on phones ([data-site-footer] rule, see note)
Back-to-top small, ignores the home indicator all Fixed: 44px, env(safe-area-inset-*)
min-h-screen (100vh) body all Fixed: min-h-dvh, viewport-fit=cover
Search input 42px; long results list runs off-screen home Fixed: 46px; list max-h-[70dvh] scrolls
"Tip: press / to search" shown on touch home Fixed: hidden on pointer: coarse
Home CTAs 34px home Fixed
Breadcrumbs, Copy link (26px, 12px), read-article link (21px) term, compare Fixed
Learn-first / relationship / mentioned-in chips 30px term Fixed: 44px
Status buttons 12px text, 26px term (check yourself) Fixed: 14px, 44px
Quiz answers / next buttons 34-38px term, study Fixed: 44px
Compare filter input 14px (iOS zoom), 38px compare index Fixed: 16px, 44px
Sticky chip bar + filter pins ~140px of an 800px screen compare index Fixed: sticky from sm only; section scroll-mt adjusted
Pair links 21px compare index Fixed: 41px (inline-block py-2.5)
Study "Quiz me on" select 14px (iOS zoom) study Fixed: 16px, 44px
Account email input 14px (iOS zoom), buttons 34px account Fixed
Review list links 20px (882 targets) review Fixed: 44px rows
A-Z letter chips 30x30 terms A-Z Fixed: 44x44
404 buttons, article back link 404, articles Fixed
Code blocks could overflow articles Fixed: [&_pre]:overflow-x-auto (none overflow today)
Tour card 60vh; close x ~20px; buttons 34px; pill under the ribbon tour Fixed: 60dvh, 44px close/buttons, safe-area pill
About close 36px; link pills 30px About modal Fixed: 44px. Dialog fits 360x800 (native dialog scrolls)
Timeline filter chips 26px, zoom 28px timeline Fixed: 44px on phones
Vertical timeline rows 20px, names 10px, lane heads 11px, era 9px timeline Partly: rows 24px (WCAG 2.5.8 min), 11px names, 12px heads, 10px era; text-sm in single-domain view. Follow-up: 44px rows would triple the chart height; the list view is the full-size alternative
Timeline popover close 12px; bottom inset timeline Fixed: 44px, safe-area
List-view <summary> 20px timeline Fixed: 44px
Term panel (timeline) timeline OK: full-screen sheet, fits, no overlap once the ribbon moved
Relationship chip "why" only in a title tooltip (hover only) term Follow-up: needs a visible or tap way to show it (content/design call)
Mini-graph edge names on hover only (tap opens the term) term Follow-up: Graph.tsx uses the shared attachHover; left alone
Source links in lists ~19px term Follow-up (inline-ish list text; low priority)
Data page URL links 38px, in a cramped 3-column table data Follow-up (fits, no overflow)
Tablet portrait (768x1024) inherits desktop sizes: header buttons 26-30px, chips 30px (resets fire at sm/md) all Follow-up: use pointer-coarse: variants instead of breakpoint resets
Danish-suggestion banner 'keep English' button: dismissed in every audit run, never measured EN pages Follow-up: check its size
12px uppercase eyebrow headings (~30 per page) many Intentional, design-system labels, not body text; not changed

Explorer follow-ups (not touched, other agents own these files)

Issue Status
2D / 3D toggle 31x24, 12px text follow-up
"Controls" button 83x26, 12px follow-up
Legend <summary> 58x15, 11px; legend body 12px throughout follow-up (GraphLegend.tsx)
About "i" button 36x36 follow-up (use 44px on phones)
Domain labels ("Platform", "Computer science") clipped at the 360px edges at default fit follow-up
Cluster labels unreadable at default zoom on a phone follow-up
Term-page mini-graph legend (same GraphLegend) 11-12px, summary 15px tall follow-up
The fixed ribbon no longer shows below md, so the Explorer map corner is clear done via Base.astro

Notes

Test plan

  • mise run fix && mise run gate green (lint, typecheck, vitest + build, audit)
  • Emulated audit re-run against the production build (astro preview): 0 overflow, 0 inputs < 16px
  • Owner: try on a real iPhone (notch / home indicator) and Android

CMaintz and others added 3 commits September 25, 2026 22:56
…6px inputs (A98)

Emulated mobile audit (Edge; 390x844, 360x800, 768x1024; touch; both themes and
languages). No horizontal overflow before or after; undersized controls fixed with
phone-only min-h-11 (reset at sm/md so desktop is unchanged). The corner BETA ribbon
is md+ only; phones get a header badge. Explorer files untouched (follow-ups in PR).
@CMaintz
CMaintz merged commit 168869b into main Sep 26, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant