feat(web): mobile mechanical sweep — pointer-aware arrows, h3 dividers, modal safe-area

- HorizontalScrollRow arrows bump 32px → 40px on coarse pointers
  (touch screens) for finger-friendly hits; mouse pointers unchanged.
- AlphabeticalGrid divider letter is now <h3> so screen readers
  announce it as a section heading. Margin reset to preserve layout.
- Modal overlay gets p-4 so max-w-md modals stay inside the safe
  area at 375px viewport. Covers all routes that use the shared
  <Modal> component (discover track-confirm, quarantine
  typed-DELETE, users password-reset, etc.).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-09 20:21:38 -04:00
parent f03a0042e8
commit 16e0e98943
2 changed files with 11 additions and 1 deletions
@@ -33,7 +33,7 @@
{#each segments as seg, i (i)}
{#if seg.divider}
<div class="divider">
<span class="letter">{seg.divider}</span>
<h3 class="letter">{seg.divider}</h3>
<span class="rule"></span>
</div>
{/if}
@@ -61,6 +61,8 @@
font-size: 24px;
font-weight: 500;
color: var(--fs-parchment);
/* h3 default browser margin would push the divider; reset. */
margin: 0;
}
.rule {
flex: 1;
@@ -152,4 +152,12 @@
}
.arrow:hover:not(:disabled) { color: var(--fs-parchment); }
.arrow:disabled { opacity: 0.3; cursor: not-allowed; }
/* Coarse pointers (touch screens) get larger arrows for finger-friendly
hit area; mouse pointers keep the visually compact 32px size. */
@media (pointer: coarse) {
.arrow {
width: 40px;
height: 40px;
}
}
</style>