DrawingCard stacks a caption layer over the SVG: each data-label / data-description annotation renders a themed caption just below its element, mapped to pixel space via a shared svgViewportFit (refactored out of the painter so the overlay and the paint use identical viewBox-fit math). Display-only (IgnorePointer). Widget-tested. data-lightbox is captured in the model; the tap-to-zoom interaction is the last follow-on. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>