{"id":21930,"date":"2025-08-07T08:31:09","date_gmt":"2025-08-07T11:31:09","guid":{"rendered":"https:\/\/culturas.cc\/congresso2025\/?page_id=21930"},"modified":"2025-11-23T18:51:20","modified_gmt":"2025-11-23T21:51:20","slug":"organizacao-2025","status":"publish","type":"page","link":"https:\/\/culturas.cc\/congresso2025\/organizacao-2025\/","title":{"rendered":"Organiza\u00e7\u00e3o"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"21930\" class=\"elementor elementor-21930\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7049f8a e-con-full curtain-background e-flex e-con e-child\" data-id=\"7049f8a\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-f62bd2a elementor-widget elementor-widget-spacer\" data-id=\"f62bd2a\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-bb58227 elementor-widget elementor-widget-heading\" data-id=\"bb58227\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Organiza\u00e7\u00e3o<\/h2>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4b0f403 elementor-widget elementor-widget-shortcode\" data-id=\"4b0f403\" data-element_type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/p5.js\/1.4.0\/p5.min.js\"><\/script>\r\n<script>\r\n        const CORES = {\r\n            linhas: [\"#ffc600\", \"#ff8ace\", \"#4cc1ec\"],\r\n        };\r\n\r\n        const CONFIG_DESKTOP = {\r\n            linhasHorizontais: 25,\r\n            linhasVerticais: 25,\r\n            maxDistDeslocamento: 200,\r\n            forcaDeslocamentoFundo: 6,\r\n            espessuraLinhaFundo: 4,\r\n            larguraCortinaTopo: 80,\r\n            larguraCortinaBase: 450,\r\n            margemDesvio: 30\r\n        };\r\n\r\n        const CONFIG_MOBILE = {\r\n            linhasHorizontais: 35,\r\n            linhasVerticais: 35,\r\n            maxDistDeslocamento: 120,\r\n            forcaDeslocamentoFundo: 3,\r\n            espessuraLinhaFundo: 3,\r\n            larguraCortinaTopo: 50,\r\n            larguraCortinaBase: 280,\r\n            margemDesvio: 20\r\n        };\r\n\r\n        \/\/ VERS\u00c3O COM CORTINA (espa\u00e7o vazio central)\r\n        function criarCurtainSketch(container) {\r\n            return function(p) {\r\n                let linhasDeFundo = [];\r\n                let isMobile = false;\r\n                let CONFIG = CONFIG_DESKTOP;\r\n                let tempoUltimaAtualizacao = 0;\r\n                const INTERVALO_ATUALIZACAO = 16;\r\n\r\n                p.setup = function() {\r\n                    detectarDispositivo();\r\n                    \r\n                    let canvas = p.createCanvas(container.offsetWidth, container.offsetHeight);\r\n                    canvas.parent(container);\r\n                    canvas.elt.style.position = \"absolute\";\r\n                    canvas.elt.style.top = \"0\";\r\n                    canvas.elt.style.left = \"0\";\r\n                    canvas.elt.style.zIndex = \"1\";\r\n                    canvas.elt.style.pointerEvents = \"none\";\r\n\r\n                    gerarLinhasDeFundo();\r\n                };\r\n\r\n                function detectarDispositivo() {\r\n                    isMobile = \/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\/i.test(navigator.userAgent) || \r\n                               window.innerWidth <= 768;\r\n                    CONFIG = isMobile ? CONFIG_MOBILE : CONFIG_DESKTOP;\r\n                }\r\n\r\n                p.draw = function() {\r\n                    let agora = p.millis();\r\n                    if (agora - tempoUltimaAtualizacao < INTERVALO_ATUALIZACAO) return;\r\n                    tempoUltimaAtualizacao = agora;\r\n\r\n                    p.clear();\r\n                    desenharFundo();\r\n                };\r\n\r\n                function getLarguraCortina(y) {\r\n                    let progressoAltura = p.constrain(y \/ p.height, 0, 1);\r\n                    return p.lerp(CONFIG.larguraCortinaTopo, CONFIG.larguraCortinaBase, progressoAltura);\r\n                }\r\n\r\n                function estaNoEspacoCortina(x, y) {\r\n                    let centroX = p.width \/ 2;\r\n                    let larguraAtual = getLarguraCortina(y) \/ 2 + CONFIG.margemDesvio;\r\n                    \r\n                    let naCortinaCentral = x >= centroX - larguraAtual && x <= centroX + larguraAtual;\r\n                    let naAreaInferior = y > p.height * 0.85;\r\n                    \r\n                    return naCortinaCentral || naAreaInferior;\r\n                }\r\n\r\n                function getLadoCortina(x) {\r\n                    let centroX = p.width \/ 2;\r\n                    return x < centroX ? 'esquerda' : 'direita';\r\n                }\r\n\r\n                function gerarLinhasDeFundo() {\r\n                    linhasDeFundo = [];\r\n                    \r\n                    function criarLinha(startX, startY, direcoes, maxIteracoes, ladoFixo) {\r\n                        let linha = {\r\n                            segmentos: [],\r\n                            cor: p.color(CORES.linhas[linhasDeFundo.length % CORES.linhas.length]),\r\n                            espessura: CONFIG.espessuraLinhaFundo,\r\n                            lado: ladoFixo\r\n                        };\r\n\r\n                        let x = startX, y = startY;\r\n                        let direcaoAtual = p.random(direcoes);\r\n                        let iteracoes = 0;\r\n                        let ultimosSegmentos = [];\r\n                        let centroX = p.width \/ 2;\r\n\r\n                        while (iteracoes < maxIteracoes) {\r\n                            iteracoes++;\r\n                            let len = isMobile ? p.random(50, 100) : p.random(80, 160);\r\n                            let inicioX = x, inicioY = y;\r\n                            let novoX = x, novoY = y;\r\n\r\n                            switch(direcaoAtual) {\r\n                                case \"horizontal\":\r\n                                    novoX += len;\r\n                                    break;\r\n                                case \"horizontal-inv\":\r\n                                    novoX -= len;\r\n                                    break;\r\n                                case \"vertical\":\r\n                                    novoY += len;\r\n                                    break;\r\n                                case \"vertical-inv\":\r\n                                    novoY -= len;\r\n                                    break;\r\n                                case \"diagonal-up\":\r\n                                    novoX += len * 0.7;\r\n                                    novoY -= len * 0.7;\r\n                                    break;\r\n                                case \"diagonal-down\":\r\n                                    novoX += len * 0.7;\r\n                                    novoY += len * 0.7;\r\n                                    break;\r\n                                case \"diagonal-up-inv\":\r\n                                    novoX -= len * 0.7;\r\n                                    novoY -= len * 0.7;\r\n                                    break;\r\n                                case \"diagonal-down-inv\":\r\n                                    novoX -= len * 0.7;\r\n                                    novoY += len * 0.7;\r\n                                    break;\r\n                            }\r\n\r\n                            let vaiCruzar = false;\r\n                            for (let t = 0; t <= 1; t += 0.1) {\r\n                                let checkX = p.lerp(inicioX, novoX, t);\r\n                                let checkY = p.lerp(inicioY, novoY, t);\r\n                                if (estaNoEspacoCortina(checkX, checkY)) {\r\n                                    vaiCruzar = true;\r\n                                    break;\r\n                                }\r\n                            }\r\n\r\n                            let vaiCruzarLado = false;\r\n                            if (ladoFixo === 'esquerda' && novoX > centroX - CONFIG.margemDesvio) {\r\n                                vaiCruzarLado = true;\r\n                            } else if (ladoFixo === 'direita' && novoX < centroX + CONFIG.margemDesvio) {\r\n                                vaiCruzarLado = true;\r\n                            }\r\n\r\n                            let estaVoltando = false;\r\n                            if (ultimosSegmentos.length > 2) {\r\n                                let segmentosRecentes = ultimosSegmentos.slice(-3);\r\n                                for (let seg of segmentosRecentes) {\r\n                                    let distFim = p.dist(novoX, novoY, seg.x1, seg.y1);\r\n                                    if (distFim < len * 0.4) {\r\n                                        estaVoltando = true;\r\n                                        break;\r\n                                    }\r\n                                }\r\n                            }\r\n\r\n                            if (!vaiCruzar && !estaVoltando && !vaiCruzarLado) {\r\n                                let novoSegmento = { x1: inicioX, y1: inicioY, x2: novoX, y2: novoY };\r\n                                linha.segmentos.push(novoSegmento);\r\n                                \r\n                                ultimosSegmentos.push(novoSegmento);\r\n                                if (ultimosSegmentos.length > 3) {\r\n                                    ultimosSegmentos.shift();\r\n                                }\r\n                                \r\n                                x = novoX;\r\n                                y = novoY;\r\n                                \r\n                                if (p.random() < 0.3) {\r\n                                    direcaoAtual = p.random(direcoes);\r\n                                }\r\n                            } else {\r\n                                let direcoesDesvio = [];\r\n                                \r\n                                if (y > p.height * 0.75) {\r\n                                    if (ladoFixo === 'esquerda') {\r\n                                        direcoesDesvio = [\"horizontal-inv\", \"diagonal-up-inv\", \"vertical-inv\"];\r\n                                    } else {\r\n                                        direcoesDesvio = [\"horizontal\", \"diagonal-up\", \"vertical-inv\"];\r\n                                    }\r\n                                } else {\r\n                                    if (ladoFixo === 'esquerda') {\r\n                                        direcoesDesvio = [\"horizontal-inv\", \"diagonal-up-inv\", \"diagonal-down-inv\", \"vertical\"];\r\n                                    } else {\r\n                                        direcoesDesvio = [\"horizontal\", \"diagonal-up\", \"diagonal-down\", \"vertical\"];\r\n                                    }\r\n                                }\r\n                                \r\n                                let tentativas = 0;\r\n                                let encontrouDirecao = false;\r\n                                \r\n                                while (tentativas < 8 && !encontrouDirecao) {\r\n                                    direcaoAtual = p.random(direcoesDesvio);\r\n                                    tentativas++;\r\n                                    \r\n                                    let testX = x, testY = y;\r\n                                    switch(direcaoAtual) {\r\n                                        case \"horizontal\": testX += len; break;\r\n                                        case \"horizontal-inv\": testX -= len; break;\r\n                                        case \"vertical\": testY += len; break;\r\n                                        case \"vertical-inv\": testY -= len; break;\r\n                                        case \"diagonal-up\": testX += len * 0.7; testY -= len * 0.7; break;\r\n                                        case \"diagonal-down\": testX += len * 0.7; testY += len * 0.7; break;\r\n                                        case \"diagonal-up-inv\": testX -= len * 0.7; testY -= len * 0.7; break;\r\n                                        case \"diagonal-down-inv\": testX -= len * 0.7; testY += len * 0.7; break;\r\n                                    }\r\n                                    \r\n                                    let saiDoLado = false;\r\n                                    if (ladoFixo === 'esquerda' && testX > centroX - CONFIG.margemDesvio) {\r\n                                        saiDoLado = true;\r\n                                    } else if (ladoFixo === 'direita' && testX < centroX + CONFIG.margemDesvio) {\r\n                                        saiDoLado = true;\r\n                                    }\r\n                                    \r\n                                    let vaVoltar = false;\r\n                                    let segmentosCheck = ultimosSegmentos.slice(-2);\r\n                                    for (let seg of segmentosCheck) {\r\n                                        let distTest = p.dist(testX, testY, seg.x1, seg.y1);\r\n                                        if (distTest < len * 0.3) {\r\n                                            vaVoltar = true;\r\n                                            break;\r\n                                        }\r\n                                    }\r\n                                    \r\n                                    if (!vaVoltar && !saiDoLado) {\r\n                                        encontrouDirecao = true;\r\n                                    }\r\n                                }\r\n                                \r\n                                if (!encontrouDirecao) {\r\n                                    direcaoAtual = p.random(direcoesDesvio);\r\n                                }\r\n                            }\r\n\r\n                            if (x < -400 || x > p.width + 400 || y > p.height + 400) {\r\n                                break;\r\n                            }\r\n                        }\r\n                        \r\n                        return linha;\r\n                    }\r\n\r\n                    for (let i = 0; i < CONFIG.linhasHorizontais \/ 2; i++) {\r\n                        linhasDeFundo.push(criarLinha(\r\n                            p.random(-400, -100),\r\n                            p.random(-100, p.height * 0.7),\r\n                            [\"horizontal\", \"diagonal-up\", \"diagonal-down\", \"vertical\"],\r\n                            200,\r\n                            'esquerda'\r\n                        ));\r\n                    }\r\n\r\n                    for (let i = 0; i < CONFIG.linhasHorizontais \/ 2; i++) {\r\n                        linhasDeFundo.push(criarLinha(\r\n                            p.random(p.width + 100, p.width + 400),\r\n                            p.random(-100, p.height * 0.7),\r\n                            [\"horizontal-inv\", \"diagonal-up-inv\", \"diagonal-down-inv\", \"vertical\"],\r\n                            200,\r\n                            'direita'\r\n                        ));\r\n                    }\r\n                    \r\n                    for (let i = 0; i < CONFIG.linhasVerticais; i++) {\r\n                        let posX = p.random(-100, p.width + 100);\r\n                        let ladoLinha = posX < p.width \/ 2 ? 'esquerda' : 'direita';\r\n                        let direcoesPermitidas = ladoLinha === 'esquerda' \r\n                            ? [\"vertical\", \"diagonal-down-inv\", \"horizontal-inv\"]\r\n                            : [\"vertical\", \"diagonal-down\", \"horizontal\"];\r\n                        \r\n                        linhasDeFundo.push(criarLinha(\r\n                            posX,\r\n                            p.random(-400, -100),\r\n                            direcoesPermitidas,\r\n                            200,\r\n                            ladoLinha\r\n                        ));\r\n                    }\r\n                }\r\n\r\n                function desenharFundo() {\r\n                    p.strokeCap(p.ROUND);\r\n                    p.strokeJoin(p.ROUND);\r\n                    p.noFill();\r\n\r\n                    for (let linha of linhasDeFundo) {\r\n                        if (linha.segmentos.length === 0) continue;\r\n                        \r\n                        p.stroke(linha.cor);\r\n                        p.strokeWeight(linha.espessura);\r\n                        p.beginShape();\r\n                        \r\n                        let inicio = deslocarFundo(linha.segmentos[0].x1, linha.segmentos[0].y1);\r\n                        p.vertex(inicio.x, inicio.y);\r\n\r\n                        for (let i = 0; i < linha.segmentos.length; i++) {\r\n                            let seg = linha.segmentos[i];\r\n                            let fim = deslocarFundo(seg.x2, seg.y2);\r\n\r\n                            if (i === linha.segmentos.length - 1) {\r\n                                p.vertex(fim.x, fim.y);\r\n                            } else {\r\n                                let prox = linha.segmentos[i + 1];\r\n                                let raio = linha.espessura * 1.5;\r\n\r\n                                let dx1 = seg.x2 - seg.x1, dy1 = seg.y2 - seg.y1;\r\n                                let len1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\r\n                                let dx2 = prox.x2 - prox.x1, dy2 = prox.y2 - prox.y1;\r\n                                let len2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\r\n\r\n                                if (len1 > 0 && len2 > 0) {\r\n                                    dx1 \/= len1; dy1 \/= len1; dx2 \/= len2; dy2 \/= len2;\r\n                                    let distIni = Math.min(raio, len1 * 0.3);\r\n                                    let distFim = Math.min(raio, len2 * 0.3);\r\n\r\n                                    let curvaIni = deslocarFundo(seg.x2 - dx1 * distIni, seg.y2 - dy1 * distIni);\r\n                                    let controle = deslocarFundo(seg.x2, seg.y2);\r\n                                    let curvaFim = deslocarFundo(seg.x2 + dx2 * distFim, seg.y2 + dy2 * distFim);\r\n\r\n                                    p.vertex(curvaIni.x, curvaIni.y);\r\n                                    p.quadraticVertex(controle.x, controle.y, curvaFim.x, curvaFim.y);\r\n                                }\r\n                            }\r\n                        }\r\n                        p.endShape();\r\n                    }\r\n                }\r\n\r\n                function deslocarFundo(x, y) {\r\n                    let dx = x - p.mouseX, dy = y - p.mouseY;\r\n                    let distSq = dx * dx + dy * dy;\r\n                    let maxDistSq = CONFIG.maxDistDeslocamento * CONFIG.maxDistDeslocamento;\r\n\r\n                    if (distSq < maxDistSq) {\r\n                        let d = Math.sqrt(distSq);\r\n                        let forca = p.map(d, 0, CONFIG.maxDistDeslocamento, CONFIG.forcaDeslocamentoFundo, 0);\r\n                        return { x: x + (dx \/ d) * forca, y: y + (dy \/ d) * forca };\r\n                    }\r\n                    return { x, y };\r\n                }\r\n\r\n                p.windowResized = function() {\r\n                    detectarDispositivo();\r\n                    p.resizeCanvas(container.offsetWidth, container.offsetHeight);\r\n                    gerarLinhasDeFundo();\r\n                };\r\n            };\r\n        }\r\n\r\n        \/\/ VERS\u00c3O COMPLETA (sem espa\u00e7o vazio)\r\n        function criarLinesSketch(container) {\r\n            return function(p) {\r\n                let linhasDeFundo = [];\r\n                let isMobile = false;\r\n                let CONFIG = CONFIG_DESKTOP;\r\n                let tempoUltimaAtualizacao = 0;\r\n                const INTERVALO_ATUALIZACAO = 16;\r\n\r\n                p.setup = function() {\r\n                    detectarDispositivo();\r\n                    \r\n                    let canvas = p.createCanvas(container.offsetWidth, container.offsetHeight);\r\n                    canvas.parent(container);\r\n                    canvas.elt.style.position = \"absolute\";\r\n                    canvas.elt.style.top = \"0\";\r\n                    canvas.elt.style.left = \"0\";\r\n                    canvas.elt.style.zIndex = \"1\";\r\n                    canvas.elt.style.pointerEvents = \"none\";\r\n\r\n                    gerarLinhasDeFundo();\r\n                };\r\n\r\n                function detectarDispositivo() {\r\n                    isMobile = \/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini\/i.test(navigator.userAgent) || \r\n                               window.innerWidth <= 768;\r\n                    CONFIG = isMobile ? CONFIG_MOBILE : CONFIG_DESKTOP;\r\n                }\r\n\r\n                p.draw = function() {\r\n                    let agora = p.millis();\r\n                    if (agora - tempoUltimaAtualizacao < INTERVALO_ATUALIZACAO) return;\r\n                    tempoUltimaAtualizacao = agora;\r\n\r\n                    p.clear();\r\n                    desenharFundo();\r\n                };\r\n\r\n                function gerarLinhasDeFundo() {\r\n                    linhasDeFundo = [];\r\n                    \r\n                    function criarLinha(startX, startY, direcoes, maxIteracoes) {\r\n                        let linha = {\r\n                            segmentos: [],\r\n                            cor: p.color(CORES.linhas[linhasDeFundo.length % CORES.linhas.length]),\r\n                            espessura: CONFIG.espessuraLinhaFundo\r\n                        };\r\n\r\n                        let x = startX, y = startY;\r\n                        let direcaoAtual = p.random(direcoes);\r\n                        let iteracoes = 0;\r\n                        let ultimosSegmentos = [];\r\n\r\n                        while (iteracoes < maxIteracoes) {\r\n                            iteracoes++;\r\n                            let len = isMobile ? p.random(50, 100) : p.random(80, 160);\r\n                            let inicioX = x, inicioY = y;\r\n                            let novoX = x, novoY = y;\r\n\r\n                            switch(direcaoAtual) {\r\n                                case \"horizontal\":\r\n                                    novoX += len;\r\n                                    break;\r\n                                case \"horizontal-inv\":\r\n                                    novoX -= len;\r\n                                    break;\r\n                                case \"vertical\":\r\n                                    novoY += len;\r\n                                    break;\r\n                                case \"vertical-inv\":\r\n                                    novoY -= len;\r\n                                    break;\r\n                                case \"diagonal-up\":\r\n                                    novoX += len * 0.7;\r\n                                    novoY -= len * 0.7;\r\n                                    break;\r\n                                case \"diagonal-down\":\r\n                                    novoX += len * 0.7;\r\n                                    novoY += len * 0.7;\r\n                                    break;\r\n                                case \"diagonal-up-inv\":\r\n                                    novoX -= len * 0.7;\r\n                                    novoY -= len * 0.7;\r\n                                    break;\r\n                                case \"diagonal-down-inv\":\r\n                                    novoX -= len * 0.7;\r\n                                    novoY += len * 0.7;\r\n                                    break;\r\n                            }\r\n\r\n                            let estaVoltando = false;\r\n                            if (ultimosSegmentos.length > 2) {\r\n                                let segmentosRecentes = ultimosSegmentos.slice(-3);\r\n                                for (let seg of segmentosRecentes) {\r\n                                    let distFim = p.dist(novoX, novoY, seg.x1, seg.y1);\r\n                                    if (distFim < len * 0.4) {\r\n                                        estaVoltando = true;\r\n                                        break;\r\n                                    }\r\n                                }\r\n                            }\r\n\r\n                            if (!estaVoltando) {\r\n                                let novoSegmento = { x1: inicioX, y1: inicioY, x2: novoX, y2: novoY };\r\n                                linha.segmentos.push(novoSegmento);\r\n                                \r\n                                ultimosSegmentos.push(novoSegmento);\r\n                                if (ultimosSegmentos.length > 3) {\r\n                                    ultimosSegmentos.shift();\r\n                                }\r\n                                \r\n                                x = novoX;\r\n                                y = novoY;\r\n                                \r\n                                if (p.random() < 0.3) {\r\n                                    direcaoAtual = p.random(direcoes);\r\n                                }\r\n                            } else {\r\n                                let tentativas = 0;\r\n                                let encontrouDirecao = false;\r\n                                \r\n                                while (tentativas < 8 && !encontrouDirecao) {\r\n                                    direcaoAtual = p.random(direcoes);\r\n                                    tentativas++;\r\n                                    \r\n                                    let testX = x, testY = y;\r\n                                    switch(direcaoAtual) {\r\n                                        case \"horizontal\": testX += len; break;\r\n                                        case \"horizontal-inv\": testX -= len; break;\r\n                                        case \"vertical\": testY += len; break;\r\n                                        case \"vertical-inv\": testY -= len; break;\r\n                                        case \"diagonal-up\": testX += len * 0.7; testY -= len * 0.7; break;\r\n                                        case \"diagonal-down\": testX += len * 0.7; testY += len * 0.7; break;\r\n                                        case \"diagonal-up-inv\": testX -= len * 0.7; testY -= len * 0.7; break;\r\n                                        case \"diagonal-down-inv\": testX -= len * 0.7; testY += len * 0.7; break;\r\n                                    }\r\n                                    \r\n                                    let vaVoltar = false;\r\n                                    let segmentosCheck = ultimosSegmentos.slice(-2);\r\n                                    for (let seg of segmentosCheck) {\r\n                                        let distTest = p.dist(testX, testY, seg.x1, seg.y1);\r\n                                        if (distTest < len * 0.3) {\r\n                                            vaVoltar = true;\r\n                                            break;\r\n                                        }\r\n                                    }\r\n                                    \r\n                                    if (!vaVoltar) {\r\n                                        encontrouDirecao = true;\r\n                                    }\r\n                                }\r\n                                \r\n                                if (!encontrouDirecao) {\r\n                                    direcaoAtual = p.random(direcoes);\r\n                                }\r\n                            }\r\n\r\n                            if (x < -400 || x > p.width + 400 || y < -400 || y > p.height + 400) {\r\n                                break;\r\n                            }\r\n                        }\r\n                        \r\n                        return linha;\r\n                    }\r\n\r\n                    for (let i = 0; i < CONFIG.linhasHorizontais \/ 2; i++) {\r\n                        linhasDeFundo.push(criarLinha(\r\n                            p.random(-400, -100),\r\n                            p.random(-100, p.height + 100),\r\n                            [\"horizontal\", \"diagonal-up\", \"diagonal-down\", \"vertical\", \"vertical-inv\"],\r\n                            200\r\n                        ));\r\n                    }\r\n\r\n                    for (let i = 0; i < CONFIG.linhasHorizontais \/ 2; i++) {\r\n                        linhasDeFundo.push(criarLinha(\r\n                            p.random(p.width + 100, p.width + 400),\r\n                            p.random(-100, p.height + 100),\r\n                            [\"horizontal-inv\", \"diagonal-up-inv\", \"diagonal-down-inv\", \"vertical\", \"vertical-inv\"],\r\n                            200\r\n                        ));\r\n                    }\r\n                    \r\n                    for (let i = 0; i < CONFIG.linhasVerticais \/ 2; i++) {\r\n                        linhasDeFundo.push(criarLinha(\r\n                            p.random(-100, p.width + 100),\r\n                            p.random(-400, -100),\r\n                            [\"vertical\", \"diagonal-up\", \"diagonal-down\", \"horizontal\", \"horizontal-inv\"],\r\n                            200\r\n                        ));\r\n                    }\r\n\r\n                    for (let i = 0; i < CONFIG.linhasVerticais \/ 2; i++) {\r\n                        linhasDeFundo.push(criarLinha(\r\n                            p.random(-100, p.width + 100),\r\n                            p.random(p.height + 100, p.height + 400),\r\n                            [\"vertical-inv\", \"diagonal-up-inv\", \"diagonal-down-inv\", \"horizontal\", \"horizontal-inv\"],\r\n                            200\r\n                        ));\r\n                    }\r\n                }\r\n\r\n                function desenharFundo() {\r\n                    p.strokeCap(p.ROUND);\r\n                    p.strokeJoin(p.ROUND);\r\n                    p.noFill();\r\n\r\n                    for (let linha of linhasDeFundo) {\r\n                        if (linha.segmentos.length === 0) continue;\r\n                        \r\n                        p.stroke(linha.cor);\r\n                        p.strokeWeight(linha.espessura);\r\n                        p.beginShape();\r\n                        \r\n                        let inicio = deslocarFundo(linha.segmentos[0].x1, linha.segmentos[0].y1);\r\n                        p.vertex(inicio.x, inicio.y);\r\n\r\n                        for (let i = 0; i < linha.segmentos.length; i++) {\r\n                            let seg = linha.segmentos[i];\r\n                            let fim = deslocarFundo(seg.x2, seg.y2);\r\n\r\n                            if (i === linha.segmentos.length - 1) {\r\n                                p.vertex(fim.x, fim.y);\r\n                            } else {\r\n                                let prox = linha.segmentos[i + 1];\r\n                                let raio = linha.espessura * 1.5;\r\n\r\n                                let dx1 = seg.x2 - seg.x1, dy1 = seg.y2 - seg.y1;\r\n                                let len1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\r\n                                let dx2 = prox.x2 - prox.x1, dy2 = prox.y2 - prox.y1;\r\n                                let len2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\r\n\r\n                                if (len1 > 0 && len2 > 0) {\r\n                                    dx1 \/= len1; dy1 \/= len1; dx2 \/= len2; dy2 \/= len2;\r\n                                    let distIni = Math.min(raio, len1 * 0.3);\r\n                                    let distFim = Math.min(raio, len2 * 0.3);\r\n\r\n                                    let curvaIni = deslocarFundo(seg.x2 - dx1 * distIni, seg.y2 - dy1 * distIni);\r\n                                    let controle = deslocarFundo(seg.x2, seg.y2);\r\n                                    let curvaFim = deslocarFundo(seg.x2 + dx2 * distFim, seg.y2 + dy2 * distFim);\r\n\r\n                                    p.vertex(curvaIni.x, curvaIni.y);\r\n                                    p.quadraticVertex(controle.x, controle.y, curvaFim.x, curvaFim.y);\r\n                                }\r\n                            }\r\n                        }\r\n                        p.endShape();\r\n                    }\r\n                }\r\n\r\n                function deslocarFundo(x, y) {\r\n                    let dx = x - p.mouseX, dy = y - p.mouseY;\r\n                    let distSq = dx * dx + dy * dy;\r\n                    let maxDistSq = CONFIG.maxDistDeslocamento * CONFIG.maxDistDeslocamento;\r\n\r\n                    if (distSq < maxDistSq) {\r\n                        let d = Math.sqrt(distSq);\r\n                        let forca = p.map(d, 0, CONFIG.maxDistDeslocamento, CONFIG.forcaDeslocamentoFundo, 0);\r\n                        return { x: x + (dx \/ d) * forca, y: y + (dy \/ d) * forca };\r\n                    }\r\n                    return { x, y };\r\n                }\r\n\r\n                p.windowResized = function() {\r\n                    detectarDispositivo();\r\n                    p.resizeCanvas(container.offsetWidth, container.offsetHeight);\r\n                    gerarLinhasDeFundo();\r\n                };\r\n            };\r\n        }\r\n\r\n        \/\/ Inicializar ambas as vers\u00f5es\r\n        document.addEventListener('DOMContentLoaded', function() {\r\n            \/\/ Cortinas (com espa\u00e7o vazio)\r\n            const curtainContainers = document.querySelectorAll('.curtain-background');\r\n            curtainContainers.forEach(container => {\r\n                new p5(criarCurtainSketch(container));\r\n            });\r\n\r\n            \/\/ Linhas completas (sem espa\u00e7o vazio)\r\n            const linesContainers = document.querySelectorAll('.lines-background');\r\n            linesContainers.forEach(container => {\r\n                new p5(criarLinesSketch(container));\r\n            });\r\n        });\r\n<\/script><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b2ca250 e-con-full e-flex e-con e-parent\" data-id=\"b2ca250\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c50df37 elementor-widget elementor-widget-spacer\" data-id=\"c50df37\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-695941c e-con-full e-flex e-con e-child\" data-id=\"695941c\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c11e6bf elementor-widget elementor-widget-text-editor\" data-id=\"c11e6bf\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2><strong>Comiss\u00e3o Cient\u00edfica<\/strong><\/h2>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-97a9a5f e-flex e-con-boxed e-con e-child\" data-id=\"97a9a5f\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-48fb2a0 elementor-widget-mobile__width-inherit elementor-widget elementor-widget-text-editor\" data-id=\"48fb2a0\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<section><table class=\"comissao\"><tbody><tr><td>Jo\u00e3o Teixeira Lopes<\/td><td>U.Porto<\/td><\/tr><tr><td>Urbano Sidoncha<\/td><td>UBI<\/td><\/tr><tr><td>Guilherme Varela<\/td><td>UFBA<\/td><\/tr><tr><td>Lia Calabre<\/td><td>Casa Ruy<\/td><\/tr><tr><td>Rita Arag\u00e3o<\/td><td>UFBA<\/td><\/tr><tr><td>Rosa Cabecinhas<\/td><td>U. Minho<\/td><\/tr><tr><td>S\u00f3nia de S\u00e1<\/td><td>UBI<\/td><\/tr><tr><td>Jorge Gato<\/td><td>U.Porto<\/td><\/tr><tr><td>Isabel Macedo<\/td><td>U.Minho<\/td><\/tr><tr><td>Armindo Armando<\/td><td>Uni. Licungo<\/td><\/tr><tr><td>Jo\u00e3o Correia<\/td><td>UBI<\/td><\/tr><tr><td>Maria Nat\u00e1lia Ramos<\/td><td>UAB<\/td><\/tr><tr><td>Paulo Moura<\/td><td>UNESP<\/td><\/tr><tr><td>Luciano Moreira<\/td><td>U.Porto<\/td><\/tr><\/tbody><\/table><\/section>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-1ab21d1 elementor-widget-mobile__width-inherit elementor-widget elementor-widget-text-editor\" data-id=\"1ab21d1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<section><table class=\"comissao\"><tbody><tr><td>Messias Guimar\u00e3es Bandeira<\/td><td>UFBA<\/td><\/tr><tr><td>Adriano Sampaio<\/td><td>UFBA<\/td><\/tr><tr><td>Beto Severino<\/td><td>UFBA<\/td><\/tr><tr><td>L\u00facia Aquino Queiroz<\/td><td>UFRB<\/td><\/tr><tr><td>Rico Soares<\/td><td>UFBA\/ALB<\/td><\/tr><tr><td>Diana Alves<\/td><td>U.Porto<\/td><\/tr><tr><td>Mois\u00e9s Martins<\/td><td>U. Lus\u00f3fona<\/td><\/tr><tr><td>Catarina Moura<\/td><td>UBI<\/td><\/tr><tr><td>Jo\u00e3o Lu\u00eds Lisboa<\/td><td>NOVA<\/td><\/tr><tr><td>Josu\u00e9 Barbosa<\/td><td>UFLA<\/td><\/tr><tr><td>Paula Guerra<\/td><td>U.Porto<\/td><\/tr><tr><td>Edilene Dias Matos<\/td><td>UFBA<\/td><\/tr><tr><td>Daniela Fonseca<\/td><td>UTAD<\/td><\/tr><tr><td>Helo\u00edsa Marina<\/td><td>UFMG<\/td><\/tr><\/tbody><\/table><\/section>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-9d5348d elementor-widget-mobile__width-inherit elementor-widget elementor-widget-text-editor\" data-id=\"9d5348d\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<section><table class=\"comissao\"><tbody><tr><td>Idalina Sidoncha<\/td><td>UBI<\/td><\/tr><tr><td>Renata Pitombo<\/td><td>UFRB<\/td><\/tr><tr><td>Isabel Menezes<\/td><td>U.Porto<\/td><\/tr><tr><td>Martins Mapera<\/td><td>Uni. Licungo<\/td><\/tr><tr><td>Ant\u00f3nio Bra\u00e7o<\/td><td>Uni. Licungo<\/td><\/tr><tr><td>Luciano Sim\u00f5es<\/td><td>UFRB<\/td><\/tr><tr><td>Regina Brito<\/td><td>Mackenzie<\/td><\/tr><tr><td>Susana Costa<\/td><td>UAC<\/td><\/tr><tr><td>F\u00e1tima Vieira<\/td><td>U.Porto<\/td><\/tr><tr><td>Albino Rubim<\/td><td>UFBA<\/td><\/tr><tr><td>Fernando Mencarelli<\/td><td>UFMG<\/td><\/tr><tr><td>Luana Vilutis<\/td><td>UFBA<\/td><\/tr><tr><td>Luiz Augusto Rodrigues<\/td><td>UFF<\/td><\/tr><tr><td>Mirian Tavares<\/td><td>UAG<\/td><\/tr><\/tbody><\/table><\/section>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-21aa508 e-con-full e-flex e-con e-child\" data-id=\"21aa508\" data-element_type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b173329 elementor-widget elementor-widget-text-editor\" data-id=\"b173329\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<h2><strong>Comiss\u00e3o Organizadora<\/strong><\/h2>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-0c7c733 elementor-widget-mobile__width-inherit elementor-widget__width-initial elementor-widget elementor-widget-text-editor\" data-id=\"0c7c733\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<section><table class=\"comissao\"><tbody><tr><td>F\u00e1tima Vieira<\/td><td>U.Porto<\/td><\/tr><tr><td>Messias Guimar\u00e3es Bandeira<\/td><td>UFBA<\/td><\/tr><tr><td>Rico Soares<\/td><td>UFBA\/ALB<\/td><\/tr><tr><td>Jo\u00e3o Teixeira Lopes<\/td><td>U.Porto<\/td><\/tr><tr><td>Urbano Sidoncha<\/td><td>UBI<\/td><\/tr><tr><td>Jorge Gato<\/td><td>U.Porto<\/td><\/tr><tr><td>Isabel Macedo<\/td><td>U.Minho<\/td><\/tr><tr><td>Luciano Moreira<\/td><td>U.Porto<\/td><\/tr><tr><td>Diana Alves<\/td><td>U.Porto<\/td><\/tr><tr><td>Mois\u00e9s Martins<\/td><td>U. Lus\u00f3fona<\/td><\/tr><tr><td>Paula Guerra<\/td><td>U.Porto<\/td><\/tr><tr><td>Edilene Dias Matos<\/td><td>UFBA<\/td><\/tr><tr><td>Isabel Menezes<\/td><td>U.Porto<\/td><\/tr><tr><td>Martins Mapera<\/td><td>Uni. Licungo<\/td><\/tr><tr><td>Albino Rubim<\/td><td>UFBA<\/td><\/tr><\/tbody><\/table><\/section>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-e32999f elementor-widget elementor-widget-spacer\" data-id=\"e32999f\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-e1646e8 e-con-full e-flex e-con e-parent\" data-id=\"e1646e8\" data-element_type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t<div class=\"elementor-element elementor-element-46e60e1 elementor-widget elementor-widget-text-editor\" data-id=\"46e60e1\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t<div style=\"color: #ffc600;font-size: 20px\">Coordenador de sistemas de gest\u00e3o cient\u00edfica:\u00a0<span style=\"background-color: #6b4ca3;color: #ffffff;font-size: 20px;text-align: center\">Messias Guimar\u00e3es Bandeira<\/span><\/div>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a4fc122 elementor-widget elementor-widget-spacer\" data-id=\"a4fc122\" data-element_type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Organiza\u00e7\u00e3o Comiss\u00e3o Cient\u00edfica Jo\u00e3o Teixeira Lopes U.Porto Urbano Sidoncha UBI Guilherme Varela UFBA Lia Calabre Casa Ruy Rita Arag\u00e3o UFBA Rosa Cabecinhas U. Minho S\u00f3nia de S\u00e1 UBI Jorge Gato U.Porto Isabel Macedo U.Minho Armindo Armando Uni. Licungo Jo\u00e3o Correia UBI Maria Nat\u00e1lia Ramos UAB Paulo Moura UNESP Luciano Moreira U.Porto Messias Guimar\u00e3es Bandeira UFBA&#8230; <\/p>\n<div class=\"clear\"><\/div>\n<p><a href=\"https:\/\/culturas.cc\/congresso2025\/organizacao-2025\/\" class=\"gdlr-info-font excerpt-read-more\">Read More<\/a><\/p>\n","protected":false},"author":669,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"footnotes":""},"class_list":["post-21930","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/culturas.cc\/congresso2025\/wp-json\/wp\/v2\/pages\/21930","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/culturas.cc\/congresso2025\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/culturas.cc\/congresso2025\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/culturas.cc\/congresso2025\/wp-json\/wp\/v2\/users\/669"}],"replies":[{"embeddable":true,"href":"https:\/\/culturas.cc\/congresso2025\/wp-json\/wp\/v2\/comments?post=21930"}],"version-history":[{"count":10,"href":"https:\/\/culturas.cc\/congresso2025\/wp-json\/wp\/v2\/pages\/21930\/revisions"}],"predecessor-version":[{"id":22755,"href":"https:\/\/culturas.cc\/congresso2025\/wp-json\/wp\/v2\/pages\/21930\/revisions\/22755"}],"wp:attachment":[{"href":"https:\/\/culturas.cc\/congresso2025\/wp-json\/wp\/v2\/media?parent=21930"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}