{"id":378,"date":"2025-04-01T16:19:42","date_gmt":"2025-04-01T19:19:42","guid":{"rendered":"https:\/\/www.ufrgs.br\/paleocons\/?page_id=378"},"modified":"2026-09-22T15:38:20","modified_gmt":"2026-09-22T18:38:20","slug":"publications","status":"publish","type":"page","link":"https:\/\/www.ufrgs.br\/paleocons\/publications\/","title":{"rendered":"Publica\u00e7\u00f5es"},"content":{"rendered":"<div id=\"pc-rede\">\n\n<style>\n#pc-rede {\n  --bg: #f7f6f2;\n  --card: #ffffff;\n  --soft: #ecebe5;\n  --line: #d9d7cf;\n  --ink: #252922;\n  --muted: #687068;\n  --brand: #116c6a;\n  --brand-dark: #0a5352;\n  box-sizing: border-box;\n  padding: clamp(16px, 3vw, 40px);\n  color: var(--ink);\n  background: var(--bg);\n  font: 16px\/1.55 system-ui, -apple-system, \"Segoe UI\", sans-serif;\n}\n\n#pc-rede *,\n#pc-rede *::before,\n#pc-rede *::after {\n  box-sizing: border-box;\n}\n\n#pc-rede input,\n#pc-rede select,\n#pc-rede button {\n  font: inherit;\n  color: inherit;\n}\n\n#pc-rede button {\n  cursor: pointer;\n}\n\n.pc-wrap {\n  width: 100%;\n  max-width: 1180px;\n  margin: auto;\n}\n\n.pc-head {\n  display: flex;\n  align-items: flex-start;\n  justify-content: space-between;\n  gap: 20px;\n  padding-bottom: 26px;\n  border-bottom: 1px solid var(--line);\n}\n\n#pc-rede h1 {\n  margin: 0 0 8px;\n  font: 600 clamp(29px, 4vw, 46px)\/1.08 Georgia, serif;\n  letter-spacing: -0.025em;\n}\n\n.pc-intro {\n  max-width: 730px;\n  margin: 0;\n  color: var(--muted);\n}\n\n.pc-theme {\n  display: grid;\n  flex: 0 0 auto;\n  place-items: center;\n  width: 44px;\n  height: 44px;\n  background: var(--card);\n  border: 1px solid var(--line);\n  border-radius: 50%;\n  font-size: 20px;\n}\n\n.pc-theme:hover {\n  border-color: var(--brand);\n}\n\n.pc-stats {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: 12px;\n  margin: 22px 0;\n}\n\n.pc-stat,\n.pc-panel {\n  background: var(--card);\n  border: 1px solid var(--line);\n  border-radius: 10px;\n}\n\n.pc-stat {\n  padding: 17px;\n}\n\n.pc-stat b {\n  display: block;\n  font-size: clamp(23px, 3vw, 31px);\n  font-variant-numeric: tabular-nums;\n  line-height: 1;\n}\n\n.pc-stat span {\n  color: var(--muted);\n  font-size: 12px;\n  letter-spacing: 0.06em;\n  text-transform: uppercase;\n}\n\n.pc-filters {\n  display: grid;\n  grid-template-columns:\n    minmax(220px, 1.5fr)\n    repeat(3, minmax(145px, 0.55fr));\n  gap: 12px;\n  padding: 16px;\n  margin-bottom: 18px;\n}\n\n.pc-filters label {\n  color: var(--muted);\n  font-size: 12px;\n  font-weight: 750;\n  letter-spacing: 0.05em;\n  text-transform: uppercase;\n}\n\n.pc-filters label span {\n  display: block;\n  margin-bottom: 5px;\n}\n\n.pc-filters input,\n.pc-filters select {\n  width: 100%;\n  min-height: 44px;\n  padding: 8px 10px;\n  background: var(--bg);\n  border: 1px solid var(--line);\n  border-radius: 7px;\n  outline: none;\n}\n\n.pc-filters input:focus,\n.pc-filters select:focus {\n  border-color: var(--brand);\n  box-shadow: 0 0 0 3px color-mix(\n    in srgb,\n    var(--brand) 18%,\n    transparent\n  );\n}\n\n.pc-layout {\n  display: grid;\n  grid-template-columns: minmax(0, 1.6fr) minmax(280px, 0.7fr);\n  align-items: start;\n  gap: 18px;\n}\n\n.pc-section-title {\n  display: flex;\n  align-items: flex-end;\n  justify-content: space-between;\n  gap: 12px;\n  padding: 18px 20px 13px;\n  border-bottom: 1px solid var(--line);\n}\n\n#pc-rede h2 {\n  margin: 0;\n  font-size: 18px;\n  line-height: 1.2;\n}\n\n.pc-count {\n  color: var(--muted);\n  font-size: 13px;\n}\n\n.pc-list {\n  padding: 2px 20px 14px;\n}\n\n.pc-item {\n  display: grid;\n  grid-template-columns: 62px minmax(0, 1fr);\n  gap: 15px;\n  padding: 19px 0;\n  border-bottom: 1px solid var(--line);\n  content-visibility: auto;\n}\n\n.pc-item:last-child {\n  border-bottom: 0;\n}\n\n.pc-year {\n  color: var(--brand-dark);\n  font-weight: 800;\n  font-variant-numeric: tabular-nums;\n}\n\n.pc-title {\n  margin: 0 0 5px;\n  font-size: 17px;\n  font-weight: 750;\n  line-height: 1.3;\n}\n\n.pc-authors {\n  margin: 0 0 6px;\n  color: var(--muted);\n  font-size: 14px;\n}\n\n.pc-authors mark {\n  padding: 0 2px;\n  color: var(--ink);\n  background: #d8e8e5;\n  border-radius: 3px;\n}\n\n.pc-ref {\n  margin: 0;\n  color: var(--muted);\n  font-size: 13px;\n}\n\n.pc-tags {\n  display: flex;\n  flex-wrap: wrap;\n  gap: 6px;\n  margin-top: 8px;\n}\n\n.pc-tag {\n  padding: 3px 8px;\n  color: var(--muted);\n  background: var(--soft);\n  border-radius: 999px;\n  font-size: 12px;\n}\n\n.pc-doi {\n  display: inline-flex;\n  align-items: center;\n  min-height: 32px;\n  margin-top: 8px;\n  color: var(--brand-dark) !important;\n  font-size: 13px;\n  font-weight: 800;\n  text-decoration: none !important;\n}\n\n.pc-doi:hover {\n  text-decoration: underline !important;\n}\n\n.pc-side {\n  display: grid;\n  position: sticky;\n  top: 16px;\n  gap: 18px;\n}\n\n.pc-chart,\n.pc-topics {\n  padding: 18px;\n}\n\n.pc-bars {\n  display: grid;\n  gap: 10px;\n  margin-top: 15px;\n}\n\n.pc-bar {\n  display: grid;\n  grid-template-columns: 42px 1fr 22px;\n  align-items: center;\n  gap: 8px;\n  font-size: 12px;\n}\n\n.pc-track {\n  height: 18px;\n  overflow: hidden;\n  background: var(--soft);\n  border-radius: 4px;\n}\n\n.pc-fill {\n  min-width: 2px;\n  height: 100%;\n  background: var(--brand);\n  border-radius: 4px;\n}\n\n.pc-topic {\n  display: grid;\n  grid-template-columns: 1fr auto;\n  gap: 7px;\n  font-size: 13px;\n}\n\n.pc-topic .pc-track {\n  grid-column: 1 \/ -1;\n  height: 7px;\n}\n\n.pc-empty {\n  padding: 50px 20px;\n  color: var(--muted);\n  text-align: center;\n}\n\n.pc-clear {\n  min-height: 44px;\n  padding: 8px 15px;\n  margin-top: 12px;\n  color: #ffffff !important;\n  background: var(--brand);\n  border: 0;\n  border-radius: 7px;\n}\n\n.pc-foot {\n  display: flex;\n  justify-content: space-between;\n  gap: 18px;\n  padding-top: 22px;\n  color: var(--muted);\n  font-size: 12px;\n}\n\n#pc-rede[data-theme=\"dark\"] {\n  --bg: #171a18;\n  --card: #202420;\n  --soft: #2b302c;\n  --line: #3d453e;\n  --ink: #e8ece7;\n  --muted: #b0bbb2;\n  --brand: #7bc9c7;\n  --brand-dark: #9cddda;\n}\n\n#pc-rede[data-theme=\"dark\"] .pc-authors mark {\n  color: var(--ink);\n  background: #29423f;\n}\n\n#pc-rede :focus-visible {\n  outline: 2px solid var(--brand);\n  outline-offset: 3px;\n}\n\n@media (max-width: 900px) {\n  .pc-layout {\n    grid-template-columns: 1fr;\n  }\n\n  .pc-side {\n    position: static;\n    grid-template-columns: 1fr 1fr;\n  }\n\n  .pc-filters {\n    grid-template-columns: 1fr 1fr;\n  }\n}\n\n@media (max-width: 620px) {\n  #pc-rede {\n    padding: 14px;\n  }\n\n  .pc-head {\n    align-items: center;\n  }\n\n  .pc-stats {\n    grid-template-columns: 1fr 1fr;\n  }\n\n  .pc-filters,\n  .pc-side {\n    grid-template-columns: 1fr;\n  }\n\n  .pc-item {\n    grid-template-columns: 1fr;\n    gap: 3px;\n  }\n\n  .pc-foot {\n    display: block;\n  }\n}\n\n@media (prefers-reduced-motion: reduce) {\n  #pc-rede *,\n  #pc-rede *::before,\n  #pc-rede *::after {\n    transition: none !important;\n    animation: none !important;\n  }\n}\n<\/style>\n<div class=\"pc-wrap\">\n\n  <header class=\"pc-head\">\n<div>\n<h1>Publica\u00e7\u00f5es do grupo<\/h1>\n<p class=\"pc-intro\">\n        Produ\u00e7\u00e3o em paleobiologia da conserva\u00e7\u00e3o, tafonomia\n        atual\u00edstica, paleoecologia e resolu\u00e7\u00e3o temporal do\n        registro f\u00f3ssil.<\/p>\n\n<\/div>\n<button\n      class=\"pc-theme\"\n      type=\"button\"\n      aria-label=\"Alternar modo claro ou escuro\"\n      title=\"Alternar modo claro ou escuro\"\n    >\n      \u25d0\n    <\/button>\n  <\/header>\n\n  <section class=\"pc-stats\" aria-label=\"Indicadores bibliogr\u00e1ficos\">\n<div class=\"pc-stat\">\n      <b data-k=\"pubs\">0<\/b>\n      <span>publica\u00e7\u00f5es<\/span><\/div>\n<div class=\"pc-stat\">\n      <b data-k=\"authors\">0<\/b>\n      <span>autores<\/span><\/div>\n<div class=\"pc-stat\">\n      <b data-k=\"sources\">0<\/b>\n      <span>peri\u00f3dicos e editoras<\/span><\/div>\n<div class=\"pc-stat\">\n      <b data-k=\"years\">0<\/b>\n      <span>anos de produ\u00e7\u00e3o<\/span><\/div>\n<\/section>\n\n  <section class=\"pc-panel pc-filters\" aria-label=\"Filtros\">\n    <label>\n      <span>Buscar<\/span>\n      <input\n        data-f=\"q\"\n        type=\"search\"\n        placeholder=\"T\u00edtulo, tema, autor ou peri\u00f3dico\u2026\"\n      >\n    <\/label>\n\n    <label>\n      <span>Autor<\/span>\n      <select data-f=\"author\">\n<option value=\"\">Todos os autores<\/option>\n<\/select>\n    <\/label>\n\n    <label>\n      <span>Ano<\/span>\n      <select data-f=\"year\">\n<option value=\"\">Todos os anos<\/option>\n<\/select>\n    <\/label>\n\n    <label>\n      <span>Tipo<\/span>\n      <select data-f=\"type\">\n<option value=\"\">Todos os tipos<\/option>\n<\/select>\n    <\/label>\n  <\/section>\n<div class=\"pc-layout\">\n\n    <main class=\"pc-panel\">\n<div class=\"pc-section-title\">\n<h2>Bibliografia<\/h2>\n<span class=\"pc-count\" aria-live=\"polite\"><\/span><\/div>\n<div class=\"pc-list\"><\/div>\n<\/main>\n\n    <aside class=\"pc-side\">\n\n      <section class=\"pc-panel pc-chart\">\n<h2>Publica\u00e7\u00f5es por ano<\/h2>\n<div class=\"pc-bars\" data-chart><\/div>\n<\/section>\n\n      <section class=\"pc-panel pc-topics\">\n<h2>Temas no recorte<\/h2>\n<div class=\"pc-bars\" data-topics><\/div>\n<\/section>\n\n    <\/aside><\/div>\n<footer class=\"pc-foot\">\n    <span>Dados atualizados em setembro de 2026.<\/span>\n    <span>Use os filtros para explorar autoria, ano e tipo.<\/span>\n  <\/footer><\/div>\n<script>\n(function () {\n  const root = document.getElementById(\"pc-rede\");\n\n  if (!root) {\n    return;\n  }\n\n  const raw = [\n    [2009,\"Artigo\",\"Bouchardia rosea, a vanishing brachiopod species of the Brazilian platform: taphonomy, historical ecology and conservation paleobiology\",[\"Marcello G. Sim\u00f5es\",\"Sabrina C. Rodrigues\",\"Micha\u0142 Kowalewski\"],\"Historical Biology\",\"21: 123\u2013137\",\"10.1080\/08912960903315559\",[\"Paleobiologia da conserva\u00e7\u00e3o\",\"Tafonomia\"]],\n    [2016,\"Artigo\",\"Manifesto of the South American School of (actualistic) taphonomy\",[\"Matias N. Ritter\",\"Claudio G. De Francesco\",\"Fernando Erthal\",\"Gabriela S. Hassan\",\"Eleonor Tietze\",\"Sergio Mart\u00ednez\"],\"PALAIOS\",\"31: 20\u201324\",\"10.2110\/palo.2015.065\",[\"Tafonomia atual\u00edstica\",\"Am\u00e9rica do Sul\"]],\n    [2017,\"Artigo\",\"Spatial variation in the temporal resolution of subtropical shallow-water molluscan death assemblages\",[\"Matias N. Ritter\",\"Fernando Erthal\",\"Matthew A. Kosnik\",\"Jo\u00e3o C. Coimbra\",\"Darrell S. Kaufman\"],\"PALAIOS\",\"32: 572\u2013583\",\"10.2110\/palo.2017.003\",[\"Resolu\u00e7\u00e3o temporal\",\"Moluscos\"]],\n    [2017,\"Artigo\",\"El sesgo del operador en la replicabilidad de los estudios tafon\u00f3micos comparativos\",[\"Matias N. Ritter\",\"Heitor Francischini\",\"Lidia I. Kuhn\",\"Nath\u00e1lia C. Luz\",\"Felipe H. Michels\",\"Ana L. M. Morais\",\"Paula A. V. Paim\",\"Pedro L. A. Xavier\",\"Claudio G. De Francesco\"],\"Revista Brasileira de Paleontologia\",\"19: 449\u2013464\",\"10.4072\/rbp.2016.3.10\",[\"Replicabilidade\",\"Vi\u00e9s do operador\"]],\n    [2020,\"Livro\",\"Actualistic Taphonomy in South America\",[\"Sergio Mart\u00ednez\",\"Alejandra Rojas\",\"Fernanda Cabrera\"],\"Springer, Cham\",\"Topics in Geobiology 48, 272 p.\",\"10.1007\/978-3-030-20625-3\",[\"Tafonomia atual\u00edstica\",\"Am\u00e9rica do Sul\"]],\n    [2022,\"Artigo\",\"The tricky task of fisher-gardener research in Conservation Paleobiology\",[\"Anna Clara A. Assump\u00e7\u00e3o\",\"Felipe Caron\",\"Fernando Erthal\",\"Eduardo G. Barboza\",\"Raphael M. Pinotti\",\"Matias N. Ritter\"],\"Frontiers in Ecology and Evolution\",\"10: 838839\",\"10.3389\/fevo.2022.838839\",[\"Paleobiologia da conserva\u00e7\u00e3o\",\"Linha de base\"]],\n    [2023,\"Artigo\",\"Onshore-offshore trends in the temporal resolution of molluscan death assemblages: how age-frequency distributions reveal Quaternary sea-level history\",[\"Matias N. Ritter\",\"Fernando Erthal\",\"Matthew A. Kosnik\",\"Micha\u0142 Kowalewski\",\"Jo\u00e3o C. Coimbra\",\"Felipe Caron\",\"Darrell S. Kaufman\"],\"PALAIOS\",\"38: 148\u2013157\",\"10.2110\/palo.2021.041\",[\"Resolu\u00e7\u00e3o temporal\",\"N\u00edvel do mar\"]],\n    [2023,\"Divulga\u00e7\u00e3o\",\"Paleobiolog\u00eda de la conservaci\u00f3n: sumando la ecolog\u00eda del pasado para comprender el presente\",[\"Fernando Archuby\",\"Claudio G. De Francesco\",\"Fernando Erthal\",\"Matias N. Ritter\",\"Fabrizio Scarabino\"],\"Bolet\u00edn de la Asociaci\u00f3n Argentina de Malacolog\u00eda\",\"13: 8\u201318\",\"\",[\"Paleobiologia da conserva\u00e7\u00e3o\",\"Malacologia\"]],\n    [2025,\"Artigo\",\"Exploring the past to protect the future: an analysis of conservation paleobiology in South America\",[\"Anna Clara A. Assump\u00e7\u00e3o\",\"Matias N. Ritter\"],\"Anais da Academia Brasileira de Ci\u00eancias\",\"97: e20240641\",\"10.1590\/0001-3765202520240641\",[\"Paleobiologia da conserva\u00e7\u00e3o\",\"Am\u00e9rica do Sul\"]],\n    [2025,\"Artigo\",\"Hotspots of linked-fidelity: live-dead fidelity of insular ostracods sheds light on the structure of the marine microfossil record\",[\"Nath\u00e1lia C. Luz\",\"Matias N. Ritter\",\"Fernando Erthal\",\"Jo\u00e3o C. Coimbra\"],\"Journal of South American Earth Sciences\",\"105609\",\"10.1016\/j.jsames.2025.105609\",[\"Fidelidade vivo-morto\",\"Ostracodes\"]],\n    [2025,\"Artigo\",\"The rise of actualistic taphonomy in South America\",[\"Claudio G. De Francesco\",\"Fernando Archuby\",\"Karen Borrazzo\",\"Luis A. Borrero\",\"Mar\u00eda A. Guti\u00e9rrez\",\"Gabriela S. Hassan\",\"Sergio A. Mart\u00ednez\",\"Claudia I. Montalvo\",\"Matias N. Ritter\"],\"Publicaci\u00f3n Electr\u00f3nica de la Asociaci\u00f3n Paleontol\u00f3gica Argentina\",\"25(2): 68\u201383\",\"10.5710\/PEAPA.24.07.2025.542\",[\"Tafonomia atual\u00edstica\",\"Revis\u00e3o\"]],\n    [2025,\"Artigo\",\"Molluscs on beach death assemblages in the outer R\u00edo de la Plata Estuary\u2013Atlantic Ocean transitional zone, Uruguay: an actuopalaeontological approach\",[\"Alejandra Rojas\",\"Melany Molina\",\"Sergio Mart\u00ednez\",\"Mart\u00edn Ubilla\"],\"Journal of South American Earth Sciences\",\"168: 105850\",\"10.1016\/j.jsames.2025.105850\",[\"Assembleias de morte\",\"Uruguai\"]],\n    [2026,\"Artigo\",\"Revealing the absence of Mactrinae Lamarck, 1809 (Mollusca: Bivalvia) in the Patos Lagoon estuary, Brazil, using conservation palaeobiology\",[\"Anna Clara A. Assump\u00e7\u00e3o\",\"Felipe Caron\",\"Francisca R. S. de Moura\",\"Valentina S. dos Santos\",\"Matias N. Ritter\"],\"Historical Biology\",\"38(9): 3241\u20133256\",\"10.1080\/08912963.2025.2586227\",[\"Paleobiologia da conserva\u00e7\u00e3o\",\"Lagoa dos Patos\"]],\n    [2026,\"Artigo\",\"Conservation paleobiology of intertidal molluscs: detecting human impacts in San Antonio Bay, northern Patagonia\",[\"Fernando Archuby\",\"Andrea Roche\"],\"Ameghiniana\",\"63(3): 163\u2013188\",\"10.5710\/AMGH.27.03.2026.3674\",[\"Paleobiologia da conserva\u00e7\u00e3o\",\"Patag\u00f4nia\"]],\n    [2026,\"Artigo\",\"Stratigraphy of the Holocene\u2013Anthropocene transition in the southern Brazilian coastal plain\",[\"Mariah Xavier Rocha\",\"Maria Luiza C. C. Rosa\",\"Lidia Aumond Kuhn\",\"Matias N. Ritter\",\"Paulo Alves de Souza\",\"Ana Cristina de Melo Ferreira\"],\"Anthropocene\",\"54: 100551\",\"10.1016\/j.ancene.2026.100551\",[\"Antropoceno\",\"Plan\u00edcie costeira\"]],\n    [2026,\"Artigo\",\"Sediment accumulation rate predicts the temporal resolution of marine fossil assemblages\",[\"Micha\u0142 Kowalewski\",\"Adam Toma\u0161ov\u00fdch\",\"Rafa\u0142 Nawrot\",\"Daniele Scarponi\",\"Martin Zuschin\",\"Paolo G. Albano\",\"Quan Hua\",\"Darrell S. Kaufman\",\"Susan M. Kidwell\",\"Matias N. Ritter\",\"Marcello G. Sim\u00f5es\",\"Luis Torres Jr.\",\"Bettina Bachmann\",\"Michaela Berensmeier\",\"Troy A. Dexter\",\"Alexandra Haselmair\",\"Ivo Gallmetzer\",\"Claudio Pellegrini\",\"Lukas Schweig\",\"Jan Steger\",\"Matthew A. Kosnik\"],\"Proceedings of the National Academy of Sciences\",\"123(31): e2615368123\",\"10.1073\/pnas.2615368123\",[\"Resolu\u00e7\u00e3o temporal\",\"Taxa de sedimenta\u00e7\u00e3o\"]],\n    [2026,\"Artigo\",\"Paleoecological baseline of parasite-host interactions in Mactrinae bivalves from southern Brazil\",[\"Anna Clara Arboitte de Assump\u00e7\u00e3o\",\"Camila Souza Cruz\",\"Keila Marini\",\"Valentina Silva dos Santos\",\"Matias Ritter\"],\"The Holocene\",\"Online First: 1\u201314\",\"10.1177\/09596836261487397\",[\"Paleobiologia da conserva\u00e7\u00e3o\",\"Parasitismo\",\"Mactrinae\",\"Linha de base\"]]\n  ];\n\n  const data = raw.map(function (item) {\n    return {\n      year: item[0],\n      type: item[1],\n      title: item[2],\n      authors: item[3],\n      source: item[4],\n      details: item[5],\n      doi: item[6],\n      tags: item[7]\n    };\n  });\n\n  const $ = function (selector) {\n    return root.querySelector(selector);\n  };\n\n  const normalize = function (value) {\n    return String(value || \"\")\n      .normalize(\"NFD\")\n      .replace(\/[\\u0300-\\u036f]\/g, \"\")\n      .toLowerCase();\n  };\n\n  const escapeHTML = function (value) {\n    return String(value).replace(\/[&<>\"']\/g, function (character) {\n      return {\n        \"&\": \"&amp;\",\n        \"<\": \"&lt;\",\n        \">\": \"&gt;\",\n        '\"': \"&quot;\",\n        \"'\": \"&#39;\"\n      }[character];\n    });\n  };\n\n  let state = {\n    q: \"\",\n    author: \"\",\n    year: \"\",\n    type: \"\"\n  };\n\n  const authorField = $('[data-f=\"author\"]');\n  const yearField = $('[data-f=\"year\"]');\n  const typeField = $('[data-f=\"type\"]');\n\n  const authors = [\n    ...new Set(data.flatMap(function (publication) {\n      return publication.authors;\n    }))\n  ].sort(function (a, b) {\n    return a.localeCompare(b);\n  });\n\n  authors.forEach(function (author) {\n    authorField.add(new Option(author, author));\n  });\n\n  const years = [\n    ...new Set(data.map(function (publication) {\n      return publication.year;\n    }))\n  ].sort(function (a, b) {\n    return b - a;\n  });\n\n  years.forEach(function (year) {\n    yearField.add(new Option(year, year));\n  });\n\n  const types = [\n    ...new Set(data.map(function (publication) {\n      return publication.type;\n    }))\n  ].sort();\n\n  types.forEach(function (type) {\n    typeField.add(new Option(type, type));\n  });\n\n  $('[data-k=\"pubs\"]').textContent = data.length;\n  $('[data-k=\"authors\"]').textContent = new Set(data.flatMap(function (publication) {\n    return publication.authors;\n  })).size;\n  $('[data-k=\"sources\"]').textContent = new Set(data.map(function (publication) {\n    return publication.source;\n  })).size;\n  $('[data-k=\"years\"]').textContent =\n    Math.max(...data.map(function (publication) { return publication.year; })) -\n    Math.min(...data.map(function (publication) { return publication.year; })) + 1;\n\n  function filteredPublications() {\n    return data\n      .filter(function (publication) {\n        const searchableText = [\n          publication.title,\n          publication.source,\n          publication.details,\n          ...publication.authors,\n          ...publication.tags\n        ].join(\" \");\n\n        return (\n          (!state.q || normalize(searchableText).includes(normalize(state.q))) &&\n          (!state.author || publication.authors.includes(state.author)) &&\n          (!state.year || String(publication.year) === state.year) &&\n          (!state.type || publication.type === state.type)\n        );\n      })\n      .sort(function (a, b) {\n        return b.year - a.year || a.title.localeCompare(b.title);\n      });\n  }\n\n  function clearFilters() {\n    state = { q: \"\", author: \"\", year: \"\", type: \"\" };\n    root.querySelectorAll(\"[data-f]\").forEach(function (field) {\n      field.value = \"\";\n    });\n    render();\n  }\n\n  function render() {\n    const rows = filteredPublications();\n    const publicationList = $(\".pc-list\");\n\n    $(\".pc-count\").textContent =\n      rows.length + (rows.length === 1 ? \" resultado\" : \" resultados\");\n\n    if (!rows.length) {\n      publicationList.innerHTML = `\n        <div class=\"pc-empty\">\n          <b>Nenhuma publica\u00e7\u00e3o encontrada<\/b>\n          <br>\n          Tente retirar algum filtro.\n          <br>\n          <button class=\"pc-clear\" type=\"button\">Limpar filtros<\/button>\n        <\/div>\n      `;\n      $(\".pc-clear\").addEventListener(\"click\", clearFilters);\n    } else {\n      publicationList.innerHTML = rows.map(function (publication) {\n        const formattedAuthors = publication.authors\n          .map(function (author) {\n            return state.author === author\n              ? \"<mark>\" + escapeHTML(author) + \"<\/mark>\"\n              : escapeHTML(author);\n          })\n          .join(\"; \");\n\n        const tags = [publication.type].concat(publication.tags)\n          .map(function (tag) {\n            return '<span class=\"pc-tag\">' + escapeHTML(tag) + \"<\/span>\";\n          })\n          .join(\"\");\n\n        const doiLink = publication.doi\n          ? `\n            <a\n              class=\"pc-doi\"\n              href=\"https:\/\/doi.org\/${encodeURIComponent(publication.doi)}\"\n              target=\"_blank\"\n              rel=\"noopener noreferrer\"\n            >\n              DOI \u2197\n            <\/a>\n          `\n          : \"\";\n\n        return `\n          <article class=\"pc-item\">\n            <div class=\"pc-year\">${publication.year}<\/div>\n            <div>\n              <h3 class=\"pc-title\">${escapeHTML(publication.title)}<\/h3>\n              <p class=\"pc-authors\">${formattedAuthors}<\/p>\n              <p class=\"pc-ref\"><em>${escapeHTML(publication.source)}<\/em> \u00b7 ${escapeHTML(publication.details)}<\/p>\n              <div class=\"pc-tags\">${tags}<\/div>\n              ${doiLink}\n            <\/div>\n          <\/article>\n        `;\n      }).join(\"\");\n    }\n\n    renderYearChart(rows);\n    renderTopics(rows);\n  }\n\n  function renderYearChart(rows) {\n    const allYears = [...new Set(data.map(function (publication) {\n      return publication.year;\n    }))].sort();\n\n    const counts = allYears.map(function (year) {\n      return rows.filter(function (publication) {\n        return publication.year === year;\n      }).length;\n    });\n\n    const maximum = Math.max(1, ...counts);\n\n    $(\"[data-chart]\").innerHTML = allYears.map(function (year, index) {\n      const count = counts[index];\n      const width = (100 * count) \/ maximum;\n\n      return `\n        <div class=\"pc-bar\">\n          <b>${year}<\/b>\n          <div class=\"pc-track\" title=\"${count} publica\u00e7\u00e3o(\u00f5es)\">\n            <div class=\"pc-fill\" style=\"width: ${width}%\"><\/div>\n          <\/div>\n          <span>${count}<\/span>\n        <\/div>\n      `;\n    }).join(\"\");\n  }\n\n  function renderTopics(rows) {\n    const topicCounts = {};\n\n    rows.forEach(function (publication) {\n      publication.tags.forEach(function (tag) {\n        topicCounts[tag] = (topicCounts[tag] || 0) + 1;\n      });\n    });\n\n    const topics = Object.entries(topicCounts)\n      .sort(function (a, b) {\n        return b[1] - a[1];\n      })\n      .slice(0, 6);\n\n    const maximum = Math.max(\n      1,\n      ...topics.map(function (topic) {\n        return topic[1];\n      })\n    );\n\n    $(\"[data-topics]\").innerHTML = topics.map(function (topic) {\n      const name = topic[0];\n      const count = topic[1];\n      const width = (100 * count) \/ maximum;\n\n      return `\n        <div class=\"pc-topic\">\n          <span>${escapeHTML(name)}<\/span>\n          <b>${count}<\/b>\n          <div class=\"pc-track\">\n            <div class=\"pc-fill\" style=\"width: ${width}%\"><\/div>\n          <\/div>\n        <\/div>\n      `;\n    }).join(\"\");\n  }\n\n  root.querySelectorAll(\"[data-f]\").forEach(function (field) {\n    const eventName = field.type === \"search\" ? \"input\" : \"change\";\n\n    field.addEventListener(eventName, function (event) {\n      state[event.target.dataset.f] = event.target.value;\n      render();\n    });\n  });\n\n  let darkMode = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n  const themeButton = $(\".pc-theme\");\n\n  function updateTheme() {\n    root.dataset.theme = darkMode ? \"dark\" : \"light\";\n    themeButton.textContent = darkMode ? \"\u2600\" : \"\u25d0\";\n    themeButton.setAttribute(\n      \"aria-label\",\n      darkMode ? \"Ativar modo claro\" : \"Ativar modo escuro\"\n    );\n  }\n\n  themeButton.addEventListener(\"click\", function () {\n    darkMode = !darkMode;\n    updateTheme();\n  });\n\n  updateTheme();\n  render();\n})();\n<\/script><\/div>","protected":false},"excerpt":{"rendered":"<p>Publica\u00e7\u00f5es do grupo Produ\u00e7\u00e3o em paleobiologia da conserva\u00e7\u00e3o, tafonomia atual\u00edstica, paleoecologia e resolu\u00e7\u00e3o temporal do registro f\u00f3ssil. \u25d0 0 publica\u00e7\u00f5es 0 autores 0 peri\u00f3dicos e editoras 0 anos de produ\u00e7\u00e3o Buscar Autor Todos os autores Ano Todos os anos Tipo Todos os tipos Bibliografia Publica\u00e7\u00f5es por ano Temas no recorte Dados atualizados em setembro de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"page-templates\/full-width-page.php","meta":{"footnotes":""},"class_list":["post-378","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ufrgs.br\/paleocons\/wp-json\/wp\/v2\/pages\/378","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ufrgs.br\/paleocons\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ufrgs.br\/paleocons\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ufrgs.br\/paleocons\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ufrgs.br\/paleocons\/wp-json\/wp\/v2\/comments?post=378"}],"version-history":[{"count":14,"href":"https:\/\/www.ufrgs.br\/paleocons\/wp-json\/wp\/v2\/pages\/378\/revisions"}],"predecessor-version":[{"id":555,"href":"https:\/\/www.ufrgs.br\/paleocons\/wp-json\/wp\/v2\/pages\/378\/revisions\/555"}],"wp:attachment":[{"href":"https:\/\/www.ufrgs.br\/paleocons\/wp-json\/wp\/v2\/media?parent=378"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}