{"id":245,"date":"2026-03-27T17:04:46","date_gmt":"2026-03-27T17:04:46","guid":{"rendered":"https:\/\/sites.ecclesia.pt\/festaseromarias\/?page_id=245"},"modified":"2026-03-31T17:25:05","modified_gmt":"2026-03-31T16:25:05","slug":"mapa-de-festas","status":"publish","type":"page","link":"https:\/\/sites.ecclesia.pt\/festaseromarias\/","title":{"rendered":"mapa-de-festas"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"245\" class=\"elementor elementor-245\">\n\t\t\t\t<div class=\"elementor-element elementor-element-90bed3f e-flex e-con-boxed e-con e-parent\" data-id=\"90bed3f\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-eedaa39 elementor-widget elementor-widget-text-editor\" data-id=\"eedaa39\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t\t\t\t\t\t<p style=\"text-align: center;\">Este portal conta consigo! <strong><a href=\"https:\/\/sites.ecclesia.pt\/festaseromarias\/inserir-festas-e-romarias\/\">Adicione<\/a><\/strong> a festa, romaria ou tradi\u00e7\u00e3o da sua terra.<\/p>\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-41ddea8 e-flex e-con-boxed e-con e-parent\" data-id=\"41ddea8\" data-element_type=\"container\" data-e-type=\"container\" data-settings=\"{&quot;background_background&quot;:&quot;video&quot;,&quot;background_video_link&quot;:&quot;https:\\\/\\\/youtu.be\\\/H2aI2jEO2-Q&quot;}\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t<div class=\"elementor-background-video-container elementor-hidden-mobile\">\n\t\t\t\t\t\t\t<div class=\"elementor-background-video-embed\" role=\"presentation\"><\/div>\n\t\t\t\t\t\t<\/div>\t\t<div class=\"elementor-element elementor-element-474f672 elementor-widget elementor-widget-image\" data-id=\"474f672\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" src=\"https:\/\/sites.ecclesia.pt\/festaseromarias\/wp-content\/uploads\/elementor\/thumbs\/festas-e-romarias-letras1-rjpxebmkfqw0kwtp9huzk2np3iqngob6uw0fzlwwzk.webp\" title=\"festas-e-romarias-letras1\" alt=\"festas-e-romarias-letras1\" loading=\"lazy\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-8f9169c e-flex e-con-boxed e-con e-parent\" data-id=\"8f9169c\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-2403fe3 elementor-widget elementor-widget-spacer\" data-id=\"2403fe3\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\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\t<\/div>\n\t\t\t\t<\/div>\n\t\t<div class=\"elementor-element elementor-element-b06e5d5 e-flex e-con-boxed e-con e-parent\" data-id=\"b06e5d5\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-ba5b17b elementor-widget elementor-widget-shortcode\" data-id=\"ba5b17b\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><link rel=\"stylesheet\" href=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.css\" \/>\n<style>\n#fm-wrap {\n  --gold:#C9A84C; --gold-light:#E8C97A; --gold-pale:#F5EDDA;\n  --brown-dark:#2A1F0E; --brown-mid:#4A3520; --brown-warm:#6B4C2A;\n  --cream:#FAF6EE; --cream-dark:#F0E8D5; --white:#FFFDF8;\n  --text:#2A1F0E; --text-soft:#6B5A42; --border:rgba(201,168,76,0.3);\n  font-family:Georgia,'Times New Roman',serif; color:var(--text);\n}\n#fm-wrap .fm-header { text-align:center; margin-bottom:24px; }\n#fm-wrap .fm-header h2 {\n  font-size:clamp(1.3rem,3vw,1.8rem); font-weight:700;\n  color:var(--brown-dark); letter-spacing:0.03em; margin-bottom:4px;\n}\n#fm-wrap .fm-header h2 em { color:var(--gold); font-style:normal; }\n#fm-wrap .fm-header p { font-size:0.95rem; color:var(--text-soft); font-style:italic; }\n\n\/* Layout principal: sidebar + mapa *\/\n#fm-wrap .fm-layout {\n  display:grid; grid-template-columns:260px 1fr; gap:0;\n  border:1px solid var(--border); border-radius:2px; overflow:hidden;\n  box-shadow:0 4px 20px rgba(42,31,14,0.08);\n}\n\n\/* Painel lateral *\/\n#fm-wrap .fm-sidebar {\n  background:var(--cream-dark); border-right:1px solid var(--border);\n  padding:20px 16px; display:flex; flex-direction:column; gap:20px;\n  overflow-y:auto; max-height:560px;\n}\n#fm-wrap .fm-sidebar-title {\n  font-size:0.6rem; font-weight:700; letter-spacing:0.18em;\n  text-transform:uppercase; color:var(--gold); margin-bottom:8px;\n  display:flex; align-items:center; gap:8px;\n}\n#fm-wrap .fm-sidebar-title::after {\n  content:''; flex:1; height:1px; background:var(--border);\n}\n\n\/* Pesquisa *\/\n#fm-wrap .fm-search-input {\n  width:100%; padding:8px 10px;\n  border:1px solid var(--border); border-radius:2px;\n  background:var(--white); font-family:Georgia,serif; font-size:0.88rem;\n  color:var(--text); outline:none; transition:border-color 0.2s;\n}\n#fm-wrap .fm-search-input:focus {\n  border-color:var(--gold); box-shadow:0 0 0 3px rgba(201,168,76,0.12);\n}\n#fm-wrap .fm-search-input::placeholder { color:rgba(107,74,42,0.4); font-style:italic; }\n\n\/* Selects *\/\n#fm-wrap .fm-select {\n  width:100%; padding:8px 28px 8px 10px;\n  border:1px solid var(--border); border-radius:2px;\n  background:var(--white); font-family:Georgia,serif; font-size:0.88rem;\n  color:var(--text); outline:none; cursor:pointer; transition:border-color 0.2s;\n  appearance:none; -webkit-appearance:none;\n  background-image:url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='11' height='6' viewBox='0 0 11 6'%3E%3Cpath d='M1 1l4.5 4 4.5-4' stroke='%23C9A84C' stroke-width='1.5' fill='none' stroke-linecap='round'\/%3E%3C\/svg%3E\");\n  background-repeat:no-repeat; background-position:right 10px center;\n}\n#fm-wrap .fm-select:focus { border-color:var(--gold); }\n\n\/* Bot\u00f5es de categoria *\/\n#fm-wrap .fm-cat-btns { display:flex; flex-direction:column; gap:6px; }\n#fm-wrap .fm-cat-btn {\n  padding:7px 12px; border:1px solid var(--border); border-radius:2px;\n  background:var(--white); font-family:Georgia,serif; font-size:0.82rem;\n  color:var(--text-soft); cursor:pointer; transition:all 0.2s; text-align:left;\n  display:flex; align-items:center; gap:8px;\n}\n#fm-wrap .fm-cat-btn:hover { border-color:var(--gold-light); background:var(--gold-pale); }\n#fm-wrap .fm-cat-btn.active {\n  background:var(--brown-dark); border-color:var(--brown-dark);\n  color:var(--gold-light); font-weight:600;\n}\n#fm-wrap .fm-cat-dot {\n  width:10px; height:10px; border-radius:50%; flex-shrink:0;\n}\n\n\/* Bot\u00e3o limpar *\/\n#fm-wrap .fm-reset-btn {\n  width:100%; padding:8px; border:1px solid var(--border); border-radius:2px;\n  background:transparent; font-family:Georgia,serif; font-size:0.78rem;\n  color:var(--text-soft); cursor:pointer; transition:all 0.2s; letter-spacing:0.05em;\n}\n#fm-wrap .fm-reset-btn:hover { border-color:var(--gold); color:var(--gold); }\n\n\/* Contador no sidebar *\/\n#fm-wrap .fm-sidebar-count {\n  font-size:0.82rem; color:var(--text-soft); font-style:italic;\n  padding:8px 10px; background:var(--white); border:1px solid var(--border);\n  border-radius:2px; text-align:center;\n}\n#fm-wrap .fm-sidebar-count strong { color:var(--gold); font-style:normal; }\n\n\/* Mapa *\/\n#fm-wrap #fm-map {\n  height:560px; width:100%; z-index:0;\n}\n\n\/* Popup *\/\n#fm-wrap .fm-popup { min-width:190px; font-family:Georgia,serif; }\n#fm-wrap .fm-popup-img { width:100%; height:90px; object-fit:cover; border-radius:2px; margin-bottom:7px; display:block; }\n#fm-wrap .fm-popup-cat { font-size:0.58rem; font-weight:700; letter-spacing:0.15em; text-transform:uppercase; color:#C9A84C; margin-bottom:3px; }\n#fm-wrap .fm-popup-titulo { font-size:0.95rem; font-weight:700; color:#2A1F0E; margin-bottom:3px; line-height:1.3; }\n#fm-wrap .fm-popup-loc { font-size:0.78rem; color:#6B5A42; font-style:italic; margin-bottom:4px; }\n#fm-wrap .fm-popup-data { font-size:0.78rem; color:#6B5A42; margin-bottom:7px; }\n#fm-wrap .fm-popup-link {\n  display:inline-block; padding:4px 10px;\n  background:#2A1F0E; color:#E8C97A !important;\n  font-size:0.68rem; font-weight:700; letter-spacing:0.1em; text-transform:uppercase;\n  border-radius:2px; text-decoration:none !important;\n}\n\n\/* Lista de resultados *\/\n#fm-wrap .fm-lista-wrap {\n  margin-top:20px; border:1px solid var(--border); border-radius:2px; overflow:hidden;\n}\n#fm-wrap .fm-lista-header {\n  background:var(--cream-dark); padding:12px 20px;\n  border-bottom:1px solid var(--border);\n  display:flex; align-items:center; justify-content:space-between;\n}\n#fm-wrap .fm-lista-header-title {\n  font-size:0.65rem; font-weight:700; letter-spacing:0.15em;\n  text-transform:uppercase; color:var(--gold);\n}\n#fm-wrap .fm-lista-header-count { font-size:0.82rem; color:var(--text-soft); font-style:italic; }\n#fm-wrap .fm-lista-grid {\n  display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr));\n  gap:0; background:var(--white);\n}\n#fm-wrap .fm-lista-item {\n  padding:14px 18px; border-bottom:1px solid var(--border);\n  border-right:1px solid var(--border); transition:background 0.15s; cursor:pointer;\n}\n#fm-wrap .fm-lista-item:hover { background:var(--gold-pale); }\n#fm-wrap .fm-lista-cat {\n  font-size:0.58rem; font-weight:700; letter-spacing:0.12em;\n  text-transform:uppercase; color:var(--gold); margin-bottom:3px;\n}\n#fm-wrap .fm-lista-titulo {\n  font-size:0.92rem; font-weight:700; color:var(--brown-dark);\n  margin-bottom:3px; line-height:1.3;\n}\n#fm-wrap .fm-lista-loc {\n  font-size:0.78rem; color:var(--text-soft); font-style:italic; margin-bottom:3px;\n}\n#fm-wrap .fm-lista-data { font-size:0.75rem; color:var(--text-soft); }\n#fm-wrap .fm-lista-empty {\n  padding:40px; text-align:center; color:var(--text-soft);\n  font-style:italic; grid-column:1\/-1;\n}\n#fm-wrap .fm-lista-sem-gps {\n  font-size:0.72rem; color:#856404; background:#fff3cd;\n  padding:2px 6px; border-radius:10px; display:inline-block; margin-top:3px;\n}\n\n\/* Responsive \u2014 tablet *\/\n@media (max-width:900px) {\n  #fm-wrap .fm-layout { grid-template-columns:200px 1fr; }\n}\n\n\/* Responsive \u2014 mobile *\/\n@media (max-width:640px) {\n  #fm-wrap .fm-layout { grid-template-columns:1fr; }\n  #fm-wrap .fm-sidebar {\n    max-height:none; border-right:none;\n    border-bottom:1px solid var(--border);\n    padding:14px 12px; gap:12px;\n  }\n  \/* Em mobile os filtros ficam em grid 2 colunas *\/\n  #fm-wrap .fm-sidebar-filters-grid {\n    display:grid; grid-template-columns:1fr 1fr; gap:12px;\n  }\n  #fm-wrap .fm-sidebar-filters-grid > div { margin:0; }\n  #fm-wrap #fm-map { height:340px; }\n  #fm-wrap .fm-lista-grid { grid-template-columns:1fr; }\n  #fm-wrap .fm-cat-btns {\n    display:grid; grid-template-columns:1fr 1fr; gap:6px;\n  }\n  \/* Sidebar collaps\u00edvel em mobile *\/\n  #fm-wrap .fm-sidebar-toggle {\n    display:flex; align-items:center; justify-content:space-between;\n    background:var(--cream-dark); padding:10px 16px;\n    border:1px solid var(--border); border-radius:2px;\n    cursor:pointer; margin-bottom:0;\n    font-size:0.72rem; font-weight:700; letter-spacing:0.12em;\n    text-transform:uppercase; color:var(--brown-warm);\n  }\n  #fm-wrap .fm-sidebar-toggle-arrow { transition:transform 0.25s; }\n  #fm-wrap .fm-sidebar-toggle.open .fm-sidebar-toggle-arrow { transform:rotate(180deg); }\n  #fm-wrap .fm-sidebar-inner { display:none; }\n  #fm-wrap .fm-sidebar-inner.open { display:flex; flex-direction:column; gap:12px; padding-top:14px; }\n}\n\n\/* Barra de resumo mensal *\/\n#fm-wrap .fm-resumo-bar {\n  display:flex; align-items:stretch; gap:0;\n  border:1px solid var(--border); border-radius:2px; overflow:hidden;\n  margin-bottom:20px;\n}\n#fm-wrap .fm-resumo-item {\n  flex:1; padding:14px 16px; text-align:center;\n  background:var(--white); border-right:1px solid var(--border);\n}\n#fm-wrap .fm-resumo-item:last-child { border-right:none; }\n#fm-wrap .fm-resumo-num {\n  font-size:1.8rem; font-weight:700; color:var(--gold);\n  line-height:1; display:block; margin-bottom:4px;\n}\n#fm-wrap .fm-resumo-label {\n  font-size:0.65rem; font-weight:700; letter-spacing:0.12em;\n  text-transform:uppercase; color:var(--text-soft);\n}\n#fm-wrap .fm-resumo-sub {\n  font-size:0.75rem; color:var(--text-soft); font-style:italic; margin-top:2px;\n}\n\n\/* Banner \"pr\u00f3ximas festas\" *\/\n#fm-wrap .fm-proximas-banner {\n  background:linear-gradient(135deg, var(--brown-dark) 0%, var(--brown-mid) 100%);\n  color:var(--gold-light); padding:10px 18px;\n  display:flex; align-items:center; justify-content:space-between;\n  font-size:0.72rem; letter-spacing:0.08em;\n}\n#fm-wrap .fm-proximas-banner strong { color:var(--gold); }\n#fm-wrap .fm-proximas-btn {\n  background:transparent; border:1px solid rgba(201,168,76,0.4);\n  color:var(--gold-light); padding:4px 10px; border-radius:2px;\n  font-size:0.68rem; cursor:pointer; letter-spacing:0.08em;\n  transition:all 0.2s; white-space:nowrap;\n}\n#fm-wrap .fm-proximas-btn:hover { background:rgba(201,168,76,0.15); border-color:var(--gold); }\n\n\/* Badge \"Em breve\" na lista *\/\n#fm-wrap .fm-badge-breve {\n  display:inline-block; padding:2px 7px; border-radius:10px;\n  font-size:0.65rem; font-weight:700; letter-spacing:0.08em;\n  text-transform:uppercase; margin-left:6px; vertical-align:middle;\n}\n#fm-wrap .fm-badge-hoje    { background:#d1e7dd; color:#0a3622; }\n#fm-wrap .fm-badge-semana  { background:#fff3cd; color:#856404; }\n#fm-wrap .fm-badge-mes     { background:rgba(201,168,76,0.15); color:var(--brown-warm); }\n<\/style>\n\n<div id=\"fm-wrap\">\n  <div class=\"fm-header\">\n    <h2>Mapa de <em>Festas e Romarias<\/em><\/h2>\n    <p>Todas as festas e romarias de Portugal<\/p>\n  <\/div>\n\n  <!-- Barra de resumo mensal -->\n  <div class=\"fm-resumo-bar\">\n    <div class=\"fm-resumo-item\">\n      <span class=\"fm-resumo-num\">8<\/span>\n      <div class=\"fm-resumo-label\">Total de Festas<\/div>\n    <\/div>\n    <div class=\"fm-resumo-item\">\n      <span class=\"fm-resumo-num\">0<\/span>\n      <div class=\"fm-resumo-label\">Em Maio<\/div>\n      <div class=\"fm-resumo-sub\">2026<\/div>\n    <\/div>\n    <div class=\"fm-resumo-item\">\n      <span class=\"fm-resumo-num\" id=\"fm-resumo-proximas\">\u2013<\/span>\n      <div class=\"fm-resumo-label\">Nos Proximos 30 dias<\/div>\n    <\/div>\n  <\/div>\n\n  <!-- Banner pr\u00f3ximas festas (vis\u00edvel s\u00f3 no arranque sem filtros) -->\n  <div class=\"fm-proximas-banner\" id=\"fm-proximas-banner\">\n    <span>A mostrar as <strong>10 festas mais proximas<\/strong> \u2014 aplique filtros para ver todas<\/span>\n    <button class=\"fm-proximas-btn\" id=\"fm-ver-todas-btn\">Ver todas<\/button>\n  <\/div>\n\n  <div class=\"fm-layout\">\n    <!-- Painel lateral de filtros -->\n    <aside class=\"fm-sidebar\">\n\n      <!-- Toggle vis\u00edvel s\u00f3 em mobile (via JS) -->\n      <div class=\"fm-sidebar-toggle\" id=\"fm-sidebar-toggle\">\n        <span>Filtros<\/span>\n        <span class=\"fm-sidebar-toggle-arrow\">&#9660;<\/span>\n      <\/div>\n\n      <!-- Conte\u00fado dos filtros -->\n      <div class=\"fm-sidebar-inner\" id=\"fm-sidebar-inner\">\n\n        <div>\n          <div class=\"fm-sidebar-title\">Pesquisa<\/div>\n          <input type=\"text\" class=\"fm-search-input\" id=\"fm-search\" placeholder=\"Nome da festa...\">\n        <\/div>\n\n        <div>\n          <div class=\"fm-sidebar-title\">Diocese<\/div>\n          <select class=\"fm-select\" id=\"fm-diocese\">\n            <option value=\"\">Todas as dioceses<\/option>\n                      <\/select>\n        <\/div>\n\n        <div>\n          <div class=\"fm-sidebar-title\">Mes<\/div>\n          <select class=\"fm-select\" id=\"fm-mes\">\n            <option value=\"0\">Todos os meses<\/option>\n                        <option value=\"1\">Janeiro<\/option>\n                        <option value=\"2\">Fevereiro<\/option>\n                        <option value=\"3\">Mar\u00e7o<\/option>\n                        <option value=\"4\">Abril<\/option>\n                        <option value=\"5\">Maio<\/option>\n                        <option value=\"6\">Junho<\/option>\n                        <option value=\"7\">Julho<\/option>\n                        <option value=\"8\">Agosto<\/option>\n                        <option value=\"9\">Setembro<\/option>\n                        <option value=\"10\">Outubro<\/option>\n                        <option value=\"11\">Novembro<\/option>\n                        <option value=\"12\">Dezembro<\/option>\n                      <\/select>\n        <\/div>\n\n        <div>\n          <div class=\"fm-sidebar-title\">Categoria<\/div>\n          <div class=\"fm-cat-btns\">\n            <button class=\"fm-cat-btn active\" data-cat=\"\">\n              <span class=\"fm-cat-dot\" style=\"background:#6B4C2A;\"><\/span> Todas\n            <\/button>\n            <button class=\"fm-cat-btn\" data-cat=\"festa\">\n              <span class=\"fm-cat-dot\" style=\"background:#C9A84C;\"><\/span> Festas\n            <\/button>\n            <button class=\"fm-cat-btn\" data-cat=\"romaria\">\n              <span class=\"fm-cat-dot\" style=\"background:#7B5EA7;\"><\/span> Romarias\n            <\/button>\n            <button class=\"fm-cat-btn\" data-cat=\"tradicao\">\n              <span class=\"fm-cat-dot\" style=\"background:#4A8C6F;\"><\/span> Tradicoes\n            <\/button>\n          <\/div>\n        <\/div>\n\n        <div class=\"fm-sidebar-count\" id=\"fm-count\">A carregar...<\/div>\n\n        <button class=\"fm-reset-btn\" id=\"fm-reset\">Limpar filtros<\/button>\n\n      <\/div><!-- .fm-sidebar-inner -->\n    <\/aside>\n\n    <!-- Mapa -->\n    <div id=\"fm-map\"><\/div>\n  <\/div>\n\n  <!-- Lista de resultados -->\n  <div class=\"fm-lista-wrap\" id=\"fm-lista-wrap\">\n    <div class=\"fm-lista-header\">\n      <span class=\"fm-lista-header-title\">Resultados<\/span>\n      <span class=\"fm-lista-header-count\" id=\"fm-lista-count\"><\/span>\n    <\/div>\n    <div class=\"fm-lista-grid\" id=\"fm-lista\"><\/div>\n  <\/div>\n\n<\/div>\n\n<script src=\"https:\/\/unpkg.com\/leaflet@1.9.4\/dist\/leaflet.js\"><\/script>\n<script>\n(function() {\n  var DATA     = [{\"id\":221,\"titulo\":\"Andor e Prociss\u00e3o Senhora da Pena - Mou\u00e7\u00f3s, Vila Real\",\"lat\":41.322146,\"lng\":-7.676632,\"categoria\":\"romaria\",\"diocese\":\"\",\"paroquia\":\"\",\"inicio\":\"2026-09-11\",\"fim\":\"2026-09-14\",\"mes\":9,\"url\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/events\\\/andor-e-procissao-senhora-da-pena_moucos-vila-real\\\/\",\"thumb\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/1I9A0085-1-1-150x150.webp\"},{\"id\":192,\"titulo\":\"Santo Ant\u00f3nio de Lisboa\",\"lat\":38.709818,\"lng\":-9.1328,\"categoria\":\"festa\",\"diocese\":\"\",\"paroquia\":\"\",\"inicio\":\"2026-06-13\",\"fim\":\"2026-06-13\",\"mes\":6,\"url\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/events\\\/santo-antonio-de-lisboa\\\/\",\"thumb\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/DSCF4508-150x150.webp\"},{\"id\":189,\"titulo\":\"Porto: S\u00e3o Jo\u00e3o, o santo austero que \u00e9 patrono de uma \u00abfesta rapioqueira\u00bb\",\"lat\":null,\"lng\":null,\"categoria\":\"festa\",\"diocese\":\"\",\"paroquia\":\"\",\"inicio\":\"2026-06-24\",\"fim\":\"2026-06-24\",\"mes\":6,\"url\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/events\\\/porto-sao-joao-o-santo-austero-que-e-patrono-de-uma-festa-rapioqueira\\\/\",\"thumb\":\"\"},{\"id\":180,\"titulo\":\"S\u00e3o Gon\u00e7alinho, Aveiro\u00a0\",\"lat\":40.643287,\"lng\":-8.655168,\"categoria\":\"festa\",\"diocese\":\"\",\"paroquia\":\"\",\"inicio\":\"2026-01-10\",\"fim\":\"2026-01-10\",\"mes\":1,\"url\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/events\\\/sao-goncalinho-aveiro\\\/\",\"thumb\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/IMG_6671-150x150.jpg\"},{\"id\":165,\"titulo\":\"Semana Santa de Santa Maria da Feira\",\"lat\":40.923983,\"lng\":-8.541547,\"categoria\":\"festa\",\"diocese\":\"\",\"paroquia\":\"\",\"inicio\":\"2026-03-29\",\"fim\":\"2026-04-12\",\"mes\":3,\"url\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/events\\\/semana-santa-de-santa-maria-da-feira\\\/\",\"thumb\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/transferir-150x150.webp\"},{\"id\":162,\"titulo\":\"Semana Santa Braga 2026\",\"lat\":41.550001,\"lng\":-8.426995,\"categoria\":\"\",\"diocese\":\"\",\"paroquia\":\"\",\"inicio\":\"2026-03-29\",\"fim\":\"2026-04-05\",\"mes\":3,\"url\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/events\\\/semana-santa-braga-2026\\\/\",\"thumb\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/semana-santa-braga2026-150x150.jpg\"},{\"id\":112,\"titulo\":\"Assun\u00e7\u00e3o de Maria\",\"lat\":null,\"lng\":null,\"categoria\":\"festa\",\"diocese\":\"\",\"paroquia\":\"\",\"inicio\":\"2026-08-12\",\"fim\":\"2026-08-12\",\"mes\":8,\"url\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/events\\\/assuncao-de-maria\\\/\",\"thumb\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Liturgia_Assuncao-de-Maria-150x150.jpg\"},{\"id\":107,\"titulo\":\"Imaculada Concei\u00e7\u00e3o\",\"lat\":38.780959,\"lng\":-7.41554,\"categoria\":\"festa\",\"diocese\":\"\",\"paroquia\":\"\",\"inicio\":\"2026-12-08\",\"fim\":\"2026-12-08\",\"mes\":12,\"url\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/events\\\/imaculada-conceicao\\\/\",\"thumb\":\"https:\\\/\\\/sites.ecclesia.pt\\\/festaseromarias\\\/wp-content\\\/uploads\\\/2026\\\/02\\\/Procissao-Vila-Vicosa-150x150.jpg\"}];\n  var DIOCESES = [];\n  var HOJE     = '2026-05-07';          \/\/ ex: '2026-03-31'\n  var MES_ATUAL= 5;\n  var ANO_ATUAL= 2026;\n  var MAX_PROXIMAS = 10;\n\n  var CAT_COLORS = { 'festa':'#C9A84C', 'romaria':'#7B5EA7', 'tradicao':'#4A8C6F', '':'#6B4C2A' };\n  var MESES_PT   = ['','Janeiro','Fevereiro','Mar\u00e7o','Abril','Maio','Junho',\n                    'Julho','Agosto','Setembro','Outubro','Novembro','Dezembro'];\n\n  \/\/ Estado dos filtros\n  var filters = { search:'', diocese:'', mes:0, cat:'' };\n  var modoProximas = true; \/\/ true = mostrar s\u00f3 as 10 pr\u00f3ximas\n\n  \/\/ \u2500\u2500 Helpers de data \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function diasAte(dataStr) {\n    \/\/ Devolve n\u00famero de dias entre hoje e a data (negativo = passado)\n    if (!dataStr) return 9999;\n    var hoje  = new Date(HOJE + 'T00:00:00');\n    var data  = new Date(dataStr + 'T00:00:00');\n    return Math.round((data - hoje) \/ 86400000);\n  }\n\n  function badgeBreve(ev) {\n    var dias = diasAte(ev.inicio);\n    \/\/ Evento activo (j\u00e1 come\u00e7ou mas ainda n\u00e3o acabou)\n    if (dias < 0 && ev.fim && diasAte(ev.fim) >= 0) return '<span class=\"fm-badge-breve fm-badge-hoje\">A decorrer<\/span>';\n    if (dias === 0)           return '<span class=\"fm-badge-breve fm-badge-hoje\">Hoje<\/span>';\n    if (dias > 0 && dias <= 7)  return '<span class=\"fm-badge-breve fm-badge-semana\">Esta semana<\/span>';\n    if (dias > 0 && dias <= 30) return '<span class=\"fm-badge-breve fm-badge-mes\">Proximo mes<\/span>';\n    return '';\n  }\n\n  function proximasEventos() {\n    \/\/ Eventos futuros ou a decorrer, ordenados por data, m\u00e1x 10\n    var futuros = DATA.filter(function(ev) {\n      if (!ev.inicio) return false;\n      var dias = diasAte(ev.inicio);\n      \/\/ Incluir: a decorrer, hoje, ou futuros\n      if (dias >= 0) return true;\n      \/\/ A decorrer (come\u00e7ou mas fim ainda n\u00e3o passou)\n      if (ev.fim && diasAte(ev.fim) >= 0) return true;\n      return false;\n    });\n    futuros.sort(function(a,b) { return (a.inicio||'').localeCompare(b.inicio||''); });\n    return futuros.slice(0, MAX_PROXIMAS);\n  }\n\n  \/\/ Contador de pr\u00f3ximas (pr\u00f3ximos 30 dias)\n  var proximas30 = DATA.filter(function(ev) {\n    var d = diasAte(ev.inicio);\n    return d >= 0 && d <= 30;\n  }).length;\n  var el30 = document.getElementById('fm-resumo-proximas');\n  if (el30) el30.textContent = proximas30;\n\n  \/\/ \u2500\u2500 Inicializar mapa \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  var map = L.map('fm-map', { center:[39.6,-8.0], zoom:7, minZoom:5, maxZoom:17 });\n  L.tileLayer('https:\/\/{s}.tile.openstreetmap.org\/{z}\/{x}\/{y}.png', {\n    attribution:'\u00a9 <a href=\"https:\/\/www.openstreetmap.org\/copyright\">OpenStreetMap<\/a>',\n    maxZoom:19\n  }).addTo(map);\n\n  function makeIcon(cat) {\n    var color = CAT_COLORS[cat] || CAT_COLORS[''];\n    var svg = '<svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"26\" height=\"34\" viewBox=\"0 0 26 34\">'\n      + '<path d=\"M13 0C5.82 0 0 5.82 0 13c0 9.75 13 21 13 21s13-11.25 13-21C26 5.82 20.18 0 13 0z\"'\n      + ' fill=\"' + color + '\" stroke=\"white\" stroke-width=\"1.5\"\/>'\n      + '<circle cx=\"13\" cy=\"13\" r=\"5\" fill=\"white\" opacity=\"0.9\"\/><\/svg>';\n    return L.divIcon({ html:svg, className:'', iconSize:[26,34], iconAnchor:[13,34], popupAnchor:[0,-34] });\n  }\n\n  function formatDate(d) {\n    if (!d) return '';\n    var p = d.split('-');\n    return p.length === 3 ? p[2]+'\/'+p[1]+'\/'+p[0] : d;\n  }\n\n  \/\/ \u2500\u2500 Criar todos os marcadores (guardados, adicionados\/removidos dinamicamente) \u2500\u2500\n  var allMarkers = DATA.map(function(ev) {\n    if (!ev.lat || !ev.lng) return null;\n    var m = L.marker([ev.lat, ev.lng], { icon: makeIcon(ev.categoria) });\n    var dateStr = formatDate(ev.inicio);\n    if (ev.fim && ev.fim !== ev.inicio) dateStr += ' \u2013 ' + formatDate(ev.fim);\n    var html = '<div class=\"fm-popup\">';\n    if (ev.thumb) html += '<img decoding=\"async\" class=\"fm-popup-img\" src=\"'+ev.thumb+'\" alt=\"\">';\n    if (ev.categoria) html += '<div class=\"fm-popup-cat\">'+ev.categoria+'<\/div>';\n    html += '<div class=\"fm-popup-titulo\">'+ev.titulo+'<\/div>';\n    if (ev.paroquia) html += '<div class=\"fm-popup-loc\">'+ev.paroquia+(ev.diocese?' &middot; '+ev.diocese:'')+'<\/div>';\n    if (dateStr) html += '<div class=\"fm-popup-data\">'+dateStr+'<\/div>';\n    if (ev.url) html += '<a class=\"fm-popup-link\" href=\"'+ev.url+'\" target=\"_blank\">Ver Detalhes &rarr;<\/a>';\n    html += '<\/div>';\n    m.bindPopup(html, { maxWidth:260 });\n    m._ev = ev;\n    return m;\n  });\n\n  \/\/ \u2500\u2500 Fun\u00e7\u00e3o principal de filtro \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function applyFilters() {\n    var search  = filters.search.toLowerCase().trim();\n    var diocese = filters.diocese;\n    var mes     = filters.mes;\n    var cat     = filters.cat;\n\n    \/\/ Em modo pr\u00f3ximas: usar s\u00f3 os 10 pr\u00f3ximos eventos\n    var datasetAtivo = modoProximas ? proximasEventos() : DATA;\n    var idsAtivos    = {};\n    datasetAtivo.forEach(function(ev) { idsAtivos[ev.id] = true; });\n\n    var visible = [];\n    var hidden  = [];\n    var noGps   = [];\n\n    DATA.forEach(function(ev, i) {\n      \/\/ Em modo pr\u00f3ximas, esconder o que n\u00e3o est\u00e1 nos 10\n      if (modoProximas && !idsAtivos[ev.id]) {\n        if (allMarkers[i] && map.hasLayer(allMarkers[i])) map.removeLayer(allMarkers[i]);\n        return;\n      }\n\n      \/\/ Testar filtros normais\n      var ok = true;\n      if (search  && ev.titulo.toLowerCase().indexOf(search)  === -1 &&\n                     (ev.paroquia||'').toLowerCase().indexOf(search) === -1) ok = false;\n      if (diocese && ev.diocese !== diocese) ok = false;\n      if (mes     && ev.mes     !== mes)     ok = false;\n      if (cat     && ev.categoria !== cat)   ok = false;\n\n      if (!ok) {\n        hidden.push(ev);\n        if (allMarkers[i] && map.hasLayer(allMarkers[i])) map.removeLayer(allMarkers[i]);\n        return;\n      }\n\n      if (!ev.lat || !ev.lng) {\n        noGps.push(ev);\n      } else {\n        visible.push(ev);\n        if (allMarkers[i] && !map.hasLayer(allMarkers[i])) allMarkers[i].addTo(map);\n      }\n    });\n\n    \/\/ Banner pr\u00f3ximas: vis\u00edvel s\u00f3 no modo pr\u00f3ximas sem filtros activos\n    var banner = document.getElementById('fm-proximas-banner');\n    if (banner) banner.style.display = modoProximas ? 'flex' : 'none';\n\n    \/\/ Actualizar contador sidebar\n    var countEl = document.getElementById('fm-count');\n    var total   = visible.length + noGps.length;\n    countEl.innerHTML = '<strong>' + total + '<\/strong> festa' + (total !== 1 ? 's' : '')\n      + (noGps.length ? ' (' + noGps.length + ' sem GPS)' : '');\n\n    \/\/ Actualizar lista\n    renderLista(visible, noGps);\n  }\n\n  \/\/ \u2500\u2500 Renderizar lista de resultados \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  function renderLista(visible, noGps) {\n    var lista    = document.getElementById('fm-lista');\n    var countEl  = document.getElementById('fm-lista-count');\n    var combined = visible.concat(noGps);\n\n    var titulo = modoProximas ? 'Proximas ' + combined.length + ' festas' :\n                 combined.length + ' resultado' + (combined.length !== 1 ? 's' : '');\n    countEl.textContent = titulo;\n\n    \/\/ Actualizar t\u00edtulo da lista\n    var listaTitle = document.querySelector('.fm-lista-header-title');\n    if (listaTitle) listaTitle.textContent = modoProximas ? 'Proximas Festas' : 'Resultados';\n\n    if (combined.length === 0) {\n      lista.innerHTML = '<div class=\"fm-lista-empty\">Nenhuma festa encontrada com os filtros seleccionados.<\/div>';\n      return;\n    }\n\n    \/\/ Ordenar por data de in\u00edcio\n    combined.sort(function(a, b) {\n      if (!a.inicio) return 1;\n      if (!b.inicio) return -1;\n      return a.inicio.localeCompare(b.inicio);\n    });\n\n    lista.innerHTML = combined.map(function(ev) {\n      var dateStr = '';\n      if (ev.inicio) {\n        var p = ev.inicio.split('-');\n        dateStr = p[2] + '\/' + p[1] + '\/' + p[0];\n        if (ev.fim && ev.fim !== ev.inicio) {\n          var pf = ev.fim.split('-');\n          dateStr += ' &ndash; ' + pf[2] + '\/' + pf[1] + '\/' + pf[0];\n        }\n      }\n      var semGps = (!ev.lat || !ev.lng) ? '<span class=\"fm-lista-sem-gps\">Sem GPS<\/span>' : '';\n      var badge  = badgeBreve(ev);\n      return '<div class=\"fm-lista-item\" onclick=\"window.open(\\''+ev.url+'\\',\\'_blank\\')\">'\n        + (ev.categoria ? '<div class=\"fm-lista-cat\">'+ev.categoria+'<\/div>' : '')\n        + '<div class=\"fm-lista-titulo\">'+ev.titulo + badge + '<\/div>'\n        + (ev.paroquia ? '<div class=\"fm-lista-loc\">'+ev.paroquia+(ev.diocese?' &middot; '+ev.diocese:'')+'<\/div>' : '')\n        + (dateStr ? '<div class=\"fm-lista-data\">'+dateStr+'<\/div>' : '')\n        + semGps\n        + '<\/div>';\n    }).join('');\n  }\n\n  \/\/ Centrar mapa nos resultados vis\u00edveis\n  function fitVisible() {\n    var bounds = [];\n    allMarkers.forEach(function(m) {\n      if (m && map.hasLayer(m)) bounds.push(m.getLatLng());\n    });\n    if (bounds.length > 0) {\n      map.fitBounds(L.latLngBounds(bounds), { padding:[40,40], maxZoom:12 });\n    }\n  }\n\n  \/\/ \u2500\u2500 Eventos dos filtros \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n  \/\/ Pesquisa (com debounce)\n  var searchTimer;\n  document.getElementById('fm-search').addEventListener('input', function() {\n    clearTimeout(searchTimer);\n    var val = this.value;\n    searchTimer = setTimeout(function() { filters.search = val; applyFilters(); }, 300);\n  });\n\n  \/\/ Diocese\n  document.getElementById('fm-diocese').addEventListener('change', function() {\n    filters.diocese = this.value;\n    applyFilters();\n    if (this.value) setTimeout(fitVisible, 100);\n    else map.setView([39.6,-8.0], 7);\n  });\n\n  \/\/ M\u00eas\n  document.getElementById('fm-mes').addEventListener('change', function() {\n    filters.mes = parseInt(this.value) || 0;\n    applyFilters();\n  });\n\n  \/\/ Categoria\n  document.querySelectorAll('.fm-cat-btn').forEach(function(btn) {\n    btn.addEventListener('click', function() {\n      document.querySelectorAll('.fm-cat-btn').forEach(function(b) { b.classList.remove('active'); });\n      this.classList.add('active');\n      filters.cat = this.dataset.cat;\n      applyFilters();\n    });\n  });\n\n  \/\/ Limpar filtros \u2192 volta ao modo pr\u00f3ximas\n  document.getElementById('fm-reset').addEventListener('click', function() {\n    filters = { search:'', diocese:'', mes:0, cat:'' };\n    modoProximas = true;\n    document.getElementById('fm-search').value  = '';\n    document.getElementById('fm-diocese').value = '';\n    document.getElementById('fm-mes').value     = '0';\n    document.querySelectorAll('.fm-cat-btn').forEach(function(b) { b.classList.remove('active'); });\n    document.querySelector('.fm-cat-btn[data-cat=\"\"]').classList.add('active');\n    applyFilters();\n    setTimeout(fitVisible, 100);\n  });\n\n  \/\/ Bot\u00e3o \"Ver todas\" no banner\n  var verTodasBtn = document.getElementById('fm-ver-todas-btn');\n  if (verTodasBtn) {\n    verTodasBtn.addEventListener('click', function() {\n      modoProximas = false;\n      allMarkers.forEach(function(m) { if (m && !map.hasLayer(m)) m.addTo(map); });\n      map.setView([39.6,-8.0], 7);\n      applyFilters();\n    });\n  }\n\n  \/\/ Quando qualquer filtro \u00e9 aplicado \u2192 sair do modo pr\u00f3ximas\n  function activateFiltersMode() {\n    if (modoProximas) {\n      modoProximas = false;\n      allMarkers.forEach(function(m) { if (m && !map.hasLayer(m)) m.addTo(map); });\n    }\n  }\n\n  \/\/ Pesquisa \u2014 sair modo pr\u00f3ximas ao escrever\n  var searchTimer;\n  document.getElementById('fm-search').addEventListener('input', function() {\n    clearTimeout(searchTimer);\n    var val = this.value;\n    searchTimer = setTimeout(function() {\n      activateFiltersMode();\n      filters.search = val;\n      applyFilters();\n    }, 300);\n  });\n\n  \/\/ Diocese\n  document.getElementById('fm-diocese').addEventListener('change', function() {\n    activateFiltersMode();\n    filters.diocese = this.value;\n    applyFilters();\n    if (this.value) setTimeout(fitVisible, 100);\n    else map.setView([39.6,-8.0], 7);\n  });\n\n  \/\/ M\u00eas\n  document.getElementById('fm-mes').addEventListener('change', function() {\n    activateFiltersMode();\n    filters.mes = parseInt(this.value) || 0;\n    applyFilters();\n  });\n\n  \/\/ Categoria\n  document.querySelectorAll('.fm-cat-btn').forEach(function(btn) {\n    btn.addEventListener('click', function() {\n      activateFiltersMode();\n      document.querySelectorAll('.fm-cat-btn').forEach(function(b) { b.classList.remove('active'); });\n      this.classList.add('active');\n      filters.cat = this.dataset.cat;\n      applyFilters();\n    });\n  });\n\n  \/\/ \u2500\u2500 Arranque: modo pr\u00f3ximas \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  applyFilters();\n  \/\/ Fazer zoom nos marcadores das pr\u00f3ximas festas\n  setTimeout(function() {\n    var prox = proximasEventos().filter(function(ev) { return ev.lat && ev.lng; });\n    if (prox.length > 0) {\n      var bounds = prox.map(function(ev) { return [ev.lat, ev.lng]; });\n      map.fitBounds(bounds, { padding:[60,60], maxZoom:10 });\n    }\n  }, 200);\n  var toggleBtn   = document.getElementById('fm-sidebar-toggle');\n  var sidebarInner= document.getElementById('fm-sidebar-inner');\n\n  function isMobile() { return window.innerWidth <= 640; }\n\n  function initSidebar() {\n    if (isMobile()) {\n      \/\/ Mobile: toggle vis\u00edvel, conte\u00fado fechado por defeito\n      toggleBtn.style.display = 'flex';\n      sidebarInner.classList.remove('open');\n    } else {\n      \/\/ Desktop: toggle escondido, conte\u00fado sempre vis\u00edvel\n      toggleBtn.style.display = 'none';\n      sidebarInner.style.display = 'flex';\n      sidebarInner.style.flexDirection = 'column';\n      sidebarInner.style.gap = '20px';\n    }\n  }\n\n  toggleBtn.addEventListener('click', function() {\n    this.classList.toggle('open');\n    sidebarInner.classList.toggle('open');\n    \/\/ For\u00e7ar redimensionamento do mapa ap\u00f3s abrir\/fechar\n    setTimeout(function(){ map.invalidateSize(); }, 300);\n  });\n\n  window.addEventListener('resize', function() {\n    initSidebar();\n    setTimeout(function(){ map.invalidateSize(); }, 100);\n  });\n\n  initSidebar();\n\n})();\n<\/script>\n    <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Este portal conta consigo! Adicione a festa, romaria ou tradi\u00e7\u00e3o da sua terra.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-245","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/sites.ecclesia.pt\/festaseromarias\/wp-json\/wp\/v2\/pages\/245","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sites.ecclesia.pt\/festaseromarias\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sites.ecclesia.pt\/festaseromarias\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sites.ecclesia.pt\/festaseromarias\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sites.ecclesia.pt\/festaseromarias\/wp-json\/wp\/v2\/comments?post=245"}],"version-history":[{"count":24,"href":"https:\/\/sites.ecclesia.pt\/festaseromarias\/wp-json\/wp\/v2\/pages\/245\/revisions"}],"predecessor-version":[{"id":297,"href":"https:\/\/sites.ecclesia.pt\/festaseromarias\/wp-json\/wp\/v2\/pages\/245\/revisions\/297"}],"wp:attachment":[{"href":"https:\/\/sites.ecclesia.pt\/festaseromarias\/wp-json\/wp\/v2\/media?parent=245"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}