{"id":11,"date":"2026-05-05T13:42:59","date_gmt":"2026-05-05T13:42:59","guid":{"rendered":"https:\/\/googlecumbia.metricavisual.com\/home\/"},"modified":"2026-11-06T03:01:33","modified_gmt":"2026-11-06T03:01:33","slug":"full-radios","status":"publish","type":"page","link":"https:\/\/googlecumbia.metricavisual.com\/?page_id=11","title":{"rendered":"RADIOS AQUI"},"content":{"rendered":"\n<!--nextpage-->\n\n\n\n<style>\n\/* ==========================================\n   REPRODUCTOR HLS GOOGLE CUMBIA\n========================================== *\/\n\n.gcp-tv-player,\n.gcp-tv-player * {\n    box-sizing: border-box;\n}\n\n.gcp-tv-player {\n    --gcp-accent: #ff5a00;\n    --gcp-bg: #090909;\n    --gcp-panel: #171717;\n\n    width: 100%;\n    max-width: 1200px;\n    margin: 24px auto;\n    padding: 18px;\n    overflow: hidden;\n    background:\n        radial-gradient(circle at top, rgba(255, 90, 0, 0.12), transparent 42%),\n        var(--gcp-panel);\n    border: 1px solid rgba(255, 255, 255, 0.08);\n    border-radius: 20px;\n    color: #fff;\n    font-family: Arial, sans-serif;\n    box-shadow: 0 16px 45px rgba(0, 0, 0, 0.35);\n}\n\n.gcp-tv-header {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 15px;\n    margin-bottom: 15px;\n}\n\n.gcp-tv-heading {\n    min-width: 0;\n}\n\n.gcp-tv-heading h2 {\n    margin: 0;\n    color: #fff;\n    font-size: clamp(20px, 3vw, 30px);\n    line-height: 1.2;\n}\n\n.gcp-tv-status {\n    display: flex;\n    align-items: center;\n    gap: 8px;\n    margin: 7px 0 0;\n    color: #bbb;\n    font-size: 14px;\n}\n\n.gcp-tv-status-dot {\n    width: 9px;\n    height: 9px;\n    flex: 0 0 9px;\n    background: #777;\n    border-radius: 50%;\n}\n\n.gcp-tv-status.is-live .gcp-tv-status-dot {\n    background: #21c45a;\n    box-shadow: 0 0 0 5px rgba(33, 196, 90, 0.14);\n}\n\n.gcp-tv-live-badge {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n    flex: 0 0 auto;\n    padding: 8px 12px;\n    background: #d90000;\n    border-radius: 999px;\n    color: #fff;\n    font-size: 12px;\n    font-weight: 800;\n    letter-spacing: 0.7px;\n    text-transform: uppercase;\n}\n\n.gcp-tv-live-badge::before {\n    content: \"\";\n    width: 8px;\n    height: 8px;\n    background: #fff;\n    border-radius: 50%;\n    animation: gcp-live-pulse 1.3s ease-in-out infinite;\n}\n\n.gcp-tv-screen {\n    position: relative;\n    width: 100%;\n    overflow: hidden;\n    background: #000;\n    border-radius: 16px;\n    aspect-ratio: 16 \/ 9;\n}\n\n.gcp-tv-video {\n    display: block;\n    width: 100%;\n    height: 100%;\n    background: #000;\n    object-fit: contain;\n}\n\n\/* Capa inicial y errores (Ubicada bien arriba) *\/\n.gcp-tv-overlay {\n    position: absolute;\n    inset: 0;\n    z-index: 5;\n    display: flex;\n    align-items: flex-start;\n    justify-content: center;\n    padding: 4% 24px 24px; \/* Padding superior reducido para subirlo m\u00e1s *\/\n    background:\n        linear-gradient(rgba(0, 0, 0, 0.45), rgba(0, 0, 0, 0.78));\n    text-align: center;\n    transition:\n        opacity 0.25s ease,\n        visibility 0.25s ease;\n}\n\n.gcp-tv-overlay.is-hidden {\n    visibility: hidden;\n    opacity: 0;\n    pointer-events: none;\n}\n\n.gcp-tv-overlay-content {\n    display: flex;\n    flex-direction: column;\n    align-items: center;\n    justify-content: center;\n    width: min(100%, 600px);\n    margin: 0 auto;\n}\n\n.gcp-tv-overlay-icon {\n    display: block;\n    margin-bottom: 6px;\n    font-size: 52px;\n}\n\n.gcp-tv-overlay-title {\n    margin: 0 0 6px;\n    color: #fff;\n    font-size: clamp(22px, 4vw, 32px);\n}\n\n.gcp-tv-overlay-message {\n    margin: 0 0 18px;\n    color: #d4d4d4;\n    font-size: 16px;\n    line-height: 1.5;\n}\n\n\/* Bot\u00f3n m\u00e1s grande y destacado *\/\n.gcp-tv-start-button,\n.gcp-tv-retry-button {\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 12px;\n    min-height: 60px;\n    padding: 16px 36px;\n    margin: 0 auto;\n    border: 0;\n    border-radius: 999px;\n    background: var(--gcp-accent);\n    color: #fff;\n    font-size: 18px;\n    font-weight: 800;\n    cursor: pointer;\n    align-self: center;\n    box-shadow: 0 8px 25px rgba(255, 90, 0, 0.4);\n    transition:\n        transform 0.2s ease,\n        filter 0.2s ease,\n        box-shadow 0.2s ease;\n}\n\n.gcp-tv-start-button:hover,\n.gcp-tv-retry-button:hover {\n    transform: translateY(-3px) scale(1.03);\n    filter: brightness(1.1);\n    box-shadow: 0 12px 30px rgba(255, 90, 0, 0.55);\n}\n\n\/* Cargando *\/\n.gcp-tv-loader {\n    display: none;\n    position: absolute;\n    inset: 0;\n    z-index: 4;\n    align-items: center;\n    justify-content: center;\n    pointer-events: none;\n}\n\n.gcp-tv-loader.is-visible {\n    display: flex;\n}\n\n.gcp-tv-spinner {\n    width: 52px;\n    height: 52px;\n    border: 5px solid rgba(255, 255, 255, 0.2);\n    border-top-color: var(--gcp-accent);\n    border-radius: 50%;\n    animation: gcp-spinner 0.8s linear infinite;\n}\n\n\/* Barra inferior informativa *\/\n.gcp-tv-info {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 14px;\n    margin-top: 14px;\n    padding: 12px 14px;\n    background: rgba(255, 255, 255, 0.04);\n    border-radius: 12px;\n}\n\n.gcp-tv-info-text {\n    min-width: 0;\n}\n\n.gcp-tv-info strong {\n    display: block;\n    margin-bottom: 4px;\n    color: #fff;\n}\n\n.gcp-tv-info small {\n    display: block;\n    overflow: hidden;\n    color: #aaa;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n}\n\n.gcp-tv-actions {\n    display: flex;\n    flex: 0 0 auto;\n    gap: 8px;\n}\n\n.gcp-tv-action {\n    min-height: 40px;\n    padding: 9px 13px;\n    border: 1px solid rgba(255, 255, 255, 0.14);\n    border-radius: 10px;\n    background: rgba(255, 255, 255, 0.06);\n    color: #fff;\n    font-weight: 700;\n    cursor: pointer;\n}\n\n.gcp-tv-action:hover {\n    background: rgba(255, 255, 255, 0.12);\n}\n\n@keyframes gcp-spinner {\n    to {\n        transform: rotate(360deg);\n    }\n}\n\n@keyframes gcp-live-pulse {\n    0%,\n    100% {\n        opacity: 1;\n    }\n\n    50% {\n        opacity: 0.35;\n    }\n}\n\n@media (max-width: 700px) {\n    .gcp-tv-player {\n        margin: 14px auto;\n        padding: 10px;\n        border-radius: 14px;\n    }\n\n    .gcp-tv-screen {\n        border-radius: 10px;\n    }\n\n    .gcp-tv-overlay {\n        padding-top: 2%;\n    }\n\n    .gcp-tv-start-button,\n    .gcp-tv-retry-button {\n        min-height: 50px;\n        padding: 12px 24px;\n        font-size: 15px;\n    }\n\n    .gcp-tv-header {\n        align-items: flex-start;\n    }\n\n    .gcp-tv-info {\n        align-items: stretch;\n        flex-direction: column;\n    }\n\n    .gcp-tv-actions {\n        width: 100%;\n    }\n\n    .gcp-tv-action {\n        flex: 1;\n    }\n}\n<\/style>\n\n<section class=\"gcp-tv-player\" id=\"gcpTvPlayer\">\n    <div class=\"gcp-tv-header\">\n        <div class=\"gcp-tv-heading\">\n            <h2>Televisi\u00f3n en vivo<\/h2>\n\n            <p class=\"gcp-tv-status\" id=\"gcpTvStatus\">\n                <span class=\"gcp-tv-status-dot\"><\/span>\n                <span id=\"gcpTvStatusText\">Preparando se\u00f1al\u2026<\/span>\n            <\/p>\n        <\/div>\n\n        <span class=\"gcp-tv-live-badge\">En vivo<\/span>\n    <\/div>\n\n    <div class=\"gcp-tv-screen\" id=\"gcpTvScreen\">\n        <video class=\"gcp-tv-video\" id=\"gcpHlsVideo\" controls=\"\" playsinline=\"\" preload=\"metadata\" crossorigin=\"anonymous\"><\/video>\n\n        <div class=\"gcp-tv-loader\" id=\"gcpTvLoader\">\n            <span class=\"gcp-tv-spinner\"><\/span>\n        <\/div>\n\n        <div class=\"gcp-tv-overlay\" id=\"gcpTvOverlay\">\n            <div class=\"gcp-tv-overlay-content\">\n                <span class=\"gcp-tv-overlay-icon\" id=\"gcpTvOverlayIcon\">\u25b6<\/span>\n\n                <h3 class=\"gcp-tv-overlay-title\" id=\"gcpTvOverlayTitle\">\n                    Retro TV. OnLine\n                <\/h3>\n\n                <p class=\"gcp-tv-overlay-message\" id=\"gcpTvOverlayMessage\">\n                    Pulsa el bot\u00f3n para iniciar la transmisi\u00f3n en vivo.\n                <\/p>\n\n                <button type=\"button\" class=\"gcp-tv-start-button\" id=\"gcpTvStartButton\">\n                    \u25b6 Ver transmisi\u00f3n\n                <\/button>\n            <\/div>\n        <\/div>\n    <\/div>\n\n    <div class=\"gcp-tv-info\">\n        <div class=\"gcp-tv-info-text\">\n            <strong>Canal en vivo<\/strong>\n            <small id=\"gcpTvTechnicalStatus\">HLS \u00b7 Calidad autom\u00e1tica<\/small>\n        <\/div>\n\n        <div class=\"gcp-tv-actions\">\n            <button type=\"button\" class=\"gcp-tv-action\" id=\"gcpTvReload\">\n                \u21bb Recargar\n            <\/button>\n\n            <button type=\"button\" class=\"gcp-tv-action\" id=\"gcpTvFullscreen\">\n                \u26f6 Pantalla completa\n            <\/button>\n        <\/div>\n    <\/div>\n<\/section>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/hls.js@1\/dist\/hls.min.js\"><\/script>\n\n<script>\n(function () {\n    \"use strict\";\n\n    const STREAM_URL =\n        \"https:\/\/lbgo.bozztv.com\/ssh101\/ssh101\/wowchannelsd\/chunks.m3u8?lb_backend_hint=7\";\n\n    const video = document.getElementById(\"gcpHlsVideo\");\n    const playerContainer = document.getElementById(\"gcpTvPlayer\");\n    const screen = document.getElementById(\"gcpTvScreen\");\n    const overlay = document.getElementById(\"gcpTvOverlay\");\n    const overlayIcon = document.getElementById(\"gcpTvOverlayIcon\");\n    const overlayTitle = document.getElementById(\"gcpTvOverlayTitle\");\n    const overlayMessage = document.getElementById(\"gcpTvOverlayMessage\");\n    const startButton = document.getElementById(\"gcpTvStartButton\");\n    const loader = document.getElementById(\"gcpTvLoader\");\n    const status = document.getElementById(\"gcpTvStatus\");\n    const statusText = document.getElementById(\"gcpTvStatusText\");\n    const technicalStatus = document.getElementById(\"gcpTvTechnicalStatus\");\n    const reloadButton = document.getElementById(\"gcpTvReload\");\n    const fullscreenButton = document.getElementById(\"gcpTvFullscreen\");\n\n    let hls = null;\n    let started = false;\n    let recoveryAttempts = 0;\n    const MAX_RECOVERY_ATTEMPTS = 3;\n\n    function setLoading(isLoading) {\n        loader.classList.toggle(\"is-visible\", isLoading);\n    }\n\n    function setStatus(message, isLive) {\n        statusText.textContent = message;\n        status.classList.toggle(\"is-live\", Boolean(isLive));\n    }\n\n    function hideOverlay() {\n        overlay.classList.add(\"is-hidden\");\n    }\n\n    function showOverlay(options) {\n        const config = Object.assign(\n            {\n                icon: \"\u26a0\",\n                title: \"No se pudo reproducir\",\n                message: \"La se\u00f1al no est\u00e1 disponible temporalmente.\",\n                button: \"Reintentar\"\n            },\n            options || {}\n        );\n\n        overlayIcon.textContent = config.icon;\n        overlayTitle.textContent = config.title;\n        overlayMessage.textContent = config.message;\n        startButton.textContent = config.button;\n        startButton.className = \"gcp-tv-retry-button\";\n        overlay.classList.remove(\"is-hidden\");\n    }\n\n    function destroyCurrentStream() {\n        if (hls) {\n            hls.destroy();\n            hls = null;\n        }\n\n        video.pause();\n        video.removeAttribute(\"src\");\n        video.load();\n    }\n\n    function tryPlay() {\n        const playPromise = video.play();\n\n        if (playPromise && typeof playPromise.catch === \"function\") {\n            playPromise.catch(function () {\n                setStatus(\"Pulsa reproducir para comenzar\", false);\n                technicalStatus.textContent =\n                    \"La se\u00f1al est\u00e1 lista \u00b7 Autoplay bloqueado\";\n            });\n        }\n    }\n\n    function loadNativeHls() {\n        technicalStatus.textContent = \"HLS nativo \u00b7 Calidad autom\u00e1tica\";\n        video.src = STREAM_URL;\n\n        video.addEventListener(\n            \"loadedmetadata\",\n            function () {\n                setLoading(false);\n                setStatus(\"Se\u00f1al conectada\", true);\n                hideOverlay();\n                tryPlay();\n            },\n            { once: true }\n        );\n\n        video.addEventListener(\n            \"error\",\n            function () {\n                setLoading(false);\n                showOverlay({\n                    title: \"Error de reproducci\u00f3n\",\n                    message:\n                        \"El navegador no pudo abrir la se\u00f1al HLS nativa.\",\n                    button: \"Volver a intentar\"\n                });\n                setStatus(\"Se\u00f1al no disponible\", false);\n            },\n            { once: true }\n        );\n    }\n\n    function loadWithHlsJs() {\n        hls = new Hls({\n            enableWorker: true,\n            lowLatencyMode: true,\n            backBufferLength: 60,\n            maxBufferLength: 30,\n            maxMaxBufferLength: 60\n        });\n\n        technicalStatus.textContent =\n            \"hls.js \u00b7 Detectando calidad autom\u00e1ticamente\";\n\n        hls.loadSource(STREAM_URL);\n        hls.attachMedia(video);\n\n        hls.on(Hls.Events.MANIFEST_PARSED, function (event, data) {\n            recoveryAttempts = 0;\n            setLoading(false);\n            setStatus(\"Se\u00f1al conectada\", true);\n            hideOverlay();\n\n            const levels = data && data.levels ? data.levels.length : 0;\n\n            technicalStatus.textContent = levels > 1\n                ? \"HLS \u00b7 \" + levels + \" calidades disponibles\"\n                : \"HLS \u00b7 Calidad autom\u00e1tica\";\n\n            tryPlay();\n        });\n\n        hls.on(Hls.Events.LEVEL_SWITCHED, function (event, data) {\n            const level = hls.levels[data.level];\n\n            if (level && level.height) {\n                technicalStatus.textContent =\n                    \"HLS \u00b7 \" + level.height + \"p \u00b7 En vivo\";\n            }\n        });\n\n        hls.on(Hls.Events.ERROR, function (event, data) {\n            if (!data.fatal) {\n                return;\n            }\n\n            recoveryAttempts += 1;\n\n            if (recoveryAttempts > MAX_RECOVERY_ATTEMPTS) {\n                setLoading(false);\n                setStatus(\"Se\u00f1al interrumpida\", false);\n\n                showOverlay({\n                    title: \"Transmisi\u00f3n no disponible\",\n                    message:\n                        \"La se\u00f1al no respondi\u00f3 despu\u00e9s de varios intentos. Puede estar fuera de l\u00ednea o bloqueando la reproducci\u00f3n externa.\",\n                    button: \"Reintentar se\u00f1al\"\n                });\n\n                destroyCurrentStream();\n                return;\n            }\n\n            switch (data.type) {\n                case Hls.ErrorTypes.NETWORK_ERROR:\n                    setStatus(\"Reconectando se\u00f1al\u2026\", false);\n                    technicalStatus.textContent =\n                        \"Error de red \u00b7 Intentando reconectar\";\n                    hls.startLoad();\n                    break;\n\n                case Hls.ErrorTypes.MEDIA_ERROR:\n                    setStatus(\"Recuperando video\u2026\", false);\n                    technicalStatus.textContent =\n                        \"Error multimedia \u00b7 Recuperando\";\n                    hls.recoverMediaError();\n                    break;\n\n                default:\n                    destroyCurrentStream();\n                    startStream();\n                    break;\n            }\n        });\n    }\n\n    function startStream() {\n        destroyCurrentStream();\n\n        started = true;\n        recoveryAttempts = 0;\n\n        setLoading(true);\n        setStatus(\"Conectando con la se\u00f1al\u2026\", false);\n        technicalStatus.textContent = \"Cargando transmisi\u00f3n HLS\u2026\";\n\n        if (video.canPlayType(\"application\/vnd.apple.mpegurl\")) {\n            loadNativeHls();\n            return;\n        }\n\n        if (window.Hls && Hls.isSupported()) {\n            loadWithHlsJs();\n            return;\n        }\n\n        setLoading(false);\n        setStatus(\"Navegador incompatible\", false);\n\n        showOverlay({\n            icon: \"!\",\n            title: \"Navegador no compatible\",\n            message:\n                \"Este navegador no permite reproducir transmisiones HLS.\",\n            button: \"Intentar nuevamente\"\n        });\n    }\n\n    startButton.addEventListener(\"click\", function () {\n        startStream();\n    });\n\n    reloadButton.addEventListener(\"click\", function () {\n        startStream();\n    });\n\n    fullscreenButton.addEventListener(\"click\", function () {\n        if (document.fullscreenElement) {\n            document.exitFullscreen();\n            return;\n        }\n\n        if (screen.requestFullscreen) {\n            screen.requestFullscreen();\n        } else if (video.webkitEnterFullscreen) {\n            video.webkitEnterFullscreen();\n        }\n    });\n\n    video.addEventListener(\"waiting\", function () {\n        if (started) {\n            setLoading(true);\n            setStatus(\"Almacenando se\u00f1al\u2026\", false);\n        }\n    });\n\n    video.addEventListener(\"playing\", function () {\n        setLoading(false);\n        setStatus(\"Transmitiendo en vivo\", true);\n        hideOverlay();\n    });\n\n    video.addEventListener(\"pause\", function () {\n        if (!video.ended && video.currentTime > 0) {\n            setStatus(\"Transmisi\u00f3n pausada\", false);\n        }\n    });\n\n    video.addEventListener(\"ended\", function () {\n        setStatus(\"La transmisi\u00f3n termin\u00f3\", false);\n    });\n\n    window.addEventListener(\"beforeunload\", function () {\n        destroyCurrentStream();\n    });\n})();\n<\/script>\n\n\n\n<!-- REPRODUCTOR DE RADIOS PER\u00da - DEFINITIVO Y CORREGIDO -->\n<div id=\"pr-custom-root\">\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@400;500;600;700;800&#038;display=swap\" rel=\"stylesheet\">\n\n  <style>\n    #pr-custom-root * {\n      box-sizing: border-box !important;\n      margin: 0;\n      padding: 0;\n      font-family: 'Inter', system-ui, -apple-system, sans-serif !important;\n    }\n\n    #pr-custom-root {\n      background: radial-gradient(circle at top right, #1e1b4b, #0f172a, #090d16) !important;\n      color: #f8fafc !important;\n      border-radius: 16px !important;\n      padding: 20px 16px 110px 16px !important;\n      width: 100% !important;\n      max-width: 100% !important;\n      position: relative !important;\n      box-shadow: 0 10px 30px rgba(0,0,0,0.5) !important;\n      border: 1px solid rgba(255, 255, 255, 0.08) !important;\n    }\n\n    \/* Header *\/\n    #pr-custom-root .pr-header {\n      background: rgba(30, 41, 59, 0.65) !important;\n      backdrop-filter: blur(16px) !important;\n      border: 1px solid rgba(255, 255, 255, 0.08) !important;\n      border-radius: 14px !important;\n      padding: 16px !important;\n      display: flex !important;\n      flex-wrap: wrap !important;\n      justify-content: space-between !important;\n      align-items: center !important;\n      gap: 16px !important;\n      margin-bottom: 20px !important;\n    }\n\n    #pr-custom-root .pr-brand {\n      display: flex !important;\n      align-items: center !important;\n      gap: 12px !important;\n    }\n\n    #pr-custom-root .pr-logo-icon {\n      width: 44px !important;\n      height: 44px !important;\n      border-radius: 10px !important;\n      background: linear-gradient(135deg, #4f46e5, #f43f5e) !important;\n      display: flex !important;\n      align-items: center !important;\n      justify-content: center !important;\n      font-size: 18px !important;\n      font-weight: 800 !important;\n      color: #fff !important;\n    }\n\n    #pr-custom-root .pr-title {\n      font-size: 17px !important;\n      font-weight: 800 !important;\n      background: linear-gradient(to right, #ffffff, #c7d2fe) !important;\n      -webkit-background-clip: text !important;\n      -webkit-text-fill-color: transparent !important;\n    }\n\n    #pr-custom-root .pr-subtitle {\n      font-size: 11px !important;\n      color: #94a3b8 !important;\n    }\n\n    \/* Buscador y Filtros *\/\n    #pr-custom-root .pr-controls {\n      display: flex !important;\n      flex-direction: column !important;\n      gap: 12px !important;\n      margin-bottom: 20px !important;\n    }\n\n    @media (min-width: 640px) {\n      #pr-custom-root .pr-controls {\n        flex-direction: row !important;\n        justify-content: space-between !important;\n        align-items: center !important;\n      }\n    }\n\n    #pr-custom-root .pr-search-box {\n      position: relative !important;\n      width: 100% !important;\n      max-width: 300px !important;\n    }\n\n    #pr-custom-root .pr-search-input {\n      width: 100% !important;\n      padding: 9px 12px 9px 14px !important;\n      background: rgba(15, 23, 42, 0.7) !important;\n      border: 1px solid rgba(51, 65, 85, 0.8) !important;\n      border-radius: 10px !important;\n      color: #fff !important;\n      font-size: 13px !important;\n      outline: none !important;\n    }\n\n    #pr-custom-root .pr-categories {\n      display: flex !important;\n      gap: 6px !important;\n      overflow-x: auto !important;\n      padding-bottom: 4px !important;\n      width: 100% !important;\n    }\n\n    #pr-custom-root .pr-cat-btn {\n      background: #1e293b !important;\n      color: #94a3b8 !important;\n      border: 1px solid rgba(255,255,255,0.05) !important;\n      padding: 6px 12px !important;\n      border-radius: 8px !important;\n      font-size: 11px !important;\n      font-weight: 600 !important;\n      cursor: pointer !important;\n      white-space: nowrap !important;\n      transition: all 0.2s ease !important;\n    }\n\n    #pr-custom-root .pr-cat-btn.active,\n    #pr-custom-root .pr-cat-btn:hover {\n      background: #4f46e5 !important;\n      color: #fff !important;\n    }\n\n    \/* Grid de Emisoras *\/\n    #pr-custom-root .pr-grid {\n      display: grid !important;\n      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)) !important;\n      gap: 12px !important;\n      width: 100% !important;\n      margin-bottom: 24px !important;\n    }\n\n    #pr-custom-root .pr-card {\n      background: rgba(255, 255, 255, 0.03) !important;\n      border: 1px solid rgba(255, 255, 255, 0.06) !important;\n      border-radius: 12px !important;\n      padding: 10px 12px !important;\n      display: flex !important;\n      align-items: center !important;\n      justify-content: space-between !important;\n      transition: all 0.2s ease !important;\n    }\n\n    #pr-custom-root .pr-card:hover {\n      background: rgba(255, 255, 255, 0.07) !important;\n      border-color: rgba(99, 102, 241, 0.4) !important;\n    }\n\n    #pr-custom-root .pr-card.active {\n      border-color: #6366f1 !important;\n      background: rgba(99, 102, 241, 0.12) !important;\n    }\n\n    #pr-custom-root .pr-card-info {\n      display: flex !important;\n      align-items: center !important;\n      gap: 10px !important;\n      overflow: hidden !important;\n      cursor: pointer !important;\n      flex: 1 !important;\n    }\n\n    #pr-custom-root .pr-card-logo {\n      width: 40px !important;\n      height: 40px !important;\n      border-radius: 8px !important;\n      display: flex !important;\n      align-items: center !important;\n      justify-content: center !important;\n      font-weight: 800 !important;\n      font-size: 14px !important;\n      color: #fff !important;\n      flex-shrink: 0 !important;\n    }\n\n    #pr-custom-root .pr-card-texts {\n      overflow: hidden !important;\n    }\n\n    #pr-custom-root .pr-card-name {\n      font-size: 13px !important;\n      font-weight: 700 !important;\n      color: #fff !important;\n      white-space: nowrap !important;\n      overflow: hidden !important;\n      text-overflow: ellipsis !important;\n    }\n\n    #pr-custom-root .pr-card-genre {\n      font-size: 10px !important;\n      color: #94a3b8 !important;\n      white-space: nowrap !important;\n      overflow: hidden !important;\n      text-overflow: ellipsis !important;\n    }\n\n    #pr-custom-root .pr-card-actions {\n      display: flex !important;\n      align-items: center !important;\n      gap: 4px !important;\n    }\n\n    #pr-custom-root .pr-action-btn {\n      background: transparent !important;\n      border: none !important;\n      color: #94a3b8 !important;\n      cursor: pointer !important;\n      padding: 6px !important;\n      font-size: 13px !important;\n      text-decoration: none !important;\n      display: flex !important;\n      align-items: center !important;\n      justify-content: center !important;\n      transition: color 0.2s ease !important;\n    }\n\n    #pr-custom-root .pr-action-btn:hover {\n      color: #fff !important;\n    }\n\n    #pr-custom-root .pr-fav-btn.active {\n      color: #f43f5e !important;\n    }\n\n    #pr-custom-root .pr-play-btn-small {\n      width: 30px !important;\n      height: 30px !important;\n      border-radius: 50% !important;\n      background: #1e293b !important;\n      color: #fff !important;\n      display: flex !important;\n      align-items: center !important;\n      justify-content: center !important;\n      font-size: 11px !important;\n      cursor: pointer !important;\n    }\n\n    #pr-custom-root .pr-card:hover .pr-play-btn-small {\n      background: #4f46e5 !important;\n    }\n\n    \/* Reproductor Fijo en la Base *\/\n    #pr-custom-root .pr-player-bar {\n      position: absolute !important;\n      bottom: 0 !important;\n      left: 0 !important;\n      right: 0 !important;\n      background: rgba(15, 23, 42, 0.96) !important;\n      border-top: 1px solid rgba(255, 255, 255, 0.1) !important;\n      border-bottom-left-radius: 16px !important;\n      border-bottom-right-radius: 16px !important;\n      padding: 12px 20px !important;\n      display: flex !important;\n      flex-wrap: wrap !important;\n      align-items: center !important;\n      justify-content: space-between !important;\n      gap: 12px !important;\n    }\n\n    #pr-custom-root .pr-player-left {\n      display: flex !important;\n      align-items: center !important;\n      gap: 10px !important;\n      flex: 1 !important;\n      min-width: 180px !important;\n    }\n\n    #pr-custom-root .pr-player-center {\n      display: flex !important;\n      flex-direction: column !important;\n      align-items: center !important;\n      gap: 2px !important;\n    }\n\n    #pr-custom-root .pr-player-controls {\n      display: flex !important;\n      align-items: center !important;\n      gap: 14px !important;\n    }\n\n    #pr-custom-root .pr-main-play {\n      width: 40px !important;\n      height: 40px !important;\n      border-radius: 50% !important;\n      background: linear-gradient(135deg, #6366f1, #f43f5e) !important;\n      border: none !important;\n      color: #fff !important;\n      font-size: 15px !important;\n      cursor: pointer !important;\n      display: flex !important;\n      align-items: center !important;\n      justify-content: center !important;\n      box-shadow: 0 4px 12px rgba(99, 102, 241, 0.4) !important;\n    }\n\n    #pr-custom-root .pr-step-btn {\n      background: transparent !important;\n      border: none !important;\n      color: #94a3b8 !important;\n      font-size: 15px !important;\n      cursor: pointer !important;\n      font-weight: bold;\n    }\n\n    #pr-custom-root .pr-step-btn:hover {\n      color: #fff !important;\n    }\n\n    #pr-custom-root .pr-player-right {\n      display: flex !important;\n      align-items: center !important;\n      gap: 10px !important;\n      justify-content: flex-end !important;\n      flex: 1 !important;\n    }\n\n    \/* Ecualizador *\/\n    #pr-custom-root .pr-bars {\n      display: flex !important;\n      align-items: flex-end !important;\n      gap: 2px !important;\n      height: 14px !important;\n    }\n\n    #pr-custom-root .pr-bar {\n      width: 3px !important;\n      background: #f43f5e !important;\n      border-radius: 1px !important;\n      animation: prBounce 1s infinite alternate ease-in-out !important;\n    }\n\n    #pr-custom-root .pr-bars.paused .pr-bar {\n      animation: none !important;\n      height: 4px !important;\n      opacity: 0.3 !important;\n    }\n\n    #pr-custom-root .pr-bar:nth-child(1) { height: 40%; animation-delay: 0.1s !important; }\n    #pr-custom-root .pr-bar:nth-child(2) { height: 100%; animation-delay: 0.3s !important; }\n    #pr-custom-root .pr-bar:nth-child(3) { height: 60%; animation-delay: 0.2s !important; }\n\n    @keyframes prBounce {\n      0% { height: 20%; }\n      100% { height: 100%; }\n    }\n  <\/style>\n\n  <!-- Encabezado -->\n  <div class=\"pr-header\">\n    <div class=\"pr-brand\">\n      <div class=\"pr-logo-icon\">\ud83d\udcfb<\/div>\n      <div>\n        <div class=\"pr-title\">RADIOS DEL PER\u00da LIVE<\/div>\n        <div class=\"pr-subtitle\">18 Emisoras en vivo con acceso directo a sus webs<\/div>\n      <\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Buscador y Filtros -->\n  <div class=\"pr-controls\">\n    <div class=\"pr-search-box\">\n      <input type=\"text\" id=\"pr-search\" class=\"pr-search-input\" placeholder=\"\ud83d\udd0d Buscar emisora...\" onkeyup=\"window.PR_renderCards()\">\n    <\/div>\n    <div class=\"pr-categories\">\n      <button class=\"pr-cat-btn active\" onclick=\"window.PR_setCat('all', this)\">Todas (18)<\/button>\n      <button class=\"pr-cat-btn\" onclick=\"window.PR_setCat('favoritos', this)\">\u2764\ufe0f Favoritas<\/button>\n      <button class=\"pr-cat-btn\" onclick=\"window.PR_setCat('pop', this)\">Pop \/ Reggaeton<\/button>\n      <button class=\"pr-cat-btn\" onclick=\"window.PR_setCat('noticias', this)\">Noticias<\/button>\n      <button class=\"pr-cat-btn\" onclick=\"window.PR_setCat('cumbia', this)\">Cumbia \/ Salsa<\/button>\n      <button class=\"pr-cat-btn\" onclick=\"window.PR_setCat('rock', this)\">Rock &#038; Pop<\/button>\n    <\/div>\n  <\/div>\n\n  <!-- Rejilla de Radios -->\n  <div class=\"pr-grid\" id=\"pr-grid-container\"><\/div>\n\n  <!-- Reproductor Fijo al Final del Contenedor -->\n  <div class=\"pr-player-bar\">\n    <div class=\"pr-player-left\">\n      <div id=\"pr-player-logo\" class=\"pr-card-logo\" style=\"background:#334155\">\ud83d\udcfb<\/div>\n      <div style=\"overflow:hidden\">\n        <div id=\"pr-player-title\" style=\"font-size:13px; font-weight:700; color:#fff; white-space:nowrap; overflow:hidden; text-overflow:ellipsis\">Selecciona Emisora<\/div>\n        <div id=\"pr-player-genre\" style=\"font-size:10px; color:#94a3b8\">Haz clic en play<\/div>\n      <\/div>\n    <\/div>\n\n    <div class=\"pr-player-center\">\n      <div class=\"pr-player-controls\">\n        <button class=\"pr-step-btn\" onclick=\"window.PR_prev()\" title=\"Anterior\">\u23ee<\/button>\n        <button class=\"pr-main-play\" onclick=\"window.PR_togglePlay()\" title=\"Reproducir \/ Pausa\"><span id=\"pr-main-icon\">\u25b6<\/span><\/button>\n        <button class=\"pr-step-btn\" onclick=\"window.PR_next()\" title=\"Siguiente\">\u23ed<\/button>\n      <\/div>\n      <div id=\"pr-status\" style=\"font-size:9px; color:#818cf8; margin-top:2px\">Listo para transmitir<\/div>\n    <\/div>\n\n    <div class=\"pr-player-right\">\n      <div class=\"pr-bars paused\" id=\"pr-bars\">\n        <div class=\"pr-bar\"><\/div>\n        <div class=\"pr-bar\"><\/div>\n        <div class=\"pr-bar\"><\/div>\n      <\/div>\n      <input type=\"range\" id=\"pr-volume\" min=\"0\" max=\"1\" step=\"0.05\" value=\"0.8\" style=\"width:60px; accent-color:#6366f1\" oninput=\"window.PR_setVolume(this.value)\">\n    <\/div>\n  <\/div>\n\n  <audio id=\"pr-audio\" preload=\"none\"><\/audio>\n\n  <script>\n    (function() {\n      \/\/ 18 EMISORAS CON SUS ENLACES DE AUDIO Y SUS WEBS OFICIALES\n      const stations = [\n        { id: \"onda-cero\", name: \"Onda Cero\", genre: \"Reggaeton \/ Pop\", category: \"pop\", color: \"linear-gradient(135deg, #f59e0b, #dc2626)\", logoText: \"OC\", webUrl: \"https:\/\/www.ondacero.com.pe\", url: \"https:\/\/us-b4-p-e-ml19-audio.cdn.mdstrm.com\/live-audio-aw\/6598b65ab398c90871aff8cc?aid=658ddcc0b2c7835d48fee06d\" },\n        { id: \"rpp\", name: \"RPP Noticias\", genre: \"Noticias \/ Actualidad\", category: \"noticias\", color: \"linear-gradient(135deg, #2563eb, #4338ca)\", logoText: \"RPP\", webUrl: \"https:\/\/rpp.pe\", url: \"https:\/\/us-b4-p-e-qg12-audio.cdn.mdstrm.com\/live-audio-aw\/5fab3416b5f9ef165cfab6e9?aid=5faaeb72f92d7b07dfe10181\" },\n        { id: \"ritmo-romantica\", name: \"Ritmo Rom\u00e1ntica\", genre: \"Baladas \/ Rom\u00e1ntica\", category: \"pop\", color: \"linear-gradient(135deg, #ec4899, #e11d48)\", logoText: \"RR\", webUrl: \"https:\/\/ritmoromantica.pe\", url: \"https:\/\/us-b4-p-e-pb13-audio.cdn.mdstrm.com\/live-audio-aw\/6839e2376607bdf6b2fcde27\" },\n        { id: \"moda\", name: \"Moda te Mueva\", genre: \"Reggaeton \/ Urbano\", category: \"pop\", color: \"linear-gradient(135deg, #facc15, #ea580c)\", logoText: \"M\", webUrl: \"https:\/\/radiomoda.com.pe\", url: \"https:\/\/us-b4-p-e-pb13-audio.cdn.mdstrm.com\/live-audio-aw\/6839e1c82cc4c480fcd318dd?aid=68386a6e44ba64f6064b25c9\" },\n        { id: \"panamericana\", name: \"Panamericana Radio\", genre: \"Salsa \/ Cumbia\", category: \"cumbia\", color: \"linear-gradient(135deg, #dc2626, #ea580c)\", logoText: \"P\", webUrl: \"https:\/\/panamericana.pe\", url: \"https:\/\/mdstrm.com\/audio\/6598b62dded1380470f4e539\/icecast.audio\" },\n        { id: \"z-rock-pop\", name: \"Z Rock & Pop\", genre: \"Rock \/ Cl\u00e1sicos 80s & 90s\", category: \"rock\", color: \"linear-gradient(135deg, #334155, #090d16)\", logoText: \"Z\", webUrl: \"https:\/\/radioz.pe\", url: \"https:\/\/radioz.egostreaming.pe\/radio\/3e4f6a1b2c3d4e567890abcd\/\" },\n        { id: \"nueva-q\", name: \"Radio Nueva Q\", genre: \"Cumbia Peruana\", category: \"cumbia\", color: \"linear-gradient(135deg, #eab308, #d97706)\", logoText: \"NQ\", webUrl: \"https:\/\/radionuevaq.pe\", url: \"https:\/\/us-b4-p-e-zs14-audio.cdn.mdstrm.com\/live-audio-aw\/6839e1f153fcf56d988d5943\" },\n        { id: \"la-zona\", name: \"La Zona\", genre: \"Urbano \/ Trap \/ Reggaeton\", category: \"pop\", color: \"linear-gradient(135deg, #9333ea, #3730a3)\", logoText: \"LZ\", webUrl: \"https:\/\/lazona.com.pe\", url: \"https:\/\/us-b4-p-e-pb13-audio.cdn.mdstrm.com\/live-audio-aw\/5fada54116646e098d97e6a5?aid=5faaeb72f92d7b07dfe10181\" },\n        { id: \"la-inolvidable\", name: \"La Inolvidable\", genre: \"M\u00fasica del Recuerdo\", category: \"pop\", color: \"linear-gradient(135deg, #0d9488, #047857)\", logoText: \"LI\", webUrl: \"https:\/\/lainolvidable.pe\", url: \"https:\/\/us-b4-p-e-ml19-audio.cdn.mdstrm.com\/live-audio-aw\/6839e24cf4eacd81ada4e6b4?aid=68386a6e44ba64f6064b25c9\" },\n        { id: \"radio-corazon\", name: \"Radio Coraz\u00f3n\", genre: \"Pop Latino \/ Rom\u00e1ntica\", category: \"pop\", color: \"linear-gradient(135deg, #f43f5e, #db2777)\", logoText: \"RC\", webUrl: \"https:\/\/radiocorazon.pe\", url: \"https:\/\/us-b4-p-e-zs14-audio.cdn.mdstrm.com\/live-audio-aw\/5fada514fc16c006bd63370f?aid=5faaeb72f92d7b07dfe10181\" },\n        { id: \"studio-92\", name: \"Studio 92\", genre: \"Pop \/ Electro \/ Hits\", category: \"pop\", color: \"linear-gradient(135deg, #06b6d4, #2563eb)\", logoText: \"S92\", webUrl: \"https:\/\/studio92.com\", url: \"https:\/\/mdstrm.com\/audio\/5fada553978fe1080e3ac5ea\/icecast.audio\" },\n        { id: \"planeta-fm\", name: \"Planeta FM\", genre: \"Pop en Ingl\u00e9s \/ Hip Hop\", category: \"pop\", color: \"linear-gradient(135deg, #7c3aed, #581c87)\", logoText: \"PL\", webUrl: \"https:\/\/planeta.pe\", url: \"https:\/\/us-b4-p-e-qg12-audio.cdn.mdstrm.com\/live-audio-aw\/6839e274f40e6b9832e37633\" },\n        { id: \"la-karibena\", name: \"La Karibe\u00f1a\", genre: \"Cumbia y M\u00e1s\", category: \"cumbia\", color: \"linear-gradient(135deg, #f97316, #d97706)\", logoText: \"LK\", webUrl: \"https:\/\/karibena.pe\", url: \"https:\/\/karibena.egostreaming.pe\/radio\/6898b6e52d9e088a6de159\/\" },\n        { id: \"radio-mar\", name: \"Radio Mar\", genre: \"Salsa de Hoy y Siempre\", category: \"cumbia\", color: \"linear-gradient(135deg, #0ea5e9, #4f46e5)\", logoText: \"RM\", webUrl: \"https:\/\/radiomar.pe\", url: \"https:\/\/us-b4-p-e-cg11-audio.cdn.mdstrm.com\/live-audio-aw\/6839e261d2efddf5bfbc2d3d\" },\n        { id: \"radio-felicidad\", name: \"Radio Felicidad\", genre: \"M\u00fasica del Recuerdo\", category: \"noticias\", color: \"linear-gradient(135deg, #059669, #115e59)\", logoText: \"RF\", webUrl: \"https:\/\/felicidad.pe\", url: \"https:\/\/us-b4-p-e-ml19-audio.cdn.mdstrm.com\/live-audio-aw\/5fad731fcf097a068af3c8f7?aid=5faaeb72f92d7b07dfe10181\" },\n        { id: \"radio-oxigeno\", name: \"Radio Ox\u00edgeno\", genre: \"Rock & Pop Cl\u00e1sico\", category: \"rock\", color: \"linear-gradient(135deg, #3b82f6, #0891b2)\", logoText: \"O2\", webUrl: \"https:\/\/oxigeno.com.pe\", url: \"https:\/\/us-b4-p-e-ml19-audio.cdn.mdstrm.com\/live-audio-aw\/5fab0687bcd6c2389ee9480c?aid=5faaeb72f92d7b07dfe10181\" },\n        { id: \"radio-la-kalle\", name: \"Radio La Kalle\", genre: \"Salsa \/ Cumbia \/ Chicha\", category: \"cumbia\", color: \"linear-gradient(135deg, #ef4444, #be123c)\", logoText: \"K\", webUrl: \"https:\/\/lakalle.pe\", url: \"https:\/\/lakalle.egostreaming.pe\/radio\/a7b9c3e4567f8d0123456789\/\" },\n        { id: \"peru-folk\", name: \"Per\u00fa Folk Radio\", genre: \"Folklore y M\u00fasica Andina\", category: \"cumbia\", color: \"linear-gradient(135deg, #d97706, #b91c1c)\", logoText: \"PF\", webUrl: \"https:\/\/perufolkradio.com\", url: \"https:\/\/raymistream.net\/listen\/perufolkradio\/live\" }\n      ];\n\n      let currentIndex = -1;\n      let isPlaying = false;\n      let activeCat = 'all';\n      let favorites = JSON.parse(localStorage.getItem('pr_favs') || '[]');\n\n      const audio = document.getElementById('pr-audio');\n\n      function init() {\n        window.PR_renderCards();\n        setupAudio();\n      }\n\n      window.PR_renderCards = function() {\n        const grid = document.getElementById('pr-grid-container');\n        if (!grid) return;\n\n        const searchVal = (document.getElementById('pr-search')?.value || '').toLowerCase();\n        grid.innerHTML = '';\n\n        const filtered = stations.filter(st => {\n          const matchSearch = st.name.toLowerCase().includes(searchVal) || st.genre.toLowerCase().includes(searchVal);\n          const matchCat = activeCat === 'all' ? true : activeCat === 'favoritos' ? favorites.includes(st.id) : st.category === activeCat;\n          return matchSearch && matchCat;\n        });\n\n        if (filtered.length === 0) {\n          grid.innerHTML = '<div style=\"grid-column:1\/-1; text-align:center; padding:30px; color:#64748b; font-size:13px;\">No se encontraron emisoras.<\/div>';\n          return;\n        }\n\n        filtered.forEach(st => {\n          const origIdx = stations.findIndex(s => s.id === st.id);\n          const isCurr = currentIndex === origIdx;\n          const isFav = favorites.includes(st.id);\n\n          const card = document.createElement('div');\n          card.className = `pr-card ${isCurr ? 'active' : ''}`;\n\n          card.innerHTML = `\n            <div class=\"pr-card-info\" onclick=\"window.PR_playIndex(${origIdx})\">\n              <div class=\"pr-card-logo\" style=\"background:${st.color}\">${st.logoText}<\/div>\n              <div class=\"pr-card-texts\">\n                <div class=\"pr-card-name\">${st.name}<\/div>\n                <div class=\"pr-card-genre\">${st.genre}<\/div>\n              <\/div>\n            <\/div>\n            <div class=\"pr-card-actions\">\n              <a href=\"${st.webUrl}\" target=\"_blank\" title=\"Visitar web oficial\" class=\"pr-action-btn\" style=\"font-size:14px;\">\ud83c\udf10<\/a>\n              <button class=\"pr-action-btn pr-fav-btn ${isFav ? 'active' : ''}\" onclick=\"window.PR_toggleFav('${st.id}', event)\" title=\"Favorito\" style=\"font-size:14px;\">\n                ${isFav ? '\u2764\ufe0f' : '\ud83e\udd0d'}\n              <\/button>\n              <div class=\"pr-play-btn-small\" onclick=\"window.PR_playIndex(${origIdx})\" title=\"Reproducir\">\n                ${isCurr && isPlaying ? '\u23f8' : '\u25b6'}\n              <\/div>\n            <\/div>\n          `;\n          grid.appendChild(card);\n        });\n      };\n\n      function setupAudio() {\n        audio.addEventListener('playing', () => {\n          isPlaying = true;\n          updateUI();\n          document.getElementById('pr-status').innerText = 'Transmitiendo en vivo';\n        });\n\n        audio.addEventListener('pause', () => {\n          isPlaying = false;\n          updateUI();\n          document.getElementById('pr-status').innerText = 'En pausa';\n        });\n\n        audio.addEventListener('waiting', () => {\n          document.getElementById('pr-status').innerText = 'Conectando...';\n        });\n\n        audio.addEventListener('error', () => {\n          isPlaying = false;\n          updateUI();\n          document.getElementById('pr-status').innerText = 'Error de conexi\u00f3n';\n        });\n      }\n\n      window.PR_playIndex = function(index) {\n        if (currentIndex === index && isPlaying) {\n          audio.pause();\n          return;\n        }\n        currentIndex = index;\n        const st = stations[currentIndex];\n        audio.src = st.url;\n        audio.load();\n        audio.play().catch(console.warn);\n        isPlaying = true;\n        updateUI();\n        window.PR_renderCards();\n      };\n\n      window.PR_togglePlay = function() {\n        if (currentIndex === -1) {\n          window.PR_playIndex(0);\n          return;\n        }\n        if (isPlaying) audio.pause();\n        else audio.play().catch(console.warn);\n      };\n\n      window.PR_next = function() {\n        let nxt = (currentIndex + 1) % stations.length;\n        window.PR_playIndex(nxt);\n      };\n\n      window.PR_prev = function() {\n        let prv = (currentIndex - 1 + stations.length) % stations.length;\n        window.PR_playIndex(prv);\n      };\n\n      function updateUI() {\n        if (currentIndex === -1) return;\n        const st = stations[currentIndex];\n\n        document.getElementById('pr-player-title').innerText = st.name;\n        document.getElementById('pr-player-genre').innerText = st.genre;\n        const logo = document.getElementById('pr-player-logo');\n        logo.innerText = st.logoText;\n        logo.style.background = st.color;\n\n        const icon = document.getElementById('pr-main-icon');\n        const bars = document.getElementById('pr-bars');\n\n        if (isPlaying) {\n          icon.innerText = '\u23f8';\n          bars.classList.remove('paused');\n        } else {\n          icon.innerText = '\u25b6';\n          bars.classList.add('paused');\n        }\n      }\n\n      window.PR_setVolume = function(v) {\n        audio.volume = v;\n      };\n\n      window.PR_setCat = function(cat, btn) {\n        activeCat = cat;\n        document.querySelectorAll('.pr-cat-btn').forEach(b => b.classList.remove('active'));\n        btn.classList.add('active');\n        window.PR_renderCards();\n      };\n\n      window.PR_toggleFav = function(id, e) {\n        if (e) e.stopPropagation();\n        if (favorites.includes(id)) favorites = favorites.filter(f => f !== id);\n        else favorites.push(id);\n        localStorage.setItem('pr_favs', JSON.stringify(favorites));\n        window.PR_renderCards();\n      };\n\n      if (document.readyState === 'complete' || document.readyState === 'interactive') {\n        init();\n      } else {\n        window.addEventListener('DOMContentLoaded', init);\n      }\n    })();\n  <\/script>\n<\/div>\n\n\n\n<!-- CONTENEDOR PRINCIPAL DE RADIOS PRO -->\n<div id=\"zeno-radios-wrapper\">\n  <style>\n    \/* Estilos encapsulados para evitar conflictos con tu web *\/\n    #zeno-radios-wrapper {\n      width: 100% !important;\n      max-width: 100% !important;\n      box-sizing: border-box !important;\n      font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif !important;\n      padding: 15px !important;\n      background: radial-gradient(circle at top right, #1e1b4b, #0f172a, #090d16) !important;\n      border-radius: 16px !important;\n      box-shadow: 0 10px 25px rgba(0,0,0,0.4) !important;\n    }\n\n    #zeno-radios-wrapper h2 {\n      text-align: center !important;\n      color: #f43f5e !important;\n      font-size: 20px !important;\n      font-weight: 800 !important;\n      margin-bottom: 20px !important;\n      letter-spacing: 0.5px !important;\n    }\n\n    \/* Cuadr\u00edcula Responsive Inteligente *\/\n    #zeno-radios-wrapper .radios-grid {\n      display: grid !important;\n      grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)) !important;\n      gap: 16px !important;\n      width: 100% !important;\n      box-sizing: border-box !important;\n    }\n\n    \/* Tarjetas de Radio Estilo Pro *\/\n    #zeno-radios-wrapper .radio-player-card {\n      background: rgba(30, 41, 59, 0.7) !important;\n      backdrop-filter: blur(10px) !important;\n      border: 1px solid rgba(255, 255, 255, 0.08) !important;\n      border-radius: 14px !important;\n      padding: 12px !important;\n      display: flex !important;\n      flex-direction: column !important;\n      align-items: center !important;\n      text-align: center !important;\n      transition: all 0.3s ease !important;\n      box-shadow: 0 4px 6px rgba(0,0,0,0.2) !important;\n    }\n\n    #zeno-radios-wrapper .radio-player-card:hover {\n      transform: translateY(-4px) !important;\n      border-color: rgba(99, 102, 241, 0.5) !important;\n      background: rgba(30, 41, 59, 0.9) !important;\n      box-shadow: 0 8px 15px rgba(99, 102, 241, 0.2) !important;\n    }\n\n    #zeno-radios-wrapper .radio-player-card.playing {\n      border-color: #f43f5e !important;\n      background: rgba(244, 63, 94, 0.1) !important;\n      box-shadow: 0 0 15px rgba(244, 63, 94, 0.3) !important;\n    }\n\n    \/* Imagen \/ Logotipo Responsive *\/\n    #zeno-radios-wrapper .radio-player-card img {\n      width: 90px !important;\n      height: 90px !important;\n      object-fit: cover !important;\n      border-radius: 10px !important;\n      margin-bottom: 10px !important;\n      border: 1px solid rgba(255,255,255,0.1) !important;\n      background: #000 !important;\n    }\n\n    \/* Bot\u00f3n de Reproducci\u00f3n Corregido *\/\n    #zeno-radios-wrapper .btn-radio {\n      width: 100% !important;\n      background: linear-gradient(135deg, #4f46e5, #6366f1) !important;\n      border: none !important;\n      color: white !important;\n      padding: 8px 10px !important;\n      border-radius: 8px !important;\n      font-size: 12px !important;\n      font-weight: 700 !important;\n      cursor: pointer !important;\n      transition: opacity 0.2s ease !important;\n      display: flex !important;\n      align-items: center !important;\n      justify-content: center !important;\n      gap: 6px !important;\n    }\n\n    #zeno-radios-wrapper .btn-radio:hover {\n      opacity: 0.9 !important;\n    }\n\n    \/* Estado de Reproducci\u00f3n *\/\n    #zeno-radios-wrapper .radio-status {\n      font-size: 10px !important;\n      color: #94a3b8 !important;\n      margin-top: 8px !important;\n      font-weight: 500 !important;\n    }\n\n    #zeno-radios-wrapper .radio-player-card.playing .radio-status {\n      color: #f43f5e !important;\n      font-weight: 700 !important;\n    }\n  <\/style>\n\n  <h2>\ud83d\udcfb Radios en Vivo &#8211; Reproducci\u00f3n Autom\u00e1tica<\/h2>\n  \n  <!-- Contenedor donde se inyectan las tarjetas -->\n  <div class=\"radios-grid\" id=\"radios-live-container\"><\/div>\n<\/div>\n\n<script>\n(function() {\n    let currentAudio = null;\n    let currentCard = null;\n\n    const radios = [\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/fSgf1EHjyP9Bp1CI2e8XrDhIyEA_4FRXei0iaWVC-gE\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvZDc0YmQ3ZGQtMWZkNi00OTA3LWJhZTUtNTk1NjRiNGVjMTI4L2ltYWdlLz91PTE2ODg2NjAyMTkwMDA.webp\",stream:\"https:\/\/stream-162.zeno.fm\/eqotxvldgmpvv?zt\"},\n        {img:\"https:\/\/i.postimg.cc\/k4FgyZ4V\/cumbiay-peru.png\",stream:\"https:\/\/stream.zeno.fm\/5g8ii1ncoiwuv\"},\n        {img:\"https:\/\/i.postimg.cc\/90mFgpRL\/recuerdame-wey.png\",stream:\"https:\/\/stream.zeno.fm\/uhz3xzwswp8uv\"},\n        {img:\"https:\/\/i.postimg.cc\/TY1SwZtB\/LOGO-RADIO-LA-VOZ-PERU.png\",stream:\"https:\/\/stream.zeno.fm\/9lsy0almdvutv\"},\n        {img:\"https:\/\/i.postimg.cc\/K8gpN98Z\/la-voz-peru-logo-oficial.png\",stream:\"https:\/\/stream.zeno.fm\/zhiunct47shtv\"},\n        {img:\"https:\/\/images.zeno.fm\/vBTANpUh74OBxw6cTrjTgicp99TZTBqevMSoRaNV6xg\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zLzQ5MjZmY2QxLWRjMmMtNGRjNC05NzQ4LTMxNGQ3ZGVhZmE2OC9pbWFnZS8_dT0xNzM5MjMyNzkyMTAw.webp\",stream:\"https:\/\/stream.zeno.fm\/hq09bgaqogbuv\"},\n        {img:\"https:\/\/images.zeno.fm\/e6h_8m74-2qlZViw0Y39xxQtQC1GOLdf7f1dCzcrvNY\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zL2FneHpmbnBsYm04dGMzUmhkSE55TWdzU0NrRjFkR2hEYkdsbGJuUVlnSURRakpMX3hnb01DeElPVTNSaGRHbHZibEJ5YjJacGJHVVlnSURRako2Yzl3b01vZ0VFZW1WdWJ3L2ltYWdlLz91PTE3MzkyMzI4MzM0MDc.webp\",stream:\"https:\/\/stream.zeno.fm\/jqmfghcszwlvv\"},\n        {img:\"https:\/\/images.zeno.fm\/pMWaUkiF5e1v8drdcm-a8VFT9uaEA62FfklKhLVCJEM\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zLzkwNWYzOTVhLTNlMDYtNDM4Ni04YzIzLWYyZDdlZjhmMDE0Ny9pbWFnZS8_dT0xNzM5MjMyODcwMzc2.webp\",stream:\"https:\/\/stream.zeno.fm\/kdb0thbqzztuv\"},\n        {img:\"https:\/\/images.zeno.fm\/9h2aUW6xCgRI03hZx2VDUqnp225xqEmP13czQNlvzMg\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zLzIxYzRkODAzLTAzZWQtNDJmMy1iNjI3LTJiZGJhMzJlMTk2ZC9pbWFnZS8_dT0xNzM5MjMzMzM5Mzg3.webp\", stream:\"https:\/\/stream.zeno.fm\/pyro83b8mqtvv\"},\n        {img:\"https:\/\/images.zeno.fm\/XE7TSpbppXXOD-kXcbHVO_R9tIzVamXnJXRlTYuEWFM\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zLzVlNDE3YWVkLTAzNGItNDUzOS04MjBkLWUxMDRmMTI3NjhiNy9pbWFnZS8_dT0xNzM5MjMyOTEwMjQw.webp\",stream:\"https:\/\/stream.zeno.fm\/4pm78fl3guatv\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/cq4x0x1UzbtlFYimKk37EGO-xdyoEXwSPu1blCA9a_Q\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvOTc2MzUyMmEtOGVhYi00M2YyLTg1ZTItYTgyZDZhYmUxZTdjL2ltYWdlLz91PTE2OTMwMTI1MTUwMDA.webp\",stream:\"https:\/\/stream-164.zeno.fm\/7heuhyl3swvvv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/lXvyVxG6DzkHSzFbIbJOusv6EpSEsAcQN92WssGg1Z4\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJRGd0cmJhOVFnTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRGc0YVRTZ2dzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTcyOTkwNjEwMzAwMA.webp\",stream:\"https:\/\/stream-166.zeno.fm\/evzfwmqnnnruv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/tpWX7UerL1cUIZuKxBgDD6bnNs3fEwcZ54gWg5s3N1U\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJREF3cTd2Z3dvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJREkxcDcwdmdzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY2MTYyNzc5NzAwMA.webp\",stream:\"https:\/\/stream-153.zeno.fm\/0teuwrmgnxhvv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/hubi9PJxUpP6eySuYjPpZ3q0ABFWhLSOsFQhDuVK1yU\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvZTRmYjhjZWItZTYyMC00YzI4LWJhZGItNjdiYjEzMjM2YmRkL2ltYWdlLz91PTE3MzA1MDUyMTkwMDA.webp\",stream:\"https:\/\/stream-166.zeno.fm\/0uw5pb64tbutv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/9q-sbNX7cW4gl0VPhY42t0mclIv9dVUuMZoR-ZP6tY4\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJQ1ExcUhsNGdvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRHduZDJwcGdzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY2MDg1MjQ0MzAwMA.webp\",stream:\"https:\/\/stream-157.zeno.fm\/zwytkt2pgf9uv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/jxRWn-NPwDCgA819A-_fn0TqTpGdl0n0334Reg-m2Mo\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJRGctTG1mMndvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRGc2TGVDNXdvTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTcxNzAxMzMwMTAwMA.webp\",stream:\"https:\/\/stream-171.zeno.fm\/ms4f8zf8eeruv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/1fnTieOpPoKHgwMLJgWZPfpmO8vwDlgrLG913WX9sbk\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJQ1E4Tld1elFzTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJQ1FtUFBCNlFnTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY2MTU0ODYyMjAwMA.webp\",stream:\"https:\/\/stream-167.zeno.fm\/671md145hwzuv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/jAE4lkVFm93X78bSTmu9qm7PtOD4sDDp1B5SJPtZQ2c\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvNDE2MGVkYjgtMWZhMy00ZDRkLThlZGUtN2YwOGVmMGMzMTBjL2ltYWdlLz91PTE2NjYzODkxNTcwMDA.webp\",stream:\"https:\/\/stream-167.zeno.fm\/e9ejgkbghpyuv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/S_rQc0WpVgt8txS-dHf0z9XHy1XPF_F0g-hMKMD580A\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvNGZmNGUxYmUtMjllYS00YTI5LTk4YTItYTZjOGE1ZDE3ZjcyL2ltYWdlLz91PTE2MTExMDM1ODIwMDA.webp\",stream:\"https:\/\/stream-172.zeno.fm\/hiiil0pwrw8tv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/AP3BQwpe12IK4kjp14QbA3Ots9C5Ud4b5YFzToDUpro\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvMmNhYjQxMDAtOWQ2Yy00M2Q4LWE5N2EtYjEyN2NjM2U1NjgyL2ltYWdlLz91PTE3MDE2MTAwMDUwMDA.webp\",stream:\"https:\/\/stream-172.zeno.fm\/ntg1xhl2j8hvv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/fPzZN4zvNtw-ieMCQDUBjYTDiGuos0Ontr-qDteWBkU\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJQ1FyTGo0cUFvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJQ1F6UDdGeXdzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY4NzI4ODk1OTAwMA.webp\",stream:\"https:\/\/stream-158.zeno.fm\/ryrhxgus0wzuv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/2kxy6HYdCsirUiEexhf0nnwUGKjRAmhboIzU03GbG-k\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJRGg4NGVSdmdvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRGc0YVRTZ2dzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY2NzY3MTE1ODAwMA.webp\",stream:\"https:\/\/stream-160.zeno.fm\/w1r13grcvqzuv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/wtweicIxQ4k8Mx0hBCFTsJgIUi2Z2NKidL1GH0ujjVc\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJRElyvl96elFrTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRElqdTd3N1FvTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTcyODk4OTAwODAwMA.webp\",stream:\"https:\/\/stream-155.zeno.fm\/bg4qy23suxhvv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/T8-8PdELZAbYW5hkkqLPanpdl_Vs8hO8JSvA35W5MmY\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJQ1FuczZ6LUFrTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJQ1FtYno1c1FnTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTcyOTM3ODYzMzAwMA.webp\",stream:\"https:\/\/stream.zeno.fm\/h20h3vrrm2zuv?an-uid\"},\n        {img:\"https:\/\/images.zeno.fm\/ejCU3D1tStZNXvBrotBY1D8zHxlNJb0X0s17ZAcGrQE\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zL2M3MjE2ZmI5LWY1NDMtNGI5Zi1hMjg4LWNmYzE2MWY1YjZhZC9pbWFnZS8_dT0xNzM5MjMyOTU0MDE2.webp\",stream:\"https:\/\/stream.zeno.fm\/d0n1rlp22gbtv\"},\n        {img:\"https:\/\/images.zeno.fm\/26EIb48sBYqOpnQ6fhrT3DWk5mVgS83AUsJnKevVUHg\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zLzkxYzQ4ODY1LTU5NzktNDU5OS04NzYwLTM3MzdjM2EyY2ZkOC9pbWFnZS8_dT0xNzM5MjMzMTk2NjE0.webp\",stream:\"https:\/\/stream.zeno.fm\/ljlrehvfkdotv\"},\n        {img:\"https:\/\/images.zeno.fm\/DYX9QYiHvdVCmRz-h69d7W_r51WDR55rItRdXIc_Its\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zL2NmMGg4ZWVjLWJmNzgtNDJkNS04ZDYzLWE0ZmFiY2MyMDMxNS9pbWFnZS8_dT0xNzM5MjMzMjkxNDA5.webp\",stream:\"https:\/\/stream.zeno.fm\/op66pagm7tltv\"}\n    ];\n\n    const cont = document.getElementById(\"radios-live-container\");\n\n    \/\/ 1. Renderizar todas las tarjetas con \u00edconos corregidos y limpios\n    radios.forEach((r, index) => {\n        const c = document.createElement(\"div\");\n        c.className = \"radio-player-card\";\n        if(index === 0) c.id = \"first-radio-card\"; \n        \n        c.innerHTML = `\n            <img decoding=\"async\" src=\"${r.img}\" loading=\"lazy\" alt=\"Radio Logo\">\n            <button class=\"btn-radio\">\u25b6 Reproducir<\/button>\n            <div class=\"radio-status\">Estado: Pausado<\/div>\n            <audio preload=\"none\" playsinline src=\"${r.stream}\"><\/audio>\n        `;\n        \n        const a = c.querySelector(\"audio\");\n        const b = c.querySelector(\".btn-radio\");\n        const s = c.querySelector(\".radio-status\");\n\n        b.addEventListener(\"click\", () => {\n            if (currentAudio && currentAudio !== a) {\n                currentAudio.pause();\n                currentCard.classList.remove(\"playing\");\n                currentCard.querySelector(\".btn-radio\").innerHTML = \"\u25b6 Reproducir\";\n                currentCard.querySelector(\".radio-status\").textContent = \"Estado: Pausado\";\n            }\n            if (a.paused) {\n                a.play().catch(() => {});\n                b.innerHTML = \"\u23f8 Pausar\";\n                s.textContent = \"Estado: Reproduciendo\";\n                c.classList.add(\"playing\");\n                currentAudio = a;\n                currentCard = c;\n            } else {\n                a.pause();\n                b.innerHTML = \"\u25b6 Reproducir\";\n                s.textContent = \"Estado: Pausado\";\n                c.classList.remove(\"playing\");\n                currentAudio = null;\n                currentCard = null;\n            }\n        });\n        cont.appendChild(c);\n    });\n\n    \/\/ 2. Funci\u00f3n de Autoplay inteligente (Se mantiene intacta)\n    function initAutoplay() {\n        const firstPlayer = document.getElementById(\"first-radio-card\");\n        if (!firstPlayer) return;\n        \n        const audio = firstPlayer.querySelector(\"audio\");\n        const button = firstPlayer.querySelector(\".btn-radio\");\n        const status = firstPlayer.querySelector(\".radio-status\");\n\n        audio.play().then(() => {\n            button.innerHTML = \"\u23f8 Pausar\";\n            status.textContent = \"Estado: Reproduciendo\";\n            firstPlayer.classList.add(\"playing\");\n            currentAudio = audio;\n            currentCard = firstPlayer;\n        }).catch(() => {\n            const unlock = () => {\n                if (!currentAudio) {\n                    audio.play().catch(() => {});\n                    button.innerHTML = \"\u23f8 Pausar\";\n                    status.textContent = \"Estado: Reproduciendo\";\n                    firstPlayer.classList.add(\"playing\");\n                    currentAudio = audio;\n                    currentCard = firstPlayer;\n                }\n                document.removeEventListener(\"click\", unlock);\n            };\n            document.addEventListener(\"click\", unlock, { once: true });\n        });\n    }\n\n    if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n        initAutoplay();\n    } else {\n        document.addEventListener(\"DOMContentLoaded\", initAutoplay);\n    }\n})();\n<\/script>\n\n\n\n<div class=\"radio-grid-container\" id=\"radios-live-container\"><\/div>\n\n\n\n<script>\n(function() {\n    let currentAudio = null;\n    let currentCard = null;\n\n    const radios = [\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/fSgf1EHjyP9Bp1CI2e8XrDhIyEA_4FRXei0iaWVC-gE\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvZDc0YmQ3ZGQtMWZkNi00OTA3LWJhZTUtNTk1NjRiNGVjMTI4L2ltYWdlLz91PTE2ODg2NjAyMTkwMDA.webp\",stream:\"https:\/\/stream-162.zeno.fm\/eqotxvldgmpvv?zt\"},\n        {img:\"https:\/\/i.postimg.cc\/k4FgyZ4V\/cumbiay-peru.png\",stream:\"https:\/\/stream.zeno.fm\/5g8ii1ncoiwuv\"},\n        {img:\"https:\/\/i.postimg.cc\/90mFgpRL\/recuerdame-wey.png\",stream:\"https:\/\/stream.zeno.fm\/uhz3xzwswp8uv\"},\n        {img:\"https:\/\/i.postimg.cc\/TY1SwZtB\/LOGO-RADIO-LA-VOZ-PERU.png\",stream:\"https:\/\/stream.zeno.fm\/9lsy0almdvutv\"},\n        {img:\"https:\/\/i.postimg.cc\/K8gpN98Z\/la-voz-peru-logo-oficial.png\",stream:\"https:\/\/stream.zeno.fm\/zhiunct47shtv\"},\n        {img:\"https:\/\/images.zeno.fm\/vBTANpUh74OBxw6cTrjTgicp99TZTBqevMSoRaNV6xg\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zLzQ5MjZmY2QxLWRjMmMtNGRjNC05NzQ4LTMxNGQ3ZGVhZmE2OC9pbWFnZS8_dT0xNzM5MjMyNzkyMTAw.webp\",stream:\"https:\/\/stream.zeno.fm\/hq09bgaqogbuv\"},\n        {img:\"https:\/\/images.zeno.fm\/e6h_8m74-2qlZViw0Y39xxQtQC1GOLdf7f1dCzcrvNY\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zL2FneHpmbnBsYm04dGMzUmhkSE55TWdzU0NrRjFkR2hEYkdsbGJuUVlnSURRakpMX3hnb01DeElPVTNSaGRHbHZibEJ5YjJacGJHVVlnSURRako2Yzl3b01vZ0VFZW1WdWJ3L2ltYWdlLz91PTE3MzkyMzI4MzM0MDc.webp\",stream:\"https:\/\/stream.zeno.fm\/jqmfghcszwlvv\"},\n        {img:\"https:\/\/images.zeno.fm\/pMWaUkiF5e1v8drdcm-a8VFT9uaEA62FfklKhLVCJEM\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zLzkwNWYzOTVhLTNlMDYtNDM4Ni04YzIzLWYyZDdlZjhmMDE0Ny9pbWFnZS8_dT0xNzM5MjMyODcwMzc2.webp\",stream:\"https:\/\/stream.zeno.fm\/kdb0thbqzztuv\"},\n        {img:\"https:\/\/images.zeno.fm\/9h2aUW6xCgRI03hZx2VDUqnp225xqEmP13czQNlvzMg\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zLzIxYzRkODAzLTAzZWQtNDJmMy1iNjI3LTJiZGJhMzJlMTk2ZC9pbWFnZS8_dT0xNzM5MjMzMzM5Mzg3.webp\", stream:\"https:\/\/stream.zeno.fm\/pyro83b8mqtvv\"},\n        {img:\"https:\/\/images.zeno.fm\/XE7TSpbppXXOD-kXcbHVO_R9tIzVamXnJXRlTYuEWFM\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zLzVlNDE3YWVkLTAzNGItNDUzOS04MjBkLWUxMDRmMTI3NjhiNy9pbWFnZS8_dT0xNzM5MjMyOTEwMjQw.webp\",stream:\"https:\/\/stream.zeno.fm\/4pm78fl3guatv\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/cq4x0x1UzbtlFYimKk37EGO-xdyoEXwSPu1blCA9a_Q\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvOTc2MzUyMmEtOGVhYi00M2YyLTg1ZTItYTgyZDZhYmUxZTdjL2ltYWdlLz91PTE2OTMwMTI1MTUwMDA.webp\",stream:\"https:\/\/stream-164.zeno.fm\/7heuhyl3swvvv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/lXvyVxG6DzkHSzFbIbJOusv6EpSEsAcQN92WssGg1Z4\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJRGd0cmJhOVFnTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRGc0YVRTZ2dzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTcyOTkwNjEwMzAwMA.webp\",stream:\"https:\/\/stream-166.zeno.fm\/evzfwmqnnnruv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/tpWX7UerL1cUIZuKxBgDD6bnNs3fEwcZ54gWg5s3N1U\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJREF3cTd2Z3dvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJREkxcDcwdmdzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY2MTYyNzc5NzAwMA.webp\",stream:\"https:\/\/stream-153.zeno.fm\/0teuwrmgnxhvv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/hubi9PJxUpP6eySuYjPpZ3q0ABFWhLSOsFQhDuVK1yU\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvZTRmYjhjZWItZTYyMC00YzI4LWJhZGItNjdiYjEzMjM2YmRkL2ltYWdlLz91PTE3MzA1MDUyMTkwMDA.webp\",stream:\"https:\/\/stream-166.zeno.fm\/0uw5pb64tbutv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/9q-sbNX7cW4gl0VPhY42t0mclIv9dVUuMZoR-ZP6tY4\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJQ1ExcUhsNGdvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRHduZDJwcGdzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY2MDg1MjQ0MzAwMA.webp\",stream:\"https:\/\/stream-157.zeno.fm\/zwytkt2pgf9uv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/jxRWn-NPwDCgA819A-_fn0TqTpGdl0n0334Reg-m2Mo\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJRGctTG1mMndvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRGc2TGVDNXdvTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTcxNzAxMzMwMTAwMA.webp\",stream:\"https:\/\/stream-171.zeno.fm\/ms4f8zf8eeruv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/1fnTieOpPoKHgwMLJgWZPfpmO8vwDlgrLG913WX9sbk\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJQ1E4Tld1elFzTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJQ1FtUFBCNlFnTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY2MTU0ODYyMjAwMA.webp\",stream:\"https:\/\/stream-167.zeno.fm\/671md145hwzuv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/jAE4lkVFm93X78bSTmu9qm7PtOD4sDDp1B5SJPtZQ2c\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvNDE2MGVkYjgtMWZhMy00ZDRkLThlZGUtN2YwOGVmMGMzMTBjL2ltYWdlLz91PTE2NjYzODkxNTcwMDA.webp\",stream:\"https:\/\/stream-167.zeno.fm\/e9ejgkbghpyuv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/S_rQc0WpVgt8txS-dHf0z9XHy1XPF_F0g-hMKMD580A\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvNGZmNGUxYmUtMjllYS00YTI5LTk4YTItYTZjOGE1ZDE3ZjcyL2ltYWdlLz91PTE2MTExMDM1ODIwMDA.webp\",stream:\"https:\/\/stream-172.zeno.fm\/hiiil0pwrw8tv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/AP3BQwpe12IK4kjp14QbA3Ots9C5Ud4b5YFzToDUpro\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvMmNhYjQxMDAtOWQ2Yy00M2Q4LWE5N2EtYjEyN2NjM2U1NjgyL2ltYWdlLz91PTE3MDE2MTAwMDUwMDA.webp\",stream:\"https:\/\/stream-172.zeno.fm\/ntg1xhl2j8hvv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/fPzZN4zvNtw-ieMCQDUBjYTDiGuos0Ontr-qDteWBkU\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJQ1FyTGo0cUFvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJQ1F6UDdGeXdzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY4NzI4ODk1OTAwMA.webp\",stream:\"https:\/\/stream-158.zeno.fm\/ryrhxgus0wzuv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/2kxy6HYdCsirUiEexhf0nnwUGKjRAmhboIzU03GbG-k\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJRGg4NGVSdmdvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRGc0YVRTZ2dzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY2NzY3MTE1ODAwMA.webp\",stream:\"https:\/\/stream-160.zeno.fm\/w1r13grcvqzuv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/wtweicIxQ4k8Mx0hBCFTsJgIUi2Z2NKidL1GH0ujjVc\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJRElyvl96elFrTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRElqdTd3N1FvTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTcyODk4OTAwODAwMA.webp\",stream:\"https:\/\/stream-155.zeno.fm\/bg4qy23suxhvv?zt\"},\n        {img:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/T8-8PdELZAbYW5hkkqLPanpdl_Vs8hO8JSvA35W5MmY\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJQ1FuczZ6LUFrTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJQ1FtYno1c1FnTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTcyOTM3ODYzMzAwMA.webp\",stream:\"https:\/\/stream.zeno.fm\/h20h3vrrm2zuv?an-uid\"},\n        {img:\"https:\/\/images.zeno.fm\/ejCU3D1tStZNXvBrotBY1D8zHxlNJb0X0s17ZAcGrQE\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zL2M3MjE2ZmI5LWY1NDMtNGI5Zi1hMjg4LWNmYzE2MWY1YjZhZC9pbWFnZS8_dT0xNzM5MjMyOTU0MDE2.webp\",stream:\"https:\/\/stream.zeno.fm\/d0n1rlp22gbtv\"},\n        {img:\"https:\/\/images.zeno.fm\/26EIb48sBYqOpnQ6fhrT3DWk5mVgS83AUsJnKevVUHg\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zLzkxYzQ4ODY1LTU5NzktNDU5OS04NzYwLTM3MzdjM2EyY2ZkOC9pbWFnZS8_dT0xNzM5MjMzMTk2NjE0.webp\",stream:\"https:\/\/stream.zeno.fm\/ljlrehvfkdotv\"},\n        {img:\"https:\/\/images.zeno.fm\/DYX9QYiHvdVCmRz-h69d7W_r51WDR55rItRdXIc_Its\/rs:fit:170:170\/g:ce:0:0\/aHR0cHM6Ly9zdHJlYW0tdG9vbHMuemVub21lZGlhLmNvbS9jb250ZW50L3N0YXRpb25zL2NiZDg0ZWVjLWJmNzgtNDJkNS04ZDYzLWE0ZmFiY2MyMDMxNS9pbWFnZS8_dT0xNzM5MjMzMjkxNDA5.webp\",stream:\"https:\/\/stream.zeno.fm\/op66pagm7tltv\"}\n    ];\n\n    const cont = document.getElementById(\"radios-live-container\");\n\n    \/\/ 1. Renderizar todas las tarjetas de radio de manera inmediata\n    radios.forEach((r, index) => {\n        const c = document.createElement(\"div\");\n        c.className = \"radio-player-card\";\n        \/\/ Asignamos un ID \u00fanico interno a cada tarjeta para identificar la primera f\u00e1cilmente\n        if(index === 0) c.id = \"first-radio-card\"; \n        \n        c.innerHTML = `\n            <img decoding=\"async\" src=\"${r.img}\" loading=\"lazy\" alt=\"Radio Logo\">\n            <button class=\"btn-radio\">\u00e2\u0096\u00b6 Reproducir<\/button>\n            <div class=\"radio-status\">Estado: Pausado<\/div>\n            <audio preload=\"none\" playsinline src=\"${r.stream}\"><\/audio>\n        `;\n        \n        const a = c.querySelector(\"audio\");\n        const b = c.querySelector(\".btn-radio\");\n        const s = c.querySelector(\".radio-status\");\n\n        b.addEventListener(\"click\", () => {\n            if (currentAudio && currentAudio !== a) {\n                currentAudio.pause();\n                currentCard.classList.remove(\"playing\");\n                currentCard.querySelector(\".btn-radio\").textContent = \"\u00e2\u0096\u00b6 Reproducir\";\n                currentCard.querySelector(\".radio-status\").textContent = \"Estado: Pausado\";\n            }\n            if (a.paused) {\n                a.play().catch(() => {});\n                b.textContent = \"\u00e2\u008f\u00b8 Pausar\";\n                s.textContent = \"Estado: Reproduciendo\";\n                c.classList.add(\"playing\");\n                currentAudio = a;\n                currentCard = c;\n            } else {\n                a.pause();\n                b.textContent = \"\u00e2\u0096\u00b6 Reproducir\";\n                s.textContent = \"Estado: Pausado\";\n                c.classList.remove(\"playing\");\n                currentAudio = null;\n                currentCard = null;\n            }\n        });\n        cont.appendChild(c);\n    });\n\n    \/\/ 2. Funci\u00f3n dedicada para arrancar la primera radio (Autoplay) de forma segura\n    function initAutoplay() {\n        const firstPlayer = document.getElementById(\"first-radio-card\");\n        if (!firstPlayer) return;\n        \n        const audio = firstPlayer.querySelector(\"audio\");\n        const button = firstPlayer.querySelector(\".btn-radio\");\n        const status = firstPlayer.querySelector(\".radio-status\");\n\n        \/\/ Intentamos reproducir de inmediato\n        audio.play().then(() => {\n            button.textContent = \"\u00e2\u008f\u00b8 Pausar\";\n            status.textContent = \"Estado: Reproduciendo\";\n            firstPlayer.classList.add(\"playing\");\n            currentAudio = audio;\n            currentCard = firstPlayer;\n        }).catch(() => {\n            \/\/ Si el navegador bloque\u00f3 el autoplay directo, se reproducir\u00e1 autom\u00e1ticamente al primer clic del usuario en la web\n            const unlock = () => {\n                \/\/ Solo ejecutamos si el usuario no ha interactuado activamente con otra radio antes\n                if (!currentAudio) {\n                    audio.play().catch(() => {});\n                    button.textContent = \"\u00e2\u008f\u00b8 Pausar\";\n                    status.textContent = \"Estado: Reproduciendo\";\n                    firstPlayer.classList.add(\"playing\");\n                    currentAudio = audio;\n                    currentCard = firstPlayer;\n                }\n                document.removeEventListener(\"click\", unlock);\n            };\n            document.addEventListener(\"click\", unlock, { once: true });\n        });\n    }\n\n    \/\/ Ejecuci\u00f3n segura: Si el DOM ya est\u00e1 listo, arranca; si no, espera al evento.\n    if (document.readyState === \"interactive\" || document.readyState === \"complete\") {\n        initAutoplay();\n    } else {\n        document.addEventListener(\"DOMContentLoaded\", initAutoplay);\n    }\n})();\n<\/script>\n\n\n\n<section id=\"tv\" class=\"bg-slate-800 p-6 rounded-xl shadow-lg border border-slate-700\">\n                <h2 class=\"text-xl font-bold mb-4 flex items-center gap-2\">\n                    <i class=\"fa-solid fa-tv text-indigo-400\"><\/i> Canal de Televisi\u00f3n Online ACM\n                <\/h2>\n                \n                <style>\n                  .cabosuker-wrapper {\n                    position: relative;\n                    width: 100%;\n                    height: 500px;\n                    min-height: 400px;\n                    background: #000;\n                    overflow: hidden;\n                    font-family: Arial, sans-serif;\n                    box-sizing: border-box;\n                    isolation: isolate;\n                    display: flex;\n                    flex-direction: column;\n                    border-radius: 0.5rem;\n                  }\n                  .cabosuker-wrapper *, .cabosuker-wrapper *::before, .cabosuker-wrapper *::after { box-sizing: border-box; }\n                  .cabosuker-wrapper .cs-info-superior { position: absolute; top: 14px; left: 14px; z-index: 20; color: #fff; text-shadow: 2px 2px 8px #000; pointer-events: none; }\n                  .cabosuker-wrapper .cs-logo-hd { display: block; width: 90px; max-width: 100%; height: auto; margin-bottom: 4px; filter: drop-shadow(0 0 5px #fff); }\n                  .cabosuker-wrapper #cs-reloj { font-size: clamp(1rem, 3vw, 1.8rem); font-weight: 900; line-height: 1.2; font-variant-numeric: tabular-nums; }\n                  .cabosuker-wrapper #cs-fecha { font-size: clamp(0.65rem, 1.5vw, 0.85rem); color: #00E5FF; text-transform: uppercase; }\n                  .cabosuker-wrapper .cs-publicidad { position: absolute; top: 14px; right: 14px; z-index: 30; max-width: 48%; }\n                  .cabosuker-wrapper .cs-publicidad-enlace { display: inline-flex; justify-content: center; align-items: center; gap: 7px; padding: 11px 16px; border: 2px solid #FFD700; border-radius: 8px; background: linear-gradient(180deg, #292929, #000); color: #FFD700; font-size: 0.9rem; font-weight: bold; text-decoration: none; text-align: center; overflow-wrap: anywhere; box-shadow: 0 0 12px rgba(255, 215, 0, 0.3); transition: background 0.2s ease, color 0.2s ease; }\n                  .cabosuker-wrapper .cs-publicidad-enlace:hover { background: #FFD700; color: #000; }\n                  .cabosuker-wrapper .cs-video-box { position: relative; flex: 1 1 auto; min-height: 0; width: 100%; background: #000; overflow: hidden; }\n                  .cabosuker-wrapper .cs-video-box iframe { display: block; width: 100%; height: 100%; border: 0; background: #000; }\n                  .cabosuker-wrapper .cs-barra-sucur { position: relative; z-index: 10; flex: 0 0 42px; display: flex; align-items: center; width: 100%; height: 42px; overflow: hidden; background: #000; border-top: 2px solid #FFD700; }\n                  .cabosuker-wrapper .cs-marquee { display: inline-block; flex-shrink: 0; padding-left: 100%; white-space: nowrap; color: #FFD700; font-size: 1.15rem; font-weight: bold; animation: cs-scroll 18s linear infinite; }\n                  @keyframes cs-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }\n                <\/style>\n\n                <div class=\"cabosuker-wrapper\">\n                  <div class=\"cs-info-superior\">\n                    <img decoding=\"async\" src=\"https:\/\/i.postimg.cc\/XNpPcxcR\/LOGO-RADIO-LA-VOZ-PERU.png\" class=\"cs-logo-hd\" alt=\"Logo\">\n                    <div id=\"cs-reloj\">&#8211;:&#8211;:&#8211;<\/div>\n                    <div id=\"cs-fecha\">Cargando fecha&#8230;<\/div>\n                  <\/div>\n                  <div class=\"cs-publicidad\">\n                    <a class=\"cs-publicidad-enlace\" id=\"cs-enlace-publicidad\" href=\"https:\/\/googlecumbia.metricavisual.com\/?page_id=11\" target=\"_blank\" rel=\"noopener noreferrer\">\ud83d\udce2 VER PUBLICIDAD<\/a>\n                  <\/div>\n                  <div class=\"cs-video-box\">\n                    <iframe id=\"cs-iframe-player\" src=\"https:\/\/embed.saohgdasregions.fun\/embed2\/amc.html\" title=\"Reproductor\" allowfullscreen=\"\" scrolling=\"no\" allow=\"encrypted-media; picture-in-picture; autoplay\" sandbox=\"allow-scripts allow-same-origin allow-presentation allow-forms\"><\/iframe>\n                  <\/div>\n                  <div class=\"cs-barra-sucur\">\n                    <div class=\"cs-marquee\">BIENVENIDOS A RADIO LA VOZ PER\u00da<\/div>\n                  <\/div>\n                <\/div>\n            <\/section>\n\n\n\n<link href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/5.15.4\/css\/all.min.css\" rel=\"stylesheet\">\n\n<style>\n* {\n  margin: 0;\n  padding: 0;\n  box-sizing: border-box;\n}\n\nbody {\n  font-family: Arial, sans-serif;\n  background: #111;\n  color: #fff;\n  padding: 10px;\n}\n\n.container {\n  width: 100%;\n  max-width: 750px;\n  margin: auto;\n  background: #1f2937;\n  border-radius: 20px;\n  padding: 20px;\n  box-shadow: 0 10px 25px rgba(0,0,0,0.5);\n}\n\n.radio-header {\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  margin-bottom: 20px;\n}\n\n.radio-header h3 {\n  color: #ec4899;\n  font-size: 1.1rem;\n}\n\n.live {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  font-size: 0.85rem;\n  font-weight: bold;\n}\n\n.live-dot {\n  width: 12px;\n  height: 12px;\n  background: #22c55e;\n  border-radius: 50%;\n  box-shadow: 0 0 8px #22c55e;\n}\n\n\/* CONTENEDOR DE VIDEO DE TV *\/\n.video-container {\n  width: 100%;\n  aspect-ratio: 16\/9;\n  background: #000;\n  border-radius: 16px;\n  overflow: hidden;\n  margin-bottom: 20px;\n  box-shadow: 0 5px 15px rgba(0,0,0,0.4);\n  position: relative;\n}\n\n.video-container video {\n  width: 100%;\n  height: 100%;\n  border: none;\n  object-fit: contain;\n}\n\n.station-info {\n  text-align: center;\n  margin-bottom: 15px;\n}\n\n.station-info h2 {\n  margin-top: 5px;\n  font-size: 1.2rem;\n  word-break: break-word;\n}\n\n.station-info p {\n  color: #9ca3af;\n  font-size: 0.9rem;\n}\n\n.controls {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  gap: 15px;\n  margin: 20px 0;\n}\n\n.btn {\n  width: 50px;\n  height: 50px;\n  border: none;\n  border-radius: 50%;\n  cursor: pointer;\n  background: #374151;\n  color: #fff;\n  font-size: 18px;\n  transition: transform 0.1s ease, background 0.2s;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.btn:active {\n  transform: scale(0.95);\n}\n\n\/* BOT\u00d3N PLAY TV (ROSA) *\/\n.btn.play-tv {\n  background: #ec4899;\n  width: 65px;\n  height: 65px;\n  font-size: 22px;\n}\n\n\/* BOT\u00d3N PLAY RADIO (VIOLETA) *\/\n.btn.play-radio {\n  background: #8b5cf6;\n  width: 55px;\n  height: 55px;\n  font-size: 18px;\n}\n\n.btn.play-radio:hover {\n  background: #7c3aed;\n}\n\n.playlist {\n  margin-top: 20px;\n  max-height: 280px;\n  overflow-y: auto;\n  padding-right: 4px;\n}\n\n.playlist::-webkit-scrollbar {\n  width: 6px;\n}\n.playlist::-webkit-scrollbar-thumb {\n  background: #4b5563;\n  border-radius: 3px;\n}\n\n.station-list {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: 10px;\n}\n\n.station-item {\n  background: #374151;\n  border-radius: 12px;\n  padding: 8px;\n  text-align: center;\n  cursor: pointer;\n  transition: background 0.2s, transform 0.1s;\n}\n\n.station-item:active {\n  transform: scale(0.98);\n}\n\n.station-item.active {\n  background: #ec4899;\n}\n\n.station-item img {\n  width: 55px;\n  height: 55px;\n  object-fit: cover;\n  border-radius: 10px;\n  margin-bottom: 4px;\n  display: block;\n  margin-left: auto;\n  margin-right: auto;\n}\n\n.station-item strong {\n  display: block;\n  font-size: 0.75rem;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.station-item small {\n  color: #d1d5db;\n  font-size: 0.65rem;\n  display: block;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n@media (max-width: 600px) {\n  .station-list {\n    grid-template-columns: repeat(2, 1fr);\n  }\n  .station-item img {\n    width: 65px;\n    height: 65px;\n  }\n  .station-item strong {\n    font-size: 0.85rem;\n  }\n  .station-item small {\n    font-size: 0.75rem;\n  }\n}\n<\/style>\n\n<div class=\"container\">\n  <header class=\"radio-header\">\n    <h3>Radio + TV Player<\/h3>\n    <div class=\"live\">\n      <div class=\"live-dot\"><\/div>\n      EN VIVO\n    <\/div>\n  <\/header>\n\n  <!-- REPRODUCTOR DE VIDEO PRINCIPAL -->\n  <div class=\"video-container\">\n    <video id=\"tv-player\" controls=\"\" playsinline=\"\" poster=\"https:\/\/i.postimg.cc\/85z90095\/radio-la-voz-peru-la-firme.png\"><\/video>\n  <\/div>\n\n  <div class=\"station-info\">\n    <h2 id=\"station-name\"><\/h2>\n    <p id=\"station-freq\"><\/p>\n  <\/div>\n\n  <div class=\"controls\">\n    <!-- ANTERIOR -->\n    <button class=\"btn\" onclick=\"prevStation()\" title=\"Anterior\">\n      <i class=\"fas fa-backward\"><\/i>\n    <\/button>\n    \n    <!-- REPRODUCIR TV -->\n    <button class=\"btn play-tv\" id=\"play-tv-btn\" title=\"Reproducir TV\">\n      <i id=\"play-tv-icon\" class=\"fas fa-play\"><\/i>\n    <\/button>\n    \n    <!-- REPRODUCIR RADIO (AUDIO) -->\n    <button class=\"btn play-radio\" id=\"play-radio-btn\" title=\"Reproducir Radio Audio\">\n      <i id=\"play-radio-icon\" class=\"fas fa-broadcast-tower\"><\/i>\n    <\/button>\n    \n    <!-- SIGUIENTE -->\n    <button class=\"btn\" onclick=\"nextStation()\" title=\"Siguiente\">\n      <i class=\"fas fa-forward\"><\/i>\n    <\/button>\n  <\/div>\n\n  <div class=\"playlist\">\n    <div id=\"station-list\" class=\"station-list\"><\/div>\n  <\/div>\n<\/div>\n\n<!-- ELEMENTO DE AUDIO DE RADIO -->\n<audio id=\"audio-player\" playsinline=\"\"><\/audio>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/hls.js@latest\"><\/script>\n\n<script>\nconst stations = [\n  {\n    name:\"LA VOZ PERU\",\n    freq:\"PELIS\",\n    url:\"https:\/\/stream.zeno.fm\/jqmfghcszwlvv\",\n    logo:\"https:\/\/i.postimg.cc\/85z90095\/radio-la-voz-peru-la-firme.png\",\n    tv:\"https:\/\/lbgo.bozztv.com\/ssh101\/ssh101\/clicktvradio\/chunks.m3u8?lb_backend_hint=6\"\n  },\n  {\n    name:\"LATINA TELEVISION\",\n    freq:\"latina\",\n    url:\"https:\/\/stream-51.zeno.fm\/hpttv0nr4a0uv?zs=iiu2UdOAQ9GQ8K_EL19oQw\",\n    logo:\"https:\/\/i.postimg.cc\/jdF4ydzC\/rock-de-los-80.png\",\n    tv:\"https:\/\/jireh-9-hls-video-us-isp.dps.live\/hls-video\/567ffde3fa319fadf3419efda25619456231dfea\/latinanoticias\/latinanoticias.smil\/latinanoticias\/livestream2\/chunks.m3u8?dpssid=b211934004269fbb0f554e34&sid=ba5t1l1xb273784619569fbb0f65fe4c&ndvc=0\"\n  },\n  {\n    name:\"CUMBIAY RADIO\",\n    freq:\"TV AMAZONIA\",\n    url:\"https:\/\/stream.zeno.fm\/5g8ii1ncoiwuv\",\n    logo:\"https:\/\/i.postimg.cc\/BbD1rDhV\/CUMBIAY-RADIO.png\",\n    tv:\"https:\/\/servilive.com:3199\/live\/amazoniatvlive.m3u8\"\n  },\n  {\n    name:\"VOCES PERUANAS\",\n    freq:\"COSTUMBRES TV\",\n    url:\"https:\/\/stream.zeno.fm\/zhiunct47shtv\",\n    logo:\"https:\/\/i.postimg.cc\/mr0cY4Gs\/VOCES-P-RUANAS.png\",\n    tv:\"https:\/\/7.innovatestream.pe:19360\/cvntumbes\/cvntumbes.m3u8\"\n  },\n  {\n    name:\"valaditas\",\n    freq:\"cosmos tv\",\n    url:\"https:\/\/stream.zeno.fm\/q00smfm1mp8uv?aw_0_req_lsid=3f2f3fdf841253ab67e9140edd610d02\",\n    logo:\"https:\/\/i.postimg.cc\/mr0cY4Gs\/VOCES-P-RUANAS.png\",\n    tv:\"https:\/\/canaletaplus.com:3922\/live\/cosmoslive.m3u8\"\n  },\n  {\n    name:\"salsas\",\n    freq:\"mega cine tv\",\n    url:\"https:\/\/stream-289.surfernetwork.com\/9k0p11g3teruv?zt=eyJhbGciOiJIUzI1NiJ9.eyJzdHJlYW0iOiI5azBwMTFnM3RlcnV2IiwiaG9zdCI6InN0cmVhbS0yODkuc3VyZmVybmV0d29yay5jb20iLCJ0bSI6ZmFsc2UsInJ0dGwiOjUsImp0aSI6InhYZmk0MGZJUjlHMnU4RWVadnR3OXciLCJpYXQiOjE3ODc5MzM3OTQsImV4cCI6MTc4NzkzMzg1NH0.2E8wdg6hb7bwowfCkHrtdjMRY8QvsnVlpHcjEggtXVs&acu-uid=1489783007055&an-uid=2398252534603510661&eps-uid=AQAHBSDuC0t-EgJJAkbXAQEBAQEBAQChSfMsYQEBAKFJ8yxh&dot-uid=0dc6220400aa1936b77dc34e&amb-uid=6922129911452346629&dbm-uid=CAESEEVs2Tc8FX4TU2CzBNtte4Y&cto-uid=38d38e14-9f24-4ba8-8ff4-0fd490eafe01-6a91a667-5045&bsw-uid=02f9f7fc-e730-40a2-bc81-0f964c18e008&dyn-uid=307470511977108780&ttd-uid=e4e64509-daf3-43f9-beae-b5cb024d5917&aw_0_req_lsid=3f2f3fdf841253ab67e9140edd610d02\",\n    logo:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/tpWX7UerL1cUIZuKxBgDD6bnNs3fEwcZ54gWg5s3N1U\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJREF3cTd2Z3dvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJREkxcDcwdmdzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY2MTYyNzc5NzAwMA.webp\",\n    tv:\"https:\/\/cnn.hostlagarto.com\/megacinetv\/tracks-v1a1\/mono.m3u8\"\n  },\n  {\n    name:\"full chichas\",\n    freq:\"sumac tv\",\n    url:\"https:\/\/stream-157.zeno.fm\/zwytkt2pgf9uv?zt\",\n    logo:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/9q-sbNX7cW4gl0VPhY42t0mclIv9dVUuMZoR-ZP6tY4\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJQ1ExcUhsNGdvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRHduZDJwcGdzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY2MDg1MjQ0MzAwMA.webp\",\n    tv:\"https:\/\/183.bozztv.com\/ssh101\/ssh101\/makins\/chunks.m3u8\"\n  },\n  {\n    name:\"voz rabi\",\n    freq:\"el mago TV\",\n    url:\"https:\/\/stream.zeno.fm\/jqmfghcszwlvv\",\n    logo:\"https:\/\/i.postimg.cc\/BQDw7qxQ\/play.jpg\",\n    tv:\"https:\/\/183.bozztv.com\/ssh101\/ssh101\/elmagotv2\/chunks.m3u8\"\n  },\n  {\n    name:\"CHIMBOTE\",\n    freq:\"entertainment FAMILIA\",\n    url:\"https:\/\/stream-283.surfernetwork.com\/w1r13grcvqzuv?zt=eyJhbGciOiJIUzI1NiJ9.eyJzdHJlYW0iOiJ3MXIxM2dyY3ZxenV2IiwiaG9zdCI6InN0cmVhbS0yODMuc3VyZmVybmV0d29yay5jb20iLCJ0bSI6ZmFsc2UsInJ0dGwiOjUsImp0aSI6InZ5OGNsSlN3UWRLcXdQWHBQekJkS3ciLCJpYXQiOjE3ODc5MzE0NzYsImV4cCI6MTc4NzkzMTUzNn0.SQAhNBWU7I31X8u5_OBLhBlc_eGz1iYNFIRdk0SbMVQ&acu-uid=1489783007055&an-uid=2398252534603510661&eps-uid=AQAHBSDuC0t-EgJJAkbXAQEBAQEBAQChSfMsYQEBAKFJ8yxh&dot-uid=0dc6220400aa1936b77dc34e&amb-uid=6922129911452346629&dbm-uid=CAESEEVs2Tc8FX4TU2CzBNtte4Y&cto-uid=38d38e14-9f24-4ba8-8ff4-0fd490eafe01-6a91a667-5045&bsw-uid=02f9f7fc-e730-40a2-bc81-0f964c18e008&dyn-uid=307470511977108780&ttd-uid=e4e64509-daf3-43f9-beae-b5cb024d5917&aw_0_req_lsid=3f2f3fdf841253ab67e9140edd610d02\",\n    logo:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/1fnTieOpPoKHgwMLJgWZPfpmO8vwDlgrLG913WX9sbk\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJQ1E4Tld1elFzTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJQ1FtUFBCNlFnTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY2MTU0ODYyMjAwMA.webp\",\n    tv:\"https:\/\/cdn.40mediagroup.com\/live\/c7eds\/ENT_Family\/SA_LIVE_hls_enc\/tracks-v1a1\/mono.ts.m3u8\"\n  },\n  {\n    name:\"DEL REY TV\",\n    freq:\"DEL REY\",\n    url:\"https:\/\/stream-158.zeno.fm\/ryrhxgus0wzuv?zt\",\n    logo:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/fPzZN4zvNtw-ieMCQDUBjYTDiGuos0Ontr-qDteWBkU\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJQ1FyTGo0cUFvTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJQ1F6UDdGeXdzTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTY4NzI4ODk1OTAwMA.webp\",\n    tv:\"https:\/\/video.hostingcaaguazu.com:19360\/delreytv\/delreytv.m3u8\"\n  },\n  {\n    name:\"la sure\u00f1a\",\n    freq:\"pantalla clasica\",\n    url:\"https:\/\/stream-155.zeno.fm\/bg4qy23suxhvv?zt\",\n    logo:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/wtweicIxQ4k8Mx0hBCFTsJgIUi2Z2NKidL1GH0ujjVc\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvYWd4emZucGxibTh0YzNSaGRITnlNZ3NTQ2tGMWRHaERiR2xsYm5RWWdJRElydl96elFrTUN4SU9VM1JoZEdsdmJsQnliMlpwYkdVWWdJRElqdTd3N1FvTW9nRUVlbVZ1YncvaW1hZ2UvP3U9MTcyODk4OTAwODAwMA.webp\",\n    tv:\"https:\/\/183.bozztv.com\/ssh101\/ssh101\/pantallaclasics\/chunks.m3u8\"\n  },\n  {\n    name:\"EXPRESS\",\n    freq:\"SAGA GOKU\",\n    url:\"https:\/\/sonic.sistemahost.es:7118\/live\",\n    logo:\"https:\/\/i.postimg.cc\/CM6WdP7Y\/la-voz-peru-express.png\",\n    tv:\"https:\/\/lbgo.bozztv.com\/ssh101\/ssh101\/dbsuperlat\/chunks.m3u8?lb_backend_hint=6\"\n  },\n  {\n    name:\"onda azul\",\n    freq:\"may time pelis\",\n    url:\"https:\/\/stream-162.zeno.fm\/eqotxvldgmpvv?zt\",\n    logo:\"https:\/\/zeno.fm\/_ipx\/s_144x144\/https:\/\/images.zeno.fm\/fSgf1EHjyP9Bp1CI2e8XrDhIyEA_4FRXei0iaWVC-gE\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvZDc0YmQ3ZGQtMWZkNi00OTA3LWJhZTUtNTk1NjRiNGVjMTI4L2ltYWdlLz91PTE2ODg2NjAyMTkwMDA.webp\",\n    tv:\"https:\/\/appletree-mytimespain-rakuten.amagi.tv\/360p\/index.m3u8\"\n  },\n  {\n    name:\"radio total\",\n    freq:\"ciudad magica\",\n    url:\"https:\/\/stream.zeno.fm\/buubpev72b9vv\",\n    logo:\"https:\/\/i.postimg.cc\/vZT7HPZJ\/RADIO-TOTAL500-X-500.png\",\n    tv:\"https:\/\/live20.bozztv.com\/akamaissh101\/ssh101\/verycoolfgr\/playlist.m3u8\"\n  },\n  {\n    name:\"cumbiay\",\n    freq:\"vision hd multimedia\",\n    url:\"https:\/\/stream.zeno.fm\/5g8ii1ncoiwuv\",\n    logo:\"https:\/\/i.postimg.cc\/BbD1rDhV\/CUMBIAY-RADIO.png\",\n    tv:\"https:\/\/live20.bozztv.com\/akamaissh101\/ssh101\/visionhdrd\/playlist.m3u8\"\n  },\n  {\n    name:\"siscoveri\",\n    freq:\"pachamama\",\n    url:\"https:\/\/stream-164.zeno.fm\/7heuhyl3swvvv?zt\",\n    logo:\"https:\/\/images.zeno.fm\/cq4x0x1UzbtlFYimKk37EGO-xdyoEXwSPu1blCA9a_Q\/rs:fill:288:288\/g:ce:0:0\/aHR0cHM6Ly9wcm94eS56ZW5vLmZtL2NvbnRlbnQvc3RhdGlvbnMvOTc2MzUyMmEtOGVhYi00M2YyLTg1ZTItYTgyZDZhYmUxZTdjL2ltYWdlLz91PTE2OTMwMTI1MTUwMDA.webp\",\n    tv:\"https:\/\/183.bozztv.com\/ssh101\/ssh101\/jnetv\/chunks.m3u8\"\n  }\n];\n\nlet currentStation = 0;\nlet isTvPlaying = false;\nlet isRadioPlaying = false;\nlet hls = null;\n\nconst videoPlayer = document.getElementById(\"tv-player\");\nconst audioPlayer = document.getElementById(\"audio-player\");\n\nconst stationName = document.getElementById(\"station-name\");\nconst stationFreq = document.getElementById(\"station-freq\");\nconst stationList = document.getElementById(\"station-list\");\n\nconst playTvIcon = document.getElementById(\"play-tv-icon\");\nconst playRadioIcon = document.getElementById(\"play-radio-icon\");\n\nfunction loadStream(url) {\n  if (Hls.isSupported()) {\n    if (hls) {\n      hls.destroy();\n    }\n    hls = new Hls({ lowLatencyMode: true });\n    hls.loadSource(url);\n    hls.attachMedia(videoPlayer);\n    hls.on(Hls.Events.MANIFEST_PARSED, function () {\n      if (isTvPlaying) videoPlayer.play().catch(e => console.log(e));\n    });\n  } else if (videoPlayer.canPlayType('application\/vnd.apple.mpegurl')) {\n    videoPlayer.src = url;\n    if (isTvPlaying) videoPlayer.play().catch(e => console.log(e));\n  }\n}\n\nfunction loadStation(index, shouldPlayTv = false, shouldPlayRadio = false) {\n  currentStation = index;\n  const station = stations[index];\n\n  stationName.textContent = station.name;\n  stationFreq.textContent = station.freq;\n  videoPlayer.poster = station.logo;\n\n  \/\/ Cargar fuentes\n  loadStream(station.tv);\n  audioPlayer.src = station.url;\n\n  if (shouldPlayTv) {\n    stopRadio();\n    playTv();\n  } else if (shouldPlayRadio) {\n    stopTv();\n    playRadio();\n  } else {\n    stopTv();\n    stopRadio();\n  }\n\n  highlightStation();\n}\n\nfunction highlightStation() {\n  [...stationList.children].forEach((el, i) => {\n    el.classList.toggle(\"active\", i === currentStation);\n  });\n}\n\n\/* FUNCIONALIDAD TV *\/\nfunction playTv() {\n  videoPlayer.play().then(() => {\n    playTvIcon.className = \"fas fa-pause\";\n    isTvPlaying = true;\n  }).catch(e => console.log(\"Error TV:\", e));\n}\n\nfunction stopTv() {\n  videoPlayer.pause();\n  playTvIcon.className = \"fas fa-play\";\n  isTvPlaying = false;\n}\n\nfunction toggleTv() {\n  if (videoPlayer.paused) {\n    stopRadio();\n    playTv();\n  } else {\n    stopTv();\n  }\n}\n\n\/* FUNCIONALIDAD RADIO *\/\nfunction playRadio() {\n  audioPlayer.play().then(() => {\n    playRadioIcon.className = \"fas fa-stop\";\n    isRadioPlaying = true;\n  }).catch(e => console.log(\"Error Radio:\", e));\n}\n\nfunction stopRadio() {\n  audioPlayer.pause();\n  audioPlayer.currentTime = 0;\n  playRadioIcon.className = \"fas fa-broadcast-tower\";\n  isRadioPlaying = false;\n}\n\nfunction toggleRadio() {\n  if (audioPlayer.paused) {\n    stopTv();\n    playRadio();\n  } else {\n    stopRadio();\n  }\n}\n\n\/* NAVEGACI\u00d3N *\/\nfunction nextStation() {\n  currentStation = (currentStation + 1) % stations.length;\n  loadStation(currentStation, isTvPlaying, isRadioPlaying);\n}\n\nfunction prevStation() {\n  currentStation = (currentStation - 1 + stations.length) % stations.length;\n  loadStation(currentStation, isTvPlaying, isRadioPlaying);\n}\n\ndocument.getElementById(\"play-tv-btn\").addEventListener(\"click\", toggleTv);\ndocument.getElementById(\"play-radio-btn\").addEventListener(\"click\", toggleRadio);\n\nstations.forEach((station, i) => {\n  const div = document.createElement(\"div\");\n  div.className = \"station-item\";\n  div.innerHTML = `\n    <img decoding=\"async\" src=\"${station.logo}\" alt=\"${station.name}\">\n    <strong>${station.name}<\/strong>\n    <small>${station.freq}<\/small>\n  `;\n  div.onclick = () => loadStation(i, true, false);\n  stationList.appendChild(div);\n});\n\nloadStation(0, false, false);\n<\/script>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Televisi\u00f3n en vivo Preparando se\u00f1al\u2026 En vivo \u25b6 Retro TV. OnLine Pulsa el bot\u00f3n para iniciar la transmisi\u00f3n en vivo. \u25b6 Ver transmisi\u00f3n Canal en vivo HLS \u00b7 Calidad autom\u00e1tica&#8230; dale Clik<\/p>\n","protected":false},"author":1,"featured_media":888,"parent":0,"menu_order":1,"comment_status":"open","ping_status":"closed","template":"","meta":{"_xspeed_no_cache":false,"_xspeed_expiry_hours":0,"footnotes":""},"class_list":["post-11","page","type-page","status-publish","has-post-thumbnail","hentry"],"magazineBlocksPostFeaturedMedia":{"thumbnail":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/cropped-la-voz-peru-150x150.png","medium":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/cropped-la-voz-peru-300x50.png","medium_large":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/cropped-la-voz-peru-768x128.png","large":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/cropped-la-voz-peru.png","1536x1536":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/cropped-la-voz-peru.png","2048x2048":"https:\/\/googlecumbia.metricavisual.com\/wp-content\/uploads\/2026\/05\/cropped-la-voz-peru.png"},"magazineBlocksPostAuthor":{"name":"Rabi","avatar":"https:\/\/secure.gravatar.com\/avatar\/f801d06501b4b5f3b6f1dd296f2be2e92a3c3f2195efe2eba5a72ee5bdd2e8be?s=96&d=mm&r=g"},"magazineBlocksPostCommentsNumber":"1","magazineBlocksPostExcerpt":"Televisi\u00f3n en vivo Preparando se\u00f1al\u2026 En vivo \u25b6 Retro TV. OnLine Pulsa el bot\u00f3n para iniciar la transmisi\u00f3n en vivo. \u25b6 Ver transmisi\u00f3n Canal en vivo HLS \u00b7 Calidad autom\u00e1tica... dale Clik","magazineBlocksPostCategories":[],"magazineBlocksPostViewCount":0,"magazineBlocksPostReadTime":1,"_links":{"self":[{"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/pages\/11","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=11"}],"version-history":[{"count":161,"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/pages\/11\/revisions"}],"predecessor-version":[{"id":36797,"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/pages\/11\/revisions\/36797"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=\/wp\/v2\/media\/888"}],"wp:attachment":[{"href":"https:\/\/googlecumbia.metricavisual.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=11"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}