Each annotation can be expanded into its own nested timeline. Reuses the
dormant :timeline-stack: annotations carry a :parent (:root = top level),
expanding pushes the annotation id, and only annotations whose :parent
matches the stack top are surfaced — so nested annotations stay invisible
on the main timeline.
- crop: the expanded annotation's own spans define a time window + the set
of involved tracks; non-involved tracks collapse to height 0 (CSS-
transitioned, so tracks animate away and survivors slide up), and the
view offsets/crops to the window
- breadcrumb bar + back button (shown only when nested) fully restore the
main timeline
- new annotations attach to the current context; the expand button shows a
child count and delete removes the whole subtree
- seed data (Opening rally + 2 children, Net-cam beat) for testing, plus a
one-time localStorage reset so it shows
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>