{"id":594,"date":"2026-03-24T05:50:38","date_gmt":"2026-03-24T05:50:38","guid":{"rendered":"https:\/\/grupocesco.mx\/?page_id=594"},"modified":"2026-08-26T17:44:10","modified_gmt":"2026-08-26T17:44:10","slug":"inversion-industrial","status":"publish","type":"page","link":"https:\/\/grupocesco.mx\/en\/inversion-industrial\/","title":{"rendered":"Industrial Investment"},"content":{"rendered":"\n<div class=\"wp-block-cover alignfull\" style=\"min-height:861px;aspect-ratio:unset;\"><img loading=\"lazy\" decoding=\"async\" width=\"1350\" height=\"1350\" class=\"wp-block-cover__image-background wp-image-855 size-full\" alt=\"\" src=\"https:\/\/grupocesco.mx\/wp-content\/uploads\/2026\/04\/capital-park-colotlan-2.webp\" style=\"object-position:56% 75%\" data-object-fit=\"cover\" data-object-position=\"56% 75%\" srcset=\"https:\/\/grupocesco.mx\/wp-content\/uploads\/2026\/04\/capital-park-colotlan-2.webp 1350w, https:\/\/grupocesco.mx\/wp-content\/uploads\/2026\/04\/capital-park-colotlan-2-300x300.webp 300w, https:\/\/grupocesco.mx\/wp-content\/uploads\/2026\/04\/capital-park-colotlan-2-1024x1024.webp 1024w, https:\/\/grupocesco.mx\/wp-content\/uploads\/2026\/04\/capital-park-colotlan-2-150x150.webp 150w, https:\/\/grupocesco.mx\/wp-content\/uploads\/2026\/04\/capital-park-colotlan-2-768x768.webp 768w, https:\/\/grupocesco.mx\/wp-content\/uploads\/2026\/04\/capital-park-colotlan-2-500x500.webp 500w, https:\/\/grupocesco.mx\/wp-content\/uploads\/2026\/04\/capital-park-colotlan-2-800x800.webp 800w, https:\/\/grupocesco.mx\/wp-content\/uploads\/2026\/04\/capital-park-colotlan-2-1280x1280.webp 1280w\" sizes=\"auto, (max-width: 1350px) 100vw, 1350px\" \/><span aria-hidden=\"true\" class=\"wp-block-cover__background has-ast-global-color-3-background-color has-background-dim-30 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-constrained wp-block-cover-is-layout-constrained\">\n<div style=\"height:61px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h1 class=\"wp-block-heading has-text-align-center hero-title has-ast-global-color-4-color has-text-color has-link-color wp-elements-bda52feb853e23dcdafb4bbba945abed\" style=\"font-size:70px\">El activo industrial<\/h1>\n\n\n\n<p class=\"has-text-align-center has-ast-global-color-4-color has-text-color has-link-color wp-elements-a98a2deb13c6ecd3c9f8a1313d8ca8ae wp-block-paragraph\" style=\"font-size:25px\">m\u00e1s estable del Real Estate en M\u00e9xico<\/p>\n<\/div><\/div>\n\n\n\n<div style=\"height:100px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center has-ast-global-color-0-color has-text-color has-link-color wp-elements-8560fe31c7ca18a955c78727db5fe037\" style=\"font-size:20px\">Desarrollo integral de proyectos industriales en M\u00e9xico<\/h2>\n\n\n\n<div style=\"height:1px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center ti has-ast-global-color-3-color has-text-color has-link-color wp-elements-3e74b960d5e5df1bfa4258da8914ab98 wp-block-paragraph\" style=\"font-size:40px\">Por qu\u00e9 invertir en naves industriales<\/p>\n\n\n\n<div style=\"height:18px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center has-ast-global-color-3-color has-text-color has-link-color wp-elements-adfe8b6d2bc2e61a877807cd805d884f wp-block-paragraph\">Invertir en naves industriales es uno de los modelos m\u00e1s estables dentro del real estate actual. La l\u00f3gica es simple:<\/p>\n\n\n\n<p class=\"has-text-align-center has-ast-global-color-3-color has-text-color has-link-color has-medium-font-size wp-elements-587ef19da666645ffd50689a2752d2f5 wp-block-paragraph\"><strong>Compras una bodega \u2192 se renta a una empresa \u2192 recibes flujo mensual.<\/strong><\/p>\n\n\n\n<div style=\"height:75px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div class=\"wp-block-group top1 has-ast-global-color-7-background-color has-background is-layout-constrained wp-container-core-group-is-layout-f1e3dc65 wp-block-group-is-layout-constrained\" style=\"border-top-left-radius:20px;border-top-right-radius:20px;border-bottom-left-radius:20px;border-bottom-right-radius:20px;padding-top:var(--wp--preset--spacing--30);padding-right:var(--wp--preset--spacing--30);padding-bottom:var(--wp--preset--spacing--30);padding-left:var(--wp--preset--spacing--30)\">\n<div style=\"height:22px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center ti wp-block-paragraph\" style=\"font-size:40px\"><strong>Construcci\u00f3n de Naves Industriales<\/strong><\/p>\n\n\n\n<hr class=\"wp-block-separator alignfull has-text-color has-ast-global-color-0-color has-alpha-channel-opacity has-ast-global-color-0-background-color has-background is-style-wide\"\/>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\" style=\"font-size:28px\">Por qu\u00e9 este activo sostiene su rentabilidad<\/p>\n\n\n\n<div class=\"wp-block-group svc-cards is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group svc-card is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"svc-num wp-block-paragraph\">01<\/p>\n\n\n\n<p class=\"svc-txt wp-block-paragraph\">Alta demanda por log\u00edstica y nearshoring<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group svc-card is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"svc-num wp-block-paragraph\">02<\/p>\n\n\n\n<p class=\"svc-txt wp-block-paragraph\">Contratos a largo plazo<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group svc-card is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"svc-num wp-block-paragraph\">03<\/p>\n\n\n\n<p class=\"svc-txt wp-block-paragraph\">Inquilinos AAA<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group svc-card is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"svc-num wp-block-paragraph\">04<\/p>\n\n\n\n<p class=\"svc-txt wp-block-paragraph\">Bajo costo de mantenimiento<\/p>\n<\/div>\n<\/div>\n\n\n\n<div style=\"height:5px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div>\n\n\n\n<div style=\"height:25px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<section class=\"timeline-section\">\n\n  <div class=\"timeline\">\n    <div class=\"timeline-progress\" id=\"progress\"><\/div>\n\n    <div class=\"timeline-item left\">\n      <div class=\"timeline-number\">01<\/div>\n      <div class=\"timeline-dot\"><\/div>\n      <div class=\"timeline-title\">Selecci\u00f3n del proyecto<\/div>\n      <div class=\"timeline-text\">\n        Ubicaci\u00f3n estrat\u00e9gica con demanda log\u00edstica en corredores industriales clave.\n      <\/div>\n    <\/div>\n\n    <div class=\"timeline-item right\">\n      <div class=\"timeline-number\">02<\/div>\n      <div class=\"timeline-dot\"><\/div>\n      <div class=\"timeline-title\">Estructuraci\u00f3n del desarrollo<\/div>\n      <div class=\"timeline-text\">\n        Dise\u00f1o eficiente enfocado en rentabilidad y operaci\u00f3n industrial.\n      <\/div>\n    <\/div>\n\n    <div class=\"timeline-item left\">\n      <div class=\"timeline-number\">03<\/div>\n      <div class=\"timeline-dot\"><\/div>\n      <div class=\"timeline-title\">Construcci\u00f3n especializada<\/div>\n      <div class=\"timeline-text\">\n        Control de costos (CAPEX) y tiempos de entrega bajo est\u00e1ndares t\u00e9cnicos.\n      <\/div>\n    <\/div>\n\n    <div class=\"timeline-item right\">\n      <div class=\"timeline-number\">04<\/div>\n      <div class=\"timeline-dot\"><\/div>\n      <div class=\"timeline-title\">Comercializaci\u00f3n del activo<\/div>\n      <div class=\"timeline-text\">\n        Colocaci\u00f3n con empresas nacionales e internacionales.\n      <\/div>\n    <\/div>\n\n    <div class=\"timeline-item left\">\n      <div class=\"timeline-number\">05<\/div>\n      <div class=\"timeline-dot\"><\/div>\n      <div class=\"timeline-title\">Estabilizaci\u00f3n de renta<\/div>\n      <div class=\"timeline-text\">\n        Contrato firmado y generaci\u00f3n de flujo constante.\n      <\/div>\n    <\/div>\n\n    <div class=\"timeline-item right\">\n      <div class=\"timeline-number\">06<\/div>\n      <div class=\"timeline-dot\"><\/div>\n      <div class=\"timeline-title\">Administraci\u00f3n y seguimiento<\/div>\n      <div class=\"timeline-text\">\n        Optimizaci\u00f3n del activo y mantenimiento del valor a largo plazo.\n      <\/div>\n    <\/div>\n\n  <\/div>\n\n<\/section>\n\n<style>\n\/* \ud83d\udc47 IMPORTANTE: aseg\u00farate de tener cargada tu fuente Formadjr *\/\n@font-face {\n  font-family: 'Formadjr';\n  src: url('Formadjr.woff2') format('woff2');\n}\n\nbody{\n  margin:0;\n  font-family: 'Formadjr', sans-serif;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n\n\/* SECTION *\/\n.timeline-section{\n  padding:100px 10%;\n}\n\n\/* CONTENEDOR *\/\n.timeline{\n  position:relative;\n  max-width:900px;\n  margin:auto;\n}\n\n\/* LINEA BASE *\/\n.timeline::before{\n  content:\"\";\n  position:absolute;\n  left:50%;\n  top:0;\n  width:2px;\n  height:100%;\n  background:#e5e5e5;\n  transform:translateX(-50%);\n}\n\n\/* LINEA PROGRESO *\/\n.timeline-progress{\n  position:absolute;\n  left:50%;\n  top:0;\n  width:2px;\n  height:0%;\n  background:#f9a11f;\n  transform:translateX(-50%);\n  transition:height 1s ease;\n}\n\n\/* ITEM *\/\n.timeline-item{\n  position:relative;\n  width:50%;\n  padding:40px 30px;\n  opacity:0;\n  transform:translateY(40px);\n  transition:all 0.8s ease;\n}\n\n\/* IZQUIERDA *\/\n.timeline-item.left{\n  left:0;\n  text-align:right;\n}\n\n\/* DERECHA *\/\n.timeline-item.right{\n  left:50%;\n}\n\n\/* ACTIVO *\/\n.timeline-item.show{\n  opacity:1;\n  transform:translateY(0);\n}\n\n\/* NUMERO *\/\n.timeline-number{\n  font-size:90px;\n  opacity:0.05;\n  font-family:'Formadjr';\n  font-weight:600;\n}\n\n\/* PUNTO *\/\n.timeline-dot{\n  position:absolute;\n  top:40px;\n  width:12px;\n  height:12px;\n  background:#bbb;\n  border-radius:50%;\n  z-index:2;\n}\n\n\/* POSICI\u00d3N PUNTOS *\/\n.timeline-item.left .timeline-dot{\n  right:-6px;\n}\n\n.timeline-item.right .timeline-dot{\n  left:-6px;\n}\n\n\/* ACTIVO DOT *\/\n.timeline-item.show .timeline-dot{\n  background:#f9a11f;\n  transform:scale(1.4);\n}\n\n\/* TEXTO *\/\n.timeline-title{\n  font-size:22px;\n  margin:10px 0;\n  font-weight:600;\n  font-family:'Formadjr';\n}\n\n.timeline-text{\n  font-size:18px;\n  font-weight:400;\n  margin-bottom:10px;\n  margin-top:10px;\n  color:#000;\n  font-family:'Formadjr';\n}\n\n\/* \ud83d\udcf1 MOBILE *\/\n@media(max-width:768px){\n\n  .timeline-section{\n    padding:80px 20px;\n  }\n\n  .timeline::before,\n  .timeline-progress{\n    left:10px;\n  }\n\n  .timeline-item{\n    width:100%;\n    left:0 !important;\n    text-align:left;\n    padding-left:40px;\n  }\n\n  .timeline-dot{\n    left:0 !important;\n  }\n\n  .timeline-number{\n    font-size:50px;\n  }\n}\n<\/style>\n\n<script>\ndocument.addEventListener(\"DOMContentLoaded\", function(){\n\n  const items = document.querySelectorAll('.timeline-item');\n  const progress = document.getElementById('progress');\n  const timeline = document.querySelector('.timeline');\n\n  function updateTimeline(){\n    const rect = timeline.getBoundingClientRect();\n    const windowHeight = window.innerHeight;\n\n    let progressHeight = ((windowHeight - rect.top) \/ rect.height) * 100;\n    progressHeight = Math.max(0, Math.min(progressHeight, 100));\n    progress.style.height = progressHeight + \"%\";\n\n    items.forEach(item => {\n      const itemTop = item.getBoundingClientRect().top;\n\n      if(itemTop < windowHeight * 0.85){\n        item.classList.add('show');\n      }\n    });\n  }\n\n  window.addEventListener('scroll', updateTimeline);\n  updateTimeline();\n\n});\n<\/script>\n\n\n\n<div class=\"wp-block-cover alignfull has-parallax box1\" style=\"border-top-left-radius:20px;border-top-right-radius:20px;min-height:480px;aspect-ratio:unset;\"><div class=\"wp-block-cover__image-background wp-image-561 size-full has-parallax\" style=\"background-position:50% 50%;background-image:url(https:\/\/grupocesco.mx\/wp-content\/uploads\/2026\/03\/construccion-bodegas-industriales-jalisco-8.webp)\"><\/div><span aria-hidden=\"true\" class=\"wp-block-cover__background has-ast-global-color-3-background-color has-background-dim-70 has-background-dim\"><\/span><div class=\"wp-block-cover__inner-container is-layout-constrained wp-block-cover-is-layout-constrained\">\n<div style=\"height:70px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<figure class=\"wp-block-image aligncenter size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"176\" height=\"153\" src=\"https:\/\/grupocesco.mx\/wp-content\/uploads\/2026\/03\/favicon-cesco-grupo.webp\" alt=\"\" class=\"wp-image-23\" style=\"aspect-ratio:1.1504097277293153;width:52px;height:auto\"\/><\/figure>\n\n\n\n<p class=\"has-text-align-center ti has-ast-global-color-4-color has-text-color has-link-color wp-elements-94d18425ff803f448c3e5d6c99c12d01 wp-block-paragraph\" style=\"font-size:40px\">Indicadores del mercado industrial en M\u00e9xico<\/p>\n\n\n\n<p class=\"has-text-align-center has-ast-global-color-5-color has-text-color has-link-color has-medium-font-size wp-elements-f44f8db5d897492a2191ee51e293c2b3 wp-block-paragraph\">Datos reales que respaldan la rentabilidad y estabilidad del sector<\/p>\n\n\n\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;800&#038;display=swap\" rel=\"stylesheet\">\n\n<style>\nbody{\n  margin:0;\n  font-family: 'Formadjr', sans-serif;\n  background:#0b0b0b;\n}\n\n\/* SECTION *\/\n.stats-section{\n  padding:60px 40px;\n}\n\n\/* GRID *\/\n.stats-grid{\n  display:grid;\n  grid-template-columns: repeat(auto-fit, minmax(280px,1fr));\n  gap:24px;\n  align-items:stretch;\n}\n\n\/* ITEM GLASS DARK *\/\n.stat-item{\n  padding:42px 34px;\n  border-radius:22px;\n\n  background: rgba(0,0,0,0.65);\n  backdrop-filter: blur(18px);\n  -webkit-backdrop-filter: blur(18px);\n\n  border: 1px solid rgba(255,255,255,0.08);\n\n  box-shadow: 0 20px 60px rgba(0,0,0,0.6);\n\n  transition: all 0.35s ease;\n}\n\n\/* HOVER M\u00c1S ELEGANTE *\/\n.stat-item:hover{\n  transform: translateY(-8px);\n  border: 1px solid rgba(247,162,31,0.4);\n  box-shadow: 0 30px 80px rgba(0,0,0,0.9);\n}\n\n\/* NUMBER *\/\n.stat-number{\n  font-size:30px;\n  font-weight:800;\n  letter-spacing:-1.5px;\n  margin-bottom:18px;\n  text-align:center;\n}\n\n\/* TITLE (AMARILLO) *\/\n.stat-text{\n  font-size:20px;\n  color:#F7A21F;\n  text-align:center;\n  font-weight:600;\n  margin-bottom:10px;\n}\n\n\/* SUBTEXT (BLANCO LEGIBLE) *\/\n.stat-ti{\n  font-size:16px;\n  color:rgba(255,255,255,0.85);\n  line-height:1.6;\n  text-align:center;\n}\n\n\/* NOTE *\/\n.note{\n  margin-top:40px;\n  text-align:center;\n  font-size:13px;\n  color:rgba(255,255,255,0.5);\n}\n\n\/* RESPONSIVE *\/\n@media(max-width:768px){\n\n  .stats-section{\n    padding:40px 20px;\n  }\n\n  .stat-item{\n    padding:40px 25px;\n  }\n\n  .stat-number{\n    font-size:30px;\n  }\n\n  .stat-text{\n    font-size:18px;\n  }\n\n  .stat-ti{\n    font-size:15px;\n  }\n}\n<\/style>\n\n<section class=\"stats-section\">\n\n  <div class=\"stats-grid\">\n\n    <div class=\"stat-item\">\n      <div class=\"stat-number\" data-target=\"9.58\" data-suffix=\"%\">0%<\/div>\n      <div class=\"stat-text\">CAP RATE Promedio<\/div>\n      <div class=\"stat-ti\">Rendimiento anual estimado del 9.58%<\/div>\n    <\/div>\n\n    <div class=\"stat-item\">\n      <div class=\"stat-number\" data-target=\"4\" data-suffix=\"%\">0%<\/div>\n      <div class=\"stat-text\">Vacancia del 4%<\/div>\n      <div class=\"stat-ti\">Hay poco espacio disponible. Los proyectos mejor planeados son los que se ocupan primero.<\/div>\n    <\/div>\n\n    <div class=\"stat-item\">\n      <div class=\"stat-number\" data-target=\"7.16\" data-prefix=\"$\" data-suffix=\" USD\/m\u00b2\">0<\/div>\n      <div class=\"stat-text\">\u00bfPagar m\u00e1s por rentas?<\/div>\n      <div class=\"stat-ti\">El promedio de $7.16 USD\/m\u00b2 no es sobreprecio, es el costo de la eficiencia operativa y la ubicaci\u00f3n estrat\u00e9gica.<\/div>\n    <\/div>\n\n    <div class=\"stat-item\">\n      <div class=\"stat-number\" data-target=\"106\" data-suffix=\" millones m\u00b2\">0<\/div>\n      <div class=\"stat-text\">Huella industrial en M\u00e9xico<\/div>\n      <div class=\"stat-ti\">La demanda es real y estructural, liderada por E-commerce y manufactura ligera.<\/div>\n    <\/div>\n\n  <\/div>\n\n  <div class=\"note\">\n    Datos al 2Q 2026\n  <\/div>\n\n<\/section>\n\n<script>\nconst counters = document.querySelectorAll('.stat-number');\n\nconst animate = (el) => {\n  const target = parseFloat(el.getAttribute('data-target'));\n  let current = 0;\n  const duration = 1200;\n  const increment = target \/ (duration \/ 16);\n\n  const update = () => {\n    current += increment;\n\n    if(current < target){\n      format(el, current);\n      requestAnimationFrame(update);\n    } else {\n      format(el, target);\n    }\n  };\n\n  update();\n};\n\nconst format = (el, value) => {\n  const suffix = el.getAttribute('data-suffix') || \"\";\n  const prefix = el.getAttribute('data-prefix') || \"\";\n\n  let formatted = value.toFixed(2);\n\n  if(Number(formatted) % 1 === 0){\n    formatted = parseInt(formatted);\n  }\n\n  el.innerText = prefix + formatted + suffix;\n};\n\nconst observer = new IntersectionObserver(entries => {\n  entries.forEach(entry => {\n    if(entry.isIntersecting){\n      animate(entry.target);\n      observer.unobserve(entry.target);\n    }\n  });\n}, { threshold: 0.5 });\n\ncounters.forEach(c => observer.observe(c));\n<\/script>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div style=\"height:22px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n<\/div><\/div>\n\n\n\n<div style=\"height:110px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center has-ast-global-color-0-color has-text-color has-link-color wp-elements-8a37c794d3d1be10592dc23f4330f5c8 wp-block-paragraph\" style=\"font-size:20px\">2017-2026<\/p>\n\n\n\n<div style=\"height:6px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center ti wp-block-paragraph\" style=\"font-size:40px\">Evoluci\u00f3n de M2 construidos<\/p>\n\n\n\n<section class=\"chart-section\">\n\n  <div class=\"chart-container\">\n\n    <!-- GR\u00c1FICA -->\n    <div class=\"chart-box\">\n      <canvas id=\"chart\"><\/canvas>\n    <\/div>\n\n    <!-- DATOS -->\n    <div class=\"chart-data\">\n      <div class=\"data-item\"><strong>2017:<\/strong> 25,745 m\u00b2<\/div>\n      <div class=\"data-item\"><strong>2018:<\/strong> 38,256 m\u00b2<\/div>\n      <div class=\"data-item\"><strong>2019:<\/strong> 58,102 m\u00b2<\/div>\n      <div class=\"data-item\"><strong>2020:<\/strong> 97,719 m\u00b2<\/div>\n      <div class=\"data-item\"><strong>2021:<\/strong> 108,747 m\u00b2<\/div>\n      <div class=\"data-item\"><strong>2022:<\/strong> 92,566 m\u00b2<\/div>\n      <div class=\"data-item\"><strong>2023:<\/strong> 116,239 m\u00b2<\/div>\n      <div class=\"data-item\"><strong>2024:<\/strong> 96,250 m\u00b2<\/div>\n      <div class=\"data-item\"><strong>2025:<\/strong> 70,736 m\u00b2<\/div>\n      <div class=\"data-item\"><strong>2026:<\/strong> 84,000 m\u00b2<\/div>\n    <\/div>\n\n  <\/div>\n\n<\/section>\n\n<style>\nbody{\n  margin:0;\n  font-family:'Formadjr', sans-serif;\n  background:#fff;\n}\n\n\/* SECTION *\/\n.chart-section{\n  padding:80px 10%;\n}\n\n\/* CONTENEDOR *\/\n.chart-container{\n  display:grid;\n  grid-template-columns:2fr 1fr;\n  gap:40px;\n  align-items:center;\n}\n\n\/* BOX *\/\n.chart-box{\n  background:#fff;\n  border-radius:20px;\n  padding:30px;\n  border:1px solid #eee;\n  opacity:0;\n  transform:translateY(40px);\n  transition:all 0.8s ease;\n}\n\n.chart-box.show{\n  opacity:1;\n  transform:translateY(0);\n}\n\n\/* DATOS *\/\n.chart-data{\n  display:flex;\n  flex-direction:column;\n  gap:12px;\n}\n\n.data-item{\n  background:#f5f5f5;\n  padding:12px;\n  border-radius:12px;\n  font-size:16px;\n  transition:all 0.3s ease;\n}\n\n.data-item:hover{\n  background:#f9a11f;\n  color:#fff;\n  transform:translateX(5px);\n}\n\n\/* CANVAS *\/\ncanvas{\n  width:100%;\n  height:400px;\n}\n\n\/* MOBILE *\/\n@media(max-width:768px){\n  .chart-container{\n    grid-template-columns:1fr;\n  }\n\n  canvas{\n    height:280px;\n  }\n}\n<\/style>\n\n<script>\nfunction iniciarGrafica(){\n\nconst data = [\n  {year:2017, value:25745},\n  {year:2018, value:38256},\n  {year:2019, value:58102},\n  {year:2020, value:97719},\n  {year:2021, value:108747},\n  {year:2022, value:92566},\n  {year:2023, value:116239},\n  {year:2024, value:96250},\n  {year:2025, value:70736},\n  {year:2026, value:84000}\n];\n\nconst canvas = document.getElementById(\"chart\");\nconst ctx = canvas.getContext(\"2d\");\n\nconst NARANJA = \"#f7a21f\";\nconst TINTA = \"#241f21\";\n\nlet points = [];\nlet hoveredIndex = -1;\nlet animated = false;\nlet W = 0, H = 0;\n\n\/* Se dibuja a la resolucion real de la pantalla. Antes el canvas se\n   creaba con las medidas en px de CSS, asi que en equipos retina tenia\n   la mitad de los pixeles que mostraba y la linea salia borrosa. *\/\nfunction resize(){\n  const rect = canvas.getBoundingClientRect();\n  const dpr = window.devicePixelRatio || 1;\n  W = rect.width;\n  H = rect.height;\n  canvas.width = Math.round(W * dpr);\n  canvas.height = Math.round(H * dpr);\n  ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n}\n\nfunction fmt(v){ return v.toLocaleString(\"es-MX\"); }\n\nfunction draw(progress = 1){\n  ctx.clearRect(0,0,W,H);\n\n  const isMobile = W < 500;\n  const padL = isMobile ? 46 : 78;\n  const padR = isMobile ? 14 : 24;\n  const padT = 26;\n  const padB = isMobile ? 48 : 58;\n\n  const width = W - padL - padR;\n  const height = H - padT - padB;\n  const stepX = width\/(data.length-1);\n\n  const yValues = [0,30000,60000,90000,120000];\n  const max = 120000;\n\n  \/* RETICULA *\/\n  ctx.lineWidth = 1;\n  ctx.font = (isMobile ? \"11px\" : \"12px\") + \" Formadjr, sans-serif\";\n  ctx.textBaseline = \"middle\";\n  yValues.forEach(function(v){\n    const y = Math.round(padT + height - (v\/max)*height) + 0.5;\n    ctx.strokeStyle = v === 0 ? \"#d8d3ca\" : \"#ece8e0\";\n    ctx.beginPath();\n    ctx.moveTo(padL, y);\n    ctx.lineTo(padL + width, y);\n    ctx.stroke();\n    ctx.fillStyle = \"#8a8580\";\n    ctx.textAlign = \"right\";\n    const etiqueta = v === 0 ? \"0\" : (isMobile ? (v\/1000) + \"k\" : fmt(v));\n    ctx.fillText(etiqueta, padL - 10, y);\n  });\n\n  points = data.map(function(d,i){\n    return { x: padL + stepX*i, y: padT + height - (d.value\/max)*height*progress };\n  });\n\n  \/* AREA BAJO LA LINEA *\/\n  const grad = ctx.createLinearGradient(0, padT, 0, padT + height);\n  grad.addColorStop(0, \"rgba(247,162,31,0.20)\");\n  grad.addColorStop(1, \"rgba(247,162,31,0)\");\n  ctx.beginPath();\n  ctx.moveTo(points[0].x, padT + height);\n  points.forEach(function(p){ ctx.lineTo(p.x,p.y); });\n  ctx.lineTo(points[points.length-1].x, padT + height);\n  ctx.closePath();\n  ctx.fillStyle = grad;\n  ctx.fill();\n\n  \/* LINEA *\/\n  ctx.beginPath();\n  points.forEach(function(p,i){ if(i===0){ctx.moveTo(p.x,p.y);}else{ctx.lineTo(p.x,p.y);} });\n  ctx.strokeStyle = NARANJA;\n  ctx.lineWidth = 2.5;\n  ctx.lineJoin = \"round\";\n  ctx.lineCap = \"round\";\n  ctx.stroke();\n\n  \/* MARCAS *\/\n  points.forEach(function(p,i){\n    const r = hoveredIndex === i ? 6 : 4;\n    ctx.beginPath(); ctx.arc(p.x,p.y,r+2.5,0,Math.PI*2); ctx.fillStyle = \"#fff\"; ctx.fill();\n    ctx.beginPath(); ctx.arc(p.x,p.y,r,0,Math.PI*2); ctx.fillStyle = NARANJA; ctx.fill();\n  });\n\n  \/* ANIOS. En movil se alternan para que no se encimen, pero el ultimo\n     siempre se dibuja. *\/\n  ctx.font = (isMobile ? \"11px\" : \"12px\") + \" Formadjr, sans-serif\";\n  ctx.fillStyle = \"#8a8580\";\n  ctx.textAlign = \"center\";\n  ctx.textBaseline = \"alphabetic\";\n  data.forEach(function(d,i){\n    if(isMobile){ if(i % 2 !== 0){ if(i !== data.length - 1) return; } }\n    ctx.fillText(d.year, points[i].x, H - padB + 22);\n  });\n\n  \/* ROTULOS DE EJE *\/\n  ctx.fillStyle = \"#b3aca3\";\n  ctx.font = (isMobile ? \"10px\" : \"11px\") + \" Formadjr, sans-serif\";\n  ctx.fillText(\"A\u00d1O\", padL + width\/2, H - 8);\n  if(!isMobile){\n    ctx.textBaseline = \"middle\";\n    ctx.save();\n    ctx.translate(19, padT + height\/2);\n    ctx.rotate(-Math.PI\/2);\n    ctx.textAlign = \"center\";\n    ctx.fillText(\"M\u00b2 CONSTRUIDOS\", 0, 0);\n    ctx.restore();\n  }\n\n  \/* TOOLTIP *\/\n  if(hoveredIndex !== -1){\n    const p = points[hoveredIndex];\n    const d = data[hoveredIndex];\n    const texto = fmt(d.value) + \" m\u00b2\";\n    ctx.font = \"600 14px Formadjr, sans-serif\";\n    const w = Math.max(ctx.measureText(texto).width, 44) + 28;\n    const h = 48;\n    let x = p.x - w\/2;\n    x = Math.max(padL, Math.min(x, W - padR - w));\n    const y = Math.max(4, p.y - h - 14);\n    ctx.beginPath();\n    if(ctx.roundRect){ ctx.roundRect(x, y, w, h, 6); } else { ctx.rect(x, y, w, h); }\n    ctx.fillStyle = TINTA;\n    ctx.fill();\n    ctx.textAlign = \"center\";\n    ctx.textBaseline = \"middle\";\n    ctx.fillStyle = NARANJA;\n    ctx.font = \"11px Formadjr, sans-serif\";\n    ctx.fillText(d.year, x + w\/2, y + 15);\n    ctx.fillStyle = \"#fff\";\n    ctx.font = \"600 14px Formadjr, sans-serif\";\n    ctx.fillText(texto, x + w\/2, y + 33);\n  }\n}\n\n\/* ANIMACION con salida suave *\/\nfunction animate(){\n  const dur = 1100;\n  let t0 = null;\n  function step(ts){\n    if(!t0) t0 = ts;\n    const p = Math.min(1, (ts - t0)\/dur);\n    draw(1 - Math.pow(1 - p, 3));\n    if(p < 1) requestAnimationFrame(step);\n  }\n  requestAnimationFrame(step);\n}\n\ncanvas.addEventListener(\"mousemove\", function(e){\n  const rect = canvas.getBoundingClientRect();\n  const mx = e.clientX - rect.left;\n  const my = e.clientY - rect.top;\n  let nuevo = -1;\n  points.forEach(function(p,i){ if(Math.hypot(mx-p.x, my-p.y) < 14) nuevo = i; });\n  if(nuevo !== hoveredIndex){ hoveredIndex = nuevo; draw(1); }\n  canvas.style.cursor = nuevo === -1 ? \"\" : \"pointer\";\n});\n\ncanvas.addEventListener(\"mouseleave\", function(){ hoveredIndex = -1; draw(1); });\n\nconst observer = new IntersectionObserver(function(entries){\n  entries.forEach(function(entry){\n    if(entry.isIntersecting){ if(!animated){\n      document.querySelector(\".chart-box\").classList.add(\"show\");\n      animate();\n      animated = true;\n    } }\n  });\n},{threshold:0.4});\nobserver.observe(document.querySelector(\".chart-box\"));\n\nresize();\ndraw(0);\n\nwindow.addEventListener(\"resize\", function(){ resize(); draw(animated ? 1 : 0); });\n\n}\n\n\/* No depende del evento load: si algun plugin difiere o reinserta este\n   script despues de la carga, ese evento ya paso y la grafica no se\n   dibujaria nunca. *\/\nif(document.readyState === \"complete\"){ iniciarGrafica(); }\nelse { window.addEventListener(\"load\", iniciarGrafica); }\n<\/script>\n\n\n\n<div style=\"height:45px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<div style=\"height:6px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p class=\"has-text-align-center ti wp-block-paragraph\" style=\"font-size:40px\">Industrias motor de demanda en Jalisco<\/p>\n\n\n\n<section class=\"pie-section\">\n\n  <div class=\"pie-container\">\n    <canvas id=\"pieChart\"><\/canvas>\n  <\/div>\n\n  <!-- LABELS MOBILE -->\n  <div class=\"pie-labels\">\n    <div>Log\u00edstica \u2014 34%<\/div>\n    <div>Manufactura \u2014 26%<\/div>\n    <div>Electr\u00f3nica \u2014 18%<\/div>\n    <div>Alimentos \u2014 12%<\/div>\n    <div>Pl\u00e1sticos \u2014 10%<\/div>\n  <\/div>\n\n<\/section>\n\n<style>\nbody{\n  margin:0;\n  font-family:'Formadjr', sans-serif;\n}\n\n\/* SECTION *\/\n.pie-section{\n  padding:80px 10%;\n  text-align:center;\n}\n\n\/* CONTENEDOR *\/\n.pie-container{\n  max-width:500px;\n  margin:auto;\n}\n\n\/* CANVAS *\/\n.pie-container canvas{\n  width:100%;\n  height:380px;\n  display:block;\n}\n@media(max-width:600px){\n  .pie-container canvas{ height:300px; }\n}\n\n\/* LABELS MOBILE *\/\n.pie-labels{\n  display:none;\n  margin-top:20px;\n  font-size:16px;\n  color:#444;\n}\n\n@media(max-width:768px){\n  canvas{\n    height:300px;\n  }\n\n  .pie-labels{\n    display:block;\n  }\n}\n<\/style>\n\n<script>\n(function(){\n  var cv=document.getElementById(\"pieChart\");\n  if(!cv){ return; }\n  var g=cv.getContext(\"2d\");\n  var D=[[\"Log\u00edstica\",34,\"#d68509\",\"#ffffff\"],[\"Manufactura\",26,\"#00768c\",\"#ffffff\"],[\"Electr\u00f3nica\",18,\"#9e2f24\",\"#ffffff\"],[\"Alimentos\",12,\"#6fa03f\",\"#ffffff\"],[\"Pl\u00e1sticos\",10,\"#6247a8\",\"#ffffff\"]];\n  var TOT=0; for(var z=0;z!==D.length;z++){ TOT+=D[z][1]; }\n  var W=0,H=0,dpr=1,R=0,cx=0,cy=0;\n  function medir(){\n    dpr=Math.min(window.devicePixelRatio||1,2);\n    var r=cv.getBoundingClientRect();\n    W=r.width||500; H=r.height||380;\n    cv.width=Math.round(W*dpr); cv.height=Math.round(H*dpr);\n    g.setTransform(dpr,0,0,dpr,0,0);\n    R=Math.min(W,H)*0.43; cx=W\/2; cy=H\/2;\n    pinta();\n  }\n  var prog=0, resalta=-1, activa=false;\n  var reduce=matchMedia(\"(prefers-reduced-motion: reduce)\").matches;\n  function clamp(v){ if(v<0){return 0;} if(v>1){return 1;} return v; }\n  function easeOut(t){ return 1-Math.pow(1-t,3); }\n  function pinta(){\n    if(W===0){ return; }\n    g.clearRect(0,0,W,H);\n    var av=easeOut(prog);\n    var limite=-Math.PI\/2+Math.PI*2*av;\n    var ini=-Math.PI\/2, i;\n    for(i=0;i!==D.length;i++){\n      var ang=(D[i][1]\/TOT)*Math.PI*2;\n      var a0=ini, a1=ini+ang;\n      if(a0<limite){\n        if(a1>limite){ a1=limite; }\n        var sep=(resalta===i)?8:0;\n        var med=(ini+ang\/2);\n        var ox=Math.cos(med)*sep, oy=Math.sin(med)*sep;\n        g.beginPath();\n        g.moveTo(cx+ox,cy+oy);\n        g.arc(cx+ox,cy+oy,R,a0,a1);\n        g.closePath();\n        g.fillStyle=D[i][2];\n        g.fill();\n        g.strokeStyle=\"#fcfcfb\";\n        g.lineWidth=2.5;\n        g.stroke();\n      }\n      ini+=ang;\n    }\n    ini=-Math.PI\/2;\n    for(i=0;i!==D.length;i++){\n      var an=(D[i][1]\/TOT)*Math.PI*2;\n      var fin=(ini+an+Math.PI\/2)\/(Math.PI*2);\n      var ap=clamp((av*1.20-fin)\/0.10);\n      if(ap>0.02){\n        var m2=ini+an\/2;\n        var sp=(resalta===i)?8:0;\n        var tx=cx+Math.cos(m2)*(R*0.63+sp), ty=cy+Math.sin(m2)*(R*0.63+sp);\n        g.save();\n        g.globalAlpha=ap;\n        g.fillStyle=D[i][3];\n        g.font=\"600 19px Formadjr, sans-serif\";\n        g.textAlign=\"center\"; g.textBaseline=\"middle\";\n        g.fillText(D[i][1]+\"%\", tx, ty);\n        g.restore();\n      }\n      ini+=an;\n    }\n  }\n  function corre(t0){\n    var dur=1150;\n    function paso(ts){\n      var e=ts-t0;\n      prog=clamp(e\/dur);\n      pinta();\n      if(prog<1){ requestAnimationFrame(paso); }\n    }\n    requestAnimationFrame(paso);\n  }\n  function arranca(){\n    if(activa){ return; }\n    activa=true;\n    if(reduce){ prog=1; pinta(); return; }\n    requestAnimationFrame(function(ts){ corre(ts); });\n  }\n  cv.addEventListener(\"mousemove\",function(e){\n    var r=cv.getBoundingClientRect();\n    var dx=e.clientX-r.left-cx, dy=e.clientY-r.top-cy;\n    var dist=Math.sqrt(dx*dx+dy*dy);\n    var nuevo=-1;\n    if(dist<=R+8){\n      var a=Math.atan2(dy,dx);\n      if(a< -Math.PI\/2){ a+=Math.PI*2; }\n      var acum=-Math.PI\/2;\n      for(var i=0;i!==D.length;i++){\n        var an=(D[i][1]\/TOT)*Math.PI*2;\n        if(a>=acum){ if(a<acum+an){ nuevo=i; } }\n        acum+=an;\n      }\n    }\n    if(nuevo!==resalta){\n      resalta=nuevo;\n      cv.style.cursor = nuevo>=0 ? \"pointer\" : \"default\";\n      pinta();\n    }\n  });\n  cv.addEventListener(\"mouseleave\",function(){\n    if(resalta!==-1){ resalta=-1; cv.style.cursor=\"default\"; pinta(); }\n  });\n  window.addEventListener(\"resize\",medir);\n  medir();\n  if(\"IntersectionObserver\" in window){\n    var io=new IntersectionObserver(function(ent){\n      for(var q=0;q!==ent.length;q++){\n        if(ent[q].isIntersecting){ io.disconnect(); arranca(); }\n      }\n    },{ threshold:0.35 });\n    io.observe(cv);\n    setTimeout(function(){ if(!activa){ io.disconnect(); arranca(); } },4000);\n  } else { arranca(); }\n})();\n<\/script>\n\n<style>\n\/* legend-cesco *\/\n.pie-container{position:relative}\n.pie-labels{display:flex !important;flex-wrap:wrap;justify-content:center;gap:14px 28px;margin-top:28px;font-size:16px;color:#444;line-height:1.2}\n.pie-labels > div{display:flex;align-items:center;gap:9px;white-space:nowrap;font-weight:500;cursor:pointer;transition:opacity .18s ease,transform .18s ease}\n.pie-labels > div::before{content:\"\";width:14px;height:14px;border-radius:3px;flex:0 0 14px;background:var(--c)}\n.pie-labels > div:nth-child(1){--c:#D68509}\n.pie-labels > div:nth-child(2){--c:#00768C}\n.pie-labels > div:nth-child(3){--c:#9E2F24}\n.pie-labels > div:nth-child(4){--c:#6FA03F}\n.pie-labels > div:nth-child(5){--c:#6247A8}\n.pie-labels.is-focus > div{opacity:.35}\n.pie-labels.is-focus > div.on{opacity:1;transform:translateY(-1px)}\n.pie-overlay{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none}\n.pie-tip{position:absolute;left:0;top:0;pointer-events:none;opacity:0;transform:translate(-50%,-130%);background:#1c1c1c;color:#fff;padding:8px 13px;border-radius:8px;font-size:15px;line-height:1.25;white-space:nowrap;box-shadow:0 6px 18px rgba(0,0,0,.22);transition:opacity .14s ease;z-index:5}\n.pie-tip b{font-weight:600}\n.pie-tip i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:8px;font-style:normal;vertical-align:1px}\n.pie-tip.on{opacity:1}\n@media (max-width:600px){.pie-labels{gap:10px 18px;font-size:15px}.pie-tip{font-size:14px;padding:7px 11px}}\n<\/style>\n<script>\n\/* Grupo Cesco - etiquetas interactivas sobre la grafica de pastel.\n   Lee los colores del canvas ya dibujado: no depende del script original\n   ni interfiere con su animacion.\n   OJO: este bloque no puede usar el caracter ampersand, WordPress lo\n   convierte en entidad y rompe el JavaScript. Por eso no hay \"y logico\". *\/\n(function(){\n  var C=[[214,133,9],[0,118,140],[158,47,36],[111,160,63],[98,71,168]];\n  var NAMES=['Log\u00edstica','Manufactura','Electr\u00f3nica','Alimentos','Pl\u00e1sticos'];\n  var PCTS=['34%','26%','18%','12%','10%'];\n  var HEX=['#D68509','#00768C','#9E2F24','#6FA03F','#6247A8'];\n  var tries=0,lastCount=-1;\n\n  function idxOf(r,g,b,a){\n    if(a<10)return -1;\n    for(var i=0;i<5;i++){\n      var c=C[i];\n      if(Math.abs(r-c[0])<26){if(Math.abs(g-c[1])<26){if(Math.abs(b-c[2])<26)return i;}}\n    }\n    return -1;\n  }\n\n  function tick(){\n    var base=document.getElementById('pieChart');\n    if(!base){if(++tries<250)setTimeout(tick,400);return;}\n    if(base.dataset.cescoInt)return;\n    var W=base.width,H=base.height,D;\n    try{D=base.getContext('2d').getImageData(0,0,W,H).data;}catch(e){return;}\n    var seen=[0,0,0,0,0],k;\n    for(var i=0;i<D.length;i+=64){k=idxOf(D[i],D[i+1],D[i+2],D[i+3]);if(k>=0)seen[k]++;}\n    var ready=true;\n    for(var j=0;j<5;j++){if(seen[j]<30)ready=false;}\n    if(ready){if(seen[4]===lastCount){build(base,W,H,D);return;}}\n    lastCount=ready?seen[4]:-1;\n    if(++tries<250)setTimeout(tick,400);\n  }\n\n  function build(base,W,H,D){\n    base.dataset.cescoInt='1';\n    var minX=1e9,minY=1e9,maxX=-1,maxY=-1,x,y,p;\n    for(y=0;y<H;y+=2){for(x=0;x<W;x+=2){\n      p=(y*W+x)*4;\n      if(idxOf(D[p],D[p+1],D[p+2],D[p+3])>=0){\n        if(x<minX)minX=x;\n        if(x>maxX)maxX=x;\n        if(y<minY)minY=y;\n        if(y>maxY)maxY=y;\n      }\n    }}\n    var cx=(minX+maxX)\/2,cy=(minY+maxY)\/2,R=Math.min(maxX-minX,maxY-minY)\/2;\n\n    var ranges=[],step=Math.PI\/720,rr=[0.93,0.87,0.80];\n    for(var a=-Math.PI;a<Math.PI;a+=step){\n      var k=-1;\n      for(var t=0;t<rr.length;t++){\n        if(k>=0)break;\n        var px=Math.round(cx+Math.cos(a)*R*rr[t]),py=Math.round(cy+Math.sin(a)*R*rr[t]);\n        if(px<0||py<0||px>=W||py>=H)continue;\n        var q=(py*W+px)*4;\n        k=idxOf(D[q],D[q+1],D[q+2],D[q+3]);\n      }\n      var last=ranges[ranges.length-1];\n      if(last){if(last.k===k){last.e=a;}else{ranges.push({k:k,s:a,e:a});}}\n      else{ranges.push({k:k,s:a,e:a});}\n    }\n\n    var wrap=base.parentElement;\n    wrap.style.position='relative';\n    var ov=document.createElement('canvas');\n    ov.className='pie-overlay';ov.width=W;ov.height=H;wrap.appendChild(ov);\n    var octx=ov.getContext('2d');\n    var tip=document.createElement('div');\n    tip.className='pie-tip';wrap.appendChild(tip);\n    var legend=document.querySelector('.pie-labels');\n    var items=legend?legend.children:[];\n    var cur=-1,pinned=-1;\n\n    function segAt(ax,ay){\n      var dx=ax-cx,dy=ay-cy;\n      if(Math.sqrt(dx*dx+dy*dy)>R+2)return -1;\n      var ang=Math.atan2(dy,dx);\n      for(var i=0;i<ranges.length;i++){\n        if(ang>=ranges[i].s-1e-6){\n          if(ang<=ranges[i].e+1e-6){\n            if(ranges[i].k>=0)return ranges[i].k;\n            for(var d=1;d<12;d++){\n              if(ranges[i-d]){if(ranges[i-d].k>=0)return ranges[i-d].k;}\n              if(ranges[i+d]){if(ranges[i+d].k>=0)return ranges[i+d].k;}\n            }\n            return -1;\n          }\n        }\n      }\n      return -1;\n    }\n    function paint(i){\n      octx.clearRect(0,0,W,H);\n      if(i<0)return;\n      octx.save();\n      \/* velo sobre todo el circulo, sin dejar costuras entre gajos *\/\n      octx.fillStyle='rgba(255,255,255,.62)';\n      octx.beginPath();\n      octx.arc(cx,cy,R+5,0,Math.PI*2);\n      octx.closePath();\n      octx.fill();\n      \/* y se recorta el gajo activo, incluidos sus bordes *\/\n      octx.globalCompositeOperation='destination-out';\n      octx.fillStyle='#000';\n      for(var n=0;n<ranges.length;n++){\n        var r=ranges[n];\n        if(r.k!==i)continue;\n        octx.beginPath();\n        octx.moveTo(cx,cy);\n        octx.arc(cx,cy,R+8,r.s-0.011,r.e+0.011);\n        octx.closePath();\n        octx.fill();\n      }\n      octx.restore();\n    }\n    function show(i,clientX,clientY){\n      if(i!==cur){\n        cur=i;paint(i);\n        if(legend){\n          legend.classList.toggle('is-focus',i>=0);\n          for(var n=0;n<items.length;n++)items[n].classList.toggle('on',n===i);\n        }\n      }\n      if(i<0){tip.classList.remove('on');base.style.cursor='default';return;}\n      base.style.cursor='pointer';\n      tip.innerHTML='<i style=\"background:'+HEX[i]+'\"><\\\/i><b>'+NAMES[i]+'<\\\/b> \u00b7 '+PCTS[i];\n      var rect=wrap.getBoundingClientRect();\n      if(clientX!==undefined){\n        tip.style.left=(clientX-rect.left)+'px';\n        tip.style.top=(clientY-rect.top)+'px';\n      }else{\n        var mid=0;\n        for(var m=0;m<ranges.length;m++){if(ranges[m].k===i){mid=(ranges[m].s+ranges[m].e)\/2;break;}}\n        tip.style.left=((cx+Math.cos(mid)*R*0.62)*rect.width\/W)+'px';\n        tip.style.top=((cy+Math.sin(mid)*R*0.62)*rect.height\/H)+'px';\n      }\n      tip.classList.add('on');\n    }\n    function fromEvent(e){\n      var rect=base.getBoundingClientRect();\n      var t=e;\n      if(e.touches){if(e.touches[0])t=e.touches[0];}\n      return {i:segAt((t.clientX-rect.left)*W\/rect.width,(t.clientY-rect.top)*H\/rect.height),x:t.clientX,y:t.clientY};\n    }\n    function toggle(i,px,py){\n      var np=i;\n      if(i>=0){if(i===pinned)np=-1;}\n      pinned=np;cur=-2;\n      if(pinned<0)show(-1);else show(pinned,px,py);\n    }\n    base.addEventListener('mousemove',function(e){\n      if(pinned>=0)return;\n      var r=fromEvent(e);show(r.i,r.x,r.y);\n    });\n    base.addEventListener('mouseleave',function(){if(pinned<0)show(-1);});\n    base.addEventListener('click',function(e){\n      var r=fromEvent(e);toggle(r.i,r.x,r.y);\n    });\n    base.addEventListener('touchstart',function(e){\n      var r=fromEvent(e);\n      if(r.i<0)return;\n      toggle(r.i,r.x,r.y);\n    },{passive:true});\n    document.addEventListener('click',function(e){\n      if(pinned<0)return;\n      if(wrap.contains(e.target))return;\n      if(legend){if(legend.contains(e.target))return;}\n      pinned=-1;cur=-2;show(-1);\n    });\n    for(var n=0;n<items.length;n++)(function(n){\n      items[n].addEventListener('mouseenter',function(){if(pinned<0)show(n);});\n      items[n].addEventListener('mouseleave',function(){if(pinned<0)show(-1);});\n      items[n].addEventListener('click',function(){toggle(n);});\n    })(n);\n  }\n\n  if(document.readyState==='complete')setTimeout(tick,500);\n  else window.addEventListener('load',function(){setTimeout(tick,500);});\n})();\n<\/script>\n\n\n\n<div style=\"height:51px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Desarrollo integral de proyectos industriales en M\u00e9xico Por qu\u00e9 invertir en naves industriales Invertir en naves industriales es uno de [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"iawp_total_views":151,"footnotes":""},"class_list":["post-594","page","type-page","status-publish","hentry"],"_hostinger_reach_plugin_has_subscription_block":false,"_hostinger_reach_plugin_is_elementor":false,"_links":{"self":[{"href":"https:\/\/grupocesco.mx\/en\/wp-json\/wp\/v2\/pages\/594","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/grupocesco.mx\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/grupocesco.mx\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/grupocesco.mx\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/grupocesco.mx\/en\/wp-json\/wp\/v2\/comments?post=594"}],"version-history":[{"count":126,"href":"https:\/\/grupocesco.mx\/en\/wp-json\/wp\/v2\/pages\/594\/revisions"}],"predecessor-version":[{"id":1751,"href":"https:\/\/grupocesco.mx\/en\/wp-json\/wp\/v2\/pages\/594\/revisions\/1751"}],"wp:attachment":[{"href":"https:\/\/grupocesco.mx\/en\/wp-json\/wp\/v2\/media?parent=594"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}