. Appears on focus for keyboard/screen-reader users. [I3] No
landmark. Wrapped player-container in
. [I4] No
semantic element. Changed header-bar
to
. [I5] Progress bar missing ARIA. Added role="slider", aria-label="Playback position", aria-valuemin="0", aria-valuemax (updates to duration), aria-valuenow (updates with current time), tabindex="0". Added keyboard support: Left/Right arrows to seek ±5 seconds. [I6] Volume slider missing aria-label. Added aria-label="Volume" on the range input. [I7] Status message not in aria-live region. Added aria-live="polite" on #status-message so screen readers announce playback state changes. [I8] Voice tab click used e.target instead of e.currentTarget. Clicking the icon inside a tab returned undefined for dataset.voice. Fixed to use e.currentTarget.dataset.voice (or closest('[data-voice]')). [I9] Incomplete bookMap in formatBookName(). Only mapped Genesis–Job. "Song of Solomon" displayed as "Songofsolomon" in now-playing. Extended map to all 39 OT books. [I10] Wrong colors in hover/animation CSS. book-card::before gradient and voice-tab:hover used rgba(30,58,138,...) (blue) instead of primary red. Fixed to use rgba(139,0,0,...) matching --color-primary #8B0000. [I11] No footer. Added