=== FILAS CANALES ===
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}
297:.row36 .ch span,
305:.row36.focus .ch span,
306:.row36.active .ch span,
313:.row36.focus,
314:.row36.active,
315:.row36:hover{
434:    <a class="row row36 navFocus <?=$is?'active':''?>"
474:        Array.from(document.querySelectorAll('.row36')),
724:    var row = document.querySelector('.row36.focus, .row36.active, .row.focus, .row.active');
727:    var allRows = Array.from(document.querySelectorAll('.row36, .row'));

=== HTML FILA ===
              if ($startTs > 0 && $endTs > $startTs) {
                  $progress = max(0, min(100, intval((($nowTs - $startTs) / ($endTs - $startTs)) * 100)));
                  $remainMin = max(0, intval(ceil(($endTs - $nowTs) / 60)));
              }

              if (!function_exists("pz_hora_epg")) {
                function pz_hora_epg($ts) {
                    return $ts > 0 ? date("H:i", $ts) : "";
                }
              }

              $dias = ["domingo","lunes","martes","miércoles","jueves","viernes","sábado"];
              $meses = ["","ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"];
              $fechaBonita = strtoupper($dias[intval(date("w"))]) . " " . date("d") . " " . strtoupper($meses[intval(date("n"))]) . " · " . date("H:i");
            ?>

            <h2 id="channelTitle"><?=htmlspecialchars($selected["name"] ?? "Sin canal")?></h2>
            <div class="epgDetail">
              <div class="epgDate"><?=$fechaBonita?></div>

              <div class="epgLabelNow">AHORA</div>
              <div class="epgProgramNow"><?=htmlspecialchars($nowTitle)?></div>
              <?php if ($startTs > 0 && $endTs > 0): ?>
              <div class="epgTimeSimple"><?=pz_hora_epg($startTs)?> - <?=pz_hora_epg($endTs)?></div>
              <?php endif; ?>
              <div class="epgBarLine">
                <div class="epgBarMini"><div class="epgBarFill" style="width:<?=$progress?>%"></div></div>
                <span><?=$remainMin?> min</span>
              </div>

              <div class="epgLabelNext">SIGUE</div>
              <div class="epgProgramNext"><?=htmlspecialchars($nextTitle)?></div>
              <div class="epgNextTime"><?=pz_hora_epg($nextStartTs)?> - <?=pz_hora_epg($nextEndTs)?></div>
            </div>
            </div>
        </section>

        
<section class="timebar36">
    <div class="timeDate"><?=date("D, d M, H:i")?></div>
    <div class="timeScroll" id="timeScroll">
        <?php for($h=0;$h<=36;$h++): ?>
            <div class="hourCell"><?=date("H:i", time()+($h*3600))?></div>
        <?php endfor; ?>
    </div>
</section>

<section class="grid36Wrap" id="grid36Wrap">
    <?php foreach($channels as $idx=>$c):
        $is=((string)$stream===(string)$c["stream_id"]);
        $programs = epg_programs_36h($dns,$user,$pass,$c["stream_id"]);
