Function
hear-the-difference for a new visitor, quick-review for a returning learner
One recording sounds at a time — useClipSequence stops the clip in
progress before starting another, so Play both and a word button never
talk over each other. A word's button is aria-pressed exactly while its
clip plays, and a clip the browser refuses leaves every button released.
The bar's fill animates only while its word plays and is still when the learner prefers reduced motion; the pressed state carries the meaning.
The home's interactive minimal-pair card: ship /ɪ/ against sheep /i/, each with a recording, a duration bar and a note tying both vowels to words the learner already says.