Radial sundial v9 + dashboard polish
Per-ring grow animation
The previous scale-from-centre keyframe puffed everything from a single point and looked rough. Each data path now carries its own SMIL <animate> interpolating d from a collapsed-to-inner-edge counterpart to the real path, so every curve grows WITHIN its own annulus from the inner edge outward. The sun circles animate r from 0 to the final radius in place. All animates fire together on day load (begin=0s, dur=700ms), keyed() re-mounts re-fire the animation on day navigation.
Native SVG sunrise / sunset markers
Switched from foreignObject + ha-icon (which mis-scaled because CSS px and SVG units fight at varying card sizes) to native SVG geometry (half-disc + horizon + tiny arrow head). Rotated radially so the marker's "up" always points outward from the dial centre.
Shorter cursors
Now + hover cursors span only the three data rings (R_CLOUD_INNER → R_DIAL_INNER) with clear gaps from the sun envelope and the dial outer edge. No more inner / outer ends touching the boundaries.
Two badge strips
- Top: Cloud + Irradiance (new) — the model-derived inner-ring values
- Bottom: Production + Batterie — the entity-driven outer-ring values
computeHourlyIrradiance bucketed off the weather-model irradiance series, formatWm2 for the W/m² unit, radialIrradianceLabel i18n key.
Responsive hour labels
Static font-size: 10 SVG units made the numerals huge in panel-view and microscopic in section view. Now clamp(--ha-font-size-xs, 1.6cqi, --ha-font-size-l) with container-type: inline-size on .dash-cf-card, the labels track the card width with HA frontend typography tokens.
Side-card opacity
- J-1 / J+1 at 0.10 (very faint)
- J-2 / J+2 at 0.20 (slightly more visible)
The focused front card reads as the only data layer carrying user attention.
Panel-mode borders fixed
--ha-card-border-width and --ha-card-border-color now re-scoped alongside --ha-card-border-radius on .dash-cf-card, so panel-view dashboards (which strip all three on the outer Helios card to make it edge-to-edge) no longer cascade the override into the inner mini-cards. Borders are back in panel view.
Hover values flow smoothly
Chip strip values interpolate linearly between adjacent hourly samples via interpAtHour, so hovered values flow smoothly across the hour fraction instead of snapping at every full hour change.