${this.renderSignKey(vm.signs)}
${this.t('Sign changes and retrograde periods')}
${vm.bodies.map((b) => this.renderTrack(b))}
${this.t('Daily positions')}
${this.renderGrid(vm)}
`;
}
/**
* The glyph-to-name key, above the table it explains.
*
* @remarks
* Every position in this component prints its sign as a glyph, which is how a
* printed ephemeris prints one and is unreadable to somebody still learning
* them. The name rides on each cell's `title`, and a title is a hover: it does
* not exist on touch and it cannot be read down a column. A key that names all
* of them once is the form the page actually needed.
*
* `part="section legend"` rather than a name of its own, because a page hiding
* legends should hide this one too and the vocabulary is shared across every
* component.
*/
private renderSignKey(signs: SignKeyEntry[]) {
if (signs.length === 0) return nothing;
return html`