Fixed accessibility errors across multiple component categories:
**Admin Modal Components (7 errors fixed):**
- BaseModal: Added role="presentation" to backdrop, role="dialog" to modal
- BaseModal: Added tabindex and keyboard handlers
- MediaDetailsModal: Added track element for video captions
**Admin Form Components (2 errors fixed):**
- EssayForm: Changed label to div for Tags section
- PhotoPostForm: Changed label to div for Caption section
**File Upload Components (11 errors fixed):**
- FileUploadZone: Added role="region" and aria-label to drop zone
- GalleryManager: Changed label to div, added role="button" to draggable items
- GalleryUploader: Added role, aria-label, tabindex to drop zones and gallery items
- ImagePicker: Changed label to div
- ImageUploader: Changed label to div, added role/aria-label to drop zone
- MediaInput: Changed label to div
**Admin List Components (4 errors fixed):**
- PostDropdown: Added role="menuitem", tabindex, keyboard handler to menu items
- PostListItem: Changed article to div with role="button", added keyboard handler
**Public UI Components (14 errors fixed):**
- AppleMusicSearchModal: Added role="presentation" to overlay, role="dialog" to container
- Avatar: Added role="presentation" to hover container
- Lightbox: Added role="dialog", tabindex, keyboard handlers
- ProjectContent: Fixed redundant alt text on gallery images
- Slideshow: Added role="button", tabindex, keyboard handlers to clickable images
- TiltCard: Added role="presentation" to tilt container
**Editor Components (5 errors fixed):**
- LinkEditDialog: Added role="dialog" and tabindex
- UrlEmbedExtended: Changed role from "article" to "button" for interactive embed cards
**Route Pages (2 errors fixed):**
- admin/media/upload: Added role="region" and aria-label to drop zone
- photos/[id]: Added role="presentation" to mouse tracking container
Total: 45 accessibility errors fixed (109 → 64 errors remaining)
- Merge albumStream and nowPlayingStream into unified musicStream store
- Simplify confidence scoring to binary detection (playing/not playing)
- Create single source of truth for music state across components
- Fix synchronization issues between header and album indicators
- Make Album spring animation more subtle (stiffness: 150, damping: 25)
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Disabled games for now
* Added failsafe for when last.fm can't find an album
* Updated to use rems
* Extracted RecentAlbums into a component
* Fixes for mobile