{"id":549,"date":"2019-06-14T11:12:58","date_gmt":"2019-06-14T11:12:58","guid":{"rendered":"http:\/\/uptime.tommusdemos.wpengine.com\/?page_id=549"},"modified":"2026-08-11T02:05:23","modified_gmt":"2026-08-11T02:05:23","slug":"home-mobile-app","status":"publish","type":"page","link":"https:\/\/lldmnow.com\/himnario\/","title":{"rendered":"Himnario Lldm"},"content":{"rendered":"\n    \n    <!-- Librer\u00eda PDF.js CDN -->\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/3.11.174\/pdf.min.js\"><\/script>\n\n    <div id=\"himnario-app-moderno\">\n        <!-- 1. BARRA SUPERIOR DE CONTROL -->\n        <div class=\"himnario-bar\">\n            \n            <!-- Opci\u00f3n 1: Buscador por Texto o N\u00famero -->\n            <div class=\"search-container\">\n                <div class=\"search-box\">\n                    <span class=\"search-icon\">\ud83d\udd0d<\/span>\n                    <input type=\"text\" id=\"input-busqueda\" placeholder=\"Buscar N\u00b0 o t\u00edtulo...\" oninput=\"manejarBusqueda()\" autocomplete=\"off\">\n                    <button type=\"button\" class=\"btn-clear\" id=\"btn-clear\" onclick=\"limpiarBusqueda()\" style=\"display:none;\">\u2715<\/button>\n                <\/div>\n                <div id=\"search-results\" class=\"search-results-dropdown\"><\/div>\n            <\/div>\n\n            <!-- Opci\u00f3n 4: Filtro por Temas \/ Categor\u00edas sin \u00edcono -->\n            <div class=\"filter-tema-wrap\">\n                <select id=\"select-tema\" onchange=\"filtrarPorTema(this.value)\">\n                    <option value=\"\">Buscar temas<\/option>\n                    <option value=\"alabanza\">Alabanza y Adoraci\u00f3n<\/option>\n                    <option value=\"amor\">Amor y Caridad<\/option>\n                    <option value=\"bautismo\">Bautismo<\/option>\n                    <option value=\"consagracion\">Consagraci\u00f3n y Entrega<\/option>\n                    <option value=\"consuelo\">Consuelo y Anhelo<\/option>\n                    <option value=\"despedida\">Despedida y Bendici\u00f3n<\/option>\n                    <option value=\"esperanza\">Esperanza y Promesas<\/option>\n                    <option value=\"evangelizacion\">Evangelizaci\u00f3n y Llamado<\/option>\n                    <option value=\"fe\">Fe y Confianza<\/option>\n                    <option value=\"gratitud\">Gratitud y Ofrenda<\/option>\n                    <option value=\"juventud\">Juventud y Ni\u00f1ez<\/option>\n                    <option value=\"oracion\">Oraci\u00f3n y S\u00faplica<\/option>\n                    <option value=\"pasion\">Pasi\u00f3n y Redenci\u00f3n<\/option>\n                    <option value=\"perdon\">Perd\u00f3n y Arrepentimiento<\/option>\n                    <option value=\"santa_cena\">Santa Cena y Comuni\u00f3n<\/option>\n                    <option value=\"servicio\">Servicio y Trabajo<\/option>\n                    <option value=\"victoria\">Victoria y Fortaleza<\/option>\n                <\/select>\n            <\/div>\n\n            <!-- Opci\u00f3n 2: \u00cdcono de Men\u00fa con 'Lista cantos' -->\n            <button type=\"button\" class=\"btn-menu-lista\" onclick=\"toggleMenuLista()\">\n                <span class=\"menu-icon\">\u2630<\/span>\n                <span class=\"menu-text\">Lista cantos<\/span>\n            <\/button>\n\n            <!-- Opci\u00f3n 3: Avanzar y Retroceder Canto -->\n            <div class=\"nav-box\">\n                <button type=\"button\" class=\"btn-nav\" onclick=\"cambiarCanto(-1)\" title=\"Anterior\">\u2039<\/button>\n                <div class=\"canto-badge\">CANTO <span id=\"num-canto-display\">1<\/span><\/div>\n                <button type=\"button\" class=\"btn-nav\" onclick=\"cambiarCanto(1)\" title=\"Siguiente\">\u203a<\/button>\n            <\/div>\n\n        <\/div>\n\n        <!-- 2. PANEL FLOTANTE DE SCROLLING SOBRE EL PDF -->\n        <div id=\"modal-lista-cantos\" class=\"modal-cantos-overlay\">\n            <div class=\"modal-cantos-content\">\n                <div class=\"modal-cantos-header\">\n                    <h4 id=\"modal-titulo-header\">\ud83d\udcdc \u00cdndice Completo de Cantos (665)<\/h4>\n                    <button type=\"button\" class=\"btn-close-modal\" onclick=\"toggleMenuLista()\">\u2715<\/button>\n                <\/div>\n                <div class=\"modal-search-box\">\n                    <input type=\"text\" id=\"input-modal-search\" placeholder=\"Filtrar lista en tiempo real...\" oninput=\"filtrarListaModal()\">\n                <\/div>\n                <div id=\"contenedor-scroll-cantos\" class=\"scroll-cantos-list\">\n                    <!-- Cantos din\u00e1micos -->\n                <\/div>\n            <\/div>\n        <\/div>\n\n        <!-- 3. VISOR CANVAS HTML5 -->\n        <div class=\"canvas-container\">\n            <div id=\"loading-spinner\" class=\"spinner\">Cargando canto...<\/div>\n            <canvas id=\"pdf-canvas\"><\/canvas>\n        <\/div>\n    <\/div>\n\n    <style>\n    \/* RESET DE ESTILOS ESTRICTO PARA ANULAR INTERFERENCIAS DE FLATSOME *\/\n    #himnario-app-moderno,\n    #himnario-app-moderno * {\n        box-sizing: border-box !important;\n    }\n\n    #himnario-app-moderno input,\n    #himnario-app-moderno select,\n    #himnario-app-moderno button {\n        margin: 0 !important;\n        vertical-align: middle !important;\n        outline: none !important;\n        box-shadow: none !important;\n        transform: none !important;\n    }\n\n    #himnario-app-moderno {\n        max-width: 940px;\n        margin: 20px auto;\n        font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n        background: #ffffff;\n        border-radius: 16px;\n        box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08);\n        overflow: visible;\n        border: 1px solid #f0f0f0;\n        position: relative;\n    }\n\n    \/* BARRA SUPERIOR CON ALTURA UNIFORME Y ALINEACI\u00d3N CENTRADA *\/\n    .himnario-bar {\n        display: flex !important;\n        justify-content: space-between !important;\n        align-items: center !important;\n        padding: 12px 18px !important;\n        background: #ffffff;\n        border-bottom: 1px solid #f0f2f5;\n        border-top-left-radius: 16px;\n        border-top-right-radius: 16px;\n        gap: 12px;\n        min-height: 64px;\n    }\n\n    \/* Buscador Texto \/ N\u00famero *\/\n    .search-container {\n        position: relative;\n        flex: 1;\n        min-width: 180px;\n        max-width: 260px;\n    }\n\n    .search-box {\n        display: flex !important;\n        align-items: center !important;\n        background: #f4f6f8;\n        border-radius: 30px;\n        padding: 0 14px !important;\n        border: 1px solid #e2e8f0;\n        height: 38px !important;\n    }\n\n    .search-icon {\n        font-size: 14px;\n        color: #8c9ba5;\n        margin-right: 8px;\n        display: flex;\n        align-items: center;\n    }\n\n    .search-box input {\n        border: none !important;\n        background: transparent !important;\n        box-shadow: none !important;\n        height: 36px !important;\n        margin: 0 !important;\n        padding: 0 !important;\n        font-size: 13px !important;\n        color: #2c3e50;\n        width: 100%;\n        line-height: 36px !important;\n    }\n\n    .btn-clear {\n        background: none !important;\n        border: none !important;\n        color: #94a3b8 !important;\n        font-size: 13px !important;\n        cursor: pointer;\n        padding: 0 !important;\n    }\n\n    .search-results-dropdown {\n        position: absolute;\n        top: 46px;\n        left: 0;\n        right: 0;\n        background: #ffffff;\n        border: 1px solid #e2e8f0;\n        border-radius: 12px;\n        box-shadow: 0 10px 25px rgba(0,0,0,0.12);\n        max-height: 260px;\n        overflow-y: auto;\n        z-index: 999;\n        display: none;\n    }\n\n    \/* Select de Categor\u00edas *\/\n    .filter-tema-wrap {\n        display: flex !important;\n        align-items: center !important;\n    }\n\n    .filter-tema-wrap select {\n        height: 38px !important;\n        line-height: 36px !important;\n        border-radius: 20px !important;\n        border: 1px solid #e2e8f0 !important;\n        background: #f8fafc !important;\n        padding: 0 14px !important;\n        font-size: 13px !important;\n        font-weight: 600 !important;\n        color: #446084 !important;\n        cursor: pointer;\n        margin: 0 !important;\n        max-width: 190px;\n        display: inline-flex !important;\n        align-items: center !important;\n    }\n\n    \/* Bot\u00f3n Lista Cantos *\/\n    .btn-menu-lista {\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        gap: 8px !important;\n        height: 38px !important;\n        padding: 0 16px !important;\n        background: #f0f4f8 !important;\n        color: #446084 !important;\n        border: 1px solid #dbe2ea !important;\n        border-radius: 20px !important;\n        font-weight: 700 !important;\n        font-size: 13px !important;\n        cursor: pointer;\n        transition: all 0.2s ease;\n        white-space: nowrap !important;\n        line-height: 1 !important;\n        margin: 0 !important;\n    }\n\n    .btn-menu-lista:hover {\n        background: #446084 !important;\n        color: #ffffff !important;\n    }\n\n    .menu-icon {\n        font-size: 15px;\n        line-height: 1;\n    }\n\n    \/* Navegaci\u00f3n y Botones Circulares Perfectos *\/\n    .nav-box {\n        display: flex !important;\n        align-items: center !important;\n        gap: 8px !important;\n        height: 38px !important;\n        margin: 0 !important;\n    }\n\n    .canto-badge {\n        font-size: 12px !important;\n        font-weight: 700 !important;\n        color: #446084 !important;\n        background: #f0f4f8 !important;\n        padding: 0 16px !important;\n        border-radius: 20px !important;\n        min-width: 95px !important;\n        height: 38px !important;\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        border: 1px solid #e2e8f0 !important;\n        margin: 0 !important;\n        line-height: 1 !important;\n    }\n\n    .btn-nav {\n        width: 38px !important;\n        height: 38px !important;\n        min-width: 38px !important;\n        min-height: 38px !important;\n        max-width: 38px !important;\n        max-height: 38px !important;\n        border-radius: 50% !important;\n        aspect-ratio: 1 \/ 1 !important;\n        flex-shrink: 0 !important;\n        border: 1px solid #cbd5e1 !important;\n        background: #ffffff !important;\n        color: #2c3e50 !important;\n        font-size: 18px !important;\n        font-weight: bold !important;\n        cursor: pointer;\n        display: inline-flex !important;\n        align-items: center !important;\n        justify-content: center !important;\n        transition: all 0.2s ease;\n        padding: 0 !important;\n        margin: 0 !important;\n        line-height: 1 !important;\n    }\n\n    .btn-nav:hover {\n        background: #f8fafc !important;\n        border-color: #cbd5e1 !important;\n    }\n\n    \/* Modal Overlay con Scroll *\/\n    .modal-cantos-overlay {\n        position: absolute;\n        top: 64px;\n        left: 0;\n        right: 0;\n        bottom: 0;\n        background: rgba(15, 23, 42, 0.6);\n        backdrop-filter: blur(4px);\n        z-index: 1000;\n        display: none;\n        padding: 15px;\n    }\n\n    .modal-cantos-content {\n        background: #ffffff;\n        border-radius: 14px;\n        height: 100%;\n        max-height: 520px;\n        display: flex;\n        flex-direction: column;\n        overflow: hidden;\n        box-shadow: 0 15px 35px rgba(0,0,0,0.2);\n    }\n\n    .modal-cantos-header {\n        display: flex;\n        justify-content: space-between;\n        align-items: center;\n        padding: 12px 18px;\n        border-bottom: 1px solid #f1f5f9;\n        background: #f8fafc;\n    }\n\n    .modal-cantos-header h4 {\n        margin: 0;\n        font-size: 15px;\n        color: #1e293b;\n        font-weight: 700;\n    }\n\n    .btn-close-modal {\n        background: none !important;\n        border: none !important;\n        font-size: 18px !important;\n        color: #64748b !important;\n        cursor: pointer;\n        padding: 0 !important;\n    }\n\n    .modal-search-box {\n        padding: 10px 14px;\n        background: #ffffff;\n        border-bottom: 1px solid #f1f5f9;\n    }\n\n    .modal-search-box input {\n        width: 100% !important;\n        height: 38px !important;\n        border: 1px solid #e2e8f0 !important;\n        border-radius: 8px !important;\n        padding: 0 12px !important;\n        font-size: 13px !important;\n        margin: 0 !important;\n    }\n\n    .scroll-cantos-list {\n        flex: 1;\n        overflow-y: auto;\n        padding: 8px 0;\n    }\n\n    .item-canto-scroll {\n        display: flex;\n        align-items: center;\n        gap: 12px;\n        padding: 10px 18px;\n        border-bottom: 1px solid #f8fafc;\n        cursor: pointer;\n        transition: background 0.15s ease;\n    }\n\n    .item-canto-scroll:hover {\n        background: #f0f4f8;\n    }\n\n    .badge-modal-num {\n        background: #446084;\n        color: #fff;\n        font-size: 11px;\n        font-weight: 700;\n        padding: 3px 8px;\n        border-radius: 12px;\n        min-width: 45px;\n        text-align: center;\n    }\n\n    .item-canto-title {\n        font-size: 13px;\n        color: #334155;\n        font-weight: 500;\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n    }\n\n    .suggestion-item {\n        padding: 10px 14px;\n        border-bottom: 1px solid #f1f5f9;\n        cursor: pointer;\n        display: flex;\n        align-items: center;\n        gap: 10px;\n        font-size: 13px;\n        color: #334155;\n    }\n\n    .suggestion-item:hover {\n        background: #f8fafc;\n        color: #446084;\n    }\n\n    .badge-num {\n        background: #446084;\n        color: #ffffff;\n        font-weight: 700;\n        font-size: 11px;\n        padding: 3px 8px;\n        border-radius: 12px;\n    }\n\n    .title-text {\n        white-space: nowrap;\n        overflow: hidden;\n        text-overflow: ellipsis;\n    }\n\n    .suggestion-empty {\n        padding: 12px;\n        font-size: 13px;\n        color: #94a3b8;\n        text-align: center;\n    }\n\n    \/* LIENZO CANVAS HD *\/\n    .canvas-container {\n        position: relative;\n        background: #fafafa;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        min-height: 400px;\n        padding: 20px 10px;\n        border-bottom-left-radius: 16px;\n        border-bottom-right-radius: 16px;\n    }\n\n    #pdf-canvas {\n        max-width: 100%;\n        height: auto !important;\n        border-radius: 8px;\n        box-shadow: 0 4px 20px rgba(0,0,0,0.06);\n        background: #fff;\n    }\n\n    .spinner {\n        position: absolute;\n        font-size: 14px;\n        color: #64748b;\n        font-weight: 500;\n        background: rgba(255, 255, 255, 0.9);\n        padding: 12px 24px;\n        border-radius: 30px;\n        box-shadow: 0 4px 12px rgba(0,0,0,0.05);\n        display: none;\n        z-index: 10;\n    }\n\n    \/* M\u00d3VIL EN RET\u00cdCULA SIM\u00c9TRICA *\/\n    @media (max-width: 720px) {\n        .himnario-bar {\n            display: grid !important;\n            grid-template-columns: 1fr 1fr;\n            gap: 10px;\n            padding: 12px !important;\n            height: auto !important;\n        }\n\n        .search-container {\n            grid-column: 1 \/ -1;\n            max-width: 100%;\n            width: 100%;\n        }\n\n        .filter-tema-wrap {\n            grid-column: 1 \/ 2;\n            width: 100%;\n        }\n\n        .filter-tema-wrap select {\n            width: 100% !important;\n            max-width: 100% !important;\n            text-align: center;\n        }\n\n        .btn-menu-lista {\n            grid-column: 2 \/ 3;\n            width: 100%;\n        }\n\n        .nav-box {\n            grid-column: 1 \/ -1;\n            justify-content: center;\n            margin-top: 2px;\n        }\n\n        .modal-cantos-overlay {\n            top: 165px;\n        }\n    }\n    <\/style>\n\n    <script>\n    (function() {\n        const pdfUrl = \"https:\/\/lldmnow.com\/himnario\/wp-content\/uploads\/2021\/02\/Himnario.pdf\";\n        const offsetPortada = 1;\n        let pdfDoc = null;\n        let cantoActual = 1;\n        const totalCantos = 665;\n        let pageRendering = false;\n        let pageNumPending = null;\n        let cantosIndex = [];\n\n        const temasKeywords = {\n            'alabanza': ['alabanza', 'alabar', 'exaltar', 'gloria', 'alabad', 'adorar'],\n            'amor': ['amor', 'amare', 'benignidad', 'caridad', 'misericordia'],\n            'bautismo': ['bautismo', 'bautizar', 'aguas', 'bautizado', 'bautizarse'],\n            'consagracion': ['consagracion', 'consagrar', 'ofrenda', 'rendido', 'consagro', 'entrega'],\n            'consuelo': ['consuelo', 'consolador', 'tristeza', 'llanto', 'lagrimas', 'afliccion'],\n            'despedida': ['despedida', 'adios', 'paz', 'bendicion', 'despedirse'],\n            'esperanza': ['esperanza', 'promesa', 'porvenir', 'cielo', 'patria', 'eterna'],\n            'evangelizacion': ['evangelio', 'predicar', 'llamado', 'llamamiento', 'ven a cristo', 'salvador'],\n            'fe': ['fe', 'creer', 'confianza', 'confiar', 'firmeza'],\n            'gratitud': ['gratitud', 'gracias', 'agradecimiento', 'dar gracias', 'agradecido'],\n            'juventud': ['juventud', 'joven', 'jovenes', 'ni\u00f1os', 'infancia'],\n            'oracion': ['oracion', 'orar', 'suplica', 'clamor', 'ruego', 'plegaria'],\n            'pasion': ['pasion', 'cruz', 'calvario', 'sangre', 'redencion', 'sacrificio', 'muerte'],\n            'perdon': ['perdon', 'arrepentimiento', 'pecador', 'clemencia', 'misericordioso'],\n            'santa_cena': ['santa cena', 'pan', 'copa', 'comunion', 'cuerpo', 'sangre'],\n            'servicio': ['servicio', 'servir', 'obrero', 'mies', 'trabajar', 'labor'],\n            'victoria': ['victoria', 'triunfo', 'vencer', 'fortaleza', 'fuerza', 'vencedor']\n        };\n\n        pdfjsLib.GlobalWorkerOptions.workerSrc = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/pdf.js\/3.11.174\/pdf.worker.min.js';\n\n        const canvas = document.getElementById('pdf-canvas');\n        const ctx = canvas.getContext('2d');\n        const spinner = document.getElementById('loading-spinner');\n\n        pdfjsLib.getDocument(pdfUrl).promise.then(function(pdfDoc_) {\n            pdfDoc = pdfDoc_;\n            renderCanto(cantoActual);\n            indexarCantos();\n        });\n\n        async function indexarCantos() {\n            const maxPaginas = Math.min(pdfDoc.numPages, totalCantos + offsetPortada);\n            for (let i = 2; i <= maxPaginas; i++) {\n                try {\n                    let page = await pdfDoc.getPage(i);\n                    let textContent = await page.getTextContent();\n                    let fullText = textContent.items.map(item => item.str).join(' ').replace(\/\\s+\/g, ' ').trim();\n                    \n                    let numCanto = i - offsetPortada;\n                    cantosIndex.push({\n                        canto: numCanto,\n                        page: i,\n                        text: fullText\n                    });\n                } catch(e) {}\n            }\n            construirModalLista(cantosIndex);\n        }\n\n        function construirModalLista(items, titulo = \"\ud83d\udcdc \u00cdndice Completo de Cantos (665)\") {\n            const container = document.getElementById('contenedor-scroll-cantos');\n            document.getElementById('modal-titulo-header').innerText = titulo;\n            container.innerHTML = '';\n\n            if (items.length === 0) {\n                container.innerHTML = '<div class=\"suggestion-empty\">No se encontraron cantos para esta categor\u00eda<\/div>';\n                return;\n            }\n\n            items.forEach(item => {\n                let div = document.createElement('div');\n                div.className = 'item-canto-scroll';\n                let extracto = item.text.length > 55 ? item.text.substring(0, 55) + '...' : item.text;\n                div.innerHTML = `<span class=\"badge-modal-num\">N\u00b0 ${item.canto}<\/span> <span class=\"item-canto-title\">${extracto}<\/span>`;\n                div.onclick = function() { seleccionarCanto(item.canto); toggleMenuLista(); };\n                container.appendChild(div);\n            });\n        }\n\n        \/\/ RENDERIZADO ALTA DEFINICI\u00d3N (RETINA\/HD SCALING)\n        function renderCanto(num) {\n            pageRendering = true;\n            spinner.style.display = 'block';\n            const pageNum = num + offsetPortada;\n\n            pdfDoc.getPage(pageNum).then(function(page) {\n                const containerWidth = document.querySelector('.canvas-container').clientWidth - 20;\n                const viewportUnscaled = page.getViewport({ scale: 1 });\n                \n                \/\/ Multiplicador HD para pantallas Retina y Zoom m\u00f3vil (m\u00ednimo 2.0x)\n                const dpr = Math.max(window.devicePixelRatio || 1, 2.0);\n                const scale = (containerWidth \/ viewportUnscaled.width) * dpr;\n                \n                const viewport = page.getViewport({ scale: scale });\n\n                \/\/ Dimensiones del buffer interno (Alta resoluci\u00f3n)\n                canvas.width = Math.floor(viewport.width);\n                canvas.height = Math.floor(viewport.height);\n\n                \/\/ Dimensiones del CSS en pantalla\n                canvas.style.width = '100%';\n                canvas.style.height = 'auto';\n\n                const renderContext = {\n                    canvasContext: ctx,\n                    viewport: viewport\n                };\n\n                const renderTask = page.render(renderContext);\n\n                renderTask.promise.then(function() {\n                    pageRendering = false;\n                    spinner.style.display = 'none';\n                    if (pageNumPending !== null) {\n                        renderCanto(pageNumPending);\n                        pageNumPending = null;\n                    }\n                });\n            });\n\n            document.getElementById('num-canto-display').innerText = num;\n        }\n\n        function queueRenderPage(num) {\n            if (pageRendering) {\n                pageNumPending = num;\n            } else {\n                renderCanto(num);\n            }\n        }\n\n        window.cambiarCanto = function(delta) {\n            let nuevo = cantoActual + delta;\n            if (nuevo >= 1 && nuevo <= totalCantos) {\n                cantoActual = nuevo;\n                limpiarBusqueda();\n                queueRenderPage(cantoActual);\n            }\n        };\n\n        window.manejarBusqueda = function() {\n            const query = document.getElementById('input-busqueda').value.trim().toLowerCase();\n            const resultsBox = document.getElementById('search-results');\n            const btnClear = document.getElementById('btn-clear');\n\n            if (!query) {\n                resultsBox.style.display = 'none';\n                btnClear.style.display = 'none';\n                return;\n            }\n\n            btnClear.style.display = 'block';\n            resultsBox.innerHTML = '';\n\n            if (!isNaN(query) && parseInt(query) > 0) {\n                const num = parseInt(query);\n                if (num <= totalCantos) {\n                    const item = document.createElement('div');\n                    item.className = 'suggestion-item';\n                    item.innerHTML = `<span class=\"badge-num\">N\u00b0 ${num}<\/span> <span class=\"title-text\">Ir directo al canto ${num}<\/span>`;\n                    item.onclick = function() { seleccionarCanto(num); };\n                    resultsBox.appendChild(item);\n                    resultsBox.style.display = 'block';\n                    return;\n                }\n            }\n\n            if (cantosIndex.length > 0) {\n                const coincidencias = cantosIndex.filter(c => c.text.toLowerCase().includes(query)).slice(0, 8);\n                if (coincidencias.length > 0) {\n                    coincidencias.forEach(m => {\n                        const item = document.createElement('div');\n                        item.className = 'suggestion-item';\n                        let extracto = m.text.length > 50 ? m.text.substring(0, 50) + '...' : m.text;\n                        item.innerHTML = `<span class=\"badge-num\">N\u00b0 ${m.canto}<\/span> <span class=\"title-text\">${extracto}<\/span>`;\n                        item.onclick = function() { seleccionarCanto(m.canto); };\n                        resultsBox.appendChild(item);\n                    });\n                    resultsBox.style.display = 'block';\n                } else {\n                    resultsBox.innerHTML = '<div class=\"suggestion-empty\">No se encontraron cantos<\/div>';\n                    resultsBox.style.display = 'block';\n                }\n            }\n        };\n\n        window.toggleMenuLista = function() {\n            const modal = document.getElementById('modal-lista-cantos');\n            if (modal.style.display === 'block') {\n                modal.style.display = 'none';\n            } else {\n                modal.style.display = 'block';\n            }\n        };\n\n        window.filtrarListaModal = function() {\n            const query = document.getElementById('input-modal-search').value.toLowerCase();\n            const filtrados = cantosIndex.filter(c => c.text.toLowerCase().includes(query) || c.canto.toString().includes(query));\n            construirModalLista(filtrados);\n        };\n\n        window.filtrarPorTema = function(key) {\n            if (!key) {\n                construirModalLista(cantosIndex);\n                return;\n            }\n\n            const palabrasClave = temasKeywords[key] || [key];\n            const filtrados = cantosIndex.filter(canto => {\n                const textoMinuscula = canto.text.toLowerCase();\n                return palabrasClave.some(kw => textoMinuscula.includes(kw));\n            });\n\n            const selectEl = document.getElementById('select-tema');\n            const nombreTema = selectEl.options[selectEl.selectedIndex].text;\n\n            construirModalLista(filtrados, `Cantos de: ${nombreTema}`);\n            document.getElementById('modal-lista-cantos').style.display = 'block';\n        };\n\n        function seleccionarCanto(num) {\n            if (num > totalCantos) num = totalCantos;\n            cantoActual = num;\n            queueRenderPage(cantoActual);\n            document.getElementById('search-results').style.display = 'none';\n            document.getElementById('input-busqueda').value = 'Canto ' + num;\n        }\n\n        window.limpiarBusqueda = function() {\n            document.getElementById('input-busqueda').value = '';\n            document.getElementById('search-results').style.display = 'none';\n            document.getElementById('btn-clear').style.display = 'none';\n        };\n\n        let touchstartX = 0;\n        let touchendX = 0;\n        canvas.addEventListener('touchstart', e => touchstartX = e.changedTouches[0].screenX );\n        canvas.addEventListener('touchend', e => {\n            touchendX = e.changedTouches[0].screenX;\n            if (touchendX < touchstartX - 50) cambiarCanto(1);\n            if (touchendX > touchstartX + 50) cambiarCanto(-1);\n        });\n    })();\n    <\/script>\n\n    \n\n\t<div id=\"gap-750982505\" class=\"gap-element clearfix\" style=\"display:block; height:auto;\">\n\t\t\n<style>\n#gap-750982505 {\n  padding-top: 60px;\n}\n<\/style>\n\t<\/div>\n\t\n\n\t<section class=\"section\" id=\"section_1115569110\">\n\t\t<div class=\"section-bg fill\" >\n\t\t\t\t\t\t\t\t\t\n\t\t\t\n\n\t\t<\/div>\n\n\t\t\n\n\t\t<div class=\"section-content relative\">\n\t\t\t\n<div class=\"row\"  id=\"row-368430940\">\n\n\t<div id=\"col-895362087\" class=\"col small-12 large-12\"  >\n\t\t\t\t<div class=\"col-inner\"  >\n\t\t\t\n\t\t\t\n<h1 style=\"text-align: center;\">Himnario La Luz del Mundo.<\/h1>\n<p style=\"text-align: center;\">Ahora puedes ver el himnario Lldm desde tu celular sin descargar ninguna app.<\/p>\n<hr \/>\n<h2 style=\"text-align: center;\">Historia del Himnario La Luz del Mundo<\/h2>\n<p>En los primeros a\u00f1os de la restauraci\u00f3n, la Iglesia se reun\u00eda a adorar a nuestro Dios, cantando alabanzas y recordando las ense\u00f1anzas de Jesucristo.<\/p>\n<p>En la d\u00e9cada de los a\u00f1os 30, la palabra de Dios se extend\u00eda no s\u00f3lo en Guadalajara, sino tambi\u00e9n a varias ciudades en M\u00e9xico; en todos los casos, los hermanos se congregaban para entonar alabanzas y despu\u00e9s reflexionar sobre la escritura.<\/p>\n<p>Por aquellos a\u00f1os, no exist\u00eda un himnario propio, sino que los cantos se tomaban de uno denominado \u201cCantos de Victoria ,y en su mayor\u00eda eran himnos de corte evang\u00e9lico, donde se mencionaba la grandeza de Dios, su poder y misericordia.<\/p>\n<p>En 1934, ya establecida la Iglesia en el templo de la calle Jos\u00e9 Mar\u00eda G\u00f3mez, conocida tambi\u00e9n como la calle 46, en la finca marcada con el n\u00famero 224, Dios tuvo a bien manifestar los primeros himnos a varias de las hermanas. Entre los primeros himnos manifestados por Dios a los fieles se recuerda: \u201cA ti s\u00f3lo nuestro Rey\u201d.<\/p>\n<p>Cuando las hermanas sent\u00edan la bendici\u00f3n de Dios a trav\u00e9s del canto, comenzaban a entonar estas alabanzas, r\u00e1pidamente otras hermanas anotaban el himno en una libreta; \u00e9ste Posteriormente se escrib\u00eda a mano en unas hojitas de papel que Por lo regular se anexaban al himnario de \u00ab\u201dCantos de Victoria\u201d.<\/p>\n<p>Poco a poco Dios bendijo a su Iglesia con muchos himnos; tanto en hermanos como en hermanas se manifest\u00f3 aquella bendici\u00f3n del Se\u00f1or.<\/p>\n<p>Todos los hermanos eran cuidadosos de tener consigo los himnos que Dios iba manifestando a la congregaci\u00f3n y asi, cuando presid\u00edan una consagraci\u00f3n invitaban a la Iglesia a entonar una alabanza de un peque\u00f1o himnario cosido con hilo y aguja por los hermanos, los cuales con esmero aprend\u00edan las melod\u00edas de cada uno de los cantos.<\/p>\n<p>Posteriormente los himnos se mecanografiaban y se form\u00f3 un pequeno cuadernillo, confeccionado de manera modesta y r\u00fastica por los hermanos.<\/p>\n<p>Para la d\u00e9cada de los a\u00f1os 40, se contaba con numerosos himnos e incluso salmos que tambi\u00e9n se entonaban, siendo una de las primeras ediciones un himnario editado en la ciudad de M\u00e9xico, D.F. denominado: Himnario Cristiano Espiritual, La Luz del Mundo, del que se recuerdan los himnos 47, 67, 148, 150, (primera versi\u00f3n) entre otros m\u00e1s.<\/p>\n<p>En 1971, se adquiri\u00f3 una m\u00e1quina Offset marca Multilith. modelo 1250, en la cual se imprimi\u00f3 el himnario de manera m\u00e1s profesional y a gran tiraje.<\/p>\n<p>Al mismo tiempo, surgi\u00f3 la necesidad de clasificar los himnos tem\u00e1ticamente, labor que realiz\u00f3 el hermano Alfonso Herrera Garc\u00eda, quien dividi\u00f3 el himnario por temas y alfab\u00e9ticamente, como tambi\u00e9n asign\u00f3 un texto de referencia b\u00edblica para cada himno. Desde la d\u00e9cada de los 90, el himnario se ha venido confeccionando, agregando cantos adicionales y salmos, hasta Llegar a la edici\u00f3n que hoy tiene usted en sus manos.<\/p>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\n<\/div>\n\t\t<\/div>\n\n\t\t\n<style>\n#section_1115569110 {\n  padding-top: 30px;\n  padding-bottom: 30px;\n}\n<\/style>\n\t<\/section>\n\t\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-blank.php","meta":{"footnotes":""},"class_list":["post-549","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Himnario Lldm (La Luz del Mundo)<\/title>\n<meta name=\"description\" content=\"Himnario Lldm (La Luz del Mundo): Ahora puedes ver el himnario Lldm desde tu celular sin necesidad de descargar ninguna app a tu Smartphone.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/lldmnow.com\/himnario\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Himnario Lldm (La Luz del Mundo)\" \/>\n<meta property=\"og:description\" content=\"Himnario Lldm (La Luz del Mundo): Ahora puedes ver el himnario Lldm desde tu celular sin necesidad de descargar ninguna app a tu Smartphone.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/lldmnow.com\/himnario\/\" \/>\n<meta property=\"og:site_name\" content=\"Himnario Lldm\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-11T02:05:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lldmnow.com\/himnario\/wp-content\/uploads\/2021\/02\/himnario-lldm.fw_.png\" \/>\n\t<meta property=\"og:image:width\" content=\"288\" \/>\n\t<meta property=\"og:image:height\" content=\"288\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Himnario Lldm (La Luz del Mundo)\" \/>\n<meta name=\"twitter:description\" content=\"Himnario Lldm (La Luz del Mundo): Ahora puedes ver el himnario Lldm desde tu celular sin necesidad de descargar ninguna app a tu Smartphone.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/lldmnow.com\/himnario\/wp-content\/uploads\/2021\/02\/himnario-lldm.fw_.png\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/lldmnow.com\\\/himnario\\\/\",\"url\":\"https:\\\/\\\/lldmnow.com\\\/himnario\\\/\",\"name\":\"Himnario Lldm (La Luz del Mundo)\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/lldmnow.com\\\/himnario\\\/#website\"},\"datePublished\":\"2019-06-14T11:12:58+00:00\",\"dateModified\":\"2026-08-11T02:05:23+00:00\",\"description\":\"Himnario Lldm (La Luz del Mundo): Ahora puedes ver el himnario Lldm desde tu celular sin necesidad de descargar ninguna app a tu Smartphone.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/lldmnow.com\\\/himnario\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/lldmnow.com\\\/himnario\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/lldmnow.com\\\/himnario\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\\\/\\\/lldmnow.com\\\/himnario\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Himnario Lldm\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/lldmnow.com\\\/himnario\\\/#website\",\"url\":\"https:\\\/\\\/lldmnow.com\\\/himnario\\\/\",\"name\":\"Himnario Lldm\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/lldmnow.com\\\/himnario\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Himnario Lldm (La Luz del Mundo)","description":"Himnario Lldm (La Luz del Mundo): Ahora puedes ver el himnario Lldm desde tu celular sin necesidad de descargar ninguna app a tu Smartphone.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/lldmnow.com\/himnario\/","og_locale":"es_MX","og_type":"article","og_title":"Himnario Lldm (La Luz del Mundo)","og_description":"Himnario Lldm (La Luz del Mundo): Ahora puedes ver el himnario Lldm desde tu celular sin necesidad de descargar ninguna app a tu Smartphone.","og_url":"https:\/\/lldmnow.com\/himnario\/","og_site_name":"Himnario Lldm","article_modified_time":"2026-08-11T02:05:23+00:00","og_image":[{"width":288,"height":288,"url":"https:\/\/lldmnow.com\/himnario\/wp-content\/uploads\/2021\/02\/himnario-lldm.fw_.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_title":"Himnario Lldm (La Luz del Mundo)","twitter_description":"Himnario Lldm (La Luz del Mundo): Ahora puedes ver el himnario Lldm desde tu celular sin necesidad de descargar ninguna app a tu Smartphone.","twitter_image":"https:\/\/lldmnow.com\/himnario\/wp-content\/uploads\/2021\/02\/himnario-lldm.fw_.png","twitter_misc":{"Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/lldmnow.com\/himnario\/","url":"https:\/\/lldmnow.com\/himnario\/","name":"Himnario Lldm (La Luz del Mundo)","isPartOf":{"@id":"https:\/\/lldmnow.com\/himnario\/#website"},"datePublished":"2019-06-14T11:12:58+00:00","dateModified":"2026-08-11T02:05:23+00:00","description":"Himnario Lldm (La Luz del Mundo): Ahora puedes ver el himnario Lldm desde tu celular sin necesidad de descargar ninguna app a tu Smartphone.","breadcrumb":{"@id":"https:\/\/lldmnow.com\/himnario\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/lldmnow.com\/himnario\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/lldmnow.com\/himnario\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Inicio","item":"https:\/\/lldmnow.com\/himnario\/"},{"@type":"ListItem","position":2,"name":"Himnario Lldm"}]},{"@type":"WebSite","@id":"https:\/\/lldmnow.com\/himnario\/#website","url":"https:\/\/lldmnow.com\/himnario\/","name":"Himnario Lldm","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/lldmnow.com\/himnario\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"}]}},"_links":{"self":[{"href":"https:\/\/lldmnow.com\/himnario\/wp-json\/wp\/v2\/pages\/549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lldmnow.com\/himnario\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/lldmnow.com\/himnario\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/lldmnow.com\/himnario\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lldmnow.com\/himnario\/wp-json\/wp\/v2\/comments?post=549"}],"version-history":[{"count":121,"href":"https:\/\/lldmnow.com\/himnario\/wp-json\/wp\/v2\/pages\/549\/revisions"}],"predecessor-version":[{"id":1632,"href":"https:\/\/lldmnow.com\/himnario\/wp-json\/wp\/v2\/pages\/549\/revisions\/1632"}],"wp:attachment":[{"href":"https:\/\/lldmnow.com\/himnario\/wp-json\/wp\/v2\/media?parent=549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}