{"id":2882,"date":"2025-06-30T08:26:10","date_gmt":"2025-06-30T07:26:10","guid":{"rendered":"https:\/\/prontosolucoes.pt\/?page_id=2882"},"modified":"2026-06-21T18:26:04","modified_gmt":"2026-06-21T17:26:04","slug":"candidatura","status":"publish","type":"page","link":"https:\/\/prontosolucoes.pt\/pt\/tecnicos\/candidatura\/","title":{"rendered":"Candidatura de T\u00e9cnicos"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"2882\" class=\"elementor elementor-2882\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d37a9a7 e-con-full e-flex e-con e-parent\" data-id=\"d37a9a7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-34adf7a elementor-widget elementor-widget-html\" data-id=\"34adf7a\" 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<!-- PRONTO | TECNICOS | FORMUL\u00c1RIO MULTI-ETAPAS (PT-PT) \u2014 app-like mobile UI -->\r\n<section id=\"ps-apply\" class=\"ps-apply\">\r\n  <style>\r\n    .ps-apply{--navy:#0F2B46;--yellow:#FFD233;--ink:#152435;--muted:#6c7a89;--bg:#fff;--card:#fff;--radius:16px;--shadow:0 10px 28px rgba(15,43,70,.08);font-family:\"Poppins\",system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink);background:var(--bg)}\r\n    .ps-wrap{max-width:920px;margin:0 auto;padding:40px 18px}\r\n    .ps-card{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px}\r\n    .ps-head{display:flex;justify-content:flex-start;align-items:center;gap:12px;margin-bottom:18px}\r\n    .ps-head h2{margin:0;color:var(--navy);font-size:clamp(1.25rem,1vw+1rem,1.7rem)}\r\n    .ps-progress{height:8px;background:#eef2f6;border-radius:999px;overflow:hidden;margin:8px 0 16px}\r\n    .ps-progress>span{display:block;height:100%;width:0;background:var(--yellow);transition:width .35s ease}\r\n    .ps-step{display:none}\r\n    .ps-step.active{display:block}\r\n    .grid{display:grid;gap:14px}\r\n    .g2{grid-template-columns:repeat(2,minmax(0,1fr))}\r\n    .g3{grid-template-columns:repeat(3,minmax(0,1fr))}\r\n    @media (max-width:720px){.g2,.g3{grid-template-columns:1fr}}\r\n    label{font-weight:600;font-size:.95rem;color:var(--navy);display:block;margin:2px 0 6px}\r\n    input[type=\"text\"],input[type=\"email\"],input[type=\"tel\"],input[type=\"number\"],select{width:100%;padding:12px 12px;border:1px solid #e3e8ef;border-radius:12px;background:#fff;outline:none}\r\n    textarea{width:100%;padding:12px;border:1px solid #e3e8ef;border-radius:12px}\r\n    .muted{color:var(--muted);font-size:.9rem}\r\n    .row{display:flex;gap:12px;flex-wrap:wrap}\r\n    \r\n    \/* Summary of role coming from Phase Zero *\/\r\n    #ps-service-summary{\r\n      margin-top:6px;\r\n      font-size:.9rem;\r\n      color:var(--muted);\r\n    }\r\n    #ps-service-summary strong{\r\n      color:var(--navy);\r\n      font-weight:600;\r\n    }\r\n    \/* Chips (pills) \u2014 normalized height\/spacing across all labels *\/\r\n    .chip{\r\n      display:inline-flex; align-items:center; gap:8px;\r\n      padding:10px 14px; border:1px solid #e3e8ef; border-radius:999px;\r\n      cursor:pointer; background:#fff; line-height:1;\r\n    }\r\n    .chip input{\r\n      margin:0; width:16px; height:16px; flex:0 0 16px;\r\n      accent-color:var(--navy);\r\n    }\r\n\r\n    .actions{display:flex;justify-content:space-between;gap:12px;margin-top:12px}\r\n    .btn{appearance:none;border:none;border-radius:12px;padding:12px 16px;font-weight:700;cursor:pointer}\r\n    .btn-primary{background:var(--navy);color:#fff}\r\n    .btn-secondary{background:#f2f5f9;color:var(--navy)}\r\n    .btn[disabled]{opacity:.6;cursor:not-allowed}\r\n    .req:after{content:\" *\";color:#e11d48}\r\n    .err{color:#e11d48;font-size:.9rem;margin-top:6px;display:none}\r\n    .show{display:block}\r\n    .success{background:#f6ffed;border:1px solid #b7eb8f;color:#1f7a1f;padding:14px;border-radius:12px}\r\n    .note{background:#fff8e1;border:1px solid #ffe58f;color:#8b5e00;padding:12px;border-radius:10px}\r\n        \/* ===== \u00c1reas widget: search + tags + bundles ===== *\/\r\n    .areas-bundles{\r\n      margin:4px 0 8px;\r\n      flex-wrap:wrap;\r\n      gap:8px;\r\n    }\r\n    .areas-bundle-btn{\r\n      border-radius:999px;\r\n      border:1px solid #e3e8ef;\r\n      background:#f5f7fb;\r\n      padding:6px 12px;\r\n      font-size:.85rem;\r\n      cursor:pointer;\r\n      transition:background .15s ease, border-color .15s ease, transform .15s ease;\r\n    }\r\n    .areas-bundle-btn:hover{\r\n      background:#e9f0ff;\r\n      border-color:#c3d0ff;\r\n      transform:translateY(-1px);\r\n    }\r\n    .areas-bundle-btn.active{\r\n      background:#0F2B46;\r\n      border-color:#0F2B46;\r\n      color:#fff;\r\n    }\r\n\r\n    .areas-input-wrap{\r\n      position:relative;\r\n      margin-bottom:6px;\r\n    }\r\n    #areas-input{\r\n      width:100%;\r\n      padding:10px 12px;\r\n      border:1px solid #e3e8ef;\r\n      border-radius:12px;\r\n      outline:none;\r\n      font-size:.95rem;\r\n    }\r\n    #areas-input:focus{\r\n      border-color:#0F2B46;\r\n      box-shadow:0 0 0 1px rgba(15,43,70,.05);\r\n    }\r\n\r\n    .areas-suggestions{\r\n      position:absolute;\r\n      left:0;\r\n      right:0;\r\n      top:100%;\r\n      margin-top:4px;\r\n      background:#fff;\r\n      border-radius:12px;\r\n      box-shadow:0 10px 26px rgba(15,43,70,.12);\r\n      max-height:220px;\r\n      overflow:auto;\r\n      z-index:10;\r\n      display:none;\r\n    }\r\n    .areas-suggestions.open{ display:block; }\r\n    .areas-suggestion-item{\r\n      padding:8px 12px;\r\n      cursor:pointer;\r\n      font-size:.9rem;\r\n    }\r\n    .areas-suggestion-item:hover{\r\n      background:#f5f7fb;\r\n    }\r\n\r\n    .areas-tags{\r\n      display:flex;\r\n      flex-wrap:wrap;\r\n      gap:8px;\r\n      margin-bottom:6px;\r\n      min-height:0;\r\n    }\r\n    .areas-tag{\r\n      display:inline-flex;\r\n      align-items:center;\r\n      gap:6px;\r\n      padding:6px 10px;\r\n      border-radius:999px;\r\n      background:#f5f7fb;\r\n      color:#152435;\r\n      font-size:.85rem;\r\n    }\r\n    .areas-tag-remove{\r\n      border:none;\r\n      background:transparent;\r\n      cursor:pointer;\r\n      font-size:14px;\r\n      line-height:1;\r\n      padding:0 2px;\r\n      color:#6c7a89;\r\n    }\r\n    .areas-tag-remove:hover{\r\n      color:#152435;\r\n    }\r\n        \/* Terms & conditions row *\/\r\n    .ps-terms-row{\r\n      grid-column:1\/-1;\r\n      margin-top:8px;\r\n    }\r\n    .ps-terms-chip{\r\n      display:flex;\r\n      align-items:flex-start;\r\n      gap:10px;\r\n      padding:10px 12px;\r\n      border-radius:12px;\r\n      background:#f5f7fb;\r\n      border:1px solid #e3e8ef;\r\n      font-size:.9rem;\r\n      color:var(--muted);\r\n      cursor:pointer;\r\n    }\r\n    .ps-terms-chip input[type=\"checkbox\"]{\r\n      margin-top:2px;\r\n      width:18px;\r\n      height:18px;\r\n      flex-shrink:0;\r\n      accent-color:var(--navy);\r\n    }\r\n    .ps-terms-chip span{\r\n      line-height:1.4;\r\n    }\r\n    \/* Link inherits grey, only the keyword inside turns blue *\/\r\n    .ps-terms-chip a{\r\n      color:inherit;\r\n      font-weight:inherit;\r\n      text-decoration:none;\r\n    }\r\n    .ps-terms-chip a .ps-terms-keyword{\r\n      color:var(--navy);   \/* only \"condi\u00e7\u00f5es\" *\/\r\n      font-weight:400;\r\n      text-decoration:none;\r\n    }\r\n    \/* ===== App-like top bar (mobile) ===== *\/\r\n    .ps-appbar{ display:none; }\r\n    @media (max-width:720px){\r\n      .ps-head{display:none;} \/* hide big page H1 on phones *\/\r\n      .ps-appbar{\r\n        position:sticky; top:0; z-index:5;\r\n        display:flex; align-items:center; justify-content:space-between;\r\n        height:56px; padding:0 12px;\r\n        background:#fff; border-bottom:1px solid #eef2f6;\r\n      }\r\n      .ps-appbar .ps-back{\r\n        appearance:none; border:0; background:transparent; color:var(--navy);\r\n        font-size:22px; line-height:1; padding:8px; border-radius:10px; cursor:pointer;\r\n      }\r\n      .ps-appbar .ps-title{ font-weight:600; color:var(--navy); font-size:16px; }\r\n      .ps-appbar .ps-help{ color:var(--navy); opacity:.7; font-size:14px; text-decoration:none; padding:8px; }\r\n    }\r\n\r\n    \/* ===== Mobile polish & sticky bottom actions ===== *\/\r\n    @media (max-width:900px){ #ps-apply .ps-card{ padding:20px; } }\r\n    @media (max-width:480px){\r\n      #ps-apply .ps-wrap{ padding:8px 12px 20px; }\r\n      #ps-apply .ps-card{ padding:16px; border-radius:12px; box-shadow:0 8px 20px rgba(15,43,70,.06); margin-bottom:28px; }\r\n      #ps-apply .ps-progress{ height:6px; margin:6px 0 10px; }\r\n      #ps-apply #ps-stepLabel{ font-size:.9rem; }\r\n      \/* Inputs comfortable size *\/\r\n      #ps-apply input[type=\"text\"],\r\n      #ps-apply input[type=\"email\"],\r\n      #ps-apply input[type=\"tel\"],\r\n      #ps-apply input[type=\"number\"],\r\n      #ps-apply select,\r\n      #ps-apply textarea{ padding:12px; font-size:16px; border-radius:10px; }\r\n      \/* Segment-like chips *\/\r\n      #ps-apply .row{ gap:8px; }\r\n      #ps-apply .chip{ padding:9px 12px; font-size:14px; border-radius:9999px; }\r\n      \/* Sticky bottom actions *\/\r\n      #ps-apply .actions{ position:sticky; bottom:0; z-index:4; margin:10px -16px -16px; padding:10px 12px calc(10px + env(safe-area-inset-bottom)); background:linear-gradient(to top, #fff, rgba(255,255,255,.95)); border-top:1px solid #eef2f6; }\r\n      #ps-apply .actions .btn{ font-size:15px; padding:12px 14px; border-radius:10px; }\r\n      #ps-apply .actions .btn-primary{ flex:1; }\r\n    }\r\n\r\n    \/* Friendlier selects \u2013 keep height, drop custom arrow *\/\r\n    #ps-apply select:not([multiple]){\r\n      height:48px;\r\n      padding-right:36px; \/* keeps some space on the right for the native arrow *\/\r\n    }\r\n\r\n    \/* Multi-select: give it room and smooth touch scrolling *\/\r\n    #ps-apply select[multiple]{ min-height:220px; padding:8px; overflow:auto; -webkit-overflow-scrolling:touch; overscroll-behavior:contain; border-radius:12px; }\r\n    #ps-apply select[multiple] option{ padding:8px 10px; }\r\n    @media (max-width:480px){ #ps-apply select[multiple]{ min-height:260px; } }\r\n\r\n    \/* Page-scoped app mode: hide Blocksy chrome on this page only *\/\r\n    body.ps-app-mode .ct-header,\r\n    body.ps-app-mode .ct-header-sticky,\r\n    body.ps-app-mode .ct-toolbar,\r\n    body.ps-app-mode .ct-footer{ display:none !important; }\r\n    \/* Remove any top offset Blocksy adds for sticky headers *\/\r\n    body.ps-app-mode main,\r\n    body.ps-app-mode #content,\r\n    body.ps-app-mode .site-main,\r\n    body.ps-app-mode #primary{ padding-top:0 !important; margin-top:0 !important; }\r\n  <\/style>\r\n\r\n  <div class=\"ps-wrap\">\r\n\r\n    <!-- App top bar (mobile only) -->\r\n    <div class=\"ps-appbar\" aria-hidden=\"false\">\r\n      <button type=\"button\" class=\"ps-back\" aria-label=\"Voltar\">\u2039<\/button>\r\n      <div class=\"ps-title\">Candidatura<\/div>\r\n      <a href=\"https:\/\/wa.me\/351923250285?text=Ol%C3%A1%21%20Preciso%20de%20ajuda%20com%20o%20formul%C3%A1rio%20de%20candidatura%20de%20t%C3%A9cnico.\" class=\"ps-help\" id=\"ps-help\" target=\"_blank\" rel=\"noopener\">Ajuda<\/a>\r\n    <\/div>\r\n    <!-- Desktop H1 kept for SEO\/AX, hidden on phones -->\r\n    <div class=\"ps-head\">\r\n      <h2>Junte-se \u00e0 Rede de T\u00e9cnicos Pronto Solu\u00e7\u00f5es<\/h2>\r\n    <\/div>\r\n\r\n    <div class=\"ps-card\">\r\n      <div class=\"ps-progress\" aria-hidden=\"true\"><span id=\"ps-bar\" style=\"width:0%\"><\/span><\/div>\r\n      <div class=\"muted\" id=\"ps-stepLabel\">Passo 1 de 3<\/div>\r\n\r\n      <form id=\"ps-form\" novalidate>\r\n        <!-- Honeypot (deve ficar vazio) -->\r\n        <input type=\"text\" id=\"hp\" name=\"hp\" autocomplete=\"off\" tabindex=\"-1\" style=\"position:absolute;left:-5000px;height:0;width:0;opacity:0;\">\r\n\r\n        <!-- STEP 1 -->\r\n        <div class=\"ps-step active\" data-step=\"1\">\r\n          <div class=\"grid g2\">\r\n            <!-- Row 1: Nome | Telem\u00f3vel -->\r\n            <div>\r\n              <label class=\"req\" for=\"nome\">Nome completo<\/label>\r\n              <input id=\"nome\" name=\"nome\" type=\"text\" autocomplete=\"name\" required>\r\n              <div class=\"err\" id=\"err-nome\">Indique o seu nome.<\/div>\r\n            <\/div>\r\n            <div>\r\n              <label class=\"req\" for=\"tel\">Telem\u00f3vel (WhatsApp)<\/label>\r\n              <input id=\"tel\" name=\"tel\" type=\"tel\" placeholder=\"+351 ...\" inputmode=\"tel\" required>\r\n              <div class=\"err\" id=\"err-tel\">Introduza um telem\u00f3vel portugu\u00eas v\u00e1lido.<\/div>\r\n            <\/div>\r\n\r\n            <!-- Row 2: Email | Fun\u00e7\u00e3o -->\r\n            <div>\r\n              <label class=\"req\" for=\"email\">Email<\/label>\r\n              <input id=\"email\" name=\"email\" type=\"email\" autocomplete=\"email\" required>\r\n              <div class=\"err\" id=\"err-email\">Introduza um email v\u00e1lido.<\/div>\r\n            <\/div>\r\n            <div>\r\n              <label class=\"req\">Fun\u00e7\u00e3o<\/label>\r\n              <div class=\"row\">\r\n                <label class=\"chip\">\r\n                  <input type=\"checkbox\" name=\"funcao\" value=\"Canalizador\"> Canalizador\r\n                <\/label>\r\n                <label class=\"chip\">\r\n                  <input type=\"checkbox\" name=\"funcao\" value=\"Eletricista\"> Eletricista\r\n                <\/label>\r\n                <label class=\"chip\">\r\n                  <input type=\"checkbox\" name=\"funcao\" value=\"Faz-Tudo\"> Faz-Tudo\r\n                <\/label>\r\n              <\/div>\r\n              <!-- Summary filled from Phase Zero (hidden by default) -->\r\n              <p id=\"ps-service-summary\" style=\"display:none;\"><\/p>\r\n              <div class=\"err\" id=\"err-func\">Selecione pelo menos uma fun\u00e7\u00e3o.<\/div>\r\n            <\/div>\r\n\r\n            <!-- Row 3: \u00c1reas (full width) -->\r\n            <div style=\"grid-column:1 \/ -1;\">\r\n              <label class=\"req\" for=\"areas-input\">\u00c1reas onde atua (pode selecionar v\u00e1rias)<\/label>\r\n\r\n              <!-- Bot\u00f5es r\u00e1pidos (bundles) -->\r\n              <div class=\"row areas-bundles\" id=\"areas-bundles\">\r\n                <button type=\"button\"\r\n                        class=\"areas-bundle-btn\"\r\n                        data-areas=\"Porto,Matosinhos,Vila Nova de Gaia,Maia,Gondomar\">\r\n                  Porto\r\n                <\/button>\r\n                <button type=\"button\"\r\n                        class=\"areas-bundle-btn\"\r\n                        data-areas=\"Porto,Matosinhos,Vila Nova de Gaia,Maia,Gondomar,Valongo,Espinho\">\r\n                  Grande Porto\r\n                <\/button>\r\n              <\/div>\r\n\r\n              <!-- Campo de pesquisa + sugest\u00f5es -->\r\n              <div class=\"areas-input-wrap\">\r\n                <input id=\"areas-input\"\r\n                       type=\"text\"\r\n                       autocomplete=\"off\">\r\n                <div class=\"areas-suggestions\" id=\"areas-suggestions\" role=\"listbox\"><\/div>\r\n              <\/div>\r\n\r\n              <!-- Tags selecionadas -->\r\n              <div class=\"areas-tags\" id=\"areas-tags\"><\/div>\r\n\r\n              <div class=\"muted\">\r\n                Pode escolher v\u00e1rias zonas. Use os bot\u00f5es r\u00e1pidos ou escreva o nome da zona.\r\n              <\/div>\r\n              <div class=\"err\" id=\"err-areas\">Selecione pelo menos uma \u00e1rea.<\/div>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"actions\">\r\n            <button type=\"button\" class=\"btn btn-secondary\" disabled>Anterior<\/button>\r\n            <button type=\"button\" class=\"btn btn-primary\" id=\"next1\">Pr\u00f3ximo<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- STEP 2 -->\r\n        <div class=\"ps-step\" data-step=\"2\">\r\n          <div class=\"grid g2\">\r\n            <div>\r\n              <label class=\"req\">Anos de experi\u00eancia<\/label>\r\n              <div class=\"row\" id=\"expRow\">\r\n                <label class=\"chip\"><input type=\"radio\" name=\"experiencia\" value=\"Menos de 1 ano\"> Menos de 1 ano<\/label>\r\n                <label class=\"chip\"><input type=\"radio\" name=\"experiencia\" value=\"1\u20134 anos\"> 1\u20134 anos<\/label>\r\n                <label class=\"chip\"><input type=\"radio\" name=\"experiencia\" value=\"5\u201310 anos\"> 5\u201310 anos<\/label>\r\n                <label class=\"chip\"><input type=\"radio\" name=\"experiencia\" value=\"Mais de 10 anos\"> Mais de 10 anos<\/label>\r\n              <\/div>\r\n              <div class=\"err\" id=\"err-exp\">Selecione uma op\u00e7\u00e3o.<\/div>\r\n            <\/div>\r\n            <div>\r\n              <label class=\"req\">Disponibilidade<\/label>\r\n              <div class=\"row\">\r\n                <label class=\"chip\"><input type=\"checkbox\" name=\"disp\" value=\"Dias \u00fateis\"> Dias \u00fateis<\/label>\r\n                <label class=\"chip\"><input type=\"checkbox\" name=\"disp\" value=\"Fins-de-semana\"> Fins-de-semana<\/label>\r\n                <label class=\"chip\"><input type=\"checkbox\" name=\"disp\" value=\"Urg\u00eancias 24h\"> Urg\u00eancias 24h<\/label>\r\n              <\/div>\r\n              <div class=\"err\" id=\"err-disp\">Selecione pelo menos uma disponibilidade.<\/div>\r\n            <\/div>\r\n            <div>\r\n              <label class=\"req\">Transporte pr\u00f3prio<\/label>\r\n              <div class=\"row\">\r\n                <label class=\"chip\"><input type=\"radio\" name=\"transporte\" value=\"Sim\"> Sim<\/label>\r\n                <label class=\"chip\"><input type=\"radio\" name=\"transporte\" value=\"N\u00e3o\"> N\u00e3o<\/label>\r\n              <\/div>\r\n              <div class=\"err\" id=\"err-transp\">Selecione uma op\u00e7\u00e3o.<\/div>\r\n            <\/div>\r\n            <div>\r\n              <label class=\"req\">Autorizado a trabalhar em Portugal<\/label>\r\n              <div class=\"row\">\r\n                <label class=\"chip\"><input type=\"radio\" name=\"workpt\" value=\"Sim\"> Sim<\/label>\r\n                <label class=\"chip\"><input type=\"radio\" name=\"workpt\" value=\"N\u00e3o\"> N\u00e3o<\/label>\r\n              <\/div>\r\n              <div class=\"err\" id=\"err-work\">Selecione uma op\u00e7\u00e3o.<\/div>\r\n            <\/div>\r\n            <div>\r\n              <label class=\"req\">Recibos verdes ou empresa<\/label>\r\n              <div class=\"row\">\r\n                <label class=\"chip\"><input type=\"radio\" name=\"fiscal\" value=\"Sim\"> Sim<\/label>\r\n                <label class=\"chip\"><input type=\"radio\" name=\"fiscal\" value=\"N\u00e3o\"> N\u00e3o<\/label>\r\n              <\/div>\r\n              <div class=\"err\" id=\"err-fiscal\">Selecione uma op\u00e7\u00e3o.<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"actions\">\r\n            <button type=\"button\" class=\"btn btn-secondary\" id=\"back2\">Anterior<\/button>\r\n            <button type=\"button\" class=\"btn btn-primary\" id=\"next2\">Pr\u00f3ximo<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- STEP 3 -->\r\n        <div class=\"ps-step\" data-step=\"3\">\r\n          <div class=\"grid g2\">\r\n            <div>\r\n              <label class=\"req\" for=\"callout\">Valor de desloca\u00e7\u00e3o (call-out fee) \u20ac<\/label>\r\n              <input id=\"callout\" name=\"callout\" type=\"number\" min=\"0\" step=\"1\" required>\r\n              <div class=\"err\" id=\"err-callout\">Indique o valor de desloca\u00e7\u00e3o.<\/div>\r\n            <\/div>\r\n            <div>\r\n              <label class=\"req\">M\u00e9todo preferido de pagamento<\/label>\r\n              <div class=\"row\">\r\n                <label class=\"chip\"><input type=\"radio\" name=\"paymethod\" value=\"MB WAY\"> MB WAY<\/label>\r\n                <label class=\"chip\"><input type=\"radio\" name=\"paymethod\" value=\"IBAN\"> IBAN<\/label>\r\n              <\/div>\r\n              <div class=\"err\" id=\"err-paymethod\">Selecione um m\u00e9todo.<\/div>\r\n            <\/div>\r\n            <div class=\"iban-wrap\">\r\n              <label for=\"iban\">IBAN (opcional, obrigat\u00f3rio se escolher IBAN)<\/label>\r\n              <input id=\"iban\" name=\"iban\" type=\"text\" placeholder=\"PT50\u2026\">\r\n              <div class=\"err\" id=\"err-iban\">IBAN inv\u00e1lido. Deve come\u00e7ar por PT e ter 25 caracteres.<\/div>\r\n            <\/div>\r\n            <div>\r\n              <label class=\"req\" for=\"assinatura\">Assinatura (nome completo)<\/label>\r\n              <input id=\"assinatura\" name=\"assinatura\" type=\"text\" required>\r\n              <div class=\"err\" id=\"err-ass\">Confirme a assinatura.<\/div>\r\n            <\/div>\r\n            <div class=\"ps-terms-row\">\r\n              <label class=\"ps-terms-chip\" for=\"termos\">\r\n                <input type=\"checkbox\" id=\"termos\">\r\n                <span>\r\n                  Li e aceito as\r\n                  <a href=\"https:\/\/prontosolucoes.pt\/partner-terms\/\" target=\"_blank\" rel=\"noopener\">\r\n                    <span class=\"ps-terms-keyword\">condi\u00e7\u00f5es<\/span>\r\n                    <\/a>\r\n                     de colabora\u00e7\u00e3o e a pol\u00edtica de comiss\u00f5es da Pronto Solu\u00e7\u00f5es.\r\n                <\/span>\r\n              <\/label>\r\n              <div class=\"err\" id=\"err-termos\">Tem de aceitar as condi\u00e7\u00f5es.<\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"actions\">\r\n            <button type=\"button\" class=\"btn btn-secondary\" id=\"back3\">Anterior<\/button>\r\n            <button type=\"submit\" class=\"btn btn-primary\" id=\"submitBtn\">Enviar candidatura<\/button>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <!-- SUCCESS -->\r\n        <div id=\"ps-success\" style=\"display:none;margin-top:14px\" class=\"success\">\r\n          \ud83c\udf89 Candidatura enviada com sucesso. Iremos contact\u00e1-lo nas pr\u00f3ximas 24\u201348 horas.\r\n        <\/div>\r\n      <\/form>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    (function(){\r\n      \/\/ Success page for t\u00e9cnico registration\r\n      const successUrl = \"\/candidatura-tecnico-sucesso\";\r\n\r\n      \/* Ensure app-mode is active so Blocksy header\/footer are hidden on this page *\/\r\n      document.body.classList.add('ps-app-mode');\r\n\r\n      \/* Improve multi-select usability on small screens *\/\r\n      const areasSelInit = document.getElementById('areas');\r\n      if (areasSelInit && window.matchMedia('(max-width: 480px)').matches) {\r\n        areasSelInit.setAttribute('size','8');\r\n      }\r\n      \/\/ ===== Phase Zero \u2192 Candidatura: carry over selected service =====\r\n      function getPhaseZeroServiceFromUrl(){\r\n        try{\r\n          const params = new URLSearchParams(window.location.search);\r\n          return (params.get(\"service\") || \"\").trim();\r\n        }catch(e){\r\n          return \"\";\r\n        }\r\n      }\r\n\r\n      function getPhaseZeroService(){\r\n        \/\/ Used for payload\/analytics: URL first, then localStorage\r\n        const fromUrl = getPhaseZeroServiceFromUrl();\r\n        if (fromUrl) return fromUrl;\r\n\r\n        let raw = \"\";\r\n        try{\r\n          raw = localStorage.getItem(\"pronto_pro_service\") || \"\";\r\n        }catch(e){}\r\n        return raw.trim();\r\n      }\r\n\r\n      function inferTradesFromService(raw){\r\n        if(!raw) return [];\r\n        \/\/ Map Phase Zero trades \u2192 Step 1 checkbox values\r\n        const tradeMap = {\r\n          \"canalizador\": \"Canalizador\",\r\n          \"eletricista\": \"Eletricista\",\r\n          \"faz-tudo\": \"Faz-Tudo\"\r\n        };\r\n        const trades = [];\r\n\r\n        raw\r\n          .split(\"|\")\r\n          .map(p => p.trim())\r\n          .filter(Boolean)\r\n          .forEach(part => {\r\n            \/\/ Phase Zero uses \"Trade - Sub1, Sub2\"\r\n            const segments = part.split(\" - \");\r\n            const main = (segments[0] || \"\").trim().toLowerCase();\r\n            const canonical = tradeMap[main];\r\n            if (canonical && !trades.includes(canonical)) {\r\n              trades.push(canonical);\r\n            }\r\n          });\r\n\r\n        return trades;\r\n      }\r\n      function prefillFuncaoFromPhaseZero(){\r\n        \/\/ For locking, we only trust the URL param (directly from Phase Zero)\r\n        const raw = getPhaseZeroServiceFromUrl();\r\n        if (!raw) return;\r\n\r\n        const trades = inferTradesFromService(raw);\r\n        if (!trades.length) return;\r\n\r\n        const checkboxes = Array.from(document.querySelectorAll('input[name=\"funcao\"]'));\r\n        if (!checkboxes.length) return;\r\n\r\n        \/\/ Pre-check only the trades coming from Phase Zero\r\n        \/\/ and lock the whole group so it cannot be changed here.\r\n        checkboxes.forEach(cb => {\r\n          if (trades.includes(cb.value)) {\r\n            cb.checked = true;\r\n          } else {\r\n            cb.checked = false;\r\n          }\r\n          cb.disabled = true;\r\n        });\r\n\r\n        \/\/ Optional summary if you add <p id=\"ps-service-summary\">\u2026<\/p>\r\n        const summaryEl = document.getElementById(\"ps-service-summary\");\r\n        if (summaryEl) {\r\n          summaryEl.textContent = raw;\r\n          summaryEl.style.display = \"block\";\r\n        }\r\n      }\r\n\r\n      const $ = (s,p=document)=>p.querySelector(s);\r\n      const $$ = (s,p=document)=>Array.from(p.querySelectorAll(s));\r\n\r\n      const steps = $$(\".ps-step\");\r\n      const bar = $(\"#ps-bar\");\r\n      const stepLabel = $(\"#ps-stepLabel\");\r\n      let current = 0;\r\n\r\n\/\/ Appbar: smart back fallback + WhatsApp help\r\nconst TECNICOS_FALLBACK = \"\/pt\/tecnicos\";\r\nconst HELP_WA_NUMBER = \"351923250285\"; \/\/ no \"+\"\r\n\r\nconst helpLink = $(\"#ps-help\") || $(\".ps-help\");\r\n\r\nfunction buildHelpWhatsAppUrl(){\r\n  const step = `${current+1}\/${steps.length}`;\r\n  const msg = `Ol\u00e1! Preciso de ajuda com o formul\u00e1rio de candidatura de t\u00e9cnico (Passo ${step}).`;\r\n  return `https:\/\/wa.me\/${HELP_WA_NUMBER}?text=${encodeURIComponent(msg)}`;\r\n}\r\n\r\nfunction updateHelpHref(){\r\n  if (!helpLink) return;\r\n  helpLink.setAttribute(\"href\", buildHelpWhatsAppUrl());\r\n}\r\n\r\nfunction smartExitToTecnicos(){\r\n  try{\r\n    if (history.length > 1 && document.referrer){\r\n      const ref = new URL(document.referrer);\r\n      if (ref.origin === window.location.origin){\r\n        history.back();\r\n        return;\r\n      }\r\n    }\r\n  }catch(e){}\r\n  window.location.href = TECNICOS_FALLBACK;\r\n}\r\n\r\nif (helpLink){\r\n  helpLink.addEventListener(\"click\", (e)=>{\r\n    e.preventDefault();\r\n    window.location.href = buildHelpWhatsAppUrl();\r\n  });\r\n}\r\n\r\n      \/* ===== \u00c1reas widget: data + helpers ===== *\/\r\n      const ALL_AREAS = [\r\n        \"Porto\",\r\n        \"Matosinhos\",\r\n        \"Vila Nova de Gaia\",\r\n        \"Maia\",\r\n        \"Gondomar\",\r\n        \"Valongo\",\r\n        \"Le\u00e7a do Balio\",\r\n        \"P\u00f3voa de Varzim\",\r\n        \"Espinho\"\r\n      ];\r\n\r\n      const selectedAreas = new Set();\r\n\r\n      const areasInput = $(\"#areas-input\");\r\n      const areasSuggestions = $(\"#areas-suggestions\");\r\n      const areasTags = $(\"#areas-tags\");\r\n      const areasBundleButtons = $$(\".areas-bundle-btn\");\r\n\r\n      function getSelectedAreas(){\r\n        return Array.from(selectedAreas);\r\n      }\r\n\r\n      function addArea(name){\r\n        const clean = (name || \"\").trim();\r\n        if (!clean) return;\r\n        selectedAreas.add(clean);\r\n        renderAreasTags();\r\n      }\r\n\r\n      function removeArea(name){\r\n        selectedAreas.delete(name);\r\n        renderAreasTags();\r\n      }\r\n\r\n      function renderAreasTags(){\r\n        if (!areasTags) return;\r\n        areasTags.innerHTML = \"\";\r\n\r\n        getSelectedAreas().forEach(area => {\r\n          const tag = document.createElement(\"span\");\r\n          tag.className = \"areas-tag\";\r\n\r\n          const label = document.createElement(\"span\");\r\n          label.textContent = area;\r\n\r\n          const btn = document.createElement(\"button\");\r\n          btn.type = \"button\";\r\n          btn.className = \"areas-tag-remove\";\r\n          btn.setAttribute(\"aria-label\", \"Remover \" + area);\r\n          btn.textContent = \"\u00d7\";\r\n          btn.addEventListener(\"click\", () => removeArea(area));\r\n\r\n          tag.appendChild(label);\r\n          tag.appendChild(btn);\r\n          areasTags.appendChild(tag);\r\n        });\r\n\r\n        \/\/ Mant\u00e9m os bot\u00f5es Porto \/ Grande Porto sincronizados com as tags\r\n        updateAreasBundlesVisual();\r\n      }\r\n\r\n      function updateAreasBundlesVisual(){\r\n        if (!areasBundleButtons.length) return;\r\n\r\n        areasBundleButtons.forEach(btn => {\r\n          const areasStr = btn.dataset.areas || \"\";\r\n          const list = areasStr.split(\",\").map(s => s.trim()).filter(Boolean);\r\n          if (!list.length) {\r\n            btn.classList.remove(\"active\");\r\n            return;\r\n          }\r\n\r\n          const allIncluded = list.every(area => selectedAreas.has(area));\r\n          btn.classList.toggle(\"active\", allIncluded);\r\n        });\r\n      }\r\n\r\n      function closeAreasSuggestions(){\r\n        if (areasSuggestions){\r\n          areasSuggestions.classList.remove(\"open\");\r\n          areasSuggestions.innerHTML = \"\";\r\n        }\r\n      }\r\n\r\n      function openAreasSuggestions(list){\r\n        if (!areasSuggestions) return;\r\n        areasSuggestions.innerHTML = \"\";\r\n        if (!list.length){\r\n          closeAreasSuggestions();\r\n          return;\r\n        }\r\n        list.forEach(area => {\r\n          const item = document.createElement(\"div\");\r\n          item.className = \"areas-suggestion-item\";\r\n          item.textContent = area;\r\n          item.dataset.area = area;\r\n          item.addEventListener(\"click\", () => {\r\n            addArea(area);\r\n            if (areasInput){\r\n              areasInput.value = \"\";\r\n            }\r\n            closeAreasSuggestions();\r\n          });\r\n          areasSuggestions.appendChild(item);\r\n        });\r\n        areasSuggestions.classList.add(\"open\");\r\n      }\r\n\r\n      function filterAreasSuggestions(query){\r\n        const q = (query || \"\").trim().toLowerCase();\r\n        const already = new Set(getSelectedAreas().map(a => a.toLowerCase()));\r\n        if (!q){\r\n          closeAreasSuggestions();\r\n          return;\r\n        }\r\n        const matches = ALL_AREAS.filter(a =>\r\n          a.toLowerCase().includes(q) && !already.has(a.toLowerCase())\r\n        );\r\n        openAreasSuggestions(matches);\r\n      }\r\n\r\n      function initAreasWidget(){\r\n        if (areasInput){\r\n          areasInput.addEventListener(\"input\", () => {\r\n            filterAreasSuggestions(areasInput.value);\r\n          });\r\n          areasInput.addEventListener(\"keydown\", (e) => {\r\n            if (e.key === \"Enter\"){\r\n              e.preventDefault();\r\n              const first = areasSuggestions && areasSuggestions.querySelector(\".areas-suggestion-item\");\r\n              if (first){\r\n                const area = first.dataset.area || first.textContent;\r\n                addArea(area);\r\n                areasInput.value = \"\";\r\n                closeAreasSuggestions();\r\n              } else {\r\n                const q = (areasInput.value || \"\").trim();\r\n                if (!q) return;\r\n                const exact = ALL_AREAS.find(a => a.toLowerCase() === q.toLowerCase());\r\n                if (exact){\r\n                  addArea(exact);\r\n                  areasInput.value = \"\";\r\n                  closeAreasSuggestions();\r\n                }\r\n              }\r\n            } else if (e.key === \"Escape\"){\r\n              closeAreasSuggestions();\r\n            }\r\n          });\r\n        }\r\n\r\n        document.addEventListener(\"click\", (e) => {\r\n          if (!areasSuggestions || !areasInput) return;\r\n          if (!areasSuggestions.contains(e.target) && e.target !== areasInput){\r\n            closeAreasSuggestions();\r\n          }\r\n        });\r\n\r\n        if (areasBundleButtons.length){\r\n          areasBundleButtons.forEach(btn => {\r\n            btn.addEventListener(\"click\", () => {\r\n              const areasStr = btn.dataset.areas || \"\";\r\n              const list = areasStr.split(\",\").map(s => s.trim()).filter(Boolean);\r\n              if (!list.length) return;\r\n\r\n              \/\/ Se j\u00e1 tiver todas as \u00e1reas deste bundle, clicar de novo desmarca o grupo\r\n              const allIncluded = list.every(area => selectedAreas.has(area));\r\n              if (allIncluded){\r\n                list.forEach(removeArea);\r\n              } else {\r\n                list.forEach(addArea);\r\n              }\r\n              \/\/ addArea\/removeArea j\u00e1 chamam renderAreasTags() \u2192 que atualiza os bot\u00f5es\r\n            });\r\n          });\r\n        }\r\n      }\r\nconst updateProgress = ()=>{\r\n  const pct = ((current+1)\/steps.length)*100;\r\n  bar.style.width = pct+\"%\";\r\n  stepLabel.textContent = `Passo ${current+1} de ${steps.length}`;\r\n  updateHelpHref();\r\n};\r\n      const showStep = (i)=>{\r\n        steps[current].classList.remove(\"active\");\r\n        current = Math.max(0, Math.min(i, steps.length-1));\r\n        steps[current].classList.add(\"active\");\r\n        updateProgress();\r\n        window.scrollTo({top:document.querySelector(\"#ps-apply\").offsetTop-10,behavior:\"smooth\"});\r\n      };\r\n      updateProgress();\r\n\r\n      \/\/ Pre-select \"Fun\u00e7\u00e3o\" based on Phase Zero hero selection\r\n      prefillFuncaoFromPhaseZero();\r\n\r\n      \/\/ Iniciar widget de \u00c1reas (pesquisa + tags)\r\n      initAreasWidget();\r\n\r\n      \/\/ Clicar no link de termos n\u00e3o deve alternar o checkbox\r\n      const termsLink = document.querySelector(\".ps-terms-chip a\");\r\n      if (termsLink){\r\n        termsLink.addEventListener(\"click\", (e)=>{\r\n          e.stopPropagation();\r\n        });\r\n      }\r\n\r\n\/\/ Appbar back (mobile): step back, else smart exit (history back if in-site, otherwise \/pt\/tecnicos)\r\nconst backBtn = $(\".ps-back\");\r\nif(backBtn){\r\n  backBtn.addEventListener(\"click\", ()=>{\r\n    if(current>0) showStep(current-1);\r\n    else smartExitToTecnicos();\r\n  });\r\n}\r\n\r\n      const isPTPhone = v => { const d = v.replace(\/\\s+\/g,''); return \/^(\\+351)?9\\d{8}$\/.test(d); };\r\n      const isEmail = v => \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(v);\r\n      const getCheckedVals = (name)=> $$(\"input[name=\\\"\"+name+\"\\\"]:checked\").map(i=>i.value);\r\n      const getRadio = (name)=> ( $(\"input[name=\\\"\"+name+\"\\\"]:checked\") || {} ).value || \"\";\r\n\r\n      const validateStep1 = ()=>{\r\n        const nome  = $(\"#nome\").value.trim();\r\n        const tel   = $(\"#tel\").value.trim();\r\n        const email = $(\"#email\").value.trim();\r\n        const funcs = getCheckedVals(\"funcao\");\r\n        const areas = getSelectedAreas();\r\n\r\n        $(\"#err-nome\").classList.toggle(\"show\", !nome);\r\n        $(\"#err-tel\").classList.toggle(\"show\", !isPTPhone(tel));\r\n        $(\"#err-email\").classList.toggle(\"show\", !isEmail(email));\r\n        $(\"#err-func\").classList.toggle(\"show\", funcs.length===0);\r\n        $(\"#err-areas\").classList.toggle(\"show\", areas.length===0);\r\n\r\n        return nome && isPTPhone(tel) && isEmail(email) && funcs.length>0 && areas.length>0;\r\n      };\r\n\r\n      const validateStep2 = ()=>{\r\n        const exp    = getRadio(\"experiencia\");\r\n        const disp   = getCheckedVals(\"disp\");\r\n        const transp = getRadio(\"transporte\");\r\n        const work   = getRadio(\"workpt\");\r\n        const fiscal = getRadio(\"fiscal\");\r\n\r\n        $(\"#err-exp\").classList.toggle(\"show\", !exp);\r\n        $(\"#err-disp\").classList.toggle(\"show\", disp.length===0);\r\n        $(\"#err-transp\").classList.toggle(\"show\", !transp);\r\n        $(\"#err-work\").classList.toggle(\"show\", !work);\r\n        $(\"#err-fiscal\").classList.toggle(\"show\", !fiscal);\r\n\r\n        if (work === \"N\u00e3o\"){\r\n          alert(\"Atualmente s\u00f3 podemos aceitar t\u00e9cnicos com autoriza\u00e7\u00e3o de trabalho em Portugal.\");\r\n          return false;\r\n        }\r\n\r\n        return !!exp && disp.length>0 && !!transp && !!work && !!fiscal;\r\n      };\r\n\r\n      const validateStep3 = ()=>{\r\n        const calloutStr = $(\"#callout\").value.trim();\r\n        const calloutNum = calloutStr === \"\" ? NaN : Number(calloutStr);\r\n        const paymethod  = getRadio(\"paymethod\");\r\n        const ibanRaw    = $(\"#iban\").value.replace(\/\\s+\/g, \"\").toUpperCase();\r\n        const termos     = $(\"#termos\").checked;\r\n        const assinatura = $(\"#assinatura\").value.trim();\r\n\r\n        let calloutOK = false;\r\n\r\n        if (calloutStr === \"\" || Number.isNaN(calloutNum) || calloutNum < 0){\r\n          \/\/ vazio, negativo ou inv\u00e1lido\r\n          $(\"#err-callout\").textContent = \"Indique o valor de desloca\u00e7\u00e3o.\";\r\n          calloutOK = false;\r\n        } else if (calloutNum > 40){\r\n          \/\/ acima do m\u00e1ximo permitido\r\n          $(\"#err-callout\").textContent = \"O valor m\u00e1ximo de desloca\u00e7\u00e3o \u00e9 40 \u20ac.\";\r\n          calloutOK = false;\r\n        } else {\r\n          \/\/ 0\u201340 (incluindo 40)\r\n          $(\"#err-callout\").textContent = \"Indique o valor de desloca\u00e7\u00e3o.\";\r\n          calloutOK = true;\r\n        }\r\n        $(\"#err-callout\").classList.toggle(\"show\", !calloutOK);\r\n\r\n        $(\"#err-paymethod\").classList.toggle(\"show\", !paymethod);\r\n\r\n        let ibanOK = true;\r\n        if (paymethod === \"IBAN\"){\r\n          ibanOK = \/^PT[0-9A-Z]{23}$\/.test(ibanRaw) && ibanRaw.length === 25;\r\n          $(\"#err-iban\").classList.toggle(\"show\", !ibanOK);\r\n        } else {\r\n          $(\"#err-iban\").classList.remove(\"show\");\r\n        }\r\n\r\n        $(\"#err-termos\").classList.toggle(\"show\", !termos);\r\n        $(\"#err-ass\").classList.toggle(\"show\", !assinatura);\r\n\r\n        return calloutOK && !!paymethod && !!ibanOK && termos && !!assinatura;\r\n      };\r\n\r\n      $(\"#next1\").addEventListener(\"click\", ()=>{ if(validateStep1()) showStep(1); });\r\n      $(\"#back2\").addEventListener(\"click\", ()=> showStep(0));\r\n      $(\"#next2\").addEventListener(\"click\", ()=>{ if(validateStep2()) showStep(2); });\r\n      $(\"#back3\").addEventListener(\"click\", ()=> showStep(1));\r\n\r\n      \/* Submit: save to WP inbox, then mirror to CRM (kept from your logic) *\/\r\n      $(\"#ps-form\").addEventListener(\"submit\", async (e)=>{\r\n        e.preventDefault();\r\n        if(!validateStep3()) return;\r\n        \/\/ Honeypot gate\r\n        const hpVal = $(\"#hp\")?.value.trim();\r\n        const submitBtn = $(\"#submitBtn\");\r\n        if (hpVal) {\r\n          $(\"#ps-success\").style.display=\"block\";\r\n          e.target.reset();\r\n          showStep(0);\r\n          return;\r\n        }\r\n        const data = collectPayload();\r\n        submitBtn.disabled = true; submitBtn.textContent = \"A enviar\u2026\";\r\n        try{\r\n          \/\/ 1) Save to WP Applications inbox\r\n          const resApply = await fetch(\"\/wp-json\/pronto\/v1\/tech-apply\",{\r\n            method:\"POST\",\r\n            headers:{ \"Content-Type\":\"application\/json\" },\r\n            body: JSON.stringify(data)\r\n          });\r\n          if(!resApply.ok) throw new Error(\"apply_failed\");\r\n          const applyJson = await resApply.json();\r\n          const appId = applyJson?.id;\r\n          \/\/ 2) Mirror to CRM ingest (non-blocking)\r\n          try{\r\n            const ac = new AbortController();\r\n            const timer = setTimeout(()=>ac.abort(), 5000);\r\n            await fetch(\"\/wp-json\/pronto\/v1\/ingest\",{\r\n              method:\"POST\",\r\n              headers:{ \"Content-Type\":\"application\/json\" },\r\n              body: JSON.stringify({ event:\"tech_application\", ts: Date.now(), payload: { ...data, wp_app_id: appId } }),\r\n              signal: ac.signal,\r\n              keepalive: true\r\n            });\r\n            clearTimeout(timer);\r\n          } catch(crmErr){ console.warn(\"CRM ingest failed or timed out:\", crmErr); }\r\n          \/\/ If we have a dedicated success page, redirect there\r\n          if (successUrl) {\r\n            window.location.href = successUrl;\r\n            return;\r\n          }\r\n\r\n          \/\/ Fallback: inline success message if no successUrl is set\r\n          $(\"#ps-success\").style.display = \"block\";\r\n          e.target.reset();\r\n          showStep(0);\r\n        } catch(err){\r\n          alert(\"N\u00e3o foi poss\u00edvel enviar agora. Tente novamente dentro de momentos.\");\r\n        } finally{\r\n          submitBtn.disabled = false; submitBtn.textContent = \"Enviar candidatura\";\r\n        }\r\n      });\r\n\r\n      function collectPayload(){\r\n        const getCheckedVals = (name)=> Array.from(document.querySelectorAll(`input[name=\"${name}\"]:checked`)).map(i=>i.value);\r\n        const getRadio       = (name)=> (document.querySelector(`input[name=\"${name}\"]:checked`)||{}).value || \"\";\r\n        const areasList      = getSelectedAreas();   \/\/ usa o widget de \u00c1reas\r\n\r\n        const calloutStr = document.querySelector(\"#callout\").value.trim();\r\n        const calloutNum = calloutStr === \"\" ? 0 : (Number(calloutStr) || 0);\r\n\r\n        return {\r\n          source:\"prontosolucoes.pt\",\r\n          step_version:\"v1-minimal-ptpt-no-wa-phone\",\r\n          phase_zero_service: getPhaseZeroService(),\r\n\r\n          nome: document.querySelector(\"#nome\").value.trim(),\r\n          tel: document.querySelector(\"#tel\").value.trim(),\r\n          email: document.querySelector(\"#email\").value.trim(),\r\n\r\n          funcoes: getCheckedVals(\"funcao\"),\r\n          experiencia: getRadio(\"experiencia\"),\r\n          disponibilidade: getCheckedVals(\"disp\"),\r\n          transporte: getRadio(\"transporte\"),\r\n          autorizado_trabalhar: getRadio(\"workpt\"),\r\n          fiscalidade: getRadio(\"fiscal\"),\r\n          areas: areasList,\r\n\r\n          callout_fee_eur: calloutNum,\r\n          needs_manual_review: calloutNum === 40,\r\n\r\n          paymethod: getRadio(\"paymethod\"),\r\n          iban: document.querySelector(\"#iban\").value.trim(),\r\n          assinatura: document.querySelector(\"#assinatura\").value.trim(),\r\n          consent: document.querySelector(\"#termos\").checked,\r\n\r\n          ua: navigator.userAgent,\r\n          hp: document.querySelector(\"#hp\")?.value || \"\"\r\n        };\r\n      }\r\n    })();\r\n  <\/script>\r\n<\/section>\r\n\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>\u2039 Candidatura Ajuda Junte-se \u00e0 Rede de T\u00e9cnicos Pronto Solu\u00e7\u00f5es Passo 1 de 3 Nome completo Indique o seu nome. Telem\u00f3vel (WhatsApp) Introduza um telem\u00f3vel portugu\u00eas v\u00e1lido. Email Introduza um email v\u00e1lido. Fun\u00e7\u00e3o Canalizador Eletricista Faz-Tudo Selecione pelo menos uma fun\u00e7\u00e3o. \u00c1reas onde atua (pode selecionar v\u00e1rias) Porto Grande Porto Pode escolher v\u00e1rias zonas. Use [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4021,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2882","page","type-page","status-publish","hentry"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"_links":{"self":[{"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/pages\/2882","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/comments?post=2882"}],"version-history":[{"count":5,"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/pages\/2882\/revisions"}],"predecessor-version":[{"id":6576,"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/pages\/2882\/revisions\/6576"}],"up":[{"embeddable":true,"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/pages\/4021"}],"wp:attachment":[{"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/media?parent=2882"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}