Overlay name (zarr group name)
Overlay type: 'overlay_text', 'overlay_image', 'overlay_video', 'overlay_html'
Position in normalized screen coords [0, 1], top-left origin
Opacity 0-1
Anchor point for positioning
Optionalvisible_Dimension-based visibility filter
Transition type: 'none' or 'fade'
Transition duration in seconds
Whether overlay captures pointer events
Z-ordering index (insertion order)
OptionalhoverWhether this overlay acts as a hover tooltip (content updated by GPU picking)
Optionalhover_Size of hover image thumbnails as [width, height] in viewport fractions
OptionaltextOptionalfont_OptionalfontOptionalcolorOptionalwidthOptionaltext_Optionalline_OptionalbackgroundOptionalpaddingOptionalstroke_Optionalstroke_Optionalblend_CSS mix-blend-mode (e.g. 'difference', 'screen', 'multiply')
Optionalimage_Optionalsize[width, height] as viewport fractions; a null height keeps the media's own aspect.
Optionalvideo_Opaque file beside the group: video.webm (VP9, optionally with alpha) or video.mp4.
Optionalposter_Optional still (PNG/JPEG/WebP) shown before play and where the video cannot decode.
Optionalalpha_'stacked': the frame is the colour on top and its alpha as a grey matte of
the same size below (an opaque clip twice as tall). The manager recombines
the halves in a shader (ui/video-matte.ts) — transparency that survives
Safari / WKWebView, which decode a VP9 alpha plane and drop the alpha.
OptionalloopOptionalautoplayOptionalmutedOptionalplayback_Optionalhtml
Configuration for a single overlay, as stored in zarr .zattrs