diff --git a/public/css/main.css b/public/css/main.css index 7774cd2..c00fc0d 100644 --- a/public/css/main.css +++ b/public/css/main.css @@ -989,10 +989,22 @@ video::cue { .epg-time-header { display: flex; + position: sticky; top: 0; background: var(--color-bg-secondary); z-index: 10; - margin-left: var(--epg-sidebar-width); +} + +.epg-header-corner { + width: var(--epg-sidebar-width); + flex-shrink: 0; + background: var(--color-bg-secondary); + border-right: 1px solid var(--color-border); +} + +.epg-time-slots { + display: flex; + flex: 1; } .epg-time-slot { @@ -2045,14 +2057,6 @@ kbd { width: var(--epg-sidebar-width); } - .epg-time-header { - margin-left: var(--epg-sidebar-width); - } - - .epg-time-slot { - min-width: 160px; - } - /* Movies & Series */ .movies-header, .series-header { diff --git a/public/js/components/EpgGuide.js b/public/js/components/EpgGuide.js index 3171a37..7edc032 100644 --- a/public/js/components/EpgGuide.js +++ b/public/js/components/EpgGuide.js @@ -429,17 +429,20 @@ class EpgGuide { // Calculate total height for virtual scrolling const totalHeight = this.filteredChannels.length * this.rowHeight; - // Build HTML structure with virtual scroll container + // Build HTML structure - header is INSIDE scroll container for natural sync this.container.innerHTML = `