{"id":1560,"date":"2025-04-26T18:53:09","date_gmt":"2025-04-26T17:53:09","guid":{"rendered":"https:\/\/prontosolucoes.pt\/?page_id=1560"},"modified":"2026-10-09T15:28:20","modified_gmt":"2026-10-09T14:28:20","slug":"homepage","status":"publish","type":"page","link":"https:\/\/prontosolucoes.pt\/pt\/","title":{"rendered":"P\u00e1gina inicial"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"1560\" class=\"elementor elementor-1560\">\n\t\t\t\t<div class=\"elementor-element elementor-element-b890193 e-con-full e-flex e-con e-parent\" data-id=\"b890193\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4b261f6 elementor-widget elementor-widget-html\" data-id=\"4b261f6\" 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 | Homepage Hero Content + Booking Lab Bar -->\r\n<div id=\"pronto-home-hero-content\" class=\"pronto-home-hero-content\">\r\n  <style>\r\n    \r\n    body .elementor-widget-html:has(#pronto-home-hero-content),\r\n    body .elementor-widget-html:has(#pronto-home-hero-content) > .elementor-widget-container,\r\n    body .e-con:has(#pronto-home-hero-content),\r\n    body .e-con-inner:has(#pronto-home-hero-content) {\r\n      --padding-top: 0px !important;\r\n      --padding-right: 0px !important;\r\n      --padding-bottom: 0px !important;\r\n      --padding-left: 0px !important;\r\n      --gap: 0px !important;\r\n      margin: 0 !important;\r\n      padding: 0 !important;\r\n      gap: 0 !important;\r\n    }\r\n\r\n    body .elementor-widget-html:has(#pronto-home-hero-content) {\r\n      width: 100%;\r\n      min-height: 600px;\r\n      background:\r\n        linear-gradient(\r\n          rgba(0, 0, 0, 0.60),\r\n          rgba(0, 0, 0, 0.60)\r\n        ),\r\n        url(\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2025\/06\/pronto-solucoes-hero-optimized.webp\");\r\n      background-position: center center;\r\n      background-repeat: no-repeat;\r\n      background-size: cover;\r\n      background-attachment: scroll;\r\n    }\r\n\r\n    body .elementor-widget-html:has(#pronto-home-hero-content) > .elementor-widget-container {\r\n      width: 100%;\r\n      min-height: 600px;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n    }\r\n\r\n    #pronto-home-hero-content {\r\n      --pronto-navy: #0F2B49;\r\n      --pronto-yellow: #E1A134;\r\n      --pronto-white: #FFFFFF;\r\n    }\r\n\r\n    #pronto-home-hero-content.pronto-home-hero-content {\r\n      width: min(100%, 860px);\r\n      margin: 0 auto;\r\n      padding-left: 24px;\r\n      padding-right: 24px;\r\n      box-sizing: border-box;\r\n      text-align: center;\r\n    }\r\n    #pronto-home-hero-content .phc-title {\r\n      margin: 0 0 20px;\r\n      color: var(--pronto-white);\r\n      font: 800 54px\/1.05 \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n      letter-spacing: -1px;\r\n      text-shadow: 0 2px 4px rgba(0, 0, 0, 0.38), 0 8px 22px rgba(0, 0, 0, 0.32);\r\n      transform: translateY(-12px);\r\n    }\r\n\r\n    #pronto-home-hero-content .phc-subtitle {\r\n      margin: 0 auto 36px;\r\n      max-width: 660px;\r\n      color: var(--pronto-white);\r\n      font: 500 18px\/1.45 \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n      text-shadow: 0 1px 3px rgba(0, 0, 0, 0.34);\r\n    }\r\n    #pronto-home-hero-content .phb-button {\r\n      width: min(100%, 760px);\r\n      margin: 0 auto;\r\n      display: grid;\r\n      grid-template-columns: minmax(0, 1fr) auto;\r\n      align-items: center;\r\n      gap: 12px;\r\n      border: 1px solid rgba(255, 255, 255, 0.50);\r\n      border-radius: 18px;\r\n      padding: 12px;\r\n      box-sizing: border-box;\r\n      background: rgba(255, 255, 255, 0.22);\r\n      -webkit-backdrop-filter: blur(18px) saturate(170%);\r\n              backdrop-filter: blur(18px) saturate(170%);\r\n      box-shadow: 0 16px 38px rgba(0, 0, 0, 0.22);\r\n      cursor: pointer;\r\n      text-align: left;\r\n      appearance: none;\r\n      transition: transform 180ms ease, box-shadow 180ms ease;\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-button:hover {\r\n      transform: translateY(-1px);\r\n      box-shadow: 0 18px 42px rgba(0, 0, 0, 0.26);\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-button:focus-visible {\r\n      outline: 3px solid rgba(225, 161, 52, 0.55);\r\n      outline-offset: 3px;\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-query {\r\n      min-height: 58px;\r\n      display: grid;\r\n      grid-template-columns: minmax(0, 1fr) auto minmax(140px, 0.42fr);\r\n      align-items: center;\r\n      border-radius: 14px;\r\n      background: rgba(255, 255, 255, 0.90);\r\n      -webkit-backdrop-filter: blur(10px) saturate(150%);\r\n              backdrop-filter: blur(10px) saturate(150%);\r\n      border: 1px solid rgba(255, 255, 255, 0.62);\r\n      color: var(--pronto-navy);\r\n      overflow: hidden;\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-main,\r\n    #pronto-home-hero-content .phb-location {\r\n      min-height: 58px;\r\n      display: flex;\r\n      align-items: center;\r\n      background: transparent;\r\n      color: var(--pronto-navy);\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-main {\r\n      gap: 11px;\r\n      min-width: 0;\r\n      padding: 0 20px;\r\n      font: 700 16px\/1.2 \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-main-label {\r\n      white-space: nowrap;\r\n      overflow: hidden;\r\n      text-overflow: ellipsis;\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-main-text-mobile {\r\n      display: none;\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-divider {\r\n      width: 1px;\r\n      height: 30px;\r\n      background: rgba(15, 43, 73, 0.20);\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-location {\r\n      justify-content: center;\r\n      gap: 8px;\r\n      padding: 0 18px;\r\n      font: 800 15px\/1.2 \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n      white-space: nowrap;\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-search-icon,\r\n    #pronto-home-hero-content .phb-location-icon {\r\n      flex: 0 0 auto;\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-action {\r\n      min-height: 58px;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      border-radius: 14px;\r\n      padding: 0 26px;\r\n      background: #D99425;\r\n      color: #FFFFFF;\r\n      font: 800 15px\/1 \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n      white-space: nowrap;\r\n      text-shadow: 0 1px 1px rgba(0, 0, 0, 0.18);\r\n      box-shadow: 0 9px 22px rgba(225, 161, 52, 0.30);\r\n    }\r\n\r\n    #pronto-home-hero-content .phb-action-arrow {\r\n      display: none;\r\n    }\r\n    @media (min-width: 641px) and (max-width: 900px) {\r\n      #pronto-home-hero-content.pronto-home-hero-content {\r\n        width: min(100%, 820px);\r\n        padding-left: clamp(28px, 5vw, 44px);\r\n        padding-right: clamp(28px, 5vw, 44px);\r\n      }\r\n\r\n      #pronto-home-hero-content .phc-title {\r\n        max-width: 700px;\r\n        margin-left: auto;\r\n        margin-right: auto;\r\n        font-size: clamp(40px, 6vw, 48px);\r\n        line-height: 1.06;\r\n        transform: translateY(-6px);\r\n      }\r\n\r\n      #pronto-home-hero-content .phc-subtitle {\r\n        max-width: 580px;\r\n        margin-bottom: 30px;\r\n        font-size: 16px;\r\n        line-height: 1.42;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-button {\r\n        width: min(100%, 680px);\r\n        gap: 10px;\r\n        padding: 10px;\r\n        border-radius: 17px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-query {\r\n        min-height: 54px;\r\n        grid-template-columns: minmax(0, 1fr) auto minmax(118px, 0.36fr);\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-main,\r\n      #pronto-home-hero-content .phb-location {\r\n        min-height: 54px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-main {\r\n        padding: 0 16px;\r\n        font-size: 15px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-location {\r\n        padding: 0 14px;\r\n        font-size: 14px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-action {\r\n        min-height: 54px;\r\n        padding: 0 22px;\r\n        font-size: 14px;\r\n      }\r\n    }\r\n    @media (max-width: 640px) {\r\n      body .elementor-widget-html:has(#pronto-home-hero-content) {\r\n        min-height: 350px;\r\n        background-position: center right;\r\n      }\r\n\r\n      body .elementor-widget-html:has(#pronto-home-hero-content) > .elementor-widget-container {\r\n        min-height: 350px;\r\n      }\r\n\r\n      #pronto-home-hero-content.pronto-home-hero-content {\r\n        width: min(100%, 390px);\r\n        padding-top: 18px;\r\n        padding-left: 14px;\r\n        padding-right: 14px;\r\n        box-sizing: border-box;\r\n      }\r\n\r\n      #pronto-home-hero-content .phc-title {\r\n        max-width: 330px;\r\n        margin: 0 auto 12px;\r\n        font-size: 30px;\r\n        line-height: 1.08;\r\n        letter-spacing: -0.6px;\r\n        transform: none;\r\n      }\r\n\r\n      #pronto-home-hero-content .phc-subtitle {\r\n        max-width: 310px;\r\n        margin-bottom: 18px;\r\n        font-size: 14px;\r\n        line-height: 1.38;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-button {\r\n        width: min(94%, 350px);\r\n        margin-left: auto;\r\n        margin-right: auto;\r\n        grid-template-columns: minmax(0, 1fr) auto;\r\n        gap: 7px;\r\n        padding: 7px;\r\n        border-radius: 16px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-query {\r\n        min-height: 42px;\r\n        grid-template-columns: minmax(0, 1fr) auto minmax(78px, auto);\r\n        border-radius: 12px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-main,\r\n      #pronto-home-hero-content .phb-location {\r\n        min-height: 42px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-main {\r\n        gap: 6px;\r\n        padding: 0 9px;\r\n        font-size: 12.5px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-main-label {\r\n        font-size: 0;\r\n        line-height: 1;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-main-text-desktop {\r\n        display: none;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-main-text-mobile {\r\n        display: inline;\r\n        font: 700 11.5px\/1.12 \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n        letter-spacing: -0.15px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-divider {\r\n        height: 22px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-location {\r\n        gap: 4px;\r\n        padding: 0 8px;\r\n        font-size: 12.3px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-search-icon,\r\n      #pronto-home-hero-content .phb-location-icon {\r\n        width: 16px;\r\n        height: 16px;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-action {\r\n        min-width: 42px;\r\n        min-height: 42px;\r\n        padding: 0;\r\n        border-radius: 12px;\r\n        font-size: 0;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-action-text {\r\n        display: none;\r\n      }\r\n\r\n      #pronto-home-hero-content .phb-action-arrow {\r\n        display: inline;\r\n        font: 900 22px\/1 \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n      }\r\n    }\r\n  <\/style>\r\n\r\n  <h1 class=\"phc-title\">24h Home Repairs in Porto<\/h1>\r\n\r\n  <p class=\"phc-subtitle\">Fast help for plumbing, electrical and home repairs in Porto<\/p>\r\n\r\n  <button type=\"button\"\r\n          class=\"phb-button pronto-precall cta-hero-booking\"\r\n          aria-label=\"Open booking flow\">\r\n    <span class=\"phb-query\">\r\n      <span class=\"phb-main\">\r\n        <span class=\"phb-main-label\">\r\n          <span class=\"phb-main-text-desktop\">What do you need help with?<\/span>\r\n          <span class=\"phb-main-text-mobile\">How can we help?<\/span>\r\n        <\/span>\r\n      <\/span>\r\n\r\n      <span class=\"phb-divider\" aria-hidden=\"true\"><\/span>\r\n\r\n      <span class=\"phb-location\">\r\n        <svg class=\"phb-location-icon\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n          <path d=\"M12 21C12 21 5.5 14.75 5.5 9.5C5.5 5.91 8.41 3 12 3C15.59 3 18.5 5.91 18.5 9.5C18.5 14.75 12 21 12 21Z\" stroke=\"#0F2B49\" stroke-width=\"2.4\" stroke-linejoin=\"round\"><\/path>\r\n          <circle cx=\"12\" cy=\"9.5\" r=\"2.2\" stroke=\"#0F2B49\" stroke-width=\"2.2\"><\/circle>\r\n        <\/svg>\r\n        <span id=\"pronto-hero-bar-location-text\">Zip Code<\/span>\r\n      <\/span>\r\n    <\/span>\r\n\r\n    <span class=\"phb-action\">\r\n      <span class=\"phb-action-text\">Get Help Now<\/span>\r\n      <span class=\"phb-action-arrow\" aria-hidden=\"true\">\u2192<\/span>\r\n    <\/span>\r\n  <\/button>\r\n\r\n  <script>\r\n    (() => {\r\n      \"use strict\";\r\n\r\n      function runHeroLocationHint() {\r\n        const locationText = document.getElementById(\"pronto-hero-bar-location-text\");\r\n\r\n        if (!locationText) return;\r\n\r\n        function cleanLocation(value) {\r\n          const text = String(value || \"\")\r\n            .trim()\r\n            .replace(\/\\s+\/g, \" \");\r\n\r\n          if (!text) return \"\";\r\n          if (text === \"-\") return \"\";\r\n          if (text.length > 48) return \"\";\r\n\r\n          return text;\r\n        }\r\n\r\n        function resolveHeroBackendUrl(pathname) {\r\n          const fromGlobal = String(window.PRONTO_BOOKING_SUBMIT_URL || \"\").trim();\r\n          const overlay = document.getElementById(\"pronto-precall-overlay\");\r\n          const fromOverlay = overlay\r\n            ? String(overlay.getAttribute(\"data-submit-url\") || \"\").trim()\r\n            : \"\";\r\n          const seedUrl = fromGlobal || fromOverlay;\r\n\r\n          if (seedUrl) {\r\n            try {\r\n              const submitUrl = new URL(seedUrl, window.location.href);\r\n              return new URL(pathname, `${submitUrl.origin}\/`).toString();\r\n            } catch (error) {}\r\n          }\r\n\r\n          return pathname;\r\n        }\r\n\r\n        function applyHeroLocation(value) {\r\n          const cleaned = cleanLocation(value);\r\n          locationText.textContent = cleaned || \"Area\";\r\n        }\r\n\r\n        applyHeroLocation(\"Area\");\r\n\r\n        fetch(resolveHeroBackendUrl(\"\/address\/booking-hero-area-hint\"), {\r\n          method: \"GET\",\r\n          headers: {\r\n            \"Accept\": \"application\/json\"\r\n          }\r\n        })\r\n          .then((response) => response.json())\r\n          .then((data) => {\r\n            if (!data || data.ok !== true) return;\r\n\r\n            applyHeroLocation(data.display_area);\r\n          })\r\n          .catch(() => {\r\n            applyHeroLocation(\"Area\");\r\n          });\r\n      }\r\n\r\n      if (document.readyState === \"loading\") {\r\n        document.addEventListener(\"DOMContentLoaded\", runHeroLocationHint, { once: true });\r\n      } else {\r\n        runHeroLocationHint();\r\n      }\r\n    })();\r\n  <\/script>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-6e6d2e7 e-con-full e-flex e-con e-parent\" data-id=\"6e6d2e7\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a777447 elementor-widget elementor-widget-html\" data-id=\"a777447\" 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<style>\r\n  .pronto-service-card-section {\r\n    width: 100%;\r\n    max-width: none;\r\n    margin: 0 auto;\r\n    padding: 10px 0 8px;\r\n    background: #F0F6FE;\r\n  }\r\n\r\n  .pronto-service-card-section > h2 {\r\n    margin: 0 20px 34px;\r\n    color: #0F2B49;\r\n    font-family: \"Montserrat\", sans-serif;\r\n    font-size: 36px;\r\n    font-weight: 700;\r\n    line-height: 1.08;\r\n    letter-spacing: -0.03em;\r\n    text-align: center;\r\n  }\r\n\r\n  .pronto-service-card-section > p {\r\n    margin: 0 20px 22px;\r\n    color: #0F2B49;\r\n    font-size: 16px;\r\n    font-weight: 700;\r\n    line-height: 1.5;\r\n    text-align: center;\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    .pronto-service-card-section > h2 {\r\n      margin: 0 16px 36px;\r\n      font-size: clamp(2rem, 8vw, 2.6rem);\r\n      line-height: 1.1;\r\n      letter-spacing: -0.03em;\r\n    }\r\n\r\n    .pronto-service-card-section > p {\r\n      margin: 0 20px 24px;\r\n      font-size: 16px;\r\n      font-weight: 700;\r\n      line-height: 1.5;\r\n    }\r\n  }\r\n\r\n  .pronto-service-card-grid {\r\n    width: min(calc(100% - 48px), 1220px);\r\n    max-width: 1220px;\r\n    margin: 0 auto;\r\n    display: grid;\r\n    grid-template-columns: repeat(3, minmax(0, 1fr));\r\n    gap: 18px;\r\n  }\r\n\r\n  .pronto-service-card {\r\n    position: relative;\r\n    min-height: clamp(330px, 30vw, 405px);\r\n    border: 0;\r\n    border-radius: 14px;\r\n    overflow: hidden;\r\n    text-decoration: none;\r\n    color: #ffffff;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    width: 100%;\r\n    padding: 0;\r\n    background-position: center;\r\n    background-size: cover;\r\n    background-repeat: no-repeat;\r\n    box-shadow: none;\r\n    transform: scale(1);\r\n    transform-origin: center center;\r\n    transition: transform 0.28s ease, box-shadow 0.28s ease;\r\n    will-change: transform;\r\n    font: inherit;\r\n    text-align: inherit;\r\n    cursor: pointer;\r\n    appearance: none;\r\n    -webkit-appearance: none;\r\n  }\r\n\r\n  .pronto-service-card::before {\r\n    content: \"\";\r\n    position: absolute;\r\n    inset: 0;\r\n    background: rgba(0, 0, 0, 0.52);\r\n    z-index: 1;\r\n  }\r\n\r\n  .pronto-service-card-plumbing::before,\r\n  .pronto-service-card-electrical::before {\r\n    background: rgba(0, 0, 0, 0.58);\r\n  }\r\n\r\n  .pronto-service-card:hover {\r\n    z-index: 4;\r\n    transform: scale(1.035);\r\n    box-shadow: 0 18px 38px rgba(15, 43, 70, 0.28);\r\n  }\r\n\r\n  .pronto-service-card:focus-visible {\r\n    outline: 3px solid rgba(225, 161, 52, 0.95);\r\n    outline-offset: 4px;\r\n  }\r\n\r\n  .pronto-service-card-content {\r\n    position: relative;\r\n    z-index: 2;\r\n    width: 100%;\r\n    padding: 28px 24px;\r\n    text-align: center;\r\n  }\r\n\r\n  .pronto-service-card-title {\r\n    display: block;\r\n    font-size: 26px;\r\n    line-height: 1.18;\r\n    font-weight: 800;\r\n    color: #ffffff;\r\n    margin: 0 0 34px;\r\n    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.45);\r\n  }\r\n\r\n  .pronto-service-card-text {\r\n    display: block;\r\n    font-size: 17px;\r\n    line-height: 1.55;\r\n    font-weight: 700;\r\n    color: #ffffff;\r\n    margin: 0 0 24px;\r\n    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.45);\r\n  }\r\n\r\n  .pronto-service-card-button {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    min-height: 40px;\r\n    padding: 10px 22px;\r\n    border-radius: 12px;\r\n    background: #E1A134;\r\n    color: #ffffff;\r\n    font-size: 16px;\r\n    line-height: 1;\r\n    font-weight: 800;\r\n    text-decoration: none;\r\n    box-shadow: 0 8px 18px rgba(0, 0, 0, 0.18);\r\n    transition: background 0.22s ease, transform 0.22s ease;\r\n  }\r\n\r\n  .pronto-service-card:hover .pronto-service-card-button {\r\n    background: #D97706;\r\n    transform: translateY(-1px);\r\n  }\r\n\r\n  .pronto-service-card-plumbing {\r\n    background-image: url(\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2020\/09\/plumbing-pipe-wrench.webp\");\r\n  }\r\n\r\n  .pronto-service-card-electrical {\r\n    background-image: url(\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2025\/05\/20250503_1423_Electrical-Work-Blueprint_remix_01jtb4zt7kedps726wsbwqrsky-1.webp\");\r\n  }\r\n\r\n  .pronto-service-card-projects {\r\n    background-image: url(\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2025\/04\/20250425_2126_High-Quality-Technicians_remix_01jsqa05d8en9tcz7szw01jtfk.webp\");\r\n  }\r\n\r\n  @media (max-width: 1180px) {\r\n    .pronto-service-card-grid {\r\n      width: min(calc(100% - 36px), 1080px);\r\n      gap: 16px;\r\n    }\r\n\r\n    .pronto-service-card {\r\n      min-height: 350px;\r\n    }\r\n\r\n    .pronto-service-card-title {\r\n      font-size: 22px;\r\n      margin-bottom: 24px;\r\n    }\r\n\r\n    .pronto-service-card-text {\r\n      font-size: 15px;\r\n      line-height: 1.48;\r\n    }\r\n\r\n    .pronto-service-card-button {\r\n      font-size: 14px;\r\n      padding: 10px 18px;\r\n    }\r\n  }\r\n\r\n  @media (max-width: 900px) {\r\n    .pronto-service-card-grid {\r\n      width: min(calc(100% - 28px), 660px);\r\n      grid-template-columns: 1fr;\r\n      gap: 16px;\r\n    }\r\n\r\n    .pronto-service-card {\r\n      min-height: 330px;\r\n    }\r\n\r\n    .pronto-service-card:hover {\r\n      transform: scale(1.018);\r\n    }\r\n  }\r\n\r\n  @media (max-width: 480px) {\r\n    .pronto-service-card-grid {\r\n      width: min(calc(100% - 22px), 440px);\r\n      gap: 14px;\r\n    }\r\n\r\n    .pronto-service-card {\r\n      min-height: 315px;\r\n    }\r\n\r\n    .pronto-service-card-content {\r\n      padding: 24px 18px;\r\n    }\r\n\r\n    .pronto-service-card-title {\r\n      font-size: 23px;\r\n      margin-bottom: 22px;\r\n    }\r\n\r\n    .pronto-service-card-text {\r\n      font-size: 15px;\r\n      line-height: 1.45;\r\n      margin-bottom: 22px;\r\n    }\r\n\r\n    .pronto-service-card-button {\r\n      max-width: 100%;\r\n      font-size: 14px;\r\n      line-height: 1.2;\r\n      padding: 11px 16px;\r\n      white-space: normal;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<div class=\"pronto-service-card-section\">\r\n  <h2>\r\n    Need Help Fast? We've Got You Covered\r\n  <\/h2>\r\n\r\n  <p>\r\n    Certified plumbers and electricians, ready when you need them\r\n  <\/p>\r\n\r\n  <div class=\"pronto-service-card-grid\">\r\n    <button type=\"button\" class=\"pronto-service-card pronto-service-card-plumbing pronto-precall pp-service-plumbing cta-home-service-card-plumbing\">\r\n      <span class=\"pronto-service-card-content\">\r\n        <span class=\"pronto-service-card-title\">Drain Unblocking &amp;<br>Plumbing Repairs<\/span>\r\n        <span class=\"pronto-service-card-text\">Toilet, kitchen, and bathroom<br>blockages cleared fast<br>We handle leaks, pipes, and<br>pressure problems 24\/7<\/span>\r\n        <span class=\"pronto-service-card-button\">Request Service<\/span>\r\n      <\/span>\r\n    <\/button>\r\n\r\n    <button type=\"button\" class=\"pronto-service-card pronto-service-card-electrical pronto-precall pp-service-electrical cta-home-service-card-electrical\">\r\n      <span class=\"pronto-service-card-content\">\r\n        <span class=\"pronto-service-card-title\">24h Electrical Repairs<\/span>\r\n        <span class=\"pronto-service-card-text\">Quick fixes for power cuts, sockets,<br>fuses &amp; wiring<br>Certified electricians available<br>24\/7 in Porto<\/span>\r\n        <span class=\"pronto-service-card-button\">Request Service<\/span>\r\n      <\/span>\r\n    <\/button>\r\n\r\n    <button type=\"button\" class=\"pronto-service-card pronto-service-card-projects pronto-precall pp-service-premium cta-home-service-card-projects\">\r\n      <span class=\"pronto-service-card-content\">\r\n        <span class=\"pronto-service-card-title\">Home Projects<\/span>\r\n        <span class=\"pronto-service-card-text\">Bathroom, kitchen, water heater,<br>pipe and electrical upgrades<br>Planned repairs and installations<br>in Porto<\/span>\r\n        <span class=\"pronto-service-card-button\">Request Service<\/span>\r\n      <\/span>\r\n    <\/button>\r\n  <\/div>\r\n<\/div>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-66b9539 e-con-full e-flex e-con e-parent\" data-id=\"66b9539\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-caeb995 elementor-widget elementor-widget-html\" data-id=\"caeb995\" 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<style>\r\n  body .elementor-widget-html:has([data-cta=\"benefits-cta\"]),\r\n  body .elementor-widget-html:has([data-cta=\"benefits-cta\"]) > .elementor-widget-container,\r\n  body .e-con:has([data-cta=\"benefits-cta\"]),\r\n  body .e-con-inner:has([data-cta=\"benefits-cta\"]) {\r\n    --padding-top: 0px !important;\r\n    --padding-right: 0px !important;\r\n    --padding-bottom: 0px !important;\r\n    --padding-left: 0px !important;\r\n    --gap: 0px !important;\r\n    margin: 0 !important;\r\n    padding: 0 !important;\r\n    gap: 0 !important;\r\n    background: #EEF6FD !important;\r\n  }\r\n  section:has([data-cta=\"benefits-cta\"]) {\r\n    box-sizing: border-box;\r\n    width: 100%;\r\n    padding: 42px 64px 64px;\r\n    display: grid;\r\n    grid-template-columns: minmax(0, 1.08fr) minmax(320px, 0.92fr);\r\n    gap: 72px;\r\n    align-items: start;\r\n    background: #EEF6FD;\r\n    font-family: \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) * {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type {\r\n    min-width: 0;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > h2 {\r\n    max-width: 470px;\r\n    margin: 0;\r\n    color: #0F2B49;\r\n    font-family: \"Montserrat\", sans-serif;\r\n    font-size: 36px;\r\n    font-weight: 700;\r\n    line-height: 1.08;\r\n    letter-spacing: -0.03em;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div {\r\n    display: grid;\r\n    grid-template-columns: repeat(3, minmax(0, 1fr));\r\n    gap: 24px;\r\n    margin-top: 52px;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div {\r\n    min-width: 0;\r\n    text-align: center;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div > img {\r\n    display: block;\r\n    width: auto;\r\n    height: 54px;\r\n    max-width: 64px;\r\n    margin: 0 auto;\r\n    object-fit: contain;\r\n    position: relative;\r\n    z-index: 1;\r\n    transform: translateY(0) scale(1);\r\n    transform-origin: center;\r\n    transition:\r\n      transform 0.25s ease,\r\n      filter 0.25s ease;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div:nth-child(2) > img,\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div:nth-child(3) > img {\r\n    filter:\r\n      brightness(0)\r\n      saturate(100%)\r\n      invert(27%)\r\n      sepia(50%)\r\n      saturate(2573%)\r\n      hue-rotate(175deg)\r\n      brightness(25%)\r\n      contrast(71%);\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div > img:hover {\r\n    transform: translateY(-4px) scale(1.08);\r\n    filter: drop-shadow(0 6px 6px rgba(15, 43, 73, 0.18));\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div:nth-child(2) > img:hover,\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div:nth-child(3) > img:hover {\r\n    filter:\r\n      brightness(0)\r\n      saturate(100%)\r\n      invert(27%)\r\n      sepia(50%)\r\n      saturate(2573%)\r\n      hue-rotate(175deg)\r\n      brightness(25%)\r\n      contrast(71%)\r\n      drop-shadow(0 6px 6px rgba(15, 43, 73, 0.18));\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div > h3 {\r\n    min-height: 46px;\r\n    margin: 18px 0 0;\r\n    display: flex;\r\n    align-items: flex-start;\r\n    justify-content: center;\r\n    color: #1A365D;\r\n    font-size: 17px;\r\n    font-weight: 700;\r\n    line-height: 1.08;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div > p {\r\n    margin: 19px 0 0;\r\n    color: #4A5568;\r\n    font-size: 14px;\r\n    font-weight: 600;\r\n    line-height: 1.55;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:last-of-type {\r\n    min-width: 0;\r\n    display: flex;\r\n    flex-direction: column;\r\n    align-items: center;\r\n    padding-top: 7px;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:last-of-type > figure {\r\n    width: 100%;\r\n    max-width: 350px;\r\n    margin: 0;\r\n    text-align: center;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:last-of-type > figure > img {\r\n    display: block;\r\n    width: 100%;\r\n    aspect-ratio: 3 \/ 2;\r\n    object-fit: cover;\r\n    border-radius: 18px;\r\n    box-shadow: rgba(0, 0, 0, 0.28) 0 2px 10px 0;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) > div:last-of-type > figure > figcaption {\r\n    margin-top: 20px;\r\n    color: #1A365D;\r\n    font-size: 16px;\r\n    font-weight: 600;\r\n    line-height: 1.45;\r\n  }\r\n\r\n  section:has([data-cta=\"benefits-cta\"]) .pronto-benefits-button-html {\r\n    margin-top: 25px;\r\n    text-align: center;\r\n  }\r\n\r\n  .pronto-benefits-button-html .cta-benefits-cta {\r\n    appearance: none;\r\n    box-sizing: border-box;\r\n    display: inline-block;\r\n    padding: 12px 24px;\r\n    border: 0;\r\n    border-radius: 14px;\r\n    background: #E1A134;\r\n    color: #FFFFFF;\r\n    fill: #FFFFFF;\r\n    font-family: \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n    font-size: 18px;\r\n    font-weight: 800;\r\n    line-height: 1;\r\n    text-align: center;\r\n    text-decoration: none;\r\n    cursor: pointer;\r\n    box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 10px 0px;\r\n    transition: all 0.3s ease;\r\n  }\r\n\r\n  .pronto-benefits-button-html .cta-benefits-cta:hover {\r\n    background: #D97706;\r\n    transform: scale(1.03);\r\n  }\r\n\r\n  .pronto-benefits-button-html .elementor-button-content-wrapper {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 8px;\r\n  }\r\n\r\n  .pronto-benefits-button-html .elementor-button-icon {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n  }\r\n\r\n  .pronto-benefits-button-html .elementor-button-icon svg {\r\n    width: 15px;\r\n    height: 15px;\r\n    fill: currentColor;\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    section:has([data-cta=\"benefits-cta\"]) {\r\n      display: block;\r\n      padding: 46px 16px 54px;\r\n    }\r\n\r\n    section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > h2 {\r\n      max-width: none;\r\n      margin: 0 auto;\r\n      font-family: \"Montserrat\", sans-serif;\r\n      font-size: 28px;\r\n      font-weight: 700;\r\n      line-height: 1.1;\r\n      letter-spacing: -0.03em;\r\n      text-align: center;\r\n    }\r\n\r\n    section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > h2 br {\r\n      display: none;\r\n    }\r\n\r\n    section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div {\r\n      gap: 10px;\r\n      margin-top: 50px;\r\n    }\r\n\r\n    section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div > img {\r\n      height: 48px;\r\n      max-width: 56px;\r\n    }\r\n\r\n    section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div > h3 {\r\n      min-height: 38px;\r\n      margin-top: 20px;\r\n      font-size: 15px;\r\n      line-height: 1.05;\r\n    }\r\n\r\n    section:has([data-cta=\"benefits-cta\"]) > div:first-of-type > div > div > p {\r\n      margin-top: 27px;\r\n      font-size: 14px;\r\n      font-weight: 600;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    section:has([data-cta=\"benefits-cta\"]) > div:last-of-type {\r\n      margin-top: 42px;\r\n      padding-top: 0;\r\n    }\r\n\r\n    section:has([data-cta=\"benefits-cta\"]) > div:last-of-type > figure {\r\n      max-width: none;\r\n    }\r\n\r\n    section:has([data-cta=\"benefits-cta\"]) > div:last-of-type > figure > figcaption {\r\n      margin-top: 20px;\r\n      font-size: 16px;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    section:has([data-cta=\"benefits-cta\"]) .pronto-benefits-button-html {\r\n      margin-top: 24px;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<section>\r\n  <div>\r\n    <h2>\r\n      The ideal combination<br>\r\n      of speed and<br>\r\n      customer service\r\n    <\/h2>\r\n\r\n    <div>\r\n      <div>\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2025\/05\/energy-icon.svg\"\r\n          alt=\"\"\r\n        >\r\n\r\n        <h3>\r\n          Fast response\r\n        <\/h3>\r\n\r\n        <p>\r\n          Under 1h arrival,<br>\r\n          day or night\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div>\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2025\/05\/24-hours-phone-support-icon.svg\"\r\n          alt=\"\"\r\n        >\r\n\r\n        <h3>\r\n          24\/7<br>\r\n          Availability\r\n        <\/h3>\r\n\r\n        <p>\r\n          Direct contact, no<br>\r\n          call centers\r\n        <\/p>\r\n      <\/div>\r\n\r\n      <div>\r\n        <img decoding=\"async\"\r\n          src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2025\/05\/verify-verified-check-icon.svg\"\r\n          alt=\"\"\r\n        >\r\n\r\n        <h3>\r\n          certified pros\r\n        <\/h3>\r\n\r\n        <p>\r\n          Verified local<br>\r\n          professionals\r\n        <\/p>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div>\r\n    <figure>\r\n      <img decoding=\"async\"\r\n        src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2025\/04\/20250425_2219_Tool-Van-Ready_remix_01jsqd1ft7ej4t80t3pemyxsxe.webp\"\r\n        alt=\"\"\r\n      >\r\n\r\n      <figcaption>\r\n        Fast, trusted and professional services\r\n      <\/figcaption>\r\n    <\/figure>\r\n\r\n    <div class=\"pronto-benefits-button-html\">\r\n      <button\r\n        type=\"button\"\r\n        class=\"cta-benefits-cta pronto-precall pp-service-any\"\r\n        data-cta=\"benefits-cta\"\r\n      >\r\n        <span class=\"elementor-button-content-wrapper\">\r\n          <span class=\"elementor-button-icon\">\r\n            <svg\r\n              aria-hidden=\"true\"\r\n              class=\"e-font-icon-svg e-far-arrow-alt-circle-right\"\r\n              viewBox=\"0 0 512 512\"\r\n              xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\r\n            >\r\n              <path d=\"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z\"><\/path>\r\n            <\/svg>\r\n          <\/span>\r\n\r\n          <span class=\"elementor-button-text\">\r\n            Request Help Now\r\n          <\/span>\r\n        <\/span>\r\n      <\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-c28fa6a e-con-full e-flex e-con e-parent\" data-id=\"c28fa6a\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-6a76c60 elementor-widget elementor-widget-html\" data-id=\"6a76c60\" 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<section id=\"pronto-reviews-premium\" class=\"pronto-reviews-premium\">\r\n  <style>\r\n    #pronto-reviews-premium {\r\n      --pronto-navy: #0F2B46;\r\n      --pronto-muted: #667085;\r\n      --pronto-card: #FFFFFF;\r\n      --pronto-bg: #F0F6FE;\r\n      --pronto-border: rgba(15, 43, 70, 0.08);\r\n      --pronto-shadow:\r\n        0 6px 14px rgba(15, 43, 70, 0.12),\r\n        0 2px 4px rgba(15, 43, 70, 0.06);\r\n      --pronto-star: #00B67A;\r\n\r\n      width: 100%;\r\n      padding: 72px 20px;\r\n      background: var(--pronto-bg);\r\n      box-sizing: border-box;\r\n      overflow: hidden;\r\n    }\r\n\r\n    #pronto-reviews-premium * {\r\n      box-sizing: border-box;\r\n    }\r\n\r\n    #pronto-reviews-premium {\r\n      display: block;\r\n      margin: 0;\r\n    }\r\n\r\n    .elementor-widget-html:has(#pronto-reviews-premium),\r\n    .elementor-widget-html:has(#pronto-reviews-premium) > .elementor-widget-container,\r\n    .elementor-element:has(#pronto-reviews-premium),\r\n    .e-con:has(#pronto-reviews-premium) {\r\n      background-color: #F0F6FE !important;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-reviews-viewport {\r\n      width: 100%;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-reviews-title {\r\n      margin: 0 0 44px;\r\n      color: #0F2B49 !important;\r\n      font-family: \"Montserrat\", sans-serif;\r\n      font-size: 36px;\r\n      font-weight: 700;\r\n      line-height: 1.08;\r\n      letter-spacing: -0.03em;\r\n      text-align: center;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-reviews-track {\r\n      display: grid;\r\n      grid-template-columns: repeat(3, minmax(0, 1fr));\r\n      gap: 24px;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-review-card {\r\n      min-height: 190px;\r\n      padding: 24px;\r\n      background: var(--pronto-card);\r\n      border: 1px solid var(--pronto-border);\r\n      border-radius: 22px;\r\n      box-shadow: var(--pronto-shadow);\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-review-card-clone {\r\n      display: none;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-review-top {\r\n      display: grid;\r\n      grid-template-columns: 48px 1fr;\r\n      gap: 18px;\r\n      align-items: start;\r\n      margin-bottom: 16px;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-review-avatar {\r\n      width: 48px;\r\n      height: 48px;\r\n      border-radius: 999px;\r\n      object-fit: cover;\r\n      display: block;\r\n      background: #EDF1F5;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-review-stars {\r\n      display: flex;\r\n      gap: 3px;\r\n      margin: 2px 0 13px;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-star-box {\r\n      width: 30px;\r\n      height: 30px;\r\n      display: inline-flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      background: var(--pronto-star);\r\n      color: #FFFFFF;\r\n      border-radius: 0;\r\n      font-size: 18px;\r\n      font-weight: 800;\r\n      line-height: 1;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-review-meta {\r\n      display: flex;\r\n      align-items: center;\r\n      gap: 12px;\r\n      flex-wrap: wrap;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-review-name {\r\n      color: #0F2B49;\r\n      font-family: \"Montserrat\", sans-serif;\r\n      font-size: 16px;\r\n      font-weight: 700;\r\n      line-height: 1.35;\r\n      letter-spacing: 0;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-review-location {\r\n      display: inline-flex;\r\n      align-items: center;\r\n      gap: 7px;\r\n      color: var(--pronto-muted);\r\n      font-family: \"Montserrat\", sans-serif;\r\n      font-size: 14px;\r\n      font-weight: 500;\r\n      line-height: 1.5;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-review-location svg {\r\n      width: 18px;\r\n      height: 18px;\r\n      flex: 0 0 18px;\r\n      stroke: currentColor;\r\n    }\r\n\r\n    #pronto-reviews-premium .pronto-review-text {\r\n      margin: 0;\r\n      color: #0F2B49;\r\n      font-family: \"Montserrat\", sans-serif;\r\n      font-size: 0.95rem;\r\n      font-weight: 600;\r\n      line-height: 1.6;\r\n      letter-spacing: 0;\r\n    }\r\n\r\n    @media (max-width: 1024px) {\r\n      #pronto-reviews-premium {\r\n        padding: 58px 0;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-reviews-title {\r\n        padding: 0 20px;\r\n        margin-bottom: 44px;\r\n        font-size: 36px;\r\n        line-height: 1.08;\r\n        white-space: normal;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-reviews-inner {\r\n        width: 100%;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-reviews-viewport {\r\n        width: 100%;\r\n        overflow-x: auto;\r\n        overflow-y: hidden;\r\n        scroll-snap-type: x mandatory;\r\n        scrollbar-width: none;\r\n        -ms-overflow-style: none;\r\n        -webkit-overflow-scrolling: touch;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-reviews-viewport::-webkit-scrollbar {\r\n        display: none;\r\n      }\r\n\r\n      #pronto-reviews-premium.pronto-carousel-ready .pronto-reviews-viewport {\r\n        scroll-behavior: smooth;\r\n      }\r\n\r\n      #pronto-reviews-premium.pronto-carousel-reset .pronto-reviews-viewport {\r\n        scroll-behavior: auto;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-reviews-track {\r\n        display: flex;\r\n        width: max-content;\r\n        gap: 18px;\r\n        padding: 0 20px 16px;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-review-card {\r\n        flex: 0 0 min(82vw, 430px);\r\n        scroll-snap-align: start;\r\n        box-shadow: 0 8px 22px rgba(15, 43, 70, 0.055);\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-review-card-clone {\r\n        display: block;\r\n      }\r\n    }\r\n\r\n    @media (max-width: 520px) {\r\n      #pronto-reviews-premium .pronto-reviews-title {\r\n        padding: 0 12px;\r\n        margin-bottom: 30px;\r\n        font-size: clamp(2rem, 8vw, 2.6rem);\r\n        line-height: 1.1;\r\n        letter-spacing: -0.03em;\r\n        white-space: normal;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-review-card {\r\n        flex-basis: 86vw;\r\n        min-height: 185px;\r\n        padding: 21px;\r\n        border-radius: 20px;\r\n        box-shadow:\r\n          0 5px 12px rgba(15, 43, 70, 0.10),\r\n          0 2px 4px rgba(15, 43, 70, 0.05);\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-review-top {\r\n        grid-template-columns: 44px 1fr;\r\n        gap: 14px;\r\n        margin-bottom: 20px;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-review-avatar {\r\n        width: 44px;\r\n        height: 44px;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-star-box {\r\n        width: 25px;\r\n        height: 25px;\r\n        font-size: 15px;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-review-name {\r\n        font-size: 16px;\r\n        line-height: 1.35;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-review-location {\r\n        font-size: 14px;\r\n      }\r\n\r\n      #pronto-reviews-premium .pronto-review-text {\r\n        font-size: 0.95rem;\r\n        font-weight: 600;\r\n        line-height: 1.6;\r\n      }\r\n    }\r\n\r\n    @media (prefers-reduced-motion: reduce) {\r\n      #pronto-reviews-premium.pronto-carousel-ready .pronto-reviews-viewport {\r\n        scroll-behavior: auto;\r\n      }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"pronto-reviews-inner\">\r\n    <h2 class=\"pronto-reviews-title\">What Porto Locals Are Saying<\/h2>\r\n\r\n    <div class=\"pronto-reviews-viewport\">\r\n      <div class=\"pronto-reviews-track\" aria-label=\"Customer reviews from Porto locals\">\r\n      <article class=\"pronto-review-card\">\r\n        <div class=\"pronto-review-top\">\r\n          <img decoding=\"async\" class=\"pronto-review-avatar\" src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2021\/03\/mike.webp\" alt=\"Rui from Le\u00e7a da Palmeira\" loading=\"lazy\">\r\n          <div>\r\n            <div class=\"pronto-review-stars\" aria-label=\"5 out of 5 stars\">\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n            <\/div>\r\n            <div class=\"pronto-review-meta\">\r\n              <span class=\"pronto-review-name\">Rui<\/span>\r\n              <span class=\"pronto-review-location\">\r\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n                  <path d=\"M12 21s7-5.2 7-12a7 7 0 1 0-14 0c0 6.8 7 12 7 12Z\" stroke-width=\"2\"><\/path>\r\n                  <path d=\"M12 11.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\" stroke-width=\"2\"><\/path>\r\n                <\/svg>\r\n                Le\u00e7a da Palmeira\r\n              <\/span>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <p class=\"pronto-review-text\">Booked by WhatsApp. Super smooth and polite technician.<\/p>\r\n      <\/article>\r\n\r\n      <article class=\"pronto-review-card\">\r\n        <div class=\"pronto-review-top\">\r\n          <img decoding=\"async\" class=\"pronto-review-avatar\" src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2020\/09\/ava-woman-4.webp\" alt=\"Beatriz from Campanh\u00e3\" loading=\"lazy\">\r\n          <div>\r\n            <div class=\"pronto-review-stars\" aria-label=\"5 out of 5 stars\">\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n            <\/div>\r\n            <div class=\"pronto-review-meta\">\r\n              <span class=\"pronto-review-name\">Beatriz<\/span>\r\n              <span class=\"pronto-review-location\">\r\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n                  <path d=\"M12 21s7-5.2 7-12a7 7 0 1 0-14 0c0 6.8 7 12 7 12Z\" stroke-width=\"2\"><\/path>\r\n                  <path d=\"M12 11.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\" stroke-width=\"2\"><\/path>\r\n                <\/svg>\r\n                Campanh\u00e3\r\n              <\/span>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <p class=\"pronto-review-text\">They arrived under one hour during the blackout - lifesaver!<\/p>\r\n      <\/article>\r\n\r\n      <article class=\"pronto-review-card\">\r\n        <div class=\"pronto-review-top\">\r\n          <img decoding=\"async\" class=\"pronto-review-avatar\" src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2020\/09\/man-with-beard-smiling-avatar.webp\" alt=\"Carlos from Matosinhos\" loading=\"lazy\">\r\n          <div>\r\n            <div class=\"pronto-review-stars\" aria-label=\"5 out of 5 stars\">\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n            <\/div>\r\n            <div class=\"pronto-review-meta\">\r\n              <span class=\"pronto-review-name\">Carlos<\/span>\r\n              <span class=\"pronto-review-location\">\r\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n                  <path d=\"M12 21s7-5.2 7-12a7 7 0 1 0-14 0c0 6.8 7 12 7 12Z\" stroke-width=\"2\"><\/path>\r\n                  <path d=\"M12 11.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\" stroke-width=\"2\"><\/path>\r\n                <\/svg>\r\n                Matosinhos\r\n              <\/span>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <p class=\"pronto-review-text\">Booking was easy on WhatsApp. Technician arrived right on time and fixed a bad leak under the bathroom sink.<\/p>\r\n      <\/article>\r\n\r\n      <article class=\"pronto-review-card\">\r\n        <div class=\"pronto-review-top\">\r\n          <img decoding=\"async\" class=\"pronto-review-avatar\" src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2020\/09\/ava-man-1.webp\" alt=\"Filipe from Cedofeita\" loading=\"lazy\">\r\n          <div>\r\n            <div class=\"pronto-review-stars\" aria-label=\"5 out of 5 stars\">\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n            <\/div>\r\n            <div class=\"pronto-review-meta\">\r\n              <span class=\"pronto-review-name\">Filipe<\/span>\r\n              <span class=\"pronto-review-location\">\r\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n                  <path d=\"M12 21s7-5.2 7-12a7 7 0 1 0-14 0c0 6.8 7 12 7 12Z\" stroke-width=\"2\"><\/path>\r\n                  <path d=\"M12 11.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\" stroke-width=\"2\"><\/path>\r\n                <\/svg>\r\n                Cedofeita\r\n              <\/span>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <p class=\"pronto-review-text\">The electrician explained everything and didn\u2019t rush. Honest guy.<\/p>\r\n      <\/article>\r\n\r\n      <article class=\"pronto-review-card\">\r\n        <div class=\"pronto-review-top\">\r\n          <img decoding=\"async\" class=\"pronto-review-avatar\" src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2020\/09\/ava-woman-3.webp\" alt=\"Ana from Paranhos\" loading=\"lazy\">\r\n          <div>\r\n            <div class=\"pronto-review-stars\" aria-label=\"5 out of 5 stars\">\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n            <\/div>\r\n            <div class=\"pronto-review-meta\">\r\n              <span class=\"pronto-review-name\">Ana<\/span>\r\n              <span class=\"pronto-review-location\">\r\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n                  <path d=\"M12 21s7-5.2 7-12a7 7 0 1 0-14 0c0 6.8 7 12 7 12Z\" stroke-width=\"2\"><\/path>\r\n                  <path d=\"M12 11.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\" stroke-width=\"2\"><\/path>\r\n                <\/svg>\r\n                Paranhos\r\n              <\/span>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <p class=\"pronto-review-text\">They fixed a plumbing emergency without charging extra for the weekend.<\/p>\r\n      <\/article>\r\n\r\n      <article class=\"pronto-review-card\">\r\n        <div class=\"pronto-review-top\">\r\n          <img decoding=\"async\" class=\"pronto-review-avatar\" src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2020\/09\/ava-woman-1.webp\" alt=\"Mariana from S\u00e3o Jo\u00e3o\" loading=\"lazy\">\r\n          <div>\r\n            <div class=\"pronto-review-stars\" aria-label=\"5 out of 5 stars\">\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n              <span class=\"pronto-star-box\">\u2605<\/span>\r\n            <\/div>\r\n            <div class=\"pronto-review-meta\">\r\n              <span class=\"pronto-review-name\">Mariana<\/span>\r\n              <span class=\"pronto-review-location\">\r\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\r\n                  <path d=\"M12 21s7-5.2 7-12a7 7 0 1 0-14 0c0 6.8 7 12 7 12Z\" stroke-width=\"2\"><\/path>\r\n                  <path d=\"M12 11.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z\" stroke-width=\"2\"><\/path>\r\n                <\/svg>\r\n                S\u00e3o Jo\u00e3o\r\n              <\/span>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n        <p class=\"pronto-review-text\">Called them for a blocked kitchen sink. Super polite and got it sorted quickly without mess.<\/p>\r\n      <\/article>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n    (function () {\r\n      var section = document.getElementById(\"pronto-reviews-premium\");\r\n\r\n      if (!section) {\r\n        return;\r\n      }\r\n\r\n      var viewport = section.querySelector(\".pronto-reviews-viewport\");\r\n      var track = section.querySelector(\".pronto-reviews-track\");\r\n\r\n      if (!viewport || !track || track.dataset.prontoCarouselLoaded === \"1\") {\r\n        return;\r\n      }\r\n\r\n      track.dataset.prontoCarouselLoaded = \"1\";\r\n\r\n      var mediaQuery = window.matchMedia(\"(max-width: 1024px)\");\r\n      var reduceMotionQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\r\n      var hasEntered = false;\r\n      var hasStarted = false;\r\n      var currentIndex = 0;\r\n      var originalCount = 0;\r\n      var positions = [];\r\n      var slideTimer = null;\r\n      var resumeTimer = null;\r\n      var resizeTimer = null;\r\n      var slideDuration = 760;\r\n      var pauseDuration = 2300;\r\n      var userPauseDuration = 4200;\r\n\r\n      function getOriginalCards() {\r\n        return Array.prototype.slice.call(track.querySelectorAll(\".pronto-review-card:not(.pronto-review-card-clone)\"));\r\n      }\r\n\r\n      function createClones() {\r\n        if (track.dataset.prontoCarouselCloned === \"1\") {\r\n          return;\r\n        }\r\n\r\n        var originalCards = getOriginalCards();\r\n\r\n        originalCards.forEach(function (card) {\r\n          var clone = card.cloneNode(true);\r\n          clone.setAttribute(\"aria-hidden\", \"true\");\r\n          clone.classList.add(\"pronto-review-card-clone\");\r\n          track.appendChild(clone);\r\n        });\r\n\r\n        track.dataset.prontoCarouselCloned = \"1\";\r\n      }\r\n\r\n      function getCardScrollPosition(card) {\r\n        return card.getBoundingClientRect().left - viewport.getBoundingClientRect().left + viewport.scrollLeft;\r\n      }\r\n\r\n      function measurePositions() {\r\n        var originalCards = getOriginalCards();\r\n        var firstClone = track.querySelector(\".pronto-review-card-clone\");\r\n\r\n        if (!originalCards.length || !firstClone) {\r\n          return false;\r\n        }\r\n\r\n        positions = originalCards.map(function (card) {\r\n          return getCardScrollPosition(card);\r\n        });\r\n\r\n        positions.push(getCardScrollPosition(firstClone));\r\n        originalCount = originalCards.length;\r\n\r\n        return positions.length > 1;\r\n      }\r\n\r\n      function clearSlideTimer() {\r\n        window.clearTimeout(slideTimer);\r\n      }\r\n\r\n      function isCarouselAllowed() {\r\n        return hasEntered && mediaQuery.matches && !reduceMotionQuery.matches;\r\n      }\r\n\r\n      function moveToIndex(index, smooth) {\r\n        if (!positions[index] && positions[index] !== 0) {\r\n          return;\r\n        }\r\n\r\n        if (smooth) {\r\n          section.classList.remove(\"pronto-carousel-reset\");\r\n          viewport.scrollTo({\r\n            left: positions[index],\r\n            behavior: \"smooth\"\r\n          });\r\n          return;\r\n        }\r\n\r\n        section.classList.add(\"pronto-carousel-reset\");\r\n        viewport.scrollLeft = positions[index];\r\n\r\n        window.requestAnimationFrame(function () {\r\n          section.classList.remove(\"pronto-carousel-reset\");\r\n        });\r\n      }\r\n\r\n      function scheduleNextSlide(delay) {\r\n        clearSlideTimer();\r\n\r\n        if (!isCarouselAllowed()) {\r\n          return;\r\n        }\r\n\r\n        slideTimer = window.setTimeout(function () {\r\n          slideToNextCard();\r\n        }, delay);\r\n      }\r\n\r\n      function slideToNextCard() {\r\n        if (!isCarouselAllowed()) {\r\n          return;\r\n        }\r\n\r\n        var nextIndex = currentIndex + 1;\r\n\r\n        moveToIndex(nextIndex, true);\r\n        currentIndex = nextIndex;\r\n\r\n        slideTimer = window.setTimeout(function () {\r\n          if (currentIndex >= originalCount) {\r\n            currentIndex = 0;\r\n            moveToIndex(0, false);\r\n          }\r\n\r\n          scheduleNextSlide(pauseDuration);\r\n        }, slideDuration);\r\n      }\r\n\r\n      function startCarousel() {\r\n        if (!isCarouselAllowed()) {\r\n          section.classList.remove(\"pronto-carousel-ready\", \"pronto-carousel-reset\");\r\n          return;\r\n        }\r\n\r\n        createClones();\r\n\r\n        window.requestAnimationFrame(function () {\r\n          if (!measurePositions()) {\r\n            return;\r\n          }\r\n\r\n          section.classList.add(\"pronto-carousel-ready\");\r\n\r\n          if (!hasStarted) {\r\n            hasStarted = true;\r\n            currentIndex = 0;\r\n            moveToIndex(0, false);\r\n          } else if (currentIndex >= originalCount) {\r\n            currentIndex = 0;\r\n            moveToIndex(0, false);\r\n          } else {\r\n            moveToIndex(currentIndex, false);\r\n          }\r\n\r\n          scheduleNextSlide(pauseDuration);\r\n        });\r\n      }\r\n\r\n      function refreshCarousel() {\r\n        if (!hasStarted) {\r\n          return;\r\n        }\r\n\r\n        window.clearTimeout(resizeTimer);\r\n\r\n        resizeTimer = window.setTimeout(function () {\r\n          if (!isCarouselAllowed()) {\r\n            return;\r\n          }\r\n\r\n          window.requestAnimationFrame(function () {\r\n            if (!measurePositions()) {\r\n              return;\r\n            }\r\n\r\n            if (currentIndex >= originalCount) {\r\n              currentIndex = 0;\r\n            }\r\n\r\n            moveToIndex(currentIndex, false);\r\n          });\r\n        }, 180);\r\n      }\r\n\r\n      function pauseAfterUserInteraction() {\r\n        if (!section.classList.contains(\"pronto-carousel-ready\")) {\r\n          return;\r\n        }\r\n\r\n        clearSlideTimer();\r\n        window.clearTimeout(resumeTimer);\r\n\r\n        resumeTimer = window.setTimeout(function () {\r\n          if (!isCarouselAllowed()) {\r\n            return;\r\n          }\r\n\r\n          scheduleNextSlide(1200);\r\n        }, userPauseDuration);\r\n      }\r\n\r\n      function observeSection() {\r\n        if (!(\"IntersectionObserver\" in window)) {\r\n          hasEntered = true;\r\n          startCarousel();\r\n          return;\r\n        }\r\n\r\n        var observer = new IntersectionObserver(function (entries) {\r\n          entries.forEach(function (entry) {\r\n            if (!entry.isIntersecting || hasEntered) {\r\n              return;\r\n            }\r\n\r\n            hasEntered = true;\r\n            startCarousel();\r\n            observer.disconnect();\r\n          });\r\n        }, {\r\n          threshold: 0.25\r\n        });\r\n\r\n        observer.observe(section);\r\n      }\r\n\r\n      viewport.addEventListener(\"touchstart\", pauseAfterUserInteraction, { passive: true });\r\n      viewport.addEventListener(\"pointerdown\", pauseAfterUserInteraction);\r\n      viewport.addEventListener(\"wheel\", pauseAfterUserInteraction, { passive: true });\r\n      window.addEventListener(\"resize\", refreshCarousel);\r\n\r\n      observeSection();\r\n    })();\r\n  <\/script>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-15a563c e-con-full e-flex e-con e-parent\" data-id=\"15a563c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d64631f elementor-widget elementor-widget-html\" data-id=\"d64631f\" 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<section\r\n    class=\"ps-trusted-work-section\"\r\n    aria-labelledby=\"ps-trusted-work-title\"\r\n    data-ps-trusted-work\r\n>\r\n    <div class=\"ps-trusted-work-inner\">\r\n        <div class=\"ps-trusted-work-visual\">\r\n            <h2\r\n                class=\"ps-trusted-work-title\"\r\n                id=\"ps-trusted-work-title\"\r\n            >\r\n                Trusted Local Experts in Home Repairs\r\n            <\/h2>\r\n\r\n            <div class=\"ps-trusted-work-media\">\r\n                <img\r\n                    src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2026\/04\/pronto-hero-contact.webp\"\r\n                    alt=\"Pronto Solu\u00e7\u00f5es technicians beside a service van\"\r\n                    loading=\"lazy\"\r\n                    decoding=\"async\"\r\n                >\r\n            <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"ps-trusted-work-content\">\r\n            <p class=\"ps-trusted-work-copy\">\r\n                <strong>Pronto Solu\u00e7\u00f5es<\/strong> connects you with certified\r\n                electricians and plumbers in Porto. From urgent repairs to\r\n                routine services, we deliver trusted home services backed by\r\n                our numbers.\r\n            <\/p>\r\n\r\n            <a\r\n                class=\"ps-trusted-work-link\"\r\n                href=\"https:\/\/prontosolucoes.pt\/about\/\"\r\n            >\r\n                <span data-ps-trusted-link-text>Learn more<\/span>\r\n                <span aria-hidden=\"true\">\u2192<\/span>\r\n            <\/a>\r\n\r\n            <div class=\"ps-trusted-counter-grid\">\r\n                <div class=\"ps-trusted-counter-box\">\r\n                    <strong class=\"ps-trusted-counter\">\r\n                        <span\r\n                            class=\"ps-trusted-counter-number\"\r\n                            data-target=\"970\"\r\n                        >\r\n                            970\r\n                        <\/span><span\r\n                            class=\"ps-trusted-counter-suffix\"\r\n                            data-ps-trusted-jobs-suffix\r\n                        >+<\/span>\r\n                    <\/strong>\r\n\r\n                    <p data-ps-trusted-jobs-label>\r\n                        Jobs Completed\r\n                    <\/p>\r\n                <\/div>\r\n\r\n                <div class=\"ps-trusted-counter-box\">\r\n                    <strong class=\"ps-trusted-counter\">\r\n                        <span\r\n                            class=\"ps-trusted-counter-number\"\r\n                            data-target=\"20\"\r\n                        >\r\n                            20\r\n                        <\/span><span\r\n                            class=\"ps-trusted-counter-suffix\"\r\n                            data-ps-trusted-response-suffix\r\n                        > min<\/span>\r\n                    <\/strong>\r\n\r\n                    <p data-ps-trusted-response-label>\r\n                        Quick Response\r\n                    <\/p>\r\n                <\/div>\r\n\r\n                <div class=\"ps-trusted-counter-box\">\r\n                    <strong class=\"ps-trusted-counter\">\r\n                        <span\r\n                            class=\"ps-trusted-counter-number\"\r\n                            data-target=\"98\"\r\n                        >\r\n                            98\r\n                        <\/span><span\r\n                            class=\"ps-trusted-counter-suffix\"\r\n                            data-ps-trusted-first-visit-suffix\r\n                        >%<\/span>\r\n                    <\/strong>\r\n\r\n                    <p data-ps-trusted-first-visit-label>\r\n                        Fixed on First Visit\r\n                    <\/p>\r\n                <\/div>\r\n\r\n                <div class=\"ps-trusted-counter-box\">\r\n                    <strong class=\"ps-trusted-counter\">\r\n                        <span\r\n                            class=\"ps-trusted-counter-number\"\r\n                            data-target=\"10\"\r\n                        >\r\n                            10\r\n                        <\/span><span\r\n                            class=\"ps-trusted-counter-suffix\"\r\n                            data-ps-trusted-experience-suffix\r\n                        >+ Years<\/span>\r\n                    <\/strong>\r\n\r\n                    <p data-ps-trusted-experience-label>\r\n                        Avg. Technician Experience\r\n                    <\/p>\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n<\/section>\r\n\r\n<style>\r\n    body .elementor-widget-html:has(.ps-trusted-work-section),\r\n    body .elementor-widget-html:has(.ps-trusted-work-section)\r\n        > .elementor-widget-container {\r\n        margin: 0 !important;\r\n        padding: 0 !important;\r\n    }\r\n\r\n    body .e-con:has(\r\n        > .elementor-widget-html\r\n        .ps-trusted-work-section\r\n    ),\r\n    body .e-con:has(\r\n        > .e-con-inner\r\n        > .elementor-widget-html\r\n        .ps-trusted-work-section\r\n    ),\r\n    body .e-con > .e-con-inner:has(\r\n        > .elementor-widget-html\r\n        .ps-trusted-work-section\r\n    ) {\r\n        --padding-top: 0px !important;\r\n        --padding-right: 0px !important;\r\n        --padding-bottom: 0px !important;\r\n        --padding-left: 0px !important;\r\n        --gap: 0px !important;\r\n        width: 100% !important;\r\n        max-width: none !important;\r\n        margin: 0 !important;\r\n        padding: 0 !important;\r\n        gap: 0 !important;\r\n    }\r\n\r\n    .ps-trusted-work-section {\r\n        width: 100%;\r\n        margin: 0;\r\n        padding: 88px 24px;\r\n        background: #FAFBFC;\r\n        font-family: \"Montserrat\", sans-serif;\r\n    }\r\n\r\n    .ps-trusted-work-inner {\r\n        display: grid;\r\n        grid-template-columns:\r\n            minmax(0, 1fr)\r\n            minmax(0, 1fr);\r\n        align-items: stretch;\r\n        gap: clamp(48px, 6vw, 76px);\r\n        width: 100%;\r\n        max-width: 1180px;\r\n        margin: 0 auto;\r\n    }\r\n\r\n    .ps-trusted-work-title {\r\n        max-width: 520px;\r\n        margin: 0;\r\n        color: #0F2B49;\r\n        font-family: \"Montserrat\", sans-serif;\r\n        font-size: 36px;\r\n        font-weight: 700;\r\n        letter-spacing: -0.03em;\r\n        line-height: 1.08;\r\n    }\r\n\r\n    .ps-trusted-work-media {\r\n        width: 100%;\r\n        margin-top: 32px;\r\n        overflow: hidden;\r\n        aspect-ratio: 3 \/ 2;\r\n        border-radius: 18px;\r\n        background: #e7eaed;\r\n    }\r\n\r\n    .ps-trusted-work-media img {\r\n        display: block;\r\n        width: 100%;\r\n        height: 100%;\r\n        object-fit: cover;\r\n        object-position: center center;\r\n    }\r\n\r\n    .ps-trusted-work-content {\r\n        display: flex;\r\n        flex-direction: column;\r\n        justify-content: center;\r\n        padding-top: 0;\r\n    }\r\n\r\n    .ps-trusted-work-copy {\r\n        max-width: 580px;\r\n        margin: 0;\r\n        color: #0F2B49;\r\n        font-family: \"Montserrat\", sans-serif;\r\n        font-size: 17px;\r\n        font-weight: 500;\r\n        line-height: 1.7;\r\n    }\r\n\r\n    .ps-trusted-work-copy strong {\r\n        font-weight: 700;\r\n    }\r\n\r\n    .ps-trusted-work-link {\r\n        display: inline-flex;\r\n        width: fit-content;\r\n        max-width: max-content;\r\n        align-items: center;\r\n        gap: 8px;\r\n        margin-top: 16px;\r\n        padding-bottom: 4px;\r\n        border-bottom: 2px solid #E1A134;\r\n        color: #0F2B49;\r\n        font-family: \"Montserrat\", sans-serif;\r\n        font-size: 15px;\r\n        font-weight: 700;\r\n        line-height: 1.2;\r\n        text-decoration: none;\r\n        transition:\r\n            color 0.2s ease,\r\n            gap 0.2s ease;\r\n    }\r\n\r\n    .ps-trusted-work-link:hover,\r\n    .ps-trusted-work-link:focus-visible {\r\n        gap: 12px;\r\n        color: #d97706;\r\n    }\r\n\r\n    .ps-trusted-work-link:focus-visible {\r\n        outline: 3px solid rgba(225, 161, 52, 0.24);\r\n        outline-offset: 4px;\r\n    }\r\n\r\n    .ps-trusted-counter-grid {\r\n        display: grid;\r\n        grid-template-columns:\r\n            repeat(2, minmax(0, 1fr));\r\n        gap: 16px;\r\n        width: 100%;\r\n        margin-top: 28px;\r\n    }\r\n\r\n    .ps-trusted-counter-box {\r\n        display: flex;\r\n        min-width: 0;\r\n        min-height: 122px;\r\n        flex-direction: column;\r\n        align-items: center;\r\n        justify-content: center;\r\n        padding: 22px 14px;\r\n        border: 1px solid rgba(15, 43, 73, 0.12);\r\n        border-radius: 12px;\r\n        background: #ffffff;\r\n        box-shadow:\r\n            0 8px 14px -7px rgba(15, 43, 73, 0.28),\r\n            0 3px 6px -3px rgba(15, 43, 73, 0.16);\r\n        text-align: center;\r\n        transition:\r\n            box-shadow 0.25s ease,\r\n            transform 0.25s ease;\r\n    }\r\n\r\n    .ps-trusted-counter-box:hover {\r\n        box-shadow:\r\n            0 11px 18px -8px rgba(15, 43, 73, 0.32),\r\n            0 4px 8px -3px rgba(15, 43, 73, 0.18);\r\n        transform: translateY(-3px);\r\n    }\r\n\r\n    .ps-trusted-counter {\r\n        display: block;\r\n        margin: 0;\r\n        color: #E1A134;\r\n        font-family: \"Montserrat\", sans-serif;\r\n        font-size: 36px;\r\n        font-weight: 700;\r\n        letter-spacing: -0.03em;\r\n        line-height: 1;\r\n        white-space: nowrap;\r\n    }\r\n\r\n    .ps-trusted-counter-box p {\r\n        margin: 10px 0 0;\r\n        color: #0F2B46;\r\n        font-family: \"Montserrat\", sans-serif;\r\n        font-size: 14px;\r\n        font-weight: 500;\r\n        line-height: 1.3;\r\n    }\r\n\r\n    @media (min-width: 901px) {\r\n        .ps-trusted-work-content {\r\n            align-self: center;\r\n        }\r\n    }\r\n\r\n    @media (max-width: 900px) {\r\n        .ps-trusted-work-section {\r\n            padding: 72px 20px;\r\n        }\r\n\r\n        .ps-trusted-work-inner {\r\n            grid-template-columns: 1fr;\r\n            gap: 38px;\r\n        }\r\n\r\n        .ps-trusted-work-visual,\r\n        .ps-trusted-work-content {\r\n            width: 100%;\r\n            max-width: 720px;\r\n            margin: 0 auto;\r\n        }\r\n\r\n        .ps-trusted-work-content {\r\n            padding-top: 0;\r\n        }\r\n    }\r\n\r\n    @media (max-width: 767px) {\r\n        .ps-trusted-work-section {\r\n            padding: 56px 16px;\r\n        }\r\n\r\n        .ps-trusted-work-inner {\r\n            gap: 30px;\r\n        }\r\n\r\n        .ps-trusted-work-title {\r\n            max-width: 420px;\r\n            margin: 0 auto;\r\n            font-size: clamp(2rem, 8vw, 2.6rem);\r\n            line-height: 1.1;\r\n            text-align: center;\r\n        }\r\n\r\n        .ps-trusted-work-media {\r\n            margin-top: 26px;\r\n            border-radius: 16px;\r\n        }\r\n\r\n        .ps-trusted-work-copy {\r\n            font-size: 16px;\r\n            line-height: 1.65;\r\n        }\r\n\r\n        .ps-trusted-counter-grid {\r\n            gap: 12px;\r\n            margin-top: 24px;\r\n        }\r\n\r\n        .ps-trusted-counter-box {\r\n            min-height: 116px;\r\n            padding: 18px 10px;\r\n            border-radius: 9px;\r\n        }\r\n\r\n        .ps-trusted-counter {\r\n            font-size: 30px;\r\n        }\r\n\r\n        .ps-trusted-counter-box p {\r\n            max-width: 130px;\r\n            margin-top: 9px;\r\n            font-size: 12px;\r\n            line-height: 1.3;\r\n        }\r\n    }\r\n\r\n    @media (max-width: 380px) {\r\n        .ps-trusted-counter-grid {\r\n            gap: 10px;\r\n        }\r\n\r\n        .ps-trusted-counter-box {\r\n            padding-right: 8px;\r\n            padding-left: 8px;\r\n        }\r\n\r\n        .ps-trusted-counter {\r\n            font-size: 27px;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<script>\r\n    (function () {\r\n        const sections = document.querySelectorAll(\r\n            \"[data-ps-trusted-work]\"\r\n        );\r\n\r\n        if (!sections.length) {\r\n            return;\r\n        }\r\n\r\n        const canonicalLink = document.querySelector(\r\n            'link[rel=\"canonical\"]'\r\n        );\r\n\r\n        let canonicalPath = \"\";\r\n\r\n        if (canonicalLink && canonicalLink.href) {\r\n            canonicalPath = new URL(\r\n                canonicalLink.href,\r\n                window.location.origin\r\n            ).pathname;\r\n        }\r\n\r\n        const isPortuguese =\r\n            \/^\\\/pt(?:\\\/|$)\/.test(window.location.pathname) ||\r\n            \/^\\\/pt(?:\\\/|$)\/.test(canonicalPath);\r\n\r\n        const COPY = {\r\n            en: {\r\n                title: \"Trusted Local Experts in Home Repairs\",\r\n                description:\r\n                    \"connects you with certified electricians and plumbers in Porto. From urgent repairs to routine services, we deliver trusted home services backed by our numbers.\",\r\n                learnMore: \"Learn more\",\r\n                jobs: \"Jobs Completed\",\r\n                response: \"Quick Response\",\r\n                firstVisit: \"Fixed on First Visit\",\r\n                jobsSuffix: \"+\",\r\n                responseSuffix: \" min\",\r\n                firstVisitSuffix: \"%\",\r\n                experienceSuffix: \"+ Years\",\r\n                experience: \"Avg. Technician Experience\"\r\n            },\r\n            pt: {\r\n                title:\r\n                    \"Profissionais locais de confian\u00e7a para repara\u00e7\u00f5es em casa\",\r\n                description:\r\n                    \"liga-o a eletricistas e canalizadores certificados no Porto. Desde repara\u00e7\u00f5es urgentes a servi\u00e7os de manuten\u00e7\u00e3o, disponibilizamos servi\u00e7os de confian\u00e7a para a sua casa, comprovados pelos nossos resultados.\",\r\n                learnMore: \"Saiba mais\",\r\n                jobs: \"Trabalhos Conclu\u00eddos\",\r\n                response: \"Resposta r\u00e1pida\",\r\n                firstVisit: \"Resolvido \u00e0 primeira visita\",\r\n                jobsSuffix: \"+\",\r\n                responseSuffix: \" min\",\r\n                firstVisitSuffix: \"%\",\r\n                experienceSuffix: \"+ Anos\",\r\n                experience: \"Experi\u00eancia m\u00e9dia dos t\u00e9cnicos\"\r\n            }\r\n        };\r\n\r\n        const copy = isPortuguese\r\n            ? COPY.pt\r\n            : COPY.en;\r\n\r\n        sections.forEach((section) => {\r\n            const titleEl = section.querySelector(\r\n                \".ps-trusted-work-title\"\r\n            );\r\n\r\n            const copyEl = section.querySelector(\r\n                \".ps-trusted-work-copy\"\r\n            );\r\n\r\n            const linkTextEl = section.querySelector(\r\n                \"[data-ps-trusted-link-text]\"\r\n            );\r\n\r\n            const jobsLabelEl = section.querySelector(\r\n                \"[data-ps-trusted-jobs-label]\"\r\n            );\r\n\r\n            const responseLabelEl = section.querySelector(\r\n                \"[data-ps-trusted-response-label]\"\r\n            );\r\n\r\n            const firstVisitLabelEl = section.querySelector(\r\n                \"[data-ps-trusted-first-visit-label]\"\r\n            );\r\n            const jobsSuffixEl = section.querySelector(\r\n                \"[data-ps-trusted-jobs-suffix]\"\r\n            );\r\n\r\n            const responseSuffixEl = section.querySelector(\r\n                \"[data-ps-trusted-response-suffix]\"\r\n            );\r\n\r\n            const firstVisitSuffixEl = section.querySelector(\r\n                \"[data-ps-trusted-first-visit-suffix]\"\r\n            );\r\n\r\n            const experienceSuffixEl = section.querySelector(\r\n                \"[data-ps-trusted-experience-suffix]\"\r\n            );\r\n\r\n            const experienceLabelEl = section.querySelector(\r\n                \"[data-ps-trusted-experience-label]\"\r\n            );\r\n\r\n            if (titleEl) {\r\n                titleEl.textContent = copy.title;\r\n            }\r\n\r\n            if (copyEl) {\r\n                copyEl.innerHTML =\r\n                    \"<strong>Pronto Solu\u00e7\u00f5es<\/strong> \" +\r\n                    copy.description;\r\n            }\r\n\r\n            if (linkTextEl) {\r\n                linkTextEl.textContent = copy.learnMore;\r\n            }\r\n\r\n            if (jobsLabelEl) {\r\n                jobsLabelEl.textContent = copy.jobs;\r\n            }\r\n\r\n            if (responseLabelEl) {\r\n                responseLabelEl.textContent = copy.response;\r\n            }\r\n\r\n            if (firstVisitLabelEl) {\r\n                firstVisitLabelEl.textContent =\r\n                    copy.firstVisit;\r\n            }\r\n\r\n            if (jobsSuffixEl) {\r\n                jobsSuffixEl.textContent =\r\n                    copy.jobsSuffix;\r\n            }\r\n\r\n            if (responseSuffixEl) {\r\n                responseSuffixEl.textContent =\r\n                    copy.responseSuffix;\r\n            }\r\n\r\n            if (firstVisitSuffixEl) {\r\n                firstVisitSuffixEl.textContent =\r\n                    copy.firstVisitSuffix;\r\n            }\r\n\r\n            if (experienceSuffixEl) {\r\n                experienceSuffixEl.textContent =\r\n                    copy.experienceSuffix;\r\n            }\r\n\r\n            if (experienceLabelEl) {\r\n                experienceLabelEl.textContent =\r\n                    copy.experience;\r\n            }\r\n        });\r\n\r\n        const reducedMotion =\r\n            window.matchMedia &&\r\n            window.matchMedia(\r\n                \"(prefers-reduced-motion: reduce)\"\r\n            ).matches;\r\n\r\n        if (\r\n            reducedMotion ||\r\n            !(\"IntersectionObserver\" in window)\r\n        ) {\r\n            return;\r\n        }\r\n\r\n        const duration = 1400;\r\n\r\n        const animateCounter = (counter) => {\r\n            const target = Number(\r\n                counter.getAttribute(\"data-target\")\r\n            );\r\n\r\n            if (!Number.isFinite(target)) {\r\n                return;\r\n            }\r\n\r\n            const startTime = performance.now();\r\n            let previousValue = -1;\r\n\r\n            counter.textContent = \"0\";\r\n\r\n            const update = (currentTime) => {\r\n                const progress = Math.min(\r\n                    (currentTime - startTime) \/ duration,\r\n                    1\r\n                );\r\n\r\n                const currentValue = Math.round(\r\n                    target * progress\r\n                );\r\n\r\n                if (currentValue !== previousValue) {\r\n                    counter.textContent =\r\n                        `${currentValue}`;\r\n\r\n                    previousValue = currentValue;\r\n                }\r\n\r\n                if (progress < 1) {\r\n                    requestAnimationFrame(update);\r\n                } else {\r\n                    counter.textContent =\r\n                        `${target}`;\r\n                }\r\n            };\r\n\r\n            requestAnimationFrame(update);\r\n        };\r\n        const observer = new IntersectionObserver(\r\n            (entries) => {\r\n                entries.forEach((entry) => {\r\n                    if (\r\n                        entry.isIntersecting &&\r\n                        entry.target.dataset.animated !== \"true\"\r\n                    ) {\r\n                        entry.target.dataset.animated = \"true\";\r\n\r\n                        const counters =\r\n                            entry.target.querySelectorAll(\r\n                                \".ps-trusted-counter-number\"\r\n                            );\r\n\r\n                        counters.forEach((counter) => {\r\n                            animateCounter(counter);\r\n                        });\r\n\r\n                        observer.unobserve(entry.target);\r\n                    }\r\n                });\r\n            },\r\n            {\r\n                threshold: 0.35\r\n            }\r\n        );\r\n\r\n        sections.forEach((section) => {\r\n            const grid = section.querySelector(\r\n                \".ps-trusted-counter-grid\"\r\n            );\r\n\r\n            if (!grid) {\r\n                return;\r\n            }\r\n\r\n            const counters = grid.querySelectorAll(\r\n                \".ps-trusted-counter-number\"\r\n            );\r\n\r\n            counters.forEach((counter) => {\r\n                counter.textContent = \"0\";\r\n            });\r\n\r\n            observer.observe(grid);\r\n        });\r\n    })();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-38d6312 e-con-full e-flex e-con e-parent\" data-id=\"38d6312\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4062f9b elementor-widget elementor-widget-html\" data-id=\"4062f9b\" 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<!--\r\n  PRONTO SOLU\u00c7\u00d5ES | Option B Coverage Map \u2022 Home Repairs \u2022 EN\r\n  1 Elementor HTML widget. CAOP 2025 geometry retained for the active service areas,\r\n  loaded from \/wp-content\/uploads\/pronto-coverage\/coverage-municipalities-caop2025-v1.json.\r\n  Leaflet 1.9.4 is self-hosted in \/wp-content\/uploads\/pronto-coverage\/leaflet-1.9.4\/.\r\n  City buttons select\/highlight. The permanent links below are ordinary crawlable HTML anchors.\r\n  Publish the same widget on the EN source hub; TranslatePress serves the \/pt\/ version.\r\n  Both locale link lists exist in initial HTML; the appropriate list is shown by page language.\r\n  Active areas follow Pronto's preferred commercial order.\r\n-->\r\n<section class=\"ps-coverage\" id=\"psCoverageSection\" data-ps-lang=\"auto\" data-carto-basemap-key=\"cb1_2dmm_2_865a8aa2b1f7ba1f9601899a\" aria-labelledby=\"psCoverageTitle\">\r\n  <div class=\"ps-coverage__inner\">\r\n    <div class=\"ps-coverage__heading\">\r\n      <h2 class=\"ps-coverage__title\" id=\"psCoverageTitle\" data-ps-copy=\"title\">Home repairs across Greater Porto<\/h2>\r\n      <p class=\"ps-coverage__intro\" data-ps-copy=\"intro\">Select a municipality on the map to see its local home repairs page.<\/p>\r\n    <\/div>\r\n    <div class=\"ps-coverage__areas\" aria-label=\"Select municipality\" data-ps-aria-copy=\"areasLabel\">\r\n      <button class=\"ps-coverage__area\" type=\"button\" data-ps-area=\"Porto\" aria-pressed=\"false\">Porto<\/button>\r\n      <button class=\"ps-coverage__area\" type=\"button\" data-ps-area=\"Matosinhos\" aria-pressed=\"false\">Matosinhos<\/button>\r\n      <button class=\"ps-coverage__area\" type=\"button\" data-ps-area=\"Vila Nova de Gaia\" aria-pressed=\"false\">Vila Nova de Gaia<\/button>\r\n      <button class=\"ps-coverage__area\" type=\"button\" data-ps-area=\"Gondomar\" aria-pressed=\"false\">Gondomar<\/button>\r\n      <button class=\"ps-coverage__area\" type=\"button\" data-ps-area=\"Maia\" aria-pressed=\"false\">Maia<\/button>\r\n      <button class=\"ps-coverage__area\" type=\"button\" data-ps-area=\"Valongo\" aria-pressed=\"false\">Valongo<\/button>\r\n    <\/div>\r\n    <div class=\"ps-coverage__map-shell\">\r\n      <div class=\"ps-coverage__map\" id=\"psCoverageMap\" role=\"region\" aria-label=\"Interactive map of Pronto Solu\u00e7\u00f5es service areas\"><\/div>\r\n      <div class=\"ps-coverage__loading\" id=\"psCoverageLoading\" aria-live=\"polite\">\r\n        <span class=\"ps-coverage__spinner\" aria-hidden=\"true\"><\/span>\r\n        <span data-ps-copy=\"loading\">Loading map\u2026<\/span>\r\n      <\/div>\r\n    <\/div>\r\n    <p class=\"ps-coverage__error\" id=\"psCoverageError\" role=\"status\" hidden>The map could not be loaded. You can still use the municipality links below.<\/p>\r\n    <div class=\"ps-coverage__selection\" id=\"psCoverageSelection\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\">\r\n      <div class=\"ps-coverage__selection-copy\">\r\n        <h3 class=\"ps-coverage__selection-title\" id=\"psCoverageSelectionTitle\">Select a municipality<\/h3>\r\n        <p class=\"ps-coverage__selection-text\" id=\"psCoverageSelectionText\">Choose an area above or on the map to see the corresponding service.<\/p>\r\n      <\/div>\r\n      <a class=\"ps-coverage__selection-action\" id=\"psCoverageSelectionLink\" hidden>\r\n        View home repairs page &rarr;\r\n      <\/a>\r\n    <\/div>\r\n    <nav class=\"ps-coverage__destinations\" data-ps-links-lang=\"en\" translate=\"no\" aria-label=\"Direct links to home repair services by municipality\">\r\n      <div class=\"ps-coverage__destination-list\">\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Porto\" href=\"https:\/\/prontosolucoes.pt\/\">Home repairs in Porto<\/a>\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Matosinhos\" href=\"https:\/\/prontosolucoes.pt\/en\/matosinhos\/\">Home repairs in Matosinhos<\/a>\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Vila Nova de Gaia\" href=\"https:\/\/prontosolucoes.pt\/en\/vila-nova-de-gaia\/\">Home repairs in Vila Nova de Gaia<\/a>\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Gondomar\" href=\"https:\/\/prontosolucoes.pt\/en\/gondomar\/\">Home repairs in Gondomar<\/a>\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Maia\" href=\"https:\/\/prontosolucoes.pt\/en\/maia\/\">Home repairs in Maia<\/a>\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Valongo\" href=\"https:\/\/prontosolucoes.pt\/en\/valongo\/\">Home repairs in Valongo<\/a>\r\n      <\/div>\r\n    <\/nav>\r\n    <nav class=\"ps-coverage__destinations\" data-ps-links-lang=\"pt\" translate=\"no\" aria-label=\"Ver todos os servi\u00e7os por concelho\">\r\n      <p class=\"ps-coverage__destinations-heading\">Ver todos os servi\u00e7os por concelho<\/p>\r\n      <div class=\"ps-coverage__destination-list\">\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Porto\" href=\"https:\/\/prontosolucoes.pt\/pt\/\">Repara\u00e7\u00f5es ao domic\u00edlio no Porto<\/a>\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Matosinhos\" href=\"https:\/\/prontosolucoes.pt\/matosinhos\/\">Repara\u00e7\u00f5es ao domic\u00edlio em Matosinhos<\/a>\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Vila Nova de Gaia\" href=\"https:\/\/prontosolucoes.pt\/vila-nova-de-gaia\/\">Repara\u00e7\u00f5es ao domic\u00edlio em Vila Nova de Gaia<\/a>\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Gondomar\" href=\"https:\/\/prontosolucoes.pt\/gondomar\/\">Repara\u00e7\u00f5es ao domic\u00edlio em Gondomar<\/a>\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Maia\" href=\"https:\/\/prontosolucoes.pt\/maia\/\">Repara\u00e7\u00f5es ao domic\u00edlio na Maia<\/a>\r\n        <a class=\"ps-coverage__direct-link\" data-ps-destination=\"Valongo\" href=\"https:\/\/prontosolucoes.pt\/valongo\/\">Repara\u00e7\u00f5es ao domic\u00edlio em Valongo<\/a>\r\n      <\/div>\r\n    <\/nav>\r\n  <\/div>\r\n<\/section>\r\n\r\n<style>\r\n  #psCoverageSection,\r\n  #psCoverageSection *{\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  #psCoverageSection{\r\n    width:100%;\r\n    padding:clamp(28px, 5vw, 58px) clamp(16px, 3vw, 30px);\r\n    background:transparent;\r\n    color:#0F2B46;\r\n    font-family:\"Montserrat\", sans-serif;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__inner{\r\n    width:100%;\r\n    max-width:1180px;\r\n    margin:0 auto;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__heading{\r\n    max-width:720px;\r\n    margin:0 auto 20px;\r\n    text-align:center;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__eyebrow{\r\n    margin:0 0 8px;\r\n    color:#2563EB;\r\n    font-size:12px;\r\n    line-height:1.25;\r\n    font-weight:800;\r\n    letter-spacing:.11em;\r\n    text-transform:uppercase;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__title{\r\n    margin:0;\r\n    color:#0F2B49;\r\n    font-size:36px;\r\n    line-height:1.08;\r\n    font-weight:700;\r\n    letter-spacing:-.03em;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__intro{\r\n    margin:12px auto 0;\r\n    max-width:620px;\r\n    color:#0F2B49;\r\n    font-size:1.02rem;\r\n    line-height:1.72;\r\n    font-weight:500;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__areas{\r\n    display:flex;\r\n    flex-wrap:wrap;\r\n    gap:8px;\r\n    margin:0 0 14px;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__area{\r\n    min-height:36px;\r\n    margin:0;\r\n    padding:8px 13px;\r\n    border:1px solid rgba(15,43,73,.24);\r\n    border-radius:11px;\r\n    background:#F8FAFF;\r\n    color:#0F2B49;\r\n    font:inherit;\r\n    font-size:13px;\r\n    line-height:1;\r\n    font-weight:750;\r\n    cursor:pointer;\r\n    box-shadow:none;\r\n    transition:\r\n      background-color .16s ease,\r\n      border-color .16s ease,\r\n      color .16s ease,\r\n      transform .16s ease;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__area:hover,\r\n  #psCoverageSection .ps-coverage__area:focus-visible{\r\n    border-color:#0F2B49;\r\n    background:rgba(15,43,73,.06);\r\n    color:#0F2B49;\r\n    outline:none;\r\n    transform:translateY(-1px);\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__area[aria-pressed=\"true\"]{\r\n    border-color:#0F2B49;\r\n    background:#0F2B49;\r\n    color:#FFFFFF;\r\n  }\r\n  #psCoverageSection .ps-coverage__map-shell{\r\n    position:relative;\r\n    width:100%;\r\n    height:clamp(320px, 43vw, 440px);\r\n    overflow:hidden;\r\n    border:1px solid rgba(15,43,70,.12);\r\n    border-radius:20px;\r\n    background:#F4F7F5;\r\n    box-shadow:0 14px 36px rgba(15,43,70,.08);\r\n    isolation:isolate;\r\n    contain:layout paint;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__map{\r\n    position:relative;\r\n    z-index:1;\r\n    width:100%;\r\n    height:100%;\r\n    background:#F4F7F5;\r\n    font-family:inherit;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__loading{\r\n    position:absolute;\r\n    z-index:2;\r\n    inset:0;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    gap:10px;\r\n    padding:20px;\r\n    background:#F4F7F5;\r\n    color:#536579;\r\n    font-size:13px;\r\n    font-weight:700;\r\n    transition:opacity .2s ease, visibility .2s ease;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__loading.is-hidden{\r\n    opacity:0;\r\n    visibility:hidden;\r\n    pointer-events:none;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__spinner{\r\n    width:18px;\r\n    height:18px;\r\n    border:2px solid rgba(37,99,235,.18);\r\n    border-top-color:#2563EB;\r\n    border-radius:999px;\r\n    animation:psCoverageSpin .75s linear infinite;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__error{\r\n    margin:12px 0 0;\r\n    padding:12px 14px;\r\n    border:1px solid rgba(185,28,28,.18);\r\n    border-radius:12px;\r\n    background:#FEF2F2;\r\n    color:#7F1D1D;\r\n    font-size:13px;\r\n    line-height:1.45;\r\n    font-weight:700;\r\n  }\r\n\r\n  #psCoverageSection .leaflet-container{\r\n    width:100%;\r\n    height:100%;\r\n    background:#F4F7F5;\r\n    font-family:inherit;\r\n  }\r\n\r\n  #psCoverageSection .leaflet-tile-pane{\r\n    opacity:.93;\r\n  }\r\n\r\n  \/* Tiles overlap by 1px (see initialiseMap). Leaflet's default plus-lighter blending would add the\r\n     overlapping pixel twice and draw a bright line on every tile edge, so these tiles blend normally. *\/\r\n  #psCoverageSection .leaflet-container img.leaflet-tile{\r\n    mix-blend-mode:normal;\r\n  }\r\n\r\n  #psCoverageSection .leaflet-interactive{\r\n    outline:none;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__map-label{\r\n    margin:0;\r\n    padding:0;\r\n    border:0;\r\n    background:transparent;\r\n    box-shadow:none;\r\n    color:#0F2B46;\r\n    font-size:12px;\r\n    line-height:1.1;\r\n    font-weight:850;\r\n    text-align:center;\r\n    text-shadow:\r\n      0 1px 0 rgba(255,255,255,.95),\r\n      0 0 4px rgba(255,255,255,.82);\r\n    pointer-events:none;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__map-label::before{\r\n    display:none;\r\n  }\r\n\r\n  #psCoverageSection .leaflet-control-attribution{\r\n    margin:0;\r\n    padding:2px 5px;\r\n    border-radius:7px 0 0 0;\r\n    background:rgba(255,255,255,.78);\r\n    color:rgba(15,43,70,.62);\r\n    font-size:8px;\r\n    line-height:1.2;\r\n    white-space:nowrap;\r\n  }\r\n\r\n  #psCoverageSection .leaflet-control-attribution a{\r\n    color:rgba(15,43,70,.72);\r\n    text-decoration:none;\r\n  }\r\n\r\n  #psCoverageSection .leaflet-popup-content-wrapper{\r\n    padding:0;\r\n    overflow:hidden;\r\n    border-radius:14px;\r\n    box-shadow:0 14px 34px rgba(15,43,70,.16);\r\n    transition:transform .16s ease, box-shadow .16s ease;\r\n  }\r\n\r\n  #psCoverageSection .leaflet-popup-tip-container{\r\n    transition:transform .16s ease;\r\n  }\r\n\r\n  #psCoverageSection .leaflet-popup:hover .leaflet-popup-content-wrapper,\r\n  #psCoverageSection .leaflet-popup:focus-within .leaflet-popup-content-wrapper{\r\n    transform:translateY(-2px);\r\n    box-shadow:0 18px 38px rgba(15,43,70,.22);\r\n  }\r\n\r\n  #psCoverageSection .leaflet-popup:hover .leaflet-popup-tip-container,\r\n  #psCoverageSection .leaflet-popup:focus-within .leaflet-popup-tip-container{\r\n    transform:translateY(-2px);\r\n  }\r\n\r\n  #psCoverageSection .leaflet-popup-content{\r\n    min-width:170px;\r\n    margin:0;\r\n    color:#0F2B46;\r\n    font-family:inherit;\r\n    line-height:1.4;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__popup-link{\r\n    display:block;\r\n    padding:14px 16px;\r\n    color:#0F2B46;\r\n    text-decoration:none;\r\n    cursor:pointer;\r\n    transition:background-color .16s ease, transform .1s ease;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__popup-link:hover,\r\n  #psCoverageSection .ps-coverage__popup-link:focus-visible{\r\n    background:rgba(37,99,235,.06);\r\n    color:#0F2B46;\r\n    text-decoration:none;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__popup-link:focus-visible{\r\n    outline:2px solid #2563EB;\r\n    outline-offset:-2px;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__popup-link:active{\r\n    background:rgba(37,99,235,.10);\r\n    transform:scale(.985);\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__popup-arrow{\r\n    display:inline-block;\r\n    margin-left:5px;\r\n    transition:transform .16s ease;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__popup-link:hover .ps-coverage__popup-arrow,\r\n  #psCoverageSection .ps-coverage__popup-link:focus-visible .ps-coverage__popup-arrow{\r\n    transform:translateX(4px);\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__popup-link:active .ps-coverage__popup-arrow{\r\n    transform:translateX(6px);\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__popup-kicker{\r\n    display:block;\r\n    margin-bottom:3px;\r\n    color:#2563EB;\r\n    font-size:10px;\r\n    line-height:1.2;\r\n    font-weight:850;\r\n    letter-spacing:.08em;\r\n    text-transform:uppercase;\r\n  }\r\n\r\n  #psCoverageSection .ps-coverage__popup-name{\r\n    display:block;\r\n    color:#0F2B46;\r\n    font-size:14px;\r\n    line-height:1.25;\r\n    font-weight:850;\r\n  }\r\n\r\n  @keyframes psCoverageSpin{\r\n    to{\r\n      transform:rotate(360deg);\r\n    }\r\n  }\r\n\r\n  @media (max-width: 767px){\r\n    #psCoverageSection{\r\n      padding:30px 14px;\r\n    }\r\n\r\n    #psCoverageSection .ps-coverage__heading{\r\n      margin-bottom:16px;\r\n    }\r\n\r\n    #psCoverageSection .ps-coverage__title{\r\n      font-size:clamp(2rem, 8vw, 2.6rem);\r\n      line-height:1.1;\r\n    }\r\n\r\n    #psCoverageSection .ps-coverage__areas{\r\n      gap:7px;\r\n    }\r\n\r\n    #psCoverageSection .ps-coverage__area{\r\n      min-height:34px;\r\n      padding:8px 11px;\r\n      font-size:12px;\r\n    }\r\n\r\n    #psCoverageSection .ps-coverage__map-shell{\r\n      height:300px;\r\n      border-radius:16px;\r\n    }\r\n\r\n    #psCoverageSection .ps-coverage__map-label{\r\n      font-size:10px;\r\n    }\r\n\r\n    #psCoverageSection .leaflet-control-attribution{\r\n      max-width:100%;\r\n      overflow:hidden;\r\n      font-size:8px;\r\n      text-overflow:ellipsis;\r\n    }\r\n  }\r\n\r\n  @media (prefers-reduced-motion: reduce){\r\n    #psCoverageSection .ps-coverage__area,\r\n    #psCoverageSection .ps-coverage__loading{\r\n      transition:none;\r\n    }\r\n\r\n    #psCoverageSection .ps-coverage__spinner{\r\n      animation:none;\r\n    }\r\n  }\r\n\r\n  \/* OPTION B: selected municipality and permanent crawlable links *\/\r\n  #psCoverageSection .ps-coverage__selection {\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:space-between;\r\n    flex-wrap:wrap;\r\n    gap:14px;\r\n    margin-top:15px;\r\n    padding:18px 20px;\r\n    border:1px solid rgba(37,99,235,.16);\r\n    border-radius:16px;\r\n    background:#F8FAFF;\r\n  }\r\n  #psCoverageSection .ps-coverage__selection-copy { flex:1 1 240px; min-width:0; }\r\n  #psCoverageSection .ps-coverage__selection-title {\r\n    margin:0;\r\n    color:#0F2B46;\r\n    font-size:19px;\r\n    line-height:1.3;\r\n    font-weight:850;\r\n  }\r\n  #psCoverageSection .ps-coverage__selection-text {\r\n    margin:6px 0 0;\r\n    color:#536579;\r\n    font-size:14px;\r\n    line-height:1.5;\r\n  }\r\n  #psCoverageSection .ps-coverage__selection-action {\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    min-height:46px;\r\n    padding:12px 17px;\r\n    border-radius:14px;\r\n    background:#0F2B49;\r\n    color:#FFF;\r\n    font-size:16px;\r\n    font-weight:800;\r\n    line-height:1.25;\r\n    text-align:center;\r\n    text-decoration:none;\r\n    transition:background-color .16s ease;\r\n  }\r\n  #psCoverageSection .ps-coverage__selection-action:hover,\r\n  #psCoverageSection .ps-coverage__selection-action:focus-visible {\r\n    background:#0C2440;\r\n    color:#FFF;\r\n    outline:2px solid #0C2440;\r\n    outline-offset:3px;\r\n  }\r\n  #psCoverageSection .ps-coverage__selection-action[hidden] { display:none; }\r\n  #psCoverageSection .ps-coverage__destinations { margin:18px 0 0; }\r\n  #psCoverageSection .ps-coverage__destinations-heading {\r\n    margin:0 0 9px;\r\n    color:#536579;\r\n    font-size:12px;\r\n    font-weight:800;\r\n    letter-spacing:.025em;\r\n  }\r\n  #psCoverageSection .ps-coverage__destination-list {\r\n    display:flex;\r\n    flex-wrap:wrap;\r\n    gap:8px 16px;\r\n  }\r\n  #psCoverageSection .ps-coverage__direct-link {\r\n    display:inline-block;\r\n    color:#1746A2;\r\n    font-size:13px;\r\n    line-height:1.6;\r\n    font-weight:650;\r\n    text-decoration:underline;\r\n    text-underline-offset:3px;\r\n  }\r\n  #psCoverageSection .ps-coverage__direct-link:hover,\r\n  #psCoverageSection .ps-coverage__direct-link:focus-visible {\r\n    color:#0F2B46;\r\n    text-decoration-thickness:2px;\r\n  }\r\n  @media (max-width:767px) {\r\n    #psCoverageSection .ps-coverage__selection { padding:16px; }\r\n    #psCoverageSection .ps-coverage__selection-title { font-size:17px; }\r\n    #psCoverageSection .ps-coverage__selection-action { width:100%; }\r\n    #psCoverageSection .ps-coverage__destination-list { gap:8px 12px; }\r\n  }\r\n\r\n  \/* TranslatePress fallback without JavaScript: show links for the document language. *\/\r\n  #psCoverageSection [data-ps-links-lang=\"pt\"] { display:none; }\r\n  html[lang^=\"pt\"] #psCoverageSection [data-ps-links-lang=\"pt\"] { display:block; }\r\n  html[lang^=\"pt\"] #psCoverageSection [data-ps-links-lang=\"en\"] { display:none; }\r\n  #psCoverageSection [data-ps-links-lang][hidden] { display:none !important; }\r\n<\/style>\r\n\r\n<script>\r\n  (function () {\r\n    \"use strict\";\r\n\r\n    const section = document.getElementById(\"psCoverageSection\");\r\n\r\n    if (!section || section.dataset.psCoverageReady === \"true\") {\r\n      return;\r\n    }\r\n\r\n    section.dataset.psCoverageReady = \"true\";\r\n\r\n    \/\/ Self-hosted assets: Leaflet 1.9.4 and the CAOP 2025 geometry, uploaded to wp-content\/uploads.\r\n    const assetBase = \"\/wp-content\/uploads\/pronto-coverage\/\";\r\n    const geojsonUrl = assetBase + \"coverage-municipalities-caop2025-v1.json\";\r\n\r\n    const mapElement = document.getElementById(\"psCoverageMap\");\r\n    const loadingElement = document.getElementById(\"psCoverageLoading\");\r\n    const errorElement = document.getElementById(\"psCoverageError\");\r\n    const areaButtons = Array.from(section.querySelectorAll(\"[data-ps-area]\"));\r\n    const selectionTitle = section.querySelector(\"#psCoverageSelectionTitle\");\r\n    const selectionText = section.querySelector(\"#psCoverageSelectionText\");\r\n    const selectionLink = section.querySelector(\"#psCoverageSelectionLink\");\r\n    const linksByArea = Object.create(null);\r\n    const documentLanguage = (document.documentElement.lang || \"\").toLowerCase();\r\n    const isPortuguese = section.dataset.psLang === \"pt\" || (section.dataset.psLang !== \"en\" && (documentLanguage.startsWith(\"pt\") || \/^\\\/pt(?:\\\/|$)\/.test(window.location.pathname)));\r\n    \/\/ Both language-specific link sets are in the static HTML for crawler discovery.\r\n    \/\/ Only the current page language's real anchors are used by the selection panel.\r\n    const activeLang = isPortuguese ? \"pt\" : \"en\";\r\n    section.querySelectorAll(\"[data-ps-links-lang]\").forEach(function (nav) {\r\n      nav.hidden = nav.getAttribute(\"data-ps-links-lang\") !== activeLang;\r\n    });\r\n    section.querySelectorAll('[data-ps-links-lang=\"' + activeLang + '\"] a[data-ps-destination][href]')\r\n      .forEach(function (anchor) {\r\n        linksByArea[anchor.getAttribute(\"data-ps-destination\")] = anchor;\r\n      });\r\n\r\n    const copy = isPortuguese\r\n      ? {\r\n          eyebrow: \"\u00c1reas de cobertura\",\r\n          title: \"Repara\u00e7\u00f5es ao domic\u00edlio no Grande Porto\",\r\n          intro: \"Escolhe um concelho no mapa para veres a p\u00e1gina de repara\u00e7\u00f5es ao domic\u00edlio da tua zona.\",\r\n          loading: \"A carregar mapa\u2026\",\r\n          error: \"N\u00e3o foi poss\u00edvel carregar o mapa. Podes continuar pelos links dos concelhos abaixo.\",\r\n          mapLabel: \"Mapa interativo das \u00e1reas de cobertura da Pronto Solu\u00e7\u00f5es\",\r\n          areasLabel: \"Selecionar munic\u00edpio\",\r\n          popupKicker: \"Repara\u00e7\u00f5es ao domic\u00edlio\",\r\n          selectedIntro: \"Consulta os servi\u00e7os de repara\u00e7\u00e3o ao domic\u00edlio para esta zona.\",\r\n          selectedAction: \"Ver repara\u00e7\u00f5es ao domic\u00edlio nesta zona \u2192\"\r\n        }\r\n      : {\r\n          eyebrow: \"Service areas\",\r\n          title: \"Home repairs across Greater Porto\",\r\n          intro: \"Select a municipality on the map to see its local home repairs page.\",\r\n          loading: \"Loading map\u2026\",\r\n          error: \"The map could not be loaded. You can still use the municipality links below.\",\r\n          mapLabel: \"Interactive map of Pronto Solu\u00e7\u00f5es service areas\",\r\n          areasLabel: \"Select municipality\",\r\n          popupKicker: \"Home repair services\",\r\n          selectedIntro: \"Explore our home repair services for this area.\",\r\n          selectedAction: \"View local home repairs page \u2192\"\r\n        };\r\n\r\n    const areaTitles = isPortuguese\r\n      ? {\r\n          \"Porto\": \"Repara\u00e7\u00f5es ao domic\u00edlio no Porto\",\r\n          \"Matosinhos\": \"Repara\u00e7\u00f5es ao domic\u00edlio em Matosinhos\",\r\n          \"Vila Nova de Gaia\": \"Repara\u00e7\u00f5es ao domic\u00edlio em Vila Nova de Gaia\",\r\n          \"Gondomar\": \"Repara\u00e7\u00f5es ao domic\u00edlio em Gondomar\",\r\n          \"Maia\": \"Repara\u00e7\u00f5es ao domic\u00edlio na Maia\",\r\n          \"Valongo\": \"Repara\u00e7\u00f5es ao domic\u00edlio em Valongo\"\r\n        }\r\n      : {\r\n          \"Porto\": \"Home repairs in Porto\",\r\n          \"Matosinhos\": \"Home repairs in Matosinhos\",\r\n          \"Vila Nova de Gaia\": \"Home repairs in Vila Nova de Gaia\",\r\n          \"Gondomar\": \"Home repairs in Gondomar\",\r\n          \"Maia\": \"Home repairs in Maia\",\r\n          \"Valongo\": \"Home repairs in Valongo\"\r\n        };\r\n\r\n    section.querySelectorAll(\"[data-ps-copy]\").forEach(function (element) {\r\n      const key = element.getAttribute(\"data-ps-copy\");\r\n\r\n      if (copy[key]) {\r\n        element.textContent = copy[key];\r\n      }\r\n    });\r\n\r\n    section.querySelectorAll(\"[data-ps-aria-copy]\").forEach(function (element) {\r\n      const key = element.getAttribute(\"data-ps-aria-copy\");\r\n\r\n      if (copy[key]) {\r\n        element.setAttribute(\"aria-label\", copy[key]);\r\n      }\r\n    });\r\n\r\n    mapElement.setAttribute(\"aria-label\", copy.mapLabel);\r\n    errorElement.textContent = copy.error;\r\n\r\n    let map = null;\r\n    let mapStarted = false;\r\n    let activeArea = \"\";\r\n    let pendingArea = \"\";\r\n    let geojsonPromise = null;\r\n    const layersByArea = {};\r\n\r\n    function loadLeaflet() {\r\n      if (window.psCoverageLeafletPromise) {\r\n        return window.psCoverageLeafletPromise;\r\n      }\r\n\r\n      if (window.L) {\r\n        return Promise.resolve(window.L);\r\n      }\r\n\r\n      const stylesheetUrl = assetBase + \"leaflet-1.9.4\/leaflet.css\";\r\n      const scriptUrl = assetBase + \"leaflet-1.9.4\/leaflet.js\";\r\n\r\n      \/\/ The map must not initialise before Leaflet's CSS has applied, or it draws unstyled.\r\n      const stylesheetReady = new Promise(function (resolve, reject) {\r\n        let stylesheet = document.querySelector('link[href=\"' + stylesheetUrl + '\"]');\r\n\r\n        if (stylesheet && stylesheet.sheet) {\r\n          resolve();\r\n          return;\r\n        }\r\n\r\n        if (!stylesheet) {\r\n          stylesheet = document.createElement(\"link\");\r\n          stylesheet.rel = \"stylesheet\";\r\n          stylesheet.href = stylesheetUrl;\r\n          stylesheet.integrity = \"sha256-p4NxAoJBhIIN+hmNHrzRCf9tD\/miZyoHS5obTRR9BMY=\";\r\n          stylesheet.crossOrigin = \"anonymous\";\r\n        }\r\n\r\n        stylesheet.addEventListener(\"load\", function () {\r\n          resolve();\r\n        }, { once: true });\r\n        stylesheet.addEventListener(\"error\", function () {\r\n          reject(new Error(\"leaflet_css_failed\"));\r\n        }, { once: true });\r\n\r\n        if (!stylesheet.parentNode) {\r\n          document.head.appendChild(stylesheet);\r\n        }\r\n      });\r\n\r\n      const scriptReady = new Promise(function (resolve, reject) {\r\n        const existingScript = document.querySelector('script[src=\"' + scriptUrl + '\"]');\r\n\r\n        function finishLoading() {\r\n          if (window.L) {\r\n            resolve(window.L);\r\n          } else {\r\n            reject(new Error(\"leaflet_unavailable\"));\r\n          }\r\n        }\r\n\r\n        if (existingScript) {\r\n          existingScript.addEventListener(\"load\", finishLoading, { once: true });\r\n          existingScript.addEventListener(\"error\", function () {\r\n            reject(new Error(\"leaflet_failed\"));\r\n          }, { once: true });\r\n          return;\r\n        }\r\n\r\n        const script = document.createElement(\"script\");\r\n        script.src = scriptUrl;\r\n        script.integrity = \"sha256-20nQCchB9co0qIjJZRGuk2\/Z9VM+kNiyxNV1lvTlZBo=\";\r\n        script.crossOrigin = \"anonymous\";\r\n        script.async = true;\r\n        script.addEventListener(\"load\", finishLoading, { once: true });\r\n        script.addEventListener(\"error\", function () {\r\n          reject(new Error(\"leaflet_failed\"));\r\n        }, { once: true });\r\n        document.head.appendChild(script);\r\n      });\r\n\r\n      window.psCoverageLeafletPromise = Promise.all([stylesheetReady, scriptReady]).then(function (results) {\r\n        return results[1];\r\n      });\r\n\r\n      return window.psCoverageLeafletPromise;\r\n    }\r\n\r\n    function loadGeojson() {\r\n      if (!geojsonPromise) {\r\n        geojsonPromise = fetch(geojsonUrl).then(function (response) {\r\n          if (!response.ok) {\r\n            throw new Error(\"geojson_failed\");\r\n          }\r\n\r\n          return response.json();\r\n        });\r\n      }\r\n\r\n      return geojsonPromise;\r\n    }\r\n\r\n    function featureName(feature) {\r\n      if (!feature || !feature.properties) {\r\n        return \"\";\r\n      }\r\n\r\n      return feature.properties.key || feature.properties.name || \"\";\r\n    }\r\n\r\n    function defaultStyle() {\r\n      return {\r\n        color: \"#2563EB\",\r\n        weight: 2,\r\n        opacity: 1,\r\n        fillColor: \"#60A5FA\",\r\n        fillOpacity: 0.2\r\n      };\r\n    }\r\n\r\n    function activeStyle() {\r\n      return {\r\n        color: \"#1746A2\",\r\n        weight: 3,\r\n        opacity: 1,\r\n        fillColor: \"#3B82F6\",\r\n        fillOpacity: 0.43\r\n      };\r\n    }\r\n\r\n    function hoverStyle() {\r\n      return {\r\n        color: \"#1D4ED8\",\r\n        weight: 2.6,\r\n        opacity: 1,\r\n        fillColor: \"#60A5FA\",\r\n        fillOpacity: 0.33\r\n      };\r\n    }\r\n\r\n    function popupContent(areaName) {\r\n      const destination = linksByArea[areaName];\r\n      const link = document.createElement(\"a\");\r\n      const kicker = document.createElement(\"span\");\r\n      const name = document.createElement(\"strong\");\r\n      const arrow = document.createElement(\"span\");\r\n\r\n      link.className = \"ps-coverage__popup-link\";\r\n      link.href = destination.href;\r\n\r\n      kicker.className = \"ps-coverage__popup-kicker\";\r\n      kicker.textContent = copy.popupKicker;\r\n\r\n      name.className = \"ps-coverage__popup-name\";\r\n      name.textContent = areaName;\r\n\r\n      arrow.className = \"ps-coverage__popup-arrow\";\r\n      arrow.setAttribute(\"aria-hidden\", \"true\");\r\n      arrow.textContent = \"\u2192\";\r\n\r\n      name.appendChild(arrow);\r\n      link.appendChild(kicker);\r\n      link.appendChild(name);\r\n\r\n      return link;\r\n    }\r\n\r\n    function updateSelectedPanel(areaName) {\r\n      const anchor = linksByArea[areaName];\r\n      selectionTitle.textContent = areaTitles[areaName] || areaName;\r\n      selectionText.textContent = copy.selectedIntro;\r\n\r\n      if (anchor) {\r\n        selectionLink.href = anchor.href;\r\n        selectionLink.textContent = copy.selectedAction;\r\n        selectionLink.hidden = false;\r\n      } else {\r\n        selectionLink.hidden = true;\r\n        selectionLink.removeAttribute(\"href\");\r\n      }\r\n    }\r\n\r\n    function setActiveArea(areaName, openPopup) {\r\n      \/\/ Update the panel immediately, even before Leaflet has finished loading.\r\n      activeArea = areaName;\r\n      areaButtons.forEach(function (button) {\r\n        const isActive = button.getAttribute(\"data-ps-area\") === activeArea;\r\n        button.setAttribute(\"aria-pressed\", isActive ? \"true\" : \"false\");\r\n      });\r\n      updateSelectedPanel(areaName);\r\n\r\n      if (!layersByArea[areaName]) {\r\n        pendingArea = areaName;\r\n        startMap();\r\n        return;\r\n      }\r\n\r\n      Object.keys(layersByArea).forEach(function (name) {\r\n        layersByArea[name].setStyle(name === activeArea ? activeStyle() : defaultStyle());\r\n      });\r\n\r\n      const activeLayer = layersByArea[activeArea];\r\n      activeLayer.bringToFront();\r\n\r\n      if (openPopup) {\r\n        activeLayer.bindPopup(popupContent(activeArea), {\r\n          closeButton: false,\r\n          autoPan: true,\r\n          offset: [0, -4]\r\n        });\r\n        activeLayer.openPopup();\r\n      }\r\n    }\r\n\r\n    function initialiseMap(geojson) {\r\n      map = window.L.map(mapElement, {\r\n        zoomControl: false,\r\n        attributionControl: true,\r\n        scrollWheelZoom: false,\r\n        doubleClickZoom: false,\r\n        boxZoom: false,\r\n        keyboard: true,\r\n        dragging: false,\r\n        touchZoom: false,\r\n        zoomSnap: 0.25,\r\n        zoomDelta: 0.25\r\n      });\r\n\r\n      map.attributionControl.setPrefix(false);\r\n\r\n      const cartoBasemapKey = (section.dataset.cartoBasemapKey || \"\").trim();\r\n      const sharedTileOptions = {\r\n        minZoom: 8,\r\n        maxZoom: 19,\r\n        updateWhenIdle: true,\r\n        keepBuffer: 1,\r\n        crossOrigin: true\r\n      };\r\n      \/\/ Each tile is drawn 1px larger than its grid cell, so neighbouring tiles overlap by 1px and no gap can open\r\n      \/\/ at fractional zoom (zoomSnap 0.25). Needs the mix-blend-mode:normal rule in the <style> block: with Leaflet's\r\n      \/\/ default plus-lighter blending the overlapping pixel is added twice and draws a bright line on every tile edge.\r\n      const OverlappingTileLayer = window.L.TileLayer.extend({\r\n        _initTile: function (tile) {\r\n          window.L.TileLayer.prototype._initTile.call(this, tile);\r\n\r\n          const tileSize = this.getTileSize();\r\n          tile.style.width = tileSize.x + 1 + \"px\";\r\n          tile.style.height = tileSize.y + 1 + \"px\";\r\n        }\r\n      });\r\n      let baseTiles;\r\n\r\n      if (cartoBasemapKey) {\r\n        baseTiles = new OverlappingTileLayer(\r\n          \"https:\/\/{s}.basemaps.cartocdn.com\/rastertiles\/voyager_nolabels\/{z}\/{x}\/{y}{r}.png?key=\" +\r\n            encodeURIComponent(cartoBasemapKey),\r\n          Object.assign({}, sharedTileOptions, {\r\n            subdomains: \"abcd\",\r\n            attribution: '&copy; <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a> &copy; <a href=\"https:\/\/carto.com\/attributions\">CARTO<\/a>'\r\n          })\r\n        );\r\n      } else {\r\n        baseTiles = new OverlappingTileLayer(\r\n          \"https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png\",\r\n          Object.assign({}, sharedTileOptions, {\r\n            subdomains: \"abc\",\r\n            attribution: '&copy; <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a>'\r\n          })\r\n        );\r\n      }\r\n      baseTiles.addTo(map);\r\n\r\n      const geojsonLayer = window.L.geoJSON(geojson, {\r\n        style: defaultStyle,\r\n        onEachFeature: function (feature, layer) {\r\n          const areaName = featureName(feature);\r\n\r\n          if (!areaName) {\r\n            return;\r\n          }\r\n\r\n          layersByArea[areaName] = layer;\r\n\r\n          layer.bindTooltip(areaName, {\r\n            permanent: true,\r\n            direction: \"center\",\r\n            className: \"ps-coverage__map-label\"\r\n          });\r\n\r\n          layer.on(\"click\", function () {\r\n            setActiveArea(areaName, true);\r\n          });\r\n\r\n          layer.on(\"mouseover\", function () {\r\n            if (activeArea !== areaName) {\r\n              layer.setStyle(hoverStyle());\r\n            }\r\n          });\r\n\r\n          layer.on(\"mouseout\", function () {\r\n            layer.setStyle(activeArea === areaName ? activeStyle() : defaultStyle());\r\n          });\r\n        }\r\n      }).addTo(map);\r\n\r\n      function fitMap() {\r\n        const isMobile = window.matchMedia(\"(max-width: 767px)\").matches;\r\n        const padding = isMobile ? [22, 22] : [10, 10];\r\n\r\n        map.invalidateSize();\r\n        map.fitBounds(geojsonLayer.getBounds(), {\r\n          padding: padding,\r\n          animate: false\r\n        });\r\n      }\r\n\r\n      window.requestAnimationFrame(fitMap);\r\n\r\n      if (window.ResizeObserver) {\r\n        let resizeFrame = null;\r\n        const resizeObserver = new ResizeObserver(function () {\r\n          if (resizeFrame) {\r\n            window.cancelAnimationFrame(resizeFrame);\r\n          }\r\n\r\n          resizeFrame = window.requestAnimationFrame(fitMap);\r\n        });\r\n\r\n        resizeObserver.observe(mapElement);\r\n      } else {\r\n        window.addEventListener(\"resize\", fitMap, { passive: true });\r\n      }\r\n\r\n      loadingElement.classList.add(\"is-hidden\");\r\n\r\n      if (pendingArea && layersByArea[pendingArea]) {\r\n        const areaToOpen = pendingArea;\r\n        pendingArea = \"\";\r\n        setActiveArea(areaToOpen, true);\r\n      }\r\n    }\r\n\r\n    function showMapError() {\r\n      loadingElement.classList.add(\"is-hidden\");\r\n      errorElement.hidden = false;\r\n    }\r\n\r\n    function startMap() {\r\n      if (mapStarted) {\r\n        return;\r\n      }\r\n\r\n      mapStarted = true;\r\n      Promise.all([loadLeaflet(), loadGeojson()])\r\n        .then(function (results) {\r\n          initialiseMap(results[1]);\r\n        })\r\n        .catch(showMapError);\r\n    }\r\n\r\n    areaButtons.forEach(function (button) {\r\n      button.addEventListener(\"click\", function () {\r\n        setActiveArea(button.getAttribute(\"data-ps-area\"), true);\r\n      });\r\n\r\n      button.addEventListener(\"mouseenter\", function () {\r\n        const areaName = button.getAttribute(\"data-ps-area\");\r\n\r\n        if (layersByArea[areaName] && activeArea !== areaName) {\r\n          layersByArea[areaName].setStyle(hoverStyle());\r\n        }\r\n      });\r\n\r\n      button.addEventListener(\"mouseleave\", function () {\r\n        const areaName = button.getAttribute(\"data-ps-area\");\r\n\r\n        if (layersByArea[areaName]) {\r\n          layersByArea[areaName].setStyle(activeArea === areaName ? activeStyle() : defaultStyle());\r\n        }\r\n      });\r\n    });\r\n\r\n    if (\"IntersectionObserver\" in window) {\r\n      const mapObserver = new IntersectionObserver(function (entries) {\r\n        if (entries.some(function (entry) { return entry.isIntersecting; })) {\r\n          mapObserver.disconnect();\r\n          startMap();\r\n        }\r\n      }, {\r\n        rootMargin: \"300px 0px\"\r\n      });\r\n\r\n      mapObserver.observe(section);\r\n    } else {\r\n      startMap();\r\n    }\r\n  })();\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-966c7eb elementor-widget elementor-widget-html\" data-id=\"966c7eb\" 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<meta name=\"pronto-section\" content=\"areacoverages\">\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-fd5014e e-con-full e-flex e-con e-parent\" data-id=\"fd5014e\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d14c155 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"d14c155\" 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<style>\r\n.ps-faq-clean {\r\n  background: #f2f4f3;\r\n  padding: 72px 20px 56px;\r\n  font-family: \"Montserrat\", sans-serif;\r\n  color: #0F2B49;\r\n}\r\n\r\n.ps-faq-clean__wrap {\r\n  max-width: 980px;\r\n  margin: 0 auto;\r\n}\r\n\r\n.ps-faq-clean__title {\r\n  margin: 0 0 44px;\r\n  color: #0F2B49;\r\n  text-align: center;\r\n  font-family: \"Montserrat\", sans-serif;\r\n  font-size: 36px;\r\n  line-height: 1.08;\r\n  letter-spacing: -0.03em;\r\n  font-weight: 700;\r\n}\r\n\r\n.ps-faq-clean__list {\r\n  display: grid;\r\n  gap: 18px;\r\n}\r\n\r\n.ps-faq-clean__item {\r\n  background: #ffffff;\r\n  border: 1px solid #d9ddda;\r\n  border-radius: 18px;\r\n  overflow: hidden;\r\n  box-shadow: 0 2px 8px rgba(15, 43, 73, 0.06), 0 1px 2px rgba(15, 43, 73, 0.04);\r\n  transition: box-shadow 0.18s ease, border-color 0.18s ease;\r\n}\r\n\r\n.ps-faq-clean__item:hover {\r\n  box-shadow: 0 6px 16px rgba(15, 43, 73, 0.10), 0 2px 6px rgba(15, 43, 73, 0.05);\r\n}\r\n\r\n.ps-faq-clean__item[hidden] {\r\n  display: none !important;\r\n}\r\n\r\n.ps-faq-clean__extras {\r\n  margin-top: -18px;\r\n  display: grid;\r\n  gap: 18px;\r\n  max-height: 0;\r\n  opacity: 0;\r\n  overflow: hidden;\r\n  transition: max-height 0.34s ease, opacity 0.22s ease, margin-top 0.34s ease;\r\n  will-change: max-height, opacity;\r\n}\r\n\r\n.ps-faq-clean__extras.is-open {\r\n  margin-top: 0;\r\n  max-height: 2200px;\r\n  opacity: 1;\r\n}\r\n\r\n.ps-faq-clean__trigger {\r\n  width: 100%;\r\n  border: 0;\r\n  background: transparent;\r\n  padding: 18px 24px;\r\n  display: grid;\r\n  grid-template-columns: minmax(0, 1fr) auto;\r\n  gap: 18px;\r\n  align-items: center;\r\n  text-align: left;\r\n  cursor: pointer;\r\n}\r\n\r\n.ps-faq-clean__trigger:focus-visible {\r\n  outline: 3px solid rgba(16, 35, 59, 0.14);\r\n  outline-offset: -3px;\r\n}\r\n\r\n.ps-faq-clean__question {\r\n  display: block;\r\n  color: #0F2B49;\r\n  font-family: \"Montserrat\", sans-serif;\r\n  font-size: 16px;\r\n  line-height: 1.35;\r\n  font-weight: 700;\r\n}\r\n\r\n.ps-faq-clean__toggle {\r\n  width: 42px;\r\n  height: 42px;\r\n  border: 1px solid #d1d5d2;\r\n  border-radius: 999px;\r\n  background: #ffffff;\r\n  position: relative;\r\n  flex: 0 0 42px;\r\n}\r\n\r\n.ps-faq-clean__toggle::before,\r\n.ps-faq-clean__toggle::after {\r\n  content: \"\";\r\n  position: absolute;\r\n  top: 50%;\r\n  left: 50%;\r\n  width: 14px;\r\n  height: 2px;\r\n  background: #0F2B49;\r\n  border-radius: 999px;\r\n  transform: translate(-50%, -50%);\r\n  transition: transform 0.22s ease, opacity 0.22s ease;\r\n}\r\n\r\n.ps-faq-clean__toggle::after {\r\n  transform: translate(-50%, -50%) rotate(90deg);\r\n}\r\n\r\n.ps-faq-clean__item.is-open .ps-faq-clean__toggle::after {\r\n  opacity: 0;\r\n  transform: translate(-50%, -50%) rotate(90deg) scaleX(0.2);\r\n}\r\n\r\n.ps-faq-clean__answer {\r\n  display: grid;\r\n  grid-template-rows: 0fr;\r\n  transition: grid-template-rows 0.28s ease;\r\n}\r\n\r\n.ps-faq-clean__item.is-open .ps-faq-clean__answer {\r\n  grid-template-rows: 1fr;\r\n}\r\n\r\n.ps-faq-clean__answer-inner {\r\n  overflow: hidden;\r\n  padding: 0 24px;\r\n}\r\n\r\n.ps-faq-clean__item.is-open .ps-faq-clean__answer-inner {\r\n  padding-bottom: 22px;\r\n}\r\n\r\n.ps-faq-clean__answer-inner p {\r\n  margin: 0;\r\n  color: #0F2B49;\r\n  font-family: \"Montserrat\", sans-serif;\r\n  font-size: 1.02rem;\r\n  line-height: 1.72;\r\n  font-weight: 500;\r\n}\r\n\r\n.ps-faq-clean__footer {\r\n  display: flex;\r\n  justify-content: center;\r\n  margin-top: 28px;\r\n}\r\n\r\n.ps-faq-clean__more {\r\n  width: auto;\r\n  min-width: 0;\r\n  min-height: 50px;\r\n  padding: 14px 28px;\r\n  border: 0;\r\n  border-radius: 20px;\r\n  background: #0F2B49;\r\n  color: #ffffff;\r\n  font-family: \"Montserrat\", sans-serif;\r\n  font-size: 1rem;\r\n  line-height: 1;\r\n  font-weight: 700;\r\n  display: inline-flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  cursor: pointer;\r\n  transition: transform 0.18s ease, opacity 0.18s ease;\r\n}\r\n\r\n.ps-faq-clean__more:hover {\r\n  transform: translateY(-1px);\r\n  background: #0c2440;\r\n}\r\n\r\n.ps-faq-clean__more:focus-visible {\r\n  outline: 3px solid rgba(16, 35, 59, 0.18);\r\n  outline-offset: 2px;\r\n}\r\n\r\n.ps-faq-clean__item.is-open {\r\n  border-color: #E1A134 !important;\r\n  box-shadow: inset 0 0 0 1px #E1A134;\r\n}\r\n\r\n@media (max-width: 767px) {\r\n  .ps-faq-clean {\r\n    padding: 54px 16px 42px;\r\n  }\r\n\r\n  .ps-faq-clean__title {\r\n    margin-bottom: 30px;\r\n    font-size: clamp(2rem, 8vw, 2.6rem);\r\n    line-height: 1.1;\r\n  }\r\n\r\n  .ps-faq-clean__trigger {\r\n    padding: 18px 18px;\r\n    gap: 14px;\r\n  }\r\n\r\n  .ps-faq-clean__question {\r\n    font-size: 1rem;\r\n    line-height: 1.3;\r\n  }\r\n\r\n  .ps-faq-clean__toggle {\r\n    width: 38px;\r\n    height: 38px;\r\n    flex-basis: 38px;\r\n  }\r\n\r\n  .ps-faq-clean__answer-inner {\r\n    padding: 0 18px;\r\n  }\r\n\r\n  .ps-faq-clean__item.is-open .ps-faq-clean__answer-inner {\r\n    padding-bottom: 18px;\r\n  }\r\n\r\n  .ps-faq-clean__more {\r\n    width: auto;\r\n  }\r\n}\r\n<\/style>\r\n\r\n<section class=\"ps-faq-clean\" aria-labelledby=\"ps-faq-home-title\">\r\n  <div class=\"ps-faq-clean__wrap\">\r\n    <h2 class=\"ps-faq-clean__title\" id=\"ps-faq-home-title\">Frequently asked questions<\/h2>\r\n\r\n    <div class=\"ps-faq-clean__list\">\r\n      <article class=\"ps-faq-clean__item is-open\">\r\n        <button class=\"ps-faq-clean__trigger\" type=\"button\" aria-expanded=\"true\">\r\n          <span class=\"ps-faq-clean__question\">What services does Pronto Solu\u00e7\u00f5es provide in Porto?<\/span>\r\n          <span class=\"ps-faq-clean__toggle\" aria-hidden=\"true\"><\/span>\r\n        <\/button>\r\n        <div class=\"ps-faq-clean__answer\">\r\n          <div class=\"ps-faq-clean__answer-inner\">\r\n            <p>Pronto Solu\u00e7\u00f5es in Porto helps with <a href=\"https:\/\/prontosolucoes.pt\/plumber-in-porto\/\">plumbing services<\/a>, <a href=\"https:\/\/prontosolucoes.pt\/electrician-in-porto\/\">electrical work<\/a>, and <a href=\"https:\/\/prontosolucoes.pt\/desentupimento-no-porto\">drain unblocking in Porto<\/a>. The goal is to provide a fast and practical response to domestic and commercial problems that need reliable assistance.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <article class=\"ps-faq-clean__item\">\r\n        <button class=\"ps-faq-clean__trigger\" type=\"button\" aria-expanded=\"false\">\r\n          <span class=\"ps-faq-clean__question\">Does Pronto Solu\u00e7\u00f5es have a plumber in Porto and an electrician in Porto?<\/span>\r\n          <span class=\"ps-faq-clean__toggle\" aria-hidden=\"true\"><\/span>\r\n        <\/button>\r\n        <div class=\"ps-faq-clean__answer\">\r\n          <div class=\"ps-faq-clean__answer-inner\">\r\n            <p>Yes, Pronto Solu\u00e7\u00f5es in Porto handles requests for a <a href=\"https:\/\/prontosolucoes.pt\/plumber-in-porto\/\">plumber in Porto<\/a> and an <a href=\"https:\/\/prontosolucoes.pt\/electrician-in-porto\/\">electrician in Porto<\/a>, as well as <a href=\"https:\/\/prontosolucoes.pt\/desentupimento-no-porto\">drain unblocking services<\/a>. This makes it easier to direct each request to the right service from the first contact.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <article class=\"ps-faq-clean__item\">\r\n        <button class=\"ps-faq-clean__trigger\" type=\"button\" aria-expanded=\"false\">\r\n          <span class=\"ps-faq-clean__question\">Does Pronto Solu\u00e7\u00f5es provide drain unblocking in Porto?<\/span>\r\n          <span class=\"ps-faq-clean__toggle\" aria-hidden=\"true\"><\/span>\r\n        <\/button>\r\n        <div class=\"ps-faq-clean__answer\">\r\n          <div class=\"ps-faq-clean__answer-inner\">\r\n            <p>Yes, Pronto Solu\u00e7\u00f5es in Porto provides <a href=\"https:\/\/prontosolucoes.pt\/desentupimento-no-porto\">drain unblocking in Porto<\/a> for toilets, sinks, drains, pipes, and other blockage situations. If there is a sewage smell, water backing up, or very slow drainage, it is best to ask for help early. For public water and drainage information in Porto, you can also consult <a href=\"https:\/\/aguasdoporto.pt\/\" target=\"_blank\" rel=\"noopener\">\u00c1guas e Energia do Porto<\/a>.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <div class=\"ps-faq-clean__extras\">\r\n        <article class=\"ps-faq-clean__item ps-faq-clean__item--extra\">\r\n        <button class=\"ps-faq-clean__trigger\" type=\"button\" aria-expanded=\"false\">\r\n          <span class=\"ps-faq-clean__question\">How can I request fast assistance in Porto?<\/span>\r\n          <span class=\"ps-faq-clean__toggle\" aria-hidden=\"true\"><\/span>\r\n        <\/button>\r\n        <div class=\"ps-faq-clean__answer\">\r\n          <div class=\"ps-faq-clean__answer-inner\">\r\n            <p>To request fast assistance in Porto, you can contact us by phone or WhatsApp, explain the problem, and share your location. The clearer the first message is, the easier it is to move quickly towards the right service.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <article class=\"ps-faq-clean__item ps-faq-clean__item--extra\">\r\n        <button class=\"ps-faq-clean__trigger\" type=\"button\" aria-expanded=\"false\">\r\n          <span class=\"ps-faq-clean__question\">What areas of Porto and nearby locations do you cover?<\/span>\r\n          <span class=\"ps-faq-clean__toggle\" aria-hidden=\"true\"><\/span>\r\n        <\/button>\r\n        <div class=\"ps-faq-clean__answer\">\r\n          <div class=\"ps-faq-clean__answer-inner\">\r\n            <p>Pronto Solu\u00e7\u00f5es in Porto serves Porto and nearby areas, depending on the service needed and team availability. If you are unsure whether your location is covered, you can simply send your address or area for confirmation.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <article class=\"ps-faq-clean__item ps-faq-clean__item--extra\">\r\n        <button class=\"ps-faq-clean__trigger\" type=\"button\" aria-expanded=\"false\">\r\n          <span class=\"ps-faq-clean__question\">Do you offer urgent 24-hour assistance in Porto?<\/span>\r\n          <span class=\"ps-faq-clean__toggle\" aria-hidden=\"true\"><\/span>\r\n        <\/button>\r\n        <div class=\"ps-faq-clean__answer\">\r\n          <div class=\"ps-faq-clean__answer-inner\">\r\n            <p>Yes, Pronto Solu\u00e7\u00f5es in Porto handles urgent requests whenever operational availability allows a fast response. This is especially important for leaks, serious blockages, electrical faults, and other problems that cannot wait.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <article class=\"ps-faq-clean__item ps-faq-clean__item--extra\">\r\n        <button class=\"ps-faq-clean__trigger\" type=\"button\" aria-expanded=\"false\">\r\n          <span class=\"ps-faq-clean__question\">Can I ask for help by WhatsApp or phone?<\/span>\r\n          <span class=\"ps-faq-clean__toggle\" aria-hidden=\"true\"><\/span>\r\n        <\/button>\r\n        <div class=\"ps-faq-clean__answer\">\r\n          <div class=\"ps-faq-clean__answer-inner\">\r\n            <p>Yes, you can ask Pronto Solu\u00e7\u00f5es in Porto for help by WhatsApp or phone. Many people prefer to send a message with a photo or video first, because that helps speed up the initial assessment.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <article class=\"ps-faq-clean__item ps-faq-clean__item--extra\">\r\n        <button class=\"ps-faq-clean__trigger\" type=\"button\" aria-expanded=\"false\">\r\n          <span class=\"ps-faq-clean__question\">How do I know if I need a plumber or an electrician?<\/span>\r\n          <span class=\"ps-faq-clean__toggle\" aria-hidden=\"true\"><\/span>\r\n        <\/button>\r\n        <div class=\"ps-faq-clean__answer\">\r\n          <div class=\"ps-faq-clean__answer-inner\">\r\n            <p>If the problem involves water, pipes, drains, toilets, taps, or sewers, you will usually need a plumber in Porto. If it involves sockets, breakers, lighting, the electrical panel, or power loss, you will most likely need an electrician in Porto.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <article class=\"ps-faq-clean__item ps-faq-clean__item--extra\">\r\n        <button class=\"ps-faq-clean__trigger\" type=\"button\" aria-expanded=\"false\">\r\n          <span class=\"ps-faq-clean__question\">Do you work in apartments, shops, and condominiums in Porto?<\/span>\r\n          <span class=\"ps-faq-clean__toggle\" aria-hidden=\"true\"><\/span>\r\n        <\/button>\r\n        <div class=\"ps-faq-clean__answer\">\r\n          <div class=\"ps-faq-clean__answer-inner\">\r\n            <p>Yes, Pronto Solu\u00e7\u00f5es in Porto works in apartments, houses, shops, offices, and condominiums. The response is adapted to the type of property and the issue involved.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n      <\/article>\r\n\r\n      <article class=\"ps-faq-clean__item ps-faq-clean__item--extra\">\r\n        <button class=\"ps-faq-clean__trigger\" type=\"button\" aria-expanded=\"false\">\r\n          <span class=\"ps-faq-clean__question\">Why choose Pronto Solu\u00e7\u00f5es in Porto?<\/span>\r\n          <span class=\"ps-faq-clean__toggle\" aria-hidden=\"true\"><\/span>\r\n        <\/button>\r\n        <div class=\"ps-faq-clean__answer\">\r\n          <div class=\"ps-faq-clean__answer-inner\">\r\n            <p>Choosing Pronto Solu\u00e7\u00f5es in Porto means having simpler contact, faster response, and support for plumbing, electrical work, and drain unblocking under the same brand. The focus is on understanding the problem quickly and directing the right assistance without unnecessary complications.<\/p>\r\n          <\/div>\r\n        <\/div>\r\n        <\/article>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"ps-faq-clean__footer\">\r\n      <button class=\"ps-faq-clean__more\" type=\"button\" aria-expanded=\"false\">View more questions<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\ndocument.addEventListener(\"DOMContentLoaded\", function () {\r\n  var sections = document.querySelectorAll(\".ps-faq-clean\");\r\n\r\n  sections.forEach(function (section) {\r\n    var items = Array.from(section.querySelectorAll(\".ps-faq-clean__item\"));\r\n    var extraItems = Array.from(section.querySelectorAll(\".ps-faq-clean__item--extra\"));\r\n    var extrasWrap = section.querySelector(\".ps-faq-clean__extras\");\r\n    var moreButton = section.querySelector(\".ps-faq-clean__more\");\r\n    var expanded = false;\r\n\r\n    function closeAllItems() {\r\n      items.forEach(function (item) {\r\n        item.classList.remove(\"is-open\");\r\n\r\n        var trigger = item.querySelector(\".ps-faq-clean__trigger\");\r\n        if (trigger) {\r\n          trigger.setAttribute(\"aria-expanded\", \"false\");\r\n        }\r\n      });\r\n    }\r\n\r\n    function syncMoreButton() {\r\n      if (!moreButton) return;\r\n\r\n      if (extraItems.length === 0 || expanded) {\r\n        moreButton.hidden = true;\r\n        return;\r\n      }\r\n\r\n      moreButton.hidden = false;\r\n      moreButton.textContent = \"View more questions\";\r\n      moreButton.setAttribute(\"aria-expanded\", \"false\");\r\n    }\r\n\r\n    items.forEach(function (item) {\r\n      var trigger = item.querySelector(\".ps-faq-clean__trigger\");\r\n\r\n      if (!trigger) return;\r\n\r\n      trigger.addEventListener(\"click\", function () {\r\n        var isOpen = item.classList.contains(\"is-open\");\r\n\r\n        closeAllItems();\r\n\r\n        if (!isOpen) {\r\n          item.classList.add(\"is-open\");\r\n          trigger.setAttribute(\"aria-expanded\", \"true\");\r\n        }\r\n      });\r\n    });\r\n\r\n    if (moreButton && extrasWrap) {\r\n      moreButton.addEventListener(\"click\", function () {\r\n        if (expanded) return;\r\n\r\n        expanded = true;\r\n        extrasWrap.classList.add(\"is-open\");\r\n        moreButton.style.display = \"none\";\r\n      });\r\n    }\r\n\r\n    if (extrasWrap) {\r\n      extrasWrap.classList.remove(\"is-open\");\r\n    }\r\n\r\n    syncMoreButton();\r\n  });\r\n});\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-61983e2 e-con-full e-flex e-con e-parent\" data-id=\"61983e2\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t<div class=\"elementor-element elementor-element-14f36b1 elementor-widget elementor-widget-html\" data-id=\"14f36b1\" 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<style>\r\n  body .elementor-widget-html:has([data-cta=\"final-call\"]),\r\n  body .elementor-widget-html:has([data-cta=\"final-call\"]) > .elementor-widget-container,\r\n  body .e-con:has([data-cta=\"final-call\"]),\r\n  body .e-con-inner:has([data-cta=\"final-call\"]) {\r\n    --padding-top: 0px !important;\r\n    --padding-right: 0px !important;\r\n    --padding-bottom: 0px !important;\r\n    --padding-left: 0px !important;\r\n    --gap: 0px !important;\r\n    margin: 0 !important;\r\n    padding: 0 !important;\r\n    gap: 0 !important;\r\n    background: #0E0D0B !important;\r\n  }\r\n  section:has([data-cta=\"final-call\"]) {\r\n    box-sizing: border-box;\r\n    width: 100%;\r\n    display: grid;\r\n    grid-template-columns: 1fr 1fr;\r\n    background: #0E0D0B;\r\n    overflow: hidden;\r\n    font-family: \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n  }\r\n\r\n  section:has([data-cta=\"final-call\"]) * {\r\n    box-sizing: border-box;\r\n  }\r\n\r\n  section:has([data-cta=\"final-call\"]) > div:first-of-type {\r\n    min-width: 0;\r\n    padding: 18px 38px 28px;\r\n    display: flex;\r\n    flex-direction: column;\r\n    justify-content: center;\r\n    color: #FFFFFF;\r\n  }\r\n\r\n  section:has([data-cta=\"final-call\"]) > div:first-of-type > h2 {\r\n    margin: 0;\r\n    color: #FFFFFF;\r\n    font-family: \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n    font-size: 40px;\r\n    font-weight: 700;\r\n    line-height: 1.08;\r\n    letter-spacing: -0.02em;\r\n  }\r\n\r\n  section:has([data-cta=\"final-call\"]) > div:first-of-type > p:first-of-type {\r\n    margin: 42px 0 0;\r\n    color: #FFFFFF;\r\n    font-size: 18px;\r\n    font-weight: 700;\r\n    line-height: 1.65;\r\n  }\r\n\r\n  section:has([data-cta=\"final-call\"]) > div:first-of-type > p:first-of-type strong {\r\n    font-weight: 800;\r\n  }\r\n\r\n  section:has([data-cta=\"final-call\"]) > div:first-of-type > p:first-of-type em {\r\n    font-style: italic;\r\n  }\r\n\r\n  section:has([data-cta=\"final-call\"]) > div:first-of-type > p:last-of-type {\r\n    margin: 22px 0 0;\r\n    color: #FFFFFF;\r\n    font-size: 16px;\r\n    font-weight: 700;\r\n    line-height: 1.5;\r\n  }\r\n\r\n  section:has([data-cta=\"final-call\"]) .pronto-final-button-html {\r\n    margin-top: 40px;\r\n    text-align: center;\r\n  }\r\n\r\n  .pronto-final-button-html .cta-final-call {\r\n    appearance: none;\r\n    box-sizing: border-box;\r\n    display: inline-block;\r\n    padding: 12px 24px;\r\n    border: 0;\r\n    border-radius: 14px;\r\n    background: #E1A134;\r\n    color: #FFFFFF;\r\n    fill: #FFFFFF;\r\n    font-family: \"Poppins\", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\r\n    font-size: 18px;\r\n    font-weight: 800;\r\n    line-height: 1;\r\n    text-align: center;\r\n    text-decoration: none;\r\n    cursor: pointer;\r\n    box-shadow: rgba(0, 0, 0, 0.5) 0px 0px 10px 0px;\r\n    transition: all 0.3s ease;\r\n  }\r\n\r\n  .pronto-final-button-html .cta-final-call:hover {\r\n    background: #D97706;\r\n    transform: scale(1.03);\r\n  }\r\n\r\n  .pronto-final-button-html .elementor-button-content-wrapper {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n    gap: 8px;\r\n  }\r\n\r\n  .pronto-final-button-html .elementor-button-icon {\r\n    display: inline-flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n  }\r\n\r\n  .pronto-final-button-html .elementor-button-icon svg {\r\n    width: 15px;\r\n    height: 15px;\r\n    fill: currentColor;\r\n  }\r\n\r\n  section:has([data-cta=\"final-call\"]) > div:last-of-type {\r\n    min-width: 0;\r\n    padding: 14px 28px 14px 0;\r\n    display: flex;\r\n    align-items: center;\r\n    justify-content: center;\r\n  }\r\n\r\n  section:has([data-cta=\"final-call\"]) > div:last-of-type > img {\r\n    display: block;\r\n    width: 100%;\r\n    max-width: 470px;\r\n    height: auto;\r\n    border-radius: 16px;\r\n    object-fit: cover;\r\n  }\r\n\r\n  @media (max-width: 767px) {\r\n    section:has([data-cta=\"final-call\"]) {\r\n      display: block;\r\n    }\r\n\r\n    section:has([data-cta=\"final-call\"]) > div:first-of-type {\r\n      padding: 12px 24px 0;\r\n    }\r\n\r\n    section:has([data-cta=\"final-call\"]) > div:first-of-type > h2 {\r\n      font-size: 36px;\r\n      line-height: 1.18;\r\n      letter-spacing: -0.02em;\r\n      text-align: left;\r\n    }\r\n\r\n    section:has([data-cta=\"final-call\"]) > div:first-of-type > p:first-of-type {\r\n      margin-top: 42px;\r\n      font-size: 18px;\r\n      font-weight: 700;\r\n      line-height: 1.7;\r\n      text-align: left;\r\n    }\r\n\r\n    section:has([data-cta=\"final-call\"]) > div:first-of-type > p:last-of-type {\r\n      margin-top: 22px;\r\n      font-size: 16px;\r\n      font-weight: 700;\r\n      line-height: 1.5;\r\n      white-space: nowrap;\r\n      text-align: left;\r\n    }\r\n\r\n    section:has([data-cta=\"final-call\"]) .pronto-final-button-html {\r\n      margin-top: 40px;\r\n      text-align: center;\r\n    }\r\n\r\n    section:has([data-cta=\"final-call\"]) > div:last-of-type {\r\n      padding: 40px 24px 0;\r\n    }\r\n\r\n    section:has([data-cta=\"final-call\"]) > div:last-of-type > img {\r\n      width: 100%;\r\n      max-width: none;\r\n      height: auto;\r\n      border-radius: 12px;\r\n    }\r\n  }\r\n<\/style>\r\n\r\n<section>\r\n  <div>\r\n    <h2>\r\n      Need a Plumber or<br>\r\n      Electrician?\r\n    <\/h2>\r\n\r\n    <p>\r\n      Fast, professional help <strong><em>24\/7<\/em><\/strong> in every Porto neighborhood\r\n    <\/p>\r\n\r\n    <p>\r\n      NO HIDDEN FEES, NO HASSLE\r\n    <\/p>\r\n\r\n    <div class=\"pronto-final-button-html\">\r\n      <button\r\n        type=\"button\"\r\n        class=\"cta-final-call pronto-precall pp-service-any\"\r\n        data-cta=\"final-call\"\r\n      >\r\n        <span class=\"elementor-button-content-wrapper\">\r\n          <span class=\"elementor-button-icon\">\r\n            <svg\r\n              aria-hidden=\"true\"\r\n              class=\"e-font-icon-svg e-far-arrow-alt-circle-right\"\r\n              viewBox=\"0 0 512 512\"\r\n              xmlns=\"http:\/\/www.w3.org\/2000\/svg\"\r\n            >\r\n              <path d=\"M504 256C504 119 393 8 256 8S8 119 8 256s111 248 248 248 248-111 248-248zm-448 0c0-110.5 89.5-200 200-200s200 89.5 200 200-89.5 200-200 200S56 366.5 56 256zm72 20v-40c0-6.6 5.4-12 12-12h116v-67c0-10.7 12.9-16 20.5-8.5l99 99c4.7 4.7 4.7 12.3 0 17l-99 99c-7.6 7.6-20.5 2.2-20.5-8.5v-67H140c-6.6 0-12-5.4-12-12z\"><\/path>\r\n            <\/svg>\r\n          <\/span>\r\n\r\n          <span class=\"elementor-button-text\">\r\n            Start Request\r\n          <\/span>\r\n        <\/span>\r\n      <\/button>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div>\r\n    <img decoding=\"async\"\r\n      src=\"https:\/\/prontosolucoes.pt\/wp-content\/uploads\/2026\/04\/pronto-technicians-network-footer.webp\"\r\n      alt=\"equipa t\u00e9cnica canaliza\u00e7\u00e3o e eletricidade Porto pronto solu\u00e7\u00f5es rede t\u00e9cnicos profissionais\"\r\n    >\r\n  <\/div>\r\n<\/section>\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>24h Home Repairs in Porto Fast help for plumbing, electrical and home repairs in Porto What do you need help with? How can we help? Zip Code Get Help Now \u2192 Need Help Fast? We&#8217;ve Got You Covered Certified plumbers and electricians, ready when you need them Drain Unblocking &amp;Plumbing Repairs Toilet, kitchen, and bathroomblockages [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2801,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1560","page","type-page","status-publish","has-post-thumbnail","hentry"],"blocksy_meta":{"has_hero_section":"disabled","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8},"content_style_source":"inherit","content_style":"wide","vertical_spacing_source":"custom","content_area_spacing":"none"},"_links":{"self":[{"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/pages\/1560","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=1560"}],"version-history":[{"count":26,"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/pages\/1560\/revisions"}],"predecessor-version":[{"id":7721,"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/pages\/1560\/revisions\/7721"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/media\/2801"}],"wp:attachment":[{"href":"https:\/\/prontosolucoes.pt\/pt\/wp-json\/wp\/v2\/media?parent=1560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}