=== LINEAS 420-560 ===
    </a>
    <?php endforeach; ?>
</section>

    </main>
</div>

<script>
let zone = 2;
let idx = [0,0,0,0,0];

function groups(){
    return [
        Array.from(document.querySelectorAll('.side .navFocus')),
        Array.from(document.querySelectorAll('.cats .cat')),
        Array.from(document.querySelectorAll('.grid .row')),
        Array.from(document.querySelectorAll('.videoBox')),
        Array.from(document.querySelectorAll('.refreshEpg'))
    ].map(a=>a.filter(e=>e && e.offsetParent !== null));
}

function setFocus(){
    const g = groups();
    g.flat().forEach(e=>e.classList.remove('focus'));

    if(!g[zone] || !g[zone].length) return;

    idx[zone] = Math.max(0, Math.min(idx[zone], g[zone].length - 1));

    const el = g[zone][idx[zone]];
    if(!el) return;

    el.classList.add('focus');
    el.setAttribute('tabindex','0');
    el.focus({preventScroll:true});
    el.scrollIntoView({block:'nearest', inline:'nearest'});
}

function enterItem(){
    const g = groups();
    const el = g[zone] && g[zone][idx[zone]];
    if(!el) return;

    if(zone === 3){
        const v=document.getElementById('mainVideo');
        if(v){
            v.muted=false;
            v.volume=1.0;
            if(v.requestFullscreen) v.requestFullscreen();
            else if(v.webkitRequestFullscreen) v.webkitRequestFullscreen();
        }
        return;
    }

    if(el.classList.contains('row') && typeof quickPlay === 'function'){
        quickPlay(el);
        return;
    }

    if(el.href){
        window.location.href = el.href;
        return;
    }

    el.click();
}

document.addEventListener('keydown',function(e){
    const k = e.key;

    if(k === 'ArrowLeft'){
        e.preventDefault();
        if(zone === 2){
            const gw=document.getElementById('grid36Wrap');
            const tw=document.getElementById('timeScroll');
            if(gw && gw.scrollLeft > 0){ gw.scrollLeft = Math.max(0, gw.scrollLeft - 420); if(tw) tw.style.transform='translateX(-'+gw.scrollLeft+'px)'; return; }
        }
        if(zone === 4){ zone = 3; setFocus(); return; }
        zone = Math.max(0, zone - 1);
        setFocus();
        return;
    }

    if(k === 'ArrowRight'){
        e.preventDefault();
        if(zone === 2){
            const gw=document.getElementById('grid36Wrap');
            const tw=document.getElementById('timeScroll');
            if(gw){ gw.scrollLeft += 420; if(tw) tw.style.transform='translateX(-'+gw.scrollLeft+'px)'; }
            return;
        }
        if(zone === 3){ zone = 4; setFocus(); return; }
        zone = Math.min(4, zone + 1);
        setFocus();
        return;
    }

    if(k === 'ArrowUp'){
        e.preventDefault();
        if(zone === 2){
            if(idx[zone] <= 0){
                zone = 3;
                setFocus();
                return;
            }
            idx[zone]--;
            setFocus();
            return;
        }
        idx[zone]--;
        setFocus();
        return;
    }

    if(k === 'ArrowDown'){
        e.preventDefault();
        if(zone === 3 || zone === 4){ zone = 2; setFocus(); return; }
        idx[zone]++;
        setFocus();
        return;
    }

    if(k === 'Enter'){
        e.preventDefault();
        enterItem();
        return;
    }
}, true);

setTimeout(setFocus, 500);
</script>

<script>
function quickPlay(row){
    const video=document.getElementById('mainVideo');
    const title=document.getElementById('channelTitle');
    if(!row || !video) return false;

    const url=row.getAttribute('data-play');
    const name=row.getAttribute('data-name') || 'Canal';


=== LINEAS 630-760 ===
    if(window.PuntozAndroid && PuntozAndroid.abrirFullscreen){
        PuntozAndroid.abrirFullscreen(url);
        return;
    }

    if(v.requestFullscreen) v.requestFullscreen();
    else if(v.webkitRequestFullscreen) v.webkitRequestFullscreen();
}

document.addEventListener('keydown',function(e){
    if(e.key !== 'Enter') return;

    const el=document.querySelector('.focus');

    if(el && el.classList.contains('videoBox')){
        e.preventDefault();
        abrirFullscreenActual();
        return;
    }

    if(el && el.classList.contains('row')){
        const now=Date.now();

        if(lastRow === el && (now-lastTime) < 700){
            e.preventDefault();
            if(typeof quickPlay === 'function') quickPlay(el);
            setTimeout(abrirFullscreenActual,250);
            return;
        }

        lastRow = el;
        lastTime = now;
    }
},true);

document.addEventListener('dblclick',function(e){
    const row=e.target.closest('.row');
    if(row){
        if(typeof quickPlay === 'function') quickPlay(row);
        setTimeout(abrirFullscreenActual,250);
    }
},true);
</script>



</body>
</html>

=== LINEAS 760-850 ===
