{"id":7020,"date":"2026-06-17T11:36:14","date_gmt":"2026-06-17T11:36:14","guid":{"rendered":"https:\/\/3solutions.pt\/?page_id=7020"},"modified":"2026-07-22T17:34:44","modified_gmt":"2026-07-22T17:34:44","slug":"jobmaps-area-candidato","status":"publish","type":"page","link":"https:\/\/3solutions.pt\/en\/jobmaps-area-candidato\/","title":{"rendered":"\u00c1rea do candidato"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"7020\" class=\"elementor elementor-7020\">\n\t\t\t\t<div class=\"elementor-element elementor-element-44a52d7f e-flex e-con-boxed e-con e-parent\" data-id=\"44a52d7f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5fb80122 elementor-widget elementor-widget-html\" data-id=\"5fb80122\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t        <header class=\"jm-site-header\" data-wiw-header>\r\n          <div class=\"jm-site-header-inner\">\r\n\r\n            <a href=\"https:\/\/3solutions.pt\/en\/jobmaps-o-mapa-do-trabalho-local\/\"\r\n               class=\"jm-site-brand\"\r\n               aria-label=\"Ir para o mapa WIW\">\r\n              <span class=\"jm-site-logo\">\r\n                <img decoding=\"async\" src=\"https:\/\/3solutions.pt\/wp-content\/uploads\/2026\/06\/WIW.png\"\r\n                     alt=\"WIW \u2014 Work is Worth\">\r\n              <\/span>\r\n              <span class=\"jm-site-tagline\">O mapa de ofertas salariais na sua zona<\/span>\r\n            <\/a>\r\n\r\n            <nav class=\"jm-site-nav\" aria-label=\"Menu WIW\">\r\n\r\n              <a id=\"jm-link-contratar\"\r\n                 href=\"https:\/\/3solutions.pt\/en\/jobmaps-login\/\"\r\n                 class=\"jm-site-nav-link jm-primary-link\">\r\n                Quero contratar\r\n              <\/a>\r\n\r\n              <a id=\"jm-link-publicar\"\r\n                 href=\"https:\/\/3solutions.pt\/en\/planos-para-empresas-wiw\/\"\r\n                 class=\"jm-site-nav-link\"\r\n                 style=\"display:none;\">\r\n                Publicar oferta\r\n              <\/a>\r\n\r\n              <a id=\"jm-link-trabalhar\"\r\n                 href=\"https:\/\/3solutions.pt\/en\/jobmaps-login-candidato\/\"\r\n                 class=\"jm-site-nav-link\">\r\n                Quero trabalhar\r\n              <\/a>\r\n\r\n              <a id=\"jm-link-recrutador\"\r\n                 href=\"https:\/\/3solutions.pt\/en\/wiw-recrutadores\/\"\r\n                 class=\"jm-site-nav-link\">\r\n                Sou recrutador\r\n              <\/a>\r\n\r\n              <a id=\"jm-link-legal\"\r\n                 href=\"https:\/\/3solutions.pt\/en\/legal-wiw\/\"\r\n                 class=\"jm-site-nav-link jm-legal-link\">\r\n                Privacidade e Termos\r\n              <\/a>\r\n\r\n              <a id=\"jm-user-pill\"\r\n                 href=\"#\"\r\n                 class=\"jm-user-pill\"\r\n                 style=\"display:none;\">\r\n                <span class=\"jm-user-icon\" aria-hidden=\"true\">\ud83d\udc64<\/span>\r\n                <span id=\"jm-user-name\">Conta WIW<\/span>\r\n              <\/a>\r\n\r\n              <a id=\"jm-logout-link\"\r\n                 href=\"#\"\r\n                 class=\"jm-logout-link\"\r\n                 style=\"display:none;\">\r\n                Sair\r\n              <\/a>\r\n\r\n            <\/nav>\r\n\r\n          <\/div>\r\n        <\/header>\r\n\r\n        <script>\r\n        (function() {\r\n          function initWiwHeader() {\r\n            const header = document.querySelector(\"[data-wiw-header]\");\r\n            if (!header || header.dataset.ready === \"1\") return;\r\n\r\n            header.dataset.ready = \"1\";\r\n\r\n            const contratarLink = header.querySelector(\"#jm-link-contratar\");\r\n            const publicarLink = header.querySelector(\"#jm-link-publicar\");\r\n            const trabalharLink = header.querySelector(\"#jm-link-trabalhar\");\r\n            const recrutadorLink = header.querySelector(\"#jm-link-recrutador\");\r\n            const legalLink = header.querySelector(\"#jm-link-legal\");\r\n            const userPill = header.querySelector(\"#jm-user-pill\");\r\n            const userName = header.querySelector(\"#jm-user-name\");\r\n            const logoutLink = header.querySelector(\"#jm-logout-link\");\r\n\r\n            const urlsDefault = {\r\n              mapa: \"https:\/\/3solutions.pt\/en\/jobmaps-o-mapa-do-trabalho-local\/\",\r\n              loginEmpresa: \"https:\/\/3solutions.pt\/en\/jobmaps-login\/\",\r\n              areaEmpresa: \"https:\/\/3solutions.pt\/en\/jobmaps-area-empresa\/\",\r\n              planosEmpresa: \"https:\/\/3solutions.pt\/en\/planos-para-empresas-wiw\/\",\r\n              candidatos: \"https:\/\/3solutions.pt\/en\/jobmaps-candidatos\/\",\r\n              registoCandidato: \"https:\/\/3solutions.pt\/en\/jobmaps-registo-candidato\/\",\r\n              loginCandidato: \"https:\/\/3solutions.pt\/en\/jobmaps-login-candidato\/\",\r\n              areaCandidato: \"https:\/\/3solutions.pt\/en\/jobmaps-area-candidato\/\",\r\n              recrutador: \"https:\/\/3solutions.pt\/en\/wiw-recrutadores\/\",\r\n              areaRecrutador: \"https:\/\/3solutions.pt\/en\/jobmaps-area-recrutador\/\",\r\n              legal: \"https:\/\/3solutions.pt\/en\/legal-wiw\/\",\r\n              logoutAjax: \"https:\/\/3solutions.pt\/wp-admin\/admin-ajax.php\",\r\n              logoutRedirect: \"https:\/\/3solutions.pt\/en\/jobmaps-o-mapa-do-trabalho-local\/\" \r\n            };\r\n\r\n            function setHref(el, href) {\r\n              if (el && href) el.href = href;\r\n            }\r\n\r\n            function setText(el, text) {\r\n              if (el) el.textContent = text || \"\";\r\n            }\r\n\r\n            function show(el, displayValue) {\r\n              if (el) el.style.display = displayValue || \"inline-flex\";\r\n            }\r\n\r\n            function hide(el) {\r\n              if (el) el.style.display = \"none\";\r\n            }\r\n\r\n            function resetClasses() {\r\n              [contratarLink, publicarLink, trabalharLink, recrutadorLink, legalLink].forEach(function(link) {\r\n                if (!link) return;\r\n                link.classList.remove(\"jm-primary-link\", \"jm-logged-link\");\r\n              });\r\n            }\r\n\r\n            function resetVisibility() {\r\n              show(contratarLink);\r\n              hide(publicarLink);\r\n              show(trabalharLink);\r\n              show(recrutadorLink);\r\n              show(legalLink);\r\n              hide(userPill);\r\n              hide(logoutLink);\r\n            }\r\n\r\n            function applyCommonUrls(data) {\r\n              const urls = data && data.urls ? data.urls : {};\r\n\r\n              setHref(contratarLink, urls.login_empresa || urlsDefault.loginEmpresa);\r\n              setHref(publicarLink, urls.planos_empresa || urlsDefault.planosEmpresa);\r\n              setHref(trabalharLink, urls.login_candidato || urlsDefault.loginCandidato);\r\n              setHref(recrutadorLink, urls.recrutador || urlsDefault.recrutador);\r\n              setHref(legalLink, urls.legal || urlsDefault.legal);\r\n            }\r\n\r\n            function applyAccount(data, name, areaUrl) {\r\n              if (userPill && userName) {\r\n                setText(userName, name || \"Conta WIW\");\r\n                setHref(userPill, areaUrl);\r\n                show(userPill);\r\n              }\r\n\r\n              if (logoutLink) {\r\n                setHref(logoutLink, \"#\");\r\n                show(logoutLink);\r\n              }\r\n            }\r\n\r\n            function bindLogout() {\r\n              if (!logoutLink || logoutLink.dataset.bound === \"1\") {\r\n                return;\r\n              }\r\n\r\n              logoutLink.dataset.bound = \"1\";\r\n\r\n              logoutLink.addEventListener(\"click\", function(event) {\r\n                event.preventDefault();\r\n\r\n                if (logoutLink.dataset.loading === \"1\") {\r\n                  return;\r\n                }\r\n\r\n                logoutLink.dataset.loading = \"1\";\r\n                logoutLink.textContent = \"A sair...\";\r\n\r\n                const body = new URLSearchParams();\r\n                body.append(\"action\", \"wiw_logout_now\");\r\n\r\n                fetch(urlsDefault.logoutAjax, {\r\n                  method: \"POST\",\r\n                  credentials: \"same-origin\",\r\n                  cache: \"no-store\",\r\n                  headers: {\r\n                    \"Content-Type\": \"application\/x-www-form-urlencoded; charset=UTF-8\"\r\n                  },\r\n                  body: body.toString()\r\n                })\r\n                  .then(function(response) {\r\n                    return response.json();\r\n                  })\r\n                  .then(function(data) {\r\n                    const redirect =\r\n                      data &&\r\n                      data.success &&\r\n                      data.data &&\r\n                      data.data.redirect\r\n                        ? data.data.redirect\r\n                        : urlsDefault.logoutRedirect;\r\n\r\n                    window.location.replace(redirect);\r\n                  })\r\n                  .catch(function() {\r\n                    window.location.replace(urlsDefault.logoutRedirect);\r\n                  });\r\n              });\r\n            }\r\n\r\n            function applyCurrentPageHighlight() {\r\n              const path = String(window.location.pathname || \"\").toLowerCase();\r\n\r\n              [contratarLink, publicarLink, trabalharLink, recrutadorLink, legalLink].forEach(function(link) {\r\n                if (!link) return;\r\n                link.classList.remove(\"jm-primary-link\");\r\n              });\r\n\r\n              const isLegal =\r\n                path.includes(\"\/legal-wiw\") ||\r\n                path.includes(\"\/politica-de-privacidade\") ||\r\n                path.includes(\"\/termos-e-condicoes\") ||\r\n                path.includes(\"\/termos\");\r\n\r\n              const isRecruiter =\r\n                path.includes(\"\/wiw-recrutadores\") ||\r\n                path.includes(\"\/jobmaps-area-recrutador\") ||\r\n                path.includes(\"\/jobmaps-login-recrutador\") ||\r\n                path.includes(\"\/jobmaps-registo-recrutador\");\r\n\r\n              const isCandidate =\r\n                path.includes(\"\/jobmaps-candidatos\") ||\r\n                path.includes(\"\/jobmaps-registo-candidato\") ||\r\n                path.includes(\"\/jobmaps-login-candidato\") ||\r\n                path.includes(\"\/jobmaps-area-candidato\") ||\r\n                path.includes(\"\/jobmaps-candidatar-oferta\");\r\n\r\n              const isCompanyPublishing =\r\n                path.includes(\"\/planos-para-empresas-wiw\") ||\r\n                path.includes(\"\/jobmaps-publicar-oferta\");\r\n\r\n              const isCompanyArea =\r\n                path.includes(\"\/jobmaps-login\") ||\r\n                path.includes(\"\/jobmaps-registo-empresa\") ||\r\n                path.includes(\"\/jobmaps-area-empresa\") ||\r\n                path.includes(\"\/jobmaps-minhas-ofertas\") ||\r\n                path.includes(\"\/jobmaps-editar-oferta\") ||\r\n                path.includes(\"\/jobmaps-candidaturas-oferta\") ||\r\n                path.includes(\"\/jobmaps-ofertas-entidade\");\r\n\r\n              if (isLegal && legalLink && legalLink.style.display !== \"none\") {\r\n                legalLink.classList.add(\"jm-primary-link\");\r\n                return;\r\n              }\r\n\r\n              if (isRecruiter && recrutadorLink && recrutadorLink.style.display !== \"none\") {\r\n                recrutadorLink.classList.add(\"jm-primary-link\");\r\n                return;\r\n              }\r\n\r\n              if (isCandidate && trabalharLink && trabalharLink.style.display !== \"none\") {\r\n                trabalharLink.classList.add(\"jm-primary-link\");\r\n                return;\r\n              }\r\n\r\n              if (isCompanyPublishing) {\r\n                if (publicarLink && publicarLink.style.display !== \"none\") {\r\n                  publicarLink.classList.add(\"jm-primary-link\");\r\n                  return;\r\n                }\r\n\r\n                if (contratarLink && contratarLink.style.display !== \"none\") {\r\n                  contratarLink.classList.add(\"jm-primary-link\");\r\n                  return;\r\n                }\r\n              }\r\n\r\n              if (isCompanyArea && contratarLink && contratarLink.style.display !== \"none\") {\r\n                contratarLink.classList.add(\"jm-primary-link\");\r\n              }\r\n            }\r\n\r\n            function estadoNaoLogado(data) {\r\n              resetClasses();\r\n              resetVisibility();\r\n              applyCommonUrls(data || {});\r\n\r\n              setText(contratarLink, \"Quero contratar\");\r\n              setText(trabalharLink, \"Quero trabalhar\");\r\n              setText(recrutadorLink, \"Sou recrutador\");\r\n              setText(legalLink, \"Privacidade e Termos\");\r\n\r\n              applyCurrentPageHighlight();\r\n            }\r\n\r\n            function estadoEmpresaLogada(data) {\r\n              resetClasses();\r\n              resetVisibility();\r\n              applyCommonUrls(data);\r\n\r\n              setHref(contratarLink, data.area_url || urlsDefault.areaEmpresa);\r\n              setText(contratarLink, \"\u00c1rea da empresa\");\r\n\r\n              setHref(publicarLink, data.publicar_url || urlsDefault.planosEmpresa);\r\n              setText(publicarLink, \"Publicar oferta\");\r\n              publicarLink.classList.add(\"jm-primary-link\");\r\n              show(publicarLink);\r\n\r\n              hide(trabalharLink);\r\n\r\n              setText(recrutadorLink, \"Sou recrutador\");\r\n              setText(legalLink, \"Privacidade e Termos\");\r\n\r\n              applyAccount(\r\n                data,\r\n                data.empresa_titulo || data.display_name || \"Empresa\",\r\n                data.area_url || urlsDefault.areaEmpresa\r\n              );\r\n\r\n              applyCurrentPageHighlight();\r\n            }\r\n\r\n            function estadoCandidatoLogado(data) {\r\n              resetClasses();\r\n              resetVisibility();\r\n              applyCommonUrls(data);\r\n\r\n              hide(contratarLink);\r\n              hide(publicarLink);\r\n\r\n              setHref(trabalharLink, data.area_url || urlsDefault.areaCandidato);\r\n              setText(trabalharLink, \"\u00c1rea do candidato\");\r\n\r\n              setText(recrutadorLink, \"Sou recrutador\");\r\n              setText(legalLink, \"Privacidade e Termos\");\r\n\r\n              applyAccount(\r\n                data,\r\n                data.candidato_nome || data.display_name || \"Candidato\",\r\n                data.area_url || urlsDefault.areaCandidato\r\n              );\r\n\r\n              applyCurrentPageHighlight();\r\n            }\r\n\r\n            function estadoRecrutadorLogado(data) {\r\n              resetClasses();\r\n              resetVisibility();\r\n              applyCommonUrls(data);\r\n\r\n              setHref(contratarLink, data.empresa_login_url || urlsDefault.loginEmpresa);\r\n              setText(contratarLink, \"Quero contratar\");\r\n\r\n              hide(publicarLink);\r\n              hide(trabalharLink);\r\n\r\n              setHref(recrutadorLink, data.area_url || urlsDefault.areaRecrutador);\r\n              setText(recrutadorLink, \"\u00c1rea do recrutador\");\r\n\r\n              setText(legalLink, \"Privacidade e Termos\");\r\n\r\n              applyAccount(\r\n                data,\r\n                data.recrutador_nome || data.display_name || \"Recrutador\",\r\n                data.area_url || urlsDefault.areaRecrutador\r\n              );\r\n\r\n              applyCurrentPageHighlight();\r\n            }\r\n\r\n            bindLogout();\r\n\r\n            fetch(\"https:\/\/3solutions.pt\/wp-admin\/admin-ajax.php?action=jm5_header_me&t=\" + Date.now(), {\r\n              method: \"GET\",\r\n              credentials: \"same-origin\",\r\n              cache: \"no-store\"\r\n            })\r\n              .then(function(response) {\r\n                return response.json();\r\n              })\r\n              .then(function(data) {\r\n                if (!data || !data.logged_in) {\r\n                  estadoNaoLogado(data || {});\r\n                  return;\r\n                }\r\n\r\n                if (data.is_empresa) {\r\n                  estadoEmpresaLogada(data);\r\n                  return;\r\n                }\r\n\r\n                if (data.is_candidato) {\r\n                  estadoCandidatoLogado(data);\r\n                  return;\r\n                }\r\n\r\n                if (data.is_recrutador) {\r\n                  estadoRecrutadorLogado(data);\r\n                  return;\r\n                }\r\n\r\n                estadoNaoLogado(data);\r\n              })\r\n              .catch(function() {\r\n                estadoNaoLogado({});\r\n              });\r\n          }\r\n\r\n          if (document.readyState === \"loading\") {\r\n            document.addEventListener(\"DOMContentLoaded\", initWiwHeader);\r\n          } else {\r\n            initWiwHeader();\r\n          }\r\n        })();\r\n        <\/script>\r\n\r\n        <style>\r\n        .jm-site-header {\r\n          width: 100%;\r\n          padding: 0;\r\n          background: #ffffff;\r\n          box-sizing: border-box;\r\n          font-family: inherit;\r\n          position: relative;\r\n          z-index: 20;\r\n          border-bottom: 1px solid #e8ebf0;\r\n        }\r\n\r\n        .jm-site-header *,\r\n        .jm-site-header *::before,\r\n        .jm-site-header *::after {\r\n          box-sizing: border-box;\r\n        }\r\n\r\n        .jm-site-header-inner {\r\n          width: 100%;\r\n          margin: 0 auto;\r\n          padding: 4px 24px;\r\n          min-height: 66px;\r\n          background: #ffffff;\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: space-between;\r\n          gap: 18px;\r\n          overflow: visible;\r\n          position: relative;\r\n        }\r\n\r\n        .jm-site-brand {\r\n          display: inline-flex;\r\n          flex-direction: column;\r\n          align-items: flex-start;\r\n          justify-content: center;\r\n          text-decoration: none;\r\n          flex-shrink: 0;\r\n          min-width: 250px;\r\n          overflow: visible;\r\n        }\r\n\r\n        .jm-site-logo {\r\n          height: 52px;\r\n          display: inline-flex;\r\n          align-items: center;\r\n          justify-content: flex-start;\r\n          overflow: visible;\r\n        }\r\n\r\n        .jm-site-logo img {\r\n          height: 150px;\r\n          width: auto;\r\n          max-width: 285px;\r\n          display: block;\r\n          transform: scale(1.16);\r\n          transform-origin: left center;\r\n        }\r\n\r\n        .jm-site-tagline {\r\n          margin-top: -9px;\r\n          padding-left: 6px;\r\n          color: #587092;\r\n          font-size: 12px;\r\n          font-weight: 750;\r\n          line-height: 1.2;\r\n          letter-spacing: -0.1px;\r\n          white-space: nowrap;\r\n        }\r\n\r\n        .jm-site-nav {\r\n          display: flex;\r\n          align-items: center;\r\n          justify-content: flex-end;\r\n          gap: 16px;\r\n          flex-wrap: nowrap;\r\n        }\r\n\r\n        .jm-site-nav-link {\r\n          position: relative;\r\n          display: inline-flex;\r\n          align-items: center;\r\n          justify-content: center;\r\n          padding: 8px 0;\r\n          text-align: center;\r\n          text-decoration: none;\r\n          font-size: 12px;\r\n          font-weight: 650;\r\n          line-height: 1;\r\n          color: #405066;\r\n          background: transparent;\r\n          border: 0;\r\n          box-shadow: none;\r\n          transition: color 0.15s ease, opacity 0.15s ease;\r\n          white-space: nowrap;\r\n          opacity: 0.86;\r\n        }\r\n\r\n        .jm-site-nav-link::after {\r\n          content: \"\";\r\n          position: absolute;\r\n          left: 0;\r\n          right: 0;\r\n          bottom: -5px;\r\n          height: 2px;\r\n          border-radius: 999px;\r\n          background: #1556ff;\r\n          transform: scaleX(0);\r\n          transform-origin: center;\r\n          transition: transform 0.15s ease;\r\n        }\r\n\r\n        .jm-site-nav-link:hover {\r\n          color: #1556ff;\r\n          opacity: 1;\r\n        }\r\n\r\n        .jm-site-nav-link:hover::after {\r\n          transform: scaleX(1);\r\n        }\r\n\r\n        .jm-primary-link {\r\n          color: #1556ff;\r\n          font-weight: 750;\r\n          opacity: 0.95;\r\n        }\r\n\r\n        .jm-logged-link {\r\n          color: #15396f;\r\n          font-weight: 750;\r\n          opacity: 0.95;\r\n        }\r\n\r\n        .jm-legal-link {\r\n          color: #6b7d96;\r\n          font-size: 11.5px;\r\n        }\r\n\r\n        .jm-site-nav-link.jm-primary-link,\r\n        .jm-site-nav-link.jm-logged-link.jm-primary-link,\r\n        .jm-legal-link.jm-primary-link {\r\n          color: #1556ff;\r\n          font-weight: 750;\r\n          opacity: 1;\r\n        }\r\n\r\n        .jm-user-pill {\r\n          display: inline-flex;\r\n          align-items: center;\r\n          gap: 5px;\r\n          padding: 0;\r\n          color: #587092;\r\n          text-decoration: none;\r\n          font-size: 11.5px;\r\n          font-weight: 650;\r\n          white-space: nowrap;\r\n          max-width: 155px;\r\n          overflow: hidden;\r\n          text-overflow: ellipsis;\r\n          transition: color 0.15s ease;\r\n        }\r\n\r\n        .jm-user-pill:hover {\r\n          color: #1556ff;\r\n        }\r\n\r\n        .jm-user-icon {\r\n          font-size: 12px;\r\n          line-height: 1;\r\n          flex-shrink: 0;\r\n        }\r\n\r\n        #jm-user-name {\r\n          display: inline-block;\r\n          overflow: hidden;\r\n          text-overflow: ellipsis;\r\n          white-space: nowrap;\r\n        }\r\n\r\n        .jm-logout-link {\r\n          align-items: center;\r\n          justify-content: center;\r\n          color: #7d8da3;\r\n          text-decoration: none;\r\n          font-size: 11.5px;\r\n          font-weight: 750;\r\n          white-space: nowrap;\r\n        }\r\n\r\n        .jm-logout-link:hover {\r\n          color: #1556ff;\r\n        }\r\n\r\n        @media (max-width: 980px) {\r\n          .jm-site-header-inner {\r\n            padding: 5px 16px;\r\n            min-height: 64px;\r\n            gap: 14px;\r\n          }\r\n\r\n          .jm-site-brand {\r\n            min-width: 215px;\r\n          }\r\n\r\n          .jm-site-logo {\r\n            height: 50px;\r\n          }\r\n\r\n          .jm-site-logo img {\r\n            height: 135px;\r\n            max-width: 250px;\r\n            transform: scale(1.13);\r\n          }\r\n\r\n          .jm-site-tagline {\r\n            margin-top: -8px;\r\n            padding-left: 4px;\r\n            font-size: 11.5px;\r\n          }\r\n\r\n          .jm-site-nav {\r\n            gap: 12px;\r\n          }\r\n\r\n          .jm-site-nav-link {\r\n            font-size: 11.2px;\r\n            padding: 7px 0;\r\n          }\r\n\r\n          .jm-legal-link {\r\n            font-size: 10.8px;\r\n          }\r\n\r\n          .jm-user-pill {\r\n            font-size: 11px;\r\n            max-width: 115px;\r\n          }\r\n\r\n          .jm-logout-link {\r\n            font-size: 11px;\r\n          }\r\n        }\r\n\r\n        @media (max-width: 680px) {\r\n          .jm-site-header-inner {\r\n            padding: 8px 12px 13px;\r\n            min-height: auto;\r\n            flex-direction: column;\r\n            align-items: flex-start;\r\n            gap: 0;\r\n          }\r\n\r\n          .jm-site-brand {\r\n            width: 100%;\r\n            min-width: 0;\r\n            align-items: flex-start;\r\n            padding-right: 92px;\r\n          }\r\n\r\n          .jm-site-logo {\r\n            height: 70px;\r\n            width: 100%;\r\n            justify-content: flex-start;\r\n          }\r\n\r\n          .jm-site-logo img {\r\n            height: 156px;\r\n            max-width: 292px;\r\n            transform: scale(1.18);\r\n          }\r\n\r\n          .jm-site-tagline {\r\n            margin-top: -5px;\r\n            padding-left: 3px;\r\n            margin-bottom: 13px;\r\n            font-size: 12px;\r\n            text-align: left;\r\n            white-space: normal;\r\n            max-width: 100%;\r\n            line-height: 1.25;\r\n          }\r\n\r\n          .jm-site-nav {\r\n            width: 100%;\r\n            justify-content: center;\r\n            gap: 10px 14px;\r\n            flex-wrap: wrap;\r\n            padding-top: 6px;\r\n          }\r\n\r\n          .jm-site-nav-link {\r\n            font-size: 12px;\r\n            font-weight: 650;\r\n            padding: 5px 0;\r\n          }\r\n\r\n          .jm-legal-link {\r\n            font-size: 11.5px;\r\n            width: 100%;\r\n            order: 8;\r\n            opacity: 0.74;\r\n          }\r\n\r\n          .jm-site-nav-link::after {\r\n            bottom: -3px;\r\n          }\r\n\r\n          .jm-user-pill {\r\n            position: absolute;\r\n            top: 12px;\r\n            right: 44px;\r\n            font-size: 11px;\r\n            max-width: 92px;\r\n            justify-content: flex-end;\r\n          }\r\n\r\n          .jm-logout-link {\r\n            position: absolute;\r\n            top: 12px;\r\n            right: 12px;\r\n            font-size: 11px;\r\n          }\r\n        }\r\n\r\n        @media (max-width: 420px) {\r\n          .jm-site-header-inner {\r\n            padding: 8px 10px 12px;\r\n          }\r\n\r\n          .jm-site-brand {\r\n            padding-right: 82px;\r\n          }\r\n\r\n          .jm-site-logo {\r\n            height: 64px;\r\n          }\r\n\r\n          .jm-site-logo img {\r\n            height: 138px;\r\n            max-width: 255px;\r\n            transform: scale(1.13);\r\n          }\r\n\r\n          .jm-site-tagline {\r\n            margin-top: -3px;\r\n            margin-bottom: 12px;\r\n            padding-left: 2px;\r\n            font-size: 11.2px;\r\n          }\r\n\r\n          .jm-site-nav {\r\n            gap: 9px 11px;\r\n          }\r\n\r\n          .jm-site-nav-link {\r\n            font-size: 11.4px;\r\n            padding: 4px 0;\r\n          }\r\n\r\n          .jm-user-pill {\r\n            top: 11px;\r\n            right: 42px;\r\n            font-size: 10.5px;\r\n            max-width: 78px;\r\n          }\r\n\r\n          .jm-logout-link {\r\n            top: 11px;\r\n            right: 10px;\r\n            font-size: 10.5px;\r\n          }\r\n        }\r\n        <\/style>\r\n        \t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4e2d5d4c elementor-widget elementor-widget-html\" data-id=\"4e2d5d4c\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!-- WIW \u2014 \u00c1rea do candidato \u2014 apresenta\u00e7\u00e3o V4: faixa lateral vertical de oportunidades -->\n<section class=\"jm-candidate-area-page\">\n  <div class=\"jm-candidate-area-shell\">\n\n    <div id=\"jm-candidate-area-loading\" class=\"jm-candidate-area-message\">\n      A carregar a sua \u00e1rea de candidato...\n    <\/div>\n\n    <div id=\"jm-candidate-area-error\" class=\"jm-candidate-area-message error\" style=\"display:none;\"><\/div>\n\n    <div id=\"jm-candidate-area-content\" style=\"display:none;\">\n\n      <div class=\"jm-candidate-area-hero\">\n        <div>\n          <span class=\"jm-candidate-area-badge\">\u00c1rea do Candidato WIW<\/span>\n          <h1 id=\"jm-candidate-welcome\">A sua \u00e1rea de candidato<\/h1>\n          <p>\n            Consulte o seu perfil, confirme os seus dados principais e acompanhe as candidaturas enviadas.\n          <\/p>\n          <strong id=\"jm-candidate-privacy-note\">Perfil privado nesta fase.<\/strong>\n        <\/div>\n\n        <div class=\"jm-candidate-area-actions\">\n          <a class=\"jm-main-btn\" href=\"\/jobmaps-o-mapa-do-trabalho-local\/\">Ver ofertas no mapa<\/a>\n          <a class=\"jm-soft-btn\" href=\"\/jobmaps-editar-candidato\/\">Editar perfil<\/a>\n        <\/div>\n      <\/div>\n\n      <div class=\"jm-candidate-dashboard\">\n\n        <article class=\"jm-profile-card\">\n          <h2>Dados principais<\/h2>\n\n          <div class=\"jm-profile-grid\">\n            <div>\n              <span>Nome<\/span>\n              <strong id=\"jm-candidate-name\">\u2014<\/strong>\n            <\/div>\n            <div>\n              <span>Email<\/span>\n              <strong id=\"jm-candidate-email\">\u2014<\/strong>\n            <\/div>\n            <div>\n              <span>Telefone<\/span>\n              <strong id=\"jm-candidate-phone\">\u2014<\/strong>\n            <\/div>\n            <div>\n              <span>Localiza\u00e7\u00e3o<\/span>\n              <strong id=\"jm-candidate-location\">\u2014<\/strong>\n            <\/div>\n            <div>\n              <span>\u00c1rea principal<\/span>\n              <strong id=\"jm-candidate-area\">\u2014<\/strong>\n            <\/div>\n            <div>\n              <span>Disponibilidade<\/span>\n              <strong id=\"jm-candidate-availability\">\u2014<\/strong>\n            <\/div>\n          <\/div>\n        <\/article>\n\n        <article class=\"jm-profile-card\">\n          <h2>Resumo profissional<\/h2>\n          <p id=\"jm-candidate-summary\">\u2014<\/p>\n\n          <div class=\"jm-chip-row\" id=\"jm-candidate-chips\"><\/div>\n        <\/article>\n\n        <article class=\"jm-profile-card jm-profile-card-wide jm-opportunities-card\">\n          <div class=\"jm-section-title-row\">\n            <div>\n              <h2>Mais ofertas para si<\/h2>\n            <\/div>\n            <strong id=\"jm-total-recommendations\">0<\/strong>\n          <\/div>\n\n          <div id=\"jm-candidate-recommendations-empty\" class=\"jm-empty-state\">\n            Ainda n\u00e3o existem oportunidades dispon\u00edveis.\n          <\/div>\n\n          <div class=\"jm-recommendations-carousel\" id=\"jm-candidate-recommendations-wrap\" style=\"display:none;\">\n            <div id=\"jm-candidate-recommendations-list\" class=\"jm-recommendations-list\" aria-label=\"Lista de oportunidades recomendadas\"><\/div>\n          <\/div>\n        <\/article>\n\n        <article class=\"jm-profile-card\">\n          <h2>CV e autoriza\u00e7\u00f5es<\/h2>\n\n          <div id=\"jm-candidate-cv-box\" class=\"jm-cv-box\">\n            <span>CV ainda n\u00e3o carregado<\/span>\n          <\/div>\n\n          <div class=\"jm-permission-list\">\n            <div>\n              <span>Guardar perfil para oportunidades futuras<\/span>\n              <strong id=\"jm-permission-future\">\u2014<\/strong>\n            <\/div>\n            <div>\n              <span>Contacto futuro sobre perfil vis\u00edvel<\/span>\n              <strong id=\"jm-permission-visible\">\u2014<\/strong>\n            <\/div>\n          <\/div>\n        <\/article>\n\n\n        <article class=\"jm-profile-card jm-profile-card-wide jm-references-card\">\n          <div class=\"jm-section-title-row\">\n            <div>\n              <h2>Refer\u00eancias profissionais<\/h2>\n              <p>Pe\u00e7a uma refer\u00eancia a uma antiga chefia, respons\u00e1vel ou pessoa que conhe\u00e7a diretamente o seu trabalho.<\/p>\n            <\/div>\n            <strong id=\"jm-total-references\">0<\/strong>\n          <\/div>\n\n          <div class=\"jm-reference-intro\">\n            <div>\n              <h3>Valorize o seu percurso profissional<\/h3>\n              <p>\n                Crie um link privado e partilhe-o com quem possa dar uma refer\u00eancia verdadeira sobre o seu desempenho.\n                Nada ser\u00e1 publicado sem a sua aprova\u00e7\u00e3o.\n              <\/p>\n            <\/div>\n            <button type=\"button\" id=\"jm-create-reference-link\" class=\"jm-main-btn jm-reference-create-btn\">\n              Criar link de refer\u00eancia\n            <\/button>\n          <\/div>\n\n          <div id=\"jm-reference-feedback\" class=\"jm-reference-feedback\" style=\"display:none;\"><\/div>\n\n          <div id=\"jm-reference-link-box\" class=\"jm-reference-link-box\" style=\"display:none;\">\n            <div>\n              <span>Link criado \u2014 v\u00e1lido durante 30 dias<\/span>\n              <strong id=\"jm-reference-link-text\">\u2014<\/strong>\n            <\/div>\n            <button type=\"button\" id=\"jm-copy-reference-link\" class=\"jm-soft-btn\">\n              Copiar link\n            <\/button>\n          <\/div>\n\n          <div class=\"jm-reference-visibility\">\n            <div>\n              <strong>Mostrar refer\u00eancias aprovadas no meu perfil<\/strong>\n              <span>Pode alterar esta op\u00e7\u00e3o a qualquer momento.<\/span>\n            <\/div>\n            <label class=\"jm-reference-switch\">\n              <input type=\"checkbox\" id=\"jm-reference-visibility-toggle\">\n              <span aria-hidden=\"true\"><\/span>\n            <\/label>\n          <\/div>\n\n          <div id=\"jm-references-empty\" class=\"jm-empty-state\">\n            Ainda n\u00e3o tem pedidos ou refer\u00eancias profissionais.\n          <\/div>\n\n          <div id=\"jm-references-list\" class=\"jm-references-list\"><\/div>\n        <\/article>\n\n        <article class=\"jm-profile-card jm-profile-card-wide\">\n          <div class=\"jm-section-title-row\">\n            <div>\n              <h2>As suas candidaturas<\/h2>\n              <p>Quando responder a ofertas, o hist\u00f3rico aparecer\u00e1 aqui.<\/p>\n            <\/div>\n            <strong id=\"jm-total-candidaturas\">0<\/strong>\n          <\/div>\n\n          <div id=\"jm-candidate-applications-empty\" class=\"jm-empty-state\">\n            Ainda n\u00e3o enviou candidaturas.\n          <\/div>\n\n          <div id=\"jm-candidate-applications-list\" class=\"jm-applications-list\"><\/div>\n        <\/article>\n\n      <\/div>\n\n    <\/div>\n\n  <\/div>\n<\/section>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", async function () {\n  const loading = document.getElementById(\"jm-candidate-area-loading\");\n  const errorBox = document.getElementById(\"jm-candidate-area-error\");\n  const content = document.getElementById(\"jm-candidate-area-content\");\n\n  function showError(message) {\n    if (loading) loading.style.display = \"none\";\n    if (content) content.style.display = \"none\";\n    if (errorBox) {\n      errorBox.textContent = message;\n      errorBox.style.display = \"block\";\n    }\n  }\n\n  function clean(value, fallback = \"\u2014\") {\n    return value && String(value).trim() !== \"\" ? String(value).trim() : fallback;\n  }\n\n  function yesNo(value) {\n    return value === \"sim\" ? \"Sim\" : \"N\u00e3o\";\n  }\n\n  function escapeHtml(value) {\n    return String(value || \"\").replace(\/[&<>\"']\/g, function(match) {\n      return {\n        \"&\": \"&amp;\",\n        \"<\": \"&lt;\",\n        \">\": \"&gt;\",\n        \"\\\"\": \"&quot;\",\n        \"'\": \"&#039;\"\n      }[match];\n    });\n  }\n\n  function setText(id, value, fallback = \"\u2014\") {\n    const el = document.getElementById(id);\n    if (el) el.textContent = clean(value, fallback);\n  }\n\n\n  let jmReferenceNonce = \"\";\n\n  function showReferenceFeedback(message, type) {\n    const box = document.getElementById(\"jm-reference-feedback\");\n    if (!box) return;\n\n    box.textContent = message || \"\";\n    box.className = \"jm-reference-feedback \" + (type === \"error\" ? \"error\" : \"success\");\n    box.style.display = message ? \"block\" : \"none\";\n  }\n\n  async function referenceRequest(action, values) {\n    const body = new URLSearchParams();\n    body.append(\"action\", action);\n\n    Object.keys(values || {}).forEach(function(key) {\n      body.append(key, values[key]);\n    });\n\n    const response = await fetch(\"\/wp-admin\/admin-ajax.php\", {\n      method: \"POST\",\n      credentials: \"same-origin\",\n      cache: \"no-store\",\n      headers: {\n        \"Content-Type\": \"application\/x-www-form-urlencoded; charset=UTF-8\"\n      },\n      body: body.toString()\n    });\n\n    return response.json();\n  }\n\n  function referenceStateLabel(state) {\n    const labels = {\n      pedido: \"A aguardar resposta\",\n      pendente_candidato: \"A aguardar a sua decis\u00e3o\",\n      aprovada: \"Aprovada\",\n      rejeitada: \"Rejeitada\",\n      expirada: \"Expirada\"\n    };\n\n    return labels[state] || \"Pedido criado\";\n  }\n\n  function referenceAnswerLabel(value) {\n    const labels = {\n      sim: \"Sim\",\n      nao: \"N\u00e3o\",\n      com_reservas: \"Com reservas\",\n      sem_informacao: \"Sem informa\u00e7\u00e3o suficiente\"\n    };\n\n    return labels[value] || \"\u2014\";\n  }\n\n  function referenceExitLabel(value) {\n    const labels = {\n      fim_contrato: \"Fim do contrato\",\n      decisao_profissional: \"Decis\u00e3o do profissional\",\n      decisao_entidade: \"Decis\u00e3o da entidade\",\n      acordo_partes: \"Acordo entre ambas as partes\",\n      reestruturacao: \"Reestrutura\u00e7\u00e3o ou extin\u00e7\u00e3o da fun\u00e7\u00e3o\",\n      motivos_pessoais: \"Motivos pessoais\",\n      evolucao_profissional: \"Evolu\u00e7\u00e3o profissional\",\n      outro: \"Outro motivo\",\n      prefiro_nao_indicar: \"Prefere n\u00e3o indicar\"\n    };\n\n    return labels[value] || \"\u2014\";\n  }\n\n  function referenceSentenceLabel(value) {\n    const labels = {\n      pontual_cumpridor: \"Foi pontual e cumpridor.\",\n      boa_atitude: \"Demonstrou boa atitude profissional.\",\n      boa_relacao: \"Teve boa rela\u00e7\u00e3o com clientes e colegas.\",\n      aprendeu_rapidamente: \"Aprendeu rapidamente.\",\n      trabalho_equipa: \"Trabalhou bem em equipa.\",\n      responsabilidade: \"Demonstrou responsabilidade.\",\n      recomendo_funcoes_semelhantes: \"Recomenda para fun\u00e7\u00f5es semelhantes.\"\n    };\n\n    return labels[value] || \"\";\n  }\n\n  function renderReferences(data) {\n    const items = data.referencias || [];\n    const total = document.getElementById(\"jm-total-references\");\n    const empty = document.getElementById(\"jm-references-empty\");\n    const list = document.getElementById(\"jm-references-list\");\n    const toggle = document.getElementById(\"jm-reference-visibility-toggle\");\n\n    if (total) total.textContent = String(items.length);\n    if (toggle) toggle.checked = data.mostrar_no_perfil === \"sim\";\n    if (!list) return;\n\n    list.innerHTML = \"\";\n\n    if (!items.length) {\n      if (empty) empty.style.display = \"block\";\n      return;\n    }\n\n    if (empty) empty.style.display = \"none\";\n\n    items.forEach(function(item) {\n      const card = document.createElement(\"article\");\n      card.className = \"jm-reference-card\";\n\n      const sentences = Array.isArray(item.frases_selecionadas)\n        ? item.frases_selecionadas.map(referenceSentenceLabel).filter(Boolean)\n        : [];\n\n      const isPending = item.estado === \"pendente_candidato\";\n      const canDelete = [\"pedido\", \"pendente_candidato\", \"aprovada\", \"rejeitada\", \"expirada\"].includes(item.estado);\n\n      card.innerHTML = `\n        <div class=\"jm-reference-card-head\">\n          <div>\n            <span class=\"jm-reference-status status-${escapeHtml(item.estado || \"pedido\")}\">${escapeHtml(referenceStateLabel(item.estado))}<\/span>\n            <h3>${escapeHtml(clean(item.empregador_nome, \"Pedido de refer\u00eancia\"))}<\/h3>\n            <p>${escapeHtml([item.empregador_cargo, item.empregador_entidade].filter(Boolean).join(\" \u00b7 \") || \"Link ainda n\u00e3o preenchido\")}<\/p>\n          <\/div>\n          <span class=\"jm-reference-date\">${escapeHtml(clean(item.data_submissao || item.data_pedido, \"\"))}<\/span>\n        <\/div>\n\n        ${item.relacao_profissional ? `<div class=\"jm-reference-detail\"><span>Rela\u00e7\u00e3o profissional<\/span><strong>${escapeHtml(item.relacao_profissional)}<\/strong><\/div>` : \"\"}\n        ${item.motivo_saida ? `<div class=\"jm-reference-detail\"><span>Motivo da sa\u00edda<\/span><strong>${escapeHtml(referenceExitLabel(item.motivo_saida))}<\/strong><\/div>` : \"\"}\n        ${item.motivo_saida_contexto ? `<div class=\"jm-reference-text\"><span>Contextualiza\u00e7\u00e3o<\/span><p>${escapeHtml(item.motivo_saida_contexto)}<\/p><\/div>` : \"\"}\n        ${sentences.length ? `<div class=\"jm-reference-tags\">${sentences.map(function(sentence) { return `<span>${escapeHtml(sentence)}<\/span>`; }).join(\"\")}<\/div>` : \"\"}\n        ${item.observacoes ? `<div class=\"jm-reference-text\"><span>Observa\u00e7\u00f5es profissionais<\/span><p>${escapeHtml(item.observacoes)}<\/p><\/div>` : \"\"}\n        ${item.voltaria_contratar ? `<div class=\"jm-reference-summary\"><div><span>Voltaria a contratar?<\/span><strong>${escapeHtml(referenceAnswerLabel(item.voltaria_contratar))}<\/strong><\/div><div><span>Recomenda?<\/span><strong>${escapeHtml(referenceAnswerLabel(item.recomenda))}<\/strong><\/div><\/div>` : \"\"}\n\n        <div class=\"jm-reference-actions\">\n          ${item.estado === \"pedido\" && item.url ? `<button type=\"button\" class=\"jm-soft-btn jm-copy-existing-reference\" data-url=\"${escapeHtml(item.url)}\">Copiar link<\/button>` : \"\"}\n          ${item.estado === \"pedido\" && !item.url ? `<button type=\"button\" class=\"jm-soft-btn jm-reference-regenerate\" data-id=\"${item.id}\">Gerar novo link<\/button>` : \"\"}\n          ${item.estado === \"expirada\" ? `<button type=\"button\" class=\"jm-soft-btn jm-reference-regenerate\" data-id=\"${item.id}\">Gerar novo link<\/button>` : \"\"}\n          ${isPending ? `<button type=\"button\" class=\"jm-main-btn jm-reference-action\" data-action=\"jm_ref_aprovar\" data-id=\"${item.id}\">Aprovar<\/button>` : \"\"}\n          ${isPending ? `<button type=\"button\" class=\"jm-soft-btn jm-reference-action\" data-action=\"jm_ref_rejeitar\" data-id=\"${item.id}\">Rejeitar<\/button>` : \"\"}\n          ${canDelete ? `<button type=\"button\" class=\"jm-reference-delete jm-reference-action\" data-action=\"jm_ref_eliminar\" data-id=\"${item.id}\">Eliminar<\/button>` : \"\"}\n        <\/div>\n      `;\n\n      list.appendChild(card);\n    });\n  }\n\n  async function loadReferences() {\n    if (!jmReferenceNonce) return;\n\n    const result = await referenceRequest(\"jm_ref_listar_candidato\", {\n      nonce: jmReferenceNonce\n    });\n\n    if (!result || !result.success) {\n      throw new Error(\n        result && result.data && result.data.message\n          ? result.data.message\n          : \"N\u00e3o foi poss\u00edvel carregar as refer\u00eancias profissionais.\"\n      );\n    }\n\n    renderReferences(result.data || {});\n  }\n\n  async function initReferences() {\n    const nonceResult = await referenceRequest(\"jm_ref_nonce\", {});\n\n    if (!nonceResult || !nonceResult.success || !nonceResult.data || !nonceResult.data.nonce) {\n      throw new Error(\"N\u00e3o foi poss\u00edvel iniciar a \u00e1rea de refer\u00eancias profissionais.\");\n    }\n\n    jmReferenceNonce = nonceResult.data.nonce;\n    await loadReferences();\n  }\n\n  function renderCandidate(data) {\n    const c = data.candidato || {};\n\n    setText(\"jm-candidate-welcome\", c.nome ? \"Ol\u00e1, \" + c.nome : \"A sua \u00e1rea de candidato\");\n    setText(\"jm-candidate-name\", c.nome);\n    setText(\"jm-candidate-email\", c.email);\n    setText(\"jm-candidate-phone\", c.telefone);\n    setText(\"jm-candidate-location\", [c.localidade, c.concelho].filter(Boolean).join(\", \"));\n    setText(\"jm-candidate-area\", c.area_profissional);\n    setText(\"jm-candidate-availability\", c.disponibilidade);\n    setText(\"jm-candidate-summary\", c.resumo || c.experiencia || \"Ainda n\u00e3o adicionou um resumo profissional.\");\n    setText(\"jm-permission-future\", yesNo(c.guardar_futuras));\n    setText(\"jm-permission-visible\", yesNo(c.perfil_visivel_futuro));\n\n    const chips = document.getElementById(\"jm-candidate-chips\");\n    if (chips) {\n      const values = [\n        c.ultima_funcao ? \"\u00daltima fun\u00e7\u00e3o: \" + c.ultima_funcao : \"\",\n        c.salario_pretendido ? \"Sal\u00e1rio: \" + c.salario_pretendido : \"\",\n        c.carta_conducao ? \"Carta: \" + c.carta_conducao : \"\",\n        c.transporte_proprio ? \"Transporte: \" + c.transporte_proprio : \"\",\n        c.disponibilidade_turnos ? \"Turnos\/fins de semana: \" + c.disponibilidade_turnos : \"\"\n      ].filter(Boolean);\n\n      chips.innerHTML = values.length\n        ? values.map(function(v) { return \"<span>\" + escapeHtml(v) + \"<\/span>\"; }).join(\"\")\n        : \"<span>Perfil ainda incompleto<\/span>\";\n    }\n\n    const cvBox = document.getElementById(\"jm-candidate-cv-box\");\n    if (cvBox) {\n      if (c.cv_url) {\n        cvBox.innerHTML = '<a href=\"' + c.cv_url + '\" target=\"_blank\" rel=\"noopener\">Abrir CV carregado<\/a>';\n      } else {\n        cvBox.innerHTML = \"<span>CV ainda n\u00e3o carregado<\/span>\";\n      }\n    }\n\n    renderRecommendations(data.recomendacoes || []);\n    renderApplications(data.candidaturas || []);\n  }\n\n  function formatSalary(value) {\n    if (value === null || typeof value === \"undefined\" || value === \"\" || isNaN(Number(value))) {\n      return \"\";\n    }\n\n    return Number(value).toLocaleString(\"pt-PT\") + \"\u20ac\";\n  }\n\n  function formatDistance(value) {\n    if (value === null || typeof value === \"undefined\" || value === \"\" || isNaN(Number(value))) {\n      return \"\";\n    }\n\n    const number = Number(value);\n\n    if (number < 1) {\n      return \"< 1 km\";\n    }\n\n    return Math.round(number) + \" km\";\n  }\n\n  function recommendationLabel(item) {\n    if (item && item.plano === \"recomendacao\") {\n      return \"Recomenda\u00e7\u00e3o relevante\";\n    }\n\n    if (item && item.plano === \"destaque\") {\n      return \"Destaque local\";\n    }\n\n    return \"Oportunidade dispon\u00edvel\";\n  }\n\n  function renderRecommendations(items) {\n    const total = document.getElementById(\"jm-total-recommendations\");\n    const empty = document.getElementById(\"jm-candidate-recommendations-empty\");\n    const wrap = document.getElementById(\"jm-candidate-recommendations-wrap\");\n    const list = document.getElementById(\"jm-candidate-recommendations-list\");\n\n    if (total) total.textContent = String(items.length || 0);\n    if (!list) return;\n\n    list.innerHTML = \"\";\n\n    if (!items.length) {\n      if (empty) empty.style.display = \"block\";\n      if (wrap) wrap.style.display = \"none\";\n      return;\n    }\n\n    if (empty) empty.style.display = \"none\";\n    if (wrap) wrap.style.display = \"block\";\n\n    items.forEach(function(item) {\n      const card = document.createElement(\"article\");\n      card.className = \"jm-recommendation-card\";\n\n      const salary = formatSalary(item.salario);\n      const distance = formatDistance(item.distancia_km);\n      const metaParts = [\n        item.localidade ? escapeHtml(item.localidade) : \"\",\n        salary ? escapeHtml(salary) : \"\",\n        distance ? escapeHtml(distance) : \"\"\n      ].filter(Boolean);\n\n      card.innerHTML = `\n        <span class=\"jm-recommendation-badge\">${escapeHtml(recommendationLabel(item))}<\/span>\n        <h3>${escapeHtml(clean(item.funcao, \"Oferta de emprego\"))}<\/h3>\n        <p>${escapeHtml(clean(item.empresa, \"Entidade WIW\"))}<\/p>\n        <div class=\"jm-recommendation-meta\">${metaParts.map(function(v) { return \"<span>\" + v + \"<\/span>\"; }).join(\"\")}<\/div>\n        <a href=\"${item.url_oferta || \"#\"}\">Ver oferta<\/a>\n      `;\n\n      list.appendChild(card);\n    });\n\n    setupVerticalRecommendations();\n  }\n\n  function setupVerticalRecommendations() {\n    const list = document.getElementById(\"jm-candidate-recommendations-list\");\n    const wrap = document.getElementById(\"jm-candidate-recommendations-wrap\");\n\n    if (!list || !wrap) return;\n\n    list.scrollTop = 0;\n\n    if (wrap.dataset.verticalBound === \"1\") {\n      return;\n    }\n\n    wrap.dataset.verticalBound = \"1\";\n\n    list.addEventListener(\"wheel\", function(event) {\n      const canScroll = list.scrollHeight > list.clientHeight + 4;\n\n      if (!canScroll) return;\n\n      const atTop = list.scrollTop <= 0;\n      const atBottom = list.scrollTop + list.clientHeight >= list.scrollHeight - 2;\n\n      if ((event.deltaY < 0 && atTop) || (event.deltaY > 0 && atBottom)) {\n        return;\n      }\n\n      event.stopPropagation();\n    }, { passive: true });\n  }\n\n\n  function renderApplications(items) {\n    const total = document.getElementById(\"jm-total-candidaturas\");\n    const empty = document.getElementById(\"jm-candidate-applications-empty\");\n    const list = document.getElementById(\"jm-candidate-applications-list\");\n\n    if (total) total.textContent = String(items.length || 0);\n\n    if (!list) return;\n\n    list.innerHTML = \"\";\n\n    if (!items.length) {\n      if (empty) empty.style.display = \"block\";\n      return;\n    }\n\n    if (empty) empty.style.display = \"none\";\n\n    items.forEach(function(item) {\n      const card = document.createElement(\"article\");\n      card.className = \"jm-application-card\";\n\n      card.innerHTML = `\n        <div>\n          <span>${escapeHtml(clean(item.data, \"Sem data\"))}<\/span>\n          <h3>${escapeHtml(clean(item.oferta_titulo, \"Oferta\"))}<\/h3>\n          <p>${escapeHtml(clean(item.empresa_nome, \"Entidade WIW\"))}<\/p>\n        <\/div>\n        <strong>${escapeHtml(clean(item.estado_label, \"Enviada\"))}<\/strong>\n        <a href=\"${item.oferta_url || \"#\"}\">Ver oferta<\/a>\n      `;\n\n      list.appendChild(card);\n    });\n  }\n\n\n  const createReferenceButton = document.getElementById(\"jm-create-reference-link\");\n  const copyReferenceButton = document.getElementById(\"jm-copy-reference-link\");\n  const referenceList = document.getElementById(\"jm-references-list\");\n  const visibilityToggle = document.getElementById(\"jm-reference-visibility-toggle\");\n\n  if (createReferenceButton) {\n    createReferenceButton.addEventListener(\"click\", async function() {\n      if (!jmReferenceNonce) return;\n\n      createReferenceButton.disabled = true;\n      createReferenceButton.textContent = \"A criar link...\";\n      showReferenceFeedback(\"\", \"success\");\n\n      try {\n        const result = await referenceRequest(\"jm_ref_criar_pedido\", {\n          nonce: jmReferenceNonce\n        });\n\n        if (!result || !result.success) {\n          throw new Error(\n            result && result.data && result.data.message\n              ? result.data.message\n              : \"N\u00e3o foi poss\u00edvel criar o link.\"\n          );\n        }\n\n        const box = document.getElementById(\"jm-reference-link-box\");\n        const text = document.getElementById(\"jm-reference-link-text\");\n\n        if (text) text.textContent = result.data.url || \"\";\n        if (box) box.style.display = \"flex\";\n\n        showReferenceFeedback(\"Link criado com sucesso. Partilhe-o apenas com a pessoa que ir\u00e1 dar a refer\u00eancia.\", \"success\");\n        await loadReferences();\n\n      } catch (error) {\n        showReferenceFeedback(error.message || \"N\u00e3o foi poss\u00edvel criar o link.\", \"error\");\n      } finally {\n        createReferenceButton.disabled = false;\n        createReferenceButton.textContent = \"Criar link de refer\u00eancia\";\n      }\n    });\n  }\n\n  if (copyReferenceButton) {\n    copyReferenceButton.addEventListener(\"click\", async function() {\n      const text = document.getElementById(\"jm-reference-link-text\");\n      const value = text ? text.textContent.trim() : \"\";\n\n      if (!value || value === \"\u2014\") return;\n\n      try {\n        await navigator.clipboard.writeText(value);\n        copyReferenceButton.textContent = \"Link copiado\";\n        setTimeout(function() {\n          copyReferenceButton.textContent = \"Copiar link\";\n        }, 1800);\n      } catch (error) {\n        window.prompt(\"Copie este link:\", value);\n      }\n    });\n  }\n\n  if (referenceList) {\n    referenceList.addEventListener(\"click\", async function(event) {\n      const copyButton = event.target.closest(\".jm-copy-existing-reference\");\n\n      if (copyButton) {\n        const value = copyButton.dataset.url || \"\";\n\n        try {\n          await navigator.clipboard.writeText(value);\n          copyButton.textContent = \"Link copiado\";\n          setTimeout(function() {\n            copyButton.textContent = \"Copiar link\";\n          }, 1800);\n        } catch (error) {\n          window.prompt(\"Copie este link:\", value);\n        }\n        return;\n      }\n\n      const regenerateButton = event.target.closest(\".jm-reference-regenerate\");\n\n      if (regenerateButton) {\n        if (!jmReferenceNonce) return;\n\n        const referenceId = regenerateButton.dataset.id || \"\";\n        regenerateButton.disabled = true;\n        regenerateButton.textContent = \"A gerar novo link...\";\n\n        try {\n          const result = await referenceRequest(\"jm_ref_renovar_link\", {\n            nonce: jmReferenceNonce,\n            referencia_id: referenceId\n          });\n\n          if (!result || !result.success) {\n            throw new Error(\n              result && result.data && result.data.message\n                ? result.data.message\n                : \"N\u00e3o foi poss\u00edvel gerar um novo link.\"\n            );\n          }\n\n          const newUrl = result.data && result.data.url ? result.data.url : \"\";\n\n          if (newUrl) {\n            try {\n              await navigator.clipboard.writeText(newUrl);\n              showReferenceFeedback(\n                \"Novo link criado e copiado. J\u00e1 pode voltar a envi\u00e1-lo ao avaliador.\",\n                \"success\"\n              );\n            } catch (copyError) {\n              window.prompt(\"Copie este novo link:\", newUrl);\n              showReferenceFeedback(\n                \"Novo link criado com sucesso.\",\n                \"success\"\n              );\n            }\n          } else {\n            showReferenceFeedback(\n              \"Novo link criado com sucesso.\",\n              \"success\"\n            );\n          }\n\n          await loadReferences();\n\n        } catch (error) {\n          showReferenceFeedback(\n            error.message || \"N\u00e3o foi poss\u00edvel gerar um novo link.\",\n            \"error\"\n          );\n          regenerateButton.disabled = false;\n          regenerateButton.textContent = \"Gerar novo link\";\n        }\n\n        return;\n      }\n\n      const actionButton = event.target.closest(\".jm-reference-action\");\n      if (!actionButton || !jmReferenceNonce) return;\n\n      const action = actionButton.dataset.action || \"\";\n      const referenceId = actionButton.dataset.id || \"\";\n\n      if (action === \"jm_ref_eliminar\") {\n        const confirmed = window.confirm(\"Pretende eliminar definitivamente esta refer\u00eancia profissional?\");\n        if (!confirmed) return;\n      }\n\n      actionButton.disabled = true;\n\n      try {\n        const result = await referenceRequest(action, {\n          nonce: jmReferenceNonce,\n          referencia_id: referenceId\n        });\n\n        if (!result || !result.success) {\n          throw new Error(\n            result && result.data && result.data.message\n              ? result.data.message\n              : \"N\u00e3o foi poss\u00edvel concluir esta a\u00e7\u00e3o.\"\n          );\n        }\n\n        showReferenceFeedback(result.data.message || \"A\u00e7\u00e3o conclu\u00edda.\", \"success\");\n        await loadReferences();\n\n      } catch (error) {\n        showReferenceFeedback(error.message || \"N\u00e3o foi poss\u00edvel concluir esta a\u00e7\u00e3o.\", \"error\");\n        actionButton.disabled = false;\n      }\n    });\n  }\n\n  if (visibilityToggle) {\n    visibilityToggle.addEventListener(\"change\", async function() {\n      if (!jmReferenceNonce) return;\n\n      visibilityToggle.disabled = true;\n\n      try {\n        const result = await referenceRequest(\"jm_ref_toggle_visibilidade\", {\n          nonce: jmReferenceNonce,\n          mostrar: visibilityToggle.checked ? \"sim\" : \"nao\"\n        });\n\n        if (!result || !result.success) {\n          throw new Error(\n            result && result.data && result.data.message\n              ? result.data.message\n              : \"N\u00e3o foi poss\u00edvel alterar a visibilidade.\"\n          );\n        }\n\n        showReferenceFeedback(result.data.message || \"Visibilidade atualizada.\", \"success\");\n\n      } catch (error) {\n        visibilityToggle.checked = !visibilityToggle.checked;\n        showReferenceFeedback(error.message || \"N\u00e3o foi poss\u00edvel alterar a visibilidade.\", \"error\");\n      } finally {\n        visibilityToggle.disabled = false;\n      }\n    });\n  }\n\n  try {\n    const response = await fetch(\"\/wp-admin\/admin-ajax.php?action=jm5_area_candidato&t=\" + Date.now(), {\n      method: \"GET\",\n      credentials: \"same-origin\",\n      cache: \"no-store\"\n    });\n\n    const data = await response.json();\n\n    if (!data || !data.success) {\n      showError(data && data.message ? data.message : \"N\u00e3o foi poss\u00edvel carregar a \u00e1rea do candidato.\");\n      return;\n    }\n\n    renderCandidate(data);\n\n    if (loading) loading.style.display = \"none\";\n    if (content) content.style.display = \"block\";\n\n    try {\n      await initReferences();\n    } catch (referenceError) {\n      console.error(\"Erro nas refer\u00eancias profissionais:\", referenceError);\n\n      showReferenceFeedback(\n        referenceError.message ||\n        \"N\u00e3o foi poss\u00edvel carregar as refer\u00eancias profissionais.\",\n        \"error\"\n      );\n    }\n\n  } catch (error) {\n    showError(\"Erro ao carregar a \u00e1rea do candidato. Tente novamente.\");\n  }\n});\n<\/script>\n\n<style>\n.jm-candidate-area-page {\n  min-height: calc(100vh - 120px);\n  padding: 42px 18px 64px;\n  background:\n    radial-gradient(circle at top left, rgba(21,86,255,0.10), transparent 34%),\n    linear-gradient(180deg, #f5f9ff 0%, #eef5ff 100%);\n  box-sizing: border-box;\n  overflow-x: hidden;\n}\n\n.jm-candidate-area-page * {\n  box-sizing: border-box;\n}\n\n.jm-candidate-area-shell {\n  width: min(1180px, 100%);\n  margin: 0 auto;\n}\n\n.jm-candidate-area-hero {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) minmax(210px, 260px);\n  gap: 24px;\n  align-items: end;\n  margin-bottom: 22px;\n  padding: 34px;\n  border-radius: 32px;\n  background: #ffffff;\n  box-shadow: 0 24px 70px rgba(20, 80, 170, 0.13);\n}\n\n.jm-candidate-area-badge {\n  display: inline-flex;\n  margin-bottom: 16px;\n  padding: 8px 14px;\n  border-radius: 999px;\n  background: rgba(21,86,255,0.08);\n  color: #1556ff;\n  font-size: 13px;\n  font-weight: 850;\n}\n\n.jm-candidate-area-hero h1 {\n  margin: 0 0 12px;\n  color: #15396f;\n  font-size: clamp(30px, 4vw, 40px);\n  line-height: 1.08;\n  font-weight: 950;\n  letter-spacing: -0.7px;\n  word-break: normal;\n  overflow-wrap: anywhere;\n}\n\n.jm-candidate-area-hero p {\n  max-width: 660px;\n  margin: 0 0 14px;\n  color: #39577f;\n  font-size: 17px;\n  line-height: 1.5;\n}\n\n#jm-candidate-privacy-note {\n  display: inline-flex;\n  color: #15396f;\n  font-size: 15px;\n  font-weight: 950;\n}\n\n.jm-candidate-area-actions {\n  display: grid;\n  gap: 10px;\n  min-width: 0;\n}\n\n.jm-main-btn,\n.jm-soft-btn {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 46px;\n  padding: 14px 18px;\n  border-radius: 999px;\n  text-decoration: none;\n  font-size: 14px;\n  font-weight: 950;\n  text-align: center;\n  box-sizing: border-box;\n  white-space: normal;\n}\n\n.jm-main-btn {\n  background: linear-gradient(135deg, #1556ff, #159dff);\n  color: #ffffff;\n  box-shadow: 0 14px 30px rgba(24,95,255,0.24);\n}\n\n.jm-soft-btn {\n  background: #eef5ff;\n  color: #1556ff;\n}\n\n.jm-candidate-dashboard {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) 254px;\n  gap: 18px;\n  align-items: start;\n}\n\n.jm-candidate-dashboard > .jm-profile-card:not(.jm-opportunities-card) {\n  grid-column: 1;\n}\n\n.jm-candidate-dashboard > .jm-opportunities-card {\n  overflow: hidden;\n  padding: 14px;\n  border-radius: 22px;\n  background:\n    linear-gradient(180deg, rgba(21,86,255,0.98), rgba(21,57,111,0.98));\n  border: 1px solid rgba(255,255,255,0.20);\n  box-shadow: 0 22px 54px rgba(20, 58, 120, 0.24);\n  max-height: calc(100vh - 112px);\n}\n\n.jm-opportunities-card .jm-section-title-row {\n  margin-bottom: 10px;\n  align-items: center;\n}\n\n.jm-opportunities-card .jm-section-title-row h2 {\n  margin: 0;\n  color: #ffffff;\n  font-size: 18px;\n  line-height: 1.2;\n}\n\n.jm-opportunities-card .jm-section-title-row p {\n  display: none;\n}\n\n.jm-opportunities-card .jm-section-title-row strong {\n  min-width: 34px;\n  height: 34px;\n  background: rgba(255,255,255,0.16);\n  color: #ffffff;\n  font-size: 14px;\n}\n\n.jm-opportunities-card .jm-empty-state {\n  background: rgba(255,255,255,0.11);\n  border-color: rgba(255,255,255,0.18);\n  color: #ffffff;\n}\n\n.jm-recommendations-carousel {\n  position: relative;\n  width: 100%;\n  padding: 0;\n}\n\n.jm-recommendations-list {\n  display: flex;\n  flex-direction: column;\n  gap: 9px;\n  max-height: calc(100vh - 190px);\n  overflow-y: auto;\n  overflow-x: hidden;\n  padding: 1px 4px 4px 1px;\n  scrollbar-width: thin;\n  scrollbar-color: rgba(255,255,255,0.45) transparent;\n}\n\n.jm-recommendations-list::-webkit-scrollbar {\n  width: 6px;\n}\n\n.jm-recommendations-list::-webkit-scrollbar-track {\n  background: transparent;\n}\n\n.jm-recommendations-list::-webkit-scrollbar-thumb {\n  background: rgba(255,255,255,0.42);\n  border-radius: 999px;\n}\n\n.jm-recommendation-card {\n  flex: 0 0 auto;\n  display: flex;\n  flex-direction: column;\n  gap: 6px;\n  min-height: 0;\n  padding: 12px;\n  border-radius: 16px;\n  background: #ffffff;\n  border: 1px solid rgba(255,255,255,0.30);\n  box-shadow: 0 9px 24px rgba(7, 32, 78, 0.15);\n}\n\n.jm-recommendation-badge {\n  align-self: flex-start;\n  padding: 5px 8px;\n  border-radius: 999px;\n  background: #1556ff;\n  color: #ffffff;\n  font-size: 9px;\n  font-weight: 950;\n  text-transform: uppercase;\n  letter-spacing: 0.02em;\n}\n\n.jm-recommendation-card h3 {\n  margin: 1px 0 0;\n  color: #15396f;\n  font-size: 15px;\n  line-height: 1.2;\n  font-weight: 950;\n  overflow-wrap: anywhere;\n}\n\n.jm-recommendation-card p {\n  margin: 0;\n  color: #587092;\n  font-size: 12px;\n  line-height: 1.3;\n}\n\n.jm-recommendation-meta {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 5px;\n  margin-top: 1px;\n}\n\n.jm-recommendation-meta span {\n  display: inline-flex;\n  padding: 4px 7px;\n  border-radius: 999px;\n  background: #f3f7ff;\n  border: 1px solid #e1ebf8;\n  color: #39577f;\n  font-size: 10.5px;\n  font-weight: 850;\n}\n\n.jm-recommendation-card a {\n  margin-top: 2px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 34px;\n  padding: 8px 10px;\n  border-radius: 999px;\n  background: linear-gradient(135deg, #1556ff, #159dff);\n  color: #ffffff;\n  text-decoration: none;\n  font-size: 11.5px;\n  font-weight: 950;\n  text-align: center;\n}\n\n\n.jm-empty-state {\n  padding: 18px;\n  border-radius: 18px;\n  background: #f8fbff;\n  border: 1px solid #e1ebf8;\n  color: #587092;\n  font-size: 15px;\n  font-weight: 850;\n}\n\n.jm-applications-list {\n  display: grid;\n  gap: 12px;\n}\n\n.jm-application-card {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) minmax(120px, 180px) minmax(105px, 130px);\n  gap: 12px;\n  align-items: center;\n  padding: 16px;\n  border-radius: 18px;\n  background: #f8fbff;\n  border: 1px solid #e1ebf8;\n}\n\n.jm-application-card span {\n  color: #7d8da3;\n  font-size: 12px;\n  font-weight: 850;\n}\n\n.jm-application-card h3 {\n  margin: 4px 0;\n  color: #15396f;\n  font-size: 17px;\n  font-weight: 950;\n  overflow-wrap: anywhere;\n}\n\n.jm-application-card p {\n  color: #587092;\n  font-size: 14px;\n}\n\n.jm-application-card strong {\n  justify-self: start;\n  padding: 8px 11px;\n  border-radius: 999px;\n  background: rgba(21,86,255,0.08);\n  color: #1556ff;\n  font-size: 12px;\n  font-weight: 950;\n  text-align: center;\n}\n\n.jm-application-card a {\n  justify-self: end;\n  padding: 10px 12px;\n  border-radius: 999px;\n  background: #eef5ff;\n  color: #1556ff;\n  text-decoration: none;\n  font-size: 13px;\n  font-weight: 950;\n  text-align: center;\n}\n\n.jm-candidate-area-message {\n  max-width: 700px;\n  margin: 0 auto 18px;\n  padding: 16px 18px;\n  border-radius: 18px;\n  background: rgba(21,86,255,0.08);\n  color: #15396f;\n  font-size: 15px;\n  font-weight: 750;\n}\n\n.jm-candidate-area-message.error {\n  background: rgba(220,40,40,0.10);\n  color: #a12626;\n}\n\n\n.jm-references-card {\n  overflow: hidden;\n}\n\n.jm-reference-intro {\n  display: grid;\n  grid-template-columns: minmax(0, 1fr) auto;\n  gap: 18px;\n  align-items: center;\n  margin-bottom: 16px;\n  padding: 18px;\n  border-radius: 20px;\n  background: linear-gradient(135deg, #f8fbff, #eef5ff);\n  border: 1px solid #d9e6f8;\n}\n\n.jm-reference-intro h3 {\n  margin: 0 0 6px;\n  color: #15396f;\n  font-size: 18px;\n  font-weight: 950;\n}\n\n.jm-reference-intro p {\n  margin: 0;\n}\n\n.jm-reference-create-btn {\n  border: 0;\n  cursor: pointer;\n}\n\n.jm-reference-feedback {\n  margin-bottom: 14px;\n  padding: 13px 15px;\n  border-radius: 14px;\n  font-size: 14px;\n  font-weight: 850;\n}\n\n.jm-reference-feedback.success {\n  background: #edf9f3;\n  color: #14734f;\n  border: 1px solid #bfe6d4;\n}\n\n.jm-reference-feedback.error {\n  background: #fff3f2;\n  color: #a12626;\n  border: 1px solid #f0c7c3;\n}\n\n.jm-reference-link-box {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 14px;\n  margin-bottom: 14px;\n  padding: 15px;\n  border-radius: 18px;\n  background: #f8fbff;\n  border: 1px solid #d9e6f8;\n}\n\n.jm-reference-link-box div {\n  min-width: 0;\n}\n\n.jm-reference-link-box span {\n  display: block;\n  margin-bottom: 4px;\n  color: #7d8da3;\n  font-size: 12px;\n  font-weight: 850;\n}\n\n.jm-reference-link-box strong {\n  display: block;\n  color: #15396f;\n  font-size: 13px;\n  overflow-wrap: anywhere;\n}\n\n.jm-reference-link-box button {\n  flex: 0 0 auto;\n  border: 0;\n  cursor: pointer;\n}\n\n.jm-reference-visibility {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 16px;\n  margin-bottom: 14px;\n  padding: 15px;\n  border-radius: 18px;\n  background: #ffffff;\n  border: 1px solid #e1ebf8;\n}\n\n.jm-reference-visibility strong,\n.jm-reference-visibility span {\n  display: block;\n}\n\n.jm-reference-visibility strong {\n  margin-bottom: 3px;\n  color: #15396f;\n  font-size: 14px;\n  font-weight: 950;\n}\n\n.jm-reference-visibility div > span {\n  color: #7d8da3;\n  font-size: 12px;\n  font-weight: 750;\n}\n\n.jm-reference-switch {\n  position: relative;\n  flex: 0 0 auto;\n  width: 48px;\n  height: 28px;\n}\n\n.jm-reference-switch input {\n  position: absolute;\n  opacity: 0;\n}\n\n.jm-reference-switch > span {\n  position: absolute;\n  inset: 0;\n  border-radius: 999px;\n  background: #d8e1ec;\n  cursor: pointer;\n  transition: 0.2s ease;\n}\n\n.jm-reference-switch > span::after {\n  content: \"\";\n  position: absolute;\n  top: 4px;\n  left: 4px;\n  width: 20px;\n  height: 20px;\n  border-radius: 50%;\n  background: #ffffff;\n  box-shadow: 0 2px 8px rgba(20, 50, 90, 0.18);\n  transition: 0.2s ease;\n}\n\n.jm-reference-switch input:checked + span {\n  background: #1556ff;\n}\n\n.jm-reference-switch input:checked + span::after {\n  transform: translateX(20px);\n}\n\n.jm-references-list {\n  display: grid;\n  gap: 12px;\n}\n\n.jm-reference-card {\n  padding: 17px;\n  border-radius: 20px;\n  background: #f8fbff;\n  border: 1px solid #d9e6f8;\n}\n\n.jm-reference-card-head {\n  display: flex;\n  align-items: flex-start;\n  justify-content: space-between;\n  gap: 15px;\n  margin-bottom: 14px;\n}\n\n.jm-reference-card-head h3 {\n  margin: 8px 0 3px;\n  color: #15396f;\n  font-size: 18px;\n  font-weight: 950;\n}\n\n.jm-reference-card-head p {\n  margin: 0;\n  font-size: 13.5px;\n}\n\n.jm-reference-status {\n  display: inline-flex;\n  padding: 6px 9px;\n  border-radius: 999px;\n  background: #eaf1ff;\n  color: #1556ff;\n  font-size: 11px;\n  font-weight: 950;\n}\n\n.jm-reference-status.status-aprovada {\n  background: #e8f7ef;\n  color: #14734f;\n}\n\n.jm-reference-status.status-rejeitada,\n.jm-reference-status.status-expirada {\n  background: #f1f2f4;\n  color: #677386;\n}\n\n.jm-reference-status.status-pendente_candidato {\n  background: #fff4da;\n  color: #8b5e00;\n}\n\n.jm-reference-date {\n  color: #7d8da3;\n  font-size: 11.5px;\n  font-weight: 850;\n  text-align: right;\n}\n\n.jm-reference-detail,\n.jm-reference-summary {\n  display: grid;\n  gap: 10px;\n  margin-top: 10px;\n}\n\n.jm-reference-detail {\n  grid-template-columns: minmax(140px, 190px) minmax(0, 1fr);\n  padding: 11px 12px;\n  border-radius: 14px;\n  background: #ffffff;\n  border: 1px solid #e1ebf8;\n}\n\n.jm-reference-detail span,\n.jm-reference-text > span,\n.jm-reference-summary span {\n  color: #7d8da3;\n  font-size: 11.5px;\n  font-weight: 850;\n}\n\n.jm-reference-detail strong,\n.jm-reference-summary strong {\n  color: #15396f;\n  font-size: 13.5px;\n  font-weight: 950;\n}\n\n.jm-reference-text {\n  margin-top: 10px;\n  padding: 12px;\n  border-radius: 14px;\n  background: #ffffff;\n  border: 1px solid #e1ebf8;\n}\n\n.jm-reference-text p {\n  margin-top: 5px;\n  white-space: pre-line;\n}\n\n.jm-reference-tags {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 7px;\n  margin-top: 10px;\n}\n\n.jm-reference-tags span {\n  display: inline-flex;\n  padding: 7px 9px;\n  border-radius: 999px;\n  background: #ffffff;\n  border: 1px solid #e1ebf8;\n  color: #39577f;\n  font-size: 12px;\n  font-weight: 850;\n}\n\n.jm-reference-summary {\n  grid-template-columns: repeat(2, minmax(0, 1fr));\n}\n\n.jm-reference-summary div {\n  padding: 11px 12px;\n  border-radius: 14px;\n  background: #ffffff;\n  border: 1px solid #e1ebf8;\n}\n\n.jm-reference-summary span,\n.jm-reference-summary strong {\n  display: block;\n}\n\n.jm-reference-summary strong {\n  margin-top: 4px;\n}\n\n.jm-reference-actions {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 9px;\n  margin-top: 14px;\n}\n\n.jm-reference-actions button {\n  min-height: 42px;\n  border: 0;\n  cursor: pointer;\n}\n\n.jm-reference-delete {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  min-height: 42px;\n  padding: 10px 14px;\n  border-radius: 999px;\n  background: #fff0ef;\n  color: #a12626;\n  font-size: 13px;\n  font-weight: 950;\n}\n\n@media (max-width: 980px) {\n  .jm-candidate-area-page {\n    padding: 34px 16px 56px;\n  }\n\n  .jm-candidate-area-hero {\n    grid-template-columns: 1fr;\n    align-items: stretch;\n    padding: 28px;\n    border-radius: 28px;\n  }\n\n  .jm-candidate-area-actions {\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n  }\n\n  .jm-candidate-dashboard,\n  .jm-profile-grid {\n    grid-template-columns: 1fr;\n  }\n\n  .jm-candidate-dashboard > .jm-profile-card,\n  .jm-candidate-dashboard > .jm-profile-card-wide,\n  .jm-candidate-dashboard > .jm-opportunities-card {\n    grid-column: 1;\n  }\n\n  .jm-candidate-dashboard > .jm-opportunities-card {\n    grid-row: auto;\n    position: static;\n    order: 3;\n  }\n\n  .jm-candidate-dashboard > .jm-profile-card:nth-child(1) {\n    order: 1;\n  }\n\n  .jm-candidate-dashboard > .jm-profile-card:nth-child(2) {\n    order: 2;\n  }\n\n  .jm-candidate-dashboard > .jm-profile-card:nth-child(4) {\n    order: 4;\n  }\n\n  .jm-candidate-dashboard > .jm-references-card {\n    order: 5;\n  }\n\n  .jm-candidate-dashboard > .jm-profile-card:last-child {\n    order: 6;\n  }\n\n  .jm-opportunities-card {\n    padding: 18px;\n    max-height: none;\n    background: linear-gradient(135deg, #1556ff, #15396f);\n  }\n\n  .jm-recommendations-list {\n    flex-direction: row;\n    gap: 10px;\n    max-height: none;\n    overflow-x: auto;\n    overflow-y: hidden;\n    padding: 2px 2px 8px;\n    scroll-snap-type: x proximity;\n    scrollbar-width: none;\n  }\n\n  .jm-recommendations-list::-webkit-scrollbar {\n    display: none;\n  }\n\n  .jm-recommendation-card {\n    flex: 0 0 230px;\n    scroll-snap-align: start;\n    min-height: 190px;\n    padding: 13px;\n  }\n\n  .jm-application-card {\n    grid-template-columns: 1fr;\n    align-items: stretch;\n  }\n\n  .jm-application-card strong,\n  .jm-application-card a {\n    justify-self: stretch;\n  }\n}\n\n@media (max-width: 640px) {\n  .jm-candidate-area-page {\n    padding: 22px 12px 46px;\n  }\n\n  .jm-candidate-area-hero,\n  .jm-profile-card {\n    padding: 18px;\n    border-radius: 20px;\n  }\n\n  .jm-candidate-area-hero {\n    margin-bottom: 14px;\n    gap: 18px;\n  }\n\n  .jm-candidate-area-badge {\n    margin-bottom: 12px;\n    font-size: 12px;\n    padding: 7px 11px;\n  }\n\n  .jm-candidate-area-hero h1 {\n    font-size: 28px;\n    line-height: 1.1;\n  }\n\n  .jm-candidate-area-hero p {\n    font-size: 15px;\n    line-height: 1.45;\n  }\n\n  #jm-candidate-privacy-note {\n    font-size: 13.5px;\n  }\n\n  .jm-candidate-area-actions {\n    grid-template-columns: 1fr;\n    gap: 9px;\n  }\n\n  .jm-main-btn,\n  .jm-soft-btn {\n    width: 100%;\n    min-height: 48px;\n    padding: 13px 15px;\n    font-size: 14px;\n  }\n\n  .jm-candidate-dashboard {\n    gap: 13px;\n  }\n\n  .jm-profile-card h2 {\n    font-size: 21px;\n    margin-bottom: 13px;\n  }\n\n  .jm-profile-grid,\n  .jm-permission-list {\n    gap: 9px;\n  }\n\n  .jm-profile-grid div,\n  .jm-permission-list div,\n  .jm-cv-box,\n  .jm-empty-state,\n  .jm-application-card {\n    border-radius: 14px;\n    padding: 12px;\n  }\n\n  .jm-profile-grid span,\n  .jm-permission-list span,\n  .jm-section-title-row p {\n    font-size: 11.5px;\n  }\n\n  .jm-profile-grid strong,\n  .jm-permission-list strong {\n    font-size: 13.5px;\n  }\n\n  .jm-section-title-row {\n    align-items: center;\n    gap: 12px;\n  }\n\n  .jm-section-title-row strong {\n    min-width: 40px;\n    height: 40px;\n    font-size: 17px;\n  }\n\n  .jm-chip-row span {\n    border-radius: 14px;\n    font-size: 12.5px;\n    line-height: 1.35;\n  }\n\n  .jm-application-card h3 {\n    font-size: 16px;\n  }\n\n  .jm-opportunities-card {\n    padding: 16px;\n    border-radius: 20px;\n  }\n\n  .jm-opportunities-card .jm-section-title-row {\n    align-items: flex-start;\n  }\n\n  .jm-opportunities-card .jm-section-title-row h2 {\n    font-size: 20px;\n  }\n\n  .jm-recommendation-card {\n    flex-basis: min(82vw, 245px);\n    min-height: 205px;\n    padding: 14px;\n    border-radius: 16px;\n  }\n\n  .jm-recommendations-carousel {\n    padding: 0;\n  }\n}\n\n\n  .jm-reference-intro {\n    grid-template-columns: 1fr;\n    padding: 14px;\n  }\n\n  .jm-reference-create-btn {\n    width: 100%;\n  }\n\n  .jm-reference-link-box {\n    align-items: stretch;\n    flex-direction: column;\n  }\n\n  .jm-reference-link-box button {\n    width: 100%;\n  }\n\n  .jm-reference-card-head {\n    flex-direction: column;\n  }\n\n  .jm-reference-date {\n    text-align: left;\n  }\n\n  .jm-reference-detail,\n  .jm-reference-summary {\n    grid-template-columns: 1fr;\n  }\n\n  .jm-reference-actions {\n    display: grid;\n    grid-template-columns: 1fr;\n  }\n\n  .jm-reference-actions button {\n    width: 100%;\n  }\n\n@media (max-width: 390px) {\n  .jm-candidate-area-page {\n    padding-left: 10px;\n    padding-right: 10px;\n  }\n\n  .jm-candidate-area-hero,\n  .jm-profile-card {\n    padding: 16px;\n  }\n\n  .jm-candidate-area-hero h1 {\n    font-size: 25px;\n  }\n\n  .jm-profile-card h2 {\n    font-size: 20px;\n  }\n}\n<\/style>\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","protected":false},"excerpt":{"rendered":"<p>A carregar a sua \u00e1rea de candidato&#8230; \u00c1rea do Candidato WIW A sua \u00e1rea de candidato Consulte o seu perfil, confirme os seus dados principais e acompanhe as candidaturas enviadas. Perfil privado nesta fase. Ver ofertas no mapa Editar perfil Dados principais Nome \u2014 Email \u2014 Telefone \u2014 Localiza\u00e7\u00e3o \u2014 \u00c1rea principal \u2014 Disponibilidade \u2014 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-7020","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\u00c1rea do candidato - 3 Solutions | WE SPEAK RETAIL - Consultoria e Forma\u00e7\u00e3o retalho<\/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:\/\/3solutions.pt\/en\/jobmaps-area-candidato\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u00c1rea do candidato - 3 Solutions | WE SPEAK RETAIL - Consultoria e Forma\u00e7\u00e3o retalho\" \/>\n<meta property=\"og:description\" content=\"A carregar a sua \u00e1rea de candidato&#8230; \u00c1rea do Candidato WIW A sua \u00e1rea de candidato Consulte o seu perfil, confirme os seus dados principais e acompanhe as candidaturas enviadas. Perfil privado nesta fase. Ver ofertas no mapa Editar perfil Dados principais Nome \u2014 Email \u2014 Telefone \u2014 Localiza\u00e7\u00e3o \u2014 \u00c1rea principal \u2014 Disponibilidade \u2014 [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/3solutions.pt\/en\/jobmaps-area-candidato\/\" \/>\n<meta property=\"og:site_name\" content=\"3 Solutions | WE SPEAK RETAIL - Consultoria e Forma\u00e7\u00e3o retalho\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/share\/17VAXrDnwy\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-22T17:34:44+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/3solutions.pt\\\/jobmaps-area-candidato\\\/\",\"url\":\"https:\\\/\\\/3solutions.pt\\\/jobmaps-area-candidato\\\/\",\"name\":\"\u00c1rea do candidato - 3 Solutions | WE SPEAK RETAIL - Consultoria e Forma\u00e7\u00e3o retalho\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/3solutions.pt\\\/#website\"},\"datePublished\":\"2026-06-17T11:36:14+00:00\",\"dateModified\":\"2026-07-22T17:34:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/3solutions.pt\\\/jobmaps-area-candidato\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/3solutions.pt\\\/jobmaps-area-candidato\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/3solutions.pt\\\/jobmaps-area-candidato\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/3solutions.pt\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u00c1rea do candidato\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/3solutions.pt\\\/#website\",\"url\":\"https:\\\/\\\/3solutions.pt\\\/\",\"name\":\"3Solutions Consultoria em Marketing e Gest\u00e3o\",\"description\":\"Consultoria e Marketing Digital\",\"publisher\":{\"@id\":\"https:\\\/\\\/3solutions.pt\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/3solutions.pt\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/3solutions.pt\\\/#organization\",\"name\":\"3Solutions Consultoria em Marketing e Gest\u00e3o\",\"url\":\"https:\\\/\\\/3solutions.pt\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/3solutions.pt\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/3solutions.pt\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-Prancheta-1-copia-scaled-1.png\",\"contentUrl\":\"https:\\\/\\\/3solutions.pt\\\/wp-content\\\/uploads\\\/2026\\\/05\\\/cropped-Prancheta-1-copia-scaled-1.png\",\"width\":1505,\"height\":785,\"caption\":\"3Solutions Consultoria em Marketing e Gest\u00e3o\"},\"image\":{\"@id\":\"https:\\\/\\\/3solutions.pt\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/share\\\/17VAXrDnwy\\\/\",\"https:\\\/\\\/www.instagram.com\\\/wespeakretail?igsh=d2Y0a2RzY29nN2Fv\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u00c1rea do candidato - 3 Solutions | WE SPEAK RETAIL - Consultoria e Forma\u00e7\u00e3o retalho","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:\/\/3solutions.pt\/en\/jobmaps-area-candidato\/","og_locale":"en_GB","og_type":"article","og_title":"\u00c1rea do candidato - 3 Solutions | WE SPEAK RETAIL - Consultoria e Forma\u00e7\u00e3o retalho","og_description":"A carregar a sua \u00e1rea de candidato&#8230; \u00c1rea do Candidato WIW A sua \u00e1rea de candidato Consulte o seu perfil, confirme os seus dados principais e acompanhe as candidaturas enviadas. Perfil privado nesta fase. Ver ofertas no mapa Editar perfil Dados principais Nome \u2014 Email \u2014 Telefone \u2014 Localiza\u00e7\u00e3o \u2014 \u00c1rea principal \u2014 Disponibilidade \u2014 [&hellip;]","og_url":"https:\/\/3solutions.pt\/en\/jobmaps-area-candidato\/","og_site_name":"3 Solutions | WE SPEAK RETAIL - Consultoria e Forma\u00e7\u00e3o retalho","article_publisher":"https:\/\/www.facebook.com\/share\/17VAXrDnwy\/","article_modified_time":"2026-07-22T17:34:44+00:00","twitter_card":"summary_large_image","twitter_misc":{"Estimated reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/3solutions.pt\/jobmaps-area-candidato\/","url":"https:\/\/3solutions.pt\/jobmaps-area-candidato\/","name":"\u00c1rea do candidato - 3 Solutions | WE SPEAK RETAIL - Consultoria e Forma\u00e7\u00e3o retalho","isPartOf":{"@id":"https:\/\/3solutions.pt\/#website"},"datePublished":"2026-06-17T11:36:14+00:00","dateModified":"2026-07-22T17:34:44+00:00","breadcrumb":{"@id":"https:\/\/3solutions.pt\/jobmaps-area-candidato\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/3solutions.pt\/jobmaps-area-candidato\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/3solutions.pt\/jobmaps-area-candidato\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/3solutions.pt\/"},{"@type":"ListItem","position":2,"name":"\u00c1rea do candidato"}]},{"@type":"WebSite","@id":"https:\/\/3solutions.pt\/#website","url":"https:\/\/3solutions.pt\/","name":"3Solutions Consultoria em Marketing e Gest\u00e3o","description":"Consultoria e Marketing Digital","publisher":{"@id":"https:\/\/3solutions.pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/3solutions.pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/3solutions.pt\/#organization","name":"3Solutions Consultoria em Marketing e Gest\u00e3o","url":"https:\/\/3solutions.pt\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/3solutions.pt\/#\/schema\/logo\/image\/","url":"https:\/\/3solutions.pt\/wp-content\/uploads\/2026\/05\/cropped-Prancheta-1-copia-scaled-1.png","contentUrl":"https:\/\/3solutions.pt\/wp-content\/uploads\/2026\/05\/cropped-Prancheta-1-copia-scaled-1.png","width":1505,"height":785,"caption":"3Solutions Consultoria em Marketing e Gest\u00e3o"},"image":{"@id":"https:\/\/3solutions.pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/share\/17VAXrDnwy\/","https:\/\/www.instagram.com\/wespeakretail?igsh=d2Y0a2RzY29nN2Fv"]}]}},"_links":{"self":[{"href":"https:\/\/3solutions.pt\/en\/wp-json\/wp\/v2\/pages\/7020","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/3solutions.pt\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/3solutions.pt\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/3solutions.pt\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/3solutions.pt\/en\/wp-json\/wp\/v2\/comments?post=7020"}],"version-history":[{"count":52,"href":"https:\/\/3solutions.pt\/en\/wp-json\/wp\/v2\/pages\/7020\/revisions"}],"predecessor-version":[{"id":8145,"href":"https:\/\/3solutions.pt\/en\/wp-json\/wp\/v2\/pages\/7020\/revisions\/8145"}],"wp:attachment":[{"href":"https:\/\/3solutions.pt\/en\/wp-json\/wp\/v2\/media?parent=7020"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}