=== CSS FOCUS / NAV / CAT / SIDE ===
173:.side .nav{font-size:22px;font-weight:800;padding:18px 16px;margin:16px 0;border-radius:12px}
174:.side .active{background:#042c40;border:1px solid #00cfff;box-shadow:0 0 20px #00cfff55}
175:.cats{padding:30px 24px;background:rgba(0,0,0,.35);overflow-y:auto;scroll-behavior:smooth}
176:.cats h1{font-size:42px;margin:0 0 25px}
177:.cat{display:block;color:white;text-decoration:none;font-size:24px;font-weight:900;padding:16px 18px;border-radius:12px;margin:8px 0}
178:.cat.active{background:#3d4855}
194:.focus{outline:5px solid #00d9ff!important;box-shadow:0 0 25px #00d9ff!important;z-index:9}
195:.refreshEpg{outline:none;
202:.refreshEpg:hover{background:rgba(0,217,255,.22)}
258:.videoBox.focus{
284:.row36{display:flex;height:64px;color:white;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.11)}
285:.row36.active,.row36.focus,.row36:hover{background:rgba(0,210,255,.35);outline:none}
289:.prog36{position:absolute;top:5px;height:54px;border-radius:7px;background:rgba(25,32,40,.92);border:1px solid rgba(0,210,255,.18);padding:7px 10px;overflow:hidden}
290:.prog36 b{display:block;font-size:14px;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
291:.prog36 small{display:block;font-size:10px;color:#cdefff;margin-top:4px}
292:.prog36.nowProg{background:rgba(0,190,230,.72);border:1px solid rgba(0,210,255,.95);box-shadow:0 0 10px rgba(0,210,255,.55)}
293:.prog36.noinfo{text-align:center;color:#bdefff;font-weight:800;padding-top:18px}
297:.row36 .ch span,
305:.row36.focus .ch span,
306:.row36.active .ch span,
307:.row.focus .ch span,
313:.row36.focus,
314:.row36.active,
315:.row36:hover{
322:.progBlock.focusProg{
356:.row36.focus .chanNum,
357:.row36.focus .chanName{
363:.row36.active:not(.focus) .chanNum,
364:.row36.active:not(.focus) .chanName{
369:.row36.active:not(.focus) .chanName::after{
380:.row36.focus .chanName::after{
385:.row36.focus,
386:.row36.active,
387:.row36:hover{
425:            <div class="info"><a class="refreshEpg navFocus" href="<?=htmlspecialchars($_SERVER["PHP_SELF"])?>?<?=htmlspecialchars(http_build_query(array_merge($_GET, ["epg_refresh"=>time()])))?>">↻ Actualizar EPG</a>
492:    <a class="row row36 navFocus <?=$is?'active':''?>"
506:                <div class="prog36 noinfo" style="left:0px;width:8640px">Sin información</div>
512:                <div class="prog36 <?=$nowProg?'nowProg':''?>" style="left:<?=$left?>px;width:<?=$width?>px">
531:        Array.from(document.querySelectorAll('.side .navFocus')),
532:        Array.from(document.querySelectorAll('.cats .cat')),
533:        Array.from(document.querySelectorAll('.row36')),
535:        Array.from(document.querySelectorAll('.refreshEpg'))
552:    el.focus({preventScroll:true});
668:    document.querySelectorAll('.focus').forEach(function(x){x.classList.remove('focus');});
673:        box.focus();
682:    video.play().catch(()=>{});
716:    const focused=document.querySelector('.focus.row');
740:    const el=document.querySelector('.focus');
779:    document.querySelectorAll('.progBlock.focusProg').forEach(function(x){
783:    var row = document.querySelector('.row36.focus, .row36.active, .row.focus, .row.active');
786:    var allRows = Array.from(document.querySelectorAll('.row36, .row'));
