{"id":706503,"date":"2026-06-30T09:40:59","date_gmt":"2026-06-30T08:40:59","guid":{"rendered":"https:\/\/motorpor.pt\/?page_id=706503"},"modified":"2026-08-17T13:08:54","modified_gmt":"2026-08-17T12:08:54","slug":"onde-estamos","status":"publish","type":"page","link":"https:\/\/motorpor.pt\/en\/onde-estamos\/","title":{"rendered":"onde estamos"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"706503\" class=\"elementor elementor-706503\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-1c40a8b elementor-section-height-min-height elementor-section-boxed elementor-section-height-default elementor-section-items-middle\" data-eae-slider=\"33400\" data-id=\"1c40a8b\" data-element_type=\"section\" data-e-type=\"section\" data-settings=\"{&quot;background_background&quot;:&quot;classic&quot;}\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7a20a61\" data-eae-slider=\"81823\" data-id=\"7a20a61\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-90e41f0 elementor-widget elementor-widget-heading\" data-id=\"90e41f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<h1 class=\"elementor-heading-title elementor-size-default\">Onde estamos<\/h1>\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"has_eae_slider elementor-section elementor-top-section elementor-element elementor-element-87bee71 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-eae-slider=\"72948\" data-id=\"87bee71\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"has_eae_slider elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-71fd58a\" data-eae-slider=\"65290\" data-id=\"71fd58a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-d795fd2 elementor-widget elementor-widget-spacer\" data-id=\"d795fd2\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-c41bf05 elementor-widget elementor-widget-html\" data-id=\"c41bf05\" 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<div class=\"mp-finder\" id=\"mpFinder\">\n\n  <div class=\"mp-filters\">\n\n    <div class=\"mp-field mp-multiselect\" data-type=\"marca\">\n      <label>Marca<\/label>\n      <button type=\"button\" class=\"mp-select-btn\">\n        <span class=\"mp-selected-text\">Todas as marcas<\/span>\n        <span class=\"mp-badge\">0<\/span>\n        <span class=\"mp-chevron\">\u2304<\/span>\n      <\/button>\n      <div class=\"mp-options\" id=\"mpMarcaOptions\"><\/div>\n    <\/div>\n\n    <div class=\"mp-field mp-multiselect\" data-type=\"localizacao\">\n      <label>Localiza\u00e7\u00e3o<\/label>\n      <button type=\"button\" class=\"mp-select-btn\">\n        <span class=\"mp-selected-text\">Todas as localiza\u00e7\u00f5es<\/span>\n        <span class=\"mp-badge\">0<\/span>\n        <span class=\"mp-chevron\">\u2304<\/span>\n      <\/button>\n      <div class=\"mp-options\" id=\"mpLocalizacaoOptions\"><\/div>\n    <\/div>\n\n    <div class=\"mp-field mp-multiselect\" data-type=\"servico\">\n      <label>Servi\u00e7os<\/label>\n      <button type=\"button\" class=\"mp-select-btn\">\n        <span class=\"mp-selected-text\">Todos os servi\u00e7os<\/span>\n        <span class=\"mp-badge\">0<\/span>\n        <span class=\"mp-chevron\">\u2304<\/span>\n      <\/button>\n      <div class=\"mp-options\" id=\"mpServicoOptions\"><\/div>\n    <\/div>\n\n  <\/div>\n\n  <div class=\"mp-clear-wrap\">\n    <button type=\"button\" id=\"mpClear\">\n      <span>\ud83d\uddd1<\/span> Limpar sele\u00e7\u00e3o\n    <\/button>\n  <\/div>\n\n  <div class=\"mp-separator\"><\/div>\n\n  <div id=\"mpResults\" class=\"mp-results\">\n    <div class=\"mp-empty\">A carregar concession\u00e1rios...<\/div>\n  <\/div>\n\n<\/div>\n\n<style>\n.mp-finder {\n  width: 100%;\n  font-family: inherit;\n  color: #111;\n}\n\n.mp-filters {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 32px;\n}\n\n.mp-field {\n  position: relative;\n}\n\n.mp-field label {\n  display: block;\n  font-size: 13px;\n  margin-bottom: 8px;\n  color: #111;\n}\n\n.mp-select-btn {\n  width: 100%;\n  height: 44px;\n  border: 1px solid #c9ccd3;\n  background: #fff;\n  color: #111;\n  padding: 0 14px;\n  font-size: 14px;\n  text-align: left;\n  cursor: pointer;\n  font-family: inherit;\n  display: flex;\n  align-items: center;\n  gap: 10px;\n}\n\n.mp-selected-text {\n  flex: 1;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n\n.mp-badge {\n  display: none;\n  width: 22px;\n  height: 22px;\n  border-radius: 50%;\n  background: #475066;\n  color: #fff;\n  font-size: 12px;\n  align-items: center;\n  justify-content: center;\n}\n\n.mp-badge.active {\n  display: inline-flex;\n}\n\n.mp-chevron {\n  font-size: 18px;\n  line-height: 1;\n}\n\n.mp-options {\n  display: none;\n  position: absolute;\n  top: calc(100% + 4px);\n  left: 0;\n  width: 100%;\n  max-height: 320px;\n  overflow-y: auto;\n  z-index: 50;\n  background: #fff;\n  border: 1px solid #c9ccd3;\n  box-shadow: 0 10px 30px rgba(0,0,0,.08);\n  padding: 8px 0;\n}\n\n.mp-multiselect.open .mp-options {\n  display: block;\n}\n\n.mp-options label {\n  display: flex;\n  align-items: center;\n  gap: 8px;\n  padding: 10px 14px;\n  margin: 0;\n  font-size: 14px;\n  cursor: pointer;\n}\n\n.mp-options label:hover {\n  background: #f4f5f7;\n}\n\n.mp-clear-wrap {\n  display: flex;\n  justify-content: flex-end;\n  margin-top: 28px;\n}\n\n#mpClear {\n  border: 0;\n  background: transparent;\n  color: #222;\n  font-size: 11px;\n  font-weight: 700;\n  letter-spacing: 2px;\n  text-transform: uppercase;\n  cursor: pointer;\n}\n\n.mp-separator {\n  height: 1px;\n  background: #d7d7d7;\n  margin: 34px 0 38px;\n}\n\n.mp-results {\n  display: flex;\n  flex-direction: column;\n  gap: 34px;\n}\n\n.mp-card {\n  display: grid;\n  grid-template-columns: 1.05fr 0.95fr;\n  gap: 34px;\n  align-items: stretch;\n}\n\n.mp-info {\n  width: 100%;\n  border: 1px solid #e2e2e2;\n  box-shadow: 0 2px 12px rgba(0,0,0,.06);\n  border-radius: 4px;\n  padding: 26px 30px;\n  background: #fff;\n  position: relative;\n}\n\n.mp-heading {\n  display: flex;\n  align-items: baseline;\n  gap: 10px;\n  flex-wrap: wrap;\n  margin-bottom: 8px;\n}\n\n.mp-info h2 {\n  margin: 0;\n  font-size: 30px;\n  font-weight: 800;\n  line-height: 1.15;\n}\n\n.mp-designacao {\n  font-size: 16px;\n  color: #444;\n  line-height: 1.3;\n}\n\n.mp-logos {\n  position: absolute;\n  top: 22px;\n  right: 28px;\n  display: flex;\n  align-items: center;\n  justify-content: flex-end;\n  gap: 8px;\n  max-width: 170px;\n}\n\n.mp-logo-img {\n  width: 58px;\n  height: 58px;\n  object-fit: contain;\n  display: block;\n}\n\n.mp-info.has-logos .mp-heading,\n.mp-info.has-logos .mp-address {\n  padding-right: 180px;\n}\n\n\n.mp-address {\n  font-size: 16px;\n  line-height: 1.45;\n  margin-bottom: 24px;\n}\n\n.mp-data-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  column-gap: 42px;\n  row-gap: 24px;\n  align-items: stretch;\n}\n\n.mp-block {\n  min-width: 0;\n}\n\n.mp-service-block {\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n  min-height: 132px;\n}\n\n.mp-block-title {\n  display: block;\n  font-size: 16px;\n  font-weight: 800;\n  margin-bottom: 8px;\n}\n\n.mp-block-text,\n.mp-block-link {\n  color: #111;\n  font-size: 15px;\n  line-height: 1.45;\n  text-decoration: none;\n}\n\n.mp-inline-contact {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n}\n\n.mp-contact-icon {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  color: #555;\n  flex: 0 0 auto;\n}\n\n.mp-schedule {\n  display: flex;\n  flex-direction: column;\n  gap: 3px;\n  margin-bottom: 10px;\n}\n\n.mp-schedule-line {\n  display: grid;\n  grid-template-columns: auto 1fr;\n  gap: 8px;\n  font-size: 15px;\n  line-height: 1.45;\n}\n\n.mp-btn-green {\n  width: 100%;\n  min-height: 44px;\n  border: 1px solid #68c246;\n  background: #68c246;\n  color: #fff;\n  border-radius: 8px;\n  text-decoration: none;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n  padding: 9px 14px;\n  font-size: 15px;\n  font-weight: 700;\n  transition: opacity .2s ease;\n  margin-top: auto;\n}\n\n.mp-btn-green:hover {\n  opacity: .9;\n  color: #fff;\n}\n\n.mp-bottom-buttons {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 16px;\n  margin-top: 24px;\n}\n\n.mp-btn-outline {\n  min-height: 46px;\n  border: 1px solid #111;\n  background: #fff;\n  color: #111;\n  text-decoration: none;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  text-align: center;\n  padding: 10px 16px;\n  text-transform: uppercase;\n  letter-spacing: 3px;\n  font-size: 12px;\n  font-weight: 700;\n}\n\n.mp-btn-outline:hover {\n  background: #f5f5f5;\n  color: #111;\n}\n\n.mp-photo {\n  width: 100%;\n  min-height: 100%;\n  border-radius: 8px;\n  overflow: hidden;\n  background-size: cover;\n  background-position: center center;\n  background-repeat: no-repeat;\n}\n\n.mp-photo.mp-no-image {\n  display: none;\n}\n\n.mp-empty {\n  background: #f6f6f6;\n  padding: 35px;\n  text-align: center;\n  font-size: 15px;\n}\n\n@media (max-width: 1024px) {\n  .mp-filters {\n    grid-template-columns: 1fr;\n    gap: 18px;\n  }\n\n  .mp-card {\n    grid-template-columns: 1fr;\n    gap: 22px;\n  }\n\n  .mp-photo {\n    order: -1;\n    min-height: 320px;\n  }\n\n  .mp-info {\n    padding: 22px;\n  }\n}\n\n@media (max-width: 767px) {\n  .mp-separator {\n    margin: 28px 0;\n  }\n\n  .mp-info h2 {\n    font-size: 26px;\n  }\n\n  .mp-designacao {\n    font-size: 15px;\n  }\n\n  .mp-logos {\n    position: static;\n    justify-content: flex-start;\n    max-width: none;\n    margin: 8px 0 12px;\n  }\n\n  .mp-logo-img {\n    width: 48px;\n    height: 48px;\n  }\n\n  .mp-info.has-logos .mp-heading,\n  .mp-info.has-logos .mp-address {\n    padding-right: 0;\n  }\n\n\n  .mp-address {\n    font-size: 15px;\n    margin-bottom: 20px;\n  }\n\n  .mp-data-grid {\n    grid-template-columns: 1fr;\n    row-gap: 20px;\n  }\n\n  .mp-service-block {\n    min-height: auto;\n  }\n\n  .mp-bottom-buttons {\n    grid-template-columns: 1fr;\n  }\n\n  .mp-btn-green {\n    font-size: 15px;\n  }\n\n  .mp-photo {\n    min-height: 240px;\n  }\n}\n<\/style>\n\n<script>\n(function () {\n\n  const SHEET_ID = \"1apo6IrXKALXiUxduWWJoys763jNhhISC3Q1xjU2Inhg\";\n  const SHEET_NAME = \"Extern\";\n\n  let rawRows = [];\n  let stores = [];\n\n  const results = document.getElementById(\"mpResults\");\n  const marcaOptions = document.getElementById(\"mpMarcaOptions\");\n  const localizacaoOptions = document.getElementById(\"mpLocalizacaoOptions\");\n  const servicoOptions = document.getElementById(\"mpServicoOptions\");\n  const clearBtn = document.getElementById(\"mpClear\");\n\n  function normalizeKey(value) {\n    return String(value || \"\")\n      .toLowerCase()\n      .normalize(\"NFD\")\n      .replace(\/[\\u0300-\\u036f]\/g, \"\")\n      .replace(\/\\s+\/g, \"\")\n      .replace(\/_\/g, \"\")\n      .replace(\/[^a-z0-9]\/g, \"\");\n  }\n\n  function getValue(row, possibleNames) {\n    for (const name of possibleNames) {\n      const key = normalizeKey(name);\n      if (row[key] !== undefined && row[key] !== null && String(row[key]).trim() !== \"\") {\n        return String(row[key]).trim();\n      }\n    }\n    return \"\";\n  }\n\n  function cleanText(value) {\n    return String(value || \"\").replace(\/\\s+\/g, \" \").trim();\n  }\n\n  function splitLogoUrls(value) {\n    return String(value || \"\")\n      .split(\/[\\n,;|]+\/)\n      .map(item => item.trim())\n      .filter(Boolean);\n  }\n\n\n  function escapeHtml(value) {\n    return String(value || \"\")\n      .replace(\/&\/g, \"&amp;\")\n      .replace(\/<\/g, \"&lt;\")\n      .replace(\/>\/g, \"&gt;\")\n      .replace(\/\"\/g, \"&quot;\");\n  }\n\n  function escapeAttr(value) {\n    return escapeHtml(value).replace(\/'\/g, \"&#039;\");\n  }\n\n  function makeUrl(url) {\n    if (!url || url === \"#\") return \"#\";\n    return url;\n  }\n\n  function appendFormParams(url, params) {\n    if (!url || url === \"#\") return \"#\";\n\n    try {\n      const finalUrl = new URL(url, window.location.origin);\n\n      const marca = params.marca || \"\";\n      const cidade = params.cidade || \"\";\n      const assunto = params.assunto || \"\";\n      const servico = params.servico || \"\";\n\n      const aliases = {\n        marca: marca,\n        Marca: marca,\n        brand: marca,\n\n        cidade: cidade,\n        localidade: cidade,\n        motorpor_mais_proxima: cidade,\n        motorpor_mais_proxima_de_si: cidade,\n        \"motorpor-mais-proxima\": cidade,\n        \"motorpor-mais-proxima-de-si\": cidade,\n\n        assunto: assunto,\n        Assunto: assunto,\n        subject: assunto,\n        \"your-subject\": assunto,\n\n        servico: servico,\n        service: servico\n      };\n\n      Object.keys(aliases).forEach(key => {\n        if (aliases[key]) {\n          finalUrl.searchParams.set(key, aliases[key]);\n        }\n      });\n\n      return finalUrl.toString();\n    } catch (e) {\n      return url;\n    }\n  }\n\n  function selectedValues(type) {\n    return Array.from(\n      document.querySelectorAll('.mp-multiselect[data-type=\"' + type + '\"] input:checked')\n    ).map(input => input.value);\n  }\n\n  function getSelectedBrandForStore(store) {\n    const selectedBrands = selectedValues(\"marca\");\n    const matchedBrand = selectedBrands.find(brand => store.brands.includes(brand));\n\n    if (matchedBrand) return matchedBrand;\n\n    return store.brands && store.brands.length ? store.brands[0] : \"\";\n  }\n\n  function normalizeService(value) {\n    const text = String(value || \"\").toLowerCase();\n\n    if (text.includes(\"pe\u00e7a\") || text.includes(\"peca\")) return \"pecas\";\n    if (text.includes(\"colis\")) return \"colisao\";\n    if (text.includes(\"oficina\") || text.includes(\"reparador\") || text.includes(\"reparadores\")) return \"oficina\";\n    if (text.includes(\"usado\")) return \"vendas_usados\";\n    if (text.includes(\"novo\")) return \"vendas_novos\";\n    if (text.includes(\"venda\")) return \"vendas\";\n\n    return \"vendas\";\n  }\n\n  function getBrands(row) {\n    const brands = [];\n\n    for (let i = 1; i <= 7; i++) {\n      const brand = getValue(row, [\"Marca_\" + i, \"Marca \" + i]);\n      if (brand) brands.push(brand);\n    }\n\n    return [...new Set(brands.map(cleanText).filter(Boolean))];\n  }\n\n  function buildSchedule(row) {\n    const dia1 = getValue(row, [\"Dia_1\", \"Dia 1\"]);\n    const hora1 = getValue(row, [\"Horario_semana\", \"Hor\u00e1rio_semana\", \"Horario semana\", \"Hor\u00e1rio semana\"]);\n\n    const dia2 = getValue(row, [\"Dia_2\", \"Dia2\", \"Dia 2\"]);\n    const hora2 = getValue(row, [\"Horario_sabado\", \"Hor\u00e1rio_sabado\", \"Horario _sabado\", \"Hor\u00e1rio _sabado\", \"Horario sabado\", \"Hor\u00e1rio s\u00e1bado\"]);\n\n    const dia3 = getValue(row, [\"Dia_3\", \"Dia 3\"]);\n    const hora3 = getValue(row, [\"Horario_domingo\", \"Hor\u00e1rio_domingo\", \"Horario _domingo\", \"Hor\u00e1rio _domingo\", \"Horario domingo\", \"Hor\u00e1rio domingo\"]);\n\n    const lines = [];\n\n    if (dia1 || hora1) {\n      lines.push({ dia: dia1 || \"Segunda a Sexta\", hora: hora1 });\n    }\n\n    if (dia2 || hora2) {\n      lines.push({ dia: dia2 || \"S\u00e1bado\", hora: hora2 });\n    }\n\n    if (dia3 || hora3) {\n      lines.push({ dia: dia3 || \"Domingo\", hora: hora3 });\n    }\n\n    return lines;\n  }\n\n  function scheduleHtml(lines) {\n    if (!lines || !lines.length) return \"\";\n\n    return lines.map(line => `\n      <div class=\"mp-schedule-line\">\n        <span>${escapeHtml(line.dia)}<\/span>\n        <span>${escapeHtml(line.hora)}<\/span>\n      <\/div>\n    `).join(\"\");\n  }\n\n  function hasScheduleLines(service) {\n    return !!(\n      service &&\n      service.schedule &&\n      service.schedule.some(line => {\n        return (line.dia && String(line.dia).trim()) || (line.hora && String(line.hora).trim());\n      })\n    );\n  }\n\n  function hasServiceContent(service, buttonUrl) {\n    return !!(service && (hasScheduleLines(service) || (buttonUrl && buttonUrl !== \"#\")));\n  }\n\n  function contactIcon(type) {\n    if (type === \"phone\") {\n      return `\n        <span class=\"mp-contact-icon\" aria-hidden=\"true\">\n          <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"currentColor\">\n            <path d=\"M6.62 10.79a15.053 15.053 0 0 0 6.59 6.59l2.2-2.2a1 1 0 0 1 1.01-.24c1.12.37 2.33.57 3.58.57a1 1 0 0 1 1 1V20a1 1 0 0 1-1 1C10.3 21 3 13.7 3 4a1 1 0 0 1 1-1h3.5a1 1 0 0 1 1 1c0 1.25.2 2.46.57 3.58a1 1 0 0 1-.24 1.01l-2.21 2.2z\"\/>\n          <\/svg>\n        <\/span>\n      `;\n    }\n\n    return `\n      <span class=\"mp-contact-icon\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 24 24\" width=\"14\" height=\"14\" fill=\"currentColor\">\n          <path d=\"M20 4H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V6a2 2 0 0 0-2-2zm0 4.24-8 4.99-8-4.99V6l8 5 8-5v2.24z\"\/>\n        <\/svg>\n      <\/span>\n    `;\n  }\n\n  function parseGoogleRows(response) {\n    const cols = response.table.cols.map(col => normalizeKey(col.label));\n    const rows = response.table.rows || [];\n\n    return rows.map(r => {\n      const obj = {};\n\n      cols.forEach((key, index) => {\n        if (!key) return;\n\n        obj[key] = r.c[index] && r.c[index].v !== null && r.c[index].v !== undefined\n          ? r.c[index].v\n          : \"\";\n      });\n\n      return obj;\n    });\n  }\n\n  function mergeService(current, next) {\n    if (!current) return next;\n\n    return {\n      schedule: current.schedule && current.schedule.length ? current.schedule : next.schedule,\n      website: current.website || next.website,\n      websitePecas: current.websitePecas || next.websitePecas,\n      marcarServico: current.marcarServico || next.marcarServico,\n      category: current.category || next.category\n    };\n  }\n\n  function groupRows(rows) {\n    const grouped = {};\n\n    rows.forEach((row, rowIndex) => {\n      const cidade = getValue(row, [\"Cidade\"]);\n      const designacao = getValue(row, [\"Designacao\", \"Designa\u00e7\u00e3o\"]);\n      const morada = getValue(row, [\"Morada\"]);\n      const codigoPostal = getValue(row, [\"Codigo_postal\", \"Codigo_potal\", \"C\u00f3digo_postal\", \"C\u00f3digo postal\"]);\n      const telefone = getValue(row, [\"Telefone\"]);\n      const email = getValue(row, [\"Email\", \"email\"]);\n      const latitude = getValue(row, [\"latitude\"]);\n      const longitude = getValue(row, [\"longitude\"]);\n      const linkImg = getValue(row, [\"link_img\", \"Link_img\", \"imagem\", \"foto\"]);\n      const linkLogo = getValue(row, [\"link_logo\", \"Link_logo\", \"logo\", \"Logo\"]);\n      const brands = getBrands(row);\n      const category = getValue(row, [\"Categories\", \"Categoria\", \"Tipo\"]);\n      const service = normalizeService(category);\n\n      if (!cidade || !morada) return;\n\n      \/*\n        A designa\u00e7\u00e3o entra na chave para n\u00e3o juntar pontos de venda diferentes\n        que tenham a mesma morada\/c\u00f3digo postal.\n        Se a designa\u00e7\u00e3o estiver vazia, usa a linha como fallback para evitar fus\u00f5es indevidas.\n      *\/\n      const identity = designacao || (category ? category + \"|linha-\" + rowIndex : \"linha-\" + rowIndex);\n\n      const key = [\n        cidade.toLowerCase(),\n        morada.toLowerCase(),\n        codigoPostal.toLowerCase(),\n        identity.toLowerCase()\n      ].join(\"|\");\n\n      if (!grouped[key]) {\n        grouped[key] = {\n          cidade,\n          designacao,\n          morada,\n          codigoPostal,\n          telefone,\n          email,\n          latitude,\n          longitude,\n          linkImg,\n          logos: [],\n          brands: [],\n          categories: [],\n          services: {\n            vendas: null,\n            vendas_novos: null,\n            vendas_usados: null,\n            oficina: null,\n            pecas: null,\n            colisao: null\n          }\n        };\n      }\n\n      grouped[key].brands = [...new Set([...grouped[key].brands, ...brands])];\n      grouped[key].categories = [...new Set([...grouped[key].categories, category].filter(Boolean))];\n\n      if (!grouped[key].designacao && designacao) grouped[key].designacao = designacao;\n      if (!grouped[key].telefone && telefone) grouped[key].telefone = telefone;\n      if (!grouped[key].email && email) grouped[key].email = email;\n      if (!grouped[key].latitude && latitude) grouped[key].latitude = latitude;\n      if (!grouped[key].longitude && longitude) grouped[key].longitude = longitude;\n      if (!grouped[key].linkImg && linkImg) grouped[key].linkImg = linkImg;\n      grouped[key].logos = [...new Set([...grouped[key].logos, ...splitLogoUrls(linkLogo)])];\n\n      const serviceData = {\n        schedule: buildSchedule(row),\n        website: getValue(row, [\"link_website\", \"Link_website\", \"Link website\"]),\n        websitePecas: getValue(row, [\"link_website_pecas\", \"Link_website_pecas\", \"Link website pe\u00e7as\"]),\n        marcarServico: getValue(row, [\"link_marcacao_de_servico\", \"Link_marcacao_de_servico\", \"link marca\u00e7\u00e3o de servi\u00e7o\"]),\n        category: category\n      };\n\n      grouped[key].services[service] = mergeService(grouped[key].services[service], serviceData);\n\n      if (service === \"vendas_novos\" || service === \"vendas_usados\") {\n        grouped[key].services.vendas = mergeService(grouped[key].services.vendas, serviceData);\n      }\n    });\n\n    return Object.values(grouped);\n  }\n\n  function currentSelections() {\n    return {\n      marcas: selectedValues(\"marca\"),\n      cidades: selectedValues(\"localizacao\"),\n      servicos: selectedValues(\"servico\")\n    };\n  }\n\n  function storeMatches(store, ignoreType) {\n    const selections = currentSelections();\n\n    const matchMarca = ignoreType === \"marca\" || !selections.marcas.length || selections.marcas.some(marca => store.brands.includes(marca));\n    const matchCidade = ignoreType === \"localizacao\" || !selections.cidades.length || selections.cidades.includes(store.cidade);\n    const matchServico = ignoreType === \"servico\" || !selections.servicos.length || selections.servicos.some(servico => store.categories.includes(servico));\n\n    return matchMarca && matchCidade && matchServico;\n  }\n\n  function getAvailableBrands() {\n    return [...new Set(stores.filter(store => storeMatches(store, \"marca\")).flatMap(store => store.brands))]\n      .filter(Boolean)\n      .sort((a, b) => a.localeCompare(b, \"pt\"));\n  }\n\n  function getAvailableCities() {\n    return [...new Set(stores.filter(store => storeMatches(store, \"localizacao\")).map(store => store.cidade))]\n      .filter(Boolean)\n      .sort((a, b) => a.localeCompare(b, \"pt\"));\n  }\n\n  function getAvailableServices() {\n    return [...new Set(stores.filter(store => storeMatches(store, \"servico\")).flatMap(store => store.categories))]\n      .filter(Boolean)\n      .sort((a, b) => a.localeCompare(b, \"pt\"));\n  }\n\n  function renderFilterOptions() {\n    const currentBrands = selectedValues(\"marca\");\n    const currentCities = selectedValues(\"localizacao\");\n    const currentServices = selectedValues(\"servico\");\n\n    const availableBrands = getAvailableBrands();\n    const availableCities = getAvailableCities();\n    const availableServices = getAvailableServices();\n\n    const validSelectedBrands = currentBrands.filter(brand => availableBrands.includes(brand));\n    const validSelectedCities = currentCities.filter(city => availableCities.includes(city));\n    const validSelectedServices = currentServices.filter(service => availableServices.includes(service));\n\n    marcaOptions.innerHTML = availableBrands.map(brand => `\n      <label>\n        <input type=\"checkbox\" value=\"${escapeAttr(brand)}\" ${validSelectedBrands.includes(brand) ? \"checked\" : \"\"}>\n        ${escapeHtml(brand)}\n      <\/label>\n    `).join(\"\");\n\n    localizacaoOptions.innerHTML = availableCities.map(city => `\n      <label>\n        <input type=\"checkbox\" value=\"${escapeAttr(city)}\" ${validSelectedCities.includes(city) ? \"checked\" : \"\"}>\n        ${escapeHtml(city)}\n      <\/label>\n    `).join(\"\");\n\n    servicoOptions.innerHTML = availableServices.map(service => `\n      <label>\n        <input type=\"checkbox\" value=\"${escapeAttr(service)}\" ${validSelectedServices.includes(service) ? \"checked\" : \"\"}>\n        ${escapeHtml(service)}\n      <\/label>\n    `).join(\"\");\n\n    document.querySelectorAll(\".mp-options input\").forEach(input => {\n      input.addEventListener(\"change\", function () {\n        renderFilterOptions();\n        updateDropdownLabels();\n        renderResults();\n      });\n    });\n  }\n\n  function updateDropdownLabels() {\n    document.querySelectorAll(\".mp-multiselect\").forEach(dropdown => {\n      const type = dropdown.dataset.type;\n      const checked = Array.from(dropdown.querySelectorAll(\"input:checked\")).map(i => i.value);\n      const text = dropdown.querySelector(\".mp-selected-text\");\n      const badge = dropdown.querySelector(\".mp-badge\");\n\n      if (!checked.length) {\n        if (type === \"marca\") text.textContent = \"Todas as marcas\";\n        if (type === \"localizacao\") text.textContent = \"Todas as localiza\u00e7\u00f5es\";\n        if (type === \"servico\") text.textContent = \"Todos os servi\u00e7os\";\n        badge.textContent = \"0\";\n        badge.classList.remove(\"active\");\n      } else {\n        text.textContent = checked.join(\", \");\n        badge.textContent = checked.length;\n        badge.classList.add(\"active\");\n      }\n    });\n  }\n\n  function buildServiceBlock(title, service, buttonLabel, buttonUrl, store, extraParams) {\n    if (!hasServiceContent(service, buttonUrl)) return \"\";\n\n    const finalButtonUrl = appendFormParams(buttonUrl, {\n      marca: extraParams.marca,\n      cidade: extraParams.cidade,\n      assunto: extraParams.assunto,\n      servico: extraParams.servico || service?.category || title\n    });\n\n    return `\n      <div class=\"mp-block mp-service-block\">\n        <strong class=\"mp-block-title\">${title}<\/strong>\n\n        <div class=\"mp-schedule\">\n          ${scheduleHtml(service?.schedule || [])}\n        <\/div>\n\n        ${buttonUrl && buttonUrl !== \"#\" ? `\n          <a class=\"mp-btn-green\" href=\"${makeUrl(finalButtonUrl)}\">\n            ${buttonLabel}\n          <\/a>\n        ` : \"\"}\n      <\/div>\n    `;\n  }\n\n  function renderResults() {\n    const marcas = selectedValues(\"marca\");\n    const cidades = selectedValues(\"localizacao\");\n    const servicos = selectedValues(\"servico\");\n\n    const filtered = stores.filter(store => {\n      const matchMarca = !marcas.length || marcas.some(marca => store.brands.includes(marca));\n      const matchCidade = !cidades.length || cidades.includes(store.cidade);\n      const matchServico = !servicos.length || servicos.some(servico => store.categories.includes(servico));\n      return matchMarca && matchCidade && matchServico;\n    });\n\n    if (!filtered.length) {\n      results.innerHTML = '<div class=\"mp-empty\">N\u00e3o foram encontrados resultados para a sele\u00e7\u00e3o efetuada.<\/div>';\n      return;\n    }\n\n    results.innerHTML = filtered.map(store => {\n      const selectedBrand = getSelectedBrandForStore(store);\n\n      const address = [store.morada, store.codigoPostal].filter(Boolean).join(\", \");\n      const designacao = store.designacao || \"\";\n\n      const lat = String(store.latitude || \"\").replace(\",\", \".\");\n      const lng = String(store.longitude || \"\").replace(\",\", \".\");\n\n      const hasCoords = lat && lng;\n\n      const mapUrl = hasCoords\n        ? `https:\/\/www.google.com\/maps\/search\/?api=1&query=${encodeURIComponent(lat + \",\" + lng)}`\n        : `https:\/\/www.google.com\/maps\/search\/?api=1&query=${encodeURIComponent(address + \" \" + store.cidade)}`;\n\n      const directionsUrl = hasCoords\n        ? `https:\/\/www.google.com\/maps\/dir\/?api=1&destination=${encodeURIComponent(lat + \",\" + lng)}`\n        : `https:\/\/www.google.com\/maps\/dir\/?api=1&destination=${encodeURIComponent(address + \" \" + store.cidade)}`;\n\n      const vendasService =\n        store.services.vendas_novos ||\n        store.services.vendas ||\n        store.services.vendas_usados;\n\n      const vendasUrl =\n        store.services.vendas_novos?.website ||\n        store.services.vendas?.website ||\n        store.services.vendas_usados?.website ||\n        \"#\";\n\n      const pecasUrl =\n        store.services.pecas?.websitePecas ||\n        store.services.pecas?.website ||\n        \"#\";\n\n      const oficinaUrl =\n        store.services.oficina?.marcarServico ||\n        \"#\";\n\n      const colisaoUrl =\n        store.services.colisao?.marcarServico ||\n        \"#\";\n\n      const showVendas = hasServiceContent(vendasService, vendasUrl);\n      const showOficina = hasServiceContent(store.services.oficina, oficinaUrl);\n      const showPecas = hasServiceContent(store.services.pecas, pecasUrl);\n      const showColisao = hasServiceContent(store.services.colisao, colisaoUrl);\n\n      const img = store.linkImg || \"\";\n      const logos = store.logos || [];\n      const logosHtml = logos.length ? `\n        <div class=\"mp-logos\">\n          ${logos.map((logo, index) => `\n            <img decoding=\"async\" class=\"mp-logo-img\" src=\"${escapeAttr(logo)}\" alt=\"\" aria-hidden=\"true\" loading=\"lazy\">\n          `).join(\"\")}\n        <\/div>\n      ` : \"\";\n\n      return `\n        <article class=\"mp-card\">\n\n          <div class=\"mp-info ${logos.length ? 'has-logos' : ''}\">\n\n            ${logosHtml}\n\n            <div class=\"mp-heading\">\n              <h2>${escapeHtml(store.cidade)}<\/h2>\n              ${designacao ? `<span class=\"mp-designacao\">\u2014 ${escapeHtml(designacao)}<\/span>` : \"\"}\n            <\/div>\n\n            <div class=\"mp-address\">${escapeHtml(address)}<\/div>\n\n            <div class=\"mp-data-grid\">\n\n              <div class=\"mp-block\">\n                <strong class=\"mp-block-title\">Telefone<\/strong>\n                <a class=\"mp-block-link mp-inline-contact\" href=\"tel:${escapeHtml(String(store.telefone || \"\").replace(\/[^0-9+]\/g, \"\"))}\">\n                  ${contactIcon(\"phone\")}\n                  <span>${escapeHtml(store.telefone || \"-\")}<\/span>\n                <\/a>\n              <\/div>\n\n              <div class=\"mp-block\">\n                <strong class=\"mp-block-title\">Email<\/strong>\n                <a class=\"mp-block-link mp-inline-contact\" href=\"mailto:${escapeHtml(store.email || \"\")}\">\n                  ${contactIcon(\"email\")}\n                  <span>${escapeHtml(store.email || \"-\")}<\/span>\n                <\/a>\n              <\/div>\n\n              ${showVendas ? buildServiceBlock(\"Vendas\", vendasService, \"Pedir informa\u00e7\u00f5es\", vendasUrl, store, {\n                marca: selectedBrand,\n                cidade: store.cidade,\n                assunto: store.services.vendas_usados && !store.services.vendas_novos ? \"Carros Usados\" : \"Carros Novos\",\n                servico: vendasService?.category || \"Vendas\"\n              }) : \"\"}\n\n              ${showOficina ? buildServiceBlock(\"Oficina\", store.services.oficina, \"Marcar servi\u00e7o\", oficinaUrl, store, {\n                marca: selectedBrand,\n                cidade: store.cidade,\n                assunto: \"Oficina\",\n                servico: store.services.oficina?.category || \"Oficina\"\n              }) : \"\"}\n\n              ${showPecas ? buildServiceBlock(\"Pe\u00e7as\", store.services.pecas, \"Pedir informa\u00e7\u00f5es\", pecasUrl, store, {\n                marca: selectedBrand,\n                cidade: store.cidade,\n                assunto: \"Pe\u00e7as\",\n                servico: store.services.pecas?.category || \"Pe\u00e7as\"\n              }) : \"\"}\n\n              ${showColisao ? buildServiceBlock(\"Colis\u00e3o\", store.services.colisao, \"Marcar servi\u00e7o\", colisaoUrl, store, {\n                marca: selectedBrand,\n                cidade: store.cidade,\n                assunto: \"Colis\u00e3o\",\n                servico: store.services.colisao?.category || \"Colis\u00e3o\"\n              }) : \"\"}\n\n            <\/div>\n\n            <div class=\"mp-bottom-buttons\">\n              <a class=\"mp-btn-outline\" href=\"${mapUrl}\" target=\"_blank\" rel=\"noopener\">Ver no mapa<\/a>\n              <a class=\"mp-btn-outline\" href=\"${directionsUrl}\" target=\"_blank\" rel=\"noopener\">Dire\u00e7\u00f5es<\/a>\n            <\/div>\n\n          <\/div>\n\n          <div class=\"mp-photo ${img ? \"\" : \"mp-no-image\"}\" style=\"${img ? `background-image:url('${escapeAttr(img)}');` : \"\"}\"><\/div>\n\n        <\/article>\n      `;\n    }).join(\"\");\n  }\n\n  document.querySelectorAll(\".mp-select-btn\").forEach(button => {\n    button.addEventListener(\"click\", function () {\n      const current = this.closest(\".mp-multiselect\");\n\n      document.querySelectorAll(\".mp-multiselect\").forEach(dropdown => {\n        if (dropdown !== current) dropdown.classList.remove(\"open\");\n      });\n\n      current.classList.toggle(\"open\");\n    });\n  });\n\n  document.addEventListener(\"click\", function (event) {\n    if (!event.target.closest(\".mp-multiselect\")) {\n      document.querySelectorAll(\".mp-multiselect\").forEach(dropdown => {\n        dropdown.classList.remove(\"open\");\n      });\n    }\n  });\n\n  clearBtn.addEventListener(\"click\", function () {\n    document.querySelectorAll(\".mp-options input\").forEach(input => {\n      input.checked = false;\n    });\n\n    renderFilterOptions();\n    updateDropdownLabels();\n    renderResults();\n  });\n\n  window.mpGoogleSheetLoaded = function (response) {\n    rawRows = parseGoogleRows(response);\n    stores = groupRows(rawRows);\n\n    renderFilterOptions();\n    updateDropdownLabels();\n    renderResults();\n  };\n\n  const script = document.createElement(\"script\");\n\n  script.src =\n    \"https:\/\/docs.google.com\/spreadsheets\/d\/\" +\n    SHEET_ID +\n    \"\/gviz\/tq?tqx=responseHandler:mpGoogleSheetLoaded&sheet=\" +\n    encodeURIComponent(SHEET_NAME);\n\n  script.onerror = function () {\n    results.innerHTML = '<div class=\"mp-empty\">N\u00e3o foi poss\u00edvel carregar os dados do Google Sheets.<\/div>';\n  };\n\n  document.body.appendChild(script);\n\n})();\n<\/script>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Onde estamos Marca Todas as marcas 0 \u2304 Localiza\u00e7\u00e3o Todas as localiza\u00e7\u00f5es 0 \u2304 Servi\u00e7os Todos os servi\u00e7os 0 \u2304 \ud83d\uddd1 Limpar sele\u00e7\u00e3o A carregar concession\u00e1rios&#8230;<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-706503","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>onde estamos - Motorpor<\/title>\n<meta name=\"description\" content=\"Repara\u00e7\u00e3o Auto | Especialistas em Colis\u00e3o e Pintura Autom\u00f3vel com 6 centros de colis\u00e3o distribu\u00eddos pelo pa\u00eds. Marque j\u00e1!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/motorpor.pt\/en\/onde-estamos\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"onde estamos - Motorpor\" \/>\n<meta property=\"og:description\" content=\"Repara\u00e7\u00e3o Auto | Especialistas em Colis\u00e3o e Pintura Autom\u00f3vel com 6 centros de colis\u00e3o distribu\u00eddos pelo pa\u00eds. Marque j\u00e1!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/motorpor.pt\/en\/onde-estamos\/\" \/>\n<meta property=\"og:site_name\" content=\"Motorpor\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-17T12:08:54+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/motorpor.pt\\\/onde-estamos\\\/\",\"url\":\"https:\\\/\\\/motorpor.pt\\\/onde-estamos\\\/\",\"name\":\"onde estamos - Motorpor\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/motorpor.pt\\\/#website\"},\"datePublished\":\"2026-06-30T08:40:59+00:00\",\"dateModified\":\"2026-08-17T12:08:54+00:00\",\"description\":\"Repara\u00e7\u00e3o Auto | Especialistas em Colis\u00e3o e Pintura Autom\u00f3vel com 6 centros de colis\u00e3o distribu\u00eddos pelo pa\u00eds. Marque j\u00e1!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/motorpor.pt\\\/onde-estamos\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/motorpor.pt\\\/onde-estamos\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/motorpor.pt\\\/onde-estamos\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"In\u00edcio\",\"item\":\"https:\\\/\\\/motorpor.pt\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"onde estamos\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/motorpor.pt\\\/#website\",\"url\":\"https:\\\/\\\/motorpor.pt\\\/\",\"name\":\"Motorpor\",\"description\":\"Comercio de Autom\u00f3veis Multimarcas\",\"publisher\":{\"@id\":\"https:\\\/\\\/motorpor.pt\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/motorpor.pt\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/motorpor.pt\\\/#organization\",\"name\":\"Motorpor\",\"alternateName\":\"Motorpor\",\"url\":\"https:\\\/\\\/motorpor.pt\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/motorpor.pt\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/motorpor.pt\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/Logo-Motorpor-Preto.svg\",\"contentUrl\":\"https:\\\/\\\/motorpor.pt\\\/wp-content\\\/uploads\\\/2024\\\/07\\\/Logo-Motorpor-Preto.svg\",\"width\":493,\"height\":93,\"caption\":\"Motorpor\"},\"image\":{\"@id\":\"https:\\\/\\\/motorpor.pt\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/company\\\/grupo-motorpor\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"onde estamos - Motorpor","description":"Repara\u00e7\u00e3o Auto | Especialistas em Colis\u00e3o e Pintura Autom\u00f3vel com 6 centros de colis\u00e3o distribu\u00eddos pelo pa\u00eds. Marque j\u00e1!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/motorpor.pt\/en\/onde-estamos\/","og_locale":"en_US","og_type":"article","og_title":"onde estamos - Motorpor","og_description":"Repara\u00e7\u00e3o Auto | Especialistas em Colis\u00e3o e Pintura Autom\u00f3vel com 6 centros de colis\u00e3o distribu\u00eddos pelo pa\u00eds. Marque j\u00e1!","og_url":"https:\/\/motorpor.pt\/en\/onde-estamos\/","og_site_name":"Motorpor","article_modified_time":"2026-08-17T12:08:54+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/motorpor.pt\/onde-estamos\/","url":"https:\/\/motorpor.pt\/onde-estamos\/","name":"onde estamos - Motorpor","isPartOf":{"@id":"https:\/\/motorpor.pt\/#website"},"datePublished":"2026-06-30T08:40:59+00:00","dateModified":"2026-08-17T12:08:54+00:00","description":"Repara\u00e7\u00e3o Auto | Especialistas em Colis\u00e3o e Pintura Autom\u00f3vel com 6 centros de colis\u00e3o distribu\u00eddos pelo pa\u00eds. Marque j\u00e1!","breadcrumb":{"@id":"https:\/\/motorpor.pt\/onde-estamos\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/motorpor.pt\/onde-estamos\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/motorpor.pt\/onde-estamos\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"In\u00edcio","item":"https:\/\/motorpor.pt\/"},{"@type":"ListItem","position":2,"name":"onde estamos"}]},{"@type":"WebSite","@id":"https:\/\/motorpor.pt\/#website","url":"https:\/\/motorpor.pt\/","name":"motorpor","description":"Comercio de Autom\u00f3veis Multimarcas","publisher":{"@id":"https:\/\/motorpor.pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/motorpor.pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/motorpor.pt\/#organization","name":"motorpor","alternateName":"Motorpor","url":"https:\/\/motorpor.pt\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/motorpor.pt\/#\/schema\/logo\/image\/","url":"https:\/\/motorpor.pt\/wp-content\/uploads\/2024\/07\/Logo-Motorpor-Preto.svg","contentUrl":"https:\/\/motorpor.pt\/wp-content\/uploads\/2024\/07\/Logo-Motorpor-Preto.svg","width":493,"height":93,"caption":"Motorpor"},"image":{"@id":"https:\/\/motorpor.pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.linkedin.com\/company\/grupo-motorpor"]}]}},"_links":{"self":[{"href":"https:\/\/motorpor.pt\/en\/wp-json\/wp\/v2\/pages\/706503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/motorpor.pt\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/motorpor.pt\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/motorpor.pt\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/motorpor.pt\/en\/wp-json\/wp\/v2\/comments?post=706503"}],"version-history":[{"count":29,"href":"https:\/\/motorpor.pt\/en\/wp-json\/wp\/v2\/pages\/706503\/revisions"}],"predecessor-version":[{"id":710922,"href":"https:\/\/motorpor.pt\/en\/wp-json\/wp\/v2\/pages\/706503\/revisions\/710922"}],"wp:attachment":[{"href":"https:\/\/motorpor.pt\/en\/wp-json\/wp\/v2\/media?parent=706503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}