{"id":9878,"date":"2026-07-07T18:44:21","date_gmt":"2026-07-07T18:44:21","guid":{"rendered":"https:\/\/www.psafe.com\/?page_id=9878"},"modified":"2026-07-24T19:55:16","modified_gmt":"2026-07-24T19:55:16","slug":"seguranca-digital","status":"publish","type":"page","link":"https:\/\/www.psafe.com\/pt-br\/seguranca-digital\/","title":{"rendered":"Seguran\u00e7a Digital"},"content":{"rendered":"\n<p><style>\n\/* Esconde o t\u00edtulo autom\u00e1tico da p\u00e1gina, caso fique duplicado *\/\n.entry-title,\n.wp-block-post-title {\n  display: none !important;\n}\n\n.psafe-hero-section {\n  max-width: 1180px;\n  margin: -80px auto 0;\n  padding: 0 24px 10px;\n  font-family: inherit;\n}\n\n.psafe-hero-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  align-items: center;\n  gap: 50px;\n}\n\n.psafe-hero-content h1 {\n  font-size: clamp(42px, 5vw, 64px);\n  line-height: 1;\n  margin: 0 0 18px;\n  color: #4b13d1;\n  font-weight: 800;\n  letter-spacing: -1.5px;\n}\n\n.psafe-hero-content p {\n  font-size: 16px;\n  line-height: 1.55;\n  color: #3f3448;\n  max-width: 520px;\n  margin: 0 0 24px;\n}\n\n.psafe-hero-buttons {\n  display: flex;\n  gap: 16px;\n  flex-wrap: wrap;\n}\n\n.psafe-btn {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  padding: 13px 24px;\n  border-radius: 8px;\n  font-size: 14px;\n  font-weight: 700;\n  text-decoration: none;\n  transition: all 0.2s ease;\n}\n\n.psafe-btn-primary {\n  background: #4b13d1;\n  color: #ffffff !important;\n  box-shadow: 0 10px 24px rgba(75, 19, 209, 0.22);\n}\n\n.psafe-btn-primary:hover {\n  background: #3508a8;\n  transform: translateY(-2px);\n}\n\n.psafe-btn-secondary {\n  background: #ffffff;\n  color: #4b13d1 !important;\n  border: 2px solid #4b13d1;\n}\n\n.psafe-btn-secondary:hover {\n  background: #f4efff;\n  transform: translateY(-2px);\n}\n\n.psafe-hero-image {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.psafe-hero-image img {\n  width: 100%;\n  max-width: 470px;\n  height: auto;\n  display: block;\n}\n\n@media (max-width: 768px) {\n  .psafe-hero-section {\n    padding: 35px 20px 45px;\n  }\n\n  .psafe-hero-grid {\n    grid-template-columns: 1fr;\n    gap: 30px;\n  }\n\n  .psafe-hero-content h1 {\n    font-size: 42px;\n  }\n\n  .psafe-hero-image {\n    justify-content: flex-start;\n  }\n\n  .psafe-hero-image img {\n    max-width: 360px;\n  }\n}\n<\/style><\/p>\n<section class=\"psafe-hero-section\">\n<div class=\"psafe-hero-grid\">\n<div class=\"psafe-hero-content\">\n<h1>Seguran\u00e7a Digital<\/h1>\n<p>Guias, dicas e ferramentas para proteger seu celular, seus dados e suas contas contra golpes digitais, links suspeitos, vazamento de dados e outras amea\u00e7as online.<\/p>\n<div class=\"psafe-hero-buttons\"><a class=\"psafe-btn psafe-btn-primary\" href=\"https:\/\/utm-psafe.vercel.app\/r\/Vlg0uL\"> Baixar dfndr Security <\/a> <a class=\"psafe-btn psafe-btn-secondary\" href=\"#guias\"> Explorar Guias <\/a><\/div>\n<\/div>\n<div class=\"psafe-hero-image\"><img decoding=\"async\" src=\"https:\/\/www.psafe.com\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-8-de-jul.-de-2026-15_27_16.png\" alt=\"Celular com prote\u00e7\u00e3o dfndr Security\"><\/div>\n<\/div>\n<\/section>\n\n\n\n<style>\n.psafe-topics-section {\n  max-width: 1180px;\n  margin: 0 auto;\n  padding: 10px 24px 45px;\n  font-family: inherit;\n}\n\n.psafe-topics-title {\n  font-size: 22px;\n  line-height: 1.25;\n  margin: 0 0 18px;\n  color: #21152f;\n  font-weight: 800;\n  letter-spacing: -0.3px;\n}\n\n.psafe-topics-grid {\n  display: grid;\n  grid-template-columns: repeat(8, 1fr);\n  gap: 12px;\n}\n\n.psafe-topic-card {\n  min-height: 150px;\n  padding: 22px 12px 18px;\n  border: 1px solid #ece7f7;\n  border-radius: 12px;\n  background: #ffffff;\n  text-align: center;\n  text-decoration: none;\n  color: #21152f;\n  box-shadow: 0 8px 22px rgba(42, 22, 80, 0.035);\n  transition: all 0.22s ease;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: flex-start;\n}\n\n.psafe-topic-card:hover {\n  transform: translateY(-4px);\n  border-color: #d8c8ff;\n  box-shadow: 0 16px 34px rgba(75, 19, 209, 0.10);\n}\n\n.psafe-topic-icon {\n  width: 38px;\n  height: 38px;\n  margin-bottom: 12px;\n  color: #4b13d1;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.psafe-topic-icon svg {\n  width: 34px;\n  height: 34px;\n  stroke: #4b13d1;\n  fill: none;\n  stroke-width: 2.3;\n  stroke-linecap: round;\n  stroke-linejoin: round;\n}\n\n.psafe-topic-icon .filled {\n  fill: #4b13d1;\n  stroke: none;\n}\n\n.psafe-topic-card h3 {\n  font-size: 13.5px;\n  line-height: 1.2;\n  margin: 0 0 8px;\n  color: #21152f;\n  font-weight: 800;\n}\n\n.psafe-topic-card p {\n  font-size: 12px;\n  line-height: 1.35;\n  margin: 0;\n  color: #4d4557;\n  max-width: 118px;\n}\n\n.psafe-topic-arrow {\n  margin-top: auto;\n  padding-top: 12px;\n  font-size: 18px;\n  line-height: 1;\n  color: #4b13d1;\n  font-weight: 800;\n  transition: transform 0.22s ease;\n}\n\n.psafe-topic-card:hover .psafe-topic-arrow {\n  transform: translateX(3px);\n}\n\n@media (max-width: 1100px) {\n  .psafe-topics-grid {\n    grid-template-columns: repeat(4, 1fr);\n  }\n\n  .psafe-topic-card {\n    min-height: 155px;\n  }\n}\n\n@media (max-width: 680px) {\n  .psafe-topics-section {\n    padding: 5px 20px 38px;\n  }\n\n  .psafe-topics-grid {\n    grid-template-columns: repeat(2, 1fr);\n    gap: 12px;\n  }\n\n  .psafe-topic-card {\n    min-height: 155px;\n  }\n}\n<\/style>\n\n<section class=\"psafe-topics-section\">\n  <h2 class=\"psafe-topics-title\">Explore por assunto<\/h2>\n\n  <div class=\"psafe-topics-grid\">\n\n    <a class=\"psafe-topic-card\" href=\"\/pt-br\/seguranca-digital\/golpes\/\">\n      <div class=\"psafe-topic-icon\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 24 24\">\n          <path d=\"M4 11h16\"><\/path>\n          <path d=\"M6 11c.4-4 2.8-6 6-6s5.6 2 6 6\"><\/path>\n          <path d=\"M7 11v4c0 2.8 2 5 5 5s5-2.2 5-5v-4\"><\/path>\n          <path d=\"M9 15h2\"><\/path>\n          <path d=\"M13 15h2\"><\/path>\n          <path d=\"M10 18c1.2.8 2.8.8 4 0\"><\/path>\n        <\/svg>\n      <\/div>\n      <h3>Golpes Digitais<\/h3>\n      <p>Saiba como identificar e evitar golpes.<\/p>\n      <span class=\"psafe-topic-arrow\">\u2192<\/span>\n    <\/a>\n\n    <a class=\"psafe-topic-card\" href=\"\/pt-br\/seguranca-digital\/links-suspeitos\/\">\n      <div class=\"psafe-topic-icon\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 24 24\">\n          <path d=\"M10 13a5 5 0 0 0 7.1 0l2-2a5 5 0 0 0-7.1-7.1l-1.1 1.1\"><\/path>\n          <path d=\"M14 11a5 5 0 0 0-7.1 0l-2 2a5 5 0 0 0 7.1 7.1l1.1-1.1\"><\/path>\n        <\/svg>\n      <\/div>\n      <h3>Links Suspeitos<\/h3>\n      <p>Aprenda a reconhecer links perigosos.<\/p>\n      <span class=\"psafe-topic-arrow\">\u2192<\/span>\n    <\/a>\n\n    <a class=\"psafe-topic-card\" href=\"\/pt-br\/seguranca-digital\/wi-fi-publico\/\">\n      <div class=\"psafe-topic-icon\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 24 24\">\n          <path d=\"M5 10.5a10 10 0 0 1 14 0\"><\/path>\n          <path d=\"M8.5 14a5 5 0 0 1 7 0\"><\/path>\n          <path d=\"M12 18h.01\"><\/path>\n          <circle cx=\"12\" cy=\"18\" r=\"1.2\" class=\"filled\"><\/circle>\n        <\/svg>\n      <\/div>\n      <h3>Wi-Fi P\u00fablico<\/h3>\n      <p>Use redes Wi-Fi com mais seguran\u00e7a.<\/p>\n      <span class=\"psafe-topic-arrow\">\u2192<\/span>\n    <\/a>\n\n    <a class=\"psafe-topic-card\" href=\"\/pt-br\/seguranca-digital\/antivirus-android\/\">\n      <div class=\"psafe-topic-icon\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 24 24\">\n          <path d=\"M12 3l7 3v5c0 5-3 8.5-7 10-4-1.5-7-5-7-10V6l7-3z\"><\/path>\n          <path d=\"M12 8v6\"><\/path>\n          <path d=\"M9.5 11h5\"><\/path>\n        <\/svg>\n      <\/div>\n      <h3>Antiv\u00edrus Android<\/h3>\n      <p>Proteja seu celular contra v\u00edrus e malwares.<\/p>\n      <span class=\"psafe-topic-arrow\">\u2192<\/span>\n    <\/a>\n\n    <a class=\"psafe-topic-card\" href=\"\/pt-br\/seguranca-digital\/protecao-pix\/\">\n      <div class=\"psafe-topic-icon\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 24 24\">\n          <rect x=\"4\" y=\"6\" width=\"16\" height=\"12\" rx=\"2\"><\/rect>\n          <path d=\"M4 10h16\"><\/path>\n          <path d=\"M8 15h4\"><\/path>\n        <\/svg>\n      <\/div>\n      <h3>Prote\u00e7\u00e3o Pix<\/h3>\n      <p>Dicas para manter suas transa\u00e7\u00f5es seguras.<\/p>\n      <span class=\"psafe-topic-arrow\">\u2192<\/span>\n    <\/a>\n\n    <a class=\"psafe-topic-card\" href=\"\/pt-br\/seguranca-digital\/privacidade\/\">\n      <div class=\"psafe-topic-icon\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 24 24\">\n          <rect x=\"6\" y=\"10\" width=\"12\" height=\"10\" rx=\"2\"><\/rect>\n          <path d=\"M8.5 10V7.5a3.5 3.5 0 0 1 7 0V10\"><\/path>\n          <path d=\"M12 14v2\"><\/path>\n        <\/svg>\n      <\/div>\n      <h3>Privacidade<\/h3>\n      <p>Proteja seus dados e sua privacidade.<\/p>\n      <span class=\"psafe-topic-arrow\">\u2192<\/span>\n    <\/a>\n\n    <a class=\"psafe-topic-card\" href=\"\/pt-br\/seguranca-digital\/vazamento-de-dados\/\">\n      <div class=\"psafe-topic-icon\" aria-hidden=\"true\">\n        <svg viewBox=\"0 0 24 24\">\n          <ellipse cx=\"12\" cy=\"6\" rx=\"7\" ry=\"3\"><\/ellipse>\n          <path d=\"M5 6v6c0 1.7 3.1 3 7 3s7-1.3 7-3V6\"><\/path>\n          <path d=\"M5 12v6c0 1.7 3.1 3 7 3s7-1.3 7-3v-6\"><\/path>\n        <\/svg>\n      <\/div>\n      <h3>Vazamento de Dados<\/h3>\n      <p>Veja se seus dados foram expostos.<\/p>\n      <span class=\"psafe-topic-arrow\">\u2192<\/span>\n    <\/a>\n\n<a class=\"psafe-topic-card\" href=\"\/pt-br\/seguranca-digital\/glossario\/\">\n  <div class=\"psafe-topic-icon\" aria-hidden=\"true\">\n    <svg viewBox=\"0 0 24 24\">\n      <path d=\"M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z\"><\/path>\n      <path d=\"M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z\"><\/path>\n    <\/svg>\n  <\/div>\n\n  <h3>Gloss\u00e1rio<\/h3>\n  <p>Entenda os principais termos de seguran\u00e7a digital.<\/p>\n  <span class=\"psafe-topic-arrow\">\u2192<\/span>\n<\/a>\n\n  <\/div>\n<\/section>\n\n\n\n<style>\n.psafe-guides-section {\n  max-width: 1180px;\n  margin: 0 auto;\n  padding: 8px 24px 45px;\n  font-family: inherit;\n  overflow: hidden;\n}\n\n.psafe-guides-header {\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 16px;\n  margin-bottom: 18px;\n}\n\n.psafe-guides-title {\n  font-size: 22px;\n  line-height: 1.25;\n  margin: 0;\n  color: #21152f;\n  font-weight: 800;\n  letter-spacing: -0.3px;\n}\n\n\n\/* =========================\n   CARROSSEL\n========================= *\/\n\n.psafe-guides-carousel {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n  padding: 5px 0 14px;\n}\n\n.psafe-guides-track {\n  display: flex;\n  width: max-content;\n  will-change: transform;\n  animation: psafeGuidesScroll 50s linear infinite;\n}\n\n.psafe-guides-group {\n  display: flex;\n  flex-shrink: 0;\n  gap: 20px;\n  padding-right: 20px;\n}\n\n@keyframes psafeGuidesScroll {\n  from {\n    transform: translateX(0);\n  }\n\n  to {\n    transform: translateX(-50%);\n  }\n}\n\n\/* Pausa quando o mouse fica sobre o carrossel *\/\n.psafe-guides-carousel:hover .psafe-guides-track,\n.psafe-guides-carousel:focus-within .psafe-guides-track {\n  animation-play-state: paused;\n}\n\n\n\/* =========================\n   CARDS\n========================= *\/\n\n.psafe-guide-card {\n  width: 330px;\n  flex: 0 0 330px;\n  text-decoration: none;\n  color: #21152f;\n  display: block;\n  transition:\n    transform 0.22s ease,\n    opacity 0.22s ease;\n}\n\n.psafe-guide-card:hover {\n  transform: translateY(-4px);\n}\n\n.psafe-guide-image-placeholder {\n  width: 100%;\n  aspect-ratio: 16 \/ 9;\n  border-radius: 14px;\n  background: #f6f2ff;\n  border: 1px solid rgba(75, 19, 209, 0.14);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  color: #4b13d1;\n  font-size: 13px;\n  font-weight: 700;\n  margin-bottom: 12px;\n  overflow: hidden;\n  transition:\n    border-color 0.22s ease,\n    box-shadow 0.22s ease;\n}\n\n.psafe-guide-image-placeholder img {\n  width: 100%;\n  height: 100%;\n  display: block;\n\n  \/* Mostra a imagem inteira sem cortar *\/\n  object-fit: contain;\n  object-position: center;\n\n  background: #f6f2ff;\n}\n\n.psafe-guide-card:hover .psafe-guide-image-placeholder {\n  border-color: rgba(75, 19, 209, 0.45);\n  box-shadow: 0 8px 22px rgba(75, 19, 209, 0.12);\n}\n\n.psafe-guide-card h3 {\n  font-size: 17px;\n  line-height: 1.2;\n  margin: 0 0 7px;\n  color: #21152f;\n  font-weight: 800;\n  letter-spacing: -0.2px;\n}\n\n.psafe-guide-card p {\n  font-size: 13.5px;\n  line-height: 1.45;\n  margin: 0;\n  color: #5d5367;\n}\n\n\n\/* =========================\n   RODAP\u00c9\n========================= *\/\n\n.psafe-guides-footer {\n  text-align: center;\n  margin-top: 22px;\n}\n\n.psafe-guides-link {\n  color: #4b13d1;\n  font-size: 14px;\n  font-weight: 800;\n  text-decoration: underline;\n  text-underline-offset: 3px;\n}\n\n\n\/* =========================\n   RESPONSIVO\n========================= *\/\n\n@media (max-width: 1100px) {\n  .psafe-guide-card {\n    width: 300px;\n    flex-basis: 300px;\n  }\n}\n\n@media (max-width: 680px) {\n  .psafe-guides-section {\n    padding: 5px 20px 38px;\n  }\n\n  .psafe-guides-group {\n    gap: 14px;\n    padding-right: 14px;\n  }\n\n  .psafe-guide-card {\n    width: 82vw;\n    max-width: 320px;\n    flex-basis: 82vw;\n  }\n\n  .psafe-guide-card h3 {\n    font-size: 16px;\n  }\n\n  .psafe-guide-card p {\n    font-size: 13px;\n  }\n\n  \/* Um pouco mais lento no celular *\/\n  .psafe-guides-track {\n    animation-duration: 50s;\n  }\n}\n\n\n\/* Acessibilidade para quem desativa anima\u00e7\u00f5es *\/\n@media (prefers-reduced-motion: reduce) {\n  .psafe-guides-carousel {\n    overflow-x: auto;\n  }\n\n  .psafe-guides-track {\n    animation: none;\n  }\n\n  .psafe-guides-group[aria-hidden=\"true\"] {\n    display: none;\n  }\n}\n<\/style>\n\n\n<section class=\"psafe-guides-section\" id=\"guias\">\n\n  <div class=\"psafe-guides-header\">\n    <h2 class=\"psafe-guides-title\">Guias mais acessados<\/h2>\n  <\/div>\n\n\n  <div class=\"psafe-guides-carousel\" aria-label=\"Carrossel de guias mais acessados\">\n\n    <div class=\"psafe-guides-track\">\n\n      <div class=\"psafe-guides-group\">\n\n\n        <!-- GUIA 1 -->\n        <a class=\"psafe-guide-card\" href=\"\/pt-br\/seguranca-digital\/links-suspeitos\/como-saber-se-um-link-e-seguro\/\">\n          <div class=\"psafe-guide-image-placeholder\">\n            <img decoding=\"async\" src=\"https:\/\/www.psafe.com\/wp-content\/uploads\/2026\/07\/Banner-Img-1.png\" alt=\"Como saber se um link \u00e9 seguro\" loading=\"lazy\">\n          <\/div>\n\n          <h3>Como saber se um link \u00e9 seguro?<\/h3>\n\n          <p>\n            Veja sinais de risco antes de clicar em uma URL suspeita.\n          <\/p>\n        <\/a>\n\n\n        <!-- GUIA 2 -->\n        <a class=\"psafe-guide-card\" href=\"\/pt-br\/seguranca-digital\/links-suspeitos\/como-identificar-site-falso\/\">\n<div class=\"psafe-guide-image-placeholder\">\n  <img decoding=\"async\" src=\"https:\/\/www.psafe.com\/wp-content\/uploads\/2026\/07\/Banners-Blog-3.png\" alt=\"Como identificar um site falso ?\" loading=\"lazy\">\n<\/div>\n\n          <h3>Como identificar um site falso?<\/h3>\n\n          <p>\n            Aprenda a reconhecer p\u00e1ginas falsas antes de inserir seus dados.\n          <\/p>\n        <\/a>\n\n\n        <!-- GUIA 3 -->\n        <a class=\"psafe-guide-card\" href=\"\/pt-br\/seguranca-digital\/antivirus-android\/como-saber-se-o-celular-tem-virus\/\">\n<div class=\"psafe-guide-image-placeholder\">\n\n  <img decoding=\"async\" src=\"https:\/\/www.psafe.com\/wp-content\/uploads\/2026\/07\/Como-saber-se-meu-celular-tem-virus-3.png\" alt=\"Como saber se meu celular tem v\u00edrus?\" loading=\"lazy\">\n<\/div>\n\n          <h3>Como saber se meu celular tem v\u00edrus?<\/h3>\n\n          <p>\n            Conhe\u00e7a sinais de apps suspeitos, malware e comportamento estranho.\n          <\/p>\n        <\/a>\n\n\n        <!-- GUIA 4 -->\n        <a class=\"psafe-guide-card\" href=\"\/pt-br\/seguranca-digital\/protecao-pix\/como-proteger-o-pix-no-celular\/\">\n<div class=\"psafe-guide-image-placeholder\">\n\n  <img decoding=\"async\" src=\"https:\/\/www.psafe.com\/wp-content\/uploads\/2026\/07\/Como-proteger-o-Pix-no-celular.png\" alt=\"Como proteger o Pix no celular?\" loading=\"lazy\">\n<\/div>\n\n          <h3>Como proteger o Pix no celular?<\/h3>\n\n          <p>\n            Veja cuidados para proteger apps banc\u00e1rios e transa\u00e7\u00f5es no Android.\n          <\/p>\n        <\/a>\n\n\n        <!-- GUIA 5 -->\n        <a class=\"psafe-guide-card\" href=\"\/pt-br\/seguranca-digital\/wi-fi-publico\/wi-fi-publico-e-seguro\/\">\n<div class=\"psafe-guide-image-placeholder\">\n\n  <img decoding=\"async\" src=\"https:\/\/www.psafe.com\/wp-content\/uploads\/2026\/07\/Wi-Fi-publico-e-seguro.png\" alt=\"Wi-Fi p\u00fablico \u00e9 seguro?\" loading=\"lazy\">\n<\/div>\n          <h3>Wi-Fi p\u00fablico \u00e9 seguro?<\/h3>\n\n          <p>\n            Entenda os riscos de redes abertas e como navegar com mais seguran\u00e7a.\n          <\/p>\n        <\/a>\n\n\n        <!-- GUIA 6 -->\n        <a class=\"psafe-guide-card\" href=\"\/pt-br\/seguranca-digital\/privacidade-no-android\/como-bloquear-apps-com-senha\/\">\n<div class=\"psafe-guide-image-placeholder\">\n\n  <img decoding=\"async\" src=\"https:\/\/www.psafe.com\/wp-content\/uploads\/2026\/07\/Como-proteger-seus-apps-com-senha.png\" alt=\"Como proteger seus apps com senha?\" loading=\"lazy\">\n<\/div>\n\n          <h3>Como proteger seus apps com senha?<\/h3>\n\n          <p>\n            Proteja WhatsApp, banco, galeria, redes sociais e outros apps importantes.\n          <\/p>\n        <\/a>\n\n\n      <\/div>\n\n    <\/div>\n\n  <\/div>\n\n\n  <div class=\"psafe-guides-footer\">\n    <a class=\"psafe-guides-link\" href=\"\/pt-br\/seguranca-digital\/\">\n      Ver todos os guias \u2192\n    <\/a>\n  <\/div>\n\n<\/section>\n\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n  const carousels = document.querySelectorAll(\".psafe-guides-carousel\");\n\n  carousels.forEach(function (carousel) {\n    if (carousel.dataset.carouselReady === \"true\") {\n      return;\n    }\n\n    const track = carousel.querySelector(\".psafe-guides-track\");\n    const originalGroup = carousel.querySelector(\".psafe-guides-group\");\n\n    if (!track || !originalGroup) {\n      return;\n    }\n\n    const clonedGroup = originalGroup.cloneNode(true);\n\n    clonedGroup.setAttribute(\"aria-hidden\", \"true\");\n\n    clonedGroup.querySelectorAll(\"a\").forEach(function (link) {\n      link.setAttribute(\"tabindex\", \"-1\");\n    });\n\n    track.appendChild(clonedGroup);\n\n    carousel.dataset.carouselReady = \"true\";\n  });\n});\n<\/script>\n\n\n\n<!-- =====================================================\n     CARROSSEL DE NOT\u00cdCIAS RECENTES \u2014 PSAFE\n     Cole tudo em um bloco \"HTML personalizado\"\n====================================================== -->\n\n<style>\n    #psafe-latest-news,\n    #psafe-latest-news * {\n        box-sizing: border-box;\n    }\n\n    #psafe-latest-news {\n        --psafe-purple: #672d91;\n        --psafe-purple-dark: #482064;\n        --psafe-purple-light: #f5eff9;\n        --psafe-text: #251b2b;\n        --psafe-muted: #6f6873;\n        --psafe-border: rgba(103, 45, 145, 0.14);\n        --psafe-gap: 18px;\n        --psafe-card-width: 280px;\n\n        position: relative;\n        width: 100%;\n        padding: 64px 20px;\n        overflow: hidden;\n        background:\n            radial-gradient(\n                circle at 10% 20%,\n                rgba(103, 45, 145, 0.08),\n                transparent 28%\n            ),\n            linear-gradient(\n                180deg,\n                #ffffff 0%,\n                #fbf9fc 100%\n            );\n\n        font-family: inherit;\n    }\n\n    #psafe-latest-news .psafe-news-container {\n        width: 100%;\n        max-width: 1080px;\n        margin: 0 auto;\n    }\n\n    #psafe-latest-news .psafe-news-heading {\n        max-width: 760px;\n        margin: 0 auto 34px;\n        text-align: center;\n    }\n\n    #psafe-latest-news .psafe-news-eyebrow {\n        display: inline-flex;\n        align-items: center;\n        gap: 8px;\n        margin-bottom: 13px;\n        padding: 8px 14px;\n\n        color: var(--psafe-purple);\n        background: var(--psafe-purple-light);\n        border: 1px solid rgba(103, 45, 145, 0.12);\n        border-radius: 999px;\n\n        font-size: 13px;\n        font-weight: 700;\n        line-height: 1;\n        letter-spacing: 0.04em;\n        text-transform: uppercase;\n    }\n\n    #psafe-latest-news .psafe-news-eyebrow::before {\n        width: 7px;\n        height: 7px;\n        background: var(--psafe-purple);\n        border-radius: 50%;\n        content: \"\";\n    }\n\n    #psafe-latest-news .psafe-news-title {\n        margin: 0 0 14px;\n        color: var(--psafe-text);\n        font-size: clamp(32px, 4.2vw, 48px);\n        font-weight: 750;\n        line-height: 1.08;\n        letter-spacing: -0.035em;\n    }\n\n    #psafe-latest-news .psafe-news-description {\n        max-width: 650px;\n        margin: 0 auto;\n        color: var(--psafe-muted);\n        font-size: 17px;\n        line-height: 1.65;\n    }\n\n    #psafe-latest-news .psafe-carousel-wrapper {\n        position: relative;\n        width: 100%;\n        padding-top: 50px;\n    }\n\n    #psafe-latest-news .psafe-news-viewport {\n        position: relative;\n        width: 100%;\n        padding: 8px 2px 30px;\n\n        overflow-x: auto;\n        overflow-y: hidden;\n\n        scrollbar-width: none;\n        -ms-overflow-style: none;\n        overscroll-behavior-x: contain;\n\n        \/* Permite arrastar o carrossel e rolar a p\u00e1gina verticalmente *\/\n        touch-action: pan-x pan-y pinch-zoom;\n    }\n\n    #psafe-latest-news .psafe-news-viewport::-webkit-scrollbar {\n        display: none;\n    }\n\n    #psafe-latest-news .psafe-news-track {\n        display: flex;\n        align-items: stretch;\n        gap: var(--psafe-gap);\n        width: max-content;\n        will-change: transform;\n    }\n\n    #psafe-latest-news .psafe-news-track.is-loading {\n        display: block;\n        width: 100%;\n        min-width: 100%;\n        min-height: 340px;\n    }\n\n    #psafe-latest-news .psafe-news-track.is-loading\n    .psafe-news-status {\n        position: absolute;\n        top: 0;\n        right: 0;\n        bottom: 0;\n        left: 0;\n        width: 100%;\n        min-width: 100%;\n    }\n\n    #psafe-latest-news .psafe-news-group {\n        display: flex;\n        align-items: stretch;\n        gap: var(--psafe-gap);\n        flex: none;\n    }\n\n    #psafe-latest-news .psafe-news-card {\n        display: flex;\n        flex: 0 0 var(--psafe-card-width);\n        flex-direction: column;\n        width: var(--psafe-card-width);\n        min-width: 0;\n\n        overflow: hidden;\n        background: #ffffff;\n        border: 1px solid var(--psafe-border);\n        border-radius: 16px;\n        box-shadow:\n            0 8px 24px rgba(39, 21, 50, 0.06),\n            0 2px 6px rgba(39, 21, 50, 0.03);\n\n        transform: translateY(0);\n        transition:\n            transform 0.3s ease,\n            box-shadow 0.3s ease,\n            border-color 0.3s ease;\n\n        cursor: pointer;\n    }\n\n    #psafe-latest-news .psafe-news-card:hover {\n        border-color: rgba(103, 45, 145, 0.3);\n        box-shadow:\n            0 18px 42px rgba(60, 25, 79, 0.13),\n            0 5px 12px rgba(60, 25, 79, 0.06);\n\n        transform: translateY(-6px);\n    }\n\n    #psafe-latest-news .psafe-news-card:focus-visible {\n        outline: 3px solid rgba(103, 45, 145, 0.28);\n        outline-offset: 4px;\n    }\n\n    #psafe-latest-news .psafe-news-image-link {\n        position: relative;\n        display: block;\n        width: 100%;\n        aspect-ratio: 16 \/ 9;\n        overflow: hidden;\n        background:\n            linear-gradient(\n                135deg,\n                #eee5f3,\n                #d9c4e5\n            );\n    }\n\n    #psafe-latest-news .psafe-news-image {\n        display: block;\n        width: 100%;\n        height: 100%;\n        object-fit: cover;\n        transition: transform 0.5s ease;\n    }\n\n    #psafe-latest-news .psafe-news-card:hover\n    .psafe-news-image {\n        transform: scale(1.045);\n    }\n\n    #psafe-latest-news .psafe-news-image-placeholder {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        width: 100%;\n        height: 100%;\n\n        color: rgba(103, 45, 145, 0.7);\n        background:\n            radial-gradient(\n                circle at 25% 30%,\n                rgba(255, 255, 255, 0.65),\n                transparent 27%\n            ),\n            linear-gradient(\n                135deg,\n                #f1e9f5,\n                #d8c1e4\n            );\n    }\n\n    #psafe-latest-news .psafe-news-image-placeholder svg {\n        width: 50px;\n        height: 50px;\n    }\n\n    #psafe-latest-news .psafe-news-content {\n        display: flex;\n        flex: 1;\n        flex-direction: column;\n        padding: 16px 16px 18px;\n    }\n\n    #psafe-latest-news .psafe-news-meta {\n        display: flex;\n        align-items: center;\n        justify-content: flex-start;\n        gap: 10px;\n        margin-bottom: 10px;\n    }\n\n    #psafe-latest-news .psafe-news-category {\n        display: inline-flex;\n        max-width: 60%;\n        padding: 6px 10px;\n\n        overflow: hidden;\n        color: var(--psafe-purple);\n        background: var(--psafe-purple-light);\n        border-radius: 999px;\n\n        font-size: 11px;\n        font-weight: 750;\n        line-height: 1;\n        letter-spacing: 0.025em;\n        text-overflow: ellipsis;\n        text-transform: uppercase;\n        white-space: nowrap;\n    }\n\n    #psafe-latest-news .psafe-news-date {\n        flex: none;\n        color: #8b838f;\n        font-size: 12px;\n        font-weight: 500;\n        white-space: nowrap;\n    }\n\n    #psafe-latest-news .psafe-news-card-title {\n        margin: 0 0 9px;\n        font-size: 17px;\n        font-weight: 720;\n        line-height: 1.32;\n        letter-spacing: -0.015em;\n    }\n\n    #psafe-latest-news .psafe-news-card-title a {\n        display: -webkit-box;\n        overflow: hidden;\n        color: var(--psafe-text);\n        text-decoration: none;\n        -webkit-box-orient: vertical;\n        -webkit-line-clamp: 3;\n    }\n\n    #psafe-latest-news .psafe-news-card-title a:hover {\n        color: var(--psafe-purple);\n    }\n\n    #psafe-latest-news .psafe-news-excerpt {\n        display: -webkit-box;\n        margin: 0 0 15px;\n        overflow: hidden;\n        color: var(--psafe-muted);\n        font-size: 13px;\n        line-height: 1.5;\n        -webkit-box-orient: vertical;\n        -webkit-line-clamp: 2;\n    }\n\n    #psafe-latest-news .psafe-news-read-more {\n        display: inline-flex;\n        align-items: center;\n        gap: 7px;\n        width: fit-content;\n        margin-top: auto;\n\n        color: var(--psafe-purple);\n        font-size: 13px;\n        font-weight: 700;\n        text-decoration: none;\n    }\n\n    #psafe-latest-news .psafe-news-read-more svg {\n        width: 17px;\n        height: 17px;\n        transition: transform 0.25s ease;\n    }\n\n    #psafe-latest-news .psafe-news-read-more:hover svg {\n        transform: translateX(4px);\n    }\n\n    #psafe-latest-news .psafe-carousel-arrow {\n        position: absolute;\n        z-index: 10;\n        top: 0;\n\n        display: flex;\n        align-items: center;\n        justify-content: center;\n\n        width: 46px;\n        height: 46px;\n        padding: 0;\n\n        color: #ffffff;\n        background: var(--psafe-purple);\n        border: 0;\n        border-radius: 50%;\n        box-shadow: 0 10px 25px rgba(72, 32, 100, 0.25);\n\n        cursor: pointer;\n        transform: none;\n        transition:\n            background 0.2s ease,\n            transform 0.2s ease,\n            box-shadow 0.2s ease;\n    }\n\n    #psafe-latest-news .psafe-carousel-arrow:hover {\n        background: var(--psafe-purple-dark);\n        box-shadow: 0 13px 29px rgba(72, 32, 100, 0.34);\n        transform: scale(1.06);\n    }\n\n    #psafe-latest-news .psafe-carousel-arrow:focus-visible {\n        outline: 3px solid rgba(103, 45, 145, 0.28);\n        outline-offset: 4px;\n    }\n\n    #psafe-latest-news .psafe-carousel-arrow svg {\n        width: 23px;\n        height: 23px;\n    }\n\n    #psafe-latest-news .psafe-carousel-prev {\n        right: 56px;\n        left: auto;\n    }\n\n    #psafe-latest-news .psafe-carousel-next {\n        right: 4px;\n    }\n\n    #psafe-latest-news .psafe-news-footer {\n        display: flex;\n        justify-content: center;\n        margin-top: 14px;\n    }\n\n    #psafe-latest-news .psafe-news-all-link {\n        display: inline-flex;\n        align-items: center;\n        justify-content: center;\n        gap: 9px;\n\n        min-height: 50px;\n        padding: 13px 25px;\n\n        color: #ffffff;\n        background: var(--psafe-purple);\n        border: 2px solid var(--psafe-purple);\n        border-radius: 999px;\n        box-shadow: 0 9px 22px rgba(103, 45, 145, 0.19);\n\n        font-size: 15px;\n        font-weight: 700;\n        line-height: 1;\n        text-decoration: none;\n\n        transition:\n            background 0.25s ease,\n            border-color 0.25s ease,\n            transform 0.25s ease,\n            box-shadow 0.25s ease;\n    }\n\n    #psafe-latest-news .psafe-news-all-link:hover {\n        color: #ffffff;\n        background: var(--psafe-purple-dark);\n        border-color: var(--psafe-purple-dark);\n        box-shadow: 0 13px 28px rgba(103, 45, 145, 0.28);\n        transform: translateY(-2px);\n    }\n\n    #psafe-latest-news .psafe-news-status {\n        display: flex;\n        align-items: center;\n        justify-content: center;\n        min-height: 340px;\n        width: 100%;\n        flex: 1 0 100%;\n        color: var(--psafe-muted);\n        text-align: center;\n    }\n\n    #psafe-latest-news .psafe-loading-content {\n        display: flex;\n        align-items: center;\n        flex-direction: column;\n        gap: 14px;\n    }\n\n    #psafe-latest-news .psafe-loading-spinner {\n        width: 38px;\n        height: 38px;\n        border: 4px solid rgba(103, 45, 145, 0.14);\n        border-top-color: var(--psafe-purple);\n        border-radius: 50%;\n        animation: psafeSpinner 0.9s linear infinite;\n    }\n\n    #psafe-latest-news .psafe-news-error {\n        display: none;\n        padding: 35px 20px;\n        color: var(--psafe-muted);\n        background: #ffffff;\n        border: 1px solid var(--psafe-border);\n        border-radius: 18px;\n        text-align: center;\n    }\n\n    #psafe-latest-news .psafe-news-error.is-visible {\n        display: block;\n    }\n\n    #psafe-latest-news .psafe-news-error a {\n        color: var(--psafe-purple);\n        font-weight: 700;\n    }\n\n    @keyframes psafeSpinner {\n        to {\n            transform: rotate(360deg);\n        }\n    }\n\n    @media (max-width: 1280px) {\n        #psafe-latest-news .psafe-carousel-prev {\n            right: 56px;\n            left: auto;\n        }\n\n        #psafe-latest-news .psafe-carousel-next {\n            right: 4px;\n        }\n    }\n\n    @media (max-width: 768px) {\n        #psafe-latest-news {\n            --psafe-gap: 14px;\n            padding: 62px 16px;\n        }\n\n        #psafe-latest-news .psafe-news-heading {\n            margin-bottom: 32px;\n        }\n\n        #psafe-latest-news .psafe-news-description {\n            font-size: 15px;\n        }\n\n        #psafe-latest-news .psafe-carousel-arrow {\n            top: 3px;\n            width: 39px;\n            height: 39px;\n        }\n\n        #psafe-latest-news .psafe-carousel-prev {\n            right: 50px;\n            left: auto;\n        }\n\n        #psafe-latest-news .psafe-carousel-next {\n            right: 4px;\n        }\n\n        #psafe-latest-news .psafe-news-content {\n            padding: 16px 15px 18px;\n        }\n    }\n\n    @media (prefers-reduced-motion: reduce) {\n        #psafe-latest-news *,\n        #psafe-latest-news *::before,\n        #psafe-latest-news *::after {\n            scroll-behavior: auto !important;\n            animation-duration: 0.01ms !important;\n            animation-iteration-count: 1 !important;\n            transition-duration: 0.01ms !important;\n        }\n    }\n<\/style>\n\n<section id=\"psafe-latest-news\" aria-labelledby=\"psafe-latest-news-title\">\n    <div class=\"psafe-news-container\">\n\n        <header class=\"psafe-news-heading\">\n            <span class=\"psafe-news-eyebrow\">\n                Conte\u00fado atualizado\n            <\/span>\n\n            <h2 id=\"psafe-latest-news-title\" class=\"psafe-news-title\">\n                Not\u00edcias mais recentes\n            <\/h2>\n\n            <p class=\"psafe-news-description\">\n                Informa\u00e7\u00e3o pr\u00e1tica para proteger seu celular,\n                seus dados e sua vida digital.\n            <\/p>\n        <\/header>\n\n        <div class=\"psafe-carousel-wrapper\">\n\n            <button class=\"psafe-carousel-arrow psafe-carousel-prev\" type=\"button\" aria-label=\"Ver not\u00edcia anterior\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n                    <path d=\"M15 18L9 12L15 6\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                <\/svg>\n            <\/button>\n\n            <div class=\"psafe-news-viewport\" tabindex=\"0\" aria-label=\"Carrossel de not\u00edcias recentes\">\n                <div class=\"psafe-news-track is-loading\">\n                    <div class=\"psafe-news-status\" role=\"status\" aria-live=\"polite\">\n                        <div class=\"psafe-loading-content\">\n                            <span class=\"psafe-loading-spinner\" aria-hidden=\"true\"><\/span>\n\n                            <span>\n                                Carregando not\u00edcias recentes&#8230;\n                            <\/span>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n\n            <button class=\"psafe-carousel-arrow psafe-carousel-next\" type=\"button\" aria-label=\"Ver pr\u00f3xima not\u00edcia\">\n                <svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n                    <path d=\"M9 6L15 12L9 18\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                <\/svg>\n            <\/button>\n\n        <\/div>\n\n        <div class=\"psafe-news-error\" role=\"status\">\n            N\u00e3o foi poss\u00edvel carregar as not\u00edcias agora.\n            <a href=\"https:\/\/www.psafe.com\/blog\/\">\n                Acesse diretamente o blog da PSafe.\n            <\/a>\n        <\/div>\n\n        <div class=\"psafe-news-footer\">\n            <a class=\"psafe-news-all-link\" href=\"https:\/\/www.psafe.com\/blog\/\">\n                Ver todas as not\u00edcias\n\n                <svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">\n                    <path d=\"M5 12H19M13 6L19 12L13 18\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n                <\/svg>\n            <\/a>\n        <\/div>\n\n    <\/div>\n<\/section>\n\n<script>\n(function () {\n    \"use strict\";\n\n    const root = document.getElementById(\"psafe-latest-news\");\n\n    if (!root || root.dataset.carouselInitialized === \"true\") {\n        return;\n    }\n\n    root.dataset.carouselInitialized = \"true\";\n\n    const viewport = root.querySelector(\".psafe-news-viewport\");\n    const track = root.querySelector(\".psafe-news-track\");\n    const previousButton = root.querySelector(\n        \".psafe-carousel-prev\"\n    );\n    const nextButton = root.querySelector(\n        \".psafe-carousel-next\"\n    );\n    const errorBox = root.querySelector(\".psafe-news-error\");\n\n    \/*\n     * VELOCIDADE DO CARROSSEL\n     *\n     * 14 = movimento bem lento\n     * 20 = movimento moderado\n     * 30 = movimento mais r\u00e1pido\n     *\/\n    const VELOCIDADE = 14;\n\n    \/* 9 not\u00edcias = 3 p\u00e1ginas completas de 3 cards no desktop. *\/\n    const QUANTIDADE_DE_NOTICIAS = 9;\n\n    const BLOG_URL = \"https:\/\/www.psafe.com\/blog\/\";\n    const FEED_URL = BLOG_URL + \"feed\/\";\n    const SEPARADOR_QUERY = String.fromCharCode(38);\n\n    \/*\n     * Endpoint REST do WordPress do blog.\n     * orderby=date + order=desc obriga o retorno do post mais novo\n     * para o mais antigo. O par\u00e2metro final evita cache desatualizado.\n     *\/\n    const API_ENDPOINTS = [\n        BLOG_URL +\n            \"?rest_route=\/wp\/v2\/posts\" +\n            SEPARADOR_QUERY +\n            \"per_page=\" + QUANTIDADE_DE_NOTICIAS +\n            SEPARADOR_QUERY +\n            \"orderby=date\" +\n            SEPARADOR_QUERY +\n            \"order=desc\" +\n            SEPARADOR_QUERY +\n            \"status=publish\" +\n            SEPARADOR_QUERY +\n            \"_embed=1\"\n    ];\n\n    let larguraDoCiclo = 0;\n    let ultimoTempo = performance.now();\n    let animacaoId = null;\n    let temporizadorManual = null;\n\n    const motivosDePausa = new Set();\n\n    \/*\n     * Corrige textos que eventualmente cheguem como \"not\u00c3\u00adcia\".\n     * A convers\u00e3o usa apenas c\u00f3digos ASCII no script para n\u00e3o depender\n     * da codifica\u00e7\u00e3o configurada no editor ou no WordPress.\n     *\/\n    function corrigirCodificacao(texto) {\n        const valor = String(texto || \"\");\n\n        if (!\/[\\u00C2\\u00C3\\u00E2]\/.test(valor)) {\n            return valor;\n        }\n\n        const mapaWindows1252 = {\n            8364: 128,\n            8218: 130,\n            402: 131,\n            8222: 132,\n            8230: 133,\n            8224: 134,\n            8225: 135,\n            710: 136,\n            8240: 137,\n            352: 138,\n            8249: 139,\n            338: 140,\n            381: 142,\n            8216: 145,\n            8217: 146,\n            8220: 147,\n            8221: 148,\n            8226: 149,\n            8211: 150,\n            8212: 151,\n            732: 152,\n            8482: 153,\n            353: 154,\n            8250: 155,\n            339: 156,\n            382: 158,\n            376: 159\n        };\n\n        const bytes = [];\n\n        for (const caractere of valor) {\n            const codigo = caractere.codePointAt(0);\n\n            if (codigo <= 255) {\n                bytes.push(codigo);\n            } else if (mapaWindows1252[codigo] !== undefined) {\n                bytes.push(mapaWindows1252[codigo]);\n            } else {\n                return valor;\n            }\n        }\n\n        try {\n            return new TextDecoder(\"utf-8\", {\n                fatal: true\n            }).decode(new Uint8Array(bytes));\n        } catch (erro) {\n            return valor;\n        }\n    }\n\n    function converterHtmlParaTexto(html) {\n        const elemento = document.createElement(\"div\");\n        elemento.innerHTML = html || \"\";\n\n        const texto = (\n            elemento.textContent ||\n            elemento.innerText ||\n            \"\"\n        )\n            .replace(\/\\s+\/g, \" \")\n            .trim();\n\n        return corrigirCodificacao(texto);\n    }\n\n    function limitarTexto(texto, limite) {\n        const valor = (texto || \"\").trim();\n\n        if (valor.length <= limite) {\n            return valor;\n        }\n\n        return valor.slice(0, limite).trimEnd() + \"\\u2026\";\n    }\n\n    function formatarData(dataOriginal) {\n        if (!dataOriginal) {\n            return \"\";\n        }\n\n        const data = new Date(dataOriginal);\n\n        if (Number.isNaN(data.getTime())) {\n            return \"\";\n        }\n\n        return new Intl.DateTimeFormat(\"pt-BR\", {\n            day: \"2-digit\",\n            month: \"short\",\n            year: \"numeric\"\n        })\n            .format(data)\n            .replace(\".\", \"\");\n    }\n\n    function obterImagemDoPost(post) {\n        const midia = post\n            ? post._embedded\n                ? post._embedded[\"wp:featuredmedia\"]\n                    ? post._embedded[\"wp:featuredmedia\"][0]\n                    : null\n                : null\n            : null;\n\n        if (!midia) {\n            return {\n                url: \"\",\n                alt: \"\"\n            };\n        }\n\n        const tamanhos = midia.media_details\n            ? midia.media_details.sizes || {}\n            : {};\n\n        const imagem =\n            tamanhos.medium_large ||\n            tamanhos.large ||\n            tamanhos.medium ||\n            tamanhos.full;\n\n        return {\n            url:\n                (imagem ? imagem.source_url : \"\") ||\n                midia.source_url ||\n                \"\",\n            alt: midia.alt_text || \"\"\n        };\n    }\n\n    function obterCategoriaDoPost(post) {\n        const grupos = post\n            ? post._embedded\n                ? post._embedded[\"wp:term\"]\n                : null\n            : null;\n\n        if (!Array.isArray(grupos)) {\n            return \"Seguran\\u00e7a digital\";\n        }\n\n        const termos = grupos.flat();\n\n        const categoria = termos.find(function (termo) {\n            return termo.taxonomy === \"category\";\n        });\n\n        return categoria\n            ? categoria.name\n                ? corrigirCodificacao(categoria.name)\n                : \"Seguran\\u00e7a digital\"\n            : \"Seguran\\u00e7a digital\";\n    }\n\n    function transformarPostsDaApi(posts) {\n        return posts\n            .slice()\n            .sort(function (postA, postB) {\n                const dataA = new Date(\n                    postA.date_gmt || postA.date || 0\n                ).getTime();\n                const dataB = new Date(\n                    postB.date_gmt || postB.date || 0\n                ).getTime();\n\n                return dataB - dataA;\n            })\n            .slice(0, QUANTIDADE_DE_NOTICIAS)\n            .map(function (post) {\n                const imagem = obterImagemDoPost(post);\n\n                return {\n                    titulo: converterHtmlParaTexto(\n                        post.title\n                            ? post.title.rendered\n                            : \"\"\n                    ),\n\n                    resumo: limitarTexto(\n                        converterHtmlParaTexto(\n                            post.excerpt\n                                ? post.excerpt.rendered\n                                : \"\"\n                        ),\n                        165\n                    ),\n\n                    link: post.link,\n                    imagem: imagem.url,\n                    imagemAlt: imagem.alt,\n                    categoria: obterCategoriaDoPost(post),\n                    data: formatarData(post.date),\n                    dataOriginal: post.date || \"\"\n                };\n            })\n            .filter(function (post) {\n                return [post.titulo, post.link].every(Boolean);\n            });\n    }\n\n    async function buscarPelaApi() {\n        let ultimoErro;\n\n        for (const endpoint of API_ENDPOINTS) {\n            try {\n                const resposta = await fetch(endpoint, {\n                    method: \"GET\",\n                    credentials: \"same-origin\",\n                    cache: \"no-store\",\n                    headers: {\n                        Accept: \"application\/json\"\n                    }\n                });\n\n                if (!resposta.ok) {\n                    throw new Error(\n                        \"Erro HTTP \" + resposta.status\n                    );\n                }\n\n                const dados = await resposta.json();\n\n                if (!Array.isArray(dados) || !dados.length) {\n                    throw new Error(\n                        \"A API n\u00e3o retornou publica\u00e7\u00f5es.\"\n                    );\n                }\n\n                const posts = transformarPostsDaApi(dados);\n\n                if (posts.length) {\n                    return posts;\n                }\n            } catch (erro) {\n                ultimoErro = erro;\n            }\n        }\n\n        throw ultimoErro || new Error(\n            \"N\u00e3o foi poss\u00edvel acessar a API.\"\n        );\n    }\n\n    \/*\n     * O feed entrega t\u00edtulo, resumo, imagem e categoria em um arquivo\n     * muito menor do que a resposta completa da API do WordPress.\n     *\/\n    async function buscarPeloFeed() {\n        const resposta = await fetch(FEED_URL, {\n            method: \"GET\",\n            credentials: \"same-origin\",\n            cache: \"no-cache\",\n            headers: {\n                Accept: \"application\/rss+xml, application\/xml, text\/xml\"\n            }\n        });\n\n        if (!resposta.ok) {\n            throw new Error(\"O feed do blog n\u00e3o respondeu.\");\n        }\n\n        const xml = await resposta.text();\n        const documento = new DOMParser().parseFromString(\n            xml,\n            \"application\/xml\"\n        );\n\n        if (documento.querySelector(\"parsererror\")) {\n            throw new Error(\"O feed retornou um XML inv\u00e1lido.\");\n        }\n\n        const itens = [\n            ...documento.getElementsByTagName(\"item\")\n        ];\n\n        const posts = itens\n            .map(function (item) {\n                function textoDaTag(nome) {\n                    const elemento = item.getElementsByTagName(\n                        nome\n                    )[0];\n\n                    return elemento\n                        ? converterHtmlParaTexto(\n                            elemento.textContent\n                        )\n                        : \"\";\n                }\n\n                const categorias = [\n                    ...item.getElementsByTagName(\"category\")\n                ];\n\n                const categoriaPrincipal = categorias.find(\n                    function (categoria) {\n                        return (\n                            categoria.getAttribute(\"domain\") || \"\"\n                        ).includes(\"\/category\/\");\n                    }\n                );\n\n                const midia = item.getElementsByTagName(\n                    \"media:content\"\n                )[0];\n\n                const dataOriginal = textoDaTag(\"pubDate\");\n\n                return {\n                    titulo: textoDaTag(\"title\"),\n                    resumo: limitarTexto(\n                        textoDaTag(\"description\"),\n                        165\n                    ),\n                    link: textoDaTag(\"link\"),\n                    imagem: midia\n                        ? midia.getAttribute(\"url\") || \"\"\n                        : \"\",\n                    imagemAlt: textoDaTag(\"title\"),\n                    categoria: categoriaPrincipal\n                        ? converterHtmlParaTexto(\n                            categoriaPrincipal.textContent\n                        )\n                        : \"Seguran\\u00e7a digital\",\n                    data: \"\",\n                    dataOriginal: dataOriginal\n                };\n            })\n            .filter(function (post) {\n                return [post.titulo, post.link].every(Boolean);\n            })\n            .sort(function (postA, postB) {\n                return (\n                    new Date(postB.dataOriginal).getTime() -\n                    new Date(postA.dataOriginal).getTime()\n                );\n            })\n            .slice(0, QUANTIDADE_DE_NOTICIAS);\n\n        if (!posts.length) {\n            throw new Error(\"Nenhuma publica\u00e7\u00e3o apareceu no feed.\");\n        }\n\n        return posts;\n    }\n\n    function imagemDoElemento(elemento) {\n        const imagem = elemento\n            ? elemento.querySelector(\"img\")\n            : null;\n\n        if (!imagem) {\n            return {\n                url: \"\",\n                alt: \"\"\n            };\n        }\n\n        return {\n            url:\n                imagem.currentSrc ||\n                imagem.getAttribute(\"data-lazy-src\") ||\n                imagem.getAttribute(\"data-src\") ||\n                imagem.getAttribute(\"src\") ||\n                \"\",\n            alt: imagem.getAttribute(\"alt\") || \"\"\n        };\n    }\n\n    function linkValidoDePost(link) {\n        try {\n            const url = new URL(link, BLOG_URL);\n            const caminho = url.pathname.replace(\/\\\/+$\/, \"\/\");\n\n            if (\n                !url.hostname.endsWith(\"psafe.com\") ||\n                !caminho.startsWith(\"\/blog\/\") ||\n                caminho === \"\/blog\/\"\n            ) {\n                return false;\n            }\n\n            if (\n                caminho.includes(\"\/category\/\") ||\n                caminho.includes(\"\/tag\/\") ||\n                caminho.includes(\"\/author\/\") ||\n                caminho.includes(\"\/page\/\")\n            ) {\n                return false;\n            }\n\n            return true;\n        } catch (erro) {\n            return false;\n        }\n    }\n\n    function transformarElementoDoBlog(link) {\n        const container =\n            link.closest(\"article\") ||\n            link.closest(\"li\") ||\n            link.parentElement;\n\n        const titulo = converterHtmlParaTexto(link.innerHTML);\n\n        const imagem = imagemDoElemento(container);\n\n        const paragrafo = container\n            ? container.querySelector(\"p\")\n            : null;\n\n        const categoria = container\n            ? container.querySelector(\n                '[rel=\"category tag\"],' +\n                \".category a,\" +\n                \".cat-links a,\" +\n                \".post-category a\"\n            )\n            : null;\n\n        const data = container\n            ? container.querySelector(\"time\")\n            : null;\n\n        return {\n            titulo: titulo,\n            resumo: limitarTexto(\n                paragrafo\n                    ? converterHtmlParaTexto(\n                        paragrafo.innerHTML\n                    )\n                    : \"\",\n                165\n            ),\n            link: new URL(\n                link.getAttribute(\"href\"),\n                BLOG_URL\n            ).href,\n            imagem: imagem.url,\n            imagemAlt: imagem.alt,\n            categoria: categoria\n                ? converterHtmlParaTexto(\n                    categoria.innerHTML\n                )\n                : \"Seguran\\u00e7a digital\",\n            data: data\n                ? (\n                    converterHtmlParaTexto(\n                        data.innerHTML\n                    ) ||\n                    formatarData(\n                        data.getAttribute(\"datetime\")\n                    )\n                )\n                : \"\",\n            dataOriginal: data\n                ? data.getAttribute(\"datetime\") || \"\"\n                : \"\"\n        };\n    }\n\n    async function buscarDiretamenteNoBlog() {\n        const resposta = await fetch(BLOG_URL, {\n            method: \"GET\",\n            credentials: \"same-origin\",\n            cache: \"no-store\",\n            headers: {\n                Accept: \"text\/html\"\n            }\n        });\n\n        if (!resposta.ok) {\n            throw new Error(\n                \"N\u00e3o foi poss\u00edvel abrir a p\u00e1gina do blog.\"\n            );\n        }\n\n        const html = await resposta.text();\n        const documento = new DOMParser().parseFromString(\n            html,\n            \"text\/html\"\n        );\n\n        const areaPrincipal =\n            documento.querySelector(\"main\") ||\n            documento.body;\n\n        const linksEncontrados = [\n            ...areaPrincipal.querySelectorAll(\n                \"article h2 a[href],\" +\n                \"article h3 a[href],\" +\n                \"article h4 a[href],\" +\n                \"h2 a[href*='\/blog\/'],\" +\n                \"h3 a[href*='\/blog\/']\"\n            )\n        ];\n\n        const linksUnicos = [];\n        const enderecosEncontrados = new Set();\n\n        for (const link of linksEncontrados) {\n            const endereco = link.getAttribute(\"href\");\n\n            if (!linkValidoDePost(endereco)) {\n                continue;\n            }\n\n            const enderecoCompleto = new URL(\n                endereco,\n                BLOG_URL\n            ).href;\n\n            if (enderecosEncontrados.has(enderecoCompleto)) {\n                continue;\n            }\n\n            enderecosEncontrados.add(enderecoCompleto);\n            linksUnicos.push(link);\n\n            if (\n                linksUnicos.length >=\n                QUANTIDADE_DE_NOTICIAS\n            ) {\n                break;\n            }\n        }\n\n        const posts = linksUnicos.map(\n            transformarElementoDoBlog\n        );\n\n        if (!posts.length) {\n            throw new Error(\n                \"Nenhuma publica\u00e7\u00e3o foi encontrada.\"\n            );\n        }\n\n        return posts;\n    }\n\n    function criarPlaceholderDeImagem() {\n        const placeholder = document.createElement(\"div\");\n        placeholder.className =\n            \"psafe-news-image-placeholder\";\n\n        placeholder.innerHTML =\n            '<svg viewBox=\"0 0 24 24\" fill=\"none\">' +\n                '<path d=\"M12 3L20 7.5V12.5C20 17.2 16.8 21 12 22C7.2 21 4 17.2 4 12.5V7.5L12 3Z\"' +\n                ' stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linejoin=\"round\"\/>' +\n                '<path d=\"M9 12L11 14L15.5 9.5\"' +\n                ' stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>' +\n            \"<\/svg>\";\n\n        return placeholder;\n    }\n\n    function criarCard(post, indice) {\n        const article = document.createElement(\"article\");\n        article.className = \"psafe-news-card\";\n        article.dataset.link = post.link;\n        article.tabIndex = 0;\n        article.setAttribute(\"role\", \"link\");\n        article.setAttribute(\n            \"aria-label\",\n            \"Abrir not\\u00edcia: \" + post.titulo\n        );\n\n        const imageLink = document.createElement(\"a\");\n        imageLink.className = \"psafe-news-image-link\";\n        imageLink.href = post.link;\n        imageLink.setAttribute(\n            \"aria-label\",\n            \"Abrir not\\u00edcia: \" + post.titulo\n        );\n\n        if (post.imagem) {\n            const image = document.createElement(\"img\");\n            image.className = \"psafe-news-image\";\n            image.src = post.imagem;\n            image.alt = post.imagemAlt || post.titulo;\n            image.loading = indice < 3 ? \"eager\" : \"lazy\";\n            image.fetchPriority = indice < 3 ? \"high\" : \"auto\";\n            image.decoding = \"async\";\n            image.width = 640;\n            image.height = 360;\n\n            image.addEventListener(\"error\", function () {\n                image.remove();\n                imageLink.appendChild(\n                    criarPlaceholderDeImagem()\n                );\n            });\n\n            imageLink.appendChild(image);\n        } else {\n            imageLink.appendChild(\n                criarPlaceholderDeImagem()\n            );\n        }\n\n        const content = document.createElement(\"div\");\n        content.className = \"psafe-news-content\";\n\n        const meta = document.createElement(\"div\");\n        meta.className = \"psafe-news-meta\";\n\n        const category = document.createElement(\"span\");\n        category.className = \"psafe-news-category\";\n        category.textContent =\n            post.categoria || \"Seguran\\u00e7a digital\";\n\n        meta.appendChild(category);\n\n        const title = document.createElement(\"h3\");\n        title.className = \"psafe-news-card-title\";\n\n        const titleLink = document.createElement(\"a\");\n        titleLink.href = post.link;\n        titleLink.textContent = post.titulo;\n\n        title.appendChild(titleLink);\n\n        const excerpt = document.createElement(\"p\");\n        excerpt.className = \"psafe-news-excerpt\";\n        excerpt.textContent =\n            post.resumo ||\n            \"Confira as informa\\u00e7\\u00f5es completas nesta publica\\u00e7\\u00e3o.\";\n\n        const readMore = document.createElement(\"a\");\n        readMore.className = \"psafe-news-read-more\";\n        readMore.href = post.link;\n        readMore.innerHTML =\n            \"<span>Ler not\\u00edcia<\/span>\" +\n            '<svg viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\">' +\n                '<path d=\"M5 12H19M13 6L19 12L13 18\"' +\n                ' stroke=\"currentColor\" stroke-width=\"2\"' +\n                ' stroke-linecap=\"round\" stroke-linejoin=\"round\"\/>' +\n            \"<\/svg>\";\n\n        content.appendChild(meta);\n        content.appendChild(title);\n        content.appendChild(excerpt);\n        content.appendChild(readMore);\n\n        article.appendChild(imageLink);\n        article.appendChild(content);\n\n        return article;\n    }\n\n    function montarCarrossel(posts) {\n        track.innerHTML = \"\";\n        track.classList.remove(\"is-loading\");\n\n        const grupoOriginal = document.createElement(\"div\");\n        grupoOriginal.className = \"psafe-news-group\";\n\n        posts\n            .slice(0, QUANTIDADE_DE_NOTICIAS)\n            .forEach(function (post, indice) {\n                grupoOriginal.appendChild(\n                    criarCard(post, indice)\n                );\n            });\n\n        const grupoDuplicado =\n            grupoOriginal.cloneNode(true);\n\n        grupoDuplicado.setAttribute(\"aria-hidden\", \"true\");\n\n        grupoDuplicado\n            .querySelectorAll(\"a, button, input, [tabindex]\")\n            .forEach(function (elemento) {\n                elemento.tabIndex = -1;\n            });\n\n        track.appendChild(grupoOriginal);\n        track.appendChild(grupoDuplicado);\n\n        atualizarMedidas();\n\n        if (\"ResizeObserver\" in window) {\n            const observador = new ResizeObserver(function () {\n                atualizarMedidas();\n            });\n\n            observador.observe(viewport);\n        } else {\n            window.addEventListener(\n                \"resize\",\n                atualizarMedidas\n            );\n        }\n    }\n\n    function quantidadeVisivel() {\n        const largura = viewport.clientWidth;\n\n        if (largura >= 680) {\n            return 3;\n        }\n\n        if (largura >= 520) {\n            return 2;\n        }\n\n        return 1;\n    }\n\n    function obterEspacamento() {\n        const valor = getComputedStyle(root)\n            .getPropertyValue(\"--psafe-gap\");\n\n        return parseFloat(valor) || 24;\n    }\n\n    function atualizarMedidas() {\n        const posicaoAnterior =\n            larguraDoCiclo > 0\n                ? viewport.scrollLeft \/ larguraDoCiclo\n                : 0;\n\n        const visiveis = quantidadeVisivel();\n        const espacamento = obterEspacamento();\n\n        const larguraDoCard =\n            (\n                viewport.clientWidth -\n                espacamento * (visiveis - 1)\n            ) \/ visiveis;\n\n        root.style.setProperty(\n            \"--psafe-card-width\",\n            Math.max(larguraDoCard, 210) + \"px\"\n        );\n\n        const grupos =\n            track.querySelectorAll(\".psafe-news-group\");\n\n        if (grupos.length > 1) {\n            larguraDoCiclo = grupos[1].offsetLeft;\n\n            viewport.scrollLeft =\n                Math.min(posicaoAnterior, 0.999) *\n                larguraDoCiclo;\n        }\n    }\n\n    function pausar(motivo) {\n        motivosDePausa.add(motivo);\n    }\n\n    function continuar(motivo) {\n        motivosDePausa.delete(motivo);\n    }\n\n    function pausarTemporariamente() {\n        pausar(\"manual\");\n\n        window.clearTimeout(temporizadorManual);\n\n        temporizadorManual = window.setTimeout(\n            function () {\n                continuar(\"manual\");\n            },\n            3200\n        );\n    }\n\n    function larguraDoPasso() {\n        const card = track.querySelector(\n            \".psafe-news-card\"\n        );\n\n        if (!card) {\n            return viewport.clientWidth;\n        }\n\n        return (\n            card.getBoundingClientRect().width +\n            obterEspacamento()\n        );\n    }\n\n    function moverManualmente(direcao) {\n        pausarTemporariamente();\n\n        const passo =\n            larguraDoPasso() * quantidadeVisivel();\n\n        if (direcao < 0) {\n            if (viewport.scrollLeft < passo) {\n                viewport.scrollLeft += larguraDoCiclo;\n            }\n        }\n\n        viewport.scrollBy({\n            left: direcao * passo,\n            behavior: \"smooth\"\n        });\n    }\n\n    function animarCarrossel(tempoAtual) {\n        const diferenca = Math.min(\n            tempoAtual - ultimoTempo,\n            60\n        );\n\n        ultimoTempo = tempoAtual;\n\n        const reduzirMovimento = window.matchMedia(\n            \"(prefers-reduced-motion: reduce)\"\n        ).matches;\n\n        const podeAnimar = [\n            !reduzirMovimento,\n            motivosDePausa.size === 0,\n            !document.hidden,\n            larguraDoCiclo > 0\n        ].every(Boolean);\n\n        if (podeAnimar) {\n            viewport.scrollLeft +=\n                VELOCIDADE * (diferenca \/ 1000);\n\n            if (\n                viewport.scrollLeft >=\n                larguraDoCiclo\n            ) {\n                viewport.scrollLeft -= larguraDoCiclo;\n            }\n        }\n\n        animacaoId = window.requestAnimationFrame(\n            animarCarrossel\n        );\n    }\n\n    previousButton.addEventListener(\n        \"click\",\n        function () {\n            moverManualmente(-1);\n        }\n    );\n\n    nextButton.addEventListener(\n        \"click\",\n        function () {\n            moverManualmente(1);\n        }\n    );\n\n    \/* Torna todo o card clic\u00e1vel, n\u00e3o apenas a imagem e o t\u00edtulo. *\/\n    track.addEventListener(\"click\", function (evento) {\n        if (evento.target.closest(\"a\")) {\n            return;\n        }\n\n        const card = evento.target.closest(\n            \".psafe-news-card\"\n        );\n\n        if (card ? card.dataset.link : false) {\n            window.location.href = card.dataset.link;\n        }\n    });\n\n    track.addEventListener(\"keydown\", function (evento) {\n        if (![\"Enter\", \" \"].includes(evento.key)) {\n            return;\n        }\n\n        const card = evento.target.closest(\n            \".psafe-news-card\"\n        );\n\n        if (card ? card.dataset.link : false) {\n            if (evento.target === card) {\n                evento.preventDefault();\n                window.location.href = card.dataset.link;\n            }\n        }\n    });\n\n    root.addEventListener(\"mouseenter\", function () {\n        pausar(\"mouse\");\n    });\n\n    root.addEventListener(\"mouseleave\", function () {\n        continuar(\"mouse\");\n    });\n\n    root.addEventListener(\"focusin\", function () {\n        pausar(\"foco\");\n    });\n\n    root.addEventListener(\"focusout\", function (evento) {\n        if (!root.contains(evento.relatedTarget)) {\n            continuar(\"foco\");\n        }\n    });\n\n    \/*\n     * No celular, s\u00f3 pausa a anima\u00e7\u00e3o quando o movimento\n     * for realmente horizontal. A rolagem vertical da p\u00e1gina\n     * continua funcionando normalmente sobre o carrossel.\n     *\/\n    let toqueInicialX = 0;\n    let toqueInicialY = 0;\n    let arrastoHorizontal = false;\n\n    viewport.addEventListener(\n        \"pointerdown\",\n        function (evento) {\n            toqueInicialX = evento.clientX;\n            toqueInicialY = evento.clientY;\n            arrastoHorizontal = false;\n        },\n        {\n            passive: true\n        }\n    );\n\n    viewport.addEventListener(\n        \"pointermove\",\n        function (evento) {\n            const movimentoX = Math.abs(\n                evento.clientX - toqueInicialX\n            );\n\n            const movimentoY = Math.abs(\n                evento.clientY - toqueInicialY\n            );\n\n            if (\n                movimentoX > 8 &&\n                movimentoX > movimentoY\n            ) {\n                arrastoHorizontal = true;\n                pausar(\"arrasto\");\n            }\n        },\n        {\n            passive: true\n        }\n    );\n\n    function finalizarArrasto() {\n        if (!arrastoHorizontal) {\n            return;\n        }\n\n        window.setTimeout(function () {\n            continuar(\"arrasto\");\n        }, 1000);\n\n        arrastoHorizontal = false;\n    }\n\n    viewport.addEventListener(\n        \"pointerup\",\n        finalizarArrasto,\n        {\n            passive: true\n        }\n    );\n\n    viewport.addEventListener(\n        \"pointercancel\",\n        finalizarArrasto,\n        {\n            passive: true\n        }\n    );\n\n    async function iniciar() {\n        try {\n            let posts;\n\n            try {\n                posts = await Promise.any([\n                    buscarPeloFeed(),\n                    buscarPelaApi()\n                ]);\n            } catch (errosDasFontes) {\n                posts = await buscarDiretamenteNoBlog();\n            }\n\n            montarCarrossel(posts);\n\n            ultimoTempo = performance.now();\n\n            animacaoId = window.requestAnimationFrame(\n                animarCarrossel\n            );\n        } catch (erro) {\n            console.error(\n                \"Erro no carrossel da PSafe:\",\n                erro\n            );\n\n            track.innerHTML = \"\";\n            viewport.style.display = \"none\";\n            previousButton.style.display = \"none\";\n            nextButton.style.display = \"none\";\n            errorBox.classList.add(\"is-visible\");\n        }\n    }\n\n    iniciar();\n})();\n<\/script>\n\n\n\n<style data-wp-block-html=\"css\">\n.psafe-cta-phone-shield {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    overflow: hidden;\n    padding: 8px;\n}\n\n.psafe-cta-phone-shield img {\n    display: block;\n    width: 100%;\n    height: 100%;\n    object-fit: contain;\n}\n<\/style>\n\n<style>\n.psafe-cta-band-section,\n.psafe-cta-band-section * {\n  box-sizing: border-box;\n}\n\n.psafe-cta-band-section {\n  max-width: 1180px;\n  margin: 0 auto;\n  padding: 8px 24px 50px;\n  font-family: inherit;\n}\n\n.psafe-cta-band {\n  position: relative;\n  display: grid;\n  grid-template-columns: 1.15fr 0.75fr 1fr;\n  align-items: center;\n  gap: 28px;\n  width: 100%;\n  padding: 28px 34px;\n  overflow: hidden;\n  color: #ffffff;\n  background: linear-gradient(\n    135deg,\n    #6814ff 0%,\n    #4b13d1 42%,\n    #2b057f 100%\n  );\n  border-radius: 14px;\n  box-shadow: 0 18px 42px rgba(75, 19, 209, 0.18);\n}\n\n.psafe-cta-band::before {\n  content: \"\";\n  position: absolute;\n  top: -90px;\n  left: -80px;\n  width: 240px;\n  height: 240px;\n  pointer-events: none;\n  background: radial-gradient(\n    circle,\n    rgba(255, 255, 255, 0.18),\n    rgba(255, 255, 255, 0)\n  );\n}\n\n.psafe-cta-left {\n  position: relative;\n  z-index: 1;\n  display: grid;\n  grid-template-columns: 105px minmax(0, 1fr);\n  align-items: center;\n  gap: 22px;\n}\n\n.psafe-cta-phone {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 105px;\n  height: 105px;\n  padding: 12px;\n  overflow: hidden;\n  background:\n    radial-gradient(\n      circle at 70% 25%,\n      rgba(255, 255, 255, 0.22),\n      transparent 28%\n    ),\n    linear-gradient(135deg, #21005d, #7a22ff);\n  border-radius: 18px;\n  box-shadow:\n    inset 0 0 18px rgba(255, 255, 255, 0.12),\n    0 10px 24px rgba(20, 0, 70, 0.2);\n}\n\n.psafe-cta-phone-shield {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 78px;\n  height: 78px;\n  overflow: hidden;\n  background: #5c17d8;\n  border-radius: 18px;\n}\n\n.psafe-cta-phone-shield img {\n  display: block;\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  object-position: center;\n  border: 0;\n  border-radius: 18px;\n}\n\n.psafe-cta-content {\n  min-width: 0;\n}\n\n.psafe-cta-title {\n  margin: 0 0 8px;\n  color: #ffffff;\n  font-size: 22px;\n  font-weight: 800;\n  line-height: 1.15;\n  letter-spacing: -0.3px;\n}\n\n.psafe-cta-text {\n  max-width: 430px;\n  margin: 0;\n  color: rgba(255, 255, 255, 0.88);\n  font-size: 14.5px;\n  line-height: 1.45;\n}\n\n.psafe-cta-center {\n  position: relative;\n  z-index: 1;\n  text-align: center;\n}\n\n.psafe-cta-button {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  padding: 14px 26px;\n  color: #4b13d1 !important;\n  font-size: 14px;\n  font-weight: 800;\n  text-decoration: none !important;\n  background: #ffffff;\n  border-radius: 9px;\n  box-shadow: 0 12px 26px rgba(20, 0, 70, 0.18);\n  transition:\n    transform 0.2s ease,\n    box-shadow 0.2s ease;\n}\n\n.psafe-cta-button:hover {\n  transform: translateY(-2px);\n  box-shadow: 0 16px 32px rgba(20, 0, 70, 0.24);\n}\n\n.psafe-cta-link {\n  display: inline-block;\n  margin-top: 12px;\n  color: #ffffff !important;\n  font-size: 13.5px;\n  font-weight: 800;\n  text-decoration: underline !important;\n  text-underline-offset: 3px;\n}\n\n.psafe-cta-right {\n  position: relative;\n  z-index: 1;\n  padding-left: 32px;\n  border-left: 1px dashed rgba(255, 255, 255, 0.32);\n}\n\n.psafe-cta-right h3 {\n  margin: 0 0 8px;\n  color: #ffffff;\n  font-size: 21px;\n  font-weight: 800;\n  line-height: 1.15;\n  letter-spacing: -0.3px;\n}\n\n.psafe-cta-right p {\n  margin: 0 0 10px;\n  color: rgba(255, 255, 255, 0.88);\n  font-size: 14.5px;\n  line-height: 1.45;\n}\n\n.psafe-cta-right a {\n  color: #ffffff !important;\n  font-size: 13.5px;\n  font-weight: 800;\n  text-decoration: underline !important;\n  text-underline-offset: 3px;\n}\n\n@media (max-width: 920px) {\n  .psafe-cta-band {\n    grid-template-columns: 1fr;\n    gap: 24px;\n    padding: 28px;\n  }\n\n  .psafe-cta-center {\n    text-align: left;\n  }\n\n  .psafe-cta-right {\n    padding-top: 22px;\n    padding-left: 0;\n    border-top: 1px dashed rgba(255, 255, 255, 0.32);\n    border-left: 0;\n  }\n}\n\n@media (max-width: 560px) {\n  .psafe-cta-band-section {\n    padding: 5px 20px 42px;\n  }\n\n  .psafe-cta-band {\n    padding: 24px 20px;\n  }\n\n  .psafe-cta-left {\n    grid-template-columns: 1fr;\n    gap: 18px;\n  }\n\n  .psafe-cta-phone {\n    width: 92px;\n    height: 92px;\n    padding: 10px;\n  }\n\n  .psafe-cta-phone-shield {\n    width: 70px;\n    height: 70px;\n    border-radius: 16px;\n  }\n\n  .psafe-cta-phone-shield img {\n    border-radius: 16px;\n  }\n\n  .psafe-cta-title {\n    font-size: 20px;\n  }\n\n  .psafe-cta-button {\n    width: 100%;\n  }\n}\n<\/style>\n\n<section class=\"psafe-cta-band-section\">\n  <div class=\"psafe-cta-band\">\n\n    <div class=\"psafe-cta-left\">\n\n      <div class=\"psafe-cta-phone\">\n        <div class=\"psafe-cta-phone-shield\">\n          <img decoding=\"async\"\n            src=\"https:\/\/play-lh.googleusercontent.com\/K6SBNAhsz45hY9Q187I3FdllppiBIrz0-9QLnB6R1yTPloiOfvx66ZPbYU5tz5nrFfZl-JW3BeSxESE35L3Hlg=w240-h480-rw\"\n            alt=\"\u00cdcone do aplicativo dfndr Security\"\n          >\n        <\/div>\n      <\/div>\n\n      <div class=\"psafe-cta-content\">\n        <h2 class=\"psafe-cta-title\">\n          Conhe\u00e7a o dfndr Security\n        <\/h2>\n\n        <p class=\"psafe-cta-text\">\n          O aplicativo de seguran\u00e7a da PSafe que ajuda usu\u00e1rios Android a\n          protegerem seus celulares contra golpes digitais, links suspeitos\n          e outras amea\u00e7as online.\n        <\/p>\n      <\/div>\n\n    <\/div>\n\n    <div class=\"psafe-cta-center\">\n      <a\n        class=\"psafe-cta-button\"\n        href=\"https:\/\/utm-psafe.vercel.app\/r\/Vlg0uL\"\n        target=\"_blank\"\n        rel=\"noopener\"\n      >\n        Baixar gratuitamente\n      <\/a>\n\n      <br>\n\n      <a\n        class=\"psafe-cta-link\"\n        href=\"\/pt-br\/dfndr-security\/\"\n      >\n        Saiba mais sobre o app \u2192\n      <\/a>\n    <\/div>\n\n    <div class=\"psafe-cta-right\">\n      <h3>Desenvolvido pela PSafe<\/h3>\n\n      <p>\n        Especialista em seguran\u00e7a digital e prote\u00e7\u00e3o mobile.\n      <\/p>\n\n      <a href=\"\/pt-br\/sobre-a-psafe\/\">\n        Conhe\u00e7a a PSafe \u2192\n      <\/a>\n    <\/div>\n\n  <\/div>\n<\/section>\n","protected":false},"excerpt":{"rendered":"<p>Seguran\u00e7a Digital Guias, dicas e ferramentas para proteger seu celular, seus dados e suas contas contra golpes digitais, links suspeitos, vazamento de dados e outras amea\u00e7as online. Baixar dfndr Security Explorar Guias Explore por assunto Golpes Digitais Saiba como identificar e evitar golpes. \u2192 Links Suspeitos Aprenda a reconhecer links perigosos. \u2192 Wi-Fi P\u00fablico Use [&hellip;]<\/p>\n","protected":false},"author":46,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"inline_featured_image":false,"_themeisle_gutenberg_block_has_review":false,"footnotes":""},"class_list":["post-9878","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.psafe.com\/pt-br\/wp-json\/wp\/v2\/pages\/9878","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.psafe.com\/pt-br\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.psafe.com\/pt-br\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.psafe.com\/pt-br\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/www.psafe.com\/pt-br\/wp-json\/wp\/v2\/comments?post=9878"}],"version-history":[{"count":31,"href":"https:\/\/www.psafe.com\/pt-br\/wp-json\/wp\/v2\/pages\/9878\/revisions"}],"predecessor-version":[{"id":10266,"href":"https:\/\/www.psafe.com\/pt-br\/wp-json\/wp\/v2\/pages\/9878\/revisions\/10266"}],"wp:attachment":[{"href":"https:\/\/www.psafe.com\/pt-br\/wp-json\/wp\/v2\/media?parent=9878"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}