{"id":97917,"date":"2024-08-21T08:15:16","date_gmt":"2024-08-21T11:15:16","guid":{"rendered":"https:\/\/www.fitnessbrasil.com.br\/?page_id=97917"},"modified":"2025-03-20T17:49:47","modified_gmt":"2025-03-20T20:49:47","slug":"programacao","status":"publish","type":"page","link":"https:\/\/www.fitnessbrasil.com.br\/es\/fitnessbrasilexpo2025-home\/programacao\/","title":{"rendered":"Programaci\u00f3n"},"content":{"rendered":"\n\n\n<style>\n\n.section.video iframe{\n    min-height: 120vh !important\n}\n\n@media (max-width: 480px) {\n\n    .section.video iframe{\n    min-height: 20vh !important;\n        min-width: 320vw\n}\n    \n}\n\n\/*a.btn-compra,\n.button{\nbackground-color: #481c4f !important;\nborder-color: #481c4f !important;\n}*\/\n.linhas{\nmax-width: 300px;\nmargin: auto;\n}\n.menu col {\n    padding: 0px;\n    margin: 0px;\n}\n\n.menu ul {\n    display: flex;\n    flex-direction: row;\n    list-style: none;\n    margin: 0px;\n    padding: 0px;\n    align-content: center;\n    justify-content: center;\n    flex-wrap: wrap; \/* Isso permite que os itens quebrem linha se necess\u00e1rio *\/\n}\n\n.menu li {\n    padding: 5px;\n    margin: 0px;\n    flex: 1 1 auto; \/* Isso permite que os itens ocupem a mesma quantidade de espa\u00e7o *\/\n    text-align: center; \/* Centraliza o texto dentro de cada item *\/\n}\n\n.menu a {\n    color: #fff;\n    text-transform: uppercase;\n    display: block;\n    width: 100%;\n    padding: 5px 0;\nfont-size: 14px;\n}\n\n\/* Estilos para dispositivos m\u00f3veis *\/\n@media (max-width: 768px) {\n    .menu ul {\n        justify-content: space-around; \/* Distribui os itens de forma igual na linha *\/\n        padding: 10px\n    }\n\n    .menu li {\n        flex-basis: 40%; \/* Cada item ocupa 50% da largura da tela *\/\n        text-align: left;\n        padding: 10px !important;\n        border: 1px solid #3993d51c;\n        margin: 3px !important;\n        border-radius: 50px;\n    }\n\n    .menu a {\n        padding: 0px 0;\n        font-size: 90%;\n    }\n}\n\n\n._card{\nwidth: 250px !important;\ndisplay: inline-block;\npadding: 10px !important\n}\n\nh2{\n    font-size: 35px;\n    font-weight: 900;\n}\n\nh3{\n    font-size: 30px;\n    font-weight: 900;\n}\n\n.topo-logo {\n    padding: 0px !important;\n}\n\n.topo-logo .col {\n    padding: 0px !important;\n}\n\n\/* Estilos para dispositivos m\u00f3veis *\/\n\n@media (max-width: 480px) {\n\n\n    .topo-logo {\n        padding: 0 0 20px 0 !important;\n    }\n\n.topo-logo .logo {\nborder-bottom: 1px solid #ffffff2e;\n    padding-bottom: 0px;\n    margin-bottom: 30px;\n}\n\n}\n\n@media (max-width: 768px) {\n\n    .realizacao .col-inner{\n    padding: 10px !important;\n}\n\n}\n\n.sobre .accordion a:hover{\n    color: rgb(72, 28, 79) !important\n}\n\n.sobre .accordion-title {\n    border-top: 1px solid #dddddd36;\n}\n\n.sobre .accordion-title.active {\n    background-color: rgb(255 255 255 \/ 6%);\n    border-color: rgb(72, 28, 79) !important;\n    color: rgb(72, 28, 79) !important;\n    font-weight: 700;\n    border-radius: 0 0 10px 10px;\n}\n\n.inscricoes a.button.primary {\n    background: rgb(72, 28, 79) !important\n}\n\n.realizacao {}\n\n.realizacao .col {\n    padding: 0px;\n    text-align: center;\n}\n\n.realizacao img{\n    max-height: 100px !important;\n    width: auto\n}\n\n.accordion {\n    color: #fff;\n}\n\n.accordion span {\n    font-size: 20px;\n}\n\n.realizacao .col{\n    padding: 10px !important;\n    text-align: center;\n}\n\n.realizacao .col-inner{\n    padding: 20px !important;\n    text-align: center;\n}\n\n\n\/* Estilos para dispositivos m\u00f3veis *\/\n@media (max-width: 768px) {\n\n    .realizacao .col-inner{\n    padding: 10px !important;\n}\n\n}\n\n.realizacao .col .img{\n    padding: 10px !important;\n    max-width: 250px;\n    margin: auto;\n}\n\n\n.realizacao .col .img-inner.dark {\n    _height: 50px\n}\n\niframe#ytplayer-440 {\n    height: 105vh;\n}\n\n<\/style>\n\n\n\t<section class=\"section topo-logo\" id=\"section_228452574\">\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\n<div class=\"row align-middle align-center\"  id=\"row-741094834\">\n\n\n\t<div id=\"col-1529692813\" class=\"col medium-3 small-12 large-3\"  >\n\t\t\t\t<div class=\"col-inner text-center\"  >\n\t\t\t\n\t\t\t\n\n\t<div class=\"img has-hover logo x md-x lg-x y md-y lg-y\" id=\"image_1617722008\">\n\t\t\t\t\t\t\t\t<div class=\"img-inner dark\" >\n\t\t\t<img decoding=\"async\" data-src=\"https:\/\/www.fitnessbrasil.com.br\/wp-content\/uploads\/2024\/08\/fbexpo25_logo.svg\" class=\"attachment-original size-original lazyload\" alt=\"\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" \/>\t\t\t\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\n<style>\n#image_1617722008 {\n  width: 100%;\n}\n<\/style>\n\t<\/div>\n\t\n\n\n\t\t<\/div>\n\t\t\t\t\n<style>\n#col-1529692813 > .col-inner {\n  max-width: 315px;\n}\n<\/style>\n\t<\/div>\n\n\t\n\n\t<div id=\"col-903477670\" class=\"col hide-for-medium medium-3 small-12 large-3\"  >\n\t\t\t\t<div class=\"col-inner text-center\"  >\n\t\t\t\n\t\t\t\n\n\n\t\t<\/div>\n\t\t\t\t\n<style>\n#col-903477670 > .col-inner {\n  max-width: 315px;\n}\n<\/style>\n\t<\/div>\n\n\t\n\n\t<div id=\"col-1737010508\" class=\"col medium-2 small-12 large-2\"  >\n\t\t\t\t<div class=\"col-inner text-center\"  >\n\t\t\t\n\t\t\t\n\n\t<div id=\"text-1872584750\" class=\"text\">\n\t\t\n\n<h5>REALIZA\u00c7\u00c3O:<\/h5>\n\t\t\n<style>\n#text-1872584750 {\n  font-size: 1.1rem;\n  text-align: center;\n  color: rgb(243, 243, 235);\n}\n#text-1872584750 > * {\n  color: rgb(243, 243, 235);\n}\n<\/style>\n\t<\/div>\n\t\n\n\t\t<\/div>\n\t\t\t\t\n<style>\n#col-1737010508 > .col-inner {\n  margin: -20px 0px 10px 0px;\n}\n<\/style>\n\t<\/div>\n\n\t\n\n\t<div id=\"col-1372146651\" class=\"col medium-2 small-6 large-2\"  >\n\t\t\t\t<div class=\"col-inner text-center\"  >\n\t\t\t\n\t\t\t\n\n\t<div class=\"img has-hover x md-x lg-x y md-y lg-y\" id=\"image_1040228707\">\n\t\t\t\t\t\t\t\t<div class=\"img-inner dark\" >\n\t\t\t<img decoding=\"async\" width=\"471\" height=\"245\" data-src=\"https:\/\/www.fitnessbrasil.com.br\/wp-content\/uploads\/2024\/08\/fitnessbrasil_logo_branco.png\" class=\"attachment-original size-original lazyload\" alt=\"Fitness Brasil\" data-srcset=\"https:\/\/www.fitnessbrasil.com.br\/wp-content\/uploads\/2024\/08\/fitnessbrasil_logo_branco.png 471w, https:\/\/www.fitnessbrasil.com.br\/wp-content\/uploads\/2024\/08\/fitnessbrasil_logo_branco-18x9.png 18w\" data-sizes=\"(max-width: 471px) 100vw, 471px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 471px; --smush-placeholder-aspect-ratio: 471\/245;\" \/>\t\t\t\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\n<style>\n#image_1040228707 {\n  width: 60%;\n}\n@media (min-width:550px) {\n  #image_1040228707 {\n    width: 41%;\n  }\n}\n<\/style>\n\t<\/div>\n\t\n\n\n\t\t<\/div>\n\t\t\t\t\n<style>\n#col-1372146651 > .col-inner {\n  padding: 20px 20px 20px 20px;\n  margin: 0px 0px 10px 0px;\n  max-width: 315px;\n}\n<\/style>\n\t<\/div>\n\n\t\n\n\t<div id=\"col-873680317\" class=\"col medium-2 small-6 large-2\"  >\n\t\t\t\t<div class=\"col-inner text-center\"  >\n\t\t\t\n\t\t\t\n\n\t<div class=\"img has-hover x md-x lg-x y md-y lg-y\" id=\"image_672597623\">\n\t\t\t\t\t\t\t\t<div class=\"img-inner dark\" >\n\t\t\t<img decoding=\"async\" width=\"651\" height=\"218\" data-src=\"https:\/\/www.fitnessbrasil.com.br\/wp-content\/uploads\/2024\/08\/hfa_logo_branco.png\" class=\"attachment-original size-original lazyload\" alt=\"HFA\" data-srcset=\"https:\/\/www.fitnessbrasil.com.br\/wp-content\/uploads\/2024\/08\/hfa_logo_branco.png 651w, https:\/\/www.fitnessbrasil.com.br\/wp-content\/uploads\/2024\/08\/hfa_logo_branco-18x6.png 18w, https:\/\/www.fitnessbrasil.com.br\/wp-content\/uploads\/2024\/08\/hfa_logo_branco-510x171.png 510w\" data-sizes=\"(max-width: 651px) 100vw, 651px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 651px; --smush-placeholder-aspect-ratio: 651\/218;\" \/>\t\t\t\t\t\t\n\t\t\t\t\t<\/div>\n\t\t\t\t\t\t\t\t\n<style>\n#image_672597623 {\n  width: 80%;\n}\n@media (min-width:550px) {\n  #image_672597623 {\n    width: 83%;\n  }\n}\n<\/style>\n\t<\/div>\n\t\n\n\n\t\t<\/div>\n\t\t\t\t\n<style>\n#col-873680317 > .col-inner {\n  padding: 20px 20px 20px 20px;\n  margin: 0px 0px 10px 0px;\n  max-width: 315px;\n}\n<\/style>\n\t<\/div>\n\n\t\n\n\n<style>\n#row-741094834 > .col > .col-inner {\n  padding: 0px 0px 0px 0px;\n}\n<\/style>\n<\/div>\n\n\t\t<\/div>\n\n\t\t\n<style>\n#section_228452574 {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  background-color: rgb(0, 35, 63);\n}\n<\/style>\n\t<\/section>\n\t\n\n\t<section class=\"section menu\" id=\"section_1073741041\">\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\n<div class=\"row row-collapse align-middle align-center\"  id=\"row-1374720943\">\n\n\n\t<div id=\"col-1378262922\" class=\"col small-12 large-12\"  >\n\t\t\t\t<div class=\"col-inner text-center\"  >\n\t\t\t\n\t\t\t\n\n\t<div id=\"text-3655331764\" class=\"text menu\">\n\t\t\n\n<ul>\n<li><a href=\"https:\/\/www.fitnessbrasil.com.br\/fitnessbrasilexpo2025-home\/\">Home<\/a><\/li>\n<li><a href=\"https:\/\/www.fitnessbrasil.com.br\/categoria-produto\/fitness-brasil-expo-2025\/\" target=\"_blank\" rel=\"noopener\">Cursos e Ingressos<\/a><\/li>\n<li><a href=\"https:\/\/www.fitnessbrasil.com.br\/fitnessbrasilexpo2025-home\/palestrantes\/\">Palestrantes<\/a><\/li>\n<li><a href=\"https:\/\/www.fitnessbrasil.com.br\/fitnessbrasilexpo2025-home\/programacao\/\">Programa\u00e7\u00e3o de palestras e cursos<\/a><\/li>\n<li><a href=\"#faq\">FAQ<\/a><\/li>\n<li><a href=\"https:\/\/eventos.tmp.br\/fitness2025\/visitantes\/inicio_grupo.php\" target=\"_blank\" rel=\"noopener\">Minha Conta<\/a><\/li>\n<li><a href=\"https:\/\/www.fitnessbrasil.com.br\/fitnessbrasilexpo2025-home\/guia-do-visitante\/\">Guia do Visitante<\/a><\/li>\n<li><a href=\"https:\/\/marketing.fitnessbrasil.com.br\/fitness-brasil-expo-2025-quero-ser-um-expositor\" target=\"_blank\" rel=\"noopener\">Seja um Expositor<\/a><\/li>\n<\/ul>\n\t\t\n<style>\n#text-3655331764 {\n  text-align: left;\n}\n<\/style>\n\t<\/div>\n\t\n\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\n\n\n<style>\n#row-1374720943 > .col > .col-inner {\n  padding: 0px 0px 0px 0px;\n}\n<\/style>\n<\/div>\n\n\t\t<\/div>\n\n\t\t\n<style>\n#section_1073741041 {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  margin-bottom: 0px;\n  background-color: rgb(0, 54, 98);\n}\n<\/style>\n\t<\/section>\n\t\n\n\n\t<section class=\"section\" id=\"section_1892822588\">\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\n<div class=\"row\"  id=\"row-1343089256\">\n\n\n\t<div id=\"col-139038939\" class=\"col small-12 large-12\"  >\n\t\t\t\t<div class=\"col-inner\"  >\n\t\t\t\n\t\t\t\n\n        <div class=\"programacao-container\">\r\n            <!-- Filtros no topo -->\r\n            <div class=\"filters\">\r\n                <select id=\"filtro-dia\">\r\n                    <option value=\"\" disabled selected>Escolha o dia<\/option>\r\n                <\/select>\r\n\r\n                <select id=\"filtro-categoria\">\r\n                    <option value=\"\" disabled selected>Escolha a categoria<\/option>\r\n                <\/select>\r\n\r\n                <select id=\"filtro-curso\">\r\n                    <option value=\"\" disabled selected>Escolha o curso<\/option>\r\n                <\/select>\r\n\r\n                <select id=\"filtro-palestrante\">\r\n                    <option value=\"\" disabled selected>Escolha o palestrante<\/option>\r\n                <\/select>\r\n            <\/div>\r\n\r\n            <!-- Conte\u00fado das palestras -->\r\n            <div class=\"programacao-content\">\r\n                <div id=\"lista-cursos\">\r\n                    <p id=\"prog-status\">Carregando palestras...<\/p>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <script>\r\n            \/\/ Categorias definidas no admin (id, nome)\r\n            const categoriasDisponiveis = [\n    {\n        \"id\": 569,\n        \"nome\": \"Cursos T\u00e9cnicos FBEXPO 26\"\n    },\n    {\n        \"id\": 562,\n        \"nome\": \"Fitness Brasil Expo 2026\"\n    },\n    {\n        \"id\": 568,\n        \"nome\": \"Gest\u00e3o e Neg\u00f3cios FBE2026\"\n    },\n    {\n        \"id\": 582,\n        \"nome\": \"Ingresso FB EXPO 2026\"\n    },\n    {\n        \"id\": 567,\n        \"nome\": \"Ingressos Feira FBE2026\"\n    },\n    {\n        \"id\": 566,\n        \"nome\": \"O Melhor Coordenador T\u00e9cnico de Academias do Mundo - FB EXPO 26\"\n    },\n    {\n        \"id\": 563,\n        \"nome\": \"Passaporte T\u00e9cnico FB EXPO 26\"\n    },\n    {\n        \"id\": 564,\n        \"nome\": \"Passaporte VIP Fitbr 2026\"\n    }\n];\r\n            console.log(\"Categorias dispon\u00edveis:\", categoriasDisponiveis);\r\n            const allowedCatIds = new Set(\r\n              (categoriasDisponiveis || [])\r\n                .map(c => parseInt(c?.id ?? c?.term_id, 10))\r\n                .filter(n => Number.isInteger(n) && n > 0)\r\n            );\r\n\r\n            let cursosPorCategoria = {};\r\n            let PALESTRAS_RAW = [];\r\n\r\n            function showInfo(msg) {\r\n                const cont = document.querySelector('#lista-cursos');\r\n                cont.innerHTML = `<p class=\"prog-msg\">${msg}<\/p>`;\r\n            }\r\n\r\n            document.addEventListener(\"DOMContentLoaded\", function() {\r\n                fetch(\"https:\/\/www.fitnessbrasil.com.br\/wp-admin\/admin-ajax.php?action=carregar_palestras\", { credentials: 'same-origin' })\r\n                    .then(response => {\r\n                        if (!response.ok) {\r\n                            throw new Error('Falha na requisi\u00e7\u00e3o (' + response.status + ')');\r\n                        }\r\n                        return response.json();\r\n                    })\r\n                    .then(payload => {\r\n                        const data = payload?.data || {};\r\n                        const palestras = data?.palestras || [];\r\n                        const palestrantes = data?.palestrantes || [];\r\n                        const cursosNomes = data?.cursos || [];\r\n                        const message = data?.message || '';\r\n\r\n                        \/\/ Se vier mensagem do backend e n\u00e3o h\u00e1 itens, mostra\r\n                        if (!palestras.length) {\r\n                            showInfo(message || 'Nenhuma palestra encontrada.');\r\n                            return;\r\n                        }\r\n\r\n                        \/\/ Se admin n\u00e3o marcou categorias, derive a lista e allowedCatIds\r\n                        if (!categoriasDisponiveis || !categoriasDisponiveis.length) {\r\n                            const cats = new Map();\r\n                            palestras.forEach(p =>\r\n                                (p.cursos || []).forEach(c => {\r\n                                    if (c.categoria_id && c.categoria) cats.set(parseInt(c.categoria_id,10), c.categoria);\r\n                                })\r\n                            );\r\n                            window.categoriasDisponiveis = Array.from(cats, ([id, nome]) => ({ id, nome }));\r\n                            allowedCatIds.clear();\r\n                            window.categoriasDisponiveis.forEach(c => {\r\n                                const id = parseInt(c.id,10);\r\n                                if (Number.isInteger(id) && id>0) allowedCatIds.add(id);\r\n                            });\r\n                        }\r\n\r\n                        \/\/ Blindagem extra no front (se houver categorias permitidas)\r\n                        let filtradas = palestras;\r\n                        if (allowedCatIds.size) {\r\n                            filtradas = palestras\r\n                                .map(p => {\r\n                                    const cursosFiltrados = (p.cursos || []).filter(c =>\r\n                                        allowedCatIds.has(parseInt(c.categoria_id, 10))\r\n                                    );\r\n                                    return { ...p, cursos: cursosFiltrados };\r\n                                })\r\n                                .filter(p => p.cursos && p.cursos.length);\r\n                        }\r\n\r\n                        if (!filtradas.length) {\r\n                            showInfo('Nenhuma palestra encontrada nas categorias selecionadas.');\r\n                            return;\r\n                        }\r\n\r\n                        PALESTRAS_RAW = filtradas;\r\n\r\n                        popularFiltros(PALESTRAS_RAW, palestrantes, cursosNomes);\r\n                        configurarFiltros(PALESTRAS_RAW);\r\n                        carregarMenorData(PALESTRAS_RAW);\r\n                    })\r\n                    .catch(err => {\r\n                        console.error(\"Erro ao buscar palestras:\", err);\r\n                        showInfo('Erro ao carregar a programa\u00e7\u00e3o. Tente novamente em instantes.');\r\n                    });\r\n            });\r\n\r\n            function popularFiltros(palestras, palestrantesOrdenados, cursosNomes) {\r\n                const dias = new Set();\r\n                palestras.forEach(p => { if (p.dia) dias.add(p.dia); });\r\n                preencherSelect(\"#filtro-dia\", Array.from(dias).sort());\r\n\r\n                preencherSelect(\"#filtro-categoria\",\r\n                    (categoriasDisponiveis || [])\r\n                        .map(cat => (cat && (cat.nome || cat.name)) ? (cat.nome || cat.name) : null)\r\n                        .filter(Boolean)\r\n                );\r\n\r\n                cursosPorCategoria = {};\r\n                palestras.forEach(p => {\r\n                    (p.cursos || []).forEach(curso => {\r\n                        const catId = parseInt(curso.categoria_id, 10);\r\n                        if (!allowedCatIds.size || allowedCatIds.has(catId)) {\r\n                            if (!cursosPorCategoria[catId]) cursosPorCategoria[catId] = new Set();\r\n                            cursosPorCategoria[catId].add(curso.nome);\r\n                        }\r\n                    });\r\n                });\r\n\r\n                \/\/ come\u00e7a vazio; ser\u00e1 populado ao escolher categoria\r\n                preencherSelect(\"#filtro-curso\", []);\r\n\r\n                preencherSelect(\"#filtro-palestrante\", palestrantesOrdenados || []);\r\n            }\r\n\r\n            function preencherSelect(id, valores) {\r\n                const select = document.querySelector(id);\r\n                select.innerHTML = \"\";\r\n\r\n                const placeholder = document.createElement(\"option\");\r\n                placeholder.value = \"\";\r\n                placeholder.disabled = false;\r\n                placeholder.selected = true;\r\n\r\n                if (id === \"#filtro-categoria\") placeholder.textContent = \"Todas as categorias\";\r\n                else if (id === \"#filtro-dia\") placeholder.textContent = \"Todos os dias\";\r\n                else if (id === \"#filtro-curso\") placeholder.textContent = \"Todos os cursos\";\r\n                else if (id === \"#filtro-palestrante\") placeholder.textContent = \"Todos os palestrantes\";\r\n                else placeholder.textContent = \"Todos\";\r\n\r\n                select.appendChild(placeholder);\r\n\r\n                (valores || []).forEach(valor => {\r\n                    const option = document.createElement(\"option\");\r\n                    if (typeof valor === \"object\" && valor !== null) {\r\n                        const nome = valor?.nome ?? valor?.name ?? '';\r\n                        option.value = nome;\r\n                        option.textContent = nome;\r\n                    } else {\r\n                        option.value = valor;\r\n                        option.textContent = valor;\r\n                    }\r\n                    if (option.value) select.appendChild(option);\r\n                });\r\n            }\r\n\r\n            function configurarFiltros(palestras) {\r\n                document.querySelectorAll(\"#filtro-dia, #filtro-curso, #filtro-palestrante\").forEach(select => {\r\n                    select.addEventListener(\"change\", function() {\r\n                        filtrarPalestras(palestras);\r\n                    });\r\n                });\r\n\r\n                document.querySelector(\"#filtro-categoria\").addEventListener(\"change\", function() {\r\n                    const categoriaSelecionada = (categoriasDisponiveis || []).find(cat => {\r\n                        const nome = cat?.nome ?? cat?.name;\r\n                        return nome === this.value;\r\n                    });\r\n                    const catId = categoriaSelecionada ? parseInt(categoriaSelecionada.id, 10) : null;\r\n\r\n                    const cursosFiltrados = (catId && cursosPorCategoria[catId])\r\n                        ? Array.from(cursosPorCategoria[catId])\r\n                        : [];\r\n\r\n                    preencherSelect(\"#filtro-curso\", cursosFiltrados);\r\n                    filtrarPalestras(palestras);\r\n                });\r\n            }\r\n\r\n            function filtrarPalestras(palestras) {\r\n                const diaSelecionado           = document.querySelector(\"#filtro-dia\").value;\r\n                const cursoSelecionado         = document.querySelector(\"#filtro-curso\").value;\r\n                const palestranteSelecionado   = document.querySelector(\"#filtro-palestrante\").value;\r\n                const categoriaSelecionadaNome = document.querySelector(\"#filtro-categoria\").value;\r\n\r\n                const categoriaSelecionada = (categoriasDisponiveis || []).find(cat => {\r\n                    const nome = cat?.nome ?? cat?.name;\r\n                    return nome === categoriaSelecionadaNome;\r\n                });\r\n                const categoriaSelecionadaId = categoriaSelecionada ? parseInt(categoriaSelecionada.id, 10) : null;\r\n\r\n                const palestrasFiltradas = palestras.filter(p => {\r\n                    if (!p.cursos || !p.cursos.length) return false;\r\n\r\n                    const cursosValidos = p.cursos.filter(c =>\r\n                        (!allowedCatIds.size || allowedCatIds.has(parseInt(c.categoria_id, 10)))\r\n                    );\r\n                    if (!cursosValidos.length) return false;\r\n\r\n                    const matchDia         = (diaSelecionado === \"\" || p.dia === diaSelecionado);\r\n                    const matchCurso       = (cursoSelecionado === \"\" || cursosValidos.some(c => c.nome === cursoSelecionado));\r\n                    const matchPalestrante = (palestranteSelecionado === \"\" || (p.palestrantes || []).some(pal => pal.nome === palestranteSelecionado));\r\n                    const matchCategoria   = (!categoriaSelecionadaId || cursosValidos.some(c => parseInt(c.categoria_id,10) === categoriaSelecionadaId));\r\n\r\n                    return matchDia && matchCurso && matchPalestrante && matchCategoria;\r\n                });\r\n\r\n                exibirPalestrasPorDia(palestrasFiltradas);\r\n            }\r\n\r\n            function exibirPalestrasPorDia(palestras) {\r\n                const container = document.querySelector(\"#lista-cursos\");\r\n                container.innerHTML = \"\";\r\n\r\n                if (!palestras.length) {\r\n                    container.innerHTML = \"<p class='prog-msg'>Nenhuma palestra encontrada com os filtros selecionados.<\/p>\";\r\n                    return;\r\n                }\r\n\r\n                const diasMap = {};\r\n                palestras.forEach(palestra => {\r\n                    if (!diasMap[palestra.dia]) diasMap[palestra.dia] = {};\r\n                    (palestra.cursos || []).forEach(curso => {\r\n                        const cursoId = curso.id;\r\n                        if (!diasMap[palestra.dia][cursoId]) {\r\n                            diasMap[palestra.dia][cursoId] = {\r\n                                nome: curso.nome,\r\n                                cor: curso.cor,\r\n                                categoria: curso.categoria,\r\n                                palestras: []\r\n                            };\r\n                        }\r\n                        diasMap[palestra.dia][cursoId].palestras.push(palestra);\r\n                    });\r\n                });\r\n\r\n                const diasOrdenados = Object.keys(diasMap).sort((a, b) => {\r\n                    const toISO = (s) => s.split('\/').reverse().join('-'); \/\/ dd\/mm\/yyyy -> yyyy-mm-dd\r\n                    return new Date(toISO(a)) - new Date(toISO(b));\r\n                });\r\n\r\n                diasOrdenados.forEach(dia => {\r\n                    const diaDiv = document.createElement(\"div\");\r\n                    diaDiv.classList.add(\"dia-section\");\r\n                    diaDiv.innerHTML = `<h2 data-dia=\"${dia}\">${dia}<\/h2>`;\r\n\r\n                    for (const cursoId in diasMap[dia]) {\r\n                        const cursoData = diasMap[dia][cursoId];\r\n\r\n                        const cursoDiv = document.createElement(\"div\");\r\n                        cursoDiv.classList.add(\"curso-section\");\r\n                        cursoDiv.style.border = `1px solid ${cursoData.cor}`;\r\n\r\n                        cursoDiv.innerHTML = `\r\n                            <div class=\"curso-header\" style=\"background:${cursoData.cor};\">\r\n                                <div class=\"curso-info\">\r\n                                    <h3 data-curso-id=\"${cursoId}\">${cursoData.nome}<\/h3>\r\n                                    <small class=\"curso-categoria\">${cursoData.categoria}<\/small>\r\n                                <\/div>\r\n                                <div class=\"curso-btn\">\r\n                                    <a href=\"https:\/\/eventos.tmp.br\/fitness2025\/visitantes\/inicio_grupo.php\"\r\n                                       style=\"background:#FFF; color:${cursoData.cor};\"\r\n                                       class=\"btn-comprar\" target=\"_blank\">COMPRAR AGORA<\/a>\r\n                                <\/div>\r\n                            <\/div>\r\n                        `;\r\n\r\n                        const palestraGrid = document.createElement(\"div\");\r\n                        palestraGrid.classList.add(\"palestra-grid\");\r\n\r\n                        (cursoData.palestras || []).forEach(palestra => {\r\n                            const palestraDiv = document.createElement(\"div\");\r\n                            palestraDiv.classList.add(\"palestra-card\");\r\n\r\n                            palestraDiv.innerHTML = `\r\n                                <h4>${palestra.titulo}<\/h4>\r\n                                <p>${palestra.dia} - ${palestra.hora_inicio}${palestra.hora_fim ? ` \u00e0s ${palestra.hora_fim}` : ''}<\/p>\r\n                                ${(palestra.palestrantes || []).map(p => `\r\n                                    <div class=\"palestrante\">\r\n                                        <div class=\"palestrante-foto\">\r\n                                            <img decoding=\"async\" src=\"${p.foto}\" alt=\"${p.nome}\">\r\n                                        <\/div>\r\n                                        <div class=\"palestrante-info\">\r\n                                            <p><strong>${p.nome}<\/strong><\/p>\r\n                                            <p>${p.cargo}<\/p>\r\n                                        <\/div>\r\n                                    <\/div>\r\n                                `).join('')}\r\n                            `;\r\n                            palestraGrid.appendChild(palestraDiv);\r\n                        });\r\n\r\n                        cursoDiv.appendChild(palestraGrid);\r\n                        diaDiv.appendChild(cursoDiv);\r\n                    }\r\n\r\n                    container.appendChild(diaDiv);\r\n                });\r\n            }\r\n\r\n            function carregarMenorData(palestras) {\r\n                const dias = new Set(palestras.map(p => p.dia).filter(Boolean));\r\n                const ordenado = Array.from(dias).sort();\r\n                if (ordenado.length) {\r\n                    document.querySelector(\"#filtro-dia\").value = ordenado[0];\r\n                    filtrarPalestras(palestras);\r\n                } else {\r\n                    showInfo('Nenhuma palestra encontrada.');\r\n                }\r\n            }\r\n        <\/script>\r\n        \n\n\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\n\t\n\n<\/div>\n\n\t\t<\/div>\n\n\t\t\n<style>\n#section_1892822588 {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  background-color: rgb(255,255,255);\n}\n<\/style>\n\t<\/section>\n\t\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":13726,"featured_media":0,"parent":97883,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-blank.php","meta":{"_acf_changed":false,"footnotes":""},"folder":[463],"class_list":["post-97917","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Programa\u00e7\u00e3o - Fitness Brasil<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.fitnessbrasil.com.br\/es\/fitnessbrasilexpo2025-home\/programacao\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programa\u00e7\u00e3o - Fitness Brasil\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.fitnessbrasil.com.br\/es\/fitnessbrasilexpo2025-home\/programacao\/\" \/>\n<meta property=\"og:site_name\" content=\"Fitness Brasil\" \/>\n<meta property=\"article:modified_time\" content=\"2025-03-20T20:49:47+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/fitnessbrasilexpo2025-home\\\/programacao\\\/\",\"url\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/fitnessbrasilexpo2025-home\\\/programacao\\\/\",\"name\":\"Programa\u00e7\u00e3o - Fitness Brasil\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/#website\"},\"datePublished\":\"2024-08-21T11:15:16+00:00\",\"dateModified\":\"2025-03-20T20:49:47+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/fitnessbrasilexpo2025-home\\\/programacao\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/fitnessbrasilexpo2025-home\\\/programacao\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/fitnessbrasilexpo2025-home\\\/programacao\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Fitness Brasil Expo 2025\",\"item\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/fitnessbrasilexpo2025-home\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Programa\u00e7\u00e3o\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/#website\",\"url\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/\",\"name\":\"Fitness Brasil\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/#organization\",\"name\":\"Fitness Brasil\",\"url\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/Logo-Fitness-Brasil_preto-e-cor.png\",\"contentUrl\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/wp-content\\\/uploads\\\/2022\\\/01\\\/Logo-Fitness-Brasil_preto-e-cor.png\",\"width\":593,\"height\":316,\"caption\":\"Fitness Brasil\"},\"image\":{\"@id\":\"https:\\\/\\\/www.fitnessbrasil.com.br\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programa\u00e7\u00e3o - Fitness Brasil","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:\/\/www.fitnessbrasil.com.br\/es\/fitnessbrasilexpo2025-home\/programacao\/","og_locale":"es_ES","og_type":"article","og_title":"Programa\u00e7\u00e3o - Fitness Brasil","og_url":"https:\/\/www.fitnessbrasil.com.br\/es\/fitnessbrasilexpo2025-home\/programacao\/","og_site_name":"Fitness Brasil","article_modified_time":"2025-03-20T20:49:47+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.fitnessbrasil.com.br\/fitnessbrasilexpo2025-home\/programacao\/","url":"https:\/\/www.fitnessbrasil.com.br\/fitnessbrasilexpo2025-home\/programacao\/","name":"Programa\u00e7\u00e3o - Fitness Brasil","isPartOf":{"@id":"https:\/\/www.fitnessbrasil.com.br\/#website"},"datePublished":"2024-08-21T11:15:16+00:00","dateModified":"2025-03-20T20:49:47+00:00","breadcrumb":{"@id":"https:\/\/www.fitnessbrasil.com.br\/fitnessbrasilexpo2025-home\/programacao\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.fitnessbrasil.com.br\/fitnessbrasilexpo2025-home\/programacao\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.fitnessbrasil.com.br\/fitnessbrasilexpo2025-home\/programacao\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/www.fitnessbrasil.com.br\/"},{"@type":"ListItem","position":2,"name":"Fitness Brasil Expo 2025","item":"https:\/\/www.fitnessbrasil.com.br\/fitnessbrasilexpo2025-home\/"},{"@type":"ListItem","position":3,"name":"Programa\u00e7\u00e3o"}]},{"@type":"WebSite","@id":"https:\/\/www.fitnessbrasil.com.br\/#website","url":"https:\/\/www.fitnessbrasil.com.br\/","name":"Fitness Brasil","description":"","publisher":{"@id":"https:\/\/www.fitnessbrasil.com.br\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.fitnessbrasil.com.br\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.fitnessbrasil.com.br\/#organization","name":"Fitness Brasil","url":"https:\/\/www.fitnessbrasil.com.br\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.fitnessbrasil.com.br\/#\/schema\/logo\/image\/","url":"https:\/\/www.fitnessbrasil.com.br\/wp-content\/uploads\/2022\/01\/Logo-Fitness-Brasil_preto-e-cor.png","contentUrl":"https:\/\/www.fitnessbrasil.com.br\/wp-content\/uploads\/2022\/01\/Logo-Fitness-Brasil_preto-e-cor.png","width":593,"height":316,"caption":"Fitness Brasil"},"image":{"@id":"https:\/\/www.fitnessbrasil.com.br\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/www.fitnessbrasil.com.br\/es\/wp-json\/wp\/v2\/pages\/97917","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fitnessbrasil.com.br\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.fitnessbrasil.com.br\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.fitnessbrasil.com.br\/es\/wp-json\/wp\/v2\/users\/13726"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fitnessbrasil.com.br\/es\/wp-json\/wp\/v2\/comments?post=97917"}],"version-history":[{"count":0,"href":"https:\/\/www.fitnessbrasil.com.br\/es\/wp-json\/wp\/v2\/pages\/97917\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/www.fitnessbrasil.com.br\/es\/wp-json\/wp\/v2\/pages\/97883"}],"wp:attachment":[{"href":"https:\/\/www.fitnessbrasil.com.br\/es\/wp-json\/wp\/v2\/media?parent=97917"}],"wp:term":[{"taxonomy":"folder","embeddable":true,"href":"https:\/\/www.fitnessbrasil.com.br\/es\/wp-json\/wp\/v2\/folder?post=97917"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}