Landscape kiosk overhaul: 3-column layout, resilient updates, visual polish

- Add 3-column balanced site distribution using greedy weight algorithm
- Build new DOM off-screen in DocumentFragment, swap atomically (no flash)
- Skip empty API responses and preserve display on transient errors
- Remove news ticker from UI and grid layout
- Add blue-to-red gradient on site header bars
- Bump font sizes: destinations 1.4em, countdowns 1.5em, line numbers 1.6em
- Add breathing pulse animation on daylight bar sun/moon icons
- Fix daylight bar indicator snapping to position on first render
- Make config button visible in landscape with semi-transparent background
- Add weather forecast strip as grid row 4 with compact styling

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-15 23:07:10 +01:00
parent 5f60ed88c8
commit 57cd9809e0
5 changed files with 222 additions and 98 deletions

View File

@@ -714,7 +714,17 @@ class WeatherManager {
}
// Position current hour indicator
indicatorElement.style.left = `${currentPos}%`;
// On first render, skip transition so icon appears instantly at correct position
if (!this._daylightBarInitialized) {
indicatorElement.style.transition = 'none';
indicatorElement.style.left = `${currentPos}%`;
// Force reflow, then re-enable transition for smooth minute-to-minute movement
indicatorElement.offsetLeft;
indicatorElement.style.transition = '';
this._daylightBarInitialized = true;
} else {
indicatorElement.style.left = `${currentPos}%`;
}
// Debug logging
console.log('Daylight bar positions:', {