{"id":4548,"date":"2026-10-31T15:52:55","date_gmt":"2026-10-31T15:52:55","guid":{"rendered":"https:\/\/literalmex.com\/?page_id=4548"},"modified":"2026-10-31T15:52:56","modified_gmt":"2026-10-31T15:52:56","slug":"el-ine-bajo-la-lupa","status":"publish","type":"page","link":"https:\/\/literalmex.com\/index.php\/el-ine-bajo-la-lupa\/","title":{"rendered":"El INE bajo la lupa"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>\n&lt;!-- LITERAL M\u00c9XICO | ESPECIAL INE -->\n&lt;div id=\"literal-ine\">\n\n  &lt;header class=\"li-header\">\n    &lt;div class=\"li-wrap li-header-inner\">\n      &lt;a href=\"https:\/\/literalmex.com\/\" class=\"li-brand\"\n         aria-label=\"Ir a la portada de Literal M\u00e9xico\">\n        &lt;img id=\"li-logo\" alt=\"Literal M\u00e9xico\" hidden>\n        &lt;span id=\"li-brand-text\">\n          LITERAL &lt;b>M\u00c9XICO&lt;\/b>\n          &lt;small>PERIODISMO Y AN\u00c1LISIS&lt;\/small>\n        &lt;\/span>\n      &lt;\/a>\n      &lt;a class=\"li-home\" href=\"https:\/\/literalmex.com\/\">\n        \u2302 &amp;nbsp; INICIO\n      &lt;\/a>\n    &lt;\/div>\n  &lt;\/header>\n\n  &lt;nav class=\"li-nav\" aria-label=\"Men\u00fa del especial\">\n    &lt;div class=\"li-wrap li-nav-inner\">\n      &lt;button data-filter=\"all\" class=\"li-active\">\n        Toda la cobertura\n      &lt;\/button>\n      &lt;button data-filter=\"taddei\">\n        Guadalupe Taddei\n      &lt;\/button>\n      &lt;button data-filter=\"ine\">INE&lt;\/button>\n      &lt;button data-filter=\"proveedor\">\n        Jos\u00e9 Alfredo Hern\u00e1ndez\n      &lt;\/button>\n      &lt;a href=\"#li-search-area\">\u2315 Buscar&lt;\/a>\n    &lt;\/div>\n  &lt;\/nav>\n\n  &lt;section class=\"li-hero\">\n    &lt;div class=\"li-wrap\">\n      &lt;div class=\"li-eyebrow\">\n        &lt;span>&lt;\/span> INVESTIGACI\u00d3N ESPECIAL\n      &lt;\/div>\n      &lt;h1>EL INE&lt;br>&lt;em>BAJO LA LUPA&lt;\/em>&lt;\/h1>\n      &lt;p>\n        Guadalupe Taddei, contratos, proveedores y poder pol\u00edtico.\n        Las investigaciones, controversias y decisiones\n        que rodean al \u00e1rbitro electoral mexicano.\n      &lt;\/p>\n      &lt;div class=\"li-hero-bottom\">\n        &lt;span>PERIODISMO \u2022 INVESTIGACI\u00d3N \u2022 OPINI\u00d3N&lt;\/span>\n        &lt;a href=\"#li-news\">EXPLORAR COBERTURA \u2193&lt;\/a>\n      &lt;\/div>\n    &lt;\/div>\n  &lt;\/section>\n\n  &lt;main id=\"li-news\" class=\"li-wrap li-main\">\n\n    &lt;div class=\"li-section-top\">\n      &lt;div>\n        &lt;span class=\"li-red-label\">ARCHIVO PERIOD\u00cdSTICO&lt;\/span>\n        &lt;h2 id=\"li-section-name\">Toda la cobertura&lt;\/h2>\n      &lt;\/div>\n      &lt;span id=\"li-count\" class=\"li-count\">&lt;\/span>\n    &lt;\/div>\n\n    &lt;div id=\"li-search-area\" class=\"li-tools\">\n      &lt;input id=\"li-search\" type=\"search\"\n        placeholder=\"Buscar noticias, nombres o investigaciones...\"\n        aria-label=\"Buscar publicaciones\">\n      &lt;select id=\"li-sort\" aria-label=\"Ordenar publicaciones\">\n        &lt;option value=\"desc\">M\u00e1s recientes&lt;\/option>\n        &lt;option value=\"asc\">M\u00e1s antiguas&lt;\/option>\n      &lt;\/select>\n    &lt;\/div>\n\n    &lt;p id=\"li-status\" role=\"status\" aria-live=\"polite\">\n      Cargando publicaciones...\n    &lt;\/p>\n\n    &lt;div id=\"li-featured\">&lt;\/div>\n\n    &lt;div id=\"li-grid-heading\" class=\"li-grid-heading\" hidden>\n      &lt;h3>M\u00e1s noticias y an\u00e1lisis&lt;\/h3>\n      &lt;span>ARCHIVO DE INVESTIGACI\u00d3N&lt;\/span>\n    &lt;\/div>\n\n    &lt;div id=\"li-grid\" class=\"li-grid\">&lt;\/div>\n\n    &lt;div class=\"li-load-wrap\">\n      &lt;button id=\"li-more\" hidden>Cargar m\u00e1s publicaciones \u2193&lt;\/button>\n    &lt;\/div>\n\n  &lt;\/main>\n\n  &lt;section class=\"li-editorial\">\n    &lt;div class=\"li-wrap li-editorial-inner\">\n      &lt;div>\n        &lt;span class=\"li-red-label\">LITERAL M\u00c9XICO&lt;\/span>\n        &lt;h2>El poder debe rendir cuentas.&lt;\/h2>\n        &lt;p>\n          Informaci\u00f3n, contexto y an\u00e1lisis para entender\n          las decisiones que afectan la democracia mexicana.\n        &lt;\/p>\n      &lt;\/div>\n      &lt;a href=\"https:\/\/literalmex.com\/\">IR A LA PORTADA \u2197&lt;\/a>\n    &lt;\/div>\n  &lt;\/section>\n\n  &lt;footer class=\"li-footer\">\n    &lt;div class=\"li-wrap li-footer-inner\">\n      &lt;strong>LITERAL M\u00c9XICO&lt;\/strong>\n      &lt;span>Periodismo y an\u00e1lisis&lt;\/span>\n      &lt;a href=\"https:\/\/literalmex.com\/\">Volver al inicio \u2191&lt;\/a>\n    &lt;\/div>\n  &lt;\/footer>\n&lt;\/div>\n\n&lt;style>\n#literal-ine {\n  --red:#c62239;\n  --dark:#111722;\n  --gray:#657081;\n  --line:#e3e6eb;\n  font-family:Arial,Helvetica,sans-serif;\n  color:var(--dark);\n  background:white;\n  font-size:16px;\n  line-height:1.6;\n  width:100%;\n}\n\n#literal-ine *,\n#literal-ine *:before,\n#literal-ine *:after {box-sizing:border-box}\n\n#literal-ine a {text-decoration:none}\n#literal-ine button {cursor:pointer}\n#literal-ine .li-wrap {\n  max-width:1240px;\n  width:92%;\n  margin:auto;\n}\n\n\/* LOGOTIPO Y CABECERA *\/\n#literal-ine .li-header {\n  background:#111722;\n  color:white;\n}\n#literal-ine .li-header-inner {\n  display:flex;\n  align-items:center;\n  justify-content:space-between;\n  gap:25px;\n  min-height:92px;\n}\n#literal-ine .li-brand {\n  display:flex;\n  align-items:center;\n  color:white;\n  font-weight:900;\n  font-size:29px;\n  letter-spacing:-1.2px;\n  line-height:1;\n}\n#literal-ine .li-brand b {color:#ed4055}\n#literal-ine .li-brand small {\n  display:block;\n  font-size:9px;\n  font-weight:500;\n  letter-spacing:3px;\n  color:#b4bfcd;\n  margin-top:9px;\n}\n#literal-ine #li-logo {\n  max-height:66px;\n  max-width:270px;\n  width:auto;\n  object-fit:contain;\n}\n#literal-ine .li-home {\n  color:white;\n  font-size:12px;\n  font-weight:800;\n  letter-spacing:1px;\n  border:1px solid #505968;\n  border-radius:5px;\n  padding:10px 17px;\n}\n\n\/* MEN\u00da *\/\n#literal-ine .li-nav {background:#222c3b}\n#literal-ine .li-nav-inner {\n  display:flex;\n  overflow-x:auto;\n  align-items:stretch;\n}\n#literal-ine .li-nav button,\n#literal-ine .li-nav a {\n  display:flex;\n  align-items:center;\n  background:transparent;\n  color:#cbd3de;\n  border:0;\n  border-bottom:3px solid transparent;\n  white-space:nowrap;\n  padding:16px 18px;\n  font-size:13px;\n  font-weight:700;\n  font-family:inherit;\n}\n#literal-ine .li-nav a {margin-left:auto}\n#literal-ine .li-nav button:hover,\n#literal-ine .li-nav .li-active {\n  color:white;\n  border-bottom-color:#e23950;\n}\n\n\/* HERO *\/\n#literal-ine .li-hero {\n  background:\n    radial-gradient(ellipse at 85% 10%,\n      rgba(206,35,59,.25),transparent 45%),\n    linear-gradient(125deg,#1c293b,#0a0e17);\n  color:white;\n  padding:90px 0 55px;\n  position:relative;\n  overflow:hidden;\n}\n#literal-ine .li-hero:before {\n  content:\"INE\";\n  position:absolute;\n  right:-25px;\n  top:-70px;\n  font-size:clamp(170px,31vw,450px);\n  font-weight:900;\n  color:rgba(255,255,255,.025);\n  pointer-events:none;\n}\n#literal-ine .li-hero .li-wrap {\n  position:relative;\n}\n#literal-ine .li-eyebrow {\n  display:flex;\n  align-items:center;\n  gap:10px;\n  color:#efb3bd;\n  font-size:11px;\n  font-weight:800;\n  letter-spacing:2.5px;\n}\n#literal-ine .li-eyebrow span {\n  height:8px;width:8px;\n  border-radius:50%;\n  background:#ec4055;\n}\n#literal-ine .li-hero h1 {\n  font-family:Georgia,'Times New Roman',serif;\n  font-size:clamp(55px,9vw,124px);\n  font-weight:900;\n  line-height:.96;\n  letter-spacing:-3px;\n  color:white;\n  margin:31px 0;\n}\n#literal-ine .li-hero h1 em {\n  color:#ee4458;\n  font-style:normal;\n}\n#literal-ine .li-hero p {\n  color:#c2cbda;\n  font-size:clamp(17px,2vw,21px);\n  max-width:730px;\n  line-height:1.65;\n  margin:0 0 55px;\n}\n#literal-ine .li-hero-bottom {\n  display:flex;\n  justify-content:space-between;\n  flex-wrap:wrap;\n  gap:15px;\n  border-top:1px solid #465165;\n  padding-top:23px;\n  font-size:11px;\n  letter-spacing:1.6px;\n  color:#aab5c6;\n}\n#literal-ine .li-hero-bottom a {\n  color:white;\n  font-weight:800;\n  letter-spacing:0;\n}\n\n\/* CONTENIDO *\/\n#literal-ine .li-main {padding:68px 0 85px}\n#literal-ine .li-section-top {\n  display:flex;\n  align-items:end;\n  justify-content:space-between;\n  gap:25px;\n  margin-bottom:28px;\n}\n#literal-ine .li-red-label {\n  color:var(--red);\n  font-size:11px;\n  letter-spacing:2px;\n  font-weight:800;\n}\n#literal-ine .li-section-top h2 {\n  font-family:Georgia,serif;\n  font-size:clamp(32px,4vw,48px);\n  line-height:1.2;\n  margin:8px 0 0;\n  color:var(--dark);\n}\n#literal-ine .li-count {\n  color:var(--gray);\n  font-size:13px;\n  white-space:nowrap;\n  padding-bottom:7px;\n}\n#literal-ine .li-tools {\n  display:grid;\n  grid-template-columns:1fr 210px;\n  gap:12px;\n  background:#f5f6f8;\n  border:1px solid var(--line);\n  padding:15px;\n  border-radius:8px;\n  margin-bottom:35px;\n}\n#literal-ine .li-tools input,\n#literal-ine .li-tools select {\n  display:block;\n  width:100%;\n  min-width:0;\n  padding:13px 15px;\n  background:white;\n  border:1px solid #dce0e6;\n  border-radius:5px;\n  color:#17202d;\n  font:inherit;\n  font-size:14px;\n}\n#literal-ine #li-status {\n  color:var(--gray);\n  font-size:14px;\n  margin:15px 0;\n}\n#literal-ine #li-status:empty {display:none}\n\n\/* ART\u00cdCULO PRINCIPAL *\/\n#literal-ine .li-feature {\n  display:grid;\n  grid-template-columns:1.2fr 1fr;\n  background:#172131;\n  color:white;\n  border-radius:9px;\n  overflow:hidden;\n  margin-bottom:50px;\n}\n#literal-ine .li-feature-image {\n  display:block;\n  height:100%;\n  min-height:380px;\n  background:#344155;\n  overflow:hidden;\n}\n#literal-ine .li-feature-image img {\n  width:100%;\n  height:100%;\n  min-height:380px;\n  display:block;\n  object-fit:cover;\n  transition:transform .3s;\n}\n#literal-ine .li-feature:hover img,\n#literal-ine .li-card:hover img {\n  transform:scale(1.035);\n}\n#literal-ine .li-feature-body {\n  display:flex;\n  flex-direction:column;\n  justify-content:center;\n  padding:clamp(25px,4vw,50px);\n}\n#literal-ine .li-category {\n  color:#e3485b;\n  font-size:11px;\n  font-weight:800;\n  letter-spacing:1.6px;\n  text-transform:uppercase;\n}\n#literal-ine .li-feature h3 {\n  font-family:Georgia,serif;\n  font-size:clamp(26px,3vw,40px);\n  line-height:1.17;\n  margin:17px 0;\n}\n#literal-ine .li-feature h3 a {color:white}\n#literal-ine .li-feature p {\n  color:#c7d0dc;\n  font-size:15px;\n  line-height:1.7;\n}\n#literal-ine .li-date {\n  color:#8c96a4;\n  font-size:12px;\n}\n#literal-ine .li-feature .li-date {color:#c0cad8}\n#literal-ine .li-read {\n  display:inline-block;\n  color:#df344b;\n  font-size:13px;\n  font-weight:800;\n  margin-top:18px;\n}\n\n\/* CUADR\u00cdCULA *\/\n#literal-ine .li-grid-heading {\n  display:flex;\n  justify-content:space-between;\n  align-items:center;\n  gap:20px;\n  border-bottom:2px solid #172131;\n  padding-bottom:14px;\n  margin-bottom:28px;\n}\n#literal-ine .li-grid-heading h3 {\n  font-family:Georgia,serif;\n  font-size:27px;\n  margin:0;\n}\n#literal-ine .li-grid-heading span {\n  color:#8992a0;\n  font-size:10px;\n  letter-spacing:1.5px;\n}\n#literal-ine .li-grid {\n  display:grid;\n  grid-template-columns:repeat(3,minmax(0,1fr));\n  gap:38px 25px;\n}\n#literal-ine .li-card {\n  border-bottom:1px solid var(--line);\n  padding-bottom:25px;\n  min-width:0;\n}\n#literal-ine .li-card-image {\n  display:block;\n  aspect-ratio:16\/10;\n  background:#e3e8ef;\n  border-radius:7px;\n  overflow:hidden;\n  margin-bottom:18px;\n}\n#literal-ine .li-card-image img {\n  display:block;\n  width:100%;\n  height:100%;\n  object-fit:cover;\n  transition:transform .3s;\n}\n#literal-ine .li-card h3 {\n  font-family:Georgia,serif;\n  font-size:23px;\n  line-height:1.3;\n  margin:11px 0;\n}\n#literal-ine .li-card h3 a {color:#151d29}\n#literal-ine .li-card h3 a:hover {color:var(--red)}\n#literal-ine .li-card p {\n  color:#657081;\n  font-size:14px;\n  line-height:1.7;\n}\n#literal-ine .li-load-wrap {\n  text-align:center;\n  margin-top:45px;\n}\n#literal-ine #li-more {\n  background:#172131;\n  color:white;\n  border:0;\n  border-radius:5px;\n  padding:15px 32px;\n  font-weight:800;\n  font-size:14px;\n}\n#literal-ine #li-more:hover {background:var(--red)}\n#literal-ine .li-noimage {\n  display:flex;\n  align-items:center;\n  justify-content:center;\n  width:100%;\n  height:100%;\n  min-height:180px;\n  padding:20px;\n  background:#28374b;\n  color:#b8c5d5;\n  font-weight:800;\n  font-size:16px;\n  text-align:center;\n  letter-spacing:2px;\n}\n\n\/* CIERRE Y FOOTER *\/\n#literal-ine .li-editorial {\n  background:#f3f4f6;\n  padding:60px 0;\n  border-top:1px solid var(--line);\n}\n#literal-ine .li-editorial-inner {\n  display:flex;\n  justify-content:space-between;\n  align-items:center;\n  gap:30px;\n}\n#literal-ine .li-editorial h2 {\n  font-family:Georgia,serif;\n  font-size:clamp(29px,4vw,43px);\n  margin:12px 0;\n}\n#literal-ine .li-editorial p {\n  color:#657081;\n  max-width:650px;\n}\n#literal-ine .li-editorial a {\n  background:var(--red);\n  color:white;\n  font-size:13px;\n  font-weight:800;\n  padding:16px 23px;\n  border-radius:5px;\n  white-space:nowrap;\n}\n#literal-ine .li-footer {\n  background:#111722;\n  padding:25px 0;\n  color:#aeb8c7;\n}\n#literal-ine .li-footer-inner {\n  display:flex;\n  align-items:center;\n  gap:20px;\n  font-size:12px;\n}\n#literal-ine .li-footer strong {color:white}\n#literal-ine .li-footer a {\n  color:white;\n  margin-left:auto;\n}\n\n\/* RESPONSIVE *\/\n@media(max-width:950px) {\n  #literal-ine .li-feature {\n    grid-template-columns:1fr;\n  }\n  #literal-ine .li-feature-image,\n  #literal-ine .li-feature-image img {\n    min-height:0;\n    aspect-ratio:16\/9;\n  }\n  #literal-ine .li-grid {\n    grid-template-columns:repeat(2,minmax(0,1fr));\n  }\n}\n@media(max-width:620px) {\n  #literal-ine .li-header-inner {min-height:75px}\n  #literal-ine .li-brand {font-size:21px}\n  #literal-ine #li-logo {max-width:185px}\n  #literal-ine .li-home {padding:8px 11px}\n  #literal-ine .li-hero {padding:65px 0 38px}\n  #literal-ine .li-hero h1 {\n    font-size:clamp(47px,11vw,70px);\n    letter-spacing:-2px;\n  }\n  #literal-ine .li-main {padding:40px 0 60px}\n  #literal-ine .li-section-top {\n    align-items:start;\n    flex-direction:column;\n  }\n  #literal-ine .li-tools {\n    grid-template-columns:1fr;\n  }\n  #literal-ine .li-grid {grid-template-columns:1fr}\n  #literal-ine .li-card h3 {font-size:25px}\n  #literal-ine .li-editorial-inner {\n    flex-direction:column;\n    align-items:start;\n  }\n  #literal-ine .li-footer-inner {flex-wrap:wrap}\n  #literal-ine .li-grid-heading span {display:none}\n}\n&lt;\/style>\n\n&lt;script>\n(function() {\n  \"use strict\";\n\n  const root = document.getElementById(\"literal-ine\");\n  if (!root || root.dataset.ready) return;\n  root.dataset.ready = \"1\";\n\n  \/\/ CONFIGURACI\u00d3N\n  \/\/ Cambiar si WordPress est\u00e1 instalado en otro dominio.\n  const API = location.origin + \"\/wp-json\/wp\/v2\";\n  const LOGO_URL = \"\"; \/\/ URL del logotipo oficial (opcional)\n  const PAGE_SIZE = 12;\n\n  const grupos = {\n    taddei: &#91;\"Taddei\", \"Guadalupe Taddei\"],\n    ine: &#91;\"INE\"],\n    proveedor: &#91;\n      \"Jos\u00e9 Alfredo Hern\u00e1ndez\",\n      \"Jos\u00e9 Alfredo Hern\u00e1ndez Casillas\"\n    ]\n  };\n\n  const $ = s => root.querySelector(s);\n  const lista = $(\"#li-grid\");\n  const principal = $(\"#li-featured\");\n  const estadoTexto = $(\"#li-status\");\n  const botonMas = $(\"#li-more\");\n\n  let tagIDs = {};\n  let filtro = \"all\";\n  let pagina = 1;\n  let totalPaginas = 1;\n  let orden = \"desc\";\n  let busqueda = \"\";\n  let generacion = 0;\n  let cargando = false;\n\n  function normal(texto) {\n    return String(texto || \"\")\n      .normalize(\"NFD\")\n      .replace(\/&#91;\\u0300-\\u036f]\/g, \"\")\n      .toLowerCase()\n      .trim()\n      .replace(\/\\s+\/g, \" \");\n  }\n\n  function quitarHTML(html) {\n    const div = document.createElement(\"div\");\n    div.innerHTML = html || \"\";\n    return (div.textContent || \"\").replace(\/\\s+\/g, \" \").trim();\n  }\n\n  function esc(t) {\n    return String(t ?? \"\").replace(\/&#91;&amp;&lt;>\"']\/g, c => ({\n      \"&amp;\":\"&amp;amp;\", \"&lt;\":\"&amp;lt;\", \">\":\"&amp;gt;\",\n      '\"':\"&amp;quot;\", \"'\":\"&amp;#39;\"\n    })&#91;c]);\n  }\n\n  function safeURL(url) {\n    try {\n      const u = new URL(url, location.origin);\n      return &#91;\"https:\", \"http:\"].includes(u.protocol)\n        ? u.href : \"#\";\n    } catch(e) { return \"#\"; }\n  }\n\n  function fechaPost(p) {\n    if (!p.date) return \"\";\n    const f = p.date.substring(0,10).split(\"-\").map(Number);\n    return new Intl.DateTimeFormat(\"es-MX\", {\n      day:\"numeric\", month:\"long\", year:\"numeric\"\n    }).format(new Date(f&#91;0], f&#91;1]-1, f&#91;2]));\n  }\n\n  function imagenPost(p) {\n    const media = p._embedded?.&#91;\"wp:featuredmedia\"]?.&#91;0];\n    return safeURL(\n      media?.media_details?.sizes?.large?.source_url ||\n      media?.source_url || \"\"\n    );\n  }\n\n  function categoria(p) {\n    const ids = p.tags || &#91;];\n    if ((tagIDs.proveedor || &#91;]).some(id => ids.includes(id)))\n      return \"CONTRATOS Y PROVEEDORES\";\n    if ((tagIDs.taddei || &#91;]).some(id => ids.includes(id)))\n      return \"GUADALUPE TADDEI\";\n    return \"INSTITUTO NACIONAL ELECTORAL\";\n  }\n\n  function imagenHTML(p, grande) {\n    const src = imagenPost(p);\n    if (src === \"#\") {\n      return '&lt;div class=\"li-noimage\">LITERAL M\u00c9XICO&lt;\/div>';\n    }\n    return '&lt;img src=\"'+esc(src)+'\" alt=\"'+\n      esc(quitarHTML(p.title?.rendered))+\n      '\" loading=\"'+(grande ? \"eager\":\"lazy\")+'\">';\n  }\n\n  function tarjeta(p, grande=false) {\n    const titulo = quitarHTML(p.title?.rendered);\n    const resumen = quitarHTML(p.excerpt?.rendered);\n    const link = safeURL(p.link);\n    const max = grande ? 245 : 150;\n    const extracto = resumen.length > max\n      ? resumen.slice(0,max).trimEnd()+\"\u2026\" : resumen;\n\n    if (grande) {\n      return `\n      &lt;article class=\"li-feature\">\n        &lt;a href=\"${esc(link)}\" class=\"li-feature-image\">\n          ${imagenHTML(p,true)}\n        &lt;\/a>\n        &lt;div class=\"li-feature-body\">\n          &lt;span class=\"li-category\">${esc(categoria(p))}&lt;\/span>\n          &lt;h3>&lt;a href=\"${esc(link)}\">${esc(titulo)}&lt;\/a>&lt;\/h3>\n          &lt;p>${esc(extracto)}&lt;\/p>\n          &lt;span class=\"li-date\">${fechaPost(p)}&lt;\/span>\n          &lt;a class=\"li-read\" href=\"${esc(link)}\">\n            LEER ART\u00cdCULO \u2192\n          &lt;\/a>\n        &lt;\/div>\n      &lt;\/article>`;\n    }\n\n    return `\n    &lt;article class=\"li-card\">\n      &lt;a href=\"${esc(link)}\" class=\"li-card-image\">\n        ${imagenHTML(p,false)}\n      &lt;\/a>\n      &lt;span class=\"li-category\">${esc(categoria(p))}&lt;\/span>\n      &lt;h3>&lt;a href=\"${esc(link)}\">${esc(titulo)}&lt;\/a>&lt;\/h3>\n      &lt;p>${esc(extracto)}&lt;\/p>\n      &lt;span class=\"li-date\">${fechaPost(p)}&lt;\/span>\n      &lt;div>\n        &lt;a class=\"li-read\" href=\"${esc(link)}\">LEER M\u00c1S \u2192&lt;\/a>\n      &lt;\/div>\n    &lt;\/article>`;\n  }\n\n  \/\/ Detectar el logotipo configurado en el tema.\n  function iniciarLogo() {\n    const img = $(\"#li-logo\");\n    const text = $(\"#li-brand-text\");\n\n    let src = LOGO_URL;\n\n    if (!src) {\n      const logos = document.querySelectorAll(\n        \"header .custom-logo, .site-logo img, \" +\n        \".wp-block-site-logo img, .site-header .custom-logo\"\n      );\n      const original = &#91;...logos].find(x => !root.contains(x));\n      if (original) src = original.currentSrc || original.src;\n    }\n\n    if (src) {\n      img.onload = () => {\n        img.hidden = false;\n        text.hidden = true;\n      };\n      img.src = src;\n    }\n  }\n\n  \/\/ Encontrar IDs reales de etiquetas.\n  async function buscarEtiquetas() {\n    const nombres = &#91;...new Set(Object.values(grupos).flat())];\n    const resultados = await Promise.all(nombres.map(async n => {\n      const res = await fetch(\n        API+\"\/tags?per_page=100&amp;search=\"+encodeURIComponent(n),\n        {credentials:\"same-origin\"}\n      );\n      if (!res.ok) throw new Error(\"Error al obtener etiquetas\");\n      const tags = await res.json();\n      return tags.filter(t => normal(t.name) === normal(n));\n    }));\n\n    const mapa = new Map();\n    resultados.flat().forEach(t => mapa.set(normal(t.name),t.id));\n\n    for (const &#91;grupo,nombresGrupo] of Object.entries(grupos)) {\n      tagIDs&#91;grupo] = nombresGrupo\n        .map(n => mapa.get(normal(n)))\n        .filter(Boolean);\n    }\n  }\n\n  function idsSeleccionados() {\n    const ids = filtro === \"all\"\n      ? Object.values(tagIDs).flat()\n      : (tagIDs&#91;filtro] || &#91;]);\n    return &#91;...new Set(ids)];\n  }\n\n  async function cargar(reiniciar=false) {\n    if (cargando &amp;&amp; !reiniciar) return;\n\n    if (reiniciar) {\n      generacion++;\n      pagina = 1;\n      lista.innerHTML = \"\";\n      principal.innerHTML = \"\";\n      $(\"#li-grid-heading\").hidden = true;\n    }\n\n    const actual = generacion;\n    const pagActual = pagina;\n    const ids = idsSeleccionados();\n\n    if (!ids.length) {\n      estadoTexto.textContent =\n        \"No se encontraron etiquetas para esta secci\u00f3n.\";\n      $(\"#li-count\").textContent = \"0 publicaciones\";\n      botonMas.hidden = true;\n      return;\n    }\n\n    cargando = true;\n    botonMas.disabled = true;\n    botonMas.hidden = true;\n    estadoTexto.textContent = \"Consultando publicaciones...\";\n\n    try {\n      const params = new URLSearchParams({\n        tags:ids.join(\",\"),\n        page:String(pagActual),\n        per_page:String(PAGE_SIZE),\n        order:orden,\n        orderby:\"date\",\n        _embed:\"wp:featuredmedia\"\n      });\n      if (busqueda) params.set(\"search\",busqueda);\n\n      const res = await fetch(API+\"\/posts?\"+params.toString(), {\n        credentials:\"same-origin\"\n      });\n      if (!res.ok) throw new Error(\"Error HTTP \"+res.status);\n\n      const posts = await res.json();\n      if (actual !== generacion) return;\n\n      const total = Number(res.headers.get(\"X-WP-Total\") || 0);\n      totalPaginas = Number(\n        res.headers.get(\"X-WP-TotalPages\") || 1\n      );\n\n      $(\"#li-count\").textContent = total+\" publicaciones\";\n\n      if (reiniciar &amp;&amp; posts.length) {\n        principal.innerHTML = tarjeta(posts&#91;0],true);\n        lista.innerHTML = posts.slice(1).map(\n          p => tarjeta(p)\n        ).join(\"\");\n      } else {\n        lista.insertAdjacentHTML(\n          \"beforeend\",posts.map(p => tarjeta(p)).join(\"\")\n        );\n      }\n\n      $(\"#li-grid-heading\").hidden = !lista.children.length;\n\n      estadoTexto.textContent = posts.length\n        ? \"\" : \"No se encontraron publicaciones.\";\n\n      pagina = pagActual+1;\n      botonMas.hidden = pagActual >= totalPaginas;\n\n    } catch(e) {\n      if (actual !== generacion) return;\n      console.error(e);\n      estadoTexto.textContent =\n        \"No fue posible recuperar las noticias. \" +\n        \"Comprueba las etiquetas y el acceso a la API REST.\";\n    } finally {\n      if (actual === generacion) {\n        cargando = false;\n        botonMas.disabled = false;\n      }\n    }\n  }\n\n  const titulos = {\n    all:\"Toda la cobertura\",\n    taddei:\"Guadalupe Taddei\",\n    ine:\"Instituto Nacional Electoral\",\n    proveedor:\"Jos\u00e9 Alfredo Hern\u00e1ndez\"\n  };\n\n  root.querySelectorAll(\".li-nav button\").forEach(btn => {\n    btn.addEventListener(\"click\",() => {\n      filtro = btn.dataset.filter;\n\n      root.querySelectorAll(\".li-nav button\").forEach(b =>\n        b.classList.toggle(\"li-active\",b===btn)\n      );\n\n      $(\"#li-section-name\").textContent = titulos&#91;filtro];\n      cargar(true);\n    });\n  });\n\n  let debounce;\n  $(\"#li-search\").addEventListener(\"input\",e => {\n    clearTimeout(debounce);\n    debounce = setTimeout(() => {\n      busqueda = e.target.value.trim();\n      cargar(true);\n    },400);\n  });\n\n  $(\"#li-sort\").addEventListener(\"change\",e => {\n    orden = e.target.value;\n    cargar(true);\n  });\n\n  botonMas.addEventListener(\"click\",() => cargar(false));\n\n  async function iniciar() {\n    iniciarLogo();\n    try {\n      await buscarEtiquetas();\n      await cargar(true);\n    } catch(e) {\n      console.error(e);\n      estadoTexto.textContent =\n        \"Error al conectar con WordPress. \" +\n        \"Verifica que la API REST est\u00e9 habilitada.\";\n    }\n  }\n\n  iniciar();\n})();\n&lt;\/script>\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"twitterCardType":"","cardImageID":0,"cardImage":"","cardTitle":"","cardDesc":"","cardImageAlt":"","cardPlayer":"","cardPlayerWidth":0,"cardPlayerHeight":0,"cardPlayerStream":"","cardPlayerCodec":"","footnotes":""},"class_list":["post-4548","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/literalmex.com\/index.php\/wp-json\/wp\/v2\/pages\/4548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/literalmex.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/literalmex.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/literalmex.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/literalmex.com\/index.php\/wp-json\/wp\/v2\/comments?post=4548"}],"version-history":[{"count":1,"href":"https:\/\/literalmex.com\/index.php\/wp-json\/wp\/v2\/pages\/4548\/revisions"}],"predecessor-version":[{"id":4550,"href":"https:\/\/literalmex.com\/index.php\/wp-json\/wp\/v2\/pages\/4548\/revisions\/4550"}],"wp:attachment":[{"href":"https:\/\/literalmex.com\/index.php\/wp-json\/wp\/v2\/media?parent=4548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}